diff --git a/app/api/endpoints/order.py b/app/api/endpoints/order.py index 3d9df18..d5d999d 100644 --- a/app/api/endpoints/order.py +++ b/app/api/endpoints/order.py @@ -1363,6 +1363,20 @@ async def get_deliveryman_order_summary( "today_count": today_total }) +@router.get("/deliveryman/new_orders_checked", response_model=ResponseModel) +async def get_new_orders_checked( + db: Session = Depends(get_db), + deliveryman: UserDB = Depends(get_deliveryman_user) +): + """获取新订单已检查标记""" + success = redis_client.remove_orders(deliveryman.community_id) + + return success_response(data={ + "message": "新订单已检查标记已移除", + "success": success + }) + + @router.get("/deliveryman/check_new_order", response_model=ResponseModel) async def check_new_orders( db: Session = Depends(get_db), @@ -1371,7 +1385,7 @@ async def check_new_orders( """检查新订单""" # 从Redis获取新订单ID列表 - order_ids = redis_client.pop_orders_from_queue(deliveryman.community_id, 10) + order_ids = redis_client.get_orders_from_queue(deliveryman.community_id, 10) if not order_ids: return success_response(data={ diff --git a/app/core/redis_client.py b/app/core/redis_client.py index 59451f8..89ec5bd 100644 --- a/app/core/redis_client.py +++ b/app/core/redis_client.py @@ -54,7 +54,7 @@ class RedisClient: logging.error(f"添加新订单到队列失败: {str(e)}") return False - def pop_orders_from_queue(self, community_id: int, count: int = 10) -> List[str]: + def get_orders_from_queue(self, community_id: int, count: int = 10) -> List[str]: """ 获取社区新订单列表 @@ -67,28 +67,27 @@ class RedisClient: """ try: key = f"community:{community_id}:new_orders" - # 获取订单列表,并移除 - orders = self.client.lpop(key, count) + # 获取订单列表,并不移除 + orders = self.client.lrange(key, 0, count-1) return orders except Exception as e: logging.error(f"获取社区新订单列表失败: {str(e)}") return [] - def remove_order(self, community_id: int, order_id: str) -> bool: + def remove_orders(self, community_id: int) -> bool: """ 从社区队列中移除订单 Args: community_id: 社区ID - order_id: 订单ID Returns: bool: 是否移除成功 """ try: key = f"community:{community_id}:new_orders" - # 使用 LREM 移除列表中的元素 - self.client.lrem(key, 0, order_id) + # 使用 ltrim 移除队列中的所有元素 + self.client.ltrim(key, 0, -1) return True except Exception as e: logging.error(f"从队列中移除订单失败: {str(e)}")