From acddaf8dbccc7cb2fd772f14fffe8b2eec0e8be4 Mon Sep 17 00:00:00 2001 From: chen-xin-zhi <3588068430@qq.com> Date: Mon, 14 Jul 2025 15:53:51 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E4=BA=86=E6=9D=83=E9=99=90?= =?UTF-8?q?=E6=A0=A1=E9=AA=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../promotion/aop/PermissionCheck.java | 5 ++- .../course/CourseOrderController.java | 8 ++--- .../UserPerformanceSummaryController.java | 34 ++++++++++++++----- .../userInfo/impl/UserInfoServiceImpl.java | 15 +++++--- .../greenorange/promotion/utils/JWTUtils.java | 2 +- 5 files changed, 46 insertions(+), 18 deletions(-) diff --git a/src/main/java/com/greenorange/promotion/aop/PermissionCheck.java b/src/main/java/com/greenorange/promotion/aop/PermissionCheck.java index bd91b9d..b652c46 100644 --- a/src/main/java/com/greenorange/promotion/aop/PermissionCheck.java +++ b/src/main/java/com/greenorange/promotion/aop/PermissionCheck.java @@ -60,16 +60,19 @@ public class PermissionCheck { DecodedJWT decodedJWT = jwtUtils.verify(token); String userAccount = decodedJWT.getClaim("userAccount").asString(); String userPassword = decodedJWT.getClaim("userPassword").asString(); + String userRole = decodedJWT.getClaim("userRole").asString(); // 查询用户信息 LambdaQueryWrapper lambdaQueryWrapper = new LambdaQueryWrapper<>(); lambdaQueryWrapper.eq(UserInfo::getUserAccount, userAccount).eq(UserInfo::getUserPassword, userPassword); + // 如果是小程序用户, 就加上权限条件 + lambdaQueryWrapper.eq(StringUtils.isNotBlank(userRole), UserInfo::getUserRole, userRole); UserInfo userInfo = userInfoService.getOne(lambdaQueryWrapper); ThrowUtils.throwIf(userInfo == null, ErrorCode.OPERATION_ERROR, "用户不存在"); // 将用户id存入request,用于记录日志 request.setAttribute("userId", userInfo.getId()); // 获取用户权限的枚举类 - String userRole = userInfo.getUserRole(); + if (userRole == null) userRole = userInfo.getUserRole(); UserRoleEnum userRoleEnum = UserRoleEnum.getEnumByValue(userRole); // 接口权限只能是 USER,ADMIN,BOSS,用户权限是 ADMIN,BOSS,USER,BAN,MANAGER,SUPERVISOR,STAFF 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 64f7375..d336d2c 100644 --- a/src/main/java/com/greenorange/promotion/controller/course/CourseOrderController.java +++ b/src/main/java/com/greenorange/promotion/controller/course/CourseOrderController.java @@ -140,8 +140,8 @@ public class CourseOrderController { // 更新主管和员工的绩效记录 Long userId = courseOrder.getUserId(); List pathToRoot = userInfoService.findPathToRoot(userId); - List superUserIdList = pathToRoot.subList(1, 3); - List userPerformanceSummaryList = commonService.findByFieldInTargetField(superUserIdList, userPerformanceSummaryService, Function.identity(), UserPerformanceSummary::getUserId); + List subPathToRoot = pathToRoot.subList(1, 3); + List userPerformanceSummaryList = commonService.findByFieldInTargetField(subPathToRoot, userPerformanceSummaryService, Function.identity(), UserPerformanceSummary::getUserId); BigDecimal rate; Map rateMap = userPerformanceSummaryService.queryRakeRewardsRate(); for (int i = 0; i < userPerformanceSummaryList.size(); i ++ ) { @@ -161,8 +161,8 @@ public class CourseOrderController { // 添加课程推广待提成记录 - Long firstUserId = pathToRoot.get(0); - Long secondUserId = pathToRoot.get(1); + Long firstUserId = subPathToRoot.get(0); + Long secondUserId = subPathToRoot.get(1); CoursePromotionCommissionPending coursePromotionCommissionPending = CoursePromotionCommissionPending.builder() .firstUserId(firstUserId) .secondUserId(secondUserId) 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 999b660..91c3ef7 100644 --- a/src/main/java/com/greenorange/promotion/controller/userInfo/UserPerformanceSummaryController.java +++ b/src/main/java/com/greenorange/promotion/controller/userInfo/UserPerformanceSummaryController.java @@ -665,12 +665,21 @@ public class UserPerformanceSummaryController { public BaseResponse> miniListSupervisorPerformanceSummaryRankingsByPage(@Valid @RequestBody UserPerformanceSummaryRankQueryRequest userPerformanceSummaryRankQueryRequest) { String startTimeStr = userPerformanceSummaryRankQueryRequest.getStartDate(); String endTimeStr = userPerformanceSummaryRankQueryRequest.getEndDate(); - DateTime startDate = DateUtil.parse(startTimeStr, "yyyy-MM-dd HH:mm:ss"); - DateTime endDate = DateUtil.parse(endTimeStr, "yyyy-MM-dd HH:mm:ss"); + DateTime startDate = null; + DateTime endDate = null; + boolean isAddDate = true; + try { + startDate = DateUtil.parse(startTimeStr, "yyyy-MM-dd HH:mm:ss"); + endDate = DateUtil.parse(endTimeStr, "yyyy-MM-dd HH:mm:ss"); + } catch (Exception e) { + isAddDate = false; + } QueryWrapper empQueryWrapper = new QueryWrapper<>(); - empQueryWrapper.ge(StringUtils.isNotBlank(startTimeStr), "createTime", startDate); - empQueryWrapper.le(StringUtils.isNotBlank(endTimeStr), "createTime", endDate); + if (isAddDate) { + empQueryWrapper.ge(StringUtils.isNotBlank(startTimeStr), "createTime", startDate); + empQueryWrapper.le(StringUtils.isNotBlank(endTimeStr), "createTime", endDate); + } List employeePromotionRecordsList = employeePromotionRecordsService.list(empQueryWrapper); // 封装Map集合(键:主管id, 值:推广数量) Map supervisorCntMap = new HashMap<>(); @@ -744,12 +753,21 @@ public class UserPerformanceSummaryController { public BaseResponse> miniListStaffUserPerformanceSummaryRankingsByPage(@Valid @RequestBody UserPerformanceSummaryRankQueryRequest userPerformanceSummaryRankQueryRequest) { String startTimeStr = userPerformanceSummaryRankQueryRequest.getStartDate(); String endTimeStr = userPerformanceSummaryRankQueryRequest.getEndDate(); - DateTime startDate = DateUtil.parse(startTimeStr, "yyyy-MM-dd HH:mm:ss"); - DateTime endDate = DateUtil.parse(endTimeStr, "yyyy-MM-dd HH:mm:ss"); + DateTime startDate = null; + DateTime endDate = null; + boolean isAddDate = true; + try { + startDate = DateUtil.parse(startTimeStr, "yyyy-MM-dd HH:mm:ss"); + endDate = DateUtil.parse(endTimeStr, "yyyy-MM-dd HH:mm:ss"); + } catch (Exception e) { + isAddDate = false; + } QueryWrapper empQueryWrapper = new QueryWrapper<>(); - empQueryWrapper.ge(StringUtils.isNotBlank(startTimeStr), "createTime", startDate); - empQueryWrapper.le(StringUtils.isNotBlank(endTimeStr), "createTime", endDate); + if (isAddDate) { + empQueryWrapper.ge(StringUtils.isNotBlank(startTimeStr), "createTime", startDate); + empQueryWrapper.le(StringUtils.isNotBlank(endTimeStr), "createTime", endDate); + } List employeePromotionRecordsList = employeePromotionRecordsService.list(empQueryWrapper); // 封装Map集合(键:员工id, 值:推广数量) Map staffCntMap = new HashMap<>(); diff --git a/src/main/java/com/greenorange/promotion/service/userInfo/impl/UserInfoServiceImpl.java b/src/main/java/com/greenorange/promotion/service/userInfo/impl/UserInfoServiceImpl.java index c9eb9b1..5b262ee 100644 --- a/src/main/java/com/greenorange/promotion/service/userInfo/impl/UserInfoServiceImpl.java +++ b/src/main/java/com/greenorange/promotion/service/userInfo/impl/UserInfoServiceImpl.java @@ -44,6 +44,8 @@ import java.util.List; import java.util.Map; import java.util.concurrent.TimeUnit; import java.util.function.Function; +import java.util.stream.Collectors; +import java.util.stream.IntStream; /** * @author 35880 @@ -217,6 +219,7 @@ public class UserInfoServiceImpl extends ServiceImpl Map payload = new HashMap<>(); payload.put("userAccount", phoneNumber); payload.put("userPassword", userPassword); + payload.put("userRole", userInfo.getUserRole()); return jwtUtils.generateToken(payload); } @@ -241,6 +244,7 @@ public class UserInfoServiceImpl extends ServiceImpl Map payload = new HashMap<>(); payload.put("userAccount", phoneNumber); payload.put("userPassword", userPassword); + payload.put("userRole", userInfo.getUserRole()); return jwtUtils.generateToken(payload); } @@ -406,9 +410,12 @@ public class UserInfoServiceImpl extends ServiceImpl * 更新上级用户的数量 */ private void updateParentUserInfoEmpCount(Long userId, UserRoleEnum userRoleEnum) { + if (UserRoleEnum.SUPERVISOR.equals(userRoleEnum)) return ; List pathToRoot = findPathToRoot(userId); - pathToRoot.remove(pathToRoot.size() - 1); - List userPerformanceSummaryList = commonService.findByFieldInTargetField(pathToRoot, userPerformanceSummaryService, Function.identity(), UserPerformanceSummary::getUserId); + List subPathToRoot; + if (UserRoleEnum.USER.equals(userRoleEnum)) subPathToRoot = pathToRoot.subList(1, 3); + else subPathToRoot = pathToRoot.subList(1, 2); + List userPerformanceSummaryList = commonService.findByFieldInTargetField(subPathToRoot, userPerformanceSummaryService, Function.identity(), UserPerformanceSummary::getUserId); for (UserPerformanceSummary userPerformanceSummary : userPerformanceSummaryList) { if (userRoleEnum.equals(UserRoleEnum.USER)) { userPerformanceSummary.setPromoCount(userPerformanceSummary.getPromoCount() + 1); @@ -421,8 +428,8 @@ public class UserInfoServiceImpl extends ServiceImpl // 如果是普通用户,就添加一条员工推广记录 if (userRoleEnum.equals(UserRoleEnum.USER)) { EmployeePromotionRecords employeePromotionRecords = EmployeePromotionRecords.builder() - .firstUserId(pathToRoot.get(0)) - .secondUserId(pathToRoot.get(1)) + .firstUserId(subPathToRoot.get(0)) + .secondUserId(subPathToRoot.get(1)) .userId(userId) .build(); employeePromotionRecordsService.save(employeePromotionRecords); diff --git a/src/main/java/com/greenorange/promotion/utils/JWTUtils.java b/src/main/java/com/greenorange/promotion/utils/JWTUtils.java index bcbb3f1..422167c 100644 --- a/src/main/java/com/greenorange/promotion/utils/JWTUtils.java +++ b/src/main/java/com/greenorange/promotion/utils/JWTUtils.java @@ -33,7 +33,7 @@ public class JWTUtils { Calendar instance = Calendar.getInstance(); // 默认7天过期 - instance.add(Calendar.DATE, 7); + instance.add(Calendar.DATE, 30); //创建jwt builder JWTCreator.Builder builder = JWT.create();