kboss/b/bz_order/cumulative_order.dspy
2025-11-13 17:36:47 +08:00

54 lines
2.7 KiB
Plaintext

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