所有发送消息,采用异步方式
This commit is contained in:
parent
c0ec42ca8a
commit
5fc1acfbf9
@ -39,6 +39,8 @@ from app.core.point_manager import PointManager
|
||||
from datetime import time
|
||||
from app.core.wecombot import WecomBot
|
||||
from app.models.config import ConfigDB
|
||||
from app.core.mpmessage import sent_order_status_change_message
|
||||
from fastapi import BackgroundTasks
|
||||
|
||||
router = APIRouter()
|
||||
|
||||
@ -170,6 +172,7 @@ async def pre_order(
|
||||
|
||||
@router.post("", response_model=ResponseModel)
|
||||
async def create_order(
|
||||
background_tasks: BackgroundTasks,
|
||||
order: OrderCreate,
|
||||
db: Session = Depends(get_db),
|
||||
current_user: UserDB = Depends(get_current_user)
|
||||
@ -296,24 +299,29 @@ async def create_order(
|
||||
|
||||
# 发送企业微信消息
|
||||
wecom_bot = WecomBot()
|
||||
await wecom_bot.send_order_notification(db, db_order, OrderStatus.CREATED)
|
||||
background_tasks.add_task(
|
||||
wecom_bot.send_order_notification,
|
||||
db,
|
||||
db_order,
|
||||
OrderStatus.CREATED
|
||||
)
|
||||
|
||||
|
||||
#发送订单创建成功的消息
|
||||
if current_user.mp_openid:
|
||||
await mp_client.send_template_message(
|
||||
openid=current_user.mp_openid,
|
||||
template_id=settings.DELIVERY_ORDER_CREATED_TEMPLATE_ID,
|
||||
data={
|
||||
data={
|
||||
"character_string13": db_order.orderid,
|
||||
"time4": db_order.create_time.strftime("%Y-%m-%d %H:%M:%S"),
|
||||
"thing10": db_order.address_customer_name,
|
||||
"thing15": f"{db_order.address_community_name} {db_order.address_community_building_name} {db_order.address_detail}",
|
||||
"thing9": db_order.status.status_text
|
||||
}, miniprogram={
|
||||
"appid": settings.WECHAT_APPID,
|
||||
"path": f"/pages/order/detail/index?id={db_order.orderid}"
|
||||
})
|
||||
}
|
||||
|
||||
background_tasks.add_task(
|
||||
sent_order_status_change_message,
|
||||
openid=current_user.mp_openid,
|
||||
template_id=settings.DELIVERY_ORDER_CREATED_TEMPLATE_ID,
|
||||
data=data
|
||||
)
|
||||
|
||||
# 超过晚上8点,则使用明天送达的文案
|
||||
if datetime.now() > datetime.now().replace(hour=settings.ORDER_SPLIT_TIME_HOUR, minute=0, second=0):
|
||||
@ -643,6 +651,7 @@ async def get_user_orders(
|
||||
|
||||
@router.post("/{orderid}/user/cancel", response_model=ResponseModel)
|
||||
async def cancel_order(
|
||||
background_tasks: BackgroundTasks,
|
||||
orderid: str,
|
||||
db: Session = Depends(get_db),
|
||||
current_user: UserDB = Depends(get_current_user)
|
||||
@ -711,22 +720,26 @@ async def cancel_order(
|
||||
|
||||
# 发送企业微信消息
|
||||
wecom_bot = WecomBot()
|
||||
await wecom_bot.send_order_notification(db, order, OrderStatus.CANCELLED)
|
||||
background_tasks.add_task(
|
||||
wecom_bot.send_order_notification,
|
||||
db,
|
||||
order,
|
||||
OrderStatus.CANCELLED
|
||||
)
|
||||
|
||||
# 发送模板消息
|
||||
if current_user.mp_openid:
|
||||
await mp_client.send_template_message(
|
||||
openid=current_user.mp_openid,
|
||||
template_id=settings.DELIVERY_ORDER_CANCELLED_TEMPLATE_ID,
|
||||
data={
|
||||
data={
|
||||
"character_string1": order.orderid,
|
||||
"time19": CommonUtils.get_current_time(),
|
||||
"thing5": "用户主动取消订单"
|
||||
},
|
||||
miniprogram={
|
||||
"appid": settings.WECHAT_APPID,
|
||||
"path": f"/pages/order/detail/index?id={order.orderid}"
|
||||
}
|
||||
}
|
||||
|
||||
background_tasks.add_task(
|
||||
sent_order_status_change_message,
|
||||
openid=current_user.mp_openid,
|
||||
template_id=settings.DELIVERY_ORDER_CANCELLED_TEMPLATE_ID,
|
||||
data=data
|
||||
)
|
||||
|
||||
return success_response(
|
||||
@ -850,6 +863,7 @@ async def get_deliveryman_orders(
|
||||
|
||||
@router.post("/{orderid}/deliveryman/cancel", response_model=ResponseModel)
|
||||
async def deliveryman_cancel_order(
|
||||
background_tasks: BackgroundTasks,
|
||||
orderid: str,
|
||||
cancel_data: OrderCancel,
|
||||
db: Session = Depends(get_db),
|
||||
@ -917,27 +931,34 @@ async def deliveryman_cancel_order(
|
||||
|
||||
# 发送企业微信消息
|
||||
wecom_bot = WecomBot()
|
||||
await wecom_bot.send_order_notification(db, order, OrderStatus.CANCELLED)
|
||||
|
||||
background_tasks.add_task(
|
||||
wecom_bot.send_order_notification,
|
||||
db,
|
||||
order,
|
||||
OrderStatus.CANCELLED
|
||||
)
|
||||
|
||||
# 发送模板消息
|
||||
if order.userid:
|
||||
order_user = db.query(UserDB).filter(
|
||||
UserDB.userid == order.userid
|
||||
).first()
|
||||
|
||||
if order_user.mp_openid:
|
||||
await mp_client.send_template_message(
|
||||
openid=order_user.mp_openid,
|
||||
template_id=settings.DELIVERY_ORDER_CANCELLED_TEMPLATE_ID,
|
||||
data={
|
||||
"character_string1": order.orderid,
|
||||
"time19": CommonUtils.get_current_time(),
|
||||
"thing5": order.cancel_reason
|
||||
},
|
||||
miniprogram={
|
||||
"appid": settings.WECHAT_APPID,
|
||||
"path": f"/pages/order/detail/index?id={order.orderid}"
|
||||
}
|
||||
)
|
||||
"thing5": order.cancel_reason
|
||||
}
|
||||
|
||||
background_tasks.add_task(
|
||||
sent_order_status_change_message,
|
||||
openid=order_user.mp_openid,
|
||||
template_id=settings.DELIVERY_ORDER_CANCELLED_TEMPLATE_ID,
|
||||
data=data
|
||||
)
|
||||
|
||||
return success_response(
|
||||
message="订单取消成功",
|
||||
data=OrderInfo.model_validate(order)
|
||||
@ -948,6 +969,7 @@ async def deliveryman_cancel_order(
|
||||
|
||||
@router.post("/{orderid}/deliveryman/complete", response_model=ResponseModel)
|
||||
async def complete_order(
|
||||
background_tasks: BackgroundTasks,
|
||||
orderid: str,
|
||||
complete_data: OrderComplete,
|
||||
db: Session = Depends(get_db),
|
||||
@ -997,7 +1019,12 @@ async def complete_order(
|
||||
|
||||
# 发送企业微信消息
|
||||
wecom_bot = WecomBot()
|
||||
await wecom_bot.send_order_notification(db, order, OrderStatus.COMPLETED)
|
||||
background_tasks.add_task(
|
||||
wecom_bot.send_order_notification,
|
||||
db,
|
||||
order,
|
||||
OrderStatus.COMPLETED
|
||||
)
|
||||
|
||||
# 发送模板消息
|
||||
if order.userid:
|
||||
@ -1009,18 +1036,17 @@ async def complete_order(
|
||||
UserDB.userid == order.deliveryman_user_id
|
||||
).first()
|
||||
|
||||
await mp_client.send_template_message(
|
||||
data={
|
||||
"character_string13": order.orderid,
|
||||
"thing3": deliveryman_user.nickname,
|
||||
"time5" : CommonUtils.get_current_time()
|
||||
}
|
||||
|
||||
background_tasks.add_task(
|
||||
sent_order_status_change_message,
|
||||
openid=order_user.mp_openid,
|
||||
template_id=settings.DELIVERY_ORDER_COMPLETED_TEMPLATE_ID,
|
||||
data={
|
||||
"character_string13": order.orderid,
|
||||
"thing3": deliveryman_user.nickname,
|
||||
"time5" : CommonUtils.get_current_time()
|
||||
},
|
||||
miniprogram={
|
||||
"appid": settings.WECHAT_APPID,
|
||||
"path": f"/pages/order/detail/index?id={order.orderid}"
|
||||
}
|
||||
data=data
|
||||
)
|
||||
|
||||
return success_response(
|
||||
@ -1033,6 +1059,7 @@ async def complete_order(
|
||||
|
||||
@router.post("/{orderid}/deliveryman/receive", response_model=ResponseModel)
|
||||
async def receive_order(
|
||||
background_tasks: BackgroundTasks,
|
||||
orderid: str,
|
||||
db: Session = Depends(get_db),
|
||||
deliveryman: UserDB = Depends(get_deliveryman_user)
|
||||
@ -1069,7 +1096,13 @@ async def receive_order(
|
||||
|
||||
# 发送企业微信消息
|
||||
wecom_bot = WecomBot()
|
||||
await wecom_bot.send_order_notification(db, order, OrderStatus.RECEIVED)
|
||||
|
||||
background_tasks.add_task(
|
||||
wecom_bot.send_order_notification,
|
||||
db,
|
||||
order,
|
||||
OrderStatus.RECEIVED
|
||||
)
|
||||
|
||||
# 发送模板消息
|
||||
if order.userid:
|
||||
@ -1081,19 +1114,19 @@ async def receive_order(
|
||||
UserDB.userid == order.deliveryman_user_id
|
||||
).first()
|
||||
|
||||
await mp_client.send_template_message(
|
||||
data={
|
||||
"character_string9": order.orderid,
|
||||
"time8": CommonUtils.get_current_time(),
|
||||
"thing3": deliveryman_user.nickname
|
||||
}
|
||||
|
||||
background_tasks.add_task(
|
||||
sent_order_status_change_message,
|
||||
openid=order_user.mp_openid,
|
||||
template_id=settings.DELIVERY_ORDER_RECEIVED_TEMPLATE_ID,
|
||||
data={
|
||||
"character_string9": order.orderid,
|
||||
"time8": CommonUtils.get_current_time(),
|
||||
"thing3": deliveryman_user.nickname
|
||||
},
|
||||
miniprogram={
|
||||
"appid": settings.WECHAT_APPID,
|
||||
"path": f"/pages/order/detail/index?id={order.orderid}"
|
||||
}
|
||||
data=data
|
||||
)
|
||||
|
||||
return success_response(
|
||||
message="接单成功",
|
||||
data=OrderInfo.model_validate(order)
|
||||
|
||||
@ -24,7 +24,7 @@ from app.core.qcloud import qcloud_manager
|
||||
from app.models.merchant import MerchantDB
|
||||
from app.models.address import AddressDB, AddressInfo
|
||||
from app.models.user import UserUpdateRoles, UserUpdateDeliveryCommissionRate
|
||||
from app.models.order import ShippingOrderDB
|
||||
from app.models.order import ShippingOrderDB, OrderStatus
|
||||
|
||||
router = APIRouter()
|
||||
|
||||
@ -368,7 +368,8 @@ async def get_referral_users(
|
||||
u = ReferralUserInfo.model_validate(user).model_dump()
|
||||
|
||||
order_count = db.query(ShippingOrderDB).filter(
|
||||
ShippingOrderDB.userid == user.userid
|
||||
ShippingOrderDB.userid == user.userid,
|
||||
ShippingOrderDB.status == OrderStatus.COMPLETED
|
||||
).count()
|
||||
|
||||
u['is_place_order'] = order_count > 0
|
||||
|
||||
17
app/core/mpmessage.py
Normal file
17
app/core/mpmessage.py
Normal file
@ -0,0 +1,17 @@
|
||||
from app.core.config import settings
|
||||
from app.core.mpclient import mp_client
|
||||
from app.core.config import settings
|
||||
|
||||
|
||||
# 发送订单状态改变消息
|
||||
async def sent_order_status_change_message(openid: str, template_id: str, data: dict):
|
||||
|
||||
await mp_client.send_template_message(
|
||||
openid=openid,
|
||||
template_id=template_id,
|
||||
data=data,
|
||||
miniprogram={
|
||||
"appid": settings.WECHAT_APPID,
|
||||
"path": f"/pages/order/detail/index?id={data.orderid}"
|
||||
}
|
||||
)
|
||||
Loading…
Reference in New Issue
Block a user