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 948c2e7fd..e3394b183 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 @@ -66,7 +66,7 @@ public class HardOrderTotalController { /* ************************************* start app start ************************************* */ @Operation(summary = "app查询商户每天流水记录", description = "app查询订单列表根据权限") @GetMapping("/app/mch-water-day") - public R appMchTotal(@ParameterObject Page page, @ParameterObject HardOrderDto dto) { + public R appMchWaterDay(@ParameterObject Page page, @ParameterObject HardOrderDto dto) { PjcloudUser user = SecurityUtils.getUser(); // 查询用户部门 UserInfo userInfo = userService.getByUserId(user.getId()).getData(); @@ -85,6 +85,30 @@ public class HardOrderTotalController { dto.setMchIds(mchDtoIds); return R.ok(hardOrderTotalService.listCsByDay(page, dto, user)); } + + @Operation(summary = "app查询商户全部流水记录", description = "app查询商户全部流水记录") + @GetMapping("/app/mch-water-total") + public R appMchWaterTotal(@ParameterObject HardOrderDto dto) { + PjcloudUser user = SecurityUtils.getUser(); + // 查询用户部门 + UserInfo userInfo = userService.getByUserId(user.getId()).getData(); + dto.setIsFindCarList(false); + // 判断是否为合作超市管理员工 + if (!hardManagerService.isSuperMarketAdmin(user)) return R.ok(new Page()); + // 查询用户属于的商户 + MchManageVo mch = mchService.getFirstMchByDeptId(userInfo.getSysUser().getDeptId()).getData(); + if (ObjectUtil.isEmpty(mch)) throw new RuntimeException("该用户下不存在商户"); + List mchDtoIds = new ArrayList<>(List.of(mch.getId())); + // 查询商户和下面的子商户 + List mchList = mchService.getByParentId(mch.getId()).getData(); + // 查询子商户 + List mchIds = mchList.stream().map(MchManageVo::getId).toList(); + mchDtoIds.addAll(mchIds); + dto.setMchIds(mchDtoIds); + return R.ok(hardOrderTotalService.mchWaterTotal(dto, user)); + } + + /* ************************************* end app end ************************************* */ @PostMapping("/page-list-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 12c06a4ba..20535d003 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 @@ -101,6 +101,8 @@ public interface HardOrderMapper extends PjcloudBaseMapper { List listCsByDay(@Param("dto") HardOrderDto totalDto); + HardOrderCsVo listCsTotal(@Param("dto") HardOrderDto totalDto); + List listOrerPayType(@Param("dto") HardOrderDto dto); List sumAndCount(@Param("dto") HardOrderSumAndCountDto dto); 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 3b48f3a85..fae9cbf87 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 @@ -26,6 +26,11 @@ public interface HardOrderTotalService { */ List listCsByDay(Page page, HardOrderDto dto, PjcloudUser user); + /** + * 查询商户总共流水记录 + */ + HardOrderCsVo mchWaterTotal(HardOrderDto dto, PjcloudUser user); + /** * 部门交易记录 */ @@ -45,4 +50,5 @@ public interface HardOrderTotalService { * 统计每天、每周、每月、每年的交易人数和次数 */ HardChartLatitudeVo chartLatitude(Long merchantId); + } 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 b2dc7a8cd..dc1e2aec6 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 @@ -203,7 +203,7 @@ public class HardOrderTotalServiceImpl implements HardOrderTotalService { refundDto.setOrderStatusCodes(HardOrderStatusEnum.getPayErrorCodes()); return hardOrderMapper.listCsByDay(refundDto); }); - // 盈利 + // 消费净次数 CompletableFuture> profitListFuture = CompletableFuture.supplyAsync(() -> { HardOrderDto profitDto = BeanUtil.toBean(dto, HardOrderDto.class); profitDto.setOrderStatusCodes(HardOrderStatusEnum.getPaySuccessCodes()); @@ -244,6 +244,61 @@ public class HardOrderTotalServiceImpl implements HardOrderTotalService { return totalList; } + /** + * 查询商户总共流水记录 + */ + @Override + public HardOrderCsVo mchWaterTotal(HardOrderDto dto, PjcloudUser user) { + HardOrderCsVo result = new HardOrderCsVo(); + // 查询总流水 + CompletableFuture totalFuture = CompletableFuture.supplyAsync(() -> { + HardOrderDto totalDto = BeanUtil.toBean(dto, HardOrderDto.class); + totalDto.setOrderStatusCodes(HardOrderStatusEnum.getPayPrice()); + return hardOrderMapper.listCsTotal(totalDto); + }); + // 扣款总流水 + CompletableFuture refundFuture = CompletableFuture.supplyAsync(() -> { + HardOrderDto refundDto = BeanUtil.toBean(dto, HardOrderDto.class); + refundDto.setOrderStatusCodes(HardOrderStatusEnum.getPayErrorCodes()); + return hardOrderMapper.listCsTotal(refundDto); + }); + // 消费净次数 + CompletableFuture profitFuture = CompletableFuture.supplyAsync(() -> { + HardOrderDto profitDto = BeanUtil.toBean(dto, HardOrderDto.class); + profitDto.setOrderStatusCodes(HardOrderStatusEnum.getPaySuccessCodes()); + return hardOrderMapper.listCsTotal(profitDto); + }); + CompletableFuture allFutures = CompletableFuture.allOf(totalFuture, refundFuture, profitFuture); + allFutures.join(); + HardOrderCsVo totalList = totalFuture.join(); + HardOrderCsVo refundList = refundFuture.join(); + HardOrderCsVo profitList = profitFuture.join(); + // 聚合一下数据 + if (ObjectUtil.isEmpty(totalList)) return result; + if (ObjectUtil.isNotEmpty(refundList)) { + if (ObjectUtil.isNotEmpty(refundList.getTotalPayPrice())) { + totalList.setTotalRefundPrice(refundList.getTotalPayPrice()); + } + if (ObjectUtil.isNotEmpty(refundList.getTotalPayCount())) { + totalList.setTotalRefundCount(refundList.getTotalPayCount()); + } + } + if (ObjectUtil.isNotEmpty(profitList)) { + if (ObjectUtil.isNotEmpty(profitList.getTotalPayPrice())) { + totalList.setTotalProfitPrice(profitList.getTotalPayPrice()); + } + if (ObjectUtil.isNotEmpty(profitList.getTotalPayCount())) { + totalList.setTotalProfitCount(profitList.getTotalPayCount()); + } + } + // 商户 + MchManageVo mchDetail = remoteMchService.getById(totalList.getMerchantId()).getData(); + if (ObjectUtil.isNotEmpty(mchDetail)) { + WalletDataUtil.convertMch(result, mchDetail); + } + return result; + } + /** * 部门交易记录 */ 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 8533e6fc9..b43d7905e 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 @@ -255,6 +255,16 @@ order by DATE_FORMAT(a.create_time, '%Y-%m-%d') desc, a.merchant_id desc + +