From 449740d0cfe36c943acc21952afb76816219d3da Mon Sep 17 00:00:00 2001 From: dzc <2388224167@qq.com> Date: Tue, 7 Jan 2025 18:21:59 +0800 Subject: [PATCH] =?UTF-8?q?feat=EF=BC=9A=E5=85=85=E5=80=BC=E3=80=81?= =?UTF-8?q?=E6=B6=88=E8=B4=B9=E3=80=81=E9=80=80=E6=AC=BE=E8=AE=B0=E5=BD=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../wallet/api/constant/WalletBizEnum.java | 1 + .../wallet/api/dto/WalletTransactionDto.java | 8 +++++ .../wallet/api/vo/WalletTransactionVo.java | 32 ++++++++++++++++- .../WalletTransactionController.java | 26 ++++++++++---- .../mapper/WalletTransactionMapper.java | 17 ++++++++-- .../service/WalletTransactionService.java | 2 +- .../impl/WalletTransactionServiceImpl.java | 34 +++++++++++++++++-- 7 files changed, 107 insertions(+), 13 deletions(-) diff --git a/pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/constant/WalletBizEnum.java b/pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/constant/WalletBizEnum.java index 8f36c9a05..671866c14 100644 --- a/pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/constant/WalletBizEnum.java +++ b/pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/constant/WalletBizEnum.java @@ -13,6 +13,7 @@ public enum WalletBizEnum { BATCH("2", "批量更新余额"), RECHARGE("3", "充值"), PAYMENT("4", "支付"), + REFUND("5", "退款"), ; private final String code; diff --git a/pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/dto/WalletTransactionDto.java b/pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/dto/WalletTransactionDto.java index a1c2976c2..235f642d4 100644 --- a/pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/dto/WalletTransactionDto.java +++ b/pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/dto/WalletTransactionDto.java @@ -4,6 +4,8 @@ import com.bsd.pjcloud.wallet.api.entity.WalletTransactionEntity; import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; +import java.util.List; + @Data public class WalletTransactionDto extends WalletTransactionEntity { @@ -24,4 +26,10 @@ public class WalletTransactionDto extends WalletTransactionEntity { */ private Long userId; + private List userIds; + + private Long walletTypeId; + + private List bizTypes; + } diff --git a/pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/vo/WalletTransactionVo.java b/pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/vo/WalletTransactionVo.java index 9663288ca..f5865739f 100644 --- a/pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/vo/WalletTransactionVo.java +++ b/pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/vo/WalletTransactionVo.java @@ -1,8 +1,38 @@ package com.bsd.pjcloud.wallet.api.vo; +import com.bsd.pjcloud.admin.api.vo.base.BaseDeptInterface; +import com.bsd.pjcloud.admin.api.vo.base.BaseUserInterface; import com.bsd.pjcloud.wallet.api.entity.WalletTransactionEntity; import lombok.Data; @Data -public class WalletTransactionVo extends WalletTransactionEntity { +public class WalletTransactionVo extends WalletTransactionEntity implements BaseUserInterface, BaseDeptInterface { + + /** + * 用户相关 + */ + + private Long userId; + + private String username; + + private String userMobile; + + private String userAvatar; + + /** + * 部门相关 + */ + + private Long deptId; + + private String deptName; + + /** + * 钱包类型相关 + */ + private String walletTypeName; + + private String walletTypeUniqueCode; + } diff --git a/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/controller/WalletTransactionController.java b/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/controller/WalletTransactionController.java index 3dfb2e501..87af060c3 100644 --- a/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/controller/WalletTransactionController.java +++ b/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/controller/WalletTransactionController.java @@ -11,6 +11,7 @@ import com.bsd.pjcloud.common.log.annotation.SysLog; import com.bsd.pjcloud.common.security.annotation.Inner; import com.bsd.pjcloud.common.security.service.PjcloudUser; import com.bsd.pjcloud.common.security.util.SecurityUtils; +import com.bsd.pjcloud.wallet.api.constant.WalletBizEnum; import com.bsd.pjcloud.wallet.api.dto.WalletBalanceTransactionDto; import com.bsd.pjcloud.wallet.api.dto.WalletTransactionDto; import com.bsd.pjcloud.wallet.api.entity.WalletTransactionEntity; @@ -77,12 +78,25 @@ public class WalletTransactionController { return R.ok(walletTransactionService.updateWalletBalance(dto)); } - @Operation(summary = "分页查询", description = "分页查询") - @GetMapping("/page") - @PreAuthorize("@pms.hasPermission('wallet_walletTransaction_view')") - public R getWalletTransactionPage(@ParameterObject Page page, @ParameterObject WalletTransactionEntity dto) { - LambdaQueryWrapper wrapper = new LambdaQueryWrapper(); - return R.ok(walletTransactionService.page(page, wrapper)); + @Operation(summary = "后台充值分页", description = "后台充值分页") + @GetMapping("/page-cz") + public R pageCz(@ParameterObject Page page, @ParameterObject WalletTransactionDto dto) { + dto.setBizTypes(List.of(WalletBizEnum.RECHARGE.getCode())); + return R.ok(walletTransactionService.pageJoin(page, dto)); + } + + @Operation(summary = "后台消费分页", description = "后台消费分页") + @GetMapping("/page-xf") + public R pageXf(@ParameterObject Page page, @ParameterObject WalletTransactionDto dto) { + dto.setBizTypes(List.of(WalletBizEnum.PAYMENT.getCode())); + return R.ok(walletTransactionService.pageJoin(page, dto)); + } + + @Operation(summary = "后台退款分页", description = "后台退款分页") + @GetMapping("/page-tk") + public R pageTk(@ParameterObject Page page, @ParameterObject WalletTransactionDto dto) { + dto.setBizTypes(List.of(WalletBizEnum.REFUND.getCode())); + return R.ok(walletTransactionService.pageJoin(page, dto)); } @Operation(summary = "分页查询复杂查询", description = "分页查询复杂查询") diff --git a/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/mapper/WalletTransactionMapper.java b/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/mapper/WalletTransactionMapper.java index 5a236edd0..58821ce05 100644 --- a/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/mapper/WalletTransactionMapper.java +++ b/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/mapper/WalletTransactionMapper.java @@ -8,6 +8,7 @@ import com.bsd.pjcloud.common.data.datascope.PjcloudBaseMapper; import com.bsd.pjcloud.wallet.api.dto.WalletTransactionDto; import com.bsd.pjcloud.wallet.api.entity.WalletManageEntity; import com.bsd.pjcloud.wallet.api.entity.WalletTransactionEntity; +import com.bsd.pjcloud.wallet.api.entity.WalletTypeEntity; import com.bsd.pjcloud.wallet.api.vo.WalletManageVo; import com.bsd.pjcloud.wallet.api.vo.WalletTransactionVo; import com.github.yulichang.wrapper.MPJLambdaWrapper; @@ -18,10 +19,20 @@ import java.util.Objects; @Mapper public interface WalletTransactionMapper extends PjcloudBaseMapper { - default IPage pageJoin(Page page, WalletTransactionDto dto) { + default Page pageJoin(Page page, WalletTransactionDto dto) { MPJLambdaWrapper wrapper = new MPJLambdaWrapper() - .eqIfExists(WalletTransactionEntity::getWalletId, dto.getWalletId()); - + .selectAll(WalletTransactionEntity.class) + .selectAs(WalletManageEntity::getUserId, WalletTransactionVo::getUserId) + .selectAs(WalletManageEntity::getDeptId, WalletTransactionVo::getDeptId) + .selectAs(WalletTypeEntity::getName, WalletTransactionVo::getWalletTypeName) + .selectAs(WalletTypeEntity::getUniqueCode, WalletTransactionVo::getWalletTypeUniqueCode) + .leftJoin(WalletManageEntity.class, WalletManageEntity::getId, WalletTransactionEntity::getWalletId) + .leftJoin(WalletTypeEntity.class, WalletTypeEntity::getId, WalletManageEntity::getWalletTypeId) + .eqIfExists(WalletTransactionEntity::getWalletId, dto.getWalletId()) + .eqIfExists(WalletTransactionEntity::getBizType, dto.getBizType()) + .eqIfExists(WalletManageEntity::getWalletTypeId, dto.getWalletTypeId()) + .in(ObjectUtil.isNotEmpty(dto.getBizTypes()), WalletTransactionEntity::getBizType, dto.getBizTypes()) + .in(ObjectUtil.isNotEmpty(dto.getUserIds()), WalletManageEntity::getUserId, dto.getUserIds()); if (ObjectUtil.equals(dto.getType(), WalletTransactionDto.TYPE_INCOME)) { wrapper.gt(WalletTransactionEntity::getPrice, 0); } else if (Objects.equals(dto.getType(), WalletTransactionDto.TYPE_EXPENSE)) { diff --git a/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/service/WalletTransactionService.java b/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/service/WalletTransactionService.java index 6ffe61ce9..b71e691b5 100644 --- a/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/service/WalletTransactionService.java +++ b/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/service/WalletTransactionService.java @@ -47,5 +47,5 @@ public interface WalletTransactionService extends IService pageJoin(Page page, WalletTransactionDto dto); + Page pageJoin(Page page, WalletTransactionDto dto); } \ No newline at end of file diff --git a/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/service/impl/WalletTransactionServiceImpl.java b/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/service/impl/WalletTransactionServiceImpl.java index 16f823e54..93499be1c 100644 --- a/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/service/impl/WalletTransactionServiceImpl.java +++ b/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/service/impl/WalletTransactionServiceImpl.java @@ -6,12 +6,20 @@ import com.alibaba.fastjson.JSON; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.bsd.pjcloud.admin.api.entity.SysDept; +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.common.core.constant.CacheConstants; import com.bsd.pjcloud.common.core.exception.CheckedException; +import com.bsd.pjcloud.common.core.util.CollectionUtils; +import com.bsd.pjcloud.common.core.util.R; import com.bsd.pjcloud.wallet.api.constant.WalletBizEnum; import com.bsd.pjcloud.wallet.api.dto.WalletTransactionDto; import com.bsd.pjcloud.wallet.api.entity.WalletManageEntity; import com.bsd.pjcloud.wallet.api.entity.WalletTransactionEntity; +import com.bsd.pjcloud.wallet.api.vo.WalletManageVo; import com.bsd.pjcloud.wallet.api.vo.WalletTransactionVo; import com.bsd.pjcloud.wallet.mapper.WalletManageMapper; import com.bsd.pjcloud.wallet.mapper.WalletTransactionMapper; @@ -25,6 +33,10 @@ import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import org.springframework.validation.annotation.Validated; +import java.util.ArrayList; +import java.util.List; +import java.util.Map; + /** * 会员钱包流水表 * @@ -43,6 +55,9 @@ public class WalletTransactionServiceImpl extends ServiceImpl pageJoin(Page page, WalletTransactionDto dto) { - return baseMapper.pageJoin(page, dto); + public Page pageJoin(Page page, WalletTransactionDto dto) { + Page list = baseMapper.pageJoin(page, dto); + if (ObjectUtil.isNotEmpty(list.getRecords())) { + // 用户 + List userIds = list.getRecords().stream().map(WalletTransactionVo::getUserId).distinct().toList(); + R> userList = userService.getUserById(new ArrayList<>(userIds)); + if (ObjectUtil.isNotEmpty(userList.getData())) { + DataUtil.convertUserList(list.getRecords(), CollectionUtils.convertMap(userList.getData(), SysUser::getUserId)); + } + // 部门 + List deptIds = list.getRecords().stream().map(WalletTransactionVo::getDeptId).distinct().toList(); + R> deptList = deptService.getDeptByDeptIds(deptIds); + if (ObjectUtil.isNotEmpty(deptList.getData())) { + DataUtil.convertDeptList(list.getRecords(), deptList.getData()); + } + } + return list; } } \ No newline at end of file