修复了一系列bug

This commit is contained in:
2025-07-19 18:58:02 +08:00
parent d30a3d1bcb
commit 92febde186
7 changed files with 72 additions and 30 deletions

View File

@ -115,7 +115,7 @@ public class CourseOrderController {
*/ */
@PostMapping("payment") @PostMapping("payment")
@Operation(summary = "模拟订单支付回调", description = "参数订单id权限管理员方法名paymentCourse") @Operation(summary = "模拟订单支付回调", description = "参数订单id权限管理员方法名paymentCourse")
@RequiresPermission(mustRole = UserConstant.ADMIN_ROLE) @RequiresPermission(mustRole = UserConstant.DEFAULT_ROLE)
public BaseResponse<Boolean> paymentCourse(@Valid @RequestBody CommonRequest commonRequest) { public BaseResponse<Boolean> paymentCourse(@Valid @RequestBody CommonRequest commonRequest) {
System.out.println("---------------------------微信支付回调(开始)-------------------------------"); System.out.println("---------------------------微信支付回调(开始)-------------------------------");
@ -196,7 +196,7 @@ public class CourseOrderController {
*/ */
@PostMapping("refund") @PostMapping("refund")
@Operation(summary = "模拟订单退款回调", description = "参数订单id权限管理员方法名refundCourse") @Operation(summary = "模拟订单退款回调", description = "参数订单id权限管理员方法名refundCourse")
@RequiresPermission(mustRole = UserConstant.DEFAULT_ROLE) @RequiresPermission(mustRole = UserConstant.ADMIN_ROLE)
public BaseResponse<Boolean> refundCourse(@Valid @RequestBody CommonRequest commonRequest) { public BaseResponse<Boolean> refundCourse(@Valid @RequestBody CommonRequest commonRequest) {
System.out.println("---------------------------微信退款回调(开始)-------------------------------"); System.out.println("---------------------------微信退款回调(开始)-------------------------------");
// 获取订单信息 // 获取订单信息
@ -233,11 +233,9 @@ public class CourseOrderController {
BigDecimal rakeRewards = courseOrder.getTotalAmount().multiply(rate); BigDecimal rakeRewards = courseOrder.getTotalAmount().multiply(rate);
UserPerformanceSummary userPerformanceSummary = userPerformanceSummaryList.get(i); UserPerformanceSummary userPerformanceSummary = userPerformanceSummaryList.get(i);
userPerformanceSummary.setTotalAmount(userPerformanceSummary.getTotalAmount().add(courseOrder.getTotalAmount())); userPerformanceSummary.setTotalAmount(userPerformanceSummary.getTotalAmount().subtract(courseOrder.getTotalAmount().multiply(SystemConstant.REFUND_RATE)));
userPerformanceSummary.setNetAmount(userPerformanceSummary.getNetAmount().add(courseOrder.getTotalAmount().multiply(SystemConstant.FEE_RATE)));
userPerformanceSummary.setOrderCount(userPerformanceSummary.getOrderCount() + 1);
userPerformanceSummary.setToRelease(userPerformanceSummary.getToRelease().subtract(rakeRewards.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); userPerformanceSummaryService.updateBatchById(userPerformanceSummaryList);

View File

@ -310,10 +310,20 @@ public class UserPerformanceSummaryController {
String commissionStatus = coursePromotionCommissionPending.getCommissionStatus(); String commissionStatus = coursePromotionCommissionPending.getCommissionStatus();
CommissionStatusEnum commissionStatusEnum = CommissionStatusEnum.getEnumByValue(commissionStatus); CommissionStatusEnum commissionStatusEnum = CommissionStatusEnum.getEnumByValue(commissionStatus);
supervisorOrderCntMap.merge(firstUserId, 1, Integer::sum); 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))) { if (startDate != null && endDate != null) {
totalAmount = totalAmount.multiply(SystemConstant.FEE_RATE); 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); supervisorNetSalesAmountMap.merge(firstUserId, totalAmount, BigDecimal::add);
} }
@ -402,10 +412,20 @@ public class UserPerformanceSummaryController {
String commissionStatus = coursePromotionCommissionPending.getCommissionStatus(); String commissionStatus = coursePromotionCommissionPending.getCommissionStatus();
CommissionStatusEnum commissionStatusEnum = CommissionStatusEnum.getEnumByValue(commissionStatus); CommissionStatusEnum commissionStatusEnum = CommissionStatusEnum.getEnumByValue(commissionStatus);
staffOrderCntMap.merge(secondUserId, 1, Integer::sum); 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))) { if (startDate != null && endDate != null) {
totalAmount = totalAmount.multiply(SystemConstant.FEE_RATE); 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); staffNetSalesAmountMap.merge(secondUserId, totalAmount, BigDecimal::add);
} }
@ -465,11 +485,13 @@ public class UserPerformanceSummaryController {
* 0 0 0 * * ?” = 每天 00:00:00 执行一次 * 0 0 0 * * ?” = 每天 00:00:00 执行一次
* @return 是否更新成功 * @return 是否更新成功
*/ */
@Scheduled(cron = "0 0 0 * * ?") // @Scheduled(cron = "0 0 0 * * ?")
@Scheduled(cron = "30 36 16 * * ?")
@Operation(summary = "轮询课程推广待提成记录表", description = "参数权限管理员方法名pollCourseOrder") @Operation(summary = "轮询课程推广待提成记录表", description = "参数权限管理员方法名pollCourseOrder")
public void pollCourseOrder() { public void pollCourseOrder() {
// 找出下单时间超过7天的订单分别统计主管和员工的可结算金额 // 找出下单时间超过7天的订单分别统计主管和员工的可结算金额
Map<Long, BigDecimal> toSettleMap = new HashMap<>(); Map<Long, BigDecimal> toSettleMap = new HashMap<>();
Map<Long, BigDecimal> totalAmountMap = new HashMap<>();
List<CoursePromotionCommissionPending> coursePromotionCommissionPendingList = commonService.findByFieldEqTargetField(CoursePromotionCommissionPending::getCommissionStatus, CommissionStatusEnum.PENDING.getValue(), coursePromotionCommissionPendingService); List<CoursePromotionCommissionPending> coursePromotionCommissionPendingList = commonService.findByFieldEqTargetField(CoursePromotionCommissionPending::getCommissionStatus, CommissionStatusEnum.PENDING.getValue(), coursePromotionCommissionPendingService);
for (CoursePromotionCommissionPending coursePromotionCommissionPending : coursePromotionCommissionPendingList) { for (CoursePromotionCommissionPending coursePromotionCommissionPending : coursePromotionCommissionPendingList) {
Date orderCreateTime = coursePromotionCommissionPending.getOrderCreateTime(); Date orderCreateTime = coursePromotionCommissionPending.getOrderCreateTime();
@ -480,6 +502,8 @@ public class UserPerformanceSummaryController {
coursePromotionCommissionPending.setCommissionStatus(CommissionStatusEnum.COMPLETED.getValue()); coursePromotionCommissionPending.setCommissionStatus(CommissionStatusEnum.COMPLETED.getValue());
toSettleMap.merge(coursePromotionCommissionPending.getFirstUserId(), coursePromotionCommissionPending.getFirstReward().multiply(SystemConstant.REFUND_RATE), BigDecimal::add); toSettleMap.merge(coursePromotionCommissionPending.getFirstUserId(), coursePromotionCommissionPending.getFirstReward().multiply(SystemConstant.REFUND_RATE), BigDecimal::add);
toSettleMap.merge(coursePromotionCommissionPending.getSecondUserId(), coursePromotionCommissionPending.getSecondReward().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); coursePromotionCommissionPendingService.updateBatchById(coursePromotionCommissionPendingList);
@ -488,7 +512,9 @@ public class UserPerformanceSummaryController {
for (UserPerformanceSummary userPerformanceSummary : userPerformanceSummaryList) { for (UserPerformanceSummary userPerformanceSummary : userPerformanceSummaryList) {
Long userId = userPerformanceSummary.getUserId(); Long userId = userPerformanceSummary.getUserId();
BigDecimal toSettleAmount = toSettleMap.get(userId); BigDecimal toSettleAmount = toSettleMap.get(userId);
BigDecimal totalAmount = totalAmountMap.get(userId);
if (toSettleAmount != null) { if (toSettleAmount != null) {
userPerformanceSummary.setNetAmount(userPerformanceSummary.getNetAmount().add(totalAmount));
userPerformanceSummary.setToRelease(userPerformanceSummary.getToRelease().subtract(toSettleAmount)); userPerformanceSummary.setToRelease(userPerformanceSummary.getToRelease().subtract(toSettleAmount));
userPerformanceSummary.setToSettle(userPerformanceSummary.getToSettle().add(toSettleAmount)); userPerformanceSummary.setToSettle(userPerformanceSummary.getToSettle().add(toSettleAmount));
} }

View File

@ -1,5 +1,7 @@
package com.greenorange.promotion.model.dto.userInfo; 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 io.swagger.v3.oas.annotations.media.Schema;
import jakarta.validation.constraints.NotBlank; import jakarta.validation.constraints.NotBlank;
import lombok.Data; import lombok.Data;
@ -29,6 +31,14 @@ public class UserInfoMiniVerifyCodeLoginRequest implements Serializable {
@Schema(description = "验证码", example = "666999") @Schema(description = "验证码", example = "666999")
private String verificationCode; private String verificationCode;
/**
* 权限
*/
@NotBlank(message = "权限不能为空")
@EnumValue(enumClass = UserRoleEnum.class)
@Schema(description = "权限", example = "user")
private String userRole;
@Serial @Serial
private static final long serialVersionUID = 1L; private static final long serialVersionUID = 1L;

View File

@ -257,6 +257,7 @@ public class UserPerformanceSummaryServiceImpl extends ServiceImpl<UserPerforman
if (CommissionStatusEnum.EXPIRED.equals(commissionStatusEnum)) { if (CommissionStatusEnum.EXPIRED.equals(commissionStatusEnum)) {
refundedCount ++; refundedCount ++;
refundedAmount = refundedAmount.add(coursePromotionCommissionPending.getTotalAmount().multiply(SystemConstant.REFUND_RATE)); refundedAmount = refundedAmount.add(coursePromotionCommissionPending.getTotalAmount().multiply(SystemConstant.REFUND_RATE));
orderAmount = orderAmount.subtract(coursePromotionCommissionPending.getTotalAmount().multiply(SystemConstant.REFUND_RATE));
} }
} }
@ -288,7 +289,7 @@ public class UserPerformanceSummaryServiceImpl extends ServiceImpl<UserPerforman
BigDecimal totalAmount = BigDecimal.ZERO; BigDecimal totalAmount = BigDecimal.ZERO;
BigDecimal netAmount = BigDecimal.ZERO; BigDecimal netAmount = BigDecimal.ZERO;
Integer promoCount = 0; Integer promoCount = 0;
Integer superCount; Integer superCount = 0;
Integer empCount = 0; Integer empCount = 0;
Integer orderCount = 0; Integer orderCount = 0;
BigDecimal toRelease = BigDecimal.ZERO; BigDecimal toRelease = BigDecimal.ZERO;
@ -307,17 +308,25 @@ public class UserPerformanceSummaryServiceImpl extends ServiceImpl<UserPerforman
Integer monthRefundCount; Integer monthRefundCount;
BigDecimal monthRefundAmount; BigDecimal monthRefundAmount;
Integer monthPromotionCount; Integer monthPromotionCount;
LambdaQueryWrapper<UserInfo> queryWrapper = new LambdaQueryWrapper<>(); // 封装Map集合userId, 值:权限)
queryWrapper.eq(UserInfo::getUserRole, UserConstant.SUPERVISOR_ROLE); Map<Long, String> userRoleMap = new HashMap<>();
List<UserInfo> userInfoList = userInfoMapper.selectList(queryWrapper); List<UserInfo> userInfoList = userInfoMapper.selectList(null);
List<UserPerformanceSummary> userPerformanceSummaryList = commonService.findByFieldInTargetField(userInfoList, this, UserInfo::getId, UserPerformanceSummary::getUserId); for (UserInfo userInfo : userInfoList) {
superCount = userPerformanceSummaryList.size(); userRoleMap.put(userInfo.getId(), userInfo.getUserRole());
}
List<UserPerformanceSummary> userPerformanceSummaryList = this.list();
for (UserPerformanceSummary userPerformanceSummary : userPerformanceSummaryList) { for (UserPerformanceSummary userPerformanceSummary : userPerformanceSummaryList) {
totalAmount = totalAmount.add(userPerformanceSummary.getTotalAmount()); Long userId = userPerformanceSummary.getUserId();
netAmount = netAmount.add(userPerformanceSummary.getNetAmount()); String userRole = userRoleMap.get(userId);
promoCount += userPerformanceSummary.getPromoCount(); UserRoleEnum userRoleEnum = UserRoleEnum.getEnumByValue(userRole);
empCount += userPerformanceSummary.getEmpCount(); if (UserRoleEnum.SUPERVISOR.equals(userRoleEnum)) {
orderCount += userPerformanceSummary.getOrderCount(); 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()); toRelease = toRelease.add(userPerformanceSummary.getToRelease());
toSettle = toSettle.add(userPerformanceSummary.getToSettle()); toSettle = toSettle.add(userPerformanceSummary.getToSettle());
settled = settled.add(userPerformanceSummary.getSettled()); settled = settled.add(userPerformanceSummary.getSettled());
@ -339,7 +348,7 @@ public class UserPerformanceSummaryServiceImpl extends ServiceImpl<UserPerforman
// 查看本月的绩效 // 查看本月的绩效
DateTime beginOfMonth = DateUtil.beginOfMonth(now); DateTime beginOfMonth = DateUtil.beginOfMonth(now);
DateTime endOfMonth = DateUtil.beginOfMonth(now); DateTime endOfMonth = DateUtil.endOfMonth(now);
Map<String, Object> monthPerformanceSummary = this.getPerformanceSummaryByStartAndEndTime(beginOfMonth, endOfMonth, UserRoleEnum.MANAGER, null); Map<String, Object> monthPerformanceSummary = this.getPerformanceSummaryByStartAndEndTime(beginOfMonth, endOfMonth, UserRoleEnum.MANAGER, null);
monthOrderCount = (Integer) monthPerformanceSummary.get("orderCount"); monthOrderCount = (Integer) monthPerformanceSummary.get("orderCount");
monthOrderAmount = (BigDecimal) monthPerformanceSummary.get("orderAmount"); monthOrderAmount = (BigDecimal) monthPerformanceSummary.get("orderAmount");

View File

@ -292,9 +292,8 @@ public class WechatPayServiceImpl implements WechatPayService {
BigDecimal rakeRewards = courseOrder.getTotalAmount().multiply(rate); BigDecimal rakeRewards = courseOrder.getTotalAmount().multiply(rate);
UserPerformanceSummary userPerformanceSummary = userPerformanceSummaryList.get(i); UserPerformanceSummary userPerformanceSummary = userPerformanceSummaryList.get(i);
userPerformanceSummary.setTotalAmount(userPerformanceSummary.getTotalAmount().add(courseOrder.getTotalAmount())); userPerformanceSummary.setTotalAmount(userPerformanceSummary.getTotalAmount().subtract(courseOrder.getTotalAmount()));
userPerformanceSummary.setNetAmount(userPerformanceSummary.getNetAmount().add(courseOrder.getTotalAmount().multiply(SystemConstant.FEE_RATE))); userPerformanceSummary.setNetAmount(userPerformanceSummary.getNetAmount().subtract(courseOrder.getTotalAmount().multiply(SystemConstant.FEE_RATE)));
userPerformanceSummary.setOrderCount(userPerformanceSummary.getOrderCount() + 1);
userPerformanceSummary.setToRelease(userPerformanceSummary.getToRelease().subtract(rakeRewards.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(courseOrder.getTotalAmount().multiply(SystemConstant.REFUND_RATE)));
} }

View File

@ -1,7 +1,7 @@
spring: spring:
datasource: datasource:
driver-class-name: com.mysql.cj.jdbc.Driver 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 username: qingcheng
password: Qc@8ls2jf password: Qc@8ls2jf
hikari: hikari:

View File

@ -1,4 +1,4 @@
spring: spring:
profiles: profiles:
active: test active: dev