Kaynağa Gözat

联合丽格改版

zhijiezhao 2 yıl önce
ebeveyn
işleme
49ee8e61e7

+ 10 - 1
src/main/java/com/caimei/modules/order/controller/OrderDeliverController.java

@@ -1,6 +1,8 @@
 package com.caimei.modules.order.controller;
 
 import com.caimei.modules.order.entity.DeliverDto;
+import com.caimei.modules.order.entity.LogisticsInfoVo;
+import com.caimei.modules.order.entity.LogisticsRecord;
 import com.caimei.modules.order.entity.NewOrder;
 import com.caimei.modules.order.service.OrderDeliverService;
 import com.caimei.utils.ResponseJson;
@@ -12,6 +14,7 @@ import lombok.RequiredArgsConstructor;
 import org.springframework.web.bind.annotation.*;
 
 import javax.annotation.Resource;
+import java.util.List;
 
 /**
  * @author zzj
@@ -28,7 +31,7 @@ public class OrderDeliverController {
 
     @ApiOperation("去发货")
     @GetMapping("/to/deliver/{orderId}")
-    public ResponseJson<NewOrder> toDeliver(@PathVariable("id") Integer orderId) {
+    public ResponseJson<NewOrder> toDeliver(@PathVariable("orderId") Integer orderId) {
         return ResponseJson.success(deliverService.toDeliver(orderId));
     }
 
@@ -37,4 +40,10 @@ public class OrderDeliverController {
     public ResponseJson confirmDeliver(DeliverDto dto) {
         return deliverService.confirmDeliver(dto);
     }
+
+    @ApiOperation("发货记录")
+    @GetMapping("/deliver/details/{orderId}")
+    public ResponseJson<List<LogisticsInfoVo>> logisticsDetails(@PathVariable("orderId") Integer orderId) {
+        return deliverService.findDetails(orderId);
+    }
 }

+ 7 - 1
src/main/java/com/caimei/modules/order/controller/OrderPayShopController.java

@@ -99,13 +99,19 @@ public class OrderPayShopController {
         return payShopService.applyPay(payShop);
     }
 
-    @ApiOperation("取消付款单")
+    @ApiOperation("取消付款单(待审核可以取消)")
     @ApiImplicitParam(required = true, name = "id", value = "付款单Id")
     @GetMapping("/pay/cancel/{id}")
     public ResponseJson cancelPay(@PathVariable("id") Integer id) {
         return payShopService.cancelPay(id);
     }
 
+    @ApiOperation("撤销付款单(审核通过可以撤销)")
+    @GetMapping("/pay/back/{id}")
+    public ResponseJson backPay(@PathVariable("id") Integer id) {
+        return payShopService.backPay(id);
+    }
+
     @ApiOperation("申请分账")
     @ApiImplicitParam(name = "shopOrderIds", value = "子订单IdList", required = true, allowMultiple = true)
     @PostMapping("/pay/split")

+ 0 - 9
src/main/java/com/caimei/modules/order/controller/OrganizeOrderController.java

@@ -129,15 +129,6 @@ public class OrganizeOrderController {
         return JsonModel.newInstance().success(map);
     }
 
-    /**
-     * 发货记录
-     */
-    @GetMapping("logisticsDetails")
-    public JsonModel logisticsDetails(Integer orderId, String logisticsBatchId) {
-        List<LogisticsInfoVo> logisticsInfoVos = new ArrayList<>();
-        logisticsInfoVos = newShopOrderService.logisticsDetails(orderId, logisticsBatchId);
-        return JsonModel.newInstance().success(logisticsInfoVos);
-    }
 
     /**
      * 收退款记录

+ 4 - 0
src/main/java/com/caimei/modules/order/dao/PayShopDao.java

@@ -76,4 +76,8 @@ public interface PayShopDao {
     List<NewShopOrder> findSplitRecord(Integer orderId);
 
     List<OrderPayShopRecord> findPayShopRecordsByOrder(Integer orderId);
+
+    void backPayRecord(Integer id);
+
+    void backPayShop(Integer id);
 }

+ 12 - 30
src/main/java/com/caimei/modules/order/entity/LogisticsInfoVo.java

@@ -1,39 +1,21 @@
 package com.caimei.modules.order.entity;
 
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
 import java.util.List;
 
-/**
- * 物流展示的VO
- */
+@Data
+@ApiModel(description = "物流展示的VO")
 public class LogisticsInfoVo {
 
-    private LogisticsBatch logisticsBatch;  // 物流批次
-
-    private List<LogisticsRecord> logisticsRecordList;  //一批物流 对多个货物
-
-    private List<LogisticsInformation> logisticsInformationList;  // 一批物流对多个快递记录
-
-    public LogisticsBatch getLogisticsBatch() {
-        return logisticsBatch;
-    }
-
-    public void setLogisticsBatch(LogisticsBatch logisticsBatch) {
-        this.logisticsBatch = logisticsBatch;
-    }
-
-    public List<LogisticsRecord> getLogisticsRecordList() {
-        return logisticsRecordList;
-    }
-
-    public void setLogisticsRecordList(List<LogisticsRecord> logisticsRecordList) {
-        this.logisticsRecordList = logisticsRecordList;
-    }
+    @ApiModelProperty("物流批次")
+    private LogisticsBatch logisticsBatch;
 
-    public List<LogisticsInformation> getLogisticsInformationList() {
-        return logisticsInformationList;
-    }
+    @ApiModelProperty("一批物流 对多个货物")
+    private List<LogisticsRecord> logisticsRecordList;
 
-    public void setLogisticsInformationList(List<LogisticsInformation> logisticsInformationList) {
-        this.logisticsInformationList = logisticsInformationList;
-    }
+    @ApiModelProperty("一批物流对多个快递记录")
+    private List<LogisticsInformation> logisticsInformationList;
 }

