diff --git a/b/bz_order/cumulative_order.dspy b/b/bz_order/cumulative_order.dspy new file mode 100644 index 0000000..bd20114 --- /dev/null +++ b/b/bz_order/cumulative_order.dspy @@ -0,0 +1,54 @@ +async def cumulative_order(ns={}): + """查询订单商品详情,带分页功能""" + db = DBPools() + async with db.sqlorContext('kboss') as sor: + try: + users_id = await get_user() + if not users_id: + server_error(401) + + user = await sor.R('users', {'id': users_id, 'del_flg': '0'}) + orgid = await sor.R('organization', {'id': user[0]['orgid'], 'del_flg': '0'}) + customerid = orgid[0]['id'] + + # 统计全部 累计支付金额和累计优惠金额 不包含各种筛选条件 + # 累计支付金额=BUY+RENEW-BUY_REVERSE并且对应order_status=1是实际支付金额 累计优惠金额=BUY+RENEW-BUY_REVERSE并且对应order_status=1是优惠金额 + total_amount_sql = """ + SELECT + COALESCE(SUM( + CASE + WHEN bo.order_status = 1 AND bo.business_op IN ('BUY', 'RENEW') THEN og.amount + WHEN bo.order_status = 1 AND bo.business_op = 'BUY_REVERSE' THEN -og.amount + ELSE 0 + END + ), 0) AS total_paid_amount, + COALESCE(SUM( + CASE + WHEN bo.order_status = 1 AND bo.business_op IN ('BUY', 'RENEW') THEN (og.list_price * og.quantity - og.amount) + WHEN bo.order_status = 1 AND bo.business_op = 'BUY_REVERSE' THEN -(og.list_price * og.quantity - og.amount) + ELSE 0 + END + ), 0) AS total_discount_amount + FROM order_goods og + JOIN bz_order bo ON og.orderid = bo.id + WHERE og.del_flg = '0' + AND bo.del_flg = '0' + AND bo.customerid = ${customerid}$ + """ + total_amount_result = await sor.sqlExe(total_amount_sql, {'customerid': customerid}) + total_paid_amount = float(total_amount_result[0]['total_paid_amount']) if total_amount_result else 0.0 + total_discount_amount = float(total_amount_result[0]['total_discount_amount']) if total_amount_result else 0.0 + # 将累计支付金额和累计优惠金额添加到返回结果中 + ns['total_paid_amount'] = total_paid_amount + ns['total_discount_amount'] = total_discount_amount + return { + 'status': True, + 'data': ns + } + except Exception as e: + import traceback + traceback.print_exc() + return {'status': False, 'msg': '信息错误: %s' % str(e) + traceback.format_exc()} + +ret = await cumulative_order(params_kw) +return ret \ No newline at end of file diff --git a/b/bz_order/todo_info.dspy b/b/bz_order/todo_info.dspy new file mode 100644 index 0000000..5802093 --- /dev/null +++ b/b/bz_order/todo_info.dspy @@ -0,0 +1,39 @@ +async def todo_info(ns={}): + """查询订单待支付,待续费,处理中的信息""" + db = DBPools() + async with db.sqlorContext('kboss') as sor: + try: + users_id = await get_user() + if not users_id: + server_error(401) + + user = await sor.R('users', {'id': users_id, 'del_flg': '0'}) + orgid = await sor.R('organization', {'id': user[0]['orgid'], 'del_flg': '0'}) + customerid = orgid[0]['id'] + print(customerid) + + # 查询订单待支付,待续费,处理中的信息 + pending_payment_orders = await sor.sqlExe( + "SELECT COUNT(*) AS count FROM bz_order WHERE customerid = '%s' AND order_status = '0' AND del_flg = '0';" % customerid, {} + ) + ns['pending_payment_orders'] = pending_payment_orders[0]['count'] if pending_payment_orders else 0 + pending_renew_orders = await sor.sqlExe( + "SELECT COUNT(*) AS count FROM bz_order WHERE customerid = '%s' AND order_status = '0' AND del_flg = '0';" % customerid, {} + ) + ns['pending_renew_orders'] = pending_renew_orders[0]['count'] if pending_renew_orders else 0 + processing_orders = await sor.sqlExe( + "SELECT COUNT(*) AS count FROM bz_order WHERE customerid = '%s' AND order_status = '1000' AND del_flg = '0';" % customerid, {} + ) + ns['processing_orders'] = processing_orders[0]['count'] if processing_orders else 0 + + return { + 'status': True, + 'data': ns + } + except Exception as e: + import traceback + traceback.print_exc() + return {'status': False, 'msg': '信息错误: %s' % str(e) + traceback.format_exc()} + +ret = await todo_info(params_kw) +return ret \ No newline at end of file