async def getOrder(nsss={}): ns = { 'ak': 'c752863753f8', 'sk': 'c6efdbd682084a2f96e7500e5a535449', 'appId': 'cdz-server', 'userid': 'j6c6kebTT-HaxtTBto_UF', # 'userid': 'eCyIfgqLT1drXwj3kQZiC', # 'userid': 'rtfexXZIceA2UsaFYY9u8', "supId": "99", "page": "1", "limit": "1000", "beginTime": "2023-02-14", "endTime": "2024-02-15" } ak = ns.get('ak') sk = ns.get('sk') appId = ns.get('appId') if not (ak and sk and appId): return { "code":"1", "msg":"ak or sk or appId is None" } timestamp = str(int(time.time() * 1000)) token = str(uuid()) sign = sk + appId + token + timestamp md5_object = hashlib.md5() md5_object.update(sign.encode()) sign = md5_object.hexdigest() db = DBPools() async with db.sqlorContext('kboss') as sor: # find uin from zj_user orgid_li = await sor.R('users', {'id': await get_user()}) orgid = orgid_li[0].get('orgid') if orgid_li else '' uin_li = await sor.R('zj_users', {'orgid': orgid}) uin = uin_li[0].get('thirdid') if uin_li else '' if not (orgid and uin): return { 'status': False, 'msg': 'get order failed, orgid or uin is empty' } url = 'http://101.36.139.188:8888/cdz-admin/zjapi/v1/order/list' header = { 'content-type': 'application/json', 'appId': appId, 'ak': ak, 'timestamp': timestamp, 'token': token, 'sign': sign } data = { "supId": "99", "uin": uin.strip(), "page": ns.get('page'), "limit": ns.get('limit') or '1000', "beginTime": ns.get('beginTime'), "endTime": ns.get('endTime') } res = requests.post(url=url, headers=header, json=data) res_data = json.loads(res.text) code = json.loads(res.text).get('code') if code != 200: return res_data else: data_list = res_data.get('data').get('list') if res_data.get('data') else [] # get all order id orders = await sor.R('zj_order', {}) orderid_list = [ors.get('orderid') for ors in orders] if data_list: for order in data_list: # filter by orderid existid = order.get('orderId') if existid in orderid_list: continue order['id'] = uuid() order['customerid'] = orgid lowercase_dict = {key.lower(): value for key, value in order.items()} # add zj_order await sor.C('zj_order', lowercase_dict) # 计算折扣后的价格 kyy_discount_sql = """select * from cp_discount where customerid = ${customerid}$ and productid = ${productid}$ and CURRENT_DATE <= end_date and CURRENT_DATE >= start_date""" kyy_discount_li = await sor.sqlExe(kyy_discount_sql, {'customerid': orgid, 'productid': order.get('productCode')}) kyy_discount = kyy_discount_li[0] if kyy_discount_li else {} real_discount = float(kyy_discount.get('discount')) if kyy_discount.get('discount') else 1.00 realcost = float(order.get('realTotalCost')) if order.get('realTotalCost') else 0 # if not realcost: # raise ValueError("bill realcost is empty") amount = float((real_discount * realcost) / 100) action = order.get('action') if '退款' in action or ('refund' in action): business_op = 'BUY_REVERSE' else: business_op = 'BUY' order_mode = order.get('payMode') if order_mode == 'postPay': order_status = 4 else: if order.get('action') == 'purchase': order_status = 0 else: order_status = 0 # add bz_order nss_bz_order = { 'id': uuid(), 'customerid': orgid, 'order_date': order.get('createTime'), 'order_status': order_status, 'business_op': business_op, 'amount': amount, # provider_orderid same as the inserted order id 'provider_orderid': order['id'], } # add data to bz_order await sor.C('bz_order', nss_bz_order) # add specificdata ns_specificdata = { 'id': uuid(), 'productid': order.get('productCode'), 'spec_data': order.get('productInfo'), 'create_date': order.get('createTime') } await sor.C('specificdata', ns_specificdata) ns_customer_goods = { 'id': uuid(), 'customerid': orgid, 'providerrid': 'zhongjin', 'productname': order.get('productName'), 'productdesc': order.get('productName'), 'productid': order.get('productCode'), 'specdataid': ns_specificdata['id'], 'orderid': order.get('orderId'), 'start_date': '0000-00-00', # TODO 订单起始时间都暂时没有 'expire_date': '0000-00-00', # TODO 如果是核时计算 是否有起始日期 } # add data to customer_goods await sor.C('customer_goods', ns_customer_goods) return res_data else: return { 'status': False, 'msg': 'get order failed' } ret = await getOrder(params_kw) return ret