完成了第一版

This commit is contained in:
2025-05-14 10:40:17 +08:00
parent 1a9822350a
commit 26f9fe2a20
11 changed files with 129 additions and 73 deletions

View File

@ -2,6 +2,7 @@ package com.greenorange.promotion.controller.project;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.baomidou.mybatisplus.core.toolkit.support.SFunction;
import com.greenorange.promotion.annotation.RequiresPermission;
import com.greenorange.promotion.annotation.SysLog;
import com.greenorange.promotion.common.BaseResponse;
@ -84,10 +85,7 @@ public class ProjectDetailController {
projectService.updateById(project);
// 获取所有的小程序用户
LambdaQueryWrapper<UserInfo> lambdaQueryWrapper = new LambdaQueryWrapper<>();
lambdaQueryWrapper.eq(UserInfo::getUserRole, UserConstant.DEFAULT_ROLE);
List<UserInfo> userInfoList = userInfoService.list(lambdaQueryWrapper);
List<UserInfo> userInfoList = commonService.findByFieldEqTargetField(UserInfo::getUserRole, UserConstant.DEFAULT_ROLE, userInfoService);
// 获取参数信息
List<ProjectCommissionAddRequest> projectCommissionAddRequestList = new ArrayList<>();
Long projectDetailId = projectDetail.getId();
@ -108,9 +106,9 @@ public class ProjectDetailController {
projectCommissionService.saveBatch(projectCommissions);
// 给所有用户添加一条下级项目明细抽佣表
userInfoList = userInfoList.stream().filter(userInfo -> userInfo.getParentUserId() != null).collect(Collectors.toList());
List<SubUserProjectCommissionAddRequest> subUserProjectCommissionAddRequestList = new ArrayList<>();
for (UserInfo userInfo : userInfoList) {
if (userInfo.getParentUserId() == 0) continue;
SubUserProjectCommissionAddRequest subUserProjectCommissionAddRequest = SubUserProjectCommissionAddRequest.builder()
.projectDetailId(projectDetailId)
.myUnitPrice(projectSettlementPrice)
@ -141,13 +139,13 @@ public class ProjectDetailController {
Long projectDetailId = projectDetailUpdateRequest.getId();
ProjectDetail sourceProjectDetail = projectDetailService.getById(projectDetailId);
ProjectDetail projectDetail = commonService.copyProperties(projectDetailUpdateRequest, ProjectDetail.class);
// 1.更新项目明细的结算价格
projectDetailService.updateById(projectDetail);
// 更新项目的价格
Long projectId = projectDetail.getProjectId();
Project project = projectService.getById(projectId);
project.setProjectPrice(project.getProjectPrice().subtract(sourceProjectDetail.getProjectSettlementPrice()).add(projectDetail.getProjectSettlementPrice()));
projectService.updateById(project);
// 1.更新项目明细的结算价格
projectDetailService.updateById(projectDetail);
// 2.更新抽佣比例(如果抽佣比例比原来小)
LambdaQueryWrapper<SubUserProjectCommission> lambdaQueryWrapper = new LambdaQueryWrapper<>();
lambdaQueryWrapper.eq(SubUserProjectCommission::getProjectDetailId, projectDetail.getId());
@ -167,32 +165,31 @@ public class ProjectDetailController {
commissionRateMap.put(key, currentCommissionRate);
}
// 获取所有的小程序用户
LambdaQueryWrapper<UserInfo> userInfoLambdaQueryWrapper = new LambdaQueryWrapper<>();
userInfoLambdaQueryWrapper.eq(UserInfo::getUserRole, UserConstant.DEFAULT_ROLE);
List<UserInfo> userInfoList = userInfoService.list(userInfoLambdaQueryWrapper);
List<UserInfo> userInfoList = commonService.findByFieldEqTargetField(UserInfo::getUserRole, UserConstant.DEFAULT_ROLE, userInfoService);
// 用来存储每个用户的上级列表
Map<Long, List<Long>> userParentMap = new HashMap<>();
for (UserInfo userInfo : userInfoList) {
String superUserList = userInfo.getSuperUserList();
if (superUserList != null) userParentMap.put(userInfo.getId(), Arrays.stream(superUserList.split(",")).map(Long::parseLong).collect(Collectors.toList()));
}
// Map<Long, List<Long>> userParentMap = new HashMap<>();
// for (UserInfo userInfo : userInfoList) {
// String superUserList = userInfo.getSuperUserList();
// if (superUserList != null) userParentMap.put(userInfo.getId(), Arrays.stream(superUserList.split(",")).map(Long::parseLong).collect(Collectors.toList()));
// }
// userInfoService.findPathToRoot()
// 4.更新所有用户的结算价格
for (SubUserProjectCommission subUserProjectCommission : subUserProjectCommissionList) {
Long userId = subUserProjectCommission.getUserId();
List<Long> parentIds = userParentMap.get(userId);
parentIds.add(userId);
BigDecimal totalRate = BigDecimal.ONE;
for (int i = 0; i < parentIds.size() - 1; i ++ ) {
String key = parentIds.get(i) + "-" + parentIds.get(i + 1);
BigDecimal commissionRate = commissionRateMap.get(key);
totalRate = totalRate.multiply(BigDecimal.ONE.subtract(commissionRate));
}
BigDecimal projectSettlementPrice = projectDetail.getProjectSettlementPrice();
BigDecimal projectMinSettlementPrice = projectDetail.getProjectMinSettlementPrice();
BigDecimal finallySettlementPrice = projectSettlementPrice.multiply(totalRate);
if (finallySettlementPrice.compareTo(projectMinSettlementPrice) < 0) finallySettlementPrice = projectMinSettlementPrice;
subUserProjectCommission.setMyUnitPrice(finallySettlementPrice);
}
// for (SubUserProjectCommission subUserProjectCommission : subUserProjectCommissionList) {
// Long userId = subUserProjectCommission.getUserId();
// List<Long> parentIds = userParentMap.get(userId);
// parentIds.add(userId);
// BigDecimal totalRate = BigDecimal.ONE;
// for (int i = 0; i < parentIds.size() - 1; i ++ ) {
// String key = parentIds.get(i) + "-" + parentIds.get(i + 1);
// BigDecimal commissionRate = commissionRateMap.get(key);
// totalRate = totalRate.multiply(BigDecimal.ONE.subtract(commissionRate));
// }
// BigDecimal projectSettlementPrice = projectDetail.getProjectSettlementPrice();
// BigDecimal projectMinSettlementPrice = projectDetail.getProjectMinSettlementPrice();
// BigDecimal finallySettlementPrice = projectSettlementPrice.multiply(totalRate);
// if (finallySettlementPrice.compareTo(projectMinSettlementPrice) < 0) finallySettlementPrice = projectMinSettlementPrice;
// subUserProjectCommission.setMyUnitPrice(finallySettlementPrice);
// }
subUserProjectCommissionService.updateBatchById(subUserProjectCommissionList);
return ResultUtils.success(true);
@ -243,7 +240,6 @@ public class ProjectDetailController {
public BaseResponse<ProjectDetailVO> queryProjectDetailById(@Valid @RequestBody CommonRequest commonRequest) {
Long id = commonRequest.getId();
ProjectDetail projectDetail = projectDetailService.getById(id);
ThrowUtils.throwIf(projectDetail == null, ErrorCode.OPERATION_ERROR, "当前项目明细不存在");
ProjectDetailVO projectDetailVO = commonService.copyProperties(projectDetail, ProjectDetailVO.class);
return ResultUtils.success(projectDetailVO);
}
@ -260,9 +256,7 @@ public class ProjectDetailController {
@SysLog(title = "项目明细管理", content = "web端管理员根据项目id查询项目明细")
public BaseResponse<List<ProjectDetailVO>> queryProjectDetailByPid(@Valid @RequestBody CommonRequest commonRequest) {
Long id = commonRequest.getId();
LambdaQueryWrapper<ProjectDetail> lambdaQueryWrapper = new LambdaQueryWrapper<>();
lambdaQueryWrapper.eq(ProjectDetail::getProjectId, id);
List<ProjectDetail> projectDetailList = projectDetailService.list(lambdaQueryWrapper);
List<ProjectDetail> projectDetailList = commonService.findByFieldEqTargetField(ProjectDetail::getProjectId, id, projectDetailService);
List<ProjectDetailVO> projectDetailVOS = commonService.convertList(projectDetailList, ProjectDetailVO.class);
return ResultUtils.success(projectDetailVOS);
}

View File

@ -390,6 +390,21 @@ public class UserInfoController {
}
/**
* (小程序端)查询当前用户到根节点的userId路径
* @param commonRequest 用户id
* @return 用户表列表
*/
@PostMapping("query/path")
@Operation(summary = "查询当前用户到根节点的userId路径", description = "参数用户id权限管理员boss, admin),方法名:findPathToRootUserIdList")
@RequiresPermission(mustRole = UserConstant.DEFAULT_ROLE)
@SysLog(title = "用户管理", content = "查询当前用户到根节点的userId路径")
public BaseResponse<List<Long>> findPathToRootUserIdList(@Valid @RequestBody CommonRequest commonRequest) {
Long userId = commonRequest.getId();
List<Long> pathToRoot = userInfoService.findPathToRoot(userId);
return ResultUtils.success(pathToRoot);
}