This commit is contained in:
aaron 2025-03-15 16:15:20 +08:00
parent a67c41817a
commit 6c5febe330
4 changed files with 30 additions and 2 deletions

View File

@ -185,6 +185,17 @@ async def pre_order(
current_user: UserDB = Depends(get_current_user)
):
# 检查是否有配送员在线
deliveryman_online = db.query(UserDB).filter(
UserDB.roles.contains([UserRole.DELIVERYMAN]),
UserDB.community_id == request.community_id,
UserDB.is_delivering == True
).first()
if not deliveryman_online:
return error_response(code=400, message="没有配送员在线, 无法下单")
# 检查是否有未支付的订单
unpay_order = db.query(ShippingOrderDB).filter(
ShippingOrderDB.userid == current_user.userid,

View File

@ -23,7 +23,7 @@ from app.models.user_auth import UserAuthDB, UserAuthCreate, UserAuthInfo
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
from app.models.user import UserUpdateRoles, DeliverymanSetDelivering
from app.models.order import ShippingOrderDB, OrderStatus
from app.core.redis_client import redis_client
import logging
@ -434,6 +434,19 @@ async def change_password(
except Exception as e:
db.rollback()
return error_response(code=500, message=f"修改密码失败: {str(e)}")
@router.put("/deliveryman/set_delivering", response_model=ResponseModel)
async def deliveryman_set_delivering(
request: DeliverymanSetDelivering,
db: Session = Depends(get_db),
current_user: UserDB = Depends(get_current_user)
):
"""配送员设置是否在配送中"""
current_user.is_delivering = request.is_delivering
db.commit()
return success_response(message="设置成功",data={
"is_delivering": current_user.is_delivering
})
@router.post("/auth", response_model=ResponseModel)
async def create_user_auth(

View File

@ -52,6 +52,7 @@ class UserDB(Base):
update_time = Column(DateTime(timezone=True), onupdate=func.now())
community_id = Column(Integer, ForeignKey("communities.id"), nullable=True) # 归属小区
is_auth = Column(Boolean, nullable=False, default=False)
is_delivering = Column(Boolean, nullable=False, default=False) # 是否在配送中
# 用户所属小区关系
community = relationship("CommunityDB", foreign_keys=[community_id], backref=backref("residents", lazy="dynamic"))
@ -87,7 +88,7 @@ class UserInfo(BaseModel):
community_id: Optional[int] = None
community_name: Optional[str] = None
is_auth: bool = False
is_delivering: bool = False
class Config:
from_attributes = True
@ -124,6 +125,9 @@ class UserUpdateRoles(BaseModel):
user_id: int
roles: List[UserRole]
class DeliverymanSetDelivering(BaseModel):
is_delivering: bool
def generate_user_code(db=None) -> str:
"""生成6位大写字母+数字的用户编码"""
chars = string.ascii_uppercase + string.digits

Binary file not shown.