updata
This commit is contained in:
commit
8a8fe00e96
97
b/baiduc/get_orderdetail_by_uuid.dspy
Normal file
97
b/baiduc/get_orderdetail_by_uuid.dspy
Normal file
@ -0,0 +1,97 @@
|
|||||||
|
AK = 'ALTAKPk92fX9cgGDax83yNL8mP'
|
||||||
|
SK = '9b16b8efd4dc463d8bbd5462db1db8a5'
|
||||||
|
|
||||||
|
async def get_auth_header(method: str, url: str, header: dict, query={}, get_res=False):
|
||||||
|
import urllib
|
||||||
|
import hmac
|
||||||
|
# 解析uri
|
||||||
|
url_parse = urllib.parse.urlparse(url)
|
||||||
|
uri = url_parse.path
|
||||||
|
url_query = url_parse.query
|
||||||
|
|
||||||
|
# 获取query
|
||||||
|
if url_query:
|
||||||
|
query = dict(urllib.parse.parse_qsl(url_query))
|
||||||
|
|
||||||
|
# 2.x-bce-date
|
||||||
|
x_bce_date = time.gmtime()
|
||||||
|
x_bce_date = time.strftime('%Y-%m-%dT%H:%M:%SZ', x_bce_date)
|
||||||
|
|
||||||
|
# 4.认证字符串前缀
|
||||||
|
authStringPrefix = "bce-auth-v1" + "/" + AK + "/" + x_bce_date + "/" + "1800"
|
||||||
|
|
||||||
|
# windows下为urllib.parse.quote,Linux下为urllib.quote
|
||||||
|
# 5.生成CanonicalRequest
|
||||||
|
# 5.1生成CanonicalURI
|
||||||
|
CanonicalURI = urllib.parse.quote(uri)
|
||||||
|
|
||||||
|
# 如果您调用的接口的query比较复杂的话,需要做额外处理
|
||||||
|
# 5.2生成CanonicalQueryString
|
||||||
|
# CanonicalQueryString = query
|
||||||
|
result = ['%s=%s' % (k, urllib.parse.quote(str(v))) for k, v in query.items() if k.lower != 'authorization']
|
||||||
|
result.sort()
|
||||||
|
CanonicalQueryString = '&'.join(result)
|
||||||
|
|
||||||
|
# 5.3生成CanonicalHeaders
|
||||||
|
result = []
|
||||||
|
signedHeaders_list = []
|
||||||
|
for key,value in header.items():
|
||||||
|
tempStr = str(urllib.parse.quote(key.lower(),safe="")) + ":" + str(urllib.parse.quote(value,safe=""))
|
||||||
|
signedHeaders_list.append(str(urllib.parse.quote(key.lower(),safe="")))
|
||||||
|
result.append(tempStr)
|
||||||
|
result.sort()
|
||||||
|
signedHeaders = ';'.join(sorted(signedHeaders_list))
|
||||||
|
CanonicalHeaders = "\n".join(result)
|
||||||
|
|
||||||
|
# 5.4拼接得到CanonicalRequest
|
||||||
|
CanonicalRequest = method + "\n" + CanonicalURI + "\n" + CanonicalQueryString +"\n" + CanonicalHeaders
|
||||||
|
|
||||||
|
# 6.生成signingKey
|
||||||
|
signingKey = hmac.new(SK.encode('utf-8'), authStringPrefix.encode('utf-8'), hashlib.sha256)
|
||||||
|
|
||||||
|
# 7.生成Signature
|
||||||
|
Signature = hmac.new((signingKey.hexdigest()).encode('utf-8'), CanonicalRequest.encode('utf-8'), hashlib.sha256)
|
||||||
|
|
||||||
|
# 8.生成Authorization并放到header里
|
||||||
|
header['Authorization'] = authStringPrefix + "/" + signedHeaders + "/" + Signature.hexdigest()
|
||||||
|
|
||||||
|
if get_res:
|
||||||
|
# 异步请求链接 返回结果
|
||||||
|
async with aiohttp_client.request(
|
||||||
|
method=method,
|
||||||
|
url=url,
|
||||||
|
headers=header,
|
||||||
|
allow_redirects=True,
|
||||||
|
json=query) as res:
|
||||||
|
return res
|
||||||
|
else:
|
||||||
|
return header
|
||||||
|
|
||||||
|
|
||||||
|
async def get_orderdetail_by_uuid(ns={}):
|
||||||
|
order_id = ns.get('order_id')
|
||||||
|
baidu_id = ns.get('baidu_id')
|
||||||
|
method = 'POST'
|
||||||
|
nss = {'uuids': [order_id], 'queryAccountId': 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()
|
||||||
|
return {
|
||||||
|
'status': True,
|
||||||
|
'msg': 'get baidu order detail success',
|
||||||
|
'data': data_
|
||||||
|
}
|
||||||
|
|
||||||
|
ret = await get_orderdetail_by_uuid(params_kw)
|
||||||
|
return ret
|
||||||
@ -21,6 +21,8 @@ async def baidu_query_by_expire_time(ns={}):
|
|||||||
'msg': 'User not synchronized'
|
'msg': 'User not synchronized'
|
||||||
}
|
}
|
||||||
ns['queryAccountId'] = baiduid
|
ns['queryAccountId'] = baiduid
|
||||||
|
ns['pageNo'] = int(ns.get('pageno', 1))
|
||||||
|
ns['pageSize'] = int(ns.get('pagesize', 100))
|
||||||
method = 'POST'
|
method = 'POST'
|
||||||
ns_format = '&'.join(['%s=%s' % (k, v) for k, v in ns.items()])
|
ns_format = '&'.join(['%s=%s' % (k, v) for k, v in ns.items()])
|
||||||
url = 'https://billing.baidubce.com/v1/resource/queryByExpireTime?%s' % ns_format
|
url = 'https://billing.baidubce.com/v1/resource/queryByExpireTime?%s' % ns_format
|
||||||
@ -35,11 +37,18 @@ async def baidu_query_by_expire_time(ns={}):
|
|||||||
json=ns) as res:
|
json=ns) as res:
|
||||||
data_ = await res.json()
|
data_ = await res.json()
|
||||||
print('data_', data_)
|
print('data_', data_)
|
||||||
return {
|
if data_.get('pageSize'):
|
||||||
'status': True,
|
return {
|
||||||
'msg': 'get baidu resource expire time success',
|
'status': True,
|
||||||
'data': data_
|
'msg': 'get baidu resource expire time success',
|
||||||
}
|
'data': data_
|
||||||
|
}
|
||||||
|
else:
|
||||||
|
return {
|
||||||
|
'status': False,
|
||||||
|
'msg': 'get baidu resource expire time failed',
|
||||||
|
'data': data_
|
||||||
|
}
|
||||||
|
|
||||||
async def calculate_time_diff(time_str=None):
|
async def calculate_time_diff(time_str=None):
|
||||||
# 将字符串时间转换为 datetime 对象
|
# 将字符串时间转换为 datetime 对象
|
||||||
@ -63,22 +72,46 @@ async def get_resource_expire_time(ns={}):
|
|||||||
else:
|
else:
|
||||||
userid = await get_user()
|
userid = await get_user()
|
||||||
data = []
|
data = []
|
||||||
baidu_resource_data = await baidu_query_by_expire_time({'userid': userid})
|
baidu_resource_data = await baidu_query_by_expire_time(ns)
|
||||||
if baidu_resource_data.get('data'):
|
if baidu_resource_data.get('data'):
|
||||||
for baidubaidu_resource in baidu_resource_data['data']['result']:
|
data_result = baidu_resource_data['data']['result'] if baidu_resource_data['data'].get('result') else []
|
||||||
baidu_r = {
|
# if not data_result:
|
||||||
'id': uuid(),
|
# return {
|
||||||
'name': baidubaidu_resource['serviceTypeName'],
|
# 'status': True,
|
||||||
'instanceid': baidubaidu_resource['shortId'],
|
# 'msg': '无资源数据',
|
||||||
'status': baidubaidu_resource['status'],
|
# 'data': str(baidu_resource_data['data'])
|
||||||
'expiretime': await time_convert(baidubaidu_resource['expireTime']),
|
# }
|
||||||
'days': await calculate_time_diff(baidubaidu_resource['expireTime'])
|
for baidubaidu_resource in data_result:
|
||||||
}
|
baidubaidu_resource['id'] = uuid()
|
||||||
data.append(baidu_r)
|
baidubaidu_resource['name'] = baidubaidu_resource['serviceTypeName']
|
||||||
|
baidubaidu_resource['instanceid'] = baidubaidu_resource['shortId']
|
||||||
|
baidubaidu_resource['expiretime'] = await time_convert(baidubaidu_resource['expireTime'])
|
||||||
|
baidubaidu_resource['days'] = await calculate_time_diff(baidubaidu_resource['expireTime'])
|
||||||
|
|
||||||
|
# 读取数据库表product,匹配跳转链接
|
||||||
|
db = DBPools()
|
||||||
|
async with db.sqlorContext('kboss') as sor:
|
||||||
|
find_sql = """select * from product where providerpid='baidu_%s' and del_flg='0';""" % baidubaidu_resource['serviceType']
|
||||||
|
product_li = await sor.sqlExe(find_sql, {})
|
||||||
|
spec_note_li = json.loads(product_li[0]['spec_note']) if product_li else []
|
||||||
|
for spec_note in spec_note_li:
|
||||||
|
if spec_note.get('configName') == 'listUrl':
|
||||||
|
baidubaidu_resource['list_url'] = spec_note.get('value')
|
||||||
|
break
|
||||||
|
else:
|
||||||
|
baidubaidu_resource['list_url'] = ''
|
||||||
|
|
||||||
|
data.append(baidubaidu_resource)
|
||||||
return {
|
return {
|
||||||
'status': True,
|
'status': True,
|
||||||
'msg': 'get resouce expire time success',
|
'msg': 'get resouce expire time success',
|
||||||
'data': data
|
'data': data,
|
||||||
|
# 分页
|
||||||
|
'pagination': {
|
||||||
|
'total': baidu_resource_data['data'].get('totalCount'),
|
||||||
|
'page_size': baidu_resource_data['data'].get('pageSize'),
|
||||||
|
'current_page': baidu_resource_data['data'].get('pageNo')
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
ret = await get_resource_expire_time(params_kw)
|
ret = await get_resource_expire_time(params_kw)
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user