已完成小程序端的项目查询

This commit is contained in:
chen-xin-zhi 2025-05-11 14:01:07 +08:00
parent 138dfb39ff
commit b906f2b88c
7 changed files with 239 additions and 106 deletions

View File

@ -1,34 +1,38 @@
package com.greenorange.promotion.controller.project; package com.greenorange.promotion.controller.project;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.greenorange.promotion.annotation.RequiresPermission; import com.greenorange.promotion.annotation.RequiresPermission;
import com.greenorange.promotion.annotation.SysLog; import com.greenorange.promotion.annotation.SysLog;
import com.greenorange.promotion.common.BaseResponse; import com.greenorange.promotion.common.BaseResponse;
import com.greenorange.promotion.common.ErrorCode;
import com.greenorange.promotion.common.ResultUtils; 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.model.dto.CommonRequest;
import com.greenorange.promotion.model.dto.CommonBatchRequest;
import com.greenorange.promotion.model.dto.projectCommission.ProjectCommissionAddRequest; import com.greenorange.promotion.model.dto.projectCommission.ProjectCommissionAddRequest;
import com.greenorange.promotion.model.dto.projectCommission.ProjectCommissionQueryRequest; import com.greenorange.promotion.model.entity.Project;
import com.greenorange.promotion.model.dto.projectCommission.ProjectCommissionUpdateRequest;
import com.greenorange.promotion.model.entity.ProjectCommission; import com.greenorange.promotion.model.entity.ProjectCommission;
import com.greenorange.promotion.model.entity.ProjectDetail;
import com.greenorange.promotion.model.vo.projectCommission.ProjectCommissionVO; import com.greenorange.promotion.model.vo.projectCommission.ProjectCommissionVO;
import com.greenorange.promotion.model.vo.projectCommission.ProjectDetailCommissionVO;
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.ProjectCommissionService;
import com.greenorange.promotion.service.project.ProjectDetailService;
import com.greenorange.promotion.service.project.ProjectService;
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;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.validation.Valid;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestBody;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.greenorange.promotion.model.dto.CommonRequest;
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.math.BigDecimal;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List; import java.util.List;
import java.util.Map;
/** /**
@ -46,82 +50,164 @@ public class ProjectCommissionController {
@Resource @Resource
private CommonService commonService; private CommonService commonService;
@Resource
private ProjectService projectService;
@Resource
private ProjectDetailService projectDetailService;
/** /**
* web端管理员添加项目明细抽佣 * 小程序用户查看查询项目的抽佣情况
* @return 项目抽佣比例列表
*/
@PostMapping("query/rate")
@Operation(summary = "小程序用户查看查询项目的抽佣情况", description = "参数权限管理员方法名queryProjectCommission")
@RequiresPermission(mustRole = UserConstant.DEFAULT_ROLE)
@SysLog(title = "项目明细抽佣管理", content = "小程序用户查看查询项目的抽佣情况")
public BaseResponse<List<ProjectCommissionVO>> queryProjectCommission(HttpServletRequest request) {
Long userId = (Long) request.getAttribute("userId");
LambdaQueryWrapper<ProjectCommission> lambdaQueryWrapper = new LambdaQueryWrapper<>();
lambdaQueryWrapper.eq(ProjectCommission::getUserId, userId);
List<ProjectCommission> projectCommissionList = projectCommissionService.list(lambdaQueryWrapper);
List<ProjectDetail> projectDetailList = commonService.findByFieldInTargetField(projectCommissionList, projectDetailService, ProjectCommission::getProjectDetailId, "id");
// 封装Map集合项目明细id项目明细名称
Map<Long, String> projectDetailMap = new HashMap<>();
for (ProjectDetail projectDetail : projectDetailList) {
projectDetailMap.put(projectDetail.getId(), projectDetail.getProjectDetailName());
}
// 封装项目明细抽佣列表
List<ProjectDetailCommissionVO> projectDetailCommissionVOList = new ArrayList<>();
for (ProjectCommission projectCommission : projectCommissionList) {
Long projectDetailId = projectCommission.getProjectDetailId();
BigDecimal myUnitPrice = projectCommission.getMyUnitPrice();
BigDecimal currentCommissionRate = projectCommission.getCurrentCommissionRate();
String projectDetailName = projectDetailMap.get(projectDetailId);
ProjectDetailCommissionVO projectDetailCommissionVO = commonService.copyProperties(projectCommission, ProjectDetailCommissionVO.class);
projectDetailCommissionVO.setProjectDetailName(projectDetailName);
BigDecimal agentUnitPrice = myUnitPrice.multiply(BigDecimal.ONE.subtract(currentCommissionRate));
projectDetailCommissionVO.setAgentUnitPrice(agentUnitPrice);
projectDetailCommissionVOList.add(projectDetailCommissionVO);
}
// 封装Map集合项目id项目明细抽佣列表
Map<Long, List<ProjectDetailCommissionVO>> pdcMap = new HashMap<>();
for (ProjectDetailCommissionVO projectDetailCommissionVO : projectDetailCommissionVOList) {
Long projectId = projectDetailCommissionVO.getProjectId();
List<ProjectDetailCommissionVO> pdcList = pdcMap.get(projectId);
if (pdcList == null) {
pdcList = new ArrayList<>();
}
pdcMap.put(projectId, pdcList);
}
// 封装项目抽佣比例列表
List<Project> projectList = commonService.findByFieldInTargetField(projectCommissionList, projectService, ProjectCommission::getProjectId, "id");
List<ProjectCommissionVO> projectCommissionVOList = new ArrayList<>();
for (Project project : projectList) {
ProjectCommissionVO projectCommissionVO = commonService.copyProperties(project, ProjectCommissionVO.class);
Long projectId = project.getId();
List<ProjectDetailCommissionVO> projectDetailCommissionVOS = pdcMap.get(projectId);
projectCommissionVO.setProjectDetailCommissionVOList(projectDetailCommissionVOS);
projectCommissionVOList.add(projectCommissionVO);
}
return ResultUtils.success(projectCommissionVOList);
}
/**
* 小程序用户修改项目的抽佣比例
* @param projectCommissionAddRequest 项目明细抽佣添加请求体 * @param projectCommissionAddRequest 项目明细抽佣添加请求体
* @return 是否添加成功 * @return 是否添加成功
*/ */
@PostMapping("add") @PostMapping("update/rate")
@Operation(summary = "web端管理员添加项目明细抽佣", description = "参数项目明细抽佣添加请求体权限管理员方法名addProjectCommission") @Operation(summary = "小程序用户修改项目的抽佣比例", description = "参数:项目明细抽佣添加请求体,权限:管理员,方法名:updateProjectCommissionRate")
@RequiresPermission(mustRole = UserConstant.ADMIN_ROLE) @RequiresPermission(mustRole = UserConstant.DEFAULT_ROLE)
@SysLog(title = "项目明细抽佣管理", content = "web端管理员添加项目明细抽佣") @SysLog(title = "项目明细抽佣管理", content = "小程序用户修改项目的抽佣比例")
public BaseResponse<Boolean> addProjectCommission(@Valid @RequestBody ProjectCommissionAddRequest projectCommissionAddRequest) { public BaseResponse<Boolean> updateProjectCommissionRate(@Valid @RequestBody ProjectCommissionAddRequest projectCommissionAddRequest) {
ProjectCommission projectCommission = commonService.copyProperties(projectCommissionAddRequest, ProjectCommission.class); ProjectCommission projectCommission = commonService.copyProperties(projectCommissionAddRequest, ProjectCommission.class);
projectCommissionService.save(projectCommission); projectCommissionService.save(projectCommission);
return ResultUtils.success(true); return ResultUtils.success(true);
} }
/**
* web端管理员根据id修改项目明细抽佣信息
* @param projectCommissionUpdateRequest 项目明细抽佣更新请求体
* @return 是否更新成功
*/
@PostMapping("update")
@Operation(summary = "web端管理员更新项目明细抽佣", description = "参数项目明细抽佣更新请求体权限管理员方法名updateProjectCommission")
@RequiresPermission(mustRole = UserConstant.ADMIN_ROLE)
@SysLog(title = "项目明细抽佣管理", content = "web端管理员根据id修改项目明细抽佣信息")
public BaseResponse<Boolean> updateProjectCommission(@Valid @RequestBody ProjectCommissionUpdateRequest projectCommissionUpdateRequest) {
ProjectCommission projectCommission = commonService.copyProperties(projectCommissionUpdateRequest, ProjectCommission.class);
projectCommissionService.updateById(projectCommission);
return ResultUtils.success(true);
}
/**
* web端管理员根据id删除项目明细抽佣
* @param commonRequest 项目明细抽佣删除请求体
* @return 是否删除成功
*/
@PostMapping("delete")
@Operation(summary = "web端管理员根据id删除项目明细抽佣", description = "参数项目明细抽佣删除请求体权限管理员方法名delProjectCommission")
@RequiresPermission(mustRole = UserConstant.ADMIN_ROLE)
@SysLog(title = "项目明细抽佣管理", content = "web端管理员根据id删除项目明细抽佣")
public BaseResponse<Boolean> delProjectCommission(@Valid @RequestBody CommonRequest commonRequest) {
Long id = commonRequest.getId();
projectCommissionService.removeById(id);
return ResultUtils.success(true);
}
/** //
* web端管理员批量删除项目明细抽佣 // /**
* @param commonBatchRequest 项目明细抽佣批量删除请求体 // * web端管理员添加项目明细抽佣
* @return 是否删除成功 // * @param projectCommissionAddRequest 项目明细抽佣添加请求体
*/ // * @return 是否添加成功
@PostMapping("delBatch") // */
@Operation(summary = "web端管理员批量删除项目明细抽佣", description = "参数项目明细抽佣批量删除请求体权限管理员方法名delBatchProjectCommission") // @PostMapping("add")
@RequiresPermission(mustRole = UserConstant.ADMIN_ROLE) // @Operation(summary = "web端管理员添加项目明细抽佣", description = "参数项目明细抽佣添加请求体权限管理员方法名addProjectCommission")
@SysLog(title = "项目明细抽佣管理", content = "web端管理员批量删除项目明细抽佣") // @RequiresPermission(mustRole = UserConstant.ADMIN_ROLE)
public BaseResponse<Boolean> delBatchProjectCommission(@Valid @RequestBody CommonBatchRequest commonBatchRequest) { // @SysLog(title = "项目明细抽佣管理", content = "web端管理员添加项目明细抽佣")
List<Long> ids = commonBatchRequest.getIds(); // public BaseResponse<Boolean> addProjectCommission(@Valid @RequestBody ProjectCommissionAddRequest projectCommissionAddRequest) {
projectCommissionService.removeByIds(ids); // ProjectCommission projectCommission = commonService.copyProperties(projectCommissionAddRequest, ProjectCommission.class);
return ResultUtils.success(true); // projectCommissionService.save(projectCommission);
} // return ResultUtils.success(true);
// }
/** //
* web端管理员根据id查询项目明细抽佣 // /**
* @param commonRequest 项目明细抽佣查询请求体 // * web端管理员根据id修改项目明细抽佣信息
* @return 项目明细抽佣信息 // * @param projectCommissionUpdateRequest 项目明细抽佣更新请求体
*/ // * @return 是否更新成功
@PostMapping("queryById") // */
@Operation(summary = "web端管理员根据id查询项目明细抽佣", description = "参数项目明细抽佣查询请求体权限管理员方法名queryProjectCommissionById") // @PostMapping("update")
@RequiresPermission(mustRole = UserConstant.ADMIN_ROLE) // @Operation(summary = "web端管理员更新项目明细抽佣", description = "参数项目明细抽佣更新请求体权限管理员方法名updateProjectCommission")
@SysLog(title = "项目明细抽佣管理", content = "web端管理员根据id查询项目明细抽佣") // @RequiresPermission(mustRole = UserConstant.ADMIN_ROLE)
public BaseResponse<ProjectCommissionVO> queryProjectCommissionById(@Valid @RequestBody CommonRequest commonRequest) { // @SysLog(title = "项目明细抽佣管理", content = "web端管理员根据id修改项目明细抽佣信息")
Long id = commonRequest.getId(); // public BaseResponse<Boolean> updateProjectCommission(@Valid @RequestBody ProjectCommissionUpdateRequest projectCommissionUpdateRequest) {
ProjectCommission projectCommission = projectCommissionService.getById(id); // ProjectCommission projectCommission = commonService.copyProperties(projectCommissionUpdateRequest, ProjectCommission.class);
ThrowUtils.throwIf(projectCommission == null, ErrorCode.OPERATION_ERROR, "当前项目明细抽佣不存在"); // projectCommissionService.updateById(projectCommission);
ProjectCommissionVO projectCommissionVO = commonService.copyProperties(projectCommission, ProjectCommissionVO.class); // return ResultUtils.success(true);
return ResultUtils.success(projectCommissionVO); // }
} //
// /**
// * web端管理员根据id删除项目明细抽佣
// * @param commonRequest 项目明细抽佣删除请求体
// * @return 是否删除成功
// */
// @PostMapping("delete")
// @Operation(summary = "web端管理员根据id删除项目明细抽佣", description = "参数项目明细抽佣删除请求体权限管理员方法名delProjectCommission")
// @RequiresPermission(mustRole = UserConstant.ADMIN_ROLE)
// @SysLog(title = "项目明细抽佣管理", content = "web端管理员根据id删除项目明细抽佣")
// public BaseResponse<Boolean> delProjectCommission(@Valid @RequestBody CommonRequest commonRequest) {
// Long id = commonRequest.getId();
// projectCommissionService.removeById(id);
// return ResultUtils.success(true);
// }
//
// /**
// * web端管理员批量删除项目明细抽佣
// * @param commonBatchRequest 项目明细抽佣批量删除请求体
// * @return 是否删除成功
// */
// @PostMapping("delBatch")
// @Operation(summary = "web端管理员批量删除项目明细抽佣", description = "参数项目明细抽佣批量删除请求体权限管理员方法名delBatchProjectCommission")
// @RequiresPermission(mustRole = UserConstant.ADMIN_ROLE)
// @SysLog(title = "项目明细抽佣管理", content = "web端管理员批量删除项目明细抽佣")
// public BaseResponse<Boolean> delBatchProjectCommission(@Valid @RequestBody CommonBatchRequest commonBatchRequest) {
// List<Long> ids = commonBatchRequest.getIds();
// projectCommissionService.removeByIds(ids);
// return ResultUtils.success(true);
// }
//
// /**
// * web端管理员根据id查询项目明细抽佣
// * @param commonRequest 项目明细抽佣查询请求体
// * @return 项目明细抽佣信息
// */
// @PostMapping("queryById")
// @Operation(summary = "web端管理员根据id查询项目明细抽佣", description = "参数项目明细抽佣查询请求体权限管理员方法名queryProjectCommissionById")
// @RequiresPermission(mustRole = UserConstant.ADMIN_ROLE)
// @SysLog(title = "项目明细抽佣管理", content = "web端管理员根据id查询项目明细抽佣")
// public BaseResponse<ProjectCommissionVO> queryProjectCommissionById(@Valid @RequestBody CommonRequest commonRequest) {
// Long id = commonRequest.getId();
// ProjectCommission projectCommission = projectCommissionService.getById(id);
// ThrowUtils.throwIf(projectCommission == null, ErrorCode.OPERATION_ERROR, "当前项目明细抽佣不存在");
// ProjectCommissionVO projectCommissionVO = commonService.copyProperties(projectCommission, ProjectCommissionVO.class);
// return ResultUtils.success(projectCommissionVO);
// }
// //
// /** // /**
// * Web端管理员分页查询项目明细抽佣 // * Web端管理员分页查询项目明细抽佣

