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