From 7e1be7ef2f3c9e74600b7af62a02cf69645a5297 Mon Sep 17 00:00:00 2001 From: dzc <2388224167@qq.com> Date: Thu, 23 Jan 2025 13:12:31 +0800 Subject: [PATCH] =?UTF-8?q?feat:=E9=83=A8=E9=97=A8=E4=BA=A4=E6=98=93?= =?UTF-8?q?=E8=AE=B0=E5=BD=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../constant/order/HardOrderStatusEnum.java | 6 + .../dto/order/HardOrderSumAndCountDto.java | 17 +++ .../hard/api/vo/order/HardDeptTotalVo.java | 33 ++++++ .../api/vo/order/HardOrderSumAndCountVo.java | 18 +++ .../order/HardOrderTotalController.java | 8 ++ .../hard/mapper/order/HardOrderMapper.java | 4 + .../hard/service/HardOrderTotalService.java | 3 + .../impl/order/HardOrderTotalServiceImpl.java | 81 ++++++++++++++ .../mapper/order/HardOrderMapper.xml | 28 +++++ .../admin/api/feign/RemoteDeptService.java | 5 + .../admin/controller/SysDeptController.java | 6 + .../dto/WalletTransactionSumAndCountDto.java | 27 +++++ .../feign/RemoteWalletTransactionService.java | 8 ++ .../vo/WalletTransactionSumAndCountVo.java | 18 +++ .../WalletTransactionController.java | 11 ++ .../mapper/WalletTransactionMapper.java | 4 + .../mapper/WalletTransactionMapper.xml | 105 ++++++++++++------ 17 files changed, 350 insertions(+), 32 deletions(-) create mode 100644 pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/dto/order/HardOrderSumAndCountDto.java create mode 100644 pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/vo/order/HardDeptTotalVo.java create mode 100644 pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/vo/order/HardOrderSumAndCountVo.java create mode 100644 pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/dto/WalletTransactionSumAndCountDto.java create mode 100644 pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/vo/WalletTransactionSumAndCountVo.java diff --git a/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/constant/order/HardOrderStatusEnum.java b/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/constant/order/HardOrderStatusEnum.java index e439d91e4..fdf1d8a4c 100644 --- a/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/constant/order/HardOrderStatusEnum.java +++ b/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/constant/order/HardOrderStatusEnum.java @@ -30,6 +30,12 @@ public enum HardOrderStatusEnum { ); } + public static List getPayErrorCodes() { + return List.of( + HardOrderStatusEnum.REFUND.type + ); + } + public static HardOrderStatusEnum valueOfByType(Integer type) { if (ObjectUtil.isEmpty(type)) return null; return Arrays.stream(values()).filter(v -> ObjectUtil.equals(type, v.getType())).findFirst().get(); diff --git a/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/dto/order/HardOrderSumAndCountDto.java b/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/dto/order/HardOrderSumAndCountDto.java new file mode 100644 index 000000000..225ea7a4a --- /dev/null +++ b/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/dto/order/HardOrderSumAndCountDto.java @@ -0,0 +1,17 @@ +package com.bsd.pjcloud.hard.api.dto.order; + +import lombok.Data; + +import java.time.LocalDateTime; +import java.util.List; + +@Data +public class HardOrderSumAndCountDto { + + private List deptIds; + + private List orderStatusCodes; + + private LocalDateTime[] createTimeList; + +} diff --git a/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/vo/order/HardDeptTotalVo.java b/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/vo/order/HardDeptTotalVo.java new file mode 100644 index 000000000..6503c1efa --- /dev/null +++ b/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/vo/order/HardDeptTotalVo.java @@ -0,0 +1,33 @@ +package com.bsd.pjcloud.hard.api.vo.order; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +@Data +public class HardDeptTotalVo { + + @Schema(description = "部门id") + private Long deptId; + + @Schema(description = "部门名") + private String deptName; + + @Schema(description = "充值金额") + private Long walletPrice = 0L; + + @Schema(description = "充值次数") + private Long walletCount = 0L; + + @Schema(description = "消费金额") + private Long orderPayPrice = 0L; + + @Schema(description = "消费次数") + private Long orderPayCount = 0L; + + @Schema(description = "退款金额") + private Long orderRefundPrice = 0L; + + @Schema(description = "退款次数") + private Long orderRefundCont = 0L; + +} diff --git a/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/vo/order/HardOrderSumAndCountVo.java b/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/vo/order/HardOrderSumAndCountVo.java new file mode 100644 index 000000000..1cb18ec48 --- /dev/null +++ b/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/vo/order/HardOrderSumAndCountVo.java @@ -0,0 +1,18 @@ +package com.bsd.pjcloud.hard.api.vo.order; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +@Data +public class HardOrderSumAndCountVo { + + @Schema(description = "部门id") + private Long deptId; + + @Schema(description = "部门操作金额") + private Long sum; + + @Schema(description = "部门操作金额数量") + private Long count; + +} diff --git a/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/controller/order/HardOrderTotalController.java b/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/controller/order/HardOrderTotalController.java index 7e3511f83..e56565163 100644 --- a/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/controller/order/HardOrderTotalController.java +++ b/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/controller/order/HardOrderTotalController.java @@ -13,6 +13,7 @@ import com.bsd.pjcloud.common.core.util.R; import com.bsd.pjcloud.hard.api.constant.HardTypeEnum; import com.bsd.pjcloud.hard.api.constant.order.HardOrderStatusEnum; import com.bsd.pjcloud.hard.api.dto.order.HardOrderDto; +import com.bsd.pjcloud.hard.api.vo.order.HardDeptTotalVo; import com.bsd.pjcloud.hard.api.vo.order.HardOrderCsVo; import com.bsd.pjcloud.hard.api.vo.order.HardOrderSbVo; import com.bsd.pjcloud.hard.service.HardOrderTotalService; @@ -56,6 +57,13 @@ public class HardOrderTotalController { return R.ok(HardOrderTotalService.pageListCs(page, dto)); } + @GetMapping("/page-list-dept") + @Operation(summary = "部门交易记录") + public R> pageListDept(@ParameterObject Page page, @ParameterObject HardOrderDto dto) { + dto.setOrderStatusCodes(HardOrderStatusEnum.getPaySuccessCodes()); + return R.ok(HardOrderTotalService.pageListDept(page, dto)); + } + @Operation(summary = "设备交易记录导出", description = "退款导出") @GetMapping("/export-sb") @PreAuthorize("@pms.hasPermission('hard_hardTotal_export_sb')") diff --git a/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/mapper/order/HardOrderMapper.java b/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/mapper/order/HardOrderMapper.java index 3f3d3cff9..1f3a99c1f 100644 --- a/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/mapper/order/HardOrderMapper.java +++ b/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/mapper/order/HardOrderMapper.java @@ -7,11 +7,13 @@ import com.bsd.pjcloud.common.core.util.BeanUtils; import com.bsd.pjcloud.common.data.datascope.DataScope; import com.bsd.pjcloud.common.data.datascope.PjcloudBaseMapper; import com.bsd.pjcloud.hard.api.dto.order.HardOrderDto; +import com.bsd.pjcloud.hard.api.dto.order.HardOrderSumAndCountDto; import com.bsd.pjcloud.hard.api.entity.HardManagerEntity; import com.bsd.pjcloud.hard.api.entity.order.HardAfterSaleEntity; import com.bsd.pjcloud.hard.api.entity.order.HardOrderEntity; import com.bsd.pjcloud.hard.api.vo.order.HardOrderCsVo; import com.bsd.pjcloud.hard.api.vo.order.HardOrderSbVo; +import com.bsd.pjcloud.hard.api.vo.order.HardOrderSumAndCountVo; import com.bsd.pjcloud.hard.api.vo.order.HardOrderVo; import com.github.yulichang.wrapper.MPJLambdaWrapper; import org.apache.ibatis.annotations.Mapper; @@ -85,4 +87,6 @@ public interface HardOrderMapper extends PjcloudBaseMapper { Page pageListCs(Page page, @Param("dto") HardOrderDto dto); List listCs(@Param("dto") HardOrderDto dto); + + List sumAndCount(@Param("dto") HardOrderSumAndCountDto dto); } \ No newline at end of file diff --git a/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/HardOrderTotalService.java b/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/HardOrderTotalService.java index e4f2e72b7..cdd9f6d03 100644 --- a/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/HardOrderTotalService.java +++ b/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/HardOrderTotalService.java @@ -2,6 +2,7 @@ package com.bsd.pjcloud.hard.service; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.bsd.pjcloud.hard.api.dto.order.HardOrderDto; +import com.bsd.pjcloud.hard.api.vo.order.HardDeptTotalVo; import com.bsd.pjcloud.hard.api.vo.order.HardOrderCsVo; import com.bsd.pjcloud.hard.api.vo.order.HardOrderSbVo; @@ -16,4 +17,6 @@ public interface HardOrderTotalService { Page pageListCs(Page page, HardOrderDto dto); List listCs(HardOrderDto dto); + + Page pageListDept(Page page, HardOrderDto dto); } diff --git a/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/impl/order/HardOrderTotalServiceImpl.java b/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/impl/order/HardOrderTotalServiceImpl.java index 1e185a6b1..72a3a21f3 100644 --- a/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/impl/order/HardOrderTotalServiceImpl.java +++ b/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/impl/order/HardOrderTotalServiceImpl.java @@ -3,25 +3,37 @@ package com.bsd.pjcloud.hard.service.impl.order; import cn.hutool.core.util.ObjectUtil; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.bsd.pjcloud.admin.api.entity.SysDept; +import com.bsd.pjcloud.admin.api.feign.RemoteDeptService; +import com.bsd.pjcloud.common.core.util.BeanUtils; import com.bsd.pjcloud.common.core.util.CollectionUtils; +import com.bsd.pjcloud.hard.api.constant.order.HardOrderStatusEnum; import com.bsd.pjcloud.hard.api.dto.HardManagerDto; import com.bsd.pjcloud.hard.api.dto.order.HardOrderDto; +import com.bsd.pjcloud.hard.api.dto.order.HardOrderSumAndCountDto; import com.bsd.pjcloud.hard.api.entity.HardManagerEntity; import com.bsd.pjcloud.hard.api.utils.HardUtil; +import com.bsd.pjcloud.hard.api.vo.order.HardDeptTotalVo; import com.bsd.pjcloud.hard.api.vo.order.HardOrderCsVo; import com.bsd.pjcloud.hard.api.vo.order.HardOrderSbVo; +import com.bsd.pjcloud.hard.api.vo.order.HardOrderSumAndCountVo; import com.bsd.pjcloud.hard.mapper.HardManagerMapper; import com.bsd.pjcloud.hard.mapper.order.HardOrderMapper; import com.bsd.pjcloud.hard.service.HardOrderTotalService; +import com.bsd.pjcloud.wallet.api.dto.WalletTransactionSumAndCountDto; import com.bsd.pjcloud.wallet.api.feign.RemoteMchService; +import com.bsd.pjcloud.wallet.api.feign.RemoteWalletTransactionService; import com.bsd.pjcloud.wallet.api.utils.WalletDataUtil; import com.bsd.pjcloud.wallet.api.vo.MchManageVo; +import com.bsd.pjcloud.wallet.api.vo.WalletTransactionSumAndCountVo; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; import org.springframework.validation.annotation.Validated; +import java.util.ArrayList; import java.util.List; +import java.util.concurrent.CompletableFuture; @Validated @Slf4j @@ -33,6 +45,8 @@ public class HardOrderTotalServiceImpl implements HardOrderTotalService { private final HardManagerMapper hardManagerMapper; private final RemoteMchService remoteMchService; + private final RemoteWalletTransactionService remoteWalletTransactionService; + private final RemoteDeptService remoteDeptService; @Override public Page pageListSb(Page page, HardOrderDto dto) { @@ -117,4 +131,71 @@ public class HardOrderTotalServiceImpl implements HardOrderTotalService { } return list; } + + @Override + public Page pageListDept(Page page, HardOrderDto dto) { + // 查询部门 + CompletableFuture> deptFuture = CompletableFuture.supplyAsync(() -> + remoteDeptService.getInnerAllDept().getData() + ); + CompletableFuture> resultListFuture = deptFuture.thenApply(deptList -> { + if (ObjectUtil.isEmpty(deptList)) return null; + List deptIds = deptList.stream().map(SysDept::getDeptId).filter(ObjectUtil::isNotEmpty).distinct().toList(); + List resultList = deptList.stream().map(v -> { + HardDeptTotalVo item = new HardDeptTotalVo(); + item.setDeptId(v.getDeptId()); + item.setDeptName(v.getName()); + return item; + }).toList(); + // 查询钱包流水 + CompletableFuture> walletFuture = CompletableFuture.supplyAsync(() -> { + WalletTransactionSumAndCountDto walletDto = new WalletTransactionSumAndCountDto(); + walletDto.setDeptIds(deptIds); + return remoteWalletTransactionService.sumAndCount(walletDto).getData(); + }); + // 查询订单支付流水 + CompletableFuture> payFuture = CompletableFuture.supplyAsync(() -> { + HardOrderSumAndCountDto payDto = new HardOrderSumAndCountDto(); + payDto.setDeptIds(deptIds); + payDto.setOrderStatusCodes(HardOrderStatusEnum.getPaySuccessCodes()); + return hardOrderMapper.sumAndCount(payDto); + }); + // 查询订单退款流水 + CompletableFuture> refundFuture = CompletableFuture.supplyAsync(() -> { + HardOrderSumAndCountDto refundDto = new HardOrderSumAndCountDto(); + refundDto.setDeptIds(deptIds); + refundDto.setOrderStatusCodes(HardOrderStatusEnum.getPayErrorCodes()); + return hardOrderMapper.sumAndCount(refundDto); + }); + CompletableFuture allFutures = CompletableFuture.allOf(walletFuture, payFuture, refundFuture); + allFutures.join(); + List walletList = walletFuture.join(); + List payList = payFuture.join(); + List refundList = refundFuture.join(); + // 聚合一下数据 + for (HardDeptTotalVo v : resultList) { + if (ObjectUtil.isNotEmpty(walletList)) { + walletList.stream().filter(i -> ObjectUtil.equals(i.getDeptId(), v.getDeptId())).findFirst().ifPresent(i -> { + v.setWalletPrice(i.getSum()); + v.setWalletCount(i.getCount()); + }); + } + if (ObjectUtil.isNotEmpty(payList)) { + payList.stream().filter(i -> ObjectUtil.equals(i.getDeptId(), v.getDeptId())).findFirst().ifPresent(i -> { + v.setOrderPayPrice(i.getSum()); + v.setOrderPayCount(i.getCount()); + }); + } + if (ObjectUtil.isNotEmpty(refundList)) { + refundList.stream().filter(i -> ObjectUtil.equals(i.getDeptId(), v.getDeptId())).findFirst().ifPresent(i -> { + v.setOrderRefundPrice(i.getSum()); + v.setOrderRefundCont(i.getCount()); + }); + } + } + return resultList; + }); + List resultList = resultListFuture.join(); + return null; + } } diff --git a/pjcloud-hardware/pjcloud-hardware-biz/src/main/resources/mapper/order/HardOrderMapper.xml b/pjcloud-hardware/pjcloud-hardware-biz/src/main/resources/mapper/order/HardOrderMapper.xml index b98c75c7c..f583469ba 100644 --- a/pjcloud-hardware/pjcloud-hardware-biz/src/main/resources/mapper/order/HardOrderMapper.xml +++ b/pjcloud-hardware/pjcloud-hardware-biz/src/main/resources/mapper/order/HardOrderMapper.xml @@ -137,4 +137,32 @@ group by a.merchant_id + + + \ No newline at end of file diff --git a/pjcloud-upms/pjcloud-upms-api/src/main/java/com/bsd/pjcloud/admin/api/feign/RemoteDeptService.java b/pjcloud-upms/pjcloud-upms-api/src/main/java/com/bsd/pjcloud/admin/api/feign/RemoteDeptService.java index f3bfa861e..3c9ceb845 100644 --- a/pjcloud-upms/pjcloud-upms-api/src/main/java/com/bsd/pjcloud/admin/api/feign/RemoteDeptService.java +++ b/pjcloud-upms/pjcloud-upms-api/src/main/java/com/bsd/pjcloud/admin/api/feign/RemoteDeptService.java @@ -47,6 +47,10 @@ public interface RemoteDeptService { @GetMapping("/dept/list") R> getAllDept(@RequestParam("parentDeptId") Long parentDeptId); + @NoToken + @GetMapping("/dept/inner-all-dept") + R> getInnerAllDept(); + /** * 通过部门ID获取负责人列表 * @@ -97,6 +101,7 @@ public interface RemoteDeptService { /** * 查询部门所属的分组部门 + * * @param deptId * @return */ diff --git a/pjcloud-upms/pjcloud-upms-biz/src/main/java/com/bsd/pjcloud/admin/controller/SysDeptController.java b/pjcloud-upms/pjcloud-upms-biz/src/main/java/com/bsd/pjcloud/admin/controller/SysDeptController.java index 1df2e796c..5732c87a6 100644 --- a/pjcloud-upms/pjcloud-upms-biz/src/main/java/com/bsd/pjcloud/admin/controller/SysDeptController.java +++ b/pjcloud-upms/pjcloud-upms-biz/src/main/java/com/bsd/pjcloud/admin/controller/SysDeptController.java @@ -216,4 +216,10 @@ public class SysDeptController { public R getParentDeptHardGroup(@RequestParam("deptId") Long deptId) { return R.ok(sysDeptService.getParentDeptHardGroup(deptId)); } + + @Inner + @GetMapping("/inner-all-dept") + public R> getInnerAllDept() { + return R.ok(sysDeptService.list()); + } } diff --git a/pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/dto/WalletTransactionSumAndCountDto.java b/pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/dto/WalletTransactionSumAndCountDto.java new file mode 100644 index 000000000..7aef47cf0 --- /dev/null +++ b/pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/dto/WalletTransactionSumAndCountDto.java @@ -0,0 +1,27 @@ +package com.bsd.pjcloud.wallet.api.dto; + +import lombok.Data; + +import java.time.LocalDateTime; +import java.util.List; + +@Data +public class WalletTransactionSumAndCountDto { + /** + * 类型 - 收入 + */ + public static final Integer TYPE_INCOME = 1; + /** + * 类型 - 支出 + */ + public static final Integer TYPE_EXPENSE = 2; + + private Integer type; + + private List deptIds; + + private List bizTypes; + + private LocalDateTime[] createTimeList; + +} diff --git a/pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/feign/RemoteWalletTransactionService.java b/pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/feign/RemoteWalletTransactionService.java index 3edd1049b..cfc56d68f 100644 --- a/pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/feign/RemoteWalletTransactionService.java +++ b/pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/feign/RemoteWalletTransactionService.java @@ -4,11 +4,15 @@ import com.bsd.pjcloud.common.core.constant.ServiceNameConstants; import com.bsd.pjcloud.common.core.util.R; import com.bsd.pjcloud.common.feign.annotation.NoToken; import com.bsd.pjcloud.wallet.api.dto.WalletBalanceTransactionDto; +import com.bsd.pjcloud.wallet.api.dto.WalletTransactionSumAndCountDto; import com.bsd.pjcloud.wallet.api.entity.WalletTransactionEntity; +import com.bsd.pjcloud.wallet.api.vo.WalletTransactionSumAndCountVo; import org.springframework.cloud.openfeign.FeignClient; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; +import java.util.List; + @FeignClient(contextId = "remoteWalletTransactionService", value = ServiceNameConstants.WALLET_SERVICE) public interface RemoteWalletTransactionService { @@ -20,4 +24,8 @@ public interface RemoteWalletTransactionService { @PostMapping("/wallet-transaction/reduce-balance") R reduceWalletBalance(@RequestBody WalletBalanceTransactionDto dto); + @NoToken + @PostMapping("/wallet-transaction/sum-and-count") + R> sumAndCount(@RequestBody WalletTransactionSumAndCountDto dto); + } diff --git a/pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/vo/WalletTransactionSumAndCountVo.java b/pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/vo/WalletTransactionSumAndCountVo.java new file mode 100644 index 000000000..19e1a79ff --- /dev/null +++ b/pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/vo/WalletTransactionSumAndCountVo.java @@ -0,0 +1,18 @@ +package com.bsd.pjcloud.wallet.api.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +@Data +public class WalletTransactionSumAndCountVo { + + @Schema(description = "部门id") + private Long deptId; + + @Schema(description = "部门操作金额") + private Long sum; + + @Schema(description = "部门操作金额数量") + private Long count; + +} 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 108bd2c99..514f84548 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 @@ -13,8 +13,11 @@ 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.dto.WalletTransactionSumAndCountDto; import com.bsd.pjcloud.wallet.api.entity.WalletTransactionEntity; +import com.bsd.pjcloud.wallet.api.vo.WalletTransactionSumAndCountVo; import com.bsd.pjcloud.wallet.api.vo.transaction.WalletTransactionVo; +import com.bsd.pjcloud.wallet.mapper.WalletTransactionMapper; import com.bsd.pjcloud.wallet.service.WalletTransactionService; import jakarta.servlet.http.HttpServletResponse; import jakarta.validation.Valid; @@ -44,6 +47,8 @@ public class WalletTransactionController { private final WalletTransactionService walletTransactionService; + private final WalletTransactionMapper walletTransactionMapper; + /* ************************************* start 远程调用 start ************************************* */ @Inner @PostMapping("/add-balance") @@ -60,6 +65,12 @@ public class WalletTransactionController { if (ObjectUtil.isEmpty(walletTransaction)) return R.failed("扣减钱包余额"); return R.ok(walletTransaction); } + + @Inner + @PostMapping("/sum-and-count") + public R> sumAndCount(@RequestBody WalletTransactionSumAndCountDto dto) { + return R.ok(walletTransactionMapper.sumAndCount(dto)); + } /* ************************************* end 远程调用 end ************************************* */ /* ************************************* start app start ************************************* */ 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 6e9b26fb8..314f94fb3 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 @@ -7,9 +7,11 @@ import com.bsd.pjcloud.common.core.util.BeanUtils; import com.bsd.pjcloud.common.data.datascope.DataScope; import com.bsd.pjcloud.common.data.datascope.PjcloudBaseMapper; import com.bsd.pjcloud.wallet.api.dto.WalletTransactionDto; +import com.bsd.pjcloud.wallet.api.dto.WalletTransactionSumAndCountDto; 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.WalletTransactionSumAndCountVo; import com.bsd.pjcloud.wallet.api.vo.recharge.WalletRechargeApplySelectCompareVo; import com.bsd.pjcloud.wallet.api.vo.transaction.WalletTransactionVo; import com.github.yulichang.wrapper.MPJLambdaWrapper; @@ -69,4 +71,6 @@ public interface WalletTransactionMapper extends PjcloudBaseMapper selectCompare(@Param("bizType") String bizType, @Param("dateTime") String monthTimeStr, @Param("userIdList") List userIdList); + + List sumAndCount(@Param("dto") WalletTransactionSumAndCountDto dto); } \ No newline at end of file diff --git a/pjcloud-wallet/pjcloud-wallet-biz/src/main/resources/mapper/WalletTransactionMapper.xml b/pjcloud-wallet/pjcloud-wallet-biz/src/main/resources/mapper/WalletTransactionMapper.xml index 32f9c016c..1c571c899 100644 --- a/pjcloud-wallet/pjcloud-wallet-biz/src/main/resources/mapper/WalletTransactionMapper.xml +++ b/pjcloud-wallet/pjcloud-wallet-biz/src/main/resources/mapper/WalletTransactionMapper.xml @@ -2,8 +2,7 @@ - - + @@ -11,36 +10,78 @@ - + - + + - + + + + + + + + + \ No newline at end of file