kboss/b/product/get_resource_expire_time.dspy
2025-07-24 16:39:43 +08:00

85 lines
3.0 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_query_by_expire_time(ns={}):
if ns.get('userid'):
userid = ns.get('userid')
else:
userid = await get_user()
db = DBPools()
async with db.sqlorContext('kboss') as sor:
baiduids = await sor.R('baidu_users', {'user_id': userid})
if baiduids:
baiduid = baiduids[0]['baidu_id']
else:
return {
'status': False,
'msg': 'User not synchronized'
}
ns['queryAccountId'] = baiduid
method = 'POST'
ns_format = '&'.join(['%s=%s' % (k, v) for k, v in ns.items()])
url = 'https://billing.baidubce.com/v1/resource/queryByExpireTime?%s' % ns_format
header = {
"Host": "billing.baidubce.com"
}
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_ = await res.json()
print('data_', data_)
return {
'status': True,
'msg': 'get baidu resource expire time success',
'data': data_
}
async def calculate_time_diff(time_str=None):
# 将字符串时间转换为 datetime 对象
# time_str = '2025-07-13T02:27:43Z'
# 按照指定格式解析字符串时间
given_time = datetime.datetime.strptime(time_str, '%Y-%m-%dT%H:%M:%SZ').replace(tzinfo=datetime.timezone.utc)
# 获取当前时间
current_time = datetime.datetime.now(datetime.timezone.utc)
# 计算时间差
time_difference = given_time - current_time
# 提取天数
days_difference = time_difference.days
return days_difference
async def get_resource_expire_time(ns={}):
if ns.get('userid'):
userid = ns.get('userid')
else:
userid = await get_user()
data = []
baidu_resource_data = await baidu_query_by_expire_time({'userid': userid})
if baidu_resource_data.get('data'):
for baidubaidu_resource in baidu_resource_data['data']['result']:
baidu_r = {
'id': uuid(),
'name': baidubaidu_resource['serviceTypeName'],
'instanceid': baidubaidu_resource['shortId'],
'status': baidubaidu_resource['status'],
'expiretime': await time_convert(baidubaidu_resource['expireTime']),
'days': await calculate_time_diff(baidubaidu_resource['expireTime'])
}
data.append(baidu_r)
return {
'status': True,
'msg': 'get resouce expire time success',
'data': data
}
ret = await get_resource_expire_time(params_kw)
return ret