+ 5 - 1
src/main/java/com/caimei/modules/order/service/OrderDeliverService.java

@@ -1,10 +1,12 @@
 package com.caimei.modules.order.service;
 
 import com.caimei.modules.order.entity.DeliverDto;
+import com.caimei.modules.order.entity.LogisticsInfoVo;
 import com.caimei.modules.order.entity.NewOrder;
 import com.caimei.utils.ResponseJson;
 
-import javax.xml.ws.Response;
+import java.util.List;
+
 
 /**
  * @author zzj
@@ -14,4 +16,6 @@ public interface OrderDeliverService {
     NewOrder toDeliver(Integer orderId);
 
     ResponseJson confirmDeliver(DeliverDto dto);
+
+    ResponseJson<List<LogisticsInfoVo>> findDetails(Integer orderId);
 }

+ 2 - 0
src/main/java/com/caimei/modules/order/service/PayShopService.java

@@ -38,4 +38,6 @@ public interface PayShopService {
     ResponseJson<Map<String,Object>> findSplitRecord(Integer orderId);
 
     ResponseJson<Map<String,Object>> findReceiptRecord(Integer orderId);
+
+    ResponseJson backPay(Integer id);
 }

+ 1 - 15
src/main/java/com/caimei/modules/order/service/impl/NewShopOrderServiceImpl.java

@@ -62,20 +62,6 @@ public class NewShopOrderServiceImpl implements NewShopOrderService {
 
     @Override
     public List<LogisticsInfoVo> logisticsDetails(Integer orderId, String logisticsBatchId) {
-        List<LogisticsInfoVo> result = new ArrayList<>();
-        //查询这个子订单所有的发货批次记录
-        List<LogisticsBatch> lbs = logisticsBatchDao.findBatch(orderId, logisticsBatchId);
-        for (LogisticsBatch l : lbs) {
-            LogisticsInfoVo liv = new LogisticsInfoVo();
-            // 每一批的发货商品记录
-            List<LogisticsRecord> lrs = logisticsRecordDao.findByLogisticsBatchId(l.getId());
-            // 每一批的发货物流记录
-            List<LogisticsInformation> lis = logisticsInformationDao.findByLogisticsBatchId(l.getId());
-            liv.setLogisticsBatch(l);
-            liv.setLogisticsInformationList(lis);
-            liv.setLogisticsRecordList(lrs);
-            result.add(liv);
-        }
-        return result;
+
     }
 }

+ 20 - 4
src/main/java/com/caimei/modules/order/service/impl/OrderDeliverServiceImpl.java

@@ -11,10 +11,7 @@ import org.springframework.transaction.annotation.Transactional;
 
 import javax.annotation.Resource;
 import javax.xml.ws.Response;
-import java.util.Date;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
+import java.util.*;
 import java.util.concurrent.atomic.AtomicReference;
 
 
@@ -120,4 +117,23 @@ public class OrderDeliverServiceImpl implements OrderDeliverService {
         });
         return ResponseJson.success();
     }
+
+    @Override
+    public ResponseJson<List<LogisticsInfoVo>> findDetails(Integer orderId) {
+        List<LogisticsInfoVo> result = new ArrayList<>();
+        //查询这个子订单所有的发货批次记录
+        List<LogisticsBatch> lbs = logisticsBatchDao.findBatch(orderId, null);
+        for (LogisticsBatch l : lbs) {
+            LogisticsInfoVo liv = new LogisticsInfoVo();
+            // 每一批的发货商品记录
+            List<LogisticsRecord> lrs = recordDao.findByLogisticsBatchId(l.getId());
+            // 每一批的发货物流记录
+            List<LogisticsInformation> lis = informationDao.findByLogisticsBatchId(l.getId());
+            liv.setLogisticsBatch(l);
+            liv.setLogisticsInformationList(lis);
+            liv.setLogisticsRecordList(lrs);
+            result.add(liv);
+        }
+        return ResponseJson.success(result);
+    }
 }

+ 35 - 1
src/main/java/com/caimei/modules/order/service/impl/PayShopServiceImpl.java

@@ -84,7 +84,7 @@ public class PayShopServiceImpl implements PayShopService {
                 // 本次付款金额 + 付采美 + 原来已经付过的金额
                 BigDecimal payedFee = MathUtil.add(MathUtil.add(record.getPayAmount(), record.getPayCmAmount()), shopOrder.getPayedShopAmount());
                 // 总共要付的金额
-                BigDecimal shouldPayFee = MathUtil.add(shopOrder.getShouldPayShopAmount(),shopOrder.getShouldPayCmAmount());
+                BigDecimal shouldPayFee = MathUtil.add(shopOrder.getShouldPayShopAmount(), shopOrder.getShouldPayCmAmount());
 
                 if (MathUtil.compare(payedFee, shouldPayFee) == -1) {
                     // (本次付款金额 + 付采美 + 原来已经付过的金额)  < 总共要付的金额
@@ -417,6 +417,40 @@ public class PayShopServiceImpl implements PayShopService {
         return null;
     }
 
+    @Transactional(readOnly = false, rollbackFor = Exception.class)
+    @Override
+    public ResponseJson backPay(Integer id) {
+        //回滚付款单审核通过的所有操作
+        List<OrderPayShopRecord> records = payShopDao.findPayShopRecords(id);
+        List<Integer> status = new ArrayList<>();
+        AtomicReference<Integer> orderId = new AtomicReference<>();
+        for (OrderPayShopRecord record : records) {
+            NewShopOrder shopOrder = newShopOrderDao.get(record.getShopOrderId());
+            orderId.set(shopOrder.getOrderId());
+            shopOrder.setPayedShopAmount(shopOrder.getPayedShopAmount() - record.getPayAmount());
+            if (shopOrder.getPayedShopAmount() == 0D) {
+                // 已付 - 撤回 = 0
+                shopOrder.setPayStatus(1);
+            } else if (shopOrder.getPayedShopAmount() > 0D) {
+                // 已付 - 撤回 > 0
+                shopOrder.setPayStatus(2);
+            } else {
+                log.info("rollBackApply ----> 付款金额异常, 付款金额大于待付款金额");
+                return ResponseJson.error("付款金额异常, 退款金额大于已付款金额");
+            }
+            //进入付款进行状态
+            shopOrder.setPaying(1);
+            newShopOrderDao.update(shopOrder);
+            status.add(shopOrder.getPayStatus());
+        }
+        payShopDao.backPayRecord(id);
+        Integer orderStatus = status.contains(2) ? 2 : 1;
+        payShopDao.backPayShop(id);
+        newOrderDao.updatePayStatus(orderStatus, orderId.get());
+        return ResponseJson.success();
+    }
+
+
     public void setSplitAccountDetail(NewShopOrder shopOrder, PayParamBo payParam, List<SplitAccountPo> list) {
         // 待分账总金额 = 本次支付金额,单位/元
         double splitAmount = payParam.getAllPay();

+ 15 - 0
src/main/resources/mapper/PayShopDao.xml

@@ -201,6 +201,20 @@
         where id = #{id}
     </update>
 
+    <update id="backPayRecord">
+        update cm_pay_shop_record
+        set status = 0,
+            payTime = null
+        where payShopID = #{id}
+    </update>
+
+    <update id="backPayShop">
+        update cm_pay_shop
+        set status = 0,
+            payTime = null
+        where id = #{id}
+    </update>
+
     <select id="findPayShops" resultType="com.caimei.modules.order.entity.OrderPayShop">
         SELECT
         a.id AS "payShopId",
@@ -276,6 +290,7 @@
                a.bankName,
                a.type,
                a.cmType,
+               a.payType,
                a.name                                                     AS "name",
                a.totalAmount                                              AS "totalAmount",
                a.applyTime                                                AS "applyTime",