修复的功能
1.web端管理员添加项目明细后,项目明细价格根据小程序用户的抽佣比例自动调整
This commit is contained in:
@ -22,6 +22,7 @@ import com.greenorange.promotion.service.project.ProjectDetailService;
|
|||||||
import com.greenorange.promotion.service.project.ProjectService;
|
import com.greenorange.promotion.service.project.ProjectService;
|
||||||
import com.greenorange.promotion.service.project.SubUserProjectCommissionService;
|
import com.greenorange.promotion.service.project.SubUserProjectCommissionService;
|
||||||
import com.greenorange.promotion.service.userInfo.UserInfoService;
|
import com.greenorange.promotion.service.userInfo.UserInfoService;
|
||||||
|
import com.greenorange.promotion.service.userInfo.UserMainInfoService;
|
||||||
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;
|
||||||
@ -65,6 +66,9 @@ public class ProjectDetailController {
|
|||||||
@Resource
|
@Resource
|
||||||
private ProjectService projectService;
|
private ProjectService projectService;
|
||||||
|
|
||||||
|
@Resource
|
||||||
|
private UserMainInfoService userMainInfoService;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* web端管理员添加项目明细
|
* web端管理员添加项目明细
|
||||||
* @param projectDetailAddRequest 项目明细添加请求体
|
* @param projectDetailAddRequest 项目明细添加请求体
|
||||||
@ -89,6 +93,13 @@ public class ProjectDetailController {
|
|||||||
|
|
||||||
// 获取所有的小程序用户
|
// 获取所有的小程序用户
|
||||||
List<UserInfo> userInfoList = commonService.findByFieldEqTargetField(UserInfo::getUserRole, UserConstant.DEFAULT_ROLE, userInfoService);
|
List<UserInfo> userInfoList = commonService.findByFieldEqTargetField(UserInfo::getUserRole, UserConstant.DEFAULT_ROLE, userInfoService);
|
||||||
|
List<UserMainInfo> userMainInfoList = commonService.findByFieldInTargetField(userInfoList, userMainInfoService, UserInfo::getId, UserMainInfo::getUserId);
|
||||||
|
// 封装Map(键:用户id, 值:抽佣比例)
|
||||||
|
Map<Long, BigDecimal> userCommissionRateMap = new HashMap<>();
|
||||||
|
for (UserMainInfo userMainInfo : userMainInfoList) {
|
||||||
|
userCommissionRateMap.put(userMainInfo.getUserId(), userMainInfo.getUniteRate());
|
||||||
|
}
|
||||||
|
|
||||||
// 获取参数信息
|
// 获取参数信息
|
||||||
List<ProjectCommissionAddRequest> projectCommissionAddRequestList = new ArrayList<>();
|
List<ProjectCommissionAddRequest> projectCommissionAddRequestList = new ArrayList<>();
|
||||||
Long projectDetailId = projectDetail.getId();
|
Long projectDetailId = projectDetail.getId();
|
||||||
@ -106,7 +117,11 @@ public class ProjectDetailController {
|
|||||||
projectCommissionAddRequestList.add(projectCommissionAddRequest);
|
projectCommissionAddRequestList.add(projectCommissionAddRequest);
|
||||||
}
|
}
|
||||||
List<ProjectCommission> projectCommissions = commonService.convertList(projectCommissionAddRequestList, ProjectCommission.class);
|
List<ProjectCommission> projectCommissions = commonService.convertList(projectCommissionAddRequestList, ProjectCommission.class);
|
||||||
projectCommissionService.saveBatch(projectCommissions);
|
List<SubUserProjectCommission> userProjectCommissions = commonService.convertList(projectCommissions, SubUserProjectCommission.class);
|
||||||
|
for (SubUserProjectCommission userProjectCommission : userProjectCommissions) {
|
||||||
|
userProjectCommission.setSubUserId(-1L);
|
||||||
|
}
|
||||||
|
// projectCommissionService.saveBatch(projectCommissions);
|
||||||
|
|
||||||
// 给所有用户添加一条下级项目明细抽佣表
|
// 给所有用户添加一条下级项目明细抽佣表
|
||||||
List<SubUserProjectCommissionAddRequest> subUserProjectCommissionAddRequestList = new ArrayList<>();
|
List<SubUserProjectCommissionAddRequest> subUserProjectCommissionAddRequestList = new ArrayList<>();
|
||||||
@ -122,80 +137,119 @@ public class ProjectDetailController {
|
|||||||
subUserProjectCommissionAddRequestList.add(subUserProjectCommissionAddRequest);
|
subUserProjectCommissionAddRequestList.add(subUserProjectCommissionAddRequest);
|
||||||
}
|
}
|
||||||
List<SubUserProjectCommission> subUserProjectCommissions = commonService.convertList(subUserProjectCommissionAddRequestList, SubUserProjectCommission.class);
|
List<SubUserProjectCommission> subUserProjectCommissions = commonService.convertList(subUserProjectCommissionAddRequestList, SubUserProjectCommission.class);
|
||||||
subUserProjectCommissionService.saveBatch(subUserProjectCommissions);
|
// subUserProjectCommissionService.saveBatch(subUserProjectCommissions);
|
||||||
|
subUserProjectCommissions.addAll(userProjectCommissions);
|
||||||
return ResultUtils.success(true);
|
// 对抽佣记录进行排序
|
||||||
}
|
projectCommissionService.sortSubProjectCommissions(subUserProjectCommissions);
|
||||||
|
// 设置抽佣比例和单价
|
||||||
/**
|
|
||||||
* web端管理员根据id修改项目明细信息
|
|
||||||
* @param projectDetailUpdateRequest 项目明细更新请求体
|
|
||||||
* @return 是否更新成功
|
|
||||||
*/
|
|
||||||
@PostMapping("update")
|
|
||||||
@Operation(summary = "web端管理员更新项目明细", description = "参数:项目明细更新请求体,权限:管理员,方法名:updateProjectDetail")
|
|
||||||
@RequiresPermission(mustRole = UserConstant.ADMIN_ROLE)
|
|
||||||
@SysLog(title = "项目明细管理", content = "web端管理员根据id修改项目明细信息")
|
|
||||||
public BaseResponse<Boolean> updateProjectDetail(@Valid @RequestBody ProjectDetailUpdateRequest projectDetailUpdateRequest) {
|
|
||||||
|
|
||||||
// 更新项目明细的结算价格
|
|
||||||
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);
|
|
||||||
// 2.更新抽佣比例(如果抽佣比例比原来小)
|
|
||||||
List<SubUserProjectCommission> subUserProjectCommissionList = commonService.findByFieldEqTargetField(SubUserProjectCommission::getProjectDetailId, projectDetail.getId(), subUserProjectCommissionService);
|
|
||||||
for (SubUserProjectCommission subUserProjectCommission : subUserProjectCommissionList) {
|
|
||||||
BigDecimal currentCommissionRate = subUserProjectCommission.getCurrentCommissionRate();
|
|
||||||
BigDecimal maxCommissionRate = projectDetail.getMaxCommissionRate();
|
|
||||||
if (currentCommissionRate.compareTo(maxCommissionRate) > 0) subUserProjectCommission.setCurrentCommissionRate(maxCommissionRate);
|
|
||||||
}
|
|
||||||
// 将下级用户项目明细抽佣列表根据父级用户id进行排序(升序)
|
|
||||||
subUserProjectCommissionList.sort(Comparator.comparing(SubUserProjectCommission::getUserId));
|
|
||||||
// 更新下级用户项目明细抽佣表记录
|
|
||||||
BigDecimal projectSettlementPrice = projectDetail.getProjectSettlementPrice();
|
|
||||||
BigDecimal projectMinSettlementPrice = projectDetail.getProjectMinSettlementPrice();
|
|
||||||
// 封装Map集合(键:下级用户id,值:下级用户单价)
|
// 封装Map集合(键:下级用户id,值:下级用户单价)
|
||||||
Map<Long, BigDecimal> subUserUnitPriceMap = new HashMap<>();
|
Map<Long, BigDecimal> subUserProjectCommissionMap = new HashMap<>();
|
||||||
// 获取小程序用户的根用户
|
for (SubUserProjectCommission subUserProjectCommission : subUserProjectCommissions) {
|
||||||
List<UserInfo> userInfoList = commonService.findByFieldEqTargetField(UserInfo::getUserRole, UserConstant.DEFAULT_ROLE, userInfoService);
|
|
||||||
UserInfo rootUserInfo = userInfoList.get(0);
|
|
||||||
// 存储根用户的单价
|
|
||||||
subUserUnitPriceMap.put(rootUserInfo.getId(), projectSettlementPrice);
|
|
||||||
for (SubUserProjectCommission subUserProjectCommission : subUserProjectCommissionList) {
|
|
||||||
// 记录上级用户的对下级用户的抽佣比例
|
|
||||||
BigDecimal currentCommissionRate = subUserProjectCommission.getCurrentCommissionRate();
|
|
||||||
Long userId = subUserProjectCommission.getUserId();
|
Long userId = subUserProjectCommission.getUserId();
|
||||||
Long subUserId = subUserProjectCommission.getSubUserId();
|
Long subUserId = subUserProjectCommission.getSubUserId();
|
||||||
// 获取当前用户的单价,并将当前记录修改为当前用户的单价
|
// 设置抽佣比例
|
||||||
BigDecimal userUnitPrice = subUserUnitPriceMap.get(userId);
|
BigDecimal uniteRate = userCommissionRateMap.get(userId);
|
||||||
subUserProjectCommission.setMyUnitPrice(userUnitPrice);
|
subUserProjectCommission.setCurrentCommissionRate(uniteRate);
|
||||||
// 计算下级用户的单价
|
// 设置单价
|
||||||
BigDecimal subUserUnitPrice = userUnitPrice.multiply(BigDecimal.ONE.subtract(currentCommissionRate));
|
BigDecimal myUnitPrice = subUserProjectCommissionMap.get(userId);
|
||||||
// 如果下级用户的单价小于项目明细最小结算价格,则设置下级用户的单价为项目明细最小结算价格
|
if (myUnitPrice == null) myUnitPrice = subUserProjectCommission.getMyUnitPrice();
|
||||||
if (subUserUnitPrice.compareTo(projectMinSettlementPrice) < 0) subUserUnitPrice = projectMinSettlementPrice;
|
subUserProjectCommission.setMyUnitPrice(myUnitPrice);
|
||||||
// 存储下级用户的单价
|
BigDecimal subUserUnitPrice = projectCommissionService.calculateFinalPrice(myUnitPrice, uniteRate);
|
||||||
subUserUnitPriceMap.put(subUserId, subUserUnitPrice);
|
if (subUserId != -1L) subUserProjectCommissionMap.put(subUserId, subUserUnitPrice);
|
||||||
}
|
}
|
||||||
// 更新下级用户项目明细抽佣表记录
|
|
||||||
subUserProjectCommissionService.updateBatchById(subUserProjectCommissionList);
|
long startTime = System.currentTimeMillis();
|
||||||
// 更新用户项目明细抽佣表记录
|
|
||||||
List<ProjectCommission> projectCommissionList = commonService.findByFieldEqTargetField(ProjectCommission::getProjectDetailId, projectDetail.getId(), projectCommissionService);
|
// 批量更新下级用户项目明细抽佣记录
|
||||||
for (ProjectCommission projectCommission : projectCommissionList) {
|
List<SubUserProjectCommission> subProjectCommissions = subUserProjectCommissions.stream()
|
||||||
Long userId = projectCommission.getUserId();
|
.filter(subUserProjectCommission -> subUserProjectCommission.getSubUserId() != -1L).toList();
|
||||||
BigDecimal userUnitPrice = subUserUnitPriceMap.get(userId);
|
subUserProjectCommissionService.saveBatch(subProjectCommissions);
|
||||||
projectCommission.setMyUnitPrice(userUnitPrice);
|
// 批量更新用户项目明细抽佣记录
|
||||||
}
|
|
||||||
projectCommissionService.updateBatchById(projectCommissionList);
|
List<SubUserProjectCommission> projectCommissionList = subUserProjectCommissions.stream()
|
||||||
|
.filter(subUserProjectCommission -> subUserProjectCommission.getSubUserId() == -1L).toList();
|
||||||
|
List<ProjectCommission> commissionList = commonService.convertList(projectCommissionList, ProjectCommission.class);
|
||||||
|
projectCommissionService.saveBatch(commissionList);
|
||||||
|
|
||||||
|
// 获取结束时间戳
|
||||||
|
long endTime = System.currentTimeMillis();
|
||||||
|
// 计算执行时间
|
||||||
|
long executionTime = endTime - startTime;
|
||||||
|
System.out.println("程序执行时间: " + executionTime + " 毫秒");
|
||||||
|
|
||||||
|
|
||||||
return ResultUtils.success(true);
|
return ResultUtils.success(true);
|
||||||
}
|
}
|
||||||
|
//
|
||||||
|
// /**
|
||||||
|
// * web端管理员根据id修改项目明细信息
|
||||||
|
// * @param projectDetailUpdateRequest 项目明细更新请求体
|
||||||
|
// * @return 是否更新成功
|
||||||
|
// */
|
||||||
|
// @PostMapping("update")
|
||||||
|
// @Operation(summary = "web端管理员更新项目明细", description = "参数:项目明细更新请求体,权限:管理员,方法名:updateProjectDetail")
|
||||||
|
// @RequiresPermission(mustRole = UserConstant.ADMIN_ROLE)
|
||||||
|
// @SysLog(title = "项目明细管理", content = "web端管理员根据id修改项目明细信息")
|
||||||
|
// public BaseResponse<Boolean> updateProjectDetail(@Valid @RequestBody ProjectDetailUpdateRequest projectDetailUpdateRequest) {
|
||||||
|
//
|
||||||
|
// // 更新项目明细的结算价格
|
||||||
|
// 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);
|
||||||
|
// // 2.更新抽佣比例(如果抽佣比例比原来小)
|
||||||
|
// List<SubUserProjectCommission> subUserProjectCommissionList = commonService.findByFieldEqTargetField(SubUserProjectCommission::getProjectDetailId, projectDetail.getId(), subUserProjectCommissionService);
|
||||||
|
// for (SubUserProjectCommission subUserProjectCommission : subUserProjectCommissionList) {
|
||||||
|
// BigDecimal currentCommissionRate = subUserProjectCommission.getCurrentCommissionRate();
|
||||||
|
// BigDecimal maxCommissionRate = projectDetail.getMaxCommissionRate();
|
||||||
|
// if (currentCommissionRate.compareTo(maxCommissionRate) > 0) subUserProjectCommission.setCurrentCommissionRate(maxCommissionRate);
|
||||||
|
// }
|
||||||
|
// // 将下级用户项目明细抽佣列表根据父级用户id进行排序(升序)
|
||||||
|
// subUserProjectCommissionList.sort(Comparator.comparing(SubUserProjectCommission::getUserId));
|
||||||
|
// // 更新下级用户项目明细抽佣表记录
|
||||||
|
// BigDecimal projectSettlementPrice = projectDetail.getProjectSettlementPrice();
|
||||||
|
// BigDecimal projectMinSettlementPrice = projectDetail.getProjectMinSettlementPrice();
|
||||||
|
// // 封装Map集合(键:下级用户id,值:下级用户单价)
|
||||||
|
// Map<Long, BigDecimal> subUserUnitPriceMap = new HashMap<>();
|
||||||
|
// // 获取小程序用户的根用户
|
||||||
|
// List<UserInfo> userInfoList = commonService.findByFieldEqTargetField(UserInfo::getUserRole, UserConstant.DEFAULT_ROLE, userInfoService);
|
||||||
|
// UserInfo rootUserInfo = userInfoList.get(0);
|
||||||
|
// // 存储根用户的单价
|
||||||
|
// subUserUnitPriceMap.put(rootUserInfo.getId(), projectSettlementPrice);
|
||||||
|
// for (SubUserProjectCommission subUserProjectCommission : subUserProjectCommissionList) {
|
||||||
|
// // 记录上级用户的对下级用户的抽佣比例
|
||||||
|
// BigDecimal currentCommissionRate = subUserProjectCommission.getCurrentCommissionRate();
|
||||||
|
// Long userId = subUserProjectCommission.getUserId();
|
||||||
|
// Long subUserId = subUserProjectCommission.getSubUserId();
|
||||||
|
// // 获取当前用户的单价,并将当前记录修改为当前用户的单价
|
||||||
|
// BigDecimal userUnitPrice = subUserUnitPriceMap.get(userId);
|
||||||
|
// subUserProjectCommission.setMyUnitPrice(userUnitPrice);
|
||||||
|
// // 计算下级用户的单价
|
||||||
|
// BigDecimal subUserUnitPrice = userUnitPrice.multiply(BigDecimal.ONE.subtract(currentCommissionRate));
|
||||||
|
// // 如果下级用户的单价小于项目明细最小结算价格,则设置下级用户的单价为项目明细最小结算价格
|
||||||
|
// if (subUserUnitPrice.compareTo(projectMinSettlementPrice) < 0) subUserUnitPrice = projectMinSettlementPrice;
|
||||||
|
// // 存储下级用户的单价
|
||||||
|
// subUserUnitPriceMap.put(subUserId, subUserUnitPrice);
|
||||||
|
// }
|
||||||
|
// // 更新下级用户项目明细抽佣表记录
|
||||||
|
// subUserProjectCommissionService.updateBatchById(subUserProjectCommissionList);
|
||||||
|
// // 更新用户项目明细抽佣表记录
|
||||||
|
// List<ProjectCommission> projectCommissionList = commonService.findByFieldEqTargetField(ProjectCommission::getProjectDetailId, projectDetail.getId(), projectCommissionService);
|
||||||
|
// for (ProjectCommission projectCommission : projectCommissionList) {
|
||||||
|
// Long userId = projectCommission.getUserId();
|
||||||
|
// BigDecimal userUnitPrice = subUserUnitPriceMap.get(userId);
|
||||||
|
// projectCommission.setMyUnitPrice(userUnitPrice);
|
||||||
|
// }
|
||||||
|
// projectCommissionService.updateBatchById(projectCommissionList);
|
||||||
|
//
|
||||||
|
// return ResultUtils.success(true);
|
||||||
|
// }
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* web端管理员根据id删除项目明细
|
* web端管理员根据id删除项目明细
|
||||||
|
@ -17,6 +17,7 @@ import com.greenorange.promotion.model.dto.CommonStringRequest;
|
|||||||
import com.greenorange.promotion.model.dto.userInfo.*;
|
import com.greenorange.promotion.model.dto.userInfo.*;
|
||||||
import com.greenorange.promotion.model.entity.UserInfo;
|
import com.greenorange.promotion.model.entity.UserInfo;
|
||||||
import com.greenorange.promotion.model.entity.UserMainInfo;
|
import com.greenorange.promotion.model.entity.UserMainInfo;
|
||||||
|
import com.greenorange.promotion.model.vo.userInfo.SuperUserInfoVO;
|
||||||
import com.greenorange.promotion.model.vo.userInfo.UserInfoVO;
|
import com.greenorange.promotion.model.vo.userInfo.UserInfoVO;
|
||||||
import com.greenorange.promotion.model.vo.userMainInfo.UserMainInfoVO;
|
import com.greenorange.promotion.model.vo.userMainInfo.UserMainInfoVO;
|
||||||
import com.greenorange.promotion.service.common.CommonService;
|
import com.greenorange.promotion.service.common.CommonService;
|
||||||
@ -406,6 +407,8 @@ public class UserInfoController {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
// /**
|
// /**
|
||||||
// * (小程序端)查询当前用户到根节点的userId路径
|
// * (小程序端)查询当前用户到根节点的userId路径
|
||||||
// * @param commonRequest 用户id
|
// * @param commonRequest 用户id
|
||||||
@ -423,6 +426,23 @@ public class UserInfoController {
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 小程序端用户获取上级用户信息
|
||||||
|
* @return 上级用户信息
|
||||||
|
*/
|
||||||
|
@PostMapping("getSuper")
|
||||||
|
@Operation(summary = "小程序端用户获取上级用户信息", description = "参数:用户表查询请求体,权限:管理员(boss, admin),方法名:queryUserInfoById")
|
||||||
|
@RequiresPermission(mustRole = UserConstant.DEFAULT_ROLE)
|
||||||
|
public BaseResponse<SuperUserInfoVO> getSuperUserInfo(HttpServletRequest request) {
|
||||||
|
Long userId = (Long) request.getAttribute("userId");
|
||||||
|
UserInfo userInfo = userInfoService.getById(userId);
|
||||||
|
Long parentUserId = userInfo.getParentUserId();
|
||||||
|
if (parentUserId != 0) {
|
||||||
|
userInfo = userInfoService.getById(parentUserId);
|
||||||
|
}
|
||||||
|
SuperUserInfoVO superUserInfoVO = commonService.copyProperties(userInfo, SuperUserInfoVO.class);
|
||||||
|
return ResultUtils.success(superUserInfoVO);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@ -0,0 +1,30 @@
|
|||||||
|
package com.greenorange.promotion.model.vo.userInfo;
|
||||||
|
|
||||||
|
import io.swagger.v3.oas.annotations.media.Schema;
|
||||||
|
import lombok.Data;
|
||||||
|
|
||||||
|
import java.io.Serial;
|
||||||
|
import java.io.Serializable;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 上级用户信息 视图对象
|
||||||
|
*/
|
||||||
|
@Data
|
||||||
|
@Schema(description = "上级用户信息 视图对象")
|
||||||
|
public class SuperUserInfoVO implements Serializable {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 用户昵称
|
||||||
|
*/
|
||||||
|
@Schema(description = "用户昵称", example = "chenxinzhi")
|
||||||
|
private String nickName;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 手机号
|
||||||
|
*/
|
||||||
|
@Schema(description = "手机号", example = "15888610253")
|
||||||
|
private String phoneNumber;
|
||||||
|
|
||||||
|
@Serial
|
||||||
|
private static final long serialVersionUID = 1L;
|
||||||
|
}
|
@ -5,8 +5,12 @@ import com.greenorange.promotion.model.dto.projectCommission.ProjectCommissionUp
|
|||||||
import com.greenorange.promotion.model.dto.subUserProjectCommission.SubUserProjectCommissionUpdateRequest;
|
import com.greenorange.promotion.model.dto.subUserProjectCommission.SubUserProjectCommissionUpdateRequest;
|
||||||
import com.greenorange.promotion.model.entity.ProjectCommission;
|
import com.greenorange.promotion.model.entity.ProjectCommission;
|
||||||
import com.baomidou.mybatisplus.extension.service.IService;
|
import com.baomidou.mybatisplus.extension.service.IService;
|
||||||
|
import com.greenorange.promotion.model.entity.SubUserProjectCommission;
|
||||||
import jakarta.servlet.http.HttpServletRequest;
|
import jakarta.servlet.http.HttpServletRequest;
|
||||||
|
|
||||||
|
import java.math.BigDecimal;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @author 35880
|
* @author 35880
|
||||||
* @description 针对表【project_commission(项目明细抽佣表)】的数据库操作Service
|
* @description 针对表【project_commission(项目明细抽佣表)】的数据库操作Service
|
||||||
@ -31,4 +35,35 @@ public interface ProjectCommissionService extends IService<ProjectCommission> {
|
|||||||
* 小程序用户一键设置项目的的抽佣比例
|
* 小程序用户一键设置项目的的抽佣比例
|
||||||
*/
|
*/
|
||||||
void uniteProjectCommissionRate(ProjectCommissionUniteUpdateRequest projectCommissionUniteUpdateRequest, HttpServletRequest request);
|
void uniteProjectCommissionRate(ProjectCommissionUniteUpdateRequest projectCommissionUniteUpdateRequest, HttpServletRequest request);
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 批量修改下级用户的单价
|
||||||
|
*/
|
||||||
|
void batchUpdateSubUserMyUnitPrice(List<SubUserProjectCommission> subCommissionList);
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 批量修改用户的单价
|
||||||
|
*/
|
||||||
|
void batchUpdateMyUnitPrice(List<ProjectCommission> projectCommissionList);
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 对项目抽佣记录进行排序(根据userId, subUserId进行排序)
|
||||||
|
*/
|
||||||
|
void sortSubProjectCommissions(List<SubUserProjectCommission> subProjectCommissions);
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 对项目抽佣记录进行排序(根据projectDetailId, userId, subUserId进行排序)
|
||||||
|
*/
|
||||||
|
void sortProjectDetailAndSubProjectCommissions(List<SubUserProjectCommission> subProjectCommissions);
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 根据价格和抽佣比例计算最终价格
|
||||||
|
*/
|
||||||
|
BigDecimal calculateFinalPrice(BigDecimal price, BigDecimal commissionRate);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -373,7 +373,8 @@ public class ProjectCommissionServiceImpl extends ServiceImpl<ProjectCommissionM
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@Override
|
||||||
|
@Transactional
|
||||||
public void batchUpdateSubUserMyUnitPrice(List<SubUserProjectCommission> subCommissionList) {
|
public void batchUpdateSubUserMyUnitPrice(List<SubUserProjectCommission> subCommissionList) {
|
||||||
StringBuilder sql = new StringBuilder("UPDATE sub_user_project_commission SET myUnitPrice = CASE id ");
|
StringBuilder sql = new StringBuilder("UPDATE sub_user_project_commission SET myUnitPrice = CASE id ");
|
||||||
|
|
||||||
@ -400,6 +401,8 @@ public class ProjectCommissionServiceImpl extends ServiceImpl<ProjectCommissionM
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@Override
|
||||||
|
@Transactional
|
||||||
public void batchUpdateMyUnitPrice(List<ProjectCommission> projectCommissionList) {
|
public void batchUpdateMyUnitPrice(List<ProjectCommission> projectCommissionList) {
|
||||||
StringBuilder sql = new StringBuilder("UPDATE project_commission SET myUnitPrice = CASE id ");
|
StringBuilder sql = new StringBuilder("UPDATE project_commission SET myUnitPrice = CASE id ");
|
||||||
|
|
||||||
@ -425,23 +428,27 @@ public class ProjectCommissionServiceImpl extends ServiceImpl<ProjectCommissionM
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@Override
|
||||||
// 封装排序方法
|
// 封装排序方法
|
||||||
private void sortSubProjectCommissions(List<SubUserProjectCommission> subProjectCommissions) {
|
public void sortSubProjectCommissions(List<SubUserProjectCommission> subProjectCommissions) {
|
||||||
// 先根据userId升序排序
|
// 先根据userId升序排序
|
||||||
// 如果userId相同,再根据subUserId升序排序
|
// 如果userId相同,再根据subUserId升序排序
|
||||||
Collections.sort(subProjectCommissions, Comparator.comparingLong(SubUserProjectCommission::getUserId).thenComparingLong(SubUserProjectCommission::getSubUserId));
|
Collections.sort(subProjectCommissions, Comparator.comparingLong(SubUserProjectCommission::getUserId).thenComparingLong(SubUserProjectCommission::getSubUserId));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
// 封装排序方法
|
// 封装排序方法
|
||||||
private void sortProjectDetailAndSubProjectCommissions(List<SubUserProjectCommission> subProjectCommissions) {
|
public void sortProjectDetailAndSubProjectCommissions(List<SubUserProjectCommission> subProjectCommissions) {
|
||||||
// 先根据userId升序排序
|
// 先根据userId升序排序
|
||||||
// 如果userId相同,再根据subUserId升序排序
|
// 如果userId相同,再根据subUserId升序排序
|
||||||
Collections.sort(subProjectCommissions, Comparator.comparingLong(SubUserProjectCommission::getProjectDetailId).thenComparingLong(SubUserProjectCommission::getUserId).thenComparingLong(SubUserProjectCommission::getSubUserId));
|
Collections.sort(subProjectCommissions, Comparator.comparingLong(SubUserProjectCommission::getProjectDetailId).thenComparingLong(SubUserProjectCommission::getUserId).thenComparingLong(SubUserProjectCommission::getSubUserId));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@Override
|
||||||
// 封装方法:根据价格和抽佣比例计算最终价格
|
// 封装方法:根据价格和抽佣比例计算最终价格
|
||||||
private BigDecimal calculateFinalPrice(BigDecimal price, BigDecimal commissionRate) {
|
public BigDecimal calculateFinalPrice(BigDecimal price, BigDecimal commissionRate) {
|
||||||
// 计算抽佣比例对应的系数
|
// 计算抽佣比例对应的系数
|
||||||
BigDecimal commissionFactor = BigDecimal.ONE.subtract(commissionRate.divide(BigDecimal.valueOf(100)));
|
BigDecimal commissionFactor = BigDecimal.ONE.subtract(commissionRate.divide(BigDecimal.valueOf(100)));
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user