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['instanceId'], '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