修复了bug
This commit is contained in:
@ -20,6 +20,8 @@ import org.springframework.stereotype.Component;
|
|||||||
import org.springframework.web.context.request.RequestContextHolder;
|
import org.springframework.web.context.request.RequestContextHolder;
|
||||||
import org.springframework.web.context.request.ServletRequestAttributes;
|
import org.springframework.web.context.request.ServletRequestAttributes;
|
||||||
|
|
||||||
|
import java.util.HashMap;
|
||||||
|
import java.util.Map;
|
||||||
import java.util.Objects;
|
import java.util.Objects;
|
||||||
|
|
||||||
|
|
||||||
@ -75,15 +77,31 @@ public class PermissionCheck {
|
|||||||
if (userRole == null) userRole = userInfo.getUserRole();
|
if (userRole == null) userRole = userInfo.getUserRole();
|
||||||
UserRoleEnum userRoleEnum = UserRoleEnum.getEnumByValue(userRole);
|
UserRoleEnum userRoleEnum = UserRoleEnum.getEnumByValue(userRole);
|
||||||
|
|
||||||
// 接口权限只能是 USER,ADMIN,BOSS,用户权限是 ADMIN,BOSS,USER,BAN,MANAGER,SUPERVISOR,STAFF
|
|
||||||
// 校验角色
|
// 校验角色
|
||||||
ThrowUtils.throwIf(UserRoleEnum.BOSS.equals(userRoleEnum) && UserRoleEnum.USER.equals(interfaceRoleEnum), ErrorCode.NO_AUTH_ERROR);
|
|
||||||
ThrowUtils.throwIf(UserRoleEnum.ADMIN.equals(userRoleEnum) && !UserRoleEnum.ADMIN.equals(interfaceRoleEnum), ErrorCode.NO_AUTH_ERROR);
|
|
||||||
ThrowUtils.throwIf(UserRoleEnum.BAN.equals(userRoleEnum), ErrorCode.PARAMS_ERROR, "用户已被封禁");
|
ThrowUtils.throwIf(UserRoleEnum.BAN.equals(userRoleEnum), ErrorCode.PARAMS_ERROR, "用户已被封禁");
|
||||||
ThrowUtils.throwIf((UserRoleEnum.USER.equals(userRoleEnum)
|
Map<UserRoleEnum, Integer> userRoleMap = new HashMap<>();
|
||||||
|| UserRoleEnum.STAFF.equals(userRoleEnum)
|
userRoleMap.put(UserRoleEnum.USER, 1);
|
||||||
|| UserRoleEnum.SUPERVISOR.equals(userRoleEnum)
|
userRoleMap.put(UserRoleEnum.STAFF, 2);
|
||||||
|| UserRoleEnum.MANAGER.equals(userRoleEnum)) && !UserRoleEnum.USER.equals(interfaceRoleEnum), ErrorCode.NO_AUTH_ERROR);
|
userRoleMap.put(UserRoleEnum.SUPERVISOR, 3);
|
||||||
|
userRoleMap.put(UserRoleEnum.MANAGER, 4);
|
||||||
|
userRoleMap.put(UserRoleEnum.ADMIN, 5);
|
||||||
|
userRoleMap.put(UserRoleEnum.BOSS, 6);
|
||||||
|
|
||||||
|
Integer userRoleNumber = userRoleMap.get(userRoleEnum);
|
||||||
|
Integer interfaceRoleNumber = userRoleMap.get(interfaceRoleEnum);
|
||||||
|
if (userRoleNumber == 1) {
|
||||||
|
ThrowUtils.throwIf(interfaceRoleNumber > 1, ErrorCode.NO_AUTH_ERROR);
|
||||||
|
} else if (userRoleNumber == 2) {
|
||||||
|
ThrowUtils.throwIf(interfaceRoleNumber > 2, ErrorCode.NO_AUTH_ERROR);
|
||||||
|
} else if (userRoleNumber == 3) {
|
||||||
|
ThrowUtils.throwIf(interfaceRoleNumber > 3, ErrorCode.NO_AUTH_ERROR);
|
||||||
|
} else if (userRoleNumber == 4) {
|
||||||
|
ThrowUtils.throwIf(interfaceRoleNumber > 4, ErrorCode.NO_AUTH_ERROR);
|
||||||
|
} else if (userRoleNumber == 5) {
|
||||||
|
ThrowUtils.throwIf(interfaceRoleNumber != 5, ErrorCode.NO_AUTH_ERROR);
|
||||||
|
} else {
|
||||||
|
ThrowUtils.throwIf(interfaceRoleNumber < 5, ErrorCode.NO_AUTH_ERROR);
|
||||||
|
}
|
||||||
|
|
||||||
return joinPoint.proceed();
|
return joinPoint.proceed();
|
||||||
}
|
}
|
||||||
|
@ -3,10 +3,12 @@ package com.greenorange.promotion.controller.userInfo;
|
|||||||
import cn.hutool.core.date.DateTime;
|
import cn.hutool.core.date.DateTime;
|
||||||
import cn.hutool.core.date.DateUnit;
|
import cn.hutool.core.date.DateUnit;
|
||||||
import cn.hutool.core.date.DateUtil;
|
import cn.hutool.core.date.DateUtil;
|
||||||
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||||
import com.greenorange.promotion.annotation.RequiresPermission;
|
import com.greenorange.promotion.annotation.RequiresPermission;
|
||||||
import com.greenorange.promotion.common.BaseResponse;
|
import com.greenorange.promotion.common.BaseResponse;
|
||||||
import com.greenorange.promotion.common.ResultUtils;
|
import com.greenorange.promotion.common.ResultUtils;
|
||||||
|
import com.greenorange.promotion.constant.CommonConstant;
|
||||||
import com.greenorange.promotion.constant.OrderStatusConstant;
|
import com.greenorange.promotion.constant.OrderStatusConstant;
|
||||||
import com.greenorange.promotion.constant.SystemConstant;
|
import com.greenorange.promotion.constant.SystemConstant;
|
||||||
import com.greenorange.promotion.constant.UserConstant;
|
import com.greenorange.promotion.constant.UserConstant;
|
||||||
@ -24,6 +26,7 @@ import com.greenorange.promotion.service.course.CoursePromotionCommissionPending
|
|||||||
import com.greenorange.promotion.service.userInfo.EmployeePromotionRecordsService;
|
import com.greenorange.promotion.service.userInfo.EmployeePromotionRecordsService;
|
||||||
import com.greenorange.promotion.service.userInfo.UserInfoService;
|
import com.greenorange.promotion.service.userInfo.UserInfoService;
|
||||||
import com.greenorange.promotion.service.userInfo.UserPerformanceSummaryService;
|
import com.greenorange.promotion.service.userInfo.UserPerformanceSummaryService;
|
||||||
|
import com.greenorange.promotion.utils.SqlUtils;
|
||||||
import io.swagger.v3.oas.annotations.Operation;
|
import io.swagger.v3.oas.annotations.Operation;
|
||||||
import io.swagger.v3.oas.annotations.tags.Tag;
|
import io.swagger.v3.oas.annotations.tags.Tag;
|
||||||
import jakarta.annotation.Resource;
|
import jakarta.annotation.Resource;
|
||||||
@ -253,6 +256,8 @@ public class UserPerformanceSummaryController {
|
|||||||
public BaseResponse<Page<SupervisorPerformanceSummaryVO>> listSupervisorPerformanceSummaryRankingsByPage(@Valid @RequestBody UserPerformanceSummaryRankQueryRequest userPerformanceSummaryRankQueryRequest) {
|
public BaseResponse<Page<SupervisorPerformanceSummaryVO>> listSupervisorPerformanceSummaryRankingsByPage(@Valid @RequestBody UserPerformanceSummaryRankQueryRequest userPerformanceSummaryRankQueryRequest) {
|
||||||
String startTimeStr = userPerformanceSummaryRankQueryRequest.getStartDate();
|
String startTimeStr = userPerformanceSummaryRankQueryRequest.getStartDate();
|
||||||
String endTimeStr = userPerformanceSummaryRankQueryRequest.getEndDate();
|
String endTimeStr = userPerformanceSummaryRankQueryRequest.getEndDate();
|
||||||
|
String nickName = userPerformanceSummaryRankQueryRequest.getNickName();
|
||||||
|
String phoneNumber = userPerformanceSummaryRankQueryRequest.getPhoneNumber();
|
||||||
DateTime startDate = null;
|
DateTime startDate = null;
|
||||||
DateTime endDate = null;
|
DateTime endDate = null;
|
||||||
boolean isAddDate = true;
|
boolean isAddDate = true;
|
||||||
@ -300,7 +305,11 @@ public class UserPerformanceSummaryController {
|
|||||||
}
|
}
|
||||||
supervisorNetSalesAmountMap.merge(firstUserId, totalAmount, BigDecimal::add);
|
supervisorNetSalesAmountMap.merge(firstUserId, totalAmount, BigDecimal::add);
|
||||||
}
|
}
|
||||||
List<UserInfo> userInfoList = commonService.findByFieldEqTargetField(UserInfo::getUserRole, UserConstant.SUPERVISOR_ROLE, userInfoService);
|
LambdaQueryWrapper<UserInfo> userInfoQueryWrapper = new LambdaQueryWrapper<>();
|
||||||
|
userInfoQueryWrapper.eq(StringUtils.isNotBlank(nickName), UserInfo::getNickName, nickName)
|
||||||
|
.eq(StringUtils.isNotBlank(phoneNumber), UserInfo::getPhoneNumber, phoneNumber)
|
||||||
|
.eq(UserInfo::getUserRole, UserConstant.SUPERVISOR_ROLE);
|
||||||
|
List<UserInfo> userInfoList = userInfoService.list(userInfoQueryWrapper);
|
||||||
List<UserPerformanceSummary> userPerformanceSummaryList = commonService.findByFieldInTargetField(userInfoList, userPerformanceSummaryService, UserInfo::getId, UserPerformanceSummary::getUserId);
|
List<UserPerformanceSummary> userPerformanceSummaryList = commonService.findByFieldInTargetField(userInfoList, userPerformanceSummaryService, UserInfo::getId, UserPerformanceSummary::getUserId);
|
||||||
|
|
||||||
// 封装Map集合(键:主管id, 用户信息)
|
// 封装Map集合(键:主管id, 用户信息)
|
||||||
@ -656,15 +665,18 @@ public class UserPerformanceSummaryController {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* 小程序端经理查询主管绩效排名
|
* 小程序端经理查询主管绩效排名
|
||||||
* @param userPerformanceSummaryRankQueryRequest 绩效排名查询请求体
|
* @param miniUserPerformanceSummaryRankQueryRequest 小程序端绩效排名查询请求体
|
||||||
* @return 用户绩效汇总列表
|
* @return 用户绩效汇总列表
|
||||||
*/
|
*/
|
||||||
@PostMapping("rank/supervisor")
|
@PostMapping("rank/supervisor")
|
||||||
@Operation(summary = "小程序端经理查询主管绩效排名", description = "参数:绩效排名查询请求体,权限:管理员,方法名:miniListSupervisorPerformanceSummaryRankingsByPage")
|
@Operation(summary = "小程序端经理查询主管绩效排名", description = "参数:小程序端绩效排名查询请求体,权限:管理员,方法名:miniListSupervisorPerformanceSummaryRankingsByPage")
|
||||||
@RequiresPermission(mustRole = UserConstant.MANAGER_ROLE)
|
@RequiresPermission(mustRole = UserConstant.MANAGER_ROLE)
|
||||||
public BaseResponse<List<SupervisorPerformanceSummaryVO>> miniListSupervisorPerformanceSummaryRankingsByPage(@Valid @RequestBody UserPerformanceSummaryRankQueryRequest userPerformanceSummaryRankQueryRequest) {
|
public BaseResponse<List<SupervisorPerformanceSummaryVO>> miniListSupervisorPerformanceSummaryRankingsByPage(@Valid @RequestBody MiniUserPerformanceSummaryRankQueryRequest miniUserPerformanceSummaryRankQueryRequest) {
|
||||||
String startTimeStr = userPerformanceSummaryRankQueryRequest.getStartDate();
|
String startTimeStr = miniUserPerformanceSummaryRankQueryRequest.getStartDate();
|
||||||
String endTimeStr = userPerformanceSummaryRankQueryRequest.getEndDate();
|
String endTimeStr = miniUserPerformanceSummaryRankQueryRequest.getEndDate();
|
||||||
|
String nickName = miniUserPerformanceSummaryRankQueryRequest.getNickName();
|
||||||
|
String phoneNumber = miniUserPerformanceSummaryRankQueryRequest.getPhoneNumber();
|
||||||
|
|
||||||
DateTime startDate = null;
|
DateTime startDate = null;
|
||||||
DateTime endDate = null;
|
DateTime endDate = null;
|
||||||
boolean isAddDate = true;
|
boolean isAddDate = true;
|
||||||
@ -712,7 +724,11 @@ public class UserPerformanceSummaryController {
|
|||||||
}
|
}
|
||||||
supervisorNetSalesAmountMap.merge(firstUserId, totalAmount, BigDecimal::add);
|
supervisorNetSalesAmountMap.merge(firstUserId, totalAmount, BigDecimal::add);
|
||||||
}
|
}
|
||||||
List<UserInfo> userInfoList = commonService.findByFieldEqTargetField(UserInfo::getUserRole, UserConstant.SUPERVISOR_ROLE, userInfoService);
|
LambdaQueryWrapper<UserInfo> userInfoLambdaQueryWrapper = new LambdaQueryWrapper<>();
|
||||||
|
userInfoLambdaQueryWrapper.eq(StringUtils.isNotBlank(nickName), UserInfo::getNickName, nickName)
|
||||||
|
.eq(StringUtils.isNotBlank(phoneNumber), UserInfo::getPhoneNumber, phoneNumber)
|
||||||
|
.eq(UserInfo::getUserRole, UserConstant.SUPERVISOR_ROLE);
|
||||||
|
List<UserInfo> userInfoList = userInfoService.list(userInfoLambdaQueryWrapper);
|
||||||
List<UserPerformanceSummary> userPerformanceSummaryList = commonService.findByFieldInTargetField(userInfoList, userPerformanceSummaryService, UserInfo::getId, UserPerformanceSummary::getUserId);
|
List<UserPerformanceSummary> userPerformanceSummaryList = commonService.findByFieldInTargetField(userInfoList, userPerformanceSummaryService, UserInfo::getId, UserPerformanceSummary::getUserId);
|
||||||
|
|
||||||
// 封装Map集合(键:主管id, 用户信息)
|
// 封装Map集合(键:主管id, 用户信息)
|
||||||
@ -737,6 +753,8 @@ public class UserPerformanceSummaryController {
|
|||||||
.build();
|
.build();
|
||||||
supervisorPerformanceSummaryVOS.add(supervisorPerformanceSummaryVO);
|
supervisorPerformanceSummaryVOS.add(supervisorPerformanceSummaryVO);
|
||||||
}
|
}
|
||||||
|
userPerformanceSummaryService.sortPerformanceRankingList(supervisorPerformanceSummaryVOS, miniUserPerformanceSummaryRankQueryRequest);
|
||||||
|
|
||||||
return ResultUtils.success(supervisorPerformanceSummaryVOS);
|
return ResultUtils.success(supervisorPerformanceSummaryVOS);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -835,7 +853,7 @@ public class UserPerformanceSummaryController {
|
|||||||
*/
|
*/
|
||||||
@PostMapping("mini/query/dashboard")
|
@PostMapping("mini/query/dashboard")
|
||||||
@Operation(summary = "小程序端仪表盘", description = "参数:无,权限:管理员,方法名:miniQueryDashboard")
|
@Operation(summary = "小程序端仪表盘", description = "参数:无,权限:管理员,方法名:miniQueryDashboard")
|
||||||
@RequiresPermission(mustRole = UserConstant.MANAGER_ROLE)
|
@RequiresPermission(mustRole = UserConstant.DEFAULT_ROLE)
|
||||||
public BaseResponse<WebQueryDashboardVO> miniQueryDashboard(HttpServletRequest request) {
|
public BaseResponse<WebQueryDashboardVO> miniQueryDashboard(HttpServletRequest request) {
|
||||||
Long userId = (Long) request.getAttribute("userId");
|
Long userId = (Long) request.getAttribute("userId");
|
||||||
UserInfo userInfo = userInfoService.getById(userId);
|
UserInfo userInfo = userInfoService.getById(userId);
|
||||||
|
@ -0,0 +1,63 @@
|
|||||||
|
package com.greenorange.promotion.model.dto.userPerformanceSummary;
|
||||||
|
|
||||||
|
import com.greenorange.promotion.common.PageRequest;
|
||||||
|
import com.greenorange.promotion.constant.CommonConstant;
|
||||||
|
import io.swagger.v3.oas.annotations.media.Schema;
|
||||||
|
import lombok.AllArgsConstructor;
|
||||||
|
import lombok.Builder;
|
||||||
|
import lombok.Data;
|
||||||
|
import lombok.NoArgsConstructor;
|
||||||
|
|
||||||
|
import java.io.Serial;
|
||||||
|
import java.io.Serializable;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 小程序端绩效排名查询请求体,继承自分页请求 PageRequest
|
||||||
|
*/
|
||||||
|
@Data
|
||||||
|
@NoArgsConstructor
|
||||||
|
@AllArgsConstructor
|
||||||
|
@Builder
|
||||||
|
@Schema(description = "小程序端绩效排名查询请求体", requiredProperties = {"current", "pageSize"})
|
||||||
|
public class MiniUserPerformanceSummaryRankQueryRequest implements Serializable {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 姓名
|
||||||
|
*/
|
||||||
|
@Schema(description = "姓名", example = "chenxinzhi")
|
||||||
|
private String nickName;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 手机号
|
||||||
|
*/
|
||||||
|
@Schema(description = "手机号", example = "15888610253")
|
||||||
|
private String phoneNumber;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 起始日期
|
||||||
|
*/
|
||||||
|
@Schema(description = "起始日期", example = "2025-02-29 10:00:00")
|
||||||
|
private String startDate;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 结束日期
|
||||||
|
*/
|
||||||
|
@Schema(description = "结束日期", example = "2025-02-29 10:00:00")
|
||||||
|
private String endDate;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 排序字段
|
||||||
|
*/
|
||||||
|
@Schema(description = "排序字段", example = "id")
|
||||||
|
private String sortField;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 排序顺序(默认升序)
|
||||||
|
*/
|
||||||
|
@Schema(description = "排序顺序((升:ascend;降:descend", example = "ascend")
|
||||||
|
private String sortOrder = CommonConstant.SORT_ORDER_ASC;
|
||||||
|
|
||||||
|
|
||||||
|
@Serial
|
||||||
|
private static final long serialVersionUID = 1L;
|
||||||
|
}
|
@ -13,6 +13,12 @@ import java.io.Serializable;
|
|||||||
@Schema(description = "晋升申请审核结果 视图对象")
|
@Schema(description = "晋升申请审核结果 视图对象")
|
||||||
public class AdvancementApplyApproveVO implements Serializable {
|
public class AdvancementApplyApproveVO implements Serializable {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 晋升id
|
||||||
|
*/
|
||||||
|
@Schema(description = "晋升id", example = "1")
|
||||||
|
private Long id;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 申请人姓名
|
* 申请人姓名
|
||||||
*/
|
*/
|
||||||
|
@ -77,4 +77,10 @@ public interface UserPerformanceSummaryService extends IService<UserPerformanceS
|
|||||||
*/
|
*/
|
||||||
WebQueryDashboardVO querySupervisorOrStaffDashboard(UserRoleEnum userRoleEnum, Long userId);
|
WebQueryDashboardVO querySupervisorOrStaffDashboard(UserRoleEnum userRoleEnum, Long userId);
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 对List集合进行排序
|
||||||
|
*/
|
||||||
|
void sortPerformanceRankingList(List<SupervisorPerformanceSummaryVO> supervisorPerformanceSummaryVOS, MiniUserPerformanceSummaryRankQueryRequest request);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -94,6 +94,8 @@ public class UserPerformanceSummaryServiceImpl extends ServiceImpl<UserPerforman
|
|||||||
public QueryWrapper<CourseOrder> getCourseOrderQueryWrapper(UserCourseOrderQueryRequest userCourseOrderQueryRequest) {
|
public QueryWrapper<CourseOrder> getCourseOrderQueryWrapper(UserCourseOrderQueryRequest userCourseOrderQueryRequest) {
|
||||||
String orderNumber = userCourseOrderQueryRequest.getOrderNumber();
|
String orderNumber = userCourseOrderQueryRequest.getOrderNumber();
|
||||||
String startTimeStr = userCourseOrderQueryRequest.getStartDate();
|
String startTimeStr = userCourseOrderQueryRequest.getStartDate();
|
||||||
|
String sortField = userCourseOrderQueryRequest.getSortField();
|
||||||
|
String sortOrder = userCourseOrderQueryRequest.getSortOrder();
|
||||||
String endTimeStr = userCourseOrderQueryRequest.getEndDate();
|
String endTimeStr = userCourseOrderQueryRequest.getEndDate();
|
||||||
DateTime startDate = null;
|
DateTime startDate = null;
|
||||||
DateTime endDate = null;
|
DateTime endDate = null;
|
||||||
@ -110,6 +112,7 @@ public class UserPerformanceSummaryServiceImpl extends ServiceImpl<UserPerforman
|
|||||||
queryWrapper.ge(StringUtils.isNotBlank(startTimeStr), "createTime", startDate);
|
queryWrapper.ge(StringUtils.isNotBlank(startTimeStr), "createTime", startDate);
|
||||||
queryWrapper.le(StringUtils.isNotBlank(endTimeStr), "createTime", endDate);
|
queryWrapper.le(StringUtils.isNotBlank(endTimeStr), "createTime", endDate);
|
||||||
}
|
}
|
||||||
|
queryWrapper.orderBy(SqlUtils.validSortField(sortField), sortOrder.equals(CommonConstant.SORT_ORDER_ASC), sortField);
|
||||||
return queryWrapper;
|
return queryWrapper;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -155,51 +158,21 @@ public class UserPerformanceSummaryServiceImpl extends ServiceImpl<UserPerforman
|
|||||||
* 在内存 List 上模拟 MyBatis-Plus 的分页
|
* 在内存 List 上模拟 MyBatis-Plus 的分页
|
||||||
*/
|
*/
|
||||||
public Page<SupervisorPerformanceSummaryVO> queryPage(UserPerformanceSummaryRankQueryRequest req, List<SupervisorPerformanceSummaryVO> allVos) {
|
public Page<SupervisorPerformanceSummaryVO> queryPage(UserPerformanceSummaryRankQueryRequest req, List<SupervisorPerformanceSummaryVO> allVos) {
|
||||||
|
// 根据字段排序
|
||||||
|
MiniUserPerformanceSummaryRankQueryRequest miniUserPerformanceSummaryRankQueryRequest = MiniUserPerformanceSummaryRankQueryRequest.builder()
|
||||||
|
.sortField(req.getSortField())
|
||||||
|
.sortOrder(req.getSortOrder())
|
||||||
|
.build();
|
||||||
|
sortPerformanceRankingList(allVos, miniUserPerformanceSummaryRankQueryRequest);
|
||||||
|
|
||||||
|
// 计算分页
|
||||||
long current = req.getCurrent(); // 页码
|
long current = req.getCurrent(); // 页码
|
||||||
long pageSize = req.getPageSize(); // 每页大小
|
long pageSize = req.getPageSize(); // 每页大小
|
||||||
|
long total = allVos.size();
|
||||||
// 1. 过滤
|
|
||||||
List<SupervisorPerformanceSummaryVO> filtered = allVos.stream()
|
|
||||||
.filter(vo -> {
|
|
||||||
if (StringUtils.isNotBlank(req.getNickName())) {
|
|
||||||
return vo.getNickName() != null
|
|
||||||
&& vo.getNickName().toLowerCase()
|
|
||||||
.contains(req.getNickName().toLowerCase());
|
|
||||||
}
|
|
||||||
return true;
|
|
||||||
})
|
|
||||||
.filter(vo -> {
|
|
||||||
if (StringUtils.isNotBlank(req.getPhoneNumber())) {
|
|
||||||
return vo.getPhoneNumber() != null
|
|
||||||
&& vo.getPhoneNumber().contains(req.getPhoneNumber());
|
|
||||||
}
|
|
||||||
return true;
|
|
||||||
})
|
|
||||||
.collect(Collectors.toList());
|
|
||||||
|
|
||||||
// 2. 排序
|
|
||||||
if (StringUtils.isNotBlank(req.getSortField())) {
|
|
||||||
Comparator<SupervisorPerformanceSummaryVO> cmp = Comparator.comparing(vo -> switch (req.getSortField()) {
|
|
||||||
case "totalAmount" -> vo.getTotalAmount();
|
|
||||||
case "netAmount" -> vo.getNetAmount();
|
|
||||||
case "promoCount" -> BigDecimal.valueOf(vo.getPromoCount());
|
|
||||||
case "empCount" -> BigDecimal.valueOf(vo.getEmpCount());
|
|
||||||
case "orderCount" -> BigDecimal.valueOf(vo.getOrderCount());
|
|
||||||
default -> null;
|
|
||||||
}, Comparator.nullsLast(Comparator.naturalOrder()));
|
|
||||||
|
|
||||||
if ("desc".equalsIgnoreCase(req.getSortOrder())) {
|
|
||||||
cmp = cmp.reversed();
|
|
||||||
}
|
|
||||||
filtered.sort(cmp);
|
|
||||||
}
|
|
||||||
|
|
||||||
// 3. 计算分页
|
|
||||||
long total = filtered.size();
|
|
||||||
long offset = (current - 1) * pageSize;
|
long offset = (current - 1) * pageSize;
|
||||||
int start = (int)Math.min(offset, total);
|
int start = (int)Math.min(offset, total);
|
||||||
int end = (int)Math.min(offset + pageSize, total);
|
int end = (int)Math.min(offset + pageSize, total);
|
||||||
List<SupervisorPerformanceSummaryVO> pageList = filtered.subList(start, end);
|
List<SupervisorPerformanceSummaryVO> pageList = allVos.subList(start, end);
|
||||||
|
|
||||||
// 4. 封装到 MyBatis-Plus 的 Page 对象
|
// 4. 封装到 MyBatis-Plus 的 Page 对象
|
||||||
Page<SupervisorPerformanceSummaryVO> page = new Page<>(current, pageSize);
|
Page<SupervisorPerformanceSummaryVO> page = new Page<>(current, pageSize);
|
||||||
@ -210,6 +183,59 @@ public class UserPerformanceSummaryServiceImpl extends ServiceImpl<UserPerforman
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
public void sortPerformanceRankingList(List<SupervisorPerformanceSummaryVO> supervisorPerformanceSummaryVOS, MiniUserPerformanceSummaryRankQueryRequest request) {
|
||||||
|
if (supervisorPerformanceSummaryVOS == null || supervisorPerformanceSummaryVOS.isEmpty()) {
|
||||||
|
return; // 如果列表为空,不进行排序
|
||||||
|
}
|
||||||
|
|
||||||
|
String sortField = request.getSortField();
|
||||||
|
String sortOrder = request.getSortOrder();
|
||||||
|
|
||||||
|
// 检查 sortField 是否有效,如果无效则不进行排序
|
||||||
|
if (!SqlUtils.validSortField(sortField)) {
|
||||||
|
System.out.println("Invalid sort field: " + sortField);
|
||||||
|
return; // 如果 sortField 无效,不进行排序
|
||||||
|
}
|
||||||
|
|
||||||
|
Comparator<SupervisorPerformanceSummaryVO> comparator = getComparatorForSortField(sortField);
|
||||||
|
|
||||||
|
if (comparator == null) {
|
||||||
|
return; // 如果没有匹配的字段,跳过排序
|
||||||
|
}
|
||||||
|
|
||||||
|
// 判断排序方向
|
||||||
|
if (CommonConstant.SORT_ORDER_DESC.equalsIgnoreCase(sortOrder)) {
|
||||||
|
comparator = comparator.reversed(); // 降序
|
||||||
|
}
|
||||||
|
|
||||||
|
// 执行排序
|
||||||
|
supervisorPerformanceSummaryVOS.sort(comparator);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 根据 sortField 获取对应的 Comparator
|
||||||
|
*/
|
||||||
|
private Comparator<SupervisorPerformanceSummaryVO> getComparatorForSortField(String sortField) {
|
||||||
|
// 定义一个Map,将字段名与其对应的比较器关联起来
|
||||||
|
Map<String, Comparator<SupervisorPerformanceSummaryVO>> comparatorMap = Map.of(
|
||||||
|
"empCount", Comparator.comparing(SupervisorPerformanceSummaryVO::getEmpCount, Comparator.nullsLast(Comparator.naturalOrder())),
|
||||||
|
"promoCount", Comparator.comparing(SupervisorPerformanceSummaryVO::getPromoCount, Comparator.nullsLast(Comparator.naturalOrder())),
|
||||||
|
"orderCount", Comparator.comparing(SupervisorPerformanceSummaryVO::getOrderCount, Comparator.nullsLast(Comparator.naturalOrder())),
|
||||||
|
"totalAmount", Comparator.comparing(SupervisorPerformanceSummaryVO::getTotalAmount, Comparator.nullsLast(Comparator.naturalOrder())),
|
||||||
|
"netAmount", Comparator.comparing(SupervisorPerformanceSummaryVO::getNetAmount, Comparator.nullsLast(Comparator.naturalOrder()))
|
||||||
|
);
|
||||||
|
|
||||||
|
// 返回对应字段的比较器,如果没有匹配的字段,则返回null
|
||||||
|
return comparatorMap.get(sortField);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 查看某个时间段的绩效
|
* 查看某个时间段的绩效
|
||||||
*/
|
*/
|
||||||
|
Reference in New Issue
Block a user