diff --git a/app/api/endpoints/order.py b/app/api/endpoints/order.py index 8aaf152..235bc59 100644 --- a/app/api/endpoints/order.py +++ b/app/api/endpoints/order.py @@ -1319,12 +1319,6 @@ async def deliveryman_complete_order( OrderStatus.COMPLETED ) - qcloud = QCloudManager() - background_tasks.add_task( - qcloud.send_sms_order_complete, - order.address_customer_phone - ) - # 发送模板消息 if order.userid: order_user = db.query(UserDB).filter( @@ -1348,6 +1342,12 @@ async def deliveryman_complete_order( data=data, orderid=order.orderid ) + else: + qcloud = QCloudManager() + background_tasks.add_task( + qcloud.send_sms_order_complete, + order.address_customer_phone + ) return success_response( message="订单已完成" if order.final_amount == 0 else "请继续支付", @@ -1435,6 +1435,12 @@ async def deliveryman_receive_order( data=data, orderid=order.orderid ) + else: + qcloud = QCloudManager() + background_tasks.add_task( + qcloud.send_sms_order_receive, + order.address_customer_phone + ) return success_response( message="接单成功", diff --git a/app/core/config.py b/app/core/config.py index d0dd2b0..5859f30 100644 --- a/app/core/config.py +++ b/app/core/config.py @@ -63,7 +63,8 @@ class Settings(BaseSettings): SMS_SIGN_NAME: str = "成都爱嘉辰科技" SMS_TEMPLATE_ID: str = "2353143" # 验证码短信模板ID SMS_TEMPLATE_ID_ADDITIONAL_FEE: str = "2375181" # 加价短信模板ID - SMS_TEMPLATE_ID_ORDER_COMPLETE: str = "2382882" # 订单完成短信模板ID + SMS_TEMPLATE_ID_ORDER_COMPLETE: str = "2410806" # 订单完成短信模板ID + SMS_TEMPLATE_ID_ORDER_RECEIVE: str = "2410809" # 订单接单短信模板ID # 腾讯云 COS 配置 COS_REGION: str = "ap-chengdu" diff --git a/app/core/qcloud.py b/app/core/qcloud.py index a6bc1d5..997dbe1 100644 --- a/app/core/qcloud.py +++ b/app/core/qcloud.py @@ -108,6 +108,32 @@ class QCloudManager: except TencentCloudSDKException as e: raise Exception(f"发送短信失败: {str(e)}") + async def send_sms_order_receive(self, phone: str) -> tuple[str, str]: + """ + 发送订单接单短信 + """ + try: + self._init_sms_client() + + # 构建请求 + req = sms_models.SendSmsRequest() + req.SmsSdkAppId = settings.SMS_SDK_APP_ID + req.SignName = settings.SMS_SIGN_NAME + req.TemplateId = settings.SMS_TEMPLATE_ID_ORDER_RECEIVE + req.PhoneNumberSet = [f"+86{phone}"] + + # 发送短信 + response = self.sms_client.SendSms(req) + + # 检查发送结果 + if response.SendStatusSet[0].Code != "Ok": + raise Exception(response.SendStatusSet[0].Message) + + return response.RequestId + + except TencentCloudSDKException as e: + raise Exception(f"发送订单接单短信失败: {str(e)}") + async def send_sms_order_complete(self, phone: str) -> tuple[str, str]: """ 发送订单完成短信