From 5cc25a197bab58a2c7685528b68b568d17b66052 Mon Sep 17 00:00:00 2001 From: dzc <2388224167@qq.com> Date: Wed, 25 Jun 2025 20:45:31 +0800 Subject: [PATCH] =?UTF-8?q?feat:=E5=8F=91=E7=A5=A8=E6=B5=81=E7=A8=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../WalletRechargeInvoiceStatusEnum.java | 14 +++- .../recharge/WalletRechargeSaveTopupDto.java | 18 +++++ .../WalletRechargeApplyController.java | 12 +++- .../recharge/WalletRechargeApplyMapper.java | 5 +- .../WalletRechargeApplyComposeService.java | 1 + .../service/WalletRechargeApplyService.java | 8 ++- .../WalletRechargeApplyServiceImpl.java | 66 ++++++++++++++++++- .../WalletRechargeInvoiceServiceImpl.java | 25 +++++-- .../recharge/WalletRechargeInvoiceMapper.xml | 1 + 9 files changed, 134 insertions(+), 16 deletions(-) create mode 100644 pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/dto/recharge/WalletRechargeSaveTopupDto.java diff --git a/pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/constant/WalletRechargeInvoiceStatusEnum.java b/pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/constant/WalletRechargeInvoiceStatusEnum.java index a16dc6739..ae6548b24 100644 --- a/pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/constant/WalletRechargeInvoiceStatusEnum.java +++ b/pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/constant/WalletRechargeInvoiceStatusEnum.java @@ -13,9 +13,11 @@ import java.util.Arrays; @AllArgsConstructor public enum WalletRechargeInvoiceStatusEnum { - UNCHECKED("1", "未审核"), - CHECKED("2", "审核通过"), - CANCELLATION("3", "作废"), + UNBIND("1", "未绑定充值"), + BINDED("2", "已绑定充值"), + UNCHECKED("3", "未审核"), + CHECKED("4", "审核成功"), + CANCELLATION("5", "作废"), ; private final String code; @@ -27,4 +29,10 @@ public enum WalletRechargeInvoiceStatusEnum { .findFirst().get(); } + public static WalletRechargeInvoiceStatusEnum codeOf(String code) { + return Arrays.stream(WalletRechargeInvoiceStatusEnum.values()) + .filter(v -> ObjectUtil.equal(v.getCode(), code)) + .findFirst().get(); + } + } diff --git a/pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/dto/recharge/WalletRechargeSaveTopupDto.java b/pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/dto/recharge/WalletRechargeSaveTopupDto.java new file mode 100644 index 000000000..30e26fe50 --- /dev/null +++ b/pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/dto/recharge/WalletRechargeSaveTopupDto.java @@ -0,0 +1,18 @@ +package com.bsd.pjcloud.wallet.api.dto.recharge; + +import lombok.Data; + +@Data +public class WalletRechargeSaveTopupDto { + + /** + * 充值类型 + */ + private String bizType; + + /** + * 发票id + */ + private Long invoiceId; + +} diff --git a/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/controller/recharge/WalletRechargeApplyController.java b/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/controller/recharge/WalletRechargeApplyController.java index b45d7bedc..c7691b201 100644 --- a/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/controller/recharge/WalletRechargeApplyController.java +++ b/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/controller/recharge/WalletRechargeApplyController.java @@ -12,6 +12,7 @@ import com.bsd.pjcloud.common.security.annotation.Inner; import com.bsd.pjcloud.flow.task.dto.ProcessNodeRecordAssignUserParamDto; import com.bsd.pjcloud.wallet.api.dto.recharge.WalletRechargeApplyDto; import com.bsd.pjcloud.wallet.api.dto.recharge.WalletRechargeImportDto; +import com.bsd.pjcloud.wallet.api.dto.recharge.WalletRechargeSaveTopupDto; import com.bsd.pjcloud.wallet.api.dto.recharge.excel.WalletRechargeExcelDto; import com.bsd.pjcloud.wallet.api.entity.recharge.WalletRechargeApplyEntity; import com.bsd.pjcloud.wallet.api.vo.recharge.excel.WalletRechargeByApplyExcelVo; @@ -48,6 +49,13 @@ public class WalletRechargeApplyController { } /* ************************************* start callback start ************************************* */ + @PostMapping("/save-topup") + @Operation(summary = "新增充值") + public R comparePageJoin(@RequestBody WalletRechargeSaveTopupDto dto) { + walletRechargeApplyService.saveTopup(dto); + return R.ok(); + } + @GetMapping("/compare-page-join") @Operation(summary = "批量充值/扣款记录") public R comparePageJoin(@ParameterObject Page page, @ParameterObject WalletRechargeApplyDto dto) { @@ -140,8 +148,8 @@ public class WalletRechargeApplyController { } @PostMapping("/read-excel") - public R readExcel(@RequestExcel List excelVOList, BindingResult bindingResult) { - return walletRechargeApplyService.readExcel(excelVOList, bindingResult); + public R readExcel(@RequestExcel List excelVOList, BindingResult bindingResult, @RequestParam(required = false) String bizType) { + return walletRechargeApplyService.readExcel(excelVOList, bindingResult, bizType); } @PostMapping("/read-topup-excel") diff --git a/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/mapper/recharge/WalletRechargeApplyMapper.java b/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/mapper/recharge/WalletRechargeApplyMapper.java index 667bf45bf..888bc4908 100644 --- a/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/mapper/recharge/WalletRechargeApplyMapper.java +++ b/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/mapper/recharge/WalletRechargeApplyMapper.java @@ -71,8 +71,9 @@ public interface WalletRechargeApplyMapper extends PjcloudBaseMapper { + /** + * 新增充值 + */ + void saveTopup(WalletRechargeSaveTopupDto dto); + void create(WalletRechargeApplyEntity dto); Boolean edit(WalletRechargeApplyDto dto); @@ -43,7 +49,7 @@ public interface WalletRechargeApplyService extends IService excelVOList, BindingResult bindingResult); + R readExcel(List excelVOList, BindingResult bindingResult, String bizType); /** * 读取充值excel内容 diff --git a/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/service/impl/recharge/WalletRechargeApplyServiceImpl.java b/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/service/impl/recharge/WalletRechargeApplyServiceImpl.java index b8ffffa64..c27572fb6 100644 --- a/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/service/impl/recharge/WalletRechargeApplyServiceImpl.java +++ b/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/service/impl/recharge/WalletRechargeApplyServiceImpl.java @@ -33,11 +33,13 @@ import com.bsd.pjcloud.flow.task.dto.TaskDto; import com.bsd.pjcloud.flow.task.dto.TaskParamDto; import com.bsd.pjcloud.wallet.api.constant.WalletBizEnum; import com.bsd.pjcloud.wallet.api.constant.WalletBizRechargeEnum; +import com.bsd.pjcloud.wallet.api.constant.WalletRechargeInvoiceStatusEnum; import com.bsd.pjcloud.wallet.api.constant.WalletTypeEnum; import com.bsd.pjcloud.wallet.api.dto.WalletManageDto; import com.bsd.pjcloud.wallet.api.dto.WalletTypeDto; import com.bsd.pjcloud.wallet.api.dto.recharge.WalletRechargeApplyDto; import com.bsd.pjcloud.wallet.api.dto.recharge.WalletRechargeImportDto; +import com.bsd.pjcloud.wallet.api.dto.recharge.WalletRechargeSaveTopupDto; import com.bsd.pjcloud.wallet.api.dto.recharge.excel.WalletRechargeExcelDto; import com.bsd.pjcloud.wallet.api.entity.WalletManageEntity; import com.bsd.pjcloud.wallet.api.entity.WalletTypeEntity; @@ -62,6 +64,7 @@ import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.tuple.ImmutablePair; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import org.springframework.validation.BindingResult; @@ -103,6 +106,46 @@ public class WalletRechargeApplyServiceImpl extends ServiceImpl list = rechargeImportService.list(new LambdaQueryWrapper().eq(WalletRechargeImportEntity::getInvoiceId, invoice.getId()).isNull(WalletRechargeImportEntity::getApplyId)); + if (ObjectUtil.isNotEmpty(list)) { + List updateObjList = list.stream().map(v -> { + WalletRechargeImportEntity item = new WalletRechargeImportEntity(); + item.setId(v.getId()); + item.setApplyId(apply.getId()); + return item; + }).toList(); + rechargeImportService.updateBatchById(updateObjList); + } + // 更新发票状态 + WalletRechargeInvoiceEntity updateObj = new WalletRechargeInvoiceEntity(); + updateObj.setId(invoice.getId()); + updateObj.setStatus(WalletRechargeInvoiceStatusEnum.BINDED.getCode()); + updateObj.setApplyId(apply.getId()); + walletRechargeInvoiceService.updateById(updateObj); + } + @Override public void create(WalletRechargeApplyEntity dto) { PjcloudUser loginUser = SecurityUtils.getUser(); @@ -149,6 +192,10 @@ public class WalletRechargeApplyServiceImpl extends ServiceImpl excelVOList, BindingResult bindingResult) { + public R readExcel(List excelVOList, BindingResult bindingResult, String bizType) { ImmutablePair, List> pair = validateExcelData(excelVOList, bindingResult); List errorMessages = pair.getLeft(); List list = pair.getRight(); @@ -263,6 +317,7 @@ public class WalletRechargeApplyServiceImpl extends ServiceImpl importList = rechargeImportService.list(new LambdaQueryWrapper().eq(WalletRechargeImportEntity::getApplyId, detail.getId())); if (ObjectUtil.isEmpty(importList)) { diff --git a/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/service/impl/recharge/WalletRechargeInvoiceServiceImpl.java b/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/service/impl/recharge/WalletRechargeInvoiceServiceImpl.java index 7d61ad10e..2f5dc1cbf 100644 --- a/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/service/impl/recharge/WalletRechargeInvoiceServiceImpl.java +++ b/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/service/impl/recharge/WalletRechargeInvoiceServiceImpl.java @@ -67,6 +67,11 @@ public class WalletRechargeInvoiceServiceImpl extends ServiceImpl() .eq(WalletRechargeInvoiceEntity::getApplyId, id) - .eq(WalletRechargeInvoiceEntity::getStatus, WalletRechargeInvoiceStatusEnum.UNCHECKED.getCode()) + .eq(WalletRechargeInvoiceEntity::getStatus, WalletRechargeInvoiceStatusEnum.UNBIND.getCode()) ); if (ObjectUtil.isNotEmpty(InvoiceEntity)) { result = BeanUtil.copyProperties(InvoiceEntity, WalletRechargeInvoiceVo.class); @@ -136,7 +141,7 @@ public class WalletRechargeInvoiceServiceImpl extends ServiceImpl list) { if (ObjectUtil.isEmpty(list)) return; for (Long v : list) { WalletRechargeInvoiceEntity detail = baseMapper.selectById(v); - if (ObjectUtil.isEmpty(detail)) continue; - if (ObjectUtil.isNotEmpty(detail.getStatus()) && ObjectUtil.notEqual(detail.getStatus(), WalletRechargeInvoiceStatusEnum.UNCHECKED.getCode())) { - UserInfo userInfo = remoteUserService.getByUserId(detail.getApplyId()).getData(); - throw new RuntimeException("用户<" + userInfo.getSysUser().getName() + ">发起的审批不能删除"); + if (ObjectUtil.isEmpty(detail) || ObjectUtil.isEmpty(detail.getApplyId())) continue; + if (ObjectUtil.isNotEmpty(detail.getStatus()) && ObjectUtil.notEqual(detail.getStatus(), WalletRechargeInvoiceStatusEnum.UNBIND.getCode())) { + UserInfo userInfo = remoteUserService.getByUserId(detail.getApplyUserId()).getData(); + throw new RuntimeException("用户<" + userInfo.getSysUser().getName() + ">创建的发票已经" + WalletRechargeInvoiceStatusEnum.codeOf(detail.getStatus()).getDesc() + "不能删除"); } + // 删除申请记录 + baseMapper.deleteById(v); + // 删除申请记录条目 + importMapper.delete(new LambdaQueryWrapper().eq(WalletRechargeImportEntity::getApplyId, v)); } } @@ -210,6 +220,7 @@ public class WalletRechargeInvoiceServiceImpl extends ServiceImpl updateWrapper = new LambdaUpdateWrapper() .set(WalletRechargeApplyEntity::getInvoiceId, entity.getId()) diff --git a/pjcloud-wallet/pjcloud-wallet-biz/src/main/resources/mapper/recharge/WalletRechargeInvoiceMapper.xml b/pjcloud-wallet/pjcloud-wallet-biz/src/main/resources/mapper/recharge/WalletRechargeInvoiceMapper.xml index de44b763f..0ca287a8e 100644 --- a/pjcloud-wallet/pjcloud-wallet-biz/src/main/resources/mapper/recharge/WalletRechargeInvoiceMapper.xml +++ b/pjcloud-wallet/pjcloud-wallet-biz/src/main/resources/mapper/recharge/WalletRechargeInvoiceMapper.xml @@ -26,6 +26,7 @@ + a.del_flag = '0' and a.status = #{dto.status}