From ab7fa6b895be9f9e7213fb1289c66bde75593c8b Mon Sep 17 00:00:00 2001 From: aaron <> Date: Sat, 15 Mar 2025 17:05:20 +0800 Subject: [PATCH] =?UTF-8?q?=E5=8F=91=E9=80=81=E9=80=9A=E7=9F=A5=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/api/endpoints/user.py | 14 ++++++++++++++ app/core/wecombot.py | 20 ++++++++++++++++++++ jobs.sqlite | Bin 24576 -> 24576 bytes 3 files changed, 34 insertions(+) diff --git a/app/api/endpoints/user.py b/app/api/endpoints/user.py index c0bec56..bf39efc 100644 --- a/app/api/endpoints/user.py +++ b/app/api/endpoints/user.py @@ -28,6 +28,9 @@ from app.models.order import ShippingOrderDB, OrderStatus from app.core.redis_client import redis_client import logging from fastapi import Request +from app.core.wecombot import WecomBot +from fastapi import BackgroundTasks + router = APIRouter() @@ -437,6 +440,7 @@ async def change_password( @router.put("/deliveryman/set_delivering", response_model=ResponseModel) async def deliveryman_set_delivering( + background_tasks: BackgroundTasks, request: DeliverymanSetDelivering, db: Session = Depends(get_db), current_user: UserDB = Depends(get_current_user) @@ -444,6 +448,16 @@ async def deliveryman_set_delivering( """配送员设置是否在配送中""" current_user.is_delivering = request.is_delivering db.commit() + + # 发送企微通知 + if not request.is_delivering: + wecom_bot = WecomBot() + background_tasks.add_task( + wecom_bot.send_deliveryman_close_delivering, + db, + current_user, + current_user.community.name + ) return success_response(message="设置成功",data={ "is_delivering": current_user.is_delivering }) diff --git a/app/core/wecombot.py b/app/core/wecombot.py index f880cc8..3100f15 100644 --- a/app/core/wecombot.py +++ b/app/core/wecombot.py @@ -151,6 +151,26 @@ class WecomBot: except Exception as e: print(f"发送异常: {str(e)}") return False + + async def send_deliveryman_close_delivering(self,db: Session, user: UserDB, community_name: str) -> bool: + """ + 发送配送员关闭配送通知 + """ + + try: + content = f"""# ‼️ 配送员关闭配送通知 + + > **环境:{settings.ENV_NAME}** + + **配送员信息** + > 所属小区: {community_name} + > 姓名: {user.nickname} + > 电话: {user.phone[:3]}\*\*\*\*{user.phone[7:]} + """ + return await self.send_markdown(content, user.community.webot_webhook) + except Exception as e: + logging.exception(f"发送企业微信消息失败: {str(e)}") + raise e async def send_order_notification(self,db: Session, shipping_order: ShippingOrderDB, notify_type: OrderStatus = OrderStatus.CREATED) -> bool: """ diff --git a/jobs.sqlite b/jobs.sqlite index f6f77ecb4396c1e6b745e81875f259e92cbf750d..0bc813c9ea3a38ebe8a6899ad0a1e9ea601d90c6 100644 GIT binary patch delta 19 bcmZoTz}Rqrae_4C&WSS4j5{|bEQkjHOFsvq delta 19 bcmZoTz}Rqrae_4C!ih4@j0-m=EQkjHN!JH*