150 lines
6.3 KiB
Plaintext
150 lines
6.3 KiB
Plaintext
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 |