刘俊驰 1 年之前
父節點
當前提交
4179e6c77a

+ 2 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/StudentRepairDao.java

@@ -98,4 +98,6 @@ public interface StudentRepairDao extends com.ym.mec.common.dal.BaseDAO<Integer,
      * @return int
      */
     List<Integer> countStuEducation(@Param("studentId") Integer studentId);
+
+    StudentRepair getByOrderNo(@Param("orderNo") String orderNo);
 }

+ 11 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/impl/SellOrderServiceImpl.java

@@ -89,6 +89,10 @@ public class SellOrderServiceImpl extends BaseServiceImpl<Integer, SellOrder> im
     private SysAreaService sysAreaService;
 
     @Autowired
+    private StudentRepairDao studentRepairDao;
+
+
+    @Autowired
     private StudentPaymentOrderAddressService studentPaymentOrderAddressService;
     @Override
     public BaseDAO<Integer, SellOrder> getDAO() {
@@ -682,6 +686,13 @@ public class SellOrderServiceImpl extends BaseServiceImpl<Integer, SellOrder> im
                 mallOrder.setReceiverDetailAddress(one.getAddress());
 
             }
+        } else if (studentPaymentOrder.getType() == OrderTypeEnum.REPAIR) {
+            StudentRepair studentRepair = studentRepairDao.getByOrderNo(studentPaymentOrder.getOrderNo());
+            if (studentRepair != null) {
+                mallOrder.setReceiverName(studentRepair.getContactName());
+                mallOrder.setReceiverPhone(studentRepair.getContactMobile());
+                mallOrder.setReceiverDetailAddress(studentRepair.getAddress());
+            }
         }
 
         CommonResult<Boolean> result = mallFeignService.productOrderCreate(mallOrder);

+ 7 - 0
mec-biz/src/main/resources/config/mybatis/StudentRepairMapper.xml

@@ -338,4 +338,11 @@
         SELECT pg.educational_teacher_id_ FROM practice_group pg
         WHERE pg.student_id_ = #{studentId}) sid
     </select>
+
+    <select id="getByOrderNo" resultMap="StudentRepair">
+        SELECT * FROM student_repair
+        WHERE
+            trans_no_ = #{orderNo}
+        limit 1
+    </select>
 </mapper>

+ 25 - 3
mec-mall/mall-admin/src/main/java/com/yonge/cooleshow/admin/controller/OmsOrderController.java

@@ -5,14 +5,19 @@ import com.yonge.cooleshow.mall.common.api.CommonPage;
 import com.yonge.cooleshow.mall.common.api.CommonResult;
 import com.yonge.cooleshow.admin.dto.*;
 import com.yonge.cooleshow.admin.service.OmsOrderService;
+import com.yonge.cooleshow.mall.common.enums.OrderCacheEnum;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
+import lombok.extern.slf4j.Slf4j;
+import org.redisson.api.RLock;
+import org.redisson.api.RedissonClient;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Controller;
 import org.springframework.validation.annotation.Validated;
 import org.springframework.web.bind.annotation.*;
 
 import java.util.List;
+import java.util.concurrent.TimeUnit;
 
 /**
  * 订单管理Controller
@@ -21,10 +26,13 @@ import java.util.List;
 @Controller
 @Api(tags = "OmsOrderController", description = "订单管理")
 @RequestMapping("/order")
+@Slf4j
 public class OmsOrderController {
     @Autowired
     private OmsOrderService orderService;
 
+    @Autowired
+    private RedissonClient redissonClient;
     @ApiOperation("查询订单")
     @RequestMapping(value = "/list", method = RequestMethod.GET)
     @ResponseBody
@@ -39,10 +47,24 @@ public class OmsOrderController {
     @RequestMapping(value = "/update/delivery", method = RequestMethod.POST)
     @ResponseBody
     public CommonResult delivery(@RequestBody List<OmsOrderDeliveryParam> deliveryParamList) {
-        int count = orderService.delivery(deliveryParamList);
-        if (count > 0) {
-            return CommonResult.success(count);
+
+        RLock lock = redissonClient.getLock(OrderCacheEnum.LOCK_REFUND_ORDER_MALL + ":delivery");
+        try {
+            boolean b = lock.tryLock(60, 60, TimeUnit.SECONDS);
+            if (b) {
+                int count = orderService.delivery(deliveryParamList);
+                if (count > 0) {
+                    return CommonResult.success(count);
+                }
+            }
+        } catch (InterruptedException e) {
+            log.error("批量发货异常", e);
+        } finally {
+            if (lock.getHoldCount() >0) {
+                lock.unlock();
+            }
         }
+
         return CommonResult.failed();
     }