From 92febde18629c5bb8d7f70b14ef8749963380390 Mon Sep 17 00:00:00 2001 From: chen-xin-zhi <3588068430@qq.com> Date: Sat, 19 Jul 2025 18:58:02 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E4=BA=86=E4=B8=80=E7=B3=BB?= =?UTF-8?q?=E5=88=97bug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../course/CourseOrderController.java | 10 ++--- .../UserPerformanceSummaryController.java | 40 +++++++++++++++---- .../UserInfoMiniVerifyCodeLoginRequest.java | 10 +++++ .../UserPerformanceSummaryServiceImpl.java | 33 +++++++++------ .../wechat/impl/WechatPayServiceImpl.java | 5 +-- src/main/resources/application-caozhe.yml | 2 +- src/main/resources/application.yml | 2 +- 7 files changed, 72 insertions(+), 30 deletions(-) diff --git a/src/main/java/com/greenorange/promotion/controller/course/CourseOrderController.java b/src/main/java/com/greenorange/promotion/controller/course/CourseOrderController.java index d336d2c..782f016 100644 --- a/src/main/java/com/greenorange/promotion/controller/course/CourseOrderController.java +++ b/src/main/java/com/greenorange/promotion/controller/course/CourseOrderController.java @@ -115,7 +115,7 @@ public class CourseOrderController { */ @PostMapping("payment") @Operation(summary = "模拟订单支付回调", description = "参数:订单id,权限:管理员,方法名:paymentCourse") - @RequiresPermission(mustRole = UserConstant.ADMIN_ROLE) + @RequiresPermission(mustRole = UserConstant.DEFAULT_ROLE) public BaseResponse paymentCourse(@Valid @RequestBody CommonRequest commonRequest) { System.out.println("---------------------------微信支付回调(开始)-------------------------------"); @@ -196,7 +196,7 @@ public class CourseOrderController { */ @PostMapping("refund") @Operation(summary = "模拟订单退款回调", description = "参数:订单id,权限:管理员,方法名:refundCourse") - @RequiresPermission(mustRole = UserConstant.DEFAULT_ROLE) + @RequiresPermission(mustRole = UserConstant.ADMIN_ROLE) public BaseResponse refundCourse(@Valid @RequestBody CommonRequest commonRequest) { System.out.println("---------------------------微信退款回调(开始)-------------------------------"); // 获取订单信息 @@ -233,11 +233,9 @@ public class CourseOrderController { BigDecimal rakeRewards = courseOrder.getTotalAmount().multiply(rate); UserPerformanceSummary userPerformanceSummary = userPerformanceSummaryList.get(i); - userPerformanceSummary.setTotalAmount(userPerformanceSummary.getTotalAmount().add(courseOrder.getTotalAmount())); - userPerformanceSummary.setNetAmount(userPerformanceSummary.getNetAmount().add(courseOrder.getTotalAmount().multiply(SystemConstant.FEE_RATE))); - userPerformanceSummary.setOrderCount(userPerformanceSummary.getOrderCount() + 1); + userPerformanceSummary.setTotalAmount(userPerformanceSummary.getTotalAmount().subtract(courseOrder.getTotalAmount().multiply(SystemConstant.REFUND_RATE))); userPerformanceSummary.setToRelease(userPerformanceSummary.getToRelease().subtract(rakeRewards.multiply(SystemConstant.REFUND_RATE))); - userPerformanceSummary.setRefunded(userPerformanceSummary.getRefunded().add(courseOrder.getTotalAmount().multiply(SystemConstant.REFUND_RATE))); + userPerformanceSummary.setRefunded(userPerformanceSummary.getRefunded().add(rakeRewards.multiply(SystemConstant.REFUND_RATE))); } userPerformanceSummaryService.updateBatchById(userPerformanceSummaryList); diff --git a/src/main/java/com/greenorange/promotion/controller/userInfo/UserPerformanceSummaryController.java b/src/main/java/com/greenorange/promotion/controller/userInfo/UserPerformanceSummaryController.java index 4e14a35..d6ce191 100644 --- a/src/main/java/com/greenorange/promotion/controller/userInfo/UserPerformanceSummaryController.java +++ b/src/main/java/com/greenorange/promotion/controller/userInfo/UserPerformanceSummaryController.java @@ -310,10 +310,20 @@ public class UserPerformanceSummaryController { String commissionStatus = coursePromotionCommissionPending.getCommissionStatus(); CommissionStatusEnum commissionStatusEnum = CommissionStatusEnum.getEnumByValue(commissionStatus); supervisorOrderCntMap.merge(firstUserId, 1, Integer::sum); - supervisorOrderAmountMap.merge(firstUserId, totalAmount, BigDecimal::add); + BigDecimal totalAmountTemp = totalAmount; + if (CommissionStatusEnum.EXPIRED.equals(commissionStatusEnum)) { + totalAmountTemp = totalAmount.multiply(SystemConstant.FEE_RATE); + } + supervisorOrderAmountMap.merge(firstUserId, totalAmountTemp, BigDecimal::add); - if (!(CommissionStatusEnum.COMPLETED.equals(commissionStatusEnum) && updateDate.isAfterOrEquals(startDate) && updateDate.isBeforeOrEquals(endDate))) { - totalAmount = totalAmount.multiply(SystemConstant.FEE_RATE); + if (startDate != null && endDate != null) { + if (!(CommissionStatusEnum.COMPLETED.equals(commissionStatusEnum) && updateDate.isAfterOrEquals(startDate) && updateDate.isBeforeOrEquals(endDate))) { + totalAmount = totalAmount.multiply(SystemConstant.FEE_RATE); + } + } else { + if (!CommissionStatusEnum.COMPLETED.equals(commissionStatusEnum)) { + totalAmount = totalAmount.multiply(SystemConstant.FEE_RATE); + } } supervisorNetSalesAmountMap.merge(firstUserId, totalAmount, BigDecimal::add); } @@ -402,10 +412,20 @@ public class UserPerformanceSummaryController { String commissionStatus = coursePromotionCommissionPending.getCommissionStatus(); CommissionStatusEnum commissionStatusEnum = CommissionStatusEnum.getEnumByValue(commissionStatus); staffOrderCntMap.merge(secondUserId, 1, Integer::sum); - staffOrderAmountMap.merge(secondUserId, totalAmount, BigDecimal::add); + BigDecimal totalAmountTemp = totalAmount; + if (CommissionStatusEnum.EXPIRED.equals(commissionStatusEnum)) { + totalAmountTemp = totalAmount.multiply(SystemConstant.FEE_RATE); + } + staffOrderAmountMap.merge(secondUserId, totalAmountTemp, BigDecimal::add); - if (!(CommissionStatusEnum.COMPLETED.equals(commissionStatusEnum) && updateDate.isAfterOrEquals(startDate) && updateDate.isBeforeOrEquals(endDate))) { - totalAmount = totalAmount.multiply(SystemConstant.FEE_RATE); + if (startDate != null && endDate != null) { + if (!(CommissionStatusEnum.COMPLETED.equals(commissionStatusEnum) && updateDate.isAfterOrEquals(startDate) && updateDate.isBeforeOrEquals(endDate))) { + totalAmount = totalAmount.multiply(SystemConstant.FEE_RATE); + } + } else { + if (!CommissionStatusEnum.COMPLETED.equals(commissionStatusEnum)) { + totalAmount = totalAmount.multiply(SystemConstant.FEE_RATE); + } } staffNetSalesAmountMap.merge(secondUserId, totalAmount, BigDecimal::add); } @@ -465,11 +485,13 @@ public class UserPerformanceSummaryController { * 0 0 0 * * ?” = 每天 00:00:00 执行一次 * @return 是否更新成功 */ - @Scheduled(cron = "0 0 0 * * ?") +// @Scheduled(cron = "0 0 0 * * ?") + @Scheduled(cron = "30 36 16 * * ?") @Operation(summary = "轮询课程推广待提成记录表", description = "参数:无,权限:管理员,方法名:pollCourseOrder") public void pollCourseOrder() { // 找出下单时间超过7天的订单,分别统计主管和员工的可结算金额 Map toSettleMap = new HashMap<>(); + Map totalAmountMap = new HashMap<>(); List coursePromotionCommissionPendingList = commonService.findByFieldEqTargetField(CoursePromotionCommissionPending::getCommissionStatus, CommissionStatusEnum.PENDING.getValue(), coursePromotionCommissionPendingService); for (CoursePromotionCommissionPending coursePromotionCommissionPending : coursePromotionCommissionPendingList) { Date orderCreateTime = coursePromotionCommissionPending.getOrderCreateTime(); @@ -480,6 +502,8 @@ public class UserPerformanceSummaryController { coursePromotionCommissionPending.setCommissionStatus(CommissionStatusEnum.COMPLETED.getValue()); toSettleMap.merge(coursePromotionCommissionPending.getFirstUserId(), coursePromotionCommissionPending.getFirstReward().multiply(SystemConstant.REFUND_RATE), BigDecimal::add); toSettleMap.merge(coursePromotionCommissionPending.getSecondUserId(), coursePromotionCommissionPending.getSecondReward().multiply(SystemConstant.REFUND_RATE), BigDecimal::add); + totalAmountMap.merge(coursePromotionCommissionPending.getFirstUserId(), coursePromotionCommissionPending.getTotalAmount().multiply(SystemConstant.REFUND_RATE), BigDecimal::add); + totalAmountMap.merge(coursePromotionCommissionPending.getSecondUserId(), coursePromotionCommissionPending.getTotalAmount().multiply(SystemConstant.REFUND_RATE), BigDecimal::add); } } coursePromotionCommissionPendingService.updateBatchById(coursePromotionCommissionPendingList); @@ -488,7 +512,9 @@ public class UserPerformanceSummaryController { for (UserPerformanceSummary userPerformanceSummary : userPerformanceSummaryList) { Long userId = userPerformanceSummary.getUserId(); BigDecimal toSettleAmount = toSettleMap.get(userId); + BigDecimal totalAmount = totalAmountMap.get(userId); if (toSettleAmount != null) { + userPerformanceSummary.setNetAmount(userPerformanceSummary.getNetAmount().add(totalAmount)); userPerformanceSummary.setToRelease(userPerformanceSummary.getToRelease().subtract(toSettleAmount)); userPerformanceSummary.setToSettle(userPerformanceSummary.getToSettle().add(toSettleAmount)); } diff --git a/src/main/java/com/greenorange/promotion/model/dto/userInfo/UserInfoMiniVerifyCodeLoginRequest.java b/src/main/java/com/greenorange/promotion/model/dto/userInfo/UserInfoMiniVerifyCodeLoginRequest.java index a1a405c..97b1dd9 100644 --- a/src/main/java/com/greenorange/promotion/model/dto/userInfo/UserInfoMiniVerifyCodeLoginRequest.java +++ b/src/main/java/com/greenorange/promotion/model/dto/userInfo/UserInfoMiniVerifyCodeLoginRequest.java @@ -1,5 +1,7 @@ package com.greenorange.promotion.model.dto.userInfo; +import com.greenorange.promotion.annotation.EnumValue; +import com.greenorange.promotion.model.enums.UserRoleEnum; import io.swagger.v3.oas.annotations.media.Schema; import jakarta.validation.constraints.NotBlank; import lombok.Data; @@ -29,6 +31,14 @@ public class UserInfoMiniVerifyCodeLoginRequest implements Serializable { @Schema(description = "验证码", example = "666999") private String verificationCode; + /** + * 权限 + */ + @NotBlank(message = "权限不能为空") + @EnumValue(enumClass = UserRoleEnum.class) + @Schema(description = "权限", example = "user") + private String userRole; + @Serial private static final long serialVersionUID = 1L; diff --git a/src/main/java/com/greenorange/promotion/service/userInfo/impl/UserPerformanceSummaryServiceImpl.java b/src/main/java/com/greenorange/promotion/service/userInfo/impl/UserPerformanceSummaryServiceImpl.java index 5623d5f..780d938 100644 --- a/src/main/java/com/greenorange/promotion/service/userInfo/impl/UserPerformanceSummaryServiceImpl.java +++ b/src/main/java/com/greenorange/promotion/service/userInfo/impl/UserPerformanceSummaryServiceImpl.java @@ -257,6 +257,7 @@ public class UserPerformanceSummaryServiceImpl extends ServiceImpl queryWrapper = new LambdaQueryWrapper<>(); - queryWrapper.eq(UserInfo::getUserRole, UserConstant.SUPERVISOR_ROLE); - List userInfoList = userInfoMapper.selectList(queryWrapper); - List userPerformanceSummaryList = commonService.findByFieldInTargetField(userInfoList, this, UserInfo::getId, UserPerformanceSummary::getUserId); - superCount = userPerformanceSummaryList.size(); + // 封装Map集合(键:userId, 值:权限) + Map userRoleMap = new HashMap<>(); + List userInfoList = userInfoMapper.selectList(null); + for (UserInfo userInfo : userInfoList) { + userRoleMap.put(userInfo.getId(), userInfo.getUserRole()); + } + List userPerformanceSummaryList = this.list(); for (UserPerformanceSummary userPerformanceSummary : userPerformanceSummaryList) { - totalAmount = totalAmount.add(userPerformanceSummary.getTotalAmount()); - netAmount = netAmount.add(userPerformanceSummary.getNetAmount()); - promoCount += userPerformanceSummary.getPromoCount(); - empCount += userPerformanceSummary.getEmpCount(); - orderCount += userPerformanceSummary.getOrderCount(); + Long userId = userPerformanceSummary.getUserId(); + String userRole = userRoleMap.get(userId); + UserRoleEnum userRoleEnum = UserRoleEnum.getEnumByValue(userRole); + if (UserRoleEnum.SUPERVISOR.equals(userRoleEnum)) { + totalAmount = totalAmount.add(userPerformanceSummary.getTotalAmount()); + netAmount = netAmount.add(userPerformanceSummary.getNetAmount()); + promoCount += userPerformanceSummary.getPromoCount(); + empCount += userPerformanceSummary.getEmpCount(); + orderCount += userPerformanceSummary.getOrderCount(); + superCount += 1; + } toRelease = toRelease.add(userPerformanceSummary.getToRelease()); toSettle = toSettle.add(userPerformanceSummary.getToSettle()); settled = settled.add(userPerformanceSummary.getSettled()); @@ -339,7 +348,7 @@ public class UserPerformanceSummaryServiceImpl extends ServiceImpl monthPerformanceSummary = this.getPerformanceSummaryByStartAndEndTime(beginOfMonth, endOfMonth, UserRoleEnum.MANAGER, null); monthOrderCount = (Integer) monthPerformanceSummary.get("orderCount"); monthOrderAmount = (BigDecimal) monthPerformanceSummary.get("orderAmount"); diff --git a/src/main/java/com/greenorange/promotion/service/wechat/impl/WechatPayServiceImpl.java b/src/main/java/com/greenorange/promotion/service/wechat/impl/WechatPayServiceImpl.java index 6c82899..2ed1138 100644 --- a/src/main/java/com/greenorange/promotion/service/wechat/impl/WechatPayServiceImpl.java +++ b/src/main/java/com/greenorange/promotion/service/wechat/impl/WechatPayServiceImpl.java @@ -292,9 +292,8 @@ public class WechatPayServiceImpl implements WechatPayService { BigDecimal rakeRewards = courseOrder.getTotalAmount().multiply(rate); UserPerformanceSummary userPerformanceSummary = userPerformanceSummaryList.get(i); - userPerformanceSummary.setTotalAmount(userPerformanceSummary.getTotalAmount().add(courseOrder.getTotalAmount())); - userPerformanceSummary.setNetAmount(userPerformanceSummary.getNetAmount().add(courseOrder.getTotalAmount().multiply(SystemConstant.FEE_RATE))); - userPerformanceSummary.setOrderCount(userPerformanceSummary.getOrderCount() + 1); + userPerformanceSummary.setTotalAmount(userPerformanceSummary.getTotalAmount().subtract(courseOrder.getTotalAmount())); + userPerformanceSummary.setNetAmount(userPerformanceSummary.getNetAmount().subtract(courseOrder.getTotalAmount().multiply(SystemConstant.FEE_RATE))); userPerformanceSummary.setToRelease(userPerformanceSummary.getToRelease().subtract(rakeRewards.multiply(SystemConstant.REFUND_RATE))); userPerformanceSummary.setRefunded(userPerformanceSummary.getRefunded().add(courseOrder.getTotalAmount().multiply(SystemConstant.REFUND_RATE))); } diff --git a/src/main/resources/application-caozhe.yml b/src/main/resources/application-caozhe.yml index 031b6b1..f05c75d 100644 --- a/src/main/resources/application-caozhe.yml +++ b/src/main/resources/application-caozhe.yml @@ -1,7 +1,7 @@ spring: datasource: driver-class-name: com.mysql.cj.jdbc.Driver - url: jdbc:mysql://27.30.77.229:3306/qingcheng_caozhe?serverTimezone=Asia/Shanghai + url: jdbc:mysql://160.202.242.36:3306/qingcheng_caozhe?serverTimezone=Asia/Shanghai username: qingcheng password: Qc@8ls2jf hikari: diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml index a17ec4c..ad9a171 100644 --- a/src/main/resources/application.yml +++ b/src/main/resources/application.yml @@ -1,4 +1,4 @@ spring: profiles: - active: test + active: dev