From 3cade8b4d589dba5dbc44212c42ec26526470233 Mon Sep 17 00:00:00 2001 From: luodangjia <luodangjia> Date: 星期二, 14 一月 2025 11:37:48 +0800 Subject: [PATCH] Merge remote-tracking branch 'origin/master' --- ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/AppUserController.java | 86 ++++++++++++++++++++++++++++++++++++++---- 1 files changed, 77 insertions(+), 9 deletions(-) diff --git a/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/AppUserController.java b/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/AppUserController.java index 4a4b6eb..25f0f98 100644 --- a/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/AppUserController.java +++ b/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/AppUserController.java @@ -52,8 +52,10 @@ import java.time.LocalDate; import java.time.LocalDateTime; import java.time.format.DateTimeFormatter; +import java.time.temporal.ChronoUnit; import java.util.*; import java.util.stream.Collectors; +import java.util.stream.Stream; import com.ruoyi.account.vo.*; import com.ruoyi.common.core.web.controller.BaseController; @@ -104,6 +106,10 @@ private OrderClient orderClient; @Resource private ShopBalanceStatementClient shopBalanceStatementClient; + @Resource + private UserCancellationLogService userCancellationLogService; + @Resource + private BalanceChangeRecordService balanceChangeRecordService; @ResponseBody @@ -213,8 +219,7 @@ return R.ok(user); } - @Resource - private UserCancellationLogService userCancellationLogService; + @ResponseBody @GetMapping("/unregis") @@ -310,7 +315,8 @@ if (user.getShopId() != null) { R<Shop> storeById = shopClient.getShopById(user.getShopId()); if (storeById.getData() != null) { - user.setShopName(storeById.getData().getName()); + Shop shop = storeById.getData(); + user.setShopName(shop.getName()); } } Long count1 = appUserService.lambdaQuery().eq(AppUser::getVipId, 1).eq(AppUser::getInviteUserId, userId).or().eq(AppUser::getTopInviteId,userId).count(); @@ -515,7 +521,11 @@ @GetMapping("/select") @ApiOperation(value = "用户列表-查询绑定人", tags = {"管理后台"}) public R<AppUser> select(String phone) { - AppUser byId = appUserService.lambdaQuery().eq(AppUser::getPhone, phone).one(); + AppUser byId = appUserService.lambdaQuery() + .eq(AppUser::getPhone, phone) + .eq(AppUser::getDelFlag,0) + .eq(AppUser::getStatus,1) + .one(); if (byId == null) { return R.fail("搜索失败,手机号错误。"); } @@ -766,8 +776,6 @@ .merge(vipId, distributionAmount, BigDecimal::add); } } - - // 门店分佣计算 List<Shop> data = shopClient.getAllShop().getData(); if(sysUser.getRoleType() == 2){ data = Arrays.asList(shopClient.getShopById(sysUser.getObjectId()).getData()); @@ -832,13 +840,73 @@ }) .collect(Collectors.toList()); - - - commissionDetail.setCommissionDateList(commissionDateList); return R.ok(commissionDetail); } + + public R<CommissionDetail> commissionDetail2(CommissionDetail cd) { + if (cd.getStartTime() == null || cd.getEndTime() == null) { + return R.fail("请选择时间"); + } + if (cd.getStartTime().isAfter(cd.getEndTime())) { + return R.fail("开始时间不能大于结束时间"); + } + + + Map<String, Map<Integer, BigDecimal>> dailyVipCommissions = new TreeMap<>(); + getDatesBetween(cd.getStartTime(), cd.getEndTime()).forEach(date -> { + for (int i = 1; i < 8; i++){ + List<BalanceChangeRecord> list = balanceChangeRecordService.list(new LambdaQueryWrapper<BalanceChangeRecord>() + .eq(BalanceChangeRecord::getCreateTime, date) + .eq(BalanceChangeRecord::getChangeType,4) + .eq(BalanceChangeRecord::getVipId, i)); + BigDecimal reduce = list.stream().map(BalanceChangeRecord::getChangeAmount).reduce(BigDecimal.ZERO, BigDecimal::add); + String dateKey = date.format(DateTimeFormatter.ofPattern("yyyy-MM-dd")); + dailyVipCommissions.computeIfAbsent(dateKey, k -> new HashMap<>()) + .merge(i, reduce, BigDecimal::add); + } + + for (int i = 1; i < 4; i++){ + R<List<ShopBalanceStatement>> r = shopBalanceStatementClient.getShopBalanceStatementList2(i, date); + if (!CollectionUtils.isEmpty(r.getData())){ + List<ShopBalanceStatement> list = r.getData(); + BigDecimal reduce = list.stream().map(ShopBalanceStatement::getVariableAmount).reduce(BigDecimal.ZERO, BigDecimal::add); + String dateKey = date.format(DateTimeFormatter.ofPattern("yyyy-MM-dd")); + int type; + if (i == 1){ + type = 8; + }else if (i == 2){ + type = 9; + }else { + type = 10; + } + dailyVipCommissions.computeIfAbsent(dateKey, k -> new HashMap<>()) + .merge(type, reduce, BigDecimal::add); + } + } + }); + return null; + } + + + /** + * 获取指定时间段内每一天的列表 + * + * @param startDate 开始日期时间 + * @param endDate 结束日期时间 + * @return 包含每天日期时间的列表 + */ + private static List<LocalDateTime> getDatesBetween(LocalDateTime startDate, LocalDateTime endDate) { + // 计算开始日期和结束日期之间的天数差(忽略时间部分) + long daysBetween = ChronoUnit.DAYS.between(startDate.toLocalDate(), endDate.toLocalDate()); + + // 使用Stream.iterate从开始日期开始迭代,每次增加一天,直到达到天数差+1 + return Stream.iterate(startDate, date -> date.plus(1, ChronoUnit.DAYS)) + .limit(daysBetween + 1) + .collect(Collectors.toList()); + } + /** * 上传图片 -- Gitblit v1.7.1