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) 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( unpay_order = db.query(ShippingOrderDB).filter(
ShippingOrderDB.userid == current_user.userid, 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.core.qcloud import qcloud_manager
from app.models.merchant import MerchantDB from app.models.merchant import MerchantDB
from app.models.address import AddressDB, AddressInfo 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.models.order import ShippingOrderDB, OrderStatus
from app.core.redis_client import redis_client from app.core.redis_client import redis_client
import logging import logging
@ -434,6 +434,19 @@ async def change_password(
except Exception as e: except Exception as e:
db.rollback() db.rollback()
return error_response(code=500, message=f"修改密码失败: {str(e)}") 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) @router.post("/auth", response_model=ResponseModel)
async def create_user_auth( async def create_user_auth(

View File

@ -52,6 +52,7 @@ class UserDB(Base):
update_time = Column(DateTime(timezone=True), onupdate=func.now()) update_time = Column(DateTime(timezone=True), onupdate=func.now())
community_id = Column(Integer, ForeignKey("communities.id"), nullable=True) # 归属小区 community_id = Column(Integer, ForeignKey("communities.id"), nullable=True) # 归属小区
is_auth = Column(Boolean, nullable=False, default=False) 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")) 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_id: Optional[int] = None
community_name: Optional[str] = None community_name: Optional[str] = None
is_auth: bool = False is_auth: bool = False
is_delivering: bool = False
class Config: class Config:
from_attributes = True from_attributes = True
@ -124,6 +125,9 @@ class UserUpdateRoles(BaseModel):
user_id: int user_id: int
roles: List[UserRole] roles: List[UserRole]
class DeliverymanSetDelivering(BaseModel):
is_delivering: bool
def generate_user_code(db=None) -> str: def generate_user_code(db=None) -> str:
"""生成6位大写字母+数字的用户编码""" """生成6位大写字母+数字的用户编码"""
chars = string.ascii_uppercase + string.digits chars = string.ascii_uppercase + string.digits

Binary file not shown.