项目明细调整
This commit is contained in:
parent
a79cd3d502
commit
2ad1060fab
|
@ -23,6 +23,7 @@ import com.greenorange.promotion.model.dto.projectNotification.ProjectNotificati
|
||||||
import com.greenorange.promotion.model.entity.Project;
|
import com.greenorange.promotion.model.entity.Project;
|
||||||
import com.greenorange.promotion.model.entity.ProjectDetail;
|
import com.greenorange.promotion.model.entity.ProjectDetail;
|
||||||
import com.greenorange.promotion.model.entity.ProjectNotification;
|
import com.greenorange.promotion.model.entity.ProjectNotification;
|
||||||
|
import com.greenorange.promotion.model.vo.project.ProjectPageVO;
|
||||||
import com.greenorange.promotion.model.vo.project.ProjectVO;
|
import com.greenorange.promotion.model.vo.project.ProjectVO;
|
||||||
import com.greenorange.promotion.service.common.CommonService;
|
import com.greenorange.promotion.service.common.CommonService;
|
||||||
import com.greenorange.promotion.service.project.ProjectDetailService;
|
import com.greenorange.promotion.service.project.ProjectDetailService;
|
||||||
|
@ -101,20 +102,20 @@ public class ProjectController {
|
||||||
return ResultUtils.success(true);
|
return ResultUtils.success(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
// /**
|
||||||
* web端管理员批量删除项目
|
// * web端管理员批量删除项目
|
||||||
* @param commonBatchRequest 项目批量删除请求体
|
// * @param commonBatchRequest 项目批量删除请求体
|
||||||
* @return 是否删除成功
|
// * @return 是否删除成功
|
||||||
*/
|
// */
|
||||||
@PostMapping("delBatch")
|
// @PostMapping("delBatch")
|
||||||
@Operation(summary = "web端管理员批量删除项目", description = "参数:项目批量删除请求体,权限:管理员,方法名:delBatchProject")
|
// @Operation(summary = "web端管理员批量删除项目", description = "参数:项目批量删除请求体,权限:管理员,方法名:delBatchProject")
|
||||||
@RequiresPermission(mustRole = UserConstant.ADMIN_ROLE)
|
// @RequiresPermission(mustRole = UserConstant.ADMIN_ROLE)
|
||||||
@SysLog(title = "项目管理", content = "web端管理员批量删除项目")
|
// @SysLog(title = "项目管理", content = "web端管理员批量删除项目")
|
||||||
public BaseResponse<Boolean> delBatchProject(@Valid @RequestBody CommonBatchRequest commonBatchRequest) {
|
// public BaseResponse<Boolean> delBatchProject(@Valid @RequestBody CommonBatchRequest commonBatchRequest) {
|
||||||
List<Long> ids = commonBatchRequest.getIds();
|
// List<Long> ids = commonBatchRequest.getIds();
|
||||||
projectService.removeByIds(ids);
|
// projectService.removeByIds(ids);
|
||||||
return ResultUtils.success(true);
|
// return ResultUtils.success(true);
|
||||||
}
|
// }
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* web端管理员根据id查询项目
|
* web端管理员根据id查询项目
|
||||||
|
@ -142,15 +143,15 @@ public class ProjectController {
|
||||||
@Operation(summary = "Web端管理员分页查询项目", description = "参数:项目查询请求体,权限:管理员,方法名:listProjectByPage")
|
@Operation(summary = "Web端管理员分页查询项目", description = "参数:项目查询请求体,权限:管理员,方法名:listProjectByPage")
|
||||||
@RequiresPermission(mustRole = UserConstant.ADMIN_ROLE)
|
@RequiresPermission(mustRole = UserConstant.ADMIN_ROLE)
|
||||||
@SysLog(title = "项目管理", content = "Web端管理员分页查询项目")
|
@SysLog(title = "项目管理", content = "Web端管理员分页查询项目")
|
||||||
public BaseResponse<Page<ProjectVO>> listProjectByPage(@Valid @RequestBody ProjectQueryRequest projectQueryRequest) {
|
public BaseResponse<Page<ProjectPageVO>> listProjectByPage(@Valid @RequestBody ProjectQueryRequest projectQueryRequest) {
|
||||||
long current = projectQueryRequest.getCurrent();
|
long current = projectQueryRequest.getCurrent();
|
||||||
long pageSize = projectQueryRequest.getPageSize();
|
long pageSize = projectQueryRequest.getPageSize();
|
||||||
QueryWrapper<Project> queryWrapper = projectService.getQueryWrapper(projectQueryRequest);
|
QueryWrapper<Project> queryWrapper = projectService.getQueryWrapper(projectQueryRequest);
|
||||||
Page<Project> page = projectService.page(new Page<>(current, pageSize), queryWrapper);
|
Page<Project> page = projectService.page(new Page<>(current, pageSize), queryWrapper);
|
||||||
List<Project> projectList = page.getRecords();
|
List<Project> projectList = page.getRecords();
|
||||||
List<ProjectVO> projectVOList = commonService.convertList(projectList, ProjectVO.class);
|
List<ProjectPageVO> projectPageVOS = commonService.convertList(projectList, ProjectPageVO.class);
|
||||||
Page<ProjectVO> voPage = new Page<>(current, pageSize);
|
Page<ProjectPageVO> voPage = new Page<>(current, pageSize);
|
||||||
voPage.setRecords(projectVOList);
|
voPage.setRecords(projectPageVOS);
|
||||||
voPage.setPages(page.getPages());
|
voPage.setPages(page.getPages());
|
||||||
voPage.setTotal(page.getTotal());
|
voPage.setTotal(page.getTotal());
|
||||||
return ResultUtils.success(voPage);
|
return ResultUtils.success(voPage);
|
||||||
|
|
|
@ -10,13 +10,19 @@ import com.greenorange.promotion.common.ResultUtils;
|
||||||
import com.greenorange.promotion.constant.UserConstant;
|
import com.greenorange.promotion.constant.UserConstant;
|
||||||
import com.greenorange.promotion.exception.ThrowUtils;
|
import com.greenorange.promotion.exception.ThrowUtils;
|
||||||
import com.greenorange.promotion.model.dto.CommonBatchRequest;
|
import com.greenorange.promotion.model.dto.CommonBatchRequest;
|
||||||
|
import com.greenorange.promotion.model.dto.projectCommission.ProjectCommissionAddRequest;
|
||||||
|
import com.greenorange.promotion.model.dto.projectCommission.ProjectCommissionUpdateRequest;
|
||||||
import com.greenorange.promotion.model.dto.projectDetail.ProjectDetailAddRequest;
|
import com.greenorange.promotion.model.dto.projectDetail.ProjectDetailAddRequest;
|
||||||
import com.greenorange.promotion.model.dto.projectDetail.ProjectDetailQueryRequest;
|
import com.greenorange.promotion.model.dto.projectDetail.ProjectDetailQueryRequest;
|
||||||
import com.greenorange.promotion.model.dto.projectDetail.ProjectDetailUpdateRequest;
|
import com.greenorange.promotion.model.dto.projectDetail.ProjectDetailUpdateRequest;
|
||||||
import com.greenorange.promotion.model.entity.ProjectDetail;
|
import com.greenorange.promotion.model.dto.subUserProjectCommission.SubUserProjectCommissionAddRequest;
|
||||||
|
import com.greenorange.promotion.model.entity.*;
|
||||||
import com.greenorange.promotion.model.vo.projectDetail.ProjectDetailVO;
|
import com.greenorange.promotion.model.vo.projectDetail.ProjectDetailVO;
|
||||||
import com.greenorange.promotion.service.common.CommonService;
|
import com.greenorange.promotion.service.common.CommonService;
|
||||||
|
import com.greenorange.promotion.service.project.ProjectCommissionService;
|
||||||
import com.greenorange.promotion.service.project.ProjectDetailService;
|
import com.greenorange.promotion.service.project.ProjectDetailService;
|
||||||
|
import com.greenorange.promotion.service.project.SubUserProjectCommissionService;
|
||||||
|
import com.greenorange.promotion.service.user.UserInfoService;
|
||||||
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;
|
||||||
|
@ -29,7 +35,9 @@ import jakarta.validation.Valid;
|
||||||
import org.springframework.web.bind.annotation.RequestMapping;
|
import org.springframework.web.bind.annotation.RequestMapping;
|
||||||
import org.springframework.web.bind.annotation.RestController;
|
import org.springframework.web.bind.annotation.RestController;
|
||||||
|
|
||||||
import java.util.List;
|
import java.math.BigDecimal;
|
||||||
|
import java.util.*;
|
||||||
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -47,6 +55,15 @@ public class ProjectDetailController {
|
||||||
@Resource
|
@Resource
|
||||||
private CommonService commonService;
|
private CommonService commonService;
|
||||||
|
|
||||||
|
@Resource
|
||||||
|
private ProjectCommissionService projectCommissionService;
|
||||||
|
|
||||||
|
@Resource
|
||||||
|
private SubUserProjectCommissionService subUserProjectCommissionService;
|
||||||
|
|
||||||
|
@Resource
|
||||||
|
private UserInfoService userInfoService;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* web端管理员添加项目明细
|
* web端管理员添加项目明细
|
||||||
* @param projectDetailAddRequest 项目明细添加请求体
|
* @param projectDetailAddRequest 项目明细添加请求体
|
||||||
|
@ -59,6 +76,47 @@ public class ProjectDetailController {
|
||||||
public BaseResponse<Boolean> addProjectDetail(@Valid @RequestBody ProjectDetailAddRequest projectDetailAddRequest) {
|
public BaseResponse<Boolean> addProjectDetail(@Valid @RequestBody ProjectDetailAddRequest projectDetailAddRequest) {
|
||||||
ProjectDetail projectDetail = commonService.copyProperties(projectDetailAddRequest, ProjectDetail.class);
|
ProjectDetail projectDetail = commonService.copyProperties(projectDetailAddRequest, ProjectDetail.class);
|
||||||
projectDetailService.save(projectDetail);
|
projectDetailService.save(projectDetail);
|
||||||
|
|
||||||
|
// 获取所有的小程序用户
|
||||||
|
LambdaQueryWrapper<UserInfo> lambdaQueryWrapper = new LambdaQueryWrapper<>();
|
||||||
|
lambdaQueryWrapper.eq(UserInfo::getUserRole, UserConstant.DEFAULT_ROLE);
|
||||||
|
List<UserInfo> userInfoList = userInfoService.list(lambdaQueryWrapper);
|
||||||
|
|
||||||
|
// 获取参数信息
|
||||||
|
List<ProjectCommissionAddRequest> projectCommissionAddRequestList = new ArrayList<>();
|
||||||
|
Long projectDetailId = projectDetail.getId();
|
||||||
|
BigDecimal projectSettlementPrice = projectDetail.getProjectSettlementPrice();
|
||||||
|
Long projectId = projectDetail.getProjectId();
|
||||||
|
|
||||||
|
// 给所有用户添加一条项目明细
|
||||||
|
for (UserInfo userInfo : userInfoList) {
|
||||||
|
ProjectCommissionAddRequest projectCommissionAddRequest = ProjectCommissionAddRequest.builder()
|
||||||
|
.projectDetailId(projectDetailId)
|
||||||
|
.myUnitPrice(projectSettlementPrice)
|
||||||
|
.projectId(projectId)
|
||||||
|
.userId(userInfo.getId())
|
||||||
|
.build();
|
||||||
|
projectCommissionAddRequestList.add(projectCommissionAddRequest);
|
||||||
|
}
|
||||||
|
List<ProjectCommission> projectCommissions = commonService.convertList(projectCommissionAddRequestList, ProjectCommission.class);
|
||||||
|
projectCommissionService.saveBatch(projectCommissions);
|
||||||
|
|
||||||
|
// 给所有用户添加一条下级项目明细抽佣表
|
||||||
|
userInfoList = userInfoList.stream().filter(userInfo -> userInfo.getParentUserId() != null).collect(Collectors.toList());
|
||||||
|
List<SubUserProjectCommissionAddRequest> subUserProjectCommissionAddRequestList = new ArrayList<>();
|
||||||
|
for (UserInfo userInfo : userInfoList) {
|
||||||
|
SubUserProjectCommissionAddRequest subUserProjectCommissionAddRequest = SubUserProjectCommissionAddRequest.builder()
|
||||||
|
.projectDetailId(projectDetailId)
|
||||||
|
.myUnitPrice(projectSettlementPrice)
|
||||||
|
.projectId(projectId)
|
||||||
|
.subUserId(userInfo.getId())
|
||||||
|
.userId(userInfo.getParentUserId())
|
||||||
|
.build();
|
||||||
|
subUserProjectCommissionAddRequestList.add(subUserProjectCommissionAddRequest);
|
||||||
|
}
|
||||||
|
List<SubUserProjectCommission> subUserProjectCommissions = commonService.convertList(subUserProjectCommissionAddRequestList, SubUserProjectCommission.class);
|
||||||
|
subUserProjectCommissionService.saveBatch(subUserProjectCommissions);
|
||||||
|
|
||||||
return ResultUtils.success(true);
|
return ResultUtils.success(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -73,7 +131,58 @@ public class ProjectDetailController {
|
||||||
@SysLog(title = "项目明细管理", content = "web端管理员根据id修改项目明细信息")
|
@SysLog(title = "项目明细管理", content = "web端管理员根据id修改项目明细信息")
|
||||||
public BaseResponse<Boolean> updateProjectDetail(@Valid @RequestBody ProjectDetailUpdateRequest projectDetailUpdateRequest) {
|
public BaseResponse<Boolean> updateProjectDetail(@Valid @RequestBody ProjectDetailUpdateRequest projectDetailUpdateRequest) {
|
||||||
ProjectDetail projectDetail = commonService.copyProperties(projectDetailUpdateRequest, ProjectDetail.class);
|
ProjectDetail projectDetail = commonService.copyProperties(projectDetailUpdateRequest, ProjectDetail.class);
|
||||||
|
// 1.更新项目明细的结算价格
|
||||||
projectDetailService.updateById(projectDetail);
|
projectDetailService.updateById(projectDetail);
|
||||||
|
// 2.更新抽佣比例(如果抽佣比例比原来小)
|
||||||
|
LambdaQueryWrapper<SubUserProjectCommission> lambdaQueryWrapper = new LambdaQueryWrapper<>();
|
||||||
|
lambdaQueryWrapper.eq(SubUserProjectCommission::getProjectDetailId, projectDetail.getId());
|
||||||
|
List<SubUserProjectCommission> subUserProjectCommissionList = subUserProjectCommissionService.list(lambdaQueryWrapper);
|
||||||
|
for (SubUserProjectCommission subUserProjectCommission : subUserProjectCommissionList) {
|
||||||
|
BigDecimal currentCommissionRate = subUserProjectCommission.getCurrentCommissionRate();
|
||||||
|
BigDecimal maxCommissionRate = projectDetail.getMaxCommissionRate();
|
||||||
|
if (currentCommissionRate.compareTo(maxCommissionRate) > 0) subUserProjectCommission.setCurrentCommissionRate(maxCommissionRate);
|
||||||
|
}
|
||||||
|
// 3.用Map集合存储上级用户对下级用户的抽佣比例
|
||||||
|
Map<String, BigDecimal> commissionRateMap = new HashMap<>();
|
||||||
|
for (SubUserProjectCommission subUserProjectCommission : subUserProjectCommissionList) {
|
||||||
|
Long userId = subUserProjectCommission.getUserId();
|
||||||
|
Long subUserId = subUserProjectCommission.getSubUserId();
|
||||||
|
BigDecimal currentCommissionRate = subUserProjectCommission.getCurrentCommissionRate();
|
||||||
|
String key = userId + "-" + subUserId;
|
||||||
|
commissionRateMap.put(key, currentCommissionRate);
|
||||||
|
}
|
||||||
|
// 获取所有的小程序用户
|
||||||
|
LambdaQueryWrapper<UserInfo> userInfoLambdaQueryWrapper = new LambdaQueryWrapper<>();
|
||||||
|
userInfoLambdaQueryWrapper.eq(UserInfo::getUserRole, UserConstant.DEFAULT_ROLE);
|
||||||
|
List<UserInfo> userInfoList = userInfoService.list(userInfoLambdaQueryWrapper);
|
||||||
|
// 用来存储每个用户的上级列表
|
||||||
|
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()));
|
||||||
|
}
|
||||||
|
// 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);
|
||||||
|
}
|
||||||
|
subUserProjectCommissionService.updateBatchById(subUserProjectCommissionList);
|
||||||
|
|
||||||
|
|
||||||
|
// 修改对应的项目明细抽佣记录
|
||||||
|
|
||||||
return ResultUtils.success(true);
|
return ResultUtils.success(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -89,6 +198,15 @@ public class ProjectDetailController {
|
||||||
public BaseResponse<Boolean> delProjectDetail(@Valid @RequestBody CommonRequest commonRequest) {
|
public BaseResponse<Boolean> delProjectDetail(@Valid @RequestBody CommonRequest commonRequest) {
|
||||||
Long id = commonRequest.getId();
|
Long id = commonRequest.getId();
|
||||||
projectDetailService.removeById(id);
|
projectDetailService.removeById(id);
|
||||||
|
// 删除对应的项目明细抽佣记录
|
||||||
|
LambdaQueryWrapper<ProjectCommission> lambdaQueryWrapper = new LambdaQueryWrapper<>();
|
||||||
|
lambdaQueryWrapper.eq(ProjectCommission::getProjectDetailId, id);
|
||||||
|
projectCommissionService.remove(lambdaQueryWrapper);
|
||||||
|
|
||||||
|
// 删除对应的下级用户的项目明细抽佣记录
|
||||||
|
LambdaQueryWrapper<SubUserProjectCommission> subUserLambdaQueryWrapper = new LambdaQueryWrapper<>();
|
||||||
|
subUserLambdaQueryWrapper.eq(SubUserProjectCommission::getProjectDetailId, id);
|
||||||
|
subUserProjectCommissionService.remove(subUserLambdaQueryWrapper);
|
||||||
return ResultUtils.success(true);
|
return ResultUtils.success(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -89,6 +89,9 @@ public class PromoCodeController {
|
||||||
@SysLog(title = "推广码管理", content = "web端管理员根据id删除推广码")
|
@SysLog(title = "推广码管理", content = "web端管理员根据id删除推广码")
|
||||||
public BaseResponse<Boolean> delPromoCode(@Valid @RequestBody CommonRequest commonRequest) {
|
public BaseResponse<Boolean> delPromoCode(@Valid @RequestBody CommonRequest commonRequest) {
|
||||||
Long id = commonRequest.getId();
|
Long id = commonRequest.getId();
|
||||||
|
PromoCode promoCode = promoCodeService.getById(id);
|
||||||
|
Boolean promoCodeStatus = promoCode.getPromoCodeStatus();
|
||||||
|
ThrowUtils.throwIf(promoCodeStatus, ErrorCode.OPERATION_ERROR, "当前推广码正在使用中,无法删除");
|
||||||
promoCodeService.removeById(id);
|
promoCodeService.removeById(id);
|
||||||
return ResultUtils.success(true);
|
return ResultUtils.success(true);
|
||||||
}
|
}
|
||||||
|
@ -104,6 +107,10 @@ public class PromoCodeController {
|
||||||
@SysLog(title = "推广码管理", content = "web端管理员批量删除推广码")
|
@SysLog(title = "推广码管理", content = "web端管理员批量删除推广码")
|
||||||
public BaseResponse<Boolean> delBatchPromoCode(@Valid @RequestBody CommonBatchRequest commonBatchRequest) {
|
public BaseResponse<Boolean> delBatchPromoCode(@Valid @RequestBody CommonBatchRequest commonBatchRequest) {
|
||||||
List<Long> ids = commonBatchRequest.getIds();
|
List<Long> ids = commonBatchRequest.getIds();
|
||||||
|
LambdaQueryWrapper<PromoCode> lambdaQueryWrapper = new LambdaQueryWrapper<>();
|
||||||
|
lambdaQueryWrapper.in(PromoCode::getId, ids).eq(PromoCode::getPromoCodeStatus, true);
|
||||||
|
List<PromoCode> promoCodeList = promoCodeService.list(lambdaQueryWrapper);
|
||||||
|
ThrowUtils.throwIf(promoCodeList.size() > 0, ErrorCode.OPERATION_ERROR, "当前推广码正在使用中,无法删除");
|
||||||
promoCodeService.removeByIds(ids);
|
promoCodeService.removeByIds(ids);
|
||||||
return ResultUtils.success(true);
|
return ResultUtils.success(true);
|
||||||
}
|
}
|
||||||
|
|
|
@ -3,7 +3,10 @@ package com.greenorange.promotion.model.dto.projectCommission;
|
||||||
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 jakarta.validation.constraints.Min;
|
import jakarta.validation.constraints.Min;
|
||||||
|
import lombok.AllArgsConstructor;
|
||||||
|
import lombok.Builder;
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
|
import lombok.NoArgsConstructor;
|
||||||
|
|
||||||
import java.io.Serial;
|
import java.io.Serial;
|
||||||
import java.io.Serializable;
|
import java.io.Serializable;
|
||||||
|
@ -20,6 +23,9 @@ import java.math.BigDecimal;
|
||||||
"projectId",
|
"projectId",
|
||||||
"userId",
|
"userId",
|
||||||
})
|
})
|
||||||
|
@NoArgsConstructor
|
||||||
|
@AllArgsConstructor
|
||||||
|
@Builder
|
||||||
public class ProjectCommissionAddRequest implements Serializable {
|
public class ProjectCommissionAddRequest implements Serializable {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -45,7 +45,7 @@ public class ProjectDetailAddRequest implements Serializable {
|
||||||
* 最大抽佣比例
|
* 最大抽佣比例
|
||||||
*/
|
*/
|
||||||
@Schema(description = "最大抽佣比例", example = "2")
|
@Schema(description = "最大抽佣比例", example = "2")
|
||||||
private Integer maxCommissionRate;
|
private BigDecimal maxCommissionRate;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 项目ID
|
* 项目ID
|
||||||
|
|
|
@ -48,7 +48,7 @@ public class ProjectDetailQueryRequest extends PageRequest implements Serializab
|
||||||
* 最大抽佣比例
|
* 最大抽佣比例
|
||||||
*/
|
*/
|
||||||
@Schema(description = "最大抽佣比例", example = "2")
|
@Schema(description = "最大抽佣比例", example = "2")
|
||||||
private Integer maxCommissionRate;
|
private BigDecimal maxCommissionRate;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 项目ID
|
* 项目ID
|
||||||
|
|
|
@ -53,7 +53,7 @@ public class ProjectDetailUpdateRequest implements Serializable {
|
||||||
* 最大抽佣比例
|
* 最大抽佣比例
|
||||||
*/
|
*/
|
||||||
@Schema(description = "最大抽佣比例", example = "2")
|
@Schema(description = "最大抽佣比例", example = "2")
|
||||||
private Integer maxCommissionRate;
|
private BigDecimal maxCommissionRate;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 项目ID
|
* 项目ID
|
||||||
|
|
|
@ -3,7 +3,10 @@ package com.greenorange.promotion.model.dto.subUserProjectCommission;
|
||||||
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 jakarta.validation.constraints.Min;
|
import jakarta.validation.constraints.Min;
|
||||||
|
import lombok.AllArgsConstructor;
|
||||||
|
import lombok.Builder;
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
|
import lombok.NoArgsConstructor;
|
||||||
|
|
||||||
import java.io.Serial;
|
import java.io.Serial;
|
||||||
import java.io.Serializable;
|
import java.io.Serializable;
|
||||||
|
@ -21,6 +24,9 @@ import java.math.BigDecimal;
|
||||||
"projectId",
|
"projectId",
|
||||||
"userId",
|
"userId",
|
||||||
})
|
})
|
||||||
|
@NoArgsConstructor
|
||||||
|
@AllArgsConstructor
|
||||||
|
@Builder
|
||||||
public class SubUserProjectCommissionAddRequest implements Serializable {
|
public class SubUserProjectCommissionAddRequest implements Serializable {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -40,7 +40,7 @@ public class ProjectDetail implements Serializable {
|
||||||
/**
|
/**
|
||||||
* 最大抽佣比例
|
* 最大抽佣比例
|
||||||
*/
|
*/
|
||||||
private Integer maxCommissionRate;
|
private BigDecimal maxCommissionRate;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 项目ID
|
* 项目ID
|
||||||
|
|
|
@ -37,7 +37,7 @@ public class PromoCode implements Serializable {
|
||||||
private Long projectId;
|
private Long projectId;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 推广码状态
|
* 推广码状态(true:占用,false:空闲)
|
||||||
*/
|
*/
|
||||||
private Boolean promoCodeStatus;
|
private Boolean promoCodeStatus;
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,71 @@
|
||||||
|
package com.greenorange.promotion.model.vo.project;
|
||||||
|
|
||||||
|
import io.swagger.v3.oas.annotations.media.Schema;
|
||||||
|
import lombok.Data;
|
||||||
|
|
||||||
|
import java.io.Serial;
|
||||||
|
import java.io.Serializable;
|
||||||
|
import java.math.BigDecimal;
|
||||||
|
|
||||||
|
@Data
|
||||||
|
public class ProjectPageVO implements Serializable {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 项目 ID
|
||||||
|
*/
|
||||||
|
@Schema(description = "项目 ID", example = "1")
|
||||||
|
private Long id;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 项目名称
|
||||||
|
*/
|
||||||
|
@Schema(description = "项目名称", example = "美团省钱包")
|
||||||
|
private String projectName;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 项目价格
|
||||||
|
*/
|
||||||
|
@Schema(description = "项目价格", example = "6.88")
|
||||||
|
private BigDecimal projectPrice;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 当前推广人数
|
||||||
|
*/
|
||||||
|
@Schema(description = "当前推广人数", example = "10")
|
||||||
|
private Integer currentPromotionCount;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 项目图片URL
|
||||||
|
*/
|
||||||
|
@Schema(description = "项目图片URL", example = "http://xxx.png")
|
||||||
|
private String projectImage;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 项目结算周期
|
||||||
|
*/
|
||||||
|
@Schema(description = "项目结算周期", example = "2")
|
||||||
|
private Integer projectSettlementCycle;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 最大推广人数
|
||||||
|
*/
|
||||||
|
@Schema(description = "最大推广人数", example = "200")
|
||||||
|
private Integer maxPromoterCount;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 项目状态[项目运行(running)|人数已满(full)|项目暂停(paused)]
|
||||||
|
*/
|
||||||
|
@Schema(description = "项目状态[项目运行(running)|人数已满(full)|项目暂停(paused)]", example = "running")
|
||||||
|
private String projectStatus;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 是否上架
|
||||||
|
*/
|
||||||
|
@Schema(description = "是否上架", example = "true")
|
||||||
|
private Boolean isShelves;
|
||||||
|
|
||||||
|
|
||||||
|
@Serial
|
||||||
|
private static final long serialVersionUID = 1L;
|
||||||
|
|
||||||
|
}
|
|
@ -27,18 +27,30 @@ public class ProjectVO implements Serializable {
|
||||||
@Schema(description = "项目名称", example = "美团省钱包")
|
@Schema(description = "项目名称", example = "美团省钱包")
|
||||||
private String projectName;
|
private String projectName;
|
||||||
|
|
||||||
/**
|
|
||||||
* 项目价格
|
|
||||||
*/
|
|
||||||
@Schema(description = "项目价格", example = "0.72")
|
|
||||||
private BigDecimal projectPrice;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 项目图片URL
|
* 项目图片URL
|
||||||
*/
|
*/
|
||||||
@Schema(description = "项目图片URL", example = "http://xxx.png")
|
@Schema(description = "项目图片URL", example = "http://xxx.png")
|
||||||
private String projectImage;
|
private String projectImage;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 项目结算周期
|
||||||
|
*/
|
||||||
|
@Schema(description = "项目结算周期", example = "2")
|
||||||
|
private Integer projectSettlementCycle;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 最大推广人数
|
||||||
|
*/
|
||||||
|
@Schema(description = "最大推广人数", example = "200")
|
||||||
|
private Integer maxPromoterCount;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 项目状态[项目运行(running)|人数已满(full)|项目暂停(paused)]
|
||||||
|
*/
|
||||||
|
@Schema(description = "项目状态[项目运行(running)|人数已满(full)|项目暂停(paused)]", example = "running")
|
||||||
|
private String projectStatus;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 项目简介
|
* 项目简介
|
||||||
*/
|
*/
|
||||||
|
@ -69,36 +81,6 @@ public class ProjectVO implements Serializable {
|
||||||
@Schema(description = "申请推广码说明(富文本)", example = "富文本")
|
@Schema(description = "申请推广码说明(富文本)", example = "富文本")
|
||||||
private String applyPromoCodeDesc;
|
private String applyPromoCodeDesc;
|
||||||
|
|
||||||
/**
|
|
||||||
* 项目结算周期
|
|
||||||
*/
|
|
||||||
@Schema(description = "项目结算周期", example = "2")
|
|
||||||
private Integer projectSettlementCycle;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 当前推广人数
|
|
||||||
*/
|
|
||||||
@Schema(description = "当前推广人数", example = "150")
|
|
||||||
private Integer currentPromotionCount;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 最大推广人数
|
|
||||||
*/
|
|
||||||
@Schema(description = "最大推广人数", example = "200")
|
|
||||||
private Integer maxPromoterCount;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 项目状态[项目运行(running)|人数已满(full)|项目暂停(paused)]
|
|
||||||
*/
|
|
||||||
@Schema(description = "项目状态[项目运行(running)|人数已满(full)|项目暂停(paused)]", example = "running")
|
|
||||||
private String projectStatus;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 是否上架
|
|
||||||
*/
|
|
||||||
@Schema(description = "是否上架", example = "1")
|
|
||||||
private Boolean isShelves;
|
|
||||||
|
|
||||||
|
|
||||||
@Serial
|
@Serial
|
||||||
private static final long serialVersionUID = 1L;
|
private static final long serialVersionUID = 1L;
|
||||||
|
|
|
@ -44,7 +44,7 @@ public class ProjectDetailVO implements Serializable {
|
||||||
* 最大抽佣比例
|
* 最大抽佣比例
|
||||||
*/
|
*/
|
||||||
@Schema(description = "最大抽佣比例", example = "2")
|
@Schema(description = "最大抽佣比例", example = "2")
|
||||||
private Integer maxCommissionRate;
|
private BigDecimal maxCommissionRate;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 项目ID
|
* 项目ID
|
||||||
|
|
17
src/test/java/com/greenorange/promotion/bigdecimal/BT.java
Normal file
17
src/test/java/com/greenorange/promotion/bigdecimal/BT.java
Normal file
|
@ -0,0 +1,17 @@
|
||||||
|
package com.greenorange.promotion.bigdecimal;
|
||||||
|
|
||||||
|
import org.junit.jupiter.api.Test;
|
||||||
|
|
||||||
|
import java.math.BigDecimal;
|
||||||
|
|
||||||
|
public class BT {
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void test() {
|
||||||
|
BigDecimal b1 = new BigDecimal("0.72");
|
||||||
|
BigDecimal b2 = new BigDecimal("0.66");
|
||||||
|
BigDecimal b3 = new BigDecimal("0.44");
|
||||||
|
System.out.println(b1.multiply(b2).multiply(b3).multiply(b1).multiply(b1).multiply(b2));
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user