From 96fe8411518f3e922ff01ea5ce4c9e92fe7012cf Mon Sep 17 00:00:00 2001 From: dzc <2388224167@qq.com> Date: Tue, 15 Apr 2025 10:31:43 +0800 Subject: [PATCH] =?UTF-8?q?feat:=E8=AE=B0=E8=B4=A6=E6=89=A3=E6=AC=BE?= =?UTF-8?q?=E4=BD=99=E9=A2=9D=E5=88=A4=E6=96=AD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../WalletRechargeApplyCompareVo.java | 28 +++++++++++++ ...WalletRechargeApplyComposeServiceImpl.java | 25 ++++++++++++ .../WalletRechargeApplyServiceImpl.java | 40 ++++++++++++++++++- 3 files changed, 92 insertions(+), 1 deletion(-) diff --git a/pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/vo/recharge/WalletRechargeApplyCompareVo.java b/pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/vo/recharge/WalletRechargeApplyCompareVo.java index 4ec0f4c4e..6c74117c4 100644 --- a/pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/vo/recharge/WalletRechargeApplyCompareVo.java +++ b/pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/vo/recharge/WalletRechargeApplyCompareVo.java @@ -23,6 +23,16 @@ public class WalletRechargeApplyCompareVo extends HashMap { */ private String userMobile; + /** + * 操作前的余额 + */ + private Integer prenBalance; + + /** + * 扣减之后的余额 + */ + private Integer discountBalance; + public void setUserId(Long userId) { this.userId = userId; this.put("userId", userId); @@ -58,4 +68,22 @@ public class WalletRechargeApplyCompareVo extends HashMap { this.userMobile = userMobile; this.put("userMobile", userMobile); } + + public Integer getPrenBalance() { + return (Integer) this.get("prenBalance"); + } + + public void setPrenBalance(Integer prenBalance) { + this.prenBalance = prenBalance; + this.put("prenBalance", prenBalance); + } + + public Integer getDiscountBalance() { + return (Integer) this.get("discountBalance"); + } + + public void setDiscountBalance(Integer discountBalance) { + this.discountBalance = discountBalance; + this.put("discountBalance", discountBalance); + } } diff --git a/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/service/impl/recharge/WalletRechargeApplyComposeServiceImpl.java b/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/service/impl/recharge/WalletRechargeApplyComposeServiceImpl.java index 01f46e362..a9ebfbf21 100644 --- a/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/service/impl/recharge/WalletRechargeApplyComposeServiceImpl.java +++ b/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/service/impl/recharge/WalletRechargeApplyComposeServiceImpl.java @@ -7,14 +7,18 @@ import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.bsd.pjcloud.common.core.util.BeanUtils; import com.bsd.pjcloud.wallet.api.constant.WalletBizEnum; +import com.bsd.pjcloud.wallet.api.constant.WalletBizRechargeEnum; +import com.bsd.pjcloud.wallet.api.dto.WalletManageDto; import com.bsd.pjcloud.wallet.api.dto.recharge.WalletRechargeApplyDto; import com.bsd.pjcloud.wallet.api.dto.recharge.WalletRechargeImportDto; +import com.bsd.pjcloud.wallet.api.entity.WalletManageEntity; import com.bsd.pjcloud.wallet.api.entity.recharge.WalletRechargeApplyEntity; import com.bsd.pjcloud.wallet.api.entity.recharge.WalletRechargeImportEntity; import com.bsd.pjcloud.wallet.api.vo.recharge.WalletRechargeApplyCompareAceVo; import com.bsd.pjcloud.wallet.api.vo.recharge.WalletRechargeApplyCompareVo; import com.bsd.pjcloud.wallet.api.vo.recharge.WalletRechargeApplySelectCompareVo; import com.bsd.pjcloud.wallet.api.vo.recharge.WalletRechargeImportVo; +import com.bsd.pjcloud.wallet.mapper.WalletManageMapper; import com.bsd.pjcloud.wallet.mapper.WalletTransactionMapper; import com.bsd.pjcloud.wallet.service.WalletRechargeApplyComposeService; import lombok.RequiredArgsConstructor; @@ -38,6 +42,7 @@ public class WalletRechargeApplyComposeServiceImpl implements WalletRechargeAppl private final WalletRechargeApplyServiceImpl rechargeApplyService; private final WalletTransactionMapper walletTransactionMapper; + private final WalletManageMapper walletManageMapper; @Override @Transactional(rollbackFor = Exception.class) @@ -145,6 +150,26 @@ public class WalletRechargeApplyComposeServiceImpl implements WalletRechargeAppl v.put(currentImportKey + "_price", target.getPrice()); } } + + // 查询当前钱包余额 + WalletManageDto userWalletDto = new WalletManageDto(); + userWalletDto.setUserIds(userIdList); + userWalletDto.setWalletTypeId(topUpApplyDetail.getWalletTypeId()); + List userWalletList = walletManageMapper.list(userWalletDto); + if (ObjectUtil.isNotEmpty(userWalletList) && ObjectUtil.isNotEmpty(resultList)) { + for (WalletRechargeApplyCompareVo i : resultList) { + userWalletList.stream().filter(j -> ObjectUtil.equals(i.getUserId(), j.getUserId())).findFirst().ifPresent(j -> { + i.setPrenBalance(j.getBalance()); + if (ObjectUtil.equals(topUpApplyDetail.getBizType(), WalletBizRechargeEnum.REDUCTION.getCode())) { + Integer currentImportPrice = (Integer) i.get("currentImport_price"); + if (ObjectUtil.isNotEmpty(currentImportPrice)) { + i.setDiscountBalance(j.getBalance() - currentImportPrice); + } + } + }); + } + } + resultVo.setRecords(resultList); List tableListStr = new ArrayList<>(); tableListStr.add(merge.get(0) + "(上个月总充值金额)"); 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 382408e0b..e73c503c4 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 @@ -16,6 +16,7 @@ import com.bsd.pjcloud.admin.api.entity.SysUser; import com.bsd.pjcloud.admin.api.feign.RemoteDeptService; import com.bsd.pjcloud.admin.api.feign.RemoteUserService; import com.bsd.pjcloud.admin.api.utils.DataUtil; +import com.bsd.pjcloud.admin.api.vo.UserVO; import com.bsd.pjcloud.common.core.exception.ErrorCodes; import com.bsd.pjcloud.common.core.util.BeanUtils; import com.bsd.pjcloud.common.core.util.CollectionUtils; @@ -32,6 +33,7 @@ import com.bsd.pjcloud.flow.task.dto.TaskDto; import com.bsd.pjcloud.wallet.api.constant.WalletBizEnum; import com.bsd.pjcloud.wallet.api.constant.WalletBizRechargeEnum; 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; @@ -44,6 +46,7 @@ import com.bsd.pjcloud.wallet.api.utils.WalletDataUtil; import com.bsd.pjcloud.wallet.api.vo.recharge.WalletRechargeApplyVo; import com.bsd.pjcloud.wallet.api.vo.recharge.WalletRechargeImportVo; import com.bsd.pjcloud.wallet.api.vo.recharge.excel.WalletRechargeByApplyExcelVo; +import com.bsd.pjcloud.wallet.mapper.WalletManageMapper; import com.bsd.pjcloud.wallet.mapper.WalletTransactionMapper; import com.bsd.pjcloud.wallet.mapper.WalletTypeMapper; import com.bsd.pjcloud.wallet.mapper.recharge.WalletRechargeApplyMapper; @@ -84,6 +87,7 @@ public class WalletRechargeApplyServiceImpl extends ServiceImpl importList = rechargeImportService.list(new LambdaQueryWrapper() + .eq(WalletRechargeImportEntity::getApplyId, detail.getId()) + ); + List importUserIds = importList.stream().map(WalletRechargeImportEntity::getUserId).distinct().toList(); + // 查询用户 + List userList = userService.getUserDeptByIds(importUserIds).getData(); + // 错误信息 + StringBuilder errorMsg = new StringBuilder(); + // 查询用户余额 + WalletManageDto userWalletDto = new WalletManageDto(); + userWalletDto.setUserIds(importUserIds); + userWalletDto.setWalletTypeId(detail.getWalletTypeId()); + List userWalletList = walletManageMapper.list(userWalletDto); + for (WalletRechargeImportEntity i : importList) { + userWalletList.stream().filter(j -> ObjectUtil.equals(i.getUserId(), j.getUserId())).findFirst().ifPresent(wallet -> { + int discountPrice = wallet.getBalance() - i.getPrice(); + // 查询用户名字 + UserVO userTarget = userList.stream().filter(j -> ObjectUtil.equals(i.getUserId(), j.getUserId())).findFirst().get(); + if (ObjectUtil.isEmpty(userTarget)) { + errorMsg.append("用户id<").append(wallet.getUserId()).append(">"); + } else { + errorMsg.append("用户名<").append(userTarget.getName()).append(">"); + } + errorMsg.append("记账扣款失败,"); + errorMsg.append("操作前的金额<").append(wallet.getBalance() / 100).append(">,"); + errorMsg.append("记账扣款的金额<").append(i.getPrice() / 100).append(">,"); + errorMsg.append("记账扣款后的金额<").append(discountPrice / 100).append(">\n"); + }); + } + String errorMsgString = errorMsg.toString(); + if (ObjectUtil.isNotEmpty(errorMsgString)) throw new RuntimeException(errorMsgString); + } // 发起审批 WalletRechargeApplyFlowDto flowDto = new WalletRechargeApplyFlowDto(); flowDto.setApplyUsername(user.getSysUser().getUsername()); @@ -277,7 +315,7 @@ public class WalletRechargeApplyServiceImpl extends ServiceImpl batchSaveList = list.stream().map(v -> WalletRechargeImportEntity.builder().price(v.getPriceNumber()).userId(v.getUserId()).userDeptId(v.getUserDeptId()).build()).toList(); batchSaveList.forEach(v -> v.setApplyId(insertObj.getId())); rechargeImportService.saveBatch(batchSaveList); - return R.ok(null, MsgUtils.getMessage(ErrorCodes.SYS_USER_IMPORT_SUCCEED)); + return R.ok(null, "导入成功"); } /* ************************************* end excel end ************************************* */