main #34

Merged
charles merged 191 commits from main into prod 2025-11-19 16:18:39 +08:00
2 changed files with 93 additions and 0 deletions
Showing only changes of commit 9fde58d1ec - Show all commits

View File

@ -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

39
b/bz_order/todo_info.dspy Normal file
View File

@ -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