View File

@ -37,7 +37,7 @@ public class ProjectCardVO implements Serializable {
/** /**
* 项目图片URL * 项目图片URL
*/ */
@Schema(description = "项目图片URL", example = "http://xxx.png") @Schema(description = "项目图片URL", example = "8E9WE24M")
private String projectImage; private String projectImage;
/** /**

View File

@ -28,7 +28,7 @@ public class ProjectDetailVO implements Serializable {
/** /**
* 项目图片URL * 项目图片URL
*/ */
@Schema(description = "项目图片URL", example = "http://xxx.png") @Schema(description = "项目图片URL", example = "8E9WE24M")
private String projectImage; private String projectImage;
/** /**

View File

@ -37,7 +37,7 @@ public class ProjectPageVO implements Serializable {
/** /**
* 项目图片URL * 项目图片URL
*/ */
@Schema(description = "项目图片URL", example = "http://xxx.png") @Schema(description = "项目图片URL", example = "8E9WE24M")
private String projectImage; private String projectImage;
/** /**

View File

@ -30,7 +30,7 @@ public class ProjectVO implements Serializable {
/** /**
* 项目图片URL * 项目图片URL
*/ */
@Schema(description = "项目图片URL", example = "http://xxx.png") @Schema(description = "项目图片URL", example = "8E9WE24M")
private String projectImage; private String projectImage;
/** /**

View File

@ -6,6 +6,7 @@ import lombok.Data;
import java.io.Serial; import java.io.Serial;
import java.io.Serializable; import java.io.Serializable;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.util.List;
/** /**
* 项目明细抽佣 视图对象 * 项目明细抽佣 视图对象
@ -14,41 +15,35 @@ import java.math.BigDecimal;
@Schema(description = "项目明细抽佣 视图对象") @Schema(description = "项目明细抽佣 视图对象")
public class ProjectCommissionVO implements Serializable { public class ProjectCommissionVO implements Serializable {
/**
* 项目明细抽佣ID
*/
@Schema(description = "项目明细抽佣ID", example = "1")
private Long id;
/**
* 项目明细ID
*/
@Schema(description = "项目明细ID", example = "${field.example}")
private Long projectDetailId;
/**
* 我的单价
*/
@Schema(description = "我的单价", example = "${field.example}")
private BigDecimal myUnitPrice;
/**
* 当前抽佣比例
*/
@Schema(description = "当前抽佣比例", example = "${field.example}")
private BigDecimal currentCommissionRate;
/** /**
* 项目ID * 项目ID
*/ */
@Schema(description = "项目ID", example = "${field.example}") @Schema(description = "项目ID", example = "1")
private Long projectId; private Long projectId;
/** /**
* 用户ID * 项目名称
*/ */
@Schema(description = "用户ID", example = "${field.example}") @Schema(description = "项目名称", example = "美团省钱包")
private Long userId; private String projectName;
/**
* 项目图片URL
*/
@Schema(description = "项目图片URL", example = "8E9WE24M")
private String projectImage;
/**
* 项目结算周期
*/
@Schema(description = "项目结算周期", example = "2")
private Integer projectSettlementCycle;
/**
* 项目明细列表
*/
@Schema(description = "项目明细列表")
private List<ProjectDetailCommissionVO> projectDetailCommissionVOList;
@Serial @Serial

View File

@ -0,0 +1,52 @@
package com.greenorange.promotion.model.vo.projectCommission;
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 ProjectDetailCommissionVO implements Serializable {
/**
* 项目明细抽佣ID
*/
@Schema(description = "项目明细抽佣ID", example = "1")
private Long id;
/**
* 项目明细名称
*/
@Schema(description = "项目明细名称", example = "2.9元购买30元券包")
private String projectDetailName;
/**
* 我的单价
*/
@Schema(description = "我的单价", example = "10.44")
private BigDecimal myUnitPrice;
/**
* 代理单价
*/
@Schema(description = "代理单价", example = "9.44")
private BigDecimal agentUnitPrice;
/**
* 当前抽佣比例
*/
@Schema(description = "当前抽佣比例", example = "3")
private BigDecimal currentCommissionRate;
/**
* 项目id
*/
@Schema(description = "项目id", example = "1")
private Long projectId;
@Serial
private static final long serialVersionUID = 1L;
}