From 617cac9aab814b33a4a0947d7222eae1098028ca Mon Sep 17 00:00:00 2001
From: cloudroam <cloudroam>
Date: 星期一, 28 十月 2024 16:33:52 +0800
Subject: [PATCH] Merge branch 'master-v4' of http://47.96.225.205:8888/r/flowerbackend-v2 into master-v4

---
 src/main/java/com/mzl/flower/service/impl/wallet/WalletServiceImpl.java               |  162 ++++++++++--
 src/main/java/com/mzl/flower/web/v2/wallet/WalletDeductController.java                |   53 ++++
 src/main/java/com/mzl/flower/service/impl/wallet/WalletWithdrawRecordServiceImpl.java |    8 
 src/main/java/com/mzl/flower/service/impl/report/OrderReportServiceImpl.java          |    2 
 src/main/java/com/mzl/flower/mapper/wallet/WalletBillRecordMapper.java                |    5 
 src/main/resources/mapper/wallet/WalletMapper.xml                                     |   24 +
 src/main/java/com/mzl/flower/mapper/wallet/WalletReduceMapper.java                    |   33 ++
 src/main/resources/mapper/wallet/WalletBillRecordMapper.xml                           |   15 +
 src/main/resources/mapper/wallet/WalletWithdrawRecordMapper.xml                       |    4 
 src/main/resources/mapper/wallet/WalletReduceMapper.xml                               |   71 +++++
 src/main/java/com/mzl/flower/web/v2/wallet/WalletBillRecordController.java            |   41 +++
 src/main/java/com/mzl/flower/service/wallet/WalletBillRecordService.java              |    5 
 src/main/java/com/mzl/flower/dto/request/wallet/QueryWalletAmountDTO.java             |   13 +
 src/main/java/com/mzl/flower/service/impl/wallet/WalletReduceServiceImpl.java         |   45 +++
 src/main/java/com/mzl/flower/dto/response/wallet/WalletReduceVO.java                  |   29 ++
 src/main/java/com/mzl/flower/service/wallet/WalletService.java                        |   41 +++
 src/main/java/com/mzl/flower/dto/request/wallet/QueryWalletBillDTO.java               |   30 ++
 src/main/java/com/mzl/flower/constant/LockConstants.java                              |    4 
 src/main/java/com/mzl/flower/mapper/wallet/WalletMapper.java                          |   12 
 src/main/java/com/mzl/flower/dto/request/wallet/QueryWalletReduceDTO.java             |   33 ++
 src/main/resources/mapper/report/OrderReportMapper.xml                                |    2 
 src/main/java/com/mzl/flower/web/v2/wallet/WalletController.java                      |   13 
 src/main/java/com/mzl/flower/dto/response/wallet/WalletBillRecordVO.java              |   39 ++
 src/main/java/com/mzl/flower/service/impl/wallet/WalletBillRecordServiceImpl.java     |   15 +
 src/main/java/com/mzl/flower/service/wallet/WalletReduceService.java                  |   38 ++
 25 files changed, 696 insertions(+), 41 deletions(-)

diff --git a/src/main/java/com/mzl/flower/constant/LockConstants.java b/src/main/java/com/mzl/flower/constant/LockConstants.java
index d8f300c..d1dbbeb 100644
--- a/src/main/java/com/mzl/flower/constant/LockConstants.java
+++ b/src/main/java/com/mzl/flower/constant/LockConstants.java
@@ -3,6 +3,8 @@
 public class LockConstants {
 
     // 钱包ID锁
-    public static final String WALLET_ID_KEY = "WALLET_ID_KEY:%s";
+    public static final String WALLET_ID_KEY = "com:mzl:flower:constant:WALLET_ID_KEY:%s";
+
+    public static final String WALLET_SUPPLIER_ID_KEY = "com:mzl:flower:constant:WALLET_SUPPLIER_ID_KEY:%s";
 
 }
diff --git a/src/main/java/com/mzl/flower/dto/request/wallet/QueryWalletAmountDTO.java b/src/main/java/com/mzl/flower/dto/request/wallet/QueryWalletAmountDTO.java
new file mode 100644
index 0000000..fa3ee9b
--- /dev/null
+++ b/src/main/java/com/mzl/flower/dto/request/wallet/QueryWalletAmountDTO.java
@@ -0,0 +1,13 @@
+package com.mzl.flower.dto.request.wallet;
+
+import lombok.Data;
+
+@Data
+public class QueryWalletAmountDTO {
+
+    private String userId;
+
+    private Long SupplierId;
+
+    private String startTime;
+}
diff --git a/src/main/java/com/mzl/flower/dto/request/wallet/QueryWalletBillDTO.java b/src/main/java/com/mzl/flower/dto/request/wallet/QueryWalletBillDTO.java
new file mode 100644
index 0000000..b4cb47e
--- /dev/null
+++ b/src/main/java/com/mzl/flower/dto/request/wallet/QueryWalletBillDTO.java
@@ -0,0 +1,30 @@
+package com.mzl.flower.dto.request.wallet;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import java.time.LocalDate;
+
+@Data
+public class QueryWalletBillDTO {
+
+    @ApiModelProperty(value = "供应商Id")
+    private Long supplierId;
+//
+//    @ApiModelProperty(value = "供应商名称")
+//    private String supplierName;
+
+    @ApiModelProperty(value = "开始日期")
+    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
+    @DateTimeFormat(pattern = "yyyy-MM-dd")
+    private LocalDate startDate;
+
+    @ApiModelProperty(value = "结束日期")
+    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
+    @DateTimeFormat(pattern = "yyyy-MM-dd")
+    private LocalDate endDate;
+
+
+}
diff --git a/src/main/java/com/mzl/flower/dto/request/wallet/QueryWalletReduceDTO.java b/src/main/java/com/mzl/flower/dto/request/wallet/QueryWalletReduceDTO.java
new file mode 100644
index 0000000..e8b1065
--- /dev/null
+++ b/src/main/java/com/mzl/flower/dto/request/wallet/QueryWalletReduceDTO.java
@@ -0,0 +1,33 @@
+package com.mzl.flower.dto.request.wallet;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import java.time.LocalDate;
+
+@Data
+public class QueryWalletReduceDTO {
+
+    @ApiModelProperty(value = "供应商Id")
+    private Long supplierId;
+//
+//    @ApiModelProperty(value = "供应商名称")
+//    private String supplierName;
+
+    @ApiModelProperty(value = "审核日期-开始日期")
+    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
+    @DateTimeFormat(pattern = "yyyy-MM-dd")
+    private LocalDate startDate;
+
+    @ApiModelProperty(value = "审核日期-结束日期")
+    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
+    @DateTimeFormat(pattern = "yyyy-MM-dd")
+    private LocalDate endDate;
+
+    @ApiModelProperty(value = "钱包上线时间",hidden = true)
+    private String walletOnlineTime;
+
+
+}
diff --git a/src/main/java/com/mzl/flower/dto/response/wallet/WalletBillRecordVO.java b/src/main/java/com/mzl/flower/dto/response/wallet/WalletBillRecordVO.java
index 18ed3be..5ed86d7 100644
--- a/src/main/java/com/mzl/flower/dto/response/wallet/WalletBillRecordVO.java
+++ b/src/main/java/com/mzl/flower/dto/response/wallet/WalletBillRecordVO.java
@@ -17,6 +17,25 @@
 
     @ApiModelProperty(value = "供应商名称")
     private String supplierName;
