From 004f513e8cc3b1cafef4f7f44ce12e45313812b5 Mon Sep 17 00:00:00 2001 From: ping <1017253325@qq.com> Date: Fri, 19 Sep 2025 17:17:50 +0800 Subject: [PATCH] update --- b/baiducloud/get_baidu_orderlist.dspy | 89 +++++++++++++++++++++++++++ 1 file changed, 89 insertions(+) diff --git a/b/baiducloud/get_baidu_orderlist.dspy b/b/baiducloud/get_baidu_orderlist.dspy index 26667d4..544255b 100644 --- a/b/baiducloud/get_baidu_orderlist.dspy +++ b/b/baiducloud/get_baidu_orderlist.dspy @@ -279,6 +279,94 @@ async def baidu_confirm_refund_order(ns={}): 'status': False, 'msg': '百度云退款成功,本机构给客户退款出错!' } + +async def get_order_list_base_page(baidu_id, pageNo=1, pageSize=500): + ns = {'queryAccountId': baidu_id, 'pageNo': pageNo, 'pageSize': pageSize} + method = 'POST' + ns_format = '&'.join(['%s=%s' % (k, v) for k, v in ns.items()]) + url = 'https://billing.baidubce.com/v1/order/list?%s' % ns_format + header = { + "Host": "billing.baidubce.com", + "ContentType": "application/json;charset=UTF-8" + } + header = await get_auth_header(method=method, url=url, header=header) + async with aiohttp_client.request( + method=method, + url=url, + headers=header, + json=ns) as res: + data_orders = await res.json() + return data_orders + + +async def update_baidu_order_list(ns={}): + """ + ns = {'queryAccountId': '139fc7a23b314596ad78b6bb8e7c1503', 'orderType': 'REFUND'} + :return: + """ + db = DBPools() + async with db.sqlorContext('kboss') as sor: + username = None + # 更新机构下全部用户订单信息 + if ns.get('orgid'): + users_find_sql = """SELECT DISTINCT b.baidu_id FROM organization o INNER JOIN users u ON o.id = u.orgid INNER JOIN baidu_users b ON u.id = b.user_id WHERE o.parentid = '%s' AND b.del_flg = '0';""" % ns.get('orgid') + users = await sor.sqlExe(users_find_sql, {}) + + # 更新个人订单信息 + elif ns.get('userid'): + users = await sor.R('baidu_users', {'user_id': ns['userid']}) + username_li = await sor.R('users', {'id': ns['userid']}) + username = username_li[0]['username'] if username_li else None + else: + users = [] + + update_count = 0 + add_count = 0 + for baidu_id in users: + data_orders = await get_order_list_base_page(baidu_id['baidu_id'], pageNo=1, pageSize=1000) + page_num_count = int(data_orders['totalCount'] / data_orders['pageSize']) + 1 + for page_num in range(1, page_num_count + 1): + data_orders = await get_order_list_base_page(baidu_id['baidu_id'], pageNo=page_num, pageSize=1000) + orders = data_orders['orders'] + for item in orders: + updatetime = await time_convert(item.get('updateTime')) if item.get('updateTime') else None + ns_dic = { + "id": uuid(), + "orderid": item.get("uuid"), + "ordertype": item.get("type"), + "accountid": item.get("accountId"), + "servicetype": item.get("serviceType"), + "producttype": item.get("productType"), + "shortids": ','.join(item['shortIds']) if item.get('shortIds') else '', + "price": item.get("price"), + "status": item.get("status"), + "autoreneworder": '1' if item.get("autoRenewOrder") else '0', + "createtime": await time_convert(item.get('createTime')) if item.get( + 'createTime') else None, + "updatetime": updatetime + } + ns_exist_order = { + 'orderid': item.get("uuid") + } + exist_order = await sor.R('baidu_orders', ns_exist_order) + if exist_order and exist_order[0]['updatetime'] != updatetime: + update_refund_sql = """UPDATE baidu_orders SET price = '%s', status = '%s', updatetime = '%s' WHERE orderid = '%s';""" % \ + (item.get("price"), item.get("status"), updatetime, + item.get("uuid")) + await sor.sqlExe(update_refund_sql, {}) + update_count += 1 + + if not exist_order: + await sor.C('baidu_orders', ns_dic) + add_count += 1 + + return { + 'status': True, + 'msg': '同步数据成功, 新增 %s 条, 更新 %s 条' % (add_count, update_count), + 'data': { + 'username': username + } + } async def get_baidu_orderlist(ns={}): """ @@ -317,6 +405,7 @@ async def get_baidu_orderlist(ns={}): # 可能获取得到的是延迟订单 if orders[0]['type'] == 'REFUND' and orders[0]['status'] != 'CREATED': + await update_baidu_order_list({'userid': ns.get('userid')}) res_refund = await baidu_confirm_refund_order({'order_id': ns.get('order_id'), 'baidu_id': baidu_users[0]['baidu_id'], 'user_id': ns.get('userid')}) return res_refund