Browse Source

no message

FengChaoYu 3 weeks ago
parent
commit
4e76f670ba

+ 16 - 0
mall-server-api/src/main/java/com/gree/mall/manager/bean/order/OrderDeliveryInfoBean.java

@@ -0,0 +1,16 @@
+package com.gree.mall.manager.bean.order;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.util.List;
+
+@Data
+@ApiModel
+public class OrderDeliveryInfoBean {
+    @ApiModelProperty(value = "订单号")
+    List<String> orderIds;
+    @ApiModelProperty(value = "配送员id")
+    String userId;
+}

+ 8 - 9
mall-server-api/src/main/java/com/gree/mall/manager/controller/order/OrderController.java

@@ -196,17 +196,17 @@ public class OrderController {
         return ResponseHelper.success();
         return ResponseHelper.success();
     }
     }
 
 
-    @PostMapping("/start/delivery")
+    @PostMapping("/start/deliver")
     @ApiOperation("开始配送")
     @ApiOperation("开始配送")
-    public ResponseHelper startDelivery(
-            @ApiParam(value = "订单号", required = true) @RequestParam String orderId
+    public ResponseHelper startDeliver(
+            @RequestBody OrderDeliveryInfoBean bean
     ) throws Exception {
     ) throws Exception {
-        Lock obtain = redisLockRegistry.obtain(Constant.RedisPrefix.LOCK_ORDER + orderId);
+        Lock obtain = redisLockRegistry.obtain(Constant.RedisPrefix.LOCK_ORDER + "1");
         if(!obtain.tryLock(10,TimeUnit.SECONDS)){
         if(!obtain.tryLock(10,TimeUnit.SECONDS)){
             return ResponseHelper.error("系统繁忙,请稍后再试");
             return ResponseHelper.error("系统繁忙,请稍后再试");
         }
         }
         try {
         try {
-            orderLogic.startDelivery(orderId);
+            orderLogic.startDeliver(bean.getOrderIds());
         }finally {
         }finally {
             obtain.unlock();
             obtain.unlock();
         }
         }
@@ -217,15 +217,14 @@ public class OrderController {
     @PostMapping("/add/delivery")
     @PostMapping("/add/delivery")
     @ApiOperation("添加配送员")
     @ApiOperation("添加配送员")
     public ResponseHelper addDelivery(
     public ResponseHelper addDelivery(
-            @ApiParam(value = "订单号", required = true) @RequestParam String orderId,
-            @ApiParam(value = "配送员id", required = true) @RequestParam String userId
+        @RequestBody OrderDeliveryInfoBean bean
     ) throws Exception {
     ) throws Exception {
-        Lock obtain = redisLockRegistry.obtain(Constant.RedisPrefix.LOCK_ORDER + orderId);
+        Lock obtain = redisLockRegistry.obtain(Constant.RedisPrefix.LOCK_ORDER + "1");
         if(!obtain.tryLock(10,TimeUnit.SECONDS)){
         if(!obtain.tryLock(10,TimeUnit.SECONDS)){
             return ResponseHelper.error("系统繁忙,请稍后再试");
             return ResponseHelper.error("系统繁忙,请稍后再试");
         }
         }
         try {
         try {
-            orderLogic.addDelivery(orderId, userId);
+            orderLogic.addDelivery(bean.getOrderIds(), bean.getUserId());
         }finally {
         }finally {
             obtain.unlock();
             obtain.unlock();
         }
         }

+ 28 - 12
mall-server-api/src/main/java/com/gree/mall/manager/logic/order/OrderLogic.java

@@ -1410,30 +1410,46 @@ public class OrderLogic {
 
 
     /**
     /**
      * 开始配送
      * 开始配送
-     * @param orderId
+     * @param orderIds
      */
      */
     @Transactional
     @Transactional
-    public void startDelivery(String orderId) {
-        final OrderInfo orderInfo = orderInfoService.getById(orderId);
+    public void startDeliver(List<String> orderIds) {
+        final List<OrderInfo> orderInfoList = orderInfoService.lambdaQuery().in(OrderInfo::getOrderId, orderIds).list();
+
+        final long count = orderInfoList.stream().filter(v -> !v.getOrderStatus().equals(OrderStatusEnum.DPS.toString())).count();
 
 
-        if (StringUtils.isBlank(orderInfo.getDeliveryUserId())) {
+        if (count > 0) {
+            throw new RemoteServiceException("有非“待配送”单,请刷新列表检查");
+        }
+
+        final long notDeliveryCount = orderInfoList.stream().filter(v -> StringUtils.isBlank(v.getDeliveryUserId())).count();
+
+        if (notDeliveryCount > 0) {
             throw new RemoteServiceException("请先选择配送员");
             throw new RemoteServiceException("请先选择配送员");
         }
         }
 
 
         orderInfoService.lambdaUpdate()
         orderInfoService.lambdaUpdate()
                 .set(OrderInfo::getOrderStatus, OrderStatusEnum.PSZ.toString())
                 .set(OrderInfo::getOrderStatus, OrderStatusEnum.PSZ.toString())
-                .set(OrderInfo::getLastOrderStatus, orderInfo.getOrderStatus())
+                .set(OrderInfo::getLastOrderStatus, OrderStatusEnum.DPS.toString())
                 .set(OrderInfo::getDeliverTime, DateUtil.date())
                 .set(OrderInfo::getDeliverTime, DateUtil.date())
-                .eq(OrderInfo::getOrderId, orderId)
+                .in(OrderInfo::getOrderId, orderIds)
                 .update();
                 .update();
     }
     }
 
 
-    public void addDelivery(String orderId, String userId) {
-        final OrderInfo orderInfo = orderInfoService.getById(orderId);
+    /**
+     * 添加配送员
+     * @param orderIds
+     * @param userId
+     */
+    public void addDelivery(List<String> orderIds, String userId) {
+        final List<OrderInfo> orderInfoList = orderInfoService.lambdaQuery().in(OrderInfo::getOrderId, orderIds).list();
 
 
-        if (StringUtils.isBlank(orderInfo.getDeliveryUserId())) {
-            throw new RemoteServiceException("请先选择配送员");
+        final long count = orderInfoList.stream().filter(v -> !v.getOrderStatus().equals(OrderStatusEnum.DPS.toString())).count();
+
+        if (count > 0) {
+            throw new RemoteServiceException("有非“待配送”单,请刷新列表检查");
         }
         }
+
         AdminUserCom adminUser = commonLogic.getAdminUser();
         AdminUserCom adminUser = commonLogic.getAdminUser();
         final User user = userService.getById(userId);
         final User user = userService.getById(userId);
         final UserCompanyDelivery userCompanyDelivery = userCompanyDeliveryService.lambdaQuery()
         final UserCompanyDelivery userCompanyDelivery = userCompanyDeliveryService.lambdaQuery()
@@ -1447,8 +1463,8 @@ public class OrderLogic {
 
 
         orderInfoService.lambdaUpdate()
         orderInfoService.lambdaUpdate()
                 .set(OrderInfo::getDeliveryUserId, user.getUserId())
                 .set(OrderInfo::getDeliveryUserId, user.getUserId())
-                .set(OrderInfo::getDeliveryUserName, user.getNickName())
-                .eq(OrderInfo::getOrderId, orderId)
+                .set(OrderInfo::getDeliveryUserName, user.getNickName() + "(" + user.getMobile() + ")")
+                .in(OrderInfo::getOrderId, orderIds)
                 .update();
                 .update();
     }
     }
 }
 }