From f77c25900aac7231d006d8f4e08aaa12d72c62b4 Mon Sep 17 00:00:00 2001
From: cloudroam <cloudroam>
Date: 星期一, 28 十月 2024 16:21:39 +0800
Subject: [PATCH] add: 钱包供应商财务
---
src/main/java/com/mzl/flower/service/wallet/WalletBillRecordService.java | 10 +
src/main/java/com/mzl/flower/mapper/wallet/WalletBillRecordMapper.java | 10 +
src/main/java/com/mzl/flower/service/payment/OrderSettlementService.java | 90 +++++----
src/main/java/com/mzl/flower/dto/request/wallet/QueryWalletBillRecordDTO.java | 45 +++++
src/main/java/com/mzl/flower/service/impl/wallet/WalletWithdrawRecordServiceImpl.java | 25 ++
src/main/resources/mapper/wallet/WalletBillRecordMapper.xml | 82 +++++++++
src/main/java/com/mzl/flower/dto/response/wallet/WalletBillRecordVO.java | 45 +++++
src/main/java/com/mzl/flower/service/impl/wallet/WalletBillRecordServiceImpl.java | 107 ++++++++++-
src/main/java/com/mzl/flower/entity/wallet/WalletBillRecordDO.java | 12 +
src/main/java/com/mzl/flower/web/v2/wallet/WalletBillRecordController.java | 63 ++-----
10 files changed, 380 insertions(+), 109 deletions(-)
diff --git a/src/main/java/com/mzl/flower/dto/request/wallet/QueryWalletBillRecordDTO.java b/src/main/java/com/mzl/flower/dto/request/wallet/QueryWalletBillRecordDTO.java
new file mode 100644
index 0000000..5450fc8
--- /dev/null
+++ b/src/main/java/com/mzl/flower/dto/request/wallet/QueryWalletBillRecordDTO.java
@@ -0,0 +1,45 @@
+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 QueryWalletBillRecordDTO {
+
+ @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 createStartDate;
+
+ @ApiModelProperty(value = "提交日期-结束日期")
+ @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
+ @DateTimeFormat(pattern = "yyyy-MM-dd")
+ private LocalDate endEndDate;
+
+ @ApiModelProperty(value = "审核时间-开始日期")
+ @JsonFormat(pattern="yyyy-MM-dd" ,timezone="GMT+8")
+ @DateTimeFormat(pattern="yyyy-MM-dd")
+ private LocalDate approveStartDate;
+
+ @ApiModelProperty(value = "审核时间-结束日期")
+ @JsonFormat(pattern="yyyy-MM-dd" ,timezone="GMT+8")
+ @DateTimeFormat(pattern="yyyy-MM-dd")
+ private LocalDate approveEndDate;
+
+ @ApiModelProperty(value = "变动类型")
+ private String type;
+
+ @ApiModelProperty(value = "订单号")
+ private String orderNo;
+
+}
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..18ed3be
--- /dev/null
+++ b/src/main/java/com/mzl/flower/dto/response/wallet/WalletBillRecordVO.java
@@ -0,0 +1,45 @@
+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;
+import java.time.LocalDateTime;
+
+@Data
+public class WalletBillRecordVO extends AbstractTransDTO {
+ private Long id;
+
+ @ApiModelProperty(value = "供应商Id")
+ private Long supplierId;
+
+ @ApiModelProperty(value = "供应商名称")
+ private String supplierName;
+
+ @ApiModelProperty(value = "原金额")
+ private BigDecimal originalAmount;
+
+ @ApiModelProperty(value = "变动金额")
+ private BigDecimal changeAmount;
+
+ @ApiModelProperty(value = "余额")
+ private BigDecimal balance;
+
+ @ApiModelProperty(value = "账单变动类型(提现,结算)")
+ @DictTrans(target = "withdrawStateStr", codeType = "BILL_CHANGE_TYPE")
+ private String type;
+
+ private String typeStr;
+
+ @ApiModelProperty("提交时间")
+ private LocalDateTime createTime;
+
+ @ApiModelProperty(value = "审核时间")
+ private LocalDateTime approveTime;
+
+ @ApiModelProperty(value = "备注")
+ private String remark;
+
+}
diff --git a/src/main/java/com/mzl/flower/entity/wallet/WalletBillRecordDO.java b/src/main/java/com/mzl/flower/entity/wallet/WalletBillRecordDO.java
index b0f3d29..0d87f09 100644
--- a/src/main/java/com/mzl/flower/entity/wallet/WalletBillRecordDO.java
+++ b/src/main/java/com/mzl/flower/entity/wallet/WalletBillRecordDO.java
@@ -61,4 +61,16 @@
@ApiModelProperty(value = "提现记录表ID")
private Long withdrawRecordId;
+ @ApiModelProperty(value = "orderNo")
+ private String orderNo;
+
+ @ApiModelProperty(value = "orderItemId")
+ private String orderItemId;
+
+ @ApiModelProperty(value = "结算金额")
+ private BigDecimal totalAmount;
+
+ @ApiModelProperty(value = "备注")
+ private String remark;
+
}
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..2f3b9bc 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,14 @@
package com.mzl.flower.mapper.wallet;
+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;
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 +21,8 @@
@Repository
public interface WalletBillRecordMapper extends BaseMapper<WalletBillRecordDO> {
+ List<WalletBillRecordVO> queryPage(@Param("dto") QueryWalletBillRecordDTO queryWalletBillRecordDTO, Page page);
+
+ List<WalletBillRecordVO> queryWalletBillRecordList(@Param("dto") QueryWalletBillRecordDTO queryWalletBillRecordDTO);
}
+
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..fab1396 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,13 @@
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.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.entity.payment.Transfer;
import com.mzl.flower.entity.payment.TransferDetail;
import com.mzl.flower.entity.wallet.WalletBillRecordDO;
@@ -14,13 +19,22 @@
import com.mzl.flower.mapper.wallet.WalletMapper;
import com.mzl.flower.mapper.wallet.WalletWithdrawRecordMapper;
import com.mzl.flower.service.wallet.WalletBillRecordService;
-import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.mzl.flower.service.wallet.WalletService;
+import com.mzl.flower.utils.ExcelExportUtil;
+import org.redisson.api.RLock;
+import org.redisson.api.RedissonClient;
+import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.ObjectUtils;
import org.springframework.util.StringUtils;
import javax.annotation.Resource;
+import javax.servlet.http.HttpServletResponse;
+import java.net.URLEncoder;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.concurrent.TimeUnit;
/**
* <p>
@@ -30,7 +44,9 @@
* @author @TaoJie
* @since 2024-10-22
*/
+
@Service
+@Transactional
public class WalletBillRecordServiceImpl extends ServiceImpl<WalletBillRecordMapper, WalletBillRecordDO> implements WalletBillRecordService {
@Resource
@@ -50,6 +66,9 @@
@Resource
private WalletWithdrawRecordMapper walletWithdrawRecordMapper;
+ @Resource
+ RedissonClient redissonClient;
+
@Override
public void create(CreateWalletBillRecordDTO dto) {
@@ -76,12 +95,23 @@
walletBillRecordMapper.updateById(walletBillRecordDO);
//更新钱包
WalletDO walletDO = walletService.getBySupplierId(walletBillRecordDO.getWalletId());
- if(!ObjectUtils.isEmpty(walletDO)){
- //提现中金额:减少提现中金额
- walletDO.setWithdrawingAmount(walletDO.getWithdrawingAmount().subtract(walletBillRecordDO.getChangeAmount()));
- //已提现金额:增加已提现金额
- walletDO.setWithdrawnAmount(walletDO.getWithdrawnAmount().add(walletBillRecordDO.getChangeAmount()));
- walletMapper.updateById(walletDO);
+ RLock lock = redissonClient.getLock(String.format(LockConstants.WALLET_ID_KEY, walletDO.getId()));
+ try {
+ if (lock.tryLock(10, 30, TimeUnit.SECONDS)) {
+ try {
+ if (!ObjectUtils.isEmpty(walletDO)) {
+ //提现中金额:减少提现中金额
+ walletDO.setWithdrawingAmount(walletDO.getWithdrawingAmount().subtract(walletBillRecordDO.getChangeAmount()));
+ //已提现金额:增加已提现金额
+ walletDO.setWithdrawnAmount(walletDO.getWithdrawnAmount().add(walletBillRecordDO.getChangeAmount()));
+ walletMapper.updateById(walletDO);
+ }
+ } finally {
+ lock.unlock();
+ }
+ }
+ } catch (InterruptedException e) {
+ throw new RuntimeException(e);
}
//回写提现状态
if (StringUtils.isEmpty(walletBillRecordDO.getWithdrawRecordId())) {
@@ -95,12 +125,23 @@
walletBillRecordDO.update("sys");
walletBillRecordMapper.updateById(walletBillRecordDO);
WalletDO walletDO = walletService.getBySupplierId(walletBillRecordDO.getWalletId());
- if(!ObjectUtils.isEmpty(walletDO)){
- //提现中金额:减少提现中金额
- walletDO.setWithdrawingAmount(walletDO.getWithdrawingAmount().subtract(walletBillRecordDO.getChangeAmount()));
- //可提现金额:增加可提现金额
- walletDO.setWithdrawableAmount(walletDO.getWithdrawableAmount().add(walletBillRecordDO.getChangeAmount()));
- walletMapper.updateById(walletDO);
+ RLock lock = redissonClient.getLock(String.format(LockConstants.WALLET_ID_KEY, walletDO.getId()));
+ try {
+ if (lock.tryLock(10, 30, TimeUnit.SECONDS)) {
+ try {
+ if (!ObjectUtils.isEmpty(walletDO)) {
+ //提现中金额:减少提现中金额
+ walletDO.setWithdrawingAmount(walletDO.getWithdrawingAmount().subtract(walletBillRecordDO.getChangeAmount()));
+ //可提现金额:增加可提现金额
+ walletDO.setWithdrawableAmount(walletDO.getWithdrawableAmount().add(walletBillRecordDO.getChangeAmount()));
+ walletMapper.updateById(walletDO);
+ }
+ } finally {
+ lock.unlock();
+ }
+ }
+ } catch (InterruptedException e) {
+ throw new RuntimeException(e);
}
//回写提现状态
if (StringUtils.isEmpty(walletBillRecordDO.getWithdrawRecordId())) {
@@ -111,4 +152,44 @@
}
}
}
+
+ @Override
+ public Page<WalletBillRecordVO> queryPage(QueryWalletBillRecordDTO queryWalletBillRecordDTO, Page page) {
+ List<WalletBillRecordVO> list = walletBillRecordMapper.queryPage(queryWalletBillRecordDTO, page);
+ page.setRecords(list);
+ return page;
+ }
+
+ @Override
+ public void exportSupplierFinanceList(HttpServletResponse response, QueryWalletBillRecordDTO queryWalletBillRecordDTO) {
+
+ List<WalletBillRecordVO> list = walletBillRecordMapper.queryWalletBillRecordList(queryWalletBillRecordDTO);
+ String[] rowsName = new String[]{"序号","供应商信息", "变动类型", "原金额", "变动金额", "现余额", "提交时间", "审核时间", "备注"};
+ List<Object[]> dataList = new ArrayList<>();
+ int sn = 1;
+ for (WalletBillRecordVO o : list) {
+ Object[] objs = new Object[rowsName.length];
+ int a = 0;
+ objs[a++] = sn; // 序号
+ objs[a++] = o.getSupplierName()+":"+o.getSupplierId(); // 供应商信息
+ objs[a++] = o.getTypeStr(); // 变动类型
+ objs[a++] = o.getOriginalAmount(); // 原金额
+ objs[a++] = o.getChangeAmount(); // 变动金额
+ objs[a++] = o.getBalance(); //现余额
+ objs[a++] = o.getCreateTime();//提交时间
+ objs[a++] = o.getApproveTime(); // 审核时间
+ objs[a++] = o.getRemark(); //备注
+ dataList.add(objs);
+ sn++;
+ }
+
+ ExcelExportUtil excelExportUtil = new ExcelExportUtil("供应商财务", rowsName, dataList, response);
+ try {
+ response.addHeader("filename", URLEncoder.encode("供应商财务.xls", "UTF-8"));
+ response.addHeader("Access-Control-Expose-Headers", "filename");
+ excelExportUtil.export();
+ } catch (Exception e) {
+ log.error(e.getMessage(), e);
+ }
+ }
}
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..9a6fbbe 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
@@ -238,7 +238,6 @@
}
//记录转账状态,定时任务定时获取状态并更新钱包交易记录表信息
- walletBillRecordDO.setTransferDetailId(Constants.TRANSFER_STATUS.ACCEPTED.name());
walletBillRecordMapper.insert(walletBillRecordDO);
//不需要更新结算单了,此时提现的金额和计算单上的金额不一致
}
@@ -246,13 +245,25 @@
if (Constants.WALLET_APPROVE_STATE.REJECT.name().equals(walletWithdrawRecordDTO.getApproveState())) {
//更新钱包
Supplier s = supplierMapper.selectById(withdrawRecordDO.getSupplierId());
+
WalletDO walletDO = walletService.getBySupplierId(s.getId());
- if(!ObjectUtils.isEmpty(walletDO)){
- //提现中金额:审核失败体现中金额扣减
- walletDO.setWithdrawingAmount(walletDO.getWithdrawingAmount().subtract(withdrawRecordDO.getAmount()));
- //可提现金额:审核失败可提现金额增加
- walletDO.setWithdrawableAmount(walletDO.getWithdrawableAmount().add(withdrawRecordDO.getAmount()));
- walletMapper.updateById(walletDO);
+ RLock lock = redissonClient.getLock(String.format(LockConstants.WALLET_ID_KEY, walletDO.getId()));
+ try {
+ if (lock.tryLock(10, 30, TimeUnit.SECONDS)) {
+ try {
+ if (!ObjectUtils.isEmpty(walletDO)) {
+ //提现中金额:审核失败体现中金额扣减
+ walletDO.setWithdrawingAmount(walletDO.getWithdrawingAmount().subtract(withdrawRecordDO.getAmount()));
+ //可提现金额:审核失败可提现金额增加
+ walletDO.setWithdrawableAmount(walletDO.getWithdrawableAmount().add(withdrawRecordDO.getAmount()));
+ walletMapper.updateById(walletDO);
+ }
+ } finally {
+ lock.unlock();
+ }
+ }
+ } catch (InterruptedException e) {
+ throw new RuntimeException(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 a8fcc7e..9bad835 100644
--- a/src/main/java/com/mzl/flower/service/payment/OrderSettlementService.java
+++ b/src/main/java/com/mzl/flower/service/payment/OrderSettlementService.java
@@ -38,7 +38,6 @@
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.ObjectUtils;
-import org.springframework.util.StringUtils;
import java.math.BigDecimal;
import java.math.RoundingMode;
@@ -676,11 +675,6 @@
settlement.setUserId(s.getUserId());
settlement.setStatus(Constants.SETTLEMENT_STATUS.PENDING.name());
- //2024-10-23
- //新增WalletBillRecordDO
- WalletBillRecordDO walletBillRecord = new WalletBillRecordDO();
- walletBillRecord.setId(UUIDGenerator.getUUID());
-
Integer flowerNum = 0;//商品数量
BigDecimal totalAmount = new BigDecimal(0);//交易合计
BigDecimal checkFee = new BigDecimal(0);//降级扣款
@@ -723,10 +717,10 @@
//2024-10-23
//copy信息到t_wallet_bill_record_detail
- WalletBillRecordDetail walletBillRecordDetail = new WalletBillRecordDetail();
- BeanUtils.copyProperties(detail, walletBillRecordDetail, "id");
- walletBillRecordDetail.setBillRecordId(walletBillRecord.getId());
- walletBillRecordDetailMapper.insert(walletBillRecordDetail);
+// WalletBillRecordDetail walletBillRecordDetail = new WalletBillRecordDetail();
+// BeanUtils.copyProperties(detail, walletBillRecordDetail, "id");
+// walletBillRecordDetail.setBillRecordId(walletBillRecord.getId());
+// walletBillRecordDetailMapper.insert(walletBillRecordDetail);
flowerNum += oi.getNum();
totalAmount = totalAmount.add(detail.getTotalAmount());
@@ -738,6 +732,48 @@
serviceFee = serviceFee.add(ois.getServiceFee());
serviceFeeRate = ois.getServiceFeeRate();
settlementAmount = settlementAmount.add(ois.getIncomeSupplier());
+ WalletDO walletDO = walletService.getBySupplierId(supplierId);
+ RLock lock = redissonClient.getLock(String.format(LockConstants.WALLET_ID_KEY, walletDO.getId()));
+ try {
+ if (lock.tryLock(10, 30, TimeUnit.SECONDS)) {
+ try {
+ //2024-10-28 直接保存到walletBillRecord
+ //新增WalletBillRecordDO
+ WalletBillRecordDO walletBillRecord = new WalletBillRecordDO();
+ walletBillRecord.setId(UUIDGenerator.getUUID());
+ WalletDO walletDOInfo = walletService.getBySupplierId(supplierId);
+ //增加供应商结算金额保存到钱包
+ walletBillRecord.setSupplierId(supplierId);
+ walletBillRecord.setWalletId(walletDOInfo.getId());
+ walletBillRecord.setSettlementId(settlement.getId());
+ walletBillRecord.setOrderItemId(detail.getOrderItemId());
+ //变动金额等于供应商收入
+ walletBillRecord.setTotalAmount(ois.getIncomeSupplier());
+ walletBillRecord.setType(Constants.BILL_CHANGE_TYPE.settlement.name());
+ walletBillRecord.setMethod(Constants.BILL_CHANGE_METHOD.add.name());
+ walletBillRecord.setOriginalAmount(walletDOInfo.getTotalAmount());
+ walletBillRecord.setChangeAmount(ois.getIncomeSupplier());
+ walletBillRecord.setBalance(walletDOInfo.getWithdrawableAmount().add(ois.getIncomeSupplier()));
+ Order order = orderMapper.selectById(detail.getOrderId());
+ if (!ObjectUtils.isEmpty(order)) {
+ walletBillRecord.setRemark("订单完成(订单号" + order.getOrderNo() + ")" + ",获得收入");
+ walletBillRecord.setOrderNo(order.getOrderNo());
+ }
+ //更新钱包
+ //可提现金额=钱包余额=结算金额
+ walletDOInfo.setWithdrawableAmount(walletDOInfo.getWithdrawableAmount().add(ois.getIncomeSupplier()));
+ walletDOInfo.setTotalAmount(walletDOInfo.getWithdrawableAmount());
+ //已结算金额
+ walletDOInfo.setSettledAmount(walletDOInfo.getSettledAmount().add(ois.getIncomeSupplier()));
+ walletMapper.updateById(walletDOInfo);
+ walletBillRecordMapper.insert(walletBillRecord);
+ } finally {
+ lock.unlock();
+ }
+ }
+ } catch (InterruptedException e) {
+ throw new RuntimeException(e);
+ }
}
settlement.setFlowerNum(flowerNum);
@@ -771,40 +807,6 @@
//新逻辑不是立即转账。不走结算后转账逻辑。此时没有转账时间、openID、转账ID、转账明细ID,直接标记结算状态完成,存金额到钱包中
settlement.setStatus(Constants.SETTLEMENT_STATUS.COMPLETED.name());
settlementMapper.insert(settlement);
-
- WalletDO walletDO = walletService.getCurrentSupplier();
- if (null == walletDO) {
- throw new ValidationException("钱包不能为空");
- }
- RLock lock = redissonClient.getLock(String.format(LockConstants.WALLET_ID_KEY, walletDO.getId()));
- try {
- if (lock.tryLock(10, 30, TimeUnit.SECONDS)) {
- try {
- WalletDO walletDOInfo = walletService.getCurrentSupplier();
- //增加供应商结算金额保存到钱包
- walletBillRecord.setSupplierId(s.getId());
- walletBillRecord.setWalletId(walletDOInfo.getId());
- walletBillRecord.setSettlementId(settlement.getId());
- walletBillRecord.setType(Constants.BILL_CHANGE_TYPE.settlement.name());
- walletBillRecord.setMethod(Constants.BILL_CHANGE_METHOD.add.name());
- walletBillRecord.setOriginalAmount(walletDOInfo.getTotalAmount());
- walletBillRecord.setChangeAmount(settlementAmount);
- walletBillRecord.setBalance(walletDOInfo.getWithdrawableAmount().add(settlementAmount));
- //更新钱包
- //可提现金额=钱包余额=结算金额
- walletDOInfo.setWithdrawableAmount(walletDOInfo.getWithdrawableAmount().add(settlementAmount));
- walletDOInfo.setTotalAmount(walletDOInfo.getWithdrawableAmount());
- //已结算金额
- walletDOInfo.setSettledAmount(walletDOInfo.getSettledAmount().add(settlementAmount));
- walletMapper.updateById(walletDOInfo);
- walletBillRecordMapper.insert(walletBillRecord);
- } finally {
- lock.unlock();
- }
- }
- } catch (InterruptedException e) {
- throw new RuntimeException(e);
- }
}
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..b2d6e0c 100644
--- a/src/main/java/com/mzl/flower/service/wallet/WalletBillRecordService.java
+++ b/src/main/java/com/mzl/flower/service/wallet/WalletBillRecordService.java
@@ -1,8 +1,13 @@
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.QueryWalletBillRecordDTO;
+import com.mzl.flower.dto.response.wallet.WalletBillRecordVO;
import com.mzl.flower.entity.wallet.WalletBillRecordDO;
import com.baomidou.mybatisplus.extension.service.IService;
+
+import javax.servlet.http.HttpServletResponse;
/**
* <p>
@@ -17,4 +22,9 @@
void create(CreateWalletBillRecordDTO dto);
void updateTransferStatus(String transferId);
+
+ Page<WalletBillRecordVO> queryPage(QueryWalletBillRecordDTO dto, Page page);
+
+
+ void exportSupplierFinanceList(HttpServletResponse response, QueryWalletBillRecordDTO dto);
}
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..5a2d202 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
@@ -5,25 +5,21 @@
import com.mzl.flower.base.BaseController;
import com.mzl.flower.base.R;
import com.mzl.flower.base.ReturnDataDTO;
-
-import com.mzl.flower.config.exception.ValidationException;
-import com.mzl.flower.dto.request.wallet.CreateWalletBillRecordDTO;
-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.dto.request.report.QueryPartnerOrderDTO;
+import com.mzl.flower.dto.request.wallet.QueryWalletBillRecordDTO;
+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.service.wallet.WalletBillRecordService;
-import com.mzl.flower.service.wallet.WalletService;
+import io.swagger.annotations.ApiOperation;
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 com.mzl.flower.entity.wallet.WalletBillRecordDO;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
-
-import javax.validation.constraints.Min;
-import javax.validation.constraints.Max;
-import javax.validation.constraints.Positive;
+import javax.servlet.http.HttpServletResponse;
/**
* @author @TaoJie
@@ -36,39 +32,16 @@
@Autowired
private WalletBillRecordService walletBillRecordService;
-
- @PostMapping("")
- public ResponseEntity<ReturnDataDTO> create(@Validated @RequestBody CreateWalletBillRecordDTO dto) {
-
-
- return returnData(R.SUCCESS.getCode(), null);
+ @GetMapping("/list")
+ @ApiOperation(value = "供应商财务-分页", httpMethod = "GET")
+ public ResponseEntity<ReturnDataDTO<Page<WalletBillRecordVO>>> getMemberList(Page page, QueryWalletBillRecordDTO dto) {
+ return returnData(R.SUCCESS.getCode(), walletBillRecordService.queryPage(dto, page));
}
- @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("/{id}")
- public WalletBillRecordDO get(@PathVariable(value = "id") @Positive(message = "{id.positive}") Integer id) {
- return null;
- }
-
- @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
- ) {
- return returnData(R.SUCCESS.getCode(), null);
-
+ @GetMapping({"/export"})
+ @ApiOperation(value = "供应商财务导出")
+ public void partnerExportSales(HttpServletResponse response, @Validated QueryWalletBillRecordDTO dto){
+ walletBillRecordService.exportSupplierFinanceList(response, dto);
}
}
diff --git a/src/main/resources/mapper/wallet/WalletBillRecordMapper.xml b/src/main/resources/mapper/wallet/WalletBillRecordMapper.xml
index c76723c..a38744c 100644
--- a/src/main/resources/mapper/wallet/WalletBillRecordMapper.xml
+++ b/src/main/resources/mapper/wallet/WalletBillRecordMapper.xml
@@ -22,5 +22,87 @@
<result column="transfer_detail_id" property="transferDetailId" />
<result column="open_id" property="openId" />
</resultMap>
+ <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
+ left join t_order o on t.order_id = o.id
+ left join t_wallet_withdraw_record w on t.withdraw_record_id = w.id
+ where t.deleted= 0
+ <if test="dto.supplierName != null and dto.supplierName != ''">
+ and s.name like concat('%', #{dto.supplierName}, '%')
+ </if>
+ <if test="dto.supplierId != null and dto.supplierId != ''">
+ and t.supplier_id = #{dto.supplierId}
+ </if>
+ <if test="dto.type != null and dto.type != ''">
+ and t.type = #{type}
+ </if>
+ <if test="dto.orderNo != null and dto.orderNo != ''">
+ and o.order_no = like concat('%', #{orderNo}, '%')
+ </if>
+ <if test="dto.createStartDate!=null ">
+ <![CDATA[
+ AND w.create_time >= #{dto.createStartDate}
+ ]]>
+ </if>
+ <if test="dto.endEndDate!=null ">
+ <![CDATA[
+ AND w.create_time <= #{dto.endEndDate}
+ ]]>
+ </if>
+ <if test="dto.approveStartDate!=null ">
+ <![CDATA[
+ AND w.approve_time >= #{dto.approveStartDate}
+ ]]>
+ </if>
+ <if test="dto.approveEndDate!=null ">
+ <![CDATA[
+ AND w.approve_time <= #{dto.approveStartDate}
+ ]]>
+ </if>
+ order by t.create_time
+ </select>
+
+ <select id="queryWalletBillRecordList" 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
+ left join t_order o on t.order_id = o.id
+ left join t_wallet_withdraw_record w on t.withdraw_record_id = w.id
+ where t.deleted= 0
+ <if test="dto.supplierName != null and dto.supplierName != ''">
+ and s.name like concat('%', #{dto.supplierName}, '%')
+ </if>
+ <if test="dto.supplierId != null and dto.supplierId != ''">
+ and t.supplier_id = #{dto.supplierId}
+ </if>
+ <if test="dto.type != null and dto.type != ''">
+ and t.type = #{type}
+ </if>
+ <if test="dto.orderNo != null and dto.orderNo != ''">
+ and o.order_no = like concat('%', #{orderNo}, '%')
+ </if>
+ <if test="dto.createStartDate!=null ">
+ <![CDATA[
+ AND w.create_time >= #{dto.createStartDate}
+ ]]>
+ </if>
+ <if test="dto.endEndDate!=null ">
+ <![CDATA[
+ AND w.create_time <= #{dto.endEndDate}
+ ]]>
+ </if>
+ <if test="dto.approveStartDate!=null ">
+ <![CDATA[
+ AND w.approve_time >= #{dto.approveStartDate}
+ ]]>
+ </if>
+ <if test="dto.approveEndDate!=null ">
+ <![CDATA[
+ AND w.approve_time <= #{dto.approveStartDate}
+ ]]>
+ </if>
+
+ order by t.create_time
+ </select>
</mapper>
--
Gitblit v1.9.3