From 021496babb52a859294a8475ffef330009b0167c Mon Sep 17 00:00:00 2001
From: 陶杰 <1378534974@qq.com>
Date: 星期一, 28 十月 2024 13:47:40 +0800
Subject: [PATCH] 1.小程序-供应商:钱包
---
src/main/java/com/mzl/flower/service/wallet/WalletBillRecordService.java | 6
src/main/java/com/mzl/flower/dto/request/wallet/QueryWalletAmountDTO.java | 13 +
src/main/java/com/mzl/flower/service/impl/wallet/WalletServiceImpl.java | 84 +++++++
src/main/java/com/mzl/flower/service/impl/wallet/WalletReduceServiceImpl.java | 45 ++++
src/main/java/com/mzl/flower/web/v2/wallet/WalletDeductController.java | 53 ++++
src/main/java/com/mzl/flower/dto/response/wallet/WalletReduceVO.java | 29 ++
src/main/java/com/mzl/flower/service/impl/wallet/WalletWithdrawRecordServiceImpl.java | 6
src/main/java/com/mzl/flower/service/wallet/WalletService.java | 21 +
src/main/java/com/mzl/flower/service/impl/report/OrderReportServiceImpl.java | 2
src/main/java/com/mzl/flower/dto/request/wallet/QueryWalletBillDTO.java | 30 ++
src/main/java/com/mzl/flower/mapper/wallet/WalletBillRecordMapper.java | 8
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/wallet/WalletMapper.xml | 24 ++
src/main/java/com/mzl/flower/mapper/wallet/WalletReduceMapper.java | 33 +++
src/main/resources/mapper/report/OrderReportMapper.xml | 2
src/main/java/com/mzl/flower/web/v2/wallet/WalletController.java | 13 +
src/main/resources/mapper/wallet/WalletBillRecordMapper.xml | 15 +
src/main/java/com/mzl/flower/dto/response/wallet/WalletBillRecordVO.java | 60 +++++
src/main/java/com/mzl/flower/service/impl/wallet/WalletBillRecordServiceImpl.java | 12 +
src/main/resources/mapper/wallet/WalletWithdrawRecordMapper.xml | 4
src/main/java/com/mzl/flower/service/wallet/WalletReduceService.java | 38 +++
src/main/resources/mapper/wallet/WalletReduceMapper.xml | 71 ++++++
src/main/java/com/mzl/flower/web/v2/wallet/WalletBillRecordController.java | 17
24 files changed, 618 insertions(+), 13 deletions(-)
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
new file mode 100644
index 0000000..51af78a
--- /dev/null
+++ b/src/main/java/com/mzl/flower/dto/response/wallet/WalletBillRecordVO.java
@@ -0,0 +1,60 @@
+package com.mzl.flower.dto.response.wallet;
+
+import com.mzl.flower.base.AbstractTransDTO;
+import com.mzl.flower.base.annotation.DictTrans;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.math.BigDecimal;
+
+@Data
+public class WalletBillRecordVO extends AbstractTransDTO {
+
+ @ApiModelProperty(value = "供应商Id")
+ private Long supplierId;
+
+ @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;
+
+ @ApiModelProperty(value = "变动金额")
+ private BigDecimal changeAmount;
+
+ @ApiModelProperty(value = "余额")
+ private BigDecimal balance;
+
+ @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 5167268..fe37529 100644
--- a/src/main/java/com/mzl/flower/mapper/wallet/WalletBillRecordMapper.java
+++ b/src/main/java/com/mzl/flower/mapper/wallet/WalletBillRecordMapper.java
@@ -1,8 +1,15 @@
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.mzl.flower.entity.wallet.WalletBillRecordDO;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;
+
+import java.util.List;
/**
* <p>
@@ -15,4 +22,5 @@
@Repository
public interface WalletBillRecordMapper extends BaseMapper<WalletBillRecordDO> {
+ 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 7d1aa37..3e6196a 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
@@ -1,8 +1,12 @@
package com.mzl.flower.service.impl.wallet;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.mzl.flower.constant.Constants;
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.dto.response.wallet.WalletWithdrawRecordVO;
import com.mzl.flower.entity.payment.Transfer;
import com.mzl.flower.entity.payment.TransferDetail;
import com.mzl.flower.entity.wallet.WalletBillRecordDO;
@@ -21,6 +25,7 @@
import org.springframework.util.StringUtils;
import javax.annotation.Resource;
+import java.util.List;
/**
* <p>
@@ -111,4 +116,11 @@
}
}
}
+
+ @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..2f44539 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,12 +2,14 @@
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.mzl.flower.config.security.SecurityUtils;
+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;
@@ -15,7 +17,10 @@
import org.springframework.stereotype.Service;
import java.math.BigDecimal;
+import java.text.SimpleDateFormat;
+import java.util.Date;
import java.util.List;
+import java.util.regex.Pattern;
/**
* <p>
@@ -30,6 +35,27 @@
@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}$");
+
+
+ @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() {
@@ -76,4 +102,62 @@
}else 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 e6dd65d..4001c52 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());
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 85e8b01..196dc2e 100644
--- a/src/main/java/com/mzl/flower/service/wallet/WalletBillRecordService.java
+++ b/src/main/java/com/mzl/flower/service/wallet/WalletBillRecordService.java
@@ -1,6 +1,10 @@
package com.mzl.flower.service.wallet;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
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.dto.response.wallet.WalletReduceVO;
import com.mzl.flower.entity.wallet.WalletBillRecordDO;
import com.baomidou.mybatisplus.extension.service.IService;
@@ -17,4 +21,6 @@
void create(CreateWalletBillRecordDTO dto);
void updateTransferStatus(String transferId);
+
+ 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..ce72bf9 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,27 @@
*/
public interface WalletService extends IService<WalletDO> {
+ String getWalletOnLineTime();
+
WalletDO getCurrentSupplier();
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 8cf66b4..7a4a372 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
@@ -8,11 +8,14 @@
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 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;
@@ -35,7 +38,8 @@
@Autowired
private WalletBillRecordService walletBillRecordService;
-
+ @Autowired
+ private SupplierService supplierService;
@PostMapping("")
public ResponseEntity<ReturnDataDTO> create(@Validated @RequestBody CreateWalletBillRecordDTO dto) {
@@ -60,14 +64,11 @@
}
@GetMapping("/page")
- public ResponseEntity<ReturnDataDTO<Page<WalletBillRecordDO>>> page(
- @RequestParam(name = "page", required = false, defaultValue = "0")
- @Min(value = 0, message = "{page.number.min}") Integer page,
- @RequestParam(name = "count", required = false, defaultValue = "10")
- @Min(value = 1, message = "{page.count.min}")
- @Max(value = 30, message = "{page.count.max}") Integer count
+ public ResponseEntity<ReturnDataDTO<Page<WalletBillRecordVO>>> page(Page page, QueryWalletBillDTO dto
) {
- return returnData(R.SUCCESS.getCode(), null);
+ // 根据当前用户获取供应商
+ dto.setSupplierId(supplierService.getCurrentSupplier().getId());
+ return returnData(R.SUCCESS.getCode(), walletBillRecordService.getPage(page,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 c76723c..0d1a1ed 100644
--- a/src/main/resources/mapper/wallet/WalletBillRecordMapper.xml
+++ b/src/main/resources/mapper/wallet/WalletBillRecordMapper.xml
@@ -22,5 +22,20 @@
<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') >= #{dto.startDate}
+ </if>
+ <if test="dto.endDate != null">
+ and DATE_FORMAT(wbr.create_time, '%Y-%m-%d') <= #{dto.endDate}
+ </if>
+
+ </select>
</mapper>
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 > #{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 >= #{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') >= #{dto.startDate}
+ </if>
+ <if test="dto.endDate != null">
+ and DATE_FORMAT(si.audit_time, '%Y-%m-%d') <= #{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 >= #{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') >= #{dto.startDate}
+ </if>
+ <if test="dto.endDate != null">
+ and DATE_FORMAT(oic.audit_time, '%Y-%m-%d') <= #{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 >= #{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 >= #{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 >= #{dto.createStartDate}
+ AND DATE_FORMAT(t.create_time, '%Y-%m-%d') >= #{dto.createStartDate}
]]>
</if>
<if test="dto.endEndDate!=null ">
<![CDATA[
- AND t.create_time <= #{dto.endEndDate}
+ AND DATE_FORMAT(t.create_time, '%Y-%m-%d') <= #{dto.endEndDate}
]]>
</if>
<if test="dto.approveStartDate!=null ">
--
Gitblit v1.9.3