From 2ad1060fab0ed44c0e9a7a3642038b3ec14d586c Mon Sep 17 00:00:00 2001 From: chen-xin-zhi <3588068430@qq.com> Date: Sat, 10 May 2025 15:28:41 +0800 Subject: [PATCH] =?UTF-8?q?=E9=A1=B9=E7=9B=AE=E6=98=8E=E7=BB=86=E8=B0=83?= =?UTF-8?q?=E6=95=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/project/ProjectController.java | 37 +++--- .../ProjectDetailController.java | 122 +++++++++++++++++- .../promoCode/PromoCodeController.java | 7 + .../ProjectCommissionAddRequest.java | 6 + .../ProjectDetailAddRequest.java | 2 +- .../ProjectDetailQueryRequest.java | 2 +- .../ProjectDetailUpdateRequest.java | 2 +- .../SubUserProjectCommissionAddRequest.java | 6 + .../promotion/model/entity/ProjectDetail.java | 2 +- .../promotion/model/entity/PromoCode.java | 2 +- .../model/vo/project/ProjectPageVO.java | 71 ++++++++++ .../promotion/model/vo/project/ProjectVO.java | 54 +++----- .../vo/projectDetail/ProjectDetailVO.java | 2 +- .../greenorange/promotion/bigdecimal/BT.java | 17 +++ 14 files changed, 270 insertions(+), 62 deletions(-) create mode 100644 src/main/java/com/greenorange/promotion/model/vo/project/ProjectPageVO.java create mode 100644 src/test/java/com/greenorange/promotion/bigdecimal/BT.java diff --git a/src/main/java/com/greenorange/promotion/controller/project/ProjectController.java b/src/main/java/com/greenorange/promotion/controller/project/ProjectController.java index 659d54f..dc31c38 100644 --- a/src/main/java/com/greenorange/promotion/controller/project/ProjectController.java +++ b/src/main/java/com/greenorange/promotion/controller/project/ProjectController.java @@ -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.ProjectDetail; 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.service.common.CommonService; import com.greenorange.promotion.service.project.ProjectDetailService; @@ -101,20 +102,20 @@ public class ProjectController { return ResultUtils.success(true); } - /** - * web端管理员批量删除项目 - * @param commonBatchRequest 项目批量删除请求体 - * @return 是否删除成功 - */ - @PostMapping("delBatch") - @Operation(summary = "web端管理员批量删除项目", description = "参数:项目批量删除请求体,权限:管理员,方法名:delBatchProject") - @RequiresPermission(mustRole = UserConstant.ADMIN_ROLE) - @SysLog(title = "项目管理", content = "web端管理员批量删除项目") - public BaseResponse delBatchProject(@Valid @RequestBody CommonBatchRequest commonBatchRequest) { - List ids = commonBatchRequest.getIds(); - projectService.removeByIds(ids); - return ResultUtils.success(true); - } +// /** +// * web端管理员批量删除项目 +// * @param commonBatchRequest 项目批量删除请求体 +// * @return 是否删除成功 +// */ +// @PostMapping("delBatch") +// @Operation(summary = "web端管理员批量删除项目", description = "参数:项目批量删除请求体,权限:管理员,方法名:delBatchProject") +// @RequiresPermission(mustRole = UserConstant.ADMIN_ROLE) +// @SysLog(title = "项目管理", content = "web端管理员批量删除项目") +// public BaseResponse delBatchProject(@Valid @RequestBody CommonBatchRequest commonBatchRequest) { +// List ids = commonBatchRequest.getIds(); +// projectService.removeByIds(ids); +// return ResultUtils.success(true); +// } /** * web端管理员根据id查询项目 @@ -142,15 +143,15 @@ public class ProjectController { @Operation(summary = "Web端管理员分页查询项目", description = "参数:项目查询请求体,权限:管理员,方法名:listProjectByPage") @RequiresPermission(mustRole = UserConstant.ADMIN_ROLE) @SysLog(title = "项目管理", content = "Web端管理员分页查询项目") - public BaseResponse> listProjectByPage(@Valid @RequestBody ProjectQueryRequest projectQueryRequest) { + public BaseResponse> listProjectByPage(@Valid @RequestBody ProjectQueryRequest projectQueryRequest) { long current = projectQueryRequest.getCurrent(); long pageSize = projectQueryRequest.getPageSize(); QueryWrapper queryWrapper = projectService.getQueryWrapper(projectQueryRequest); Page page = projectService.page(new Page<>(current, pageSize), queryWrapper); List projectList = page.getRecords(); - List projectVOList = commonService.convertList(projectList, ProjectVO.class); - Page voPage = new Page<>(current, pageSize); - voPage.setRecords(projectVOList); + List projectPageVOS = commonService.convertList(projectList, ProjectPageVO.class); + Page voPage = new Page<>(current, pageSize); + voPage.setRecords(projectPageVOS); voPage.setPages(page.getPages()); voPage.setTotal(page.getTotal()); return ResultUtils.success(voPage); diff --git a/src/main/java/com/greenorange/promotion/controller/projectDetail/ProjectDetailController.java b/src/main/java/com/greenorange/promotion/controller/projectDetail/ProjectDetailController.java index b89dfb1..4ef7535 100644 --- a/src/main/java/com/greenorange/promotion/controller/projectDetail/ProjectDetailController.java +++ b/src/main/java/com/greenorange/promotion/controller/projectDetail/ProjectDetailController.java @@ -10,13 +10,19 @@ import com.greenorange.promotion.common.ResultUtils; import com.greenorange.promotion.constant.UserConstant; import com.greenorange.promotion.exception.ThrowUtils; 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.ProjectDetailQueryRequest; 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.service.common.CommonService; +import com.greenorange.promotion.service.project.ProjectCommissionService; 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.tags.Tag; 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.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 private CommonService commonService; + @Resource + private ProjectCommissionService projectCommissionService; + + @Resource + private SubUserProjectCommissionService subUserProjectCommissionService; + + @Resource + private UserInfoService userInfoService; + /** * web端管理员添加项目明细 * @param projectDetailAddRequest 项目明细添加请求体 @@ -59,6 +76,47 @@ public class ProjectDetailController { public BaseResponse addProjectDetail(@Valid @RequestBody ProjectDetailAddRequest projectDetailAddRequest) { ProjectDetail projectDetail = commonService.copyProperties(projectDetailAddRequest, ProjectDetail.class); projectDetailService.save(projectDetail); + + // 获取所有的小程序用户 + LambdaQueryWrapper lambdaQueryWrapper = new LambdaQueryWrapper<>(); + lambdaQueryWrapper.eq(UserInfo::getUserRole, UserConstant.DEFAULT_ROLE); + List userInfoList = userInfoService.list(lambdaQueryWrapper); + + // 获取参数信息 + List 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 projectCommissions = commonService.convertList(projectCommissionAddRequestList, ProjectCommission.class); + projectCommissionService.saveBatch(projectCommissions); + + // 给所有用户添加一条下级项目明细抽佣表 + userInfoList = userInfoList.stream().filter(userInfo -> userInfo.getParentUserId() != null).collect(Collectors.toList()); + List 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 subUserProjectCommissions = commonService.convertList(subUserProjectCommissionAddRequestList, SubUserProjectCommission.class); + subUserProjectCommissionService.saveBatch(subUserProjectCommissions); + return ResultUtils.success(true); } @@ -73,7 +131,58 @@ public class ProjectDetailController { @SysLog(title = "项目明细管理", content = "web端管理员根据id修改项目明细信息") public BaseResponse updateProjectDetail(@Valid @RequestBody ProjectDetailUpdateRequest projectDetailUpdateRequest) { ProjectDetail projectDetail = commonService.copyProperties(projectDetailUpdateRequest, ProjectDetail.class); + // 1.更新项目明细的结算价格 projectDetailService.updateById(projectDetail); + // 2.更新抽佣比例(如果抽佣比例比原来小) + LambdaQueryWrapper lambdaQueryWrapper = new LambdaQueryWrapper<>(); + lambdaQueryWrapper.eq(SubUserProjectCommission::getProjectDetailId, projectDetail.getId()); + List 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 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 userInfoLambdaQueryWrapper = new LambdaQueryWrapper<>(); + userInfoLambdaQueryWrapper.eq(UserInfo::getUserRole, UserConstant.DEFAULT_ROLE); + List userInfoList = userInfoService.list(userInfoLambdaQueryWrapper); + // 用来存储每个用户的上级列表 + Map> 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 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); } @@ -89,6 +198,15 @@ public class ProjectDetailController { public BaseResponse delProjectDetail(@Valid @RequestBody CommonRequest commonRequest) { Long id = commonRequest.getId(); projectDetailService.removeById(id); + // 删除对应的项目明细抽佣记录 + LambdaQueryWrapper lambdaQueryWrapper = new LambdaQueryWrapper<>(); + lambdaQueryWrapper.eq(ProjectCommission::getProjectDetailId, id); + projectCommissionService.remove(lambdaQueryWrapper); + + // 删除对应的下级用户的项目明细抽佣记录 + LambdaQueryWrapper subUserLambdaQueryWrapper = new LambdaQueryWrapper<>(); + subUserLambdaQueryWrapper.eq(SubUserProjectCommission::getProjectDetailId, id); + subUserProjectCommissionService.remove(subUserLambdaQueryWrapper); return ResultUtils.success(true); } diff --git a/src/main/java/com/greenorange/promotion/controller/promoCode/PromoCodeController.java b/src/main/java/com/greenorange/promotion/controller/promoCode/PromoCodeController.java index b2350f9..bf11682 100644 --- a/src/main/java/com/greenorange/promotion/controller/promoCode/PromoCodeController.java +++ b/src/main/java/com/greenorange/promotion/controller/promoCode/PromoCodeController.java @@ -89,6 +89,9 @@ public class PromoCodeController { @SysLog(title = "推广码管理", content = "web端管理员根据id删除推广码") public BaseResponse delPromoCode(@Valid @RequestBody CommonRequest commonRequest) { Long id = commonRequest.getId(); + PromoCode promoCode = promoCodeService.getById(id); + Boolean promoCodeStatus = promoCode.getPromoCodeStatus(); + ThrowUtils.throwIf(promoCodeStatus, ErrorCode.OPERATION_ERROR, "当前推广码正在使用中,无法删除"); promoCodeService.removeById(id); return ResultUtils.success(true); } @@ -104,6 +107,10 @@ public class PromoCodeController { @SysLog(title = "推广码管理", content = "web端管理员批量删除推广码") public BaseResponse delBatchPromoCode(@Valid @RequestBody CommonBatchRequest commonBatchRequest) { List ids = commonBatchRequest.getIds(); + LambdaQueryWrapper lambdaQueryWrapper = new LambdaQueryWrapper<>(); + lambdaQueryWrapper.in(PromoCode::getId, ids).eq(PromoCode::getPromoCodeStatus, true); + List promoCodeList = promoCodeService.list(lambdaQueryWrapper); + ThrowUtils.throwIf(promoCodeList.size() > 0, ErrorCode.OPERATION_ERROR, "当前推广码正在使用中,无法删除"); promoCodeService.removeByIds(ids); return ResultUtils.success(true); } diff --git a/src/main/java/com/greenorange/promotion/model/dto/projectCommission/ProjectCommissionAddRequest.java b/src/main/java/com/greenorange/promotion/model/dto/projectCommission/ProjectCommissionAddRequest.java index 87913be..0f2c474 100644 --- a/src/main/java/com/greenorange/promotion/model/dto/projectCommission/ProjectCommissionAddRequest.java +++ b/src/main/java/com/greenorange/promotion/model/dto/projectCommission/ProjectCommissionAddRequest.java @@ -3,7 +3,10 @@ package com.greenorange.promotion.model.dto.projectCommission; import io.swagger.v3.oas.annotations.media.Schema; import jakarta.validation.constraints.NotBlank; import jakarta.validation.constraints.Min; +import lombok.AllArgsConstructor; +import lombok.Builder; import lombok.Data; +import lombok.NoArgsConstructor; import java.io.Serial; import java.io.Serializable; @@ -20,6 +23,9 @@ import java.math.BigDecimal; "projectId", "userId", }) +@NoArgsConstructor +@AllArgsConstructor +@Builder public class ProjectCommissionAddRequest implements Serializable { /** diff --git a/src/main/java/com/greenorange/promotion/model/dto/projectDetail/ProjectDetailAddRequest.java b/src/main/java/com/greenorange/promotion/model/dto/projectDetail/ProjectDetailAddRequest.java index 34d558d..b53e9de 100644 --- a/src/main/java/com/greenorange/promotion/model/dto/projectDetail/ProjectDetailAddRequest.java +++ b/src/main/java/com/greenorange/promotion/model/dto/projectDetail/ProjectDetailAddRequest.java @@ -45,7 +45,7 @@ public class ProjectDetailAddRequest implements Serializable { * 最大抽佣比例 */ @Schema(description = "最大抽佣比例", example = "2") - private Integer maxCommissionRate; + private BigDecimal maxCommissionRate; /** * 项目ID diff --git a/src/main/java/com/greenorange/promotion/model/dto/projectDetail/ProjectDetailQueryRequest.java b/src/main/java/com/greenorange/promotion/model/dto/projectDetail/ProjectDetailQueryRequest.java index 992a282..f59b64b 100644 --- a/src/main/java/com/greenorange/promotion/model/dto/projectDetail/ProjectDetailQueryRequest.java +++ b/src/main/java/com/greenorange/promotion/model/dto/projectDetail/ProjectDetailQueryRequest.java @@ -48,7 +48,7 @@ public class ProjectDetailQueryRequest extends PageRequest implements Serializab * 最大抽佣比例 */ @Schema(description = "最大抽佣比例", example = "2") - private Integer maxCommissionRate; + private BigDecimal maxCommissionRate; /** * 项目ID diff --git a/src/main/java/com/greenorange/promotion/model/dto/projectDetail/ProjectDetailUpdateRequest.java b/src/main/java/com/greenorange/promotion/model/dto/projectDetail/ProjectDetailUpdateRequest.java index 544ab10..8512927 100644 --- a/src/main/java/com/greenorange/promotion/model/dto/projectDetail/ProjectDetailUpdateRequest.java +++ b/src/main/java/com/greenorange/promotion/model/dto/projectDetail/ProjectDetailUpdateRequest.java @@ -53,7 +53,7 @@ public class ProjectDetailUpdateRequest implements Serializable { * 最大抽佣比例 */ @Schema(description = "最大抽佣比例", example = "2") - private Integer maxCommissionRate; + private BigDecimal maxCommissionRate; /** * 项目ID diff --git a/src/main/java/com/greenorange/promotion/model/dto/subUserProjectCommission/SubUserProjectCommissionAddRequest.java b/src/main/java/com/greenorange/promotion/model/dto/subUserProjectCommission/SubUserProjectCommissionAddRequest.java index dab1f31..59aa162 100644 --- a/src/main/java/com/greenorange/promotion/model/dto/subUserProjectCommission/SubUserProjectCommissionAddRequest.java +++ b/src/main/java/com/greenorange/promotion/model/dto/subUserProjectCommission/SubUserProjectCommissionAddRequest.java @@ -3,7 +3,10 @@ package com.greenorange.promotion.model.dto.subUserProjectCommission; import io.swagger.v3.oas.annotations.media.Schema; import jakarta.validation.constraints.NotBlank; import jakarta.validation.constraints.Min; +import lombok.AllArgsConstructor; +import lombok.Builder; import lombok.Data; +import lombok.NoArgsConstructor; import java.io.Serial; import java.io.Serializable; @@ -21,6 +24,9 @@ import java.math.BigDecimal; "projectId", "userId", }) +@NoArgsConstructor +@AllArgsConstructor +@Builder public class SubUserProjectCommissionAddRequest implements Serializable { /** diff --git a/src/main/java/com/greenorange/promotion/model/entity/ProjectDetail.java b/src/main/java/com/greenorange/promotion/model/entity/ProjectDetail.java index 22107e3..1bf81f3 100644 --- a/src/main/java/com/greenorange/promotion/model/entity/ProjectDetail.java +++ b/src/main/java/com/greenorange/promotion/model/entity/ProjectDetail.java @@ -40,7 +40,7 @@ public class ProjectDetail implements Serializable { /** * 最大抽佣比例 */ - private Integer maxCommissionRate; + private BigDecimal maxCommissionRate; /** * 项目ID diff --git a/src/main/java/com/greenorange/promotion/model/entity/PromoCode.java b/src/main/java/com/greenorange/promotion/model/entity/PromoCode.java index b40d034..c145a70 100644 --- a/src/main/java/com/greenorange/promotion/model/entity/PromoCode.java +++ b/src/main/java/com/greenorange/promotion/model/entity/PromoCode.java @@ -37,7 +37,7 @@ public class PromoCode implements Serializable { private Long projectId; /** - * 推广码状态 + * 推广码状态(true:占用,false:空闲) */ private Boolean promoCodeStatus; diff --git a/src/main/java/com/greenorange/promotion/model/vo/project/ProjectPageVO.java b/src/main/java/com/greenorange/promotion/model/vo/project/ProjectPageVO.java new file mode 100644 index 0000000..2e9815b --- /dev/null +++ b/src/main/java/com/greenorange/promotion/model/vo/project/ProjectPageVO.java @@ -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; + +} diff --git a/src/main/java/com/greenorange/promotion/model/vo/project/ProjectVO.java b/src/main/java/com/greenorange/promotion/model/vo/project/ProjectVO.java index e3456ca..5040a20 100644 --- a/src/main/java/com/greenorange/promotion/model/vo/project/ProjectVO.java +++ b/src/main/java/com/greenorange/promotion/model/vo/project/ProjectVO.java @@ -27,18 +27,30 @@ public class ProjectVO implements Serializable { @Schema(description = "项目名称", example = "美团省钱包") private String projectName; - /** - * 项目价格 - */ - @Schema(description = "项目价格", example = "0.72") - private BigDecimal projectPrice; - /** * 项目图片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; + /** * 项目简介 */ @@ -69,36 +81,6 @@ public class ProjectVO implements Serializable { @Schema(description = "申请推广码说明(富文本)", example = "富文本") 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 private static final long serialVersionUID = 1L; diff --git a/src/main/java/com/greenorange/promotion/model/vo/projectDetail/ProjectDetailVO.java b/src/main/java/com/greenorange/promotion/model/vo/projectDetail/ProjectDetailVO.java index 9867928..271b56d 100644 --- a/src/main/java/com/greenorange/promotion/model/vo/projectDetail/ProjectDetailVO.java +++ b/src/main/java/com/greenorange/promotion/model/vo/projectDetail/ProjectDetailVO.java @@ -44,7 +44,7 @@ public class ProjectDetailVO implements Serializable { * 最大抽佣比例 */ @Schema(description = "最大抽佣比例", example = "2") - private Integer maxCommissionRate; + private BigDecimal maxCommissionRate; /** * 项目ID diff --git a/src/test/java/com/greenorange/promotion/bigdecimal/BT.java b/src/test/java/com/greenorange/promotion/bigdecimal/BT.java new file mode 100644 index 0000000..32233b0 --- /dev/null +++ b/src/test/java/com/greenorange/promotion/bigdecimal/BT.java @@ -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)); + } + +}