129 lines
7.4 KiB
Plaintext
129 lines
7.4 KiB
Plaintext
async def time_convert(resoucetime=None):
|
|
if not resoucetime:
|
|
return
|
|
utc_time = datetime.datetime.strptime(resoucetime, "%Y-%m-%dT%H:%M:%SZ").replace(tzinfo=datetime.timezone.utc)
|
|
beijing_time = utc_time.astimezone(datetime.timezone(datetime.timedelta(hours=8)))
|
|
return beijing_time.strftime("%Y-%m-%d %H:%M:%S")
|
|
|
|
async def baidu_new_update_resouce(ns={}):
|
|
"""
|
|
百度新购订单刷新定时器
|
|
用于解决NEED_CONFIRM后订单刷新不及时 不能获取资源ID 资源起始日期的问题
|
|
:param ns:
|
|
:return:
|
|
"""
|
|
db = DBPools()
|
|
async with db.sqlorContext('kboss') as sor:
|
|
try:
|
|
crontab_list = await sor.R('baidu_cron_job', {'source': 'baidu', 'ordertype': 'NEW', 'reason': 'buy success', 'refresh': '0'})
|
|
for cronjob in crontab_list:
|
|
order_id = cronjob['orderid']
|
|
userid = cronjob['userid']
|
|
baidu_users = await sor.R('baidu_users', {'user_id': userid,'del_flg':'0'})
|
|
# user = await sor.R('users', {'id': userid})
|
|
# orgid = await sor.R('organization', {'id': user[0]['orgid']})
|
|
nss = {'uuids': [order_id], 'queryAccountId': baidu_users[0]['baidu_id']}
|
|
ns_format = '&'.join(['%s=%s' % (k, v) for k, v in ns.items()])
|
|
url = 'https://billing.baidubce.com/v1/order/getByUuid?%s' % ns_format
|
|
method = 'POST'
|
|
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=nss) as res:
|
|
data_ = await res.json()
|
|
with open('baidu_new_order_after_confirm.txt', 'a+') as f:
|
|
f.write(json.dumps(data_) + '\n')
|
|
orders = data_['orders']
|
|
|
|
for item in orders:
|
|
order_items = item['orderItems']
|
|
for order_info in order_items:
|
|
resourceids = ','.join(order_info['shortIds']) if order_info.get('shortIds') else ''
|
|
if not resourceids:
|
|
ns_cron_job = {
|
|
'id': cronjob['id'],
|
|
'feedback': '没有获取到资源ID'
|
|
}
|
|
await sor.U('baidu_cron_job', ns_cron_job)
|
|
return
|
|
resourcestarttime = await time_convert(order_info.get('resourceStartTime')) if order_info.get(
|
|
'resourceStartTime') else None
|
|
resourceendtime = await time_convert(order_info.get('resourceEndTime')) if order_info.get(
|
|
'resourceEndTime') else None
|
|
|
|
order_key = order_info['key']
|
|
if resourceendtime:
|
|
update_order_goods_sql = """ UPDATE order_goods og
|
|
JOIN bz_order o ON og.orderid = o.id
|
|
SET
|
|
og.resourceids = '%s',
|
|
og.resourcestarttime = '%s',
|
|
og.resourceendtime = '%s'
|
|
WHERE
|
|
og.orderkey = '%s'
|
|
AND o.provider_orderid = '%s'; """ \
|
|
% (resourceids, resourcestarttime, resourceendtime, order_key, order_id)
|
|
else:
|
|
update_order_goods_sql = """ UPDATE order_goods og
|
|
JOIN bz_order o ON og.orderid = o.id
|
|
SET
|
|
og.resourceids = '%s',
|
|
og.resourcestarttime = '%s'
|
|
WHERE
|
|
og.orderkey = '%s'
|
|
AND o.provider_orderid = '%s'; """ \
|
|
% (resourceids, resourcestarttime, order_key, order_id)
|
|
|
|
await sor.sqlExe(update_order_goods_sql, {})
|
|
if resourceendtime:
|
|
update_customer_goods_sql = """ UPDATE customer_goods og
|
|
JOIN bz_order o ON og.orderid = o.id
|
|
SET
|
|
og.resourceid = '%s',
|
|
og.start_date = '%s',
|
|
og.expire_date = '%s'
|
|
WHERE
|
|
og.orderkey = '%s'
|
|
AND o.provider_orderid = '%s'; """ \
|
|
% (resourceids, resourcestarttime, resourceendtime, order_key, order_id)
|
|
else:
|
|
update_customer_goods_sql = """ UPDATE customer_goods og
|
|
JOIN bz_order o ON og.orderid = o.id
|
|
SET
|
|
og.resourceid = '%s',
|
|
og.start_date = '%s'
|
|
WHERE
|
|
og.orderkey = '%s'
|
|
AND o.provider_orderid = '%s'; """ \
|
|
% (resourceids, resourcestarttime, order_key, order_id)
|
|
|
|
await sor.sqlExe(update_customer_goods_sql, {})
|
|
|
|
ns_cron_job = {
|
|
'id': cronjob['id'],
|
|
'refresh': '1',
|
|
'feedback': 'success'
|
|
}
|
|
await sor.U('baidu_cron_job', ns_cron_job)
|
|
return {
|
|
'status': True,
|
|
'msg': 'update success'
|
|
}
|
|
return {
|
|
'status': True,
|
|
'msg': '没有找到需要更新数据'
|
|
}
|
|
except Exception as e:
|
|
return {
|
|
'status': False,
|
|
'msg': str(e)
|
|
}
|
|
|
|
ret = await baidu_new_update_resouce(params_kw)
|
|
return ret |