+    @ApiModelProperty(value = "钱包Id")
+    private Long walletId;
+
+    @ApiModelProperty(value = "账单变动类型(提现,结算)")
+    @DictTrans(target = "typeName",codeType = "BILL_CHANGE_TYPE")
+    private String type;
+
+    @ApiModelProperty(value = "类型明细")
+    private String typeDetail;
+
+    @ApiModelProperty(value = "结算单id")
+    private String settlementId;
+
+    @ApiModelProperty(value = "转账Id")
+    private String transferId;
+
+    @ApiModelProperty(value = "变动方式(增加、减少")
+    @DictTrans(target = "methodName",codeType = "BILL_CHANGE_METHOD")
+    private String method;
 
     @ApiModelProperty(value = "原金额")
     private BigDecimal originalAmount;
@@ -27,12 +46,6 @@
     @ApiModelProperty(value = "余额")
     private BigDecimal balance;
 
-    @ApiModelProperty(value = "账单变动类型(提现,结算)")
-    @DictTrans(target = "withdrawStateStr", codeType = "BILL_CHANGE_TYPE")
-    private String type;
-
-    private String typeStr;
-
     @ApiModelProperty("提交时间")
     private LocalDateTime createTime;
 
@@ -41,5 +54,19 @@
 
     @ApiModelProperty(value = "备注")
     private String remark;
+    @ApiModelProperty(value = "转账明细id")
+    private String transferDetailId;
+
+    @ApiModelProperty(value = "转账状态")
+    private String transferState;
+
+    @ApiModelProperty(value = "openId")
+    private String openId;
+
+    @ApiModelProperty(value = "账单变动类型(提现,结算)")
+    private String typeName;
+
+    @ApiModelProperty(value = "变动方式(增加、减少")
+    private String methodName;
 
 }
diff --git a/src/main/java/com/mzl/flower/dto/response/wallet/WalletReduceVO.java b/src/main/java/com/mzl/flower/dto/response/wallet/WalletReduceVO.java
new file mode 100644
index 0000000..e6e59d9
--- /dev/null
+++ b/src/main/java/com/mzl/flower/dto/response/wallet/WalletReduceVO.java
@@ -0,0 +1,29 @@
+package com.mzl.flower.dto.response.wallet;
+
+import com.mzl.flower.base.AbstractTransDTO;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.math.BigDecimal;
+
+@Data
+public class WalletReduceVO extends AbstractTransDTO {
+
+    // 根据上面的列写属性
+    @ApiModelProperty(value = "原主键")
+    private String id;
+    @ApiModelProperty(value = "费用")
+    private BigDecimal fee;
+    @ApiModelProperty(value = "审核时间")
+    private String auditTime;
+    @ApiModelProperty(value = "扣款类型")
+    private String type;
+    @ApiModelProperty(value = "扣款类型名称")
+    private String typeName;
+    @ApiModelProperty(value = "订单编号")
+    private String orderNo;
+    @ApiModelProperty(value = "供应商ID")
+    private Long supplierId;
+
+
+}
diff --git a/src/main/java/com/mzl/flower/mapper/wallet/WalletBillRecordMapper.java b/src/main/java/com/mzl/flower/mapper/wallet/WalletBillRecordMapper.java
index 2f3b9bc..a9e005c 100644
--- a/src/main/java/com/mzl/flower/mapper/wallet/WalletBillRecordMapper.java
+++ b/src/main/java/com/mzl/flower/mapper/wallet/WalletBillRecordMapper.java
@@ -1,6 +1,10 @@
 package com.mzl.flower.mapper.wallet;
 
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.mzl.flower.dto.request.wallet.QueryWalletBillDTO;
+import com.mzl.flower.dto.response.wallet.WalletBillRecordVO;
+import com.mzl.flower.dto.response.wallet.WalletWithdrawRecordVO;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.mzl.flower.dto.request.wallet.QueryWalletBillRecordDTO;
 import com.mzl.flower.dto.response.wallet.WalletBillRecordVO;
 import com.mzl.flower.entity.wallet.WalletBillRecordDO;
@@ -24,5 +28,6 @@
     List<WalletBillRecordVO> queryPage(@Param("dto") QueryWalletBillRecordDTO queryWalletBillRecordDTO, Page page);
 
     List<WalletBillRecordVO> queryWalletBillRecordList(@Param("dto") QueryWalletBillRecordDTO queryWalletBillRecordDTO);
+    List<WalletBillRecordVO> getPage(Page page, @Param("dto") QueryWalletBillDTO dto);
 }
 
diff --git a/src/main/java/com/mzl/flower/mapper/wallet/WalletMapper.java b/src/main/java/com/mzl/flower/mapper/wallet/WalletMapper.java
index 0fa6054..51264a3 100644
--- a/src/main/java/com/mzl/flower/mapper/wallet/WalletMapper.java
+++ b/src/main/java/com/mzl/flower/mapper/wallet/WalletMapper.java
@@ -1,9 +1,13 @@
 package com.mzl.flower.mapper.wallet;
 
+import com.mzl.flower.dto.request.wallet.QueryWalletAmountDTO;
 import com.mzl.flower.entity.wallet.WalletDO;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Param;
 import org.apache.ibatis.annotations.Select;
 import org.springframework.stereotype.Repository;
+
+import java.math.BigDecimal;
 
 /**
  * <p>
@@ -19,4 +23,12 @@
 
     @Select("select * from t_wallet where supplier_id =#{supplierId}")
     public WalletDO getTotalAmount(String supplierId);
+
+    BigDecimal getWaittingSettlementAmount(@Param("dto") WalletDO walletDO);
+
+    @Select("select label from t_code_value where type_code='WALLET_ONLINE_TIME' and value='online'")
+    String selectWalletOnlineTime();
+
+    BigDecimal getSupplierTotalTransactionAmount(@Param("dto") QueryWalletAmountDTO queryWalletAmountDTO);
+
 }
diff --git a/src/main/java/com/mzl/flower/mapper/wallet/WalletReduceMapper.java b/src/main/java/com/mzl/flower/mapper/wallet/WalletReduceMapper.java
new file mode 100644
index 0000000..0148a84
--- /dev/null
+++ b/src/main/java/com/mzl/flower/mapper/wallet/WalletReduceMapper.java
@@ -0,0 +1,33 @@
+package com.mzl.flower.mapper.wallet;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.mzl.flower.dto.request.wallet.QueryWalletAmountDTO;
+import com.mzl.flower.dto.request.wallet.QueryWalletReduceDTO;
+import com.mzl.flower.dto.response.wallet.WalletReduceVO;
+import com.mzl.flower.entity.wallet.WalletDO;
+import org.apache.ibatis.annotations.Param;
+import org.apache.ibatis.annotations.Select;
+import org.springframework.stereotype.Repository;
+
+import java.math.BigDecimal;
+import java.util.List;
+
+/**
+ * <p>
+ *  Mapper 接口
+ * </p>
+ *
+ * @author @TaoJie
+ * @since 2024-10-22
+ */
+@Repository
+public interface WalletReduceMapper extends BaseMapper<WalletDO> {
+
+
+    List<WalletReduceVO> getPage(Page page,@Param("dto") QueryWalletReduceDTO dto);
+
+    BigDecimal getCheckReduceAmount(@Param("dto") QueryWalletAmountDTO queryWalletAmountDTO);
+
+    BigDecimal getSaleReduceAmount(@Param("dto")QueryWalletAmountDTO queryWalletAmountDTO);
+}
diff --git a/src/main/java/com/mzl/flower/service/impl/report/OrderReportServiceImpl.java b/src/main/java/com/mzl/flower/service/impl/report/OrderReportServiceImpl.java
index 9427397..d1756a9 100644
--- a/src/main/java/com/mzl/flower/service/impl/report/OrderReportServiceImpl.java
+++ b/src/main/java/com/mzl/flower/service/impl/report/OrderReportServiceImpl.java
@@ -347,7 +347,7 @@
     @Override
     public AppSupplierStatisticsVO getAppSupplierStatistics(QueryAppSupplierDTO dto) {
 
-        // TODO
+
 
         // 总成交:花农售卖全部的底价合计,
         // 本月成交:本月售卖的底价合计,
diff --git a/src/main/java/com/mzl/flower/service/impl/wallet/WalletBillRecordServiceImpl.java b/src/main/java/com/mzl/flower/service/impl/wallet/WalletBillRecordServiceImpl.java
index fab1396..a093b30 100644
--- a/src/main/java/com/mzl/flower/service/impl/wallet/WalletBillRecordServiceImpl.java
+++ b/src/main/java/com/mzl/flower/service/impl/wallet/WalletBillRecordServiceImpl.java
@@ -2,11 +2,14 @@
 
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.mzl.flower.constant.Constants;
 import com.mzl.flower.constant.LockConstants;
 import com.mzl.flower.dto.request.wallet.CreateWalletBillRecordDTO;
 import com.mzl.flower.dto.request.wallet.QueryWalletBillRecordDTO;
+import com.mzl.flower.dto.response.wallet.WalletBillRecordVO;
+import com.mzl.flower.dto.request.wallet.QueryWalletBillDTO;
 import com.mzl.flower.dto.response.wallet.WalletBillRecordVO;
 import com.mzl.flower.entity.payment.Transfer;
 import com.mzl.flower.entity.payment.TransferDetail;
@@ -35,6 +38,7 @@
 import java.util.ArrayList;
 import java.util.List;
 import java.util.concurrent.TimeUnit;
+import java.util.List;
 
 /**
  * <p>
@@ -94,7 +98,7 @@
                 walletBillRecordDO.update("sys");
                 walletBillRecordMapper.updateById(walletBillRecordDO);
                 //更新钱包
-                WalletDO walletDO = walletService.getBySupplierId(walletBillRecordDO.getWalletId());
+                WalletDO walletDO = walletService.getOrCreateBySupplierId(walletBillRecordDO.getWalletId());
                 RLock lock = redissonClient.getLock(String.format(LockConstants.WALLET_ID_KEY, walletDO.getId()));
                 try {
                     if (lock.tryLock(10, 30, TimeUnit.SECONDS)) {
@@ -124,7 +128,7 @@
                 walletBillRecordDO.setTransferState(Constants.SETTLEMENT_STATUS.FAILED.name());
                 walletBillRecordDO.update("sys");
                 walletBillRecordMapper.updateById(walletBillRecordDO);
-                WalletDO walletDO = walletService.getBySupplierId(walletBillRecordDO.getWalletId());
+                WalletDO walletDO = walletService.getOrCreateBySupplierId(walletBillRecordDO.getWalletId());
                 RLock lock = redissonClient.getLock(String.format(LockConstants.WALLET_ID_KEY, walletDO.getId()));
                 try {
                     if (lock.tryLock(10, 30, TimeUnit.SECONDS)) {
@@ -192,4 +196,11 @@
             log.error(e.getMessage(), e);
         }
     }
+
+    @Override
+    public Page<WalletBillRecordVO> getPage(Page page, QueryWalletBillDTO dto) {
+        List<WalletBillRecordVO> list = walletBillRecordMapper.getPage(page,dto);
+        page.setRecords(list);
+        return page;
+    }
 }
diff --git a/src/main/java/com/mzl/flower/service/impl/wallet/WalletReduceServiceImpl.java b/src/main/java/com/mzl/flower/service/impl/wallet/WalletReduceServiceImpl.java
new file mode 100644
index 0000000..eefd7a7
--- /dev/null
+++ b/src/main/java/com/mzl/flower/service/impl/wallet/WalletReduceServiceImpl.java
@@ -0,0 +1,45 @@
+package com.mzl.flower.service.impl.wallet;
+
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.mzl.flower.dto.request.wallet.QueryWalletAmountDTO;
+import com.mzl.flower.dto.request.wallet.QueryWalletReduceDTO;
+import com.mzl.flower.dto.response.wallet.WalletReduceVO;
+import com.mzl.flower.dto.response.wallet.WalletWithdrawRecordVO;
+import com.mzl.flower.mapper.wallet.WalletReduceMapper;
+import com.mzl.flower.service.wallet.WalletReduceService;
+import com.mzl.flower.service.wallet.WalletService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.math.BigDecimal;
+import java.util.List;
+
+@Service
+public class WalletReduceServiceImpl implements WalletReduceService {
+
+    @Autowired
+    private WalletReduceMapper walletReduceMapper;
+
+    @Autowired
+    private WalletService walletService;
+
+    @Override
+    public Page<WalletReduceVO> getPage(Page page, QueryWalletReduceDTO dto) {
+        // 设置查询的时间为钱包的上线时间
+        dto.setWalletOnlineTime(walletService.getWalletOnLineTime());
+        List<WalletReduceVO> list = walletReduceMapper.getPage(page,dto);
+        page.setRecords(list);
+        return page;
+    }
+
+    @Override
+    public BigDecimal getCheckReduceAmount(QueryWalletAmountDTO queryWalletAmountDTO) {
+
+        return walletReduceMapper.getCheckReduceAmount(queryWalletAmountDTO);
+    }
+
+    @Override
+    public BigDecimal getSaleReduceAmount(QueryWalletAmountDTO queryWalletAmountDTO) {
+        return walletReduceMapper.getSaleReduceAmount(queryWalletAmountDTO);
+    }
+}
diff --git a/src/main/java/com/mzl/flower/service/impl/wallet/WalletServiceImpl.java b/src/main/java/com/mzl/flower/service/impl/wallet/WalletServiceImpl.java
index 0a5a7d9..45291a2 100644
--- a/src/main/java/com/mzl/flower/service/impl/wallet/WalletServiceImpl.java
+++ b/src/main/java/com/mzl/flower/service/impl/wallet/WalletServiceImpl.java
@@ -2,20 +2,28 @@
 
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.mzl.flower.config.security.SecurityUtils;
+import com.mzl.flower.constant.LockConstants;
+import com.mzl.flower.dto.request.wallet.QueryWalletAmountDTO;
 import com.mzl.flower.dto.response.supplier.SupplierDTO;
-import com.mzl.flower.entity.coupon.CouponTemplateDO;
 import com.mzl.flower.entity.wallet.WalletDO;
 import com.mzl.flower.enums.TrueOrFalseEnum;
 import com.mzl.flower.mapper.wallet.WalletMapper;
 import com.mzl.flower.service.supplier.SupplierService;
+import com.mzl.flower.service.wallet.WalletReduceService;
 import com.mzl.flower.service.wallet.WalletService;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import org.apache.commons.collections4.CollectionUtils;
+import org.redisson.api.RLock;
+import org.redisson.api.RedissonClient;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
 import java.math.BigDecimal;
+import java.text.SimpleDateFormat;
+import java.util.Date;
 import java.util.List;
+import java.util.concurrent.TimeUnit;
+import java.util.regex.Pattern;
 
 /**
  * <p>
@@ -31,6 +39,29 @@
     @Autowired
     private SupplierService supplierService;
 
+    @Autowired
+    private WalletReduceService walletReduceService;
+
+    private static final String DATE_TIME_PATTERN = "yyyy-MM-dd HH:mm:ss";
+    private static final Pattern dateTimeRegex = Pattern.compile("^\\d{4}-\\d{2}-\\d{2} \\d{2}:\\d{2}:\\d{2}$");
+
+    @Autowired
+    RedissonClient redissonClient;
+
+    @Override
+    public String getWalletOnLineTime() {
+        String walletOnlineTime =baseMapper.selectWalletOnlineTime();
+        // 这里需要判断walletOnlineTime是不是一个正确的yyyy-mm-dd hh24:mi:ss的时间
+        String startTime;
+        if (isValidDateTime(walletOnlineTime)) {
+            startTime = walletOnlineTime;
+        } else {
+            // 如果 walletOnlineTime 无效,则使用当前时间的字符串
+            startTime = getCurrentDateTime();
+        }
+        return startTime;
+    }
+
     @Override
     public WalletDO getCurrentSupplier() {
         final SupplierDTO currentSupplier = supplierService.getCurrentSupplier();
@@ -38,42 +69,121 @@
 
             // 查询的条件的deleted的字段得为0
             // 下面的单独封装成一个方法
-            WalletDO walletDO = getBySupplierId(currentSupplier.getId());
-
-            if(null==walletDO){
-                // 先创建一个钱包
-                walletDO=new WalletDO();
-                walletDO.setUserId(SecurityUtils.getUserId());
-                walletDO.setSupplierId(currentSupplier.getId());
-                walletDO.setTotalAmount(BigDecimal.ZERO);
-                walletDO.setWithdrawableAmount(BigDecimal.ZERO);
-                //把所有涉及BigDecimal的金额都设置为0
-                walletDO.setWithdrawingAmount(BigDecimal.ZERO);
-                walletDO.setWithdrawnAmount(BigDecimal.ZERO);
-                walletDO.setSettlingAmount(BigDecimal.ZERO);
-                walletDO.setTotalDeduction(BigDecimal.ZERO);
-                walletDO.setTotalTransactionAmount(BigDecimal.ZERO);
-                walletDO.setSettlingAmount(BigDecimal.ZERO);
-                walletDO.create(SecurityUtils.getUserId());
-                baseMapper.insert(walletDO);
-                // 将再次查询的结果返回
-                walletDO=getBySupplierId(currentSupplier.getId());
-            }
-
+            WalletDO walletDO = getOrCreateBySupplierId(currentSupplier.getId());
 
         return walletDO;
     }
 
     @Override
-    public WalletDO getBySupplierId(Long supplierId) {
-        // 不用getOne,用获取list的第一个元素
+    public WalletDO getOrCreateBySupplierId(Long supplierId) {
+        WalletDO walletDO=getBySupplierId(supplierId);
+        if(null==walletDO){
+            RLock lock = redissonClient.getLock(String.format(LockConstants.WALLET_SUPPLIER_ID_KEY, supplierId));
+            try {
+                if (lock.tryLock(10, 30, TimeUnit.SECONDS)) {
+                    try {
+                        walletDO=getBySupplierId(supplierId);
+                        if(null!=walletDO) return walletDO;
+                        // 创建一个钱包
+                        walletDO =new WalletDO();
+                        walletDO.setUserId(SecurityUtils.getUserId());
+                        walletDO.setSupplierId(supplierId);
+                        walletDO.setTotalAmount(BigDecimal.ZERO);
+                        walletDO.setWithdrawableAmount(BigDecimal.ZERO);
+                        //把所有涉及BigDecimal的金额都设置为0
+                        walletDO.setWithdrawingAmount(BigDecimal.ZERO);
+                        walletDO.setWithdrawnAmount(BigDecimal.ZERO);
+                        walletDO.setSettlingAmount(BigDecimal.ZERO);
+                        walletDO.setTotalDeduction(BigDecimal.ZERO);
+                        walletDO.setTotalTransactionAmount(BigDecimal.ZERO);
+                        walletDO.setSettlingAmount(BigDecimal.ZERO);
+                        walletDO.create(SecurityUtils.getUserId());
+                        baseMapper.insert(walletDO);
+                        // 将再次查询的结果返回
+                        walletDO= getBySupplierId(supplierId);
+                        return walletDO;
 
+                    } finally {
+                        lock.unlock();
+                    }
+                }
+            } catch (InterruptedException e) {
+                throw new RuntimeException(e);
+            }
+
+            return null;
+        }else{
+            return walletDO;
+        }
+    }
+
+    @Override
+    public WalletDO getBySupplierId(Long supplierId) {
         List<WalletDO> walletDOS = baseMapper.selectList(new LambdaQueryWrapper<WalletDO>()
                 .eq(WalletDO::getDeleted, TrueOrFalseEnum.FALSE.isFlag())
                 .eq(WalletDO::getSupplierId, supplierId));
         if(!CollectionUtils.isEmpty(walletDOS)){
             return walletDOS.get(0);
-        }else return null;
+        }
+        return null;
     }
 
+    @Override
+    public BigDecimal getWaittingSettlementAmount(WalletDO walletDO) {
+
+        return baseMapper.getWaittingSettlementAmount(walletDO);
+    }
+
+    @Override
+    public BigDecimal getSupplierTotalTransactionAmount(WalletDO walletDO) {
+
+        QueryWalletAmountDTO queryWalletAmountDTO=new QueryWalletAmountDTO();
+        queryWalletAmountDTO.setSupplierId(walletDO.getSupplierId());
+        queryWalletAmountDTO.setStartTime(getWalletOnLineTime());
+        queryWalletAmountDTO.setUserId(walletDO.getUserId());
+
+        BigDecimal totalTransactionAmount=baseMapper.getSupplierTotalTransactionAmount(queryWalletAmountDTO);
+
+        return totalTransactionAmount;
+    }
+
+    @Override
+    public BigDecimal getSupplierDeductAmount(WalletDO walletDO) {
+        QueryWalletAmountDTO queryWalletAmountDTO=new QueryWalletAmountDTO();
+        queryWalletAmountDTO.setSupplierId(walletDO.getSupplierId());
+        queryWalletAmountDTO.setStartTime(getWalletOnLineTime());
+        queryWalletAmountDTO.setUserId(walletDO.getUserId());
+
+        // 质检扣款
+        BigDecimal checkDeduceAmount = walletReduceService.getCheckReduceAmount(queryWalletAmountDTO);
+        checkDeduceAmount = checkDeduceAmount != null ? checkDeduceAmount : BigDecimal.ZERO;
+        // 售后扣款
+        BigDecimal saleDeduceAmount = walletReduceService.getSaleReduceAmount(queryWalletAmountDTO);
+        saleDeduceAmount = saleDeduceAmount != null ? saleDeduceAmount : BigDecimal.ZERO;
+
+        // 总扣款
+        BigDecimal deduceAmount = checkDeduceAmount.add(saleDeduceAmount);
+
+        return deduceAmount;
+    }
+
+
+    public static boolean isValidDateTime(String dateTime) {
+        if (dateTime == null || !dateTimeRegex.matcher(dateTime).matches()) {
+            return false;
+        }
+        SimpleDateFormat sdf = new SimpleDateFormat(DATE_TIME_PATTERN);
+        sdf.setLenient(false);
+        try {
+            sdf.parse(dateTime);
+            return true;
+        } catch (Exception e) {
+            return false;
+        }
+    }
+
+    public static String getCurrentDateTime() {
+        SimpleDateFormat sdf = new SimpleDateFormat(DATE_TIME_PATTERN);
+        return sdf.format(new Date());
+    }
 }
diff --git a/src/main/java/com/mzl/flower/service/impl/wallet/WalletWithdrawRecordServiceImpl.java b/src/main/java/com/mzl/flower/service/impl/wallet/WalletWithdrawRecordServiceImpl.java
index 9a6fbbe..3d02608 100644
--- a/src/main/java/com/mzl/flower/service/impl/wallet/WalletWithdrawRecordServiceImpl.java
+++ b/src/main/java/com/mzl/flower/service/impl/wallet/WalletWithdrawRecordServiceImpl.java
@@ -117,6 +117,12 @@
 
                     // 1.新增一条余额提现记录
                     WalletWithdrawRecordDO withdrawRecordDO = new WalletWithdrawRecordDO();
+                    //原金额
+                    withdrawRecordDO.setOriginalAmount(walletDO.getWithdrawableAmount());
+                    // 变动金额
+                    withdrawRecordDO.setChangeAmount(dto.getAmount());
+                    // 余额
+                    withdrawRecordDO.setBalance(walletDO.getWithdrawableAmount().subtract(dto.getAmount()));
                     withdrawRecordDO.setAmount(dto.getAmount());
                     withdrawRecordDO.setSupplierId(supplierDTO.getId());
                     withdrawRecordDO.setWithdrawState(Constants.WALLET_WITHDRAW_STATE.WAITING.name());
@@ -246,7 +252,7 @@
             //更新钱包
             Supplier s = supplierMapper.selectById(withdrawRecordDO.getSupplierId());
 
-            WalletDO walletDO = walletService.getBySupplierId(s.getId());
+            WalletDO walletDO = walletService.getOrCreateBySupplierId(s.getId());
             RLock lock = redissonClient.getLock(String.format(LockConstants.WALLET_ID_KEY, walletDO.getId()));
             try {
                 if (lock.tryLock(10, 30, TimeUnit.SECONDS)) {
diff --git a/src/main/java/com/mzl/flower/service/wallet/WalletBillRecordService.java b/src/main/java/com/mzl/flower/service/wallet/WalletBillRecordService.java
index b2d6e0c..e47ef0b 100644
--- a/src/main/java/com/mzl/flower/service/wallet/WalletBillRecordService.java
+++ b/src/main/java/com/mzl/flower/service/wallet/WalletBillRecordService.java
@@ -4,6 +4,9 @@
 import com.mzl.flower.dto.request.wallet.CreateWalletBillRecordDTO;
 import com.mzl.flower.dto.request.wallet.QueryWalletBillRecordDTO;
 import com.mzl.flower.dto.response.wallet.WalletBillRecordVO;
+import com.mzl.flower.dto.request.wallet.QueryWalletBillDTO;
+import com.mzl.flower.dto.response.wallet.WalletBillRecordVO;
+import com.mzl.flower.dto.response.wallet.WalletReduceVO;
 import com.mzl.flower.entity.wallet.WalletBillRecordDO;
 import com.baomidou.mybatisplus.extension.service.IService;
 
@@ -27,4 +30,6 @@
 
 
     void exportSupplierFinanceList(HttpServletResponse response, QueryWalletBillRecordDTO dto);
+
+    Page<WalletBillRecordVO> getPage(Page page, QueryWalletBillDTO dto);
 }
diff --git a/src/main/java/com/mzl/flower/service/wallet/WalletReduceService.java b/src/main/java/com/mzl/flower/service/wallet/WalletReduceService.java
new file mode 100644
index 0000000..a1c9b8f
--- /dev/null
+++ b/src/main/java/com/mzl/flower/service/wallet/WalletReduceService.java
@@ -0,0 +1,38 @@
+package com.mzl.flower.service.wallet;
+
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.mzl.flower.dto.request.wallet.QueryWalletAmountDTO;
+import com.mzl.flower.dto.request.wallet.QueryWalletReduceDTO;
+import com.mzl.flower.dto.response.wallet.WalletReduceVO;
+import com.mzl.flower.entity.wallet.WalletDO;
+
+import java.math.BigDecimal;
+
+/**
+ * <p>
+ *  服务类
+ * </p>
+ *
+ * @author @TaoJie
+ * @since 2024-10-22
+ */
+public interface WalletReduceService {
+
+
+    Page<WalletReduceVO> getPage(Page page, QueryWalletReduceDTO dto);
+
+    /**
+     * 获取质检扣款钱
+     * @param queryWalletAmountDTO
+     * @return
+     */
+    BigDecimal getCheckReduceAmount(QueryWalletAmountDTO queryWalletAmountDTO);
+
+    /**
+     * 获取售后质检扣款钱
+     * @param queryWalletAmountDTO
+     * @return
+     */
+    BigDecimal getSaleReduceAmount(QueryWalletAmountDTO queryWalletAmountDTO);
+}
diff --git a/src/main/java/com/mzl/flower/service/wallet/WalletService.java b/src/main/java/com/mzl/flower/service/wallet/WalletService.java
index 1c6a76e..79716d3 100644
--- a/src/main/java/com/mzl/flower/service/wallet/WalletService.java
+++ b/src/main/java/com/mzl/flower/service/wallet/WalletService.java
@@ -3,6 +3,8 @@
 import com.mzl.flower.entity.wallet.WalletDO;
 import com.baomidou.mybatisplus.extension.service.IService;
 
+import java.math.BigDecimal;
+
 /**
  * <p>
  *  服务类
@@ -13,8 +15,47 @@
  */
 public interface WalletService extends IService<WalletDO> {
 
+    /**
+     * 获取钱包的上线时间
+     * @return
+     */
+    String getWalletOnLineTime();
+
+    /**
+     * 获取当前登录供应商的钱包信息
+     * @return 钱包信息
+     */
     WalletDO getCurrentSupplier();
 
+    /**
+     * 先尝试获取,如果不存在则创建。
+     * @param supplierId 供应商ID
+     * @return 钱包信息
+     */
+    WalletDO getOrCreateBySupplierId(Long supplierId);
 
+
+    /**
+     * 根据供应商的ID获取钱包信息
+     * @param supplierId 供应商ID
+     * @return 钱包信息
+     */
     WalletDO getBySupplierId(Long supplierId);
+
+    BigDecimal getWaittingSettlementAmount(WalletDO walletDO);
+
+    /**
+     * 获取供应商总交易额
+     * @param walletDO
+     * @return
+     */
+    BigDecimal getSupplierTotalTransactionAmount(WalletDO walletDO);
+
+    /**
+     * 获取供应商总扣款额度
+     * @param walletDO
+     * @return
+     */
+    BigDecimal getSupplierDeductAmount(WalletDO walletDO);
+
 }
diff --git a/src/main/java/com/mzl/flower/web/v2/wallet/WalletBillRecordController.java b/src/main/java/com/mzl/flower/web/v2/wallet/WalletBillRecordController.java
index 5a2d202..2cc4db2 100644
--- a/src/main/java/com/mzl/flower/web/v2/wallet/WalletBillRecordController.java
+++ b/src/main/java/com/mzl/flower/web/v2/wallet/WalletBillRecordController.java
@@ -10,8 +10,19 @@
 import com.mzl.flower.dto.request.wallet.QueryWalletWithdrawDTO;
 import com.mzl.flower.dto.response.wallet.WalletBillRecordVO;
 import com.mzl.flower.dto.response.wallet.WalletWithdrawRecordVO;
+
+import com.mzl.flower.config.exception.ValidationException;
+import com.mzl.flower.dto.request.wallet.CreateWalletBillRecordDTO;
+import com.mzl.flower.dto.request.wallet.QueryWalletBillDTO;
+import com.mzl.flower.dto.response.wallet.WalletBillRecordVO;
+import com.mzl.flower.entity.supplier.Supplier;
+import com.mzl.flower.entity.wallet.WalletDO;
+import com.mzl.flower.mapper.supplier.SupplierMapper;
+import com.mzl.flower.service.supplier.SupplierService;
 import com.mzl.flower.service.wallet.WalletBillRecordService;
 import io.swagger.annotations.ApiOperation;
+import com.mzl.flower.service.wallet.WalletReduceService;
+import com.mzl.flower.service.wallet.WalletService;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.http.ResponseEntity;
 import org.springframework.validation.annotation.Validated;
@@ -31,6 +42,24 @@
 
     @Autowired
     private WalletBillRecordService walletBillRecordService;
+    @Autowired
+    private SupplierService supplierService;
+
+    @PostMapping("")
+    public ResponseEntity<ReturnDataDTO> create(@Validated @RequestBody CreateWalletBillRecordDTO dto) {
+
+
+        return returnData(R.SUCCESS.getCode(), null);
+    }
+
+    @PutMapping("/{id}")
+    public ResponseEntity<ReturnDataDTO>  update(@PathVariable @Positive(message = "{id.positive}") Integer id) {
+        return returnData(R.SUCCESS.getCode(), null);
+    }
+
+    @DeleteMapping("/{id}")
+    public ResponseEntity<ReturnDataDTO>  delete(@PathVariable @Positive(message = "{id.positive}") Integer id) {
+        return returnData(R.SUCCESS.getCode(), null);
 
     @GetMapping("/list")
     @ApiOperation(value = "供应商财务-分页", httpMethod = "GET")
@@ -38,6 +67,18 @@
         return returnData(R.SUCCESS.getCode(), walletBillRecordService.queryPage(dto, page));
     }
 
+    @GetMapping("/{id}")
+    public WalletBillRecordDO get(@PathVariable(value = "id") @Positive(message = "{id.positive}") Integer id) {
+        return null;
+    }
+
+    @GetMapping("/page")
+    public ResponseEntity<ReturnDataDTO<Page<WalletBillRecordVO>>> page(Page page, QueryWalletBillDTO dto
+    ) {
+        // 根据当前用户获取供应商
+        dto.setSupplierId(supplierService.getCurrentSupplier().getId());
+        return returnData(R.SUCCESS.getCode(), walletBillRecordService.getPage(page,dto));
+
     @GetMapping({"/export"})
     @ApiOperation(value = "供应商财务导出")
     public void partnerExportSales(HttpServletResponse response, @Validated QueryWalletBillRecordDTO dto){
diff --git a/src/main/java/com/mzl/flower/web/v2/wallet/WalletController.java b/src/main/java/com/mzl/flower/web/v2/wallet/WalletController.java
index 7f44be0..208b7b0 100644
--- a/src/main/java/com/mzl/flower/web/v2/wallet/WalletController.java
+++ b/src/main/java/com/mzl/flower/web/v2/wallet/WalletController.java
@@ -19,6 +19,7 @@
 import com.mzl.flower.entity.wallet.WalletDO;
 
 import javax.validation.constraints.Positive;
+import java.math.BigDecimal;
 
 /**
 * @author @TaoJie
@@ -66,9 +67,19 @@
         if(null==currentSupplier){
             throw new ValidationException("供应商不能为空");
         }
+        final WalletDO walletDO = walletService.getCurrentSupplier();
+        if(null!=walletDO){
+            // 根据当前供应商获取待结算的钱
+            BigDecimal waittingSettlementAmount = walletService.getWaittingSettlementAmount(walletDO);
+            walletDO.setSettlingAmount(waittingSettlementAmount);
+            // 总交易额度
+            walletDO.setTotalTransactionAmount(walletService.getSupplierTotalTransactionAmount(walletDO));
+            // 总扣款数量
+            walletDO.setTotalDeduction(walletService.getSupplierDeductAmount(walletDO));
 
+        }
 
-        return returnData(R.SUCCESS.getCode(), walletService.getCurrentSupplier());
+        return returnData(R.SUCCESS.getCode(), walletDO);
     }
 
     @GetMapping("/page")
diff --git a/src/main/java/com/mzl/flower/web/v2/wallet/WalletDeductController.java b/src/main/java/com/mzl/flower/web/v2/wallet/WalletDeductController.java
new file mode 100644
index 0000000..ed4e5e0
--- /dev/null
+++ b/src/main/java/com/mzl/flower/web/v2/wallet/WalletDeductController.java
@@ -0,0 +1,53 @@
+package com.mzl.flower.web.v2.wallet;
+
+
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.mzl.flower.base.BaseController;
+import com.mzl.flower.base.R;
+import com.mzl.flower.base.ReturnDataDTO;
+import com.mzl.flower.dto.request.wallet.CreateWalletWithdrawRecordDTO;
+import com.mzl.flower.dto.request.wallet.QueryWalletReduceDTO;
+import com.mzl.flower.dto.request.wallet.QueryWalletWithdrawDTO;
+import com.mzl.flower.dto.request.wallet.WalletWithdrawRecordDTO;
+import com.mzl.flower.dto.response.wallet.WalletWithdrawRecordVO;
+import com.mzl.flower.entity.wallet.WalletWithdrawRecordDO;
+import com.mzl.flower.service.supplier.SupplierService;
+import com.mzl.flower.service.wallet.WalletBillRecordService;
+import com.mzl.flower.service.wallet.WalletReduceService;
+import com.mzl.flower.service.wallet.WalletService;
+import com.mzl.flower.service.wallet.WalletWithdrawRecordService;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import lombok.RequiredArgsConstructor;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.http.ResponseEntity;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.*;
+
+import javax.validation.constraints.Positive;
+
+/**
+* @author @TaoJie
+* @since 2024-10-22
+*/
+@Api(value = "扣款记录", tags = "扣款记录")
+@RestController
+@RequestMapping("/v2/wallet/reduce-record")
+@RequiredArgsConstructor
+public class WalletDeductController extends BaseController {
+
+
+    @Autowired
+    private WalletReduceService walletReduceService;
+
+    @Autowired
+    private SupplierService supplierService;
+    @GetMapping("/supplier/page")
+    public ResponseEntity<ReturnDataDTO<Page<WalletWithdrawRecordDO>>> page(Page page, QueryWalletReduceDTO dto
+    ) {
+        // 根据当前用户获取供应商
+        dto.setSupplierId(supplierService.getCurrentSupplier().getId());
+        return returnData(R.SUCCESS.getCode(), walletReduceService.getPage(page,dto));
+    }
+
+}
diff --git a/src/main/resources/mapper/report/OrderReportMapper.xml b/src/main/resources/mapper/report/OrderReportMapper.xml
index 783a239..b5f0454 100644
--- a/src/main/resources/mapper/report/OrderReportMapper.xml
+++ b/src/main/resources/mapper/report/OrderReportMapper.xml
@@ -611,7 +611,7 @@
 
     <!--供应商总价款-->
     <sql id="all_supplier_amount">
-        select IFNULL(sum(oi.supplier_price*oi.num),0) as supplier_amount from t_order_item oi where oi.supplier_id=287
+        select IFNULL(sum(oi.supplier_price*oi.num),0) as supplier_amount from t_order_item oi where oi.supplier_id=#{dto.supplierId}
     </sql>
     <!--本月成交:本月售卖的底价合计-->
     <sql id="cur_mon_supplier_amount">
diff --git a/src/main/resources/mapper/wallet/WalletBillRecordMapper.xml b/src/main/resources/mapper/wallet/WalletBillRecordMapper.xml
index a38744c..676d23e 100644
--- a/src/main/resources/mapper/wallet/WalletBillRecordMapper.xml
+++ b/src/main/resources/mapper/wallet/WalletBillRecordMapper.xml
@@ -22,6 +22,21 @@
         <result column="transfer_detail_id" property="transferDetailId" />
         <result column="open_id" property="openId" />
     </resultMap>
+    <select id="getPage" resultType="com.mzl.flower.dto.response.wallet.WalletBillRecordVO">
+        select *
+        from t_wallet_bill_record wbr
+        where wbr.DELETED=0
+        <if test="dto.supplierId != null and dto.supplierId != ''">
+            and wbr.supplier_id= #{dto.supplierId}
+        </if>
+        <if test="dto.startDate != null">
+            and DATE_FORMAT(wbr.create_time, '%Y-%m-%d') &gt;= #{dto.startDate}
+        </if>
+        <if test="dto.endDate != null">
+            and DATE_FORMAT(wbr.create_time, '%Y-%m-%d') &lt;= #{dto.endDate}
+        </if>
+
+    </select>
     <select id="queryPage" resultType="com.mzl.flower.dto.response.wallet.WalletBillRecordVO">
         select t.* ,s.name supplierName from t_wallet_bill_record t
         left join t_supplier_info s on t.supplier_id = s.id
diff --git a/src/main/resources/mapper/wallet/WalletMapper.xml b/src/main/resources/mapper/wallet/WalletMapper.xml
index 1e737b1..51d5ce4 100644
--- a/src/main/resources/mapper/wallet/WalletMapper.xml
+++ b/src/main/resources/mapper/wallet/WalletMapper.xml
@@ -22,5 +22,29 @@
         <result column="settled_amount" property="settledAmount" />
 
     </resultMap>
+    <select id="getWaittingSettlementAmount" resultType="java.math.BigDecimal">
+         <include refid="supplier_settlement_amount"></include>
+    </select>
+
+    <!--    总交易额-->
+    <select id="getSupplierTotalTransactionAmount" resultType="java.math.BigDecimal">
+        select IFNULL(sum(oi.supplier_price*oi.num),0) as cur_mon_supplier_amount
+        from t_order_item oi
+        left join t_order o
+        on oi.order_id = o.id
+        where oi.supplier_id = #{dto.supplierId}
+          and o.payment_time &gt; #{dto.startTime}
+    </select>
+
+
+    <!--    待结算-->
+    <sql id="supplier_settlement_amount">
+        SELECT IFNULL(sum(settlement_amount),0) AS settlement_amount
+        FROM t_order_settlement OS
+        WHERE OS.DELETED=0
+          AND OS.TYPE='supplier'
+          AND OS.status='PENDING'
+          AND USER_ID=#{dto.userId}
+    </sql>
 
 </mapper>
diff --git a/src/main/resources/mapper/wallet/WalletReduceMapper.xml b/src/main/resources/mapper/wallet/WalletReduceMapper.xml
new file mode 100644
index 0000000..3501285
--- /dev/null
+++ b/src/main/resources/mapper/wallet/WalletReduceMapper.xml
@@ -0,0 +1,71 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.mzl.flower.mapper.wallet.WalletReduceMapper">
+
+
+    <select id="getPage" resultType="com.mzl.flower.dto.response.wallet.WalletReduceVO">
+        select *
+        from (
+                 SELECT si.id as id,si.fee_supplier as fee ,si.audit_time as audit_time,'sale' as type,'售后扣款' as type_name,o.order_no as order_no,oi.supplier_id as supplier_id
+                 FROM t_order_item_sales si
+                 join t_order_item oi on oi.id = si.order_item_id
+                 left join t_order o on oi.order_id=o.id
+                 where si.deleted=0 and si.status='AGREED' and oi.deleted=0 and o.deleted=0
+                and o.payment_time &gt;= #{dto.walletOnlineTime}
+                <if test="dto.supplierId != null">
+                    and oi.supplier_id = #{dto.supplierId}
+                </if>
+                <if test="dto.startDate != null">
+                    and DATE_FORMAT(si.audit_time, '%Y-%m-%d') &gt;= #{dto.startDate}
+                </if>
+                <if test="dto.endDate != null">
+                    and DATE_FORMAT(si.audit_time, '%Y-%m-%d') &lt;= #{dto.endDate}
+                </if>
+                 union
+
+                 select  oic.id as id ,oic.deduct_amount as fee,oic.audit_time as audit_time,oic.type as type,check_type.label as type_name,o.order_no as order_no,oi.supplier_id as supplier_id
+                 from t_order_item_check oic
+                 left join t_order_item oi
+                 on oic.order_item_id=oi.id
+                 left join t_order o
+                 on oi.order_id=o.id
+                 left join t_code_value check_type
+                on check_type.value=oic.type and check_type.type_code='CHECK_TYPE'
+                 where oic.deleted=0  and oic.audit_status='AGREED' and oi.deleted=0 and o.deleted=0
+                    and o.payment_time &gt;= #{dto.walletOnlineTime}
+                <if test="dto.supplierId != null">
+                    and oi.supplier_id = #{dto.supplierId}
+                </if>
+                <if test="dto.startDate != null">
+                    and DATE_FORMAT(oic.audit_time, '%Y-%m-%d') &gt;= #{dto.startDate}
+                </if>
+                <if test="dto.endDate != null">
+                    and DATE_FORMAT(oic.audit_time, '%Y-%m-%d') &lt;= #{dto.endDate}
+                </if>
+             ) t
+
+        order by audit_time desc
+    </select>
+    <select id="getCheckReduceAmount" resultType="java.math.BigDecimal">
+        SELECT sum(si.fee_supplier)
+        FROM t_order_item_sales si
+        join t_order_item oi on oi.id = si.order_item_id
+        left join t_order o on oi.order_id=o.id
+        where si.deleted=0 and si.status='AGREED' and oi.deleted=0 and o.deleted=0
+          and oi.supplier_id = #{dto.supplierId}
+          and o.payment_time &gt;= #{dto.startTime}
+    </select>
+    <select id="getSaleReduceAmount" resultType="java.math.BigDecimal">
+        select  sum(oic.deduct_amount)
+        from t_order_item_check oic
+        left join t_order_item oi
+        on oic.order_item_id=oi.id
+        left join t_order o
+        on oi.order_id=o.id
+        left join t_code_value check_type
+        on check_type.value=oic.type and check_type.type_code='CHECK_TYPE'
+        where oic.deleted=0  and oic.audit_status='AGREED' and oi.deleted=0 and o.deleted=0
+          and oi.supplier_id = #{dto.supplierId}
+          and o.payment_time &gt;= #{dto.startTime}
+    </select>
+</mapper>
diff --git a/src/main/resources/mapper/wallet/WalletWithdrawRecordMapper.xml b/src/main/resources/mapper/wallet/WalletWithdrawRecordMapper.xml
index ca3f42d..8bb732b 100644
--- a/src/main/resources/mapper/wallet/WalletWithdrawRecordMapper.xml
+++ b/src/main/resources/mapper/wallet/WalletWithdrawRecordMapper.xml
@@ -35,12 +35,12 @@
         </if>
         <if test="dto.createStartDate!=null ">
             <![CDATA[
-               AND t.create_time &gt;= #{dto.createStartDate}
+               AND DATE_FORMAT(t.create_time, '%Y-%m-%d') &gt;= #{dto.createStartDate}
             ]]>
         </if>
         <if test="dto.endEndDate!=null ">
             <![CDATA[
-               AND t.create_time &lt;= #{dto.endEndDate}
+               AND DATE_FORMAT(t.create_time, '%Y-%m-%d') &lt;= #{dto.endEndDate}
             ]]>
         </if>
         <if test="dto.approveStartDate!=null ">

--
Gitblit v1.9.3