From 98153e20935ca47cb0e243410b521756a12a35db Mon Sep 17 00:00:00 2001
From: Cui Zhi Feng <7426394+wuxixiaocui@user.noreply.gitee.com>
Date: 星期一, 26 八月 2024 09:14:09 +0800
Subject: [PATCH] 售后列表查询 结算状态

---
 src/main/java/com/mzl/flower/service/payment/OrderSettlementService.java |   42 ++++++++++++++++++++
 src/main/java/com/mzl/flower/schedule/ScheduleService.java               |    1 
 src/main/java/com/mzl/flower/constant/Constants.java                     |    4 +
 src/main/resources/script/db.sql                                         |    6 +++
 src/main/resources/mapper/payment/OrderItemSalesMapper.xml               |    8 ++--
 5 files changed, 55 insertions(+), 6 deletions(-)

diff --git a/src/main/java/com/mzl/flower/constant/Constants.java b/src/main/java/com/mzl/flower/constant/Constants.java
index 7834f25..04d154f 100644
--- a/src/main/java/com/mzl/flower/constant/Constants.java
+++ b/src/main/java/com/mzl/flower/constant/Constants.java
@@ -296,7 +296,9 @@
 
     public enum SETTLEMENT_STATUS {
         PENDING("待结算"),
-        COMPLETED("已结算"),
+        PROCESSING("结算中"),
+        COMPLETED("结算成功"),
+        FAILED("结算失败"),
         ;
 
         SETTLEMENT_STATUS(String desc) {
diff --git a/src/main/java/com/mzl/flower/schedule/ScheduleService.java b/src/main/java/com/mzl/flower/schedule/ScheduleService.java
index c45f66b..4ffb145 100644
--- a/src/main/java/com/mzl/flower/schedule/ScheduleService.java
+++ b/src/main/java/com/mzl/flower/schedule/ScheduleService.java
@@ -164,6 +164,7 @@
             for(Transfer t : ls){
                 try {
                     paymentV3Service.checkTransferStatus(t);
+                    settlementService.updateSettlementStatus(t.getId());
                 } catch (Exception e) {
                     log.error(e.getMessage(), e);
                 }
diff --git a/src/main/java/com/mzl/flower/service/payment/OrderSettlementService.java b/src/main/java/com/mzl/flower/service/payment/OrderSettlementService.java
index 5f9e44a..49100ed 100644
--- a/src/main/java/com/mzl/flower/service/payment/OrderSettlementService.java
+++ b/src/main/java/com/mzl/flower/service/payment/OrderSettlementService.java
@@ -74,6 +74,12 @@
     @Autowired
     private OrderItemSettlementMapper orderItemSettlementMapper;
 
+    @Autowired
+    private TransferMapper transferMapper;
+
+    @Autowired
+    private TransferDetailMapper transferDetailMapper;
+
     public Page<OrderSettlementListDTO> selectSettlementList(Page page, OrderSettlementQueryDTO dto){
         dto.setStartDate(parseLocalDateTime(dto.getStartDateStr(), true));
         dto.setEndDate(parseLocalDateTime(dto.getEndDateStr(), false));
@@ -114,6 +120,13 @@
         OrderSettlement settlement = settlementMapper.selectById(id);
         if(settlement == null){
             throw new ValidationException("结算单不存在");
+        }
+        String status = settlement.getStatus();
+        if(Constants.SETTLEMENT_STATUS.PROCESSING.name().equals(status)){
+            throw new ValidationException("结算中,不用重复结算");
+        }
+        if(Constants.SETTLEMENT_STATUS.COMPLETED.name().equals(status)){
+            throw new ValidationException("结算成功,不用重复结算");
         }
         String type = settlement.getType();
 
@@ -174,12 +187,39 @@
         }
 
         settlement.setTransferTime(LocalDateTime.now());
-        settlement.setStatus(Constants.SETTLEMENT_STATUS.COMPLETED.name());
+        settlement.setStatus(Constants.SETTLEMENT_STATUS.PROCESSING.name());
         settlement.update(SecurityUtils.getUserId());
 
         settlementMapper.updateById(settlement);
     }
 
+    public void updateSettlementStatus(String transferId){
+        Transfer t  = transferMapper.selectById(transferId);
+        if("FINISHED".equals(t.getStatus())){
+            OrderSettlement settlement = settlementMapper.selectOne(new QueryWrapper<OrderSettlement>()
+                    .eq("transfer_id", transferId));
+            if(settlement == null){
+                return;
+            }
+            String transferDetailId = settlement.getTransferDetailId();
+            TransferDetail td = transferDetailMapper.selectById(transferDetailId);
+            if(td == null){
+                log.warn("未找到对应明细");
+                return;
+            }
+            String dStatus = td.getStatus();
+            if("SUCCESS".equals(dStatus)){
+                settlement.setStatus(Constants.SETTLEMENT_STATUS.COMPLETED.name());
+                settlement.update("sys");
+                settlementMapper.updateById(settlement);
+            } else if ("FAIL".equals(dStatus)){
+                settlement.setStatus(Constants.SETTLEMENT_STATUS.FAILED.name());
+                settlement.update("sys");
+                settlementMapper.updateById(settlement);
+            }
+        }
+    }
+
     public void doSettlement(){//弃用
         //结算完成收货的订单
         List<Order> ls = orderMapper.getOrderForSettlement();
diff --git a/src/main/resources/mapper/payment/OrderItemSalesMapper.xml b/src/main/resources/mapper/payment/OrderItemSalesMapper.xml
index 6b0d827..1cabdc5 100644
--- a/src/main/resources/mapper/payment/OrderItemSalesMapper.xml
+++ b/src/main/resources/mapper/payment/OrderItemSalesMapper.xml
@@ -106,17 +106,17 @@
         </if>
 
         <if test="condition.orderStartDate != null">
-            AND oi.create_time &gt;= #{condition.createStartDate}
+            AND oi.create_time &gt;= #{condition.orderStartDate}
         </if>
         <if test="condition.orderEndDate != null">
-            AND oi.create_time &lt;= #{condition.createEndDate}
+            AND oi.create_time &lt;= #{condition.orderEndDate}
         </if>
 
         <if test="condition.salesStartDate != null">
-            AND si.create_time &gt;= #{condition.createStartDate}
+            AND si.create_time &gt;= #{condition.salesStartDate}
         </if>
         <if test="condition.salesEndDate != null">
-            AND si.create_time &lt;= #{condition.createEndDate}
+            AND si.create_time &lt;= #{condition.salesEndDate}
         </if>
 
         <if test="condition.status != null and condition.status != ''">
diff --git a/src/main/resources/script/db.sql b/src/main/resources/script/db.sql
index 7023286..4f84f97 100644
--- a/src/main/resources/script/db.sql
+++ b/src/main/resources/script/db.sql
@@ -104,3 +104,9 @@
 INSERT INTO t_code_value(ID,TYPE_CODE,VALUE,LABEL,DESCRIPTION,SEQ,STATUS) VALUES ('CHECK_AUDIT_STATUS_REJECTED','CHECK_AUDIT_STATUS','REJECTED','已拒绝','已拒绝',2,'A');
 
 
+==================================================20240826
+delete from t_code_value where type_code = 'SETTLEMENT_STATUS';
+INSERT INTO t_code_value(ID,TYPE_CODE,VALUE,LABEL,DESCRIPTION,SEQ,STATUS) VALUES ('SETTLEMENT_STATUS_PENDING','SETTLEMENT_STATUS','PENDING','待结算','待结算',1,'A');
+INSERT INTO t_code_value(ID,TYPE_CODE,VALUE,LABEL,DESCRIPTION,SEQ,STATUS) VALUES ('SETTLEMENT_STATUS_PROCESSING','SETTLEMENT_STATUS','PROCESSING','结算中','结算中',2,'A');
+INSERT INTO t_code_value(ID,TYPE_CODE,VALUE,LABEL,DESCRIPTION,SEQ,STATUS) VALUES ('SETTLEMENT_STATUS_FAILED','SETTLEMENT_STATUS','FAILED','结算失败','结算失败',3,'A');
+INSERT INTO t_code_value(ID,TYPE_CODE,VALUE,LABEL,DESCRIPTION,SEQ,STATUS) VALUES ('SETTLEMENT_STATUS_COMPLETED','SETTLEMENT_STATUS','COMPLETED','结算成功','结算成功',4,'A');
\ No newline at end of file

--
Gitblit v1.9.3