From 1a173b477569d02454bdfac2a5cd8f8e94e8f44d Mon Sep 17 00:00:00 2001 From: ping <1017253325@qq.com> Date: Wed, 22 Oct 2025 15:59:48 +0800 Subject: [PATCH] =?UTF-8?q?=E7=99=BE=E5=BA=A6=E8=87=AA=E5=8A=A8=E7=BB=AD?= =?UTF-8?q?=E8=B4=B9=E6=B7=BB=E5=8A=A0=20=E7=9F=AD=E4=BF=A1=E9=80=9A?= =?UTF-8?q?=E7=9F=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- b/baiduc/baidu_confirm_auto_renew_order.dspy | 94 +++++++++++++++++--- 1 file changed, 80 insertions(+), 14 deletions(-) diff --git a/b/baiduc/baidu_confirm_auto_renew_order.dspy b/b/baiduc/baidu_confirm_auto_renew_order.dspy index e88539a..e6509ab 100644 --- a/b/baiduc/baidu_confirm_auto_renew_order.dspy +++ b/b/baiduc/baidu_confirm_auto_renew_order.dspy @@ -197,6 +197,63 @@ async def baidu_order_cancel(ns={}): 'status': True, 'msg': 'order cancel success' } + +async def get_time_diff(time_old=None, time_new=None): + + # # 定义两个时间字符串 + # time_old = '2023-12-01 09:40:00' + # time_new = '2023-12-01 23:15:00' + + # 将时间字符串解析为datetime对象 + time_dt1 = datetime.datetime.strptime(time_old, '%Y-%m-%d %H:%M:%S') + time_dt2 = datetime.datetime.strptime(time_new, '%Y-%m-%d %H:%M:%S') + + # 计算时间差 + time_difference = time_dt2 - time_dt1 + + # 提取时间差中的分钟数 + minutes_difference = time_difference.total_seconds() / 60 + # day = time_difference.days + # hour = time_difference.total_seconds() / 3600 + return minutes_difference + +async def diff_sms_send_save(sor=None, productname=None, time_interval=24*60, send_type='用户欠费通知', user_orgid=None, sms_send_dict=None): + sms_should_send = False + send_type = send_type + # 记录到欠费表中 + # 首先查询欠费表中时间是否再范围内 + db = DBPools() + async with db.sqlorContext('kboss') as sor: + try: + print('引用发送短信...') + customer_phone = (await sor.R('organization', {'id': user_orgid}))[0]['contactor_phone'] + # customer_name = (await sor.R('organization', {'id': user_orgid}))[0]['orgname'] + sms_exist_li = await sor.R('sms_record', {'mobile': customer_phone, 'send_type': send_type, 'send_status': '1', + 'sort': ['send_time desc']}) + if sms_exist_li: + # 如果原来发送成功 时间范围大于24小时 再次发送 + if sms_exist_li[0]['send_status']: + sms_exist_time = sms_exist_li[0]['send_time'] + time_diff = await get_time_diff(sms_exist_time, time.strftime('%Y-%m-%d %H:%M:%S')) + # 如果发送过的短信在一天范围内 不再发送短信 + if time_diff >= time_interval: + sms_should_send = True + else: + print('%s %s短信已经发送过, 但是没有超过阈值时间, 不再发送...' % (send_type, customer_phone)) + else: + print('%s %s短信没有发送过, 发送...' % (send_type, customer_phone)) + sms_should_send = True + + if sms_should_send or not sms_exist_li: + # 给个人发送短信 + await send_vcode(customer_phone, send_type, sms_send_dict) + except Exception as e: + print('发送短信失败: %s' % e) + return { + 'status': False, + 'msg': '发送短信失败', + 'data': e + } async def get_baidu_orderlist(ns={}): """ @@ -579,20 +636,21 @@ async def get_baidu_orderlist(ns={}): else: #取消订单 await sor.rollback() - paydata = {'queryAccountId':baidu_users[0]['baidu_id'],'orderIds':[ns.get('order_id')]} - ns_format = '&'.join(['%s=%s' % (k, v) for k, v in ns.items()]) - url = 'https://billing.baidubce.com/v1/order/cancel?%s' % ns_format - method = 'POST' - 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=paydata) as res: - await res.json() + # 余额不足不cancle订单 + # paydata = {'queryAccountId':baidu_users[0]['baidu_id'],'orderIds':[ns.get('order_id')]} + # ns_format = '&'.join(['%s=%s' % (k, v) for k, v in ns.items()]) + # url = 'https://billing.baidubce.com/v1/order/cancel?%s' % ns_format + # method = 'POST' + # 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=paydata) as res: + # await res.json() ns_record = { 'orderid': ns.get('order_id'), 'ordertype': orders[0]['type'], @@ -600,6 +658,14 @@ async def get_baidu_orderlist(ns={}): 'reason': '该账号余额不足,无法完成购买' } await user_action_record(ns_record) + + # 发送短信 + sms_send_dict = { + 'time': time.strftime('%Y-%m-%d %H:') + '00:00', + 'productname': None + } + await diff_sms_send_save(sor=sor, time_interval=24*60, send_type='用户欠费通知', user_orgid=orgid, sms_send_dict=sms_send_dict) + return {'status': False,'msg': '该账号余额不足,无法完成购买'} except Exception as e: await baidu_order_cancel({'baidu_id': baidu_users[0]['baidu_id'], 'order_id': ns.get('order_id')})