@ -1,34 +1,38 @@
package com.greenorange.promotion.controller.project ;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper ;
import com.baomidou.mybatisplus.core.conditions.query.Lambda QueryWrapper ;
import com.greenorange.promotion.annotation.RequiresPermission ;
import com.greenorange.promotion.annotation.SysLog ;
import com.greenorange.promotion.common.BaseResponse ;
import com.greenorange.promotion.common.ErrorCode ;
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.CommonRequest ;
import com.greenorange.promotion.model.dto.projectCommission.ProjectCommissionAddRequest ;
import com.greenorange.promotion.model.dto.projectCommission.ProjectCommissionQueryReques t ;
import com.greenorange.promotion.model.dto.projectCommission.ProjectCommissionUpdateRequest ;
import com.greenorange.promotion.model.entity.Projec t ;
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.ProjectDetailCommissionVO ;
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.ProjectService ;
import io.swagger.v3.oas.annotations.Operation ;
import io.swagger.v3.oas.annotations.tags.Tag ;
import jakarta.annotation.Resource ;
import jakarta.servlet.http.HttpServletRequest ;
import jakarta.validation.Valid ;
import lombok.extern.slf4j.Slf4j ;
import org.springframework.web.bind.annotation.PostMapping ;
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.RestController ;
import java.math.BigDecimal ;
import java.util.ArrayList ;
import java.util.HashMap ;
import java.util.List ;
import java.util.Map ;
/**
@ -46,82 +50,164 @@ public class ProjectCommissionController {
@Resource
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 项目明细抽佣添加请求体
* @return 是否添加成功
*/
@PostMapping ( " add " )
@Operation ( summary = " web端管理员添加项目明细抽佣 " , description = " 参数:项目明细抽佣添加请求体,权限:管理员,方法名:add ProjectCommission " )
@RequiresPermission ( mustRole = UserConstant . ADMIN _ROLE)
@SysLog ( title = " 项目明细抽佣管理 " , content = " web端管理员添加项目明细抽佣 " )
public BaseResponse < Boolean > add ProjectCommission( @Valid @RequestBody ProjectCommissionAddRequest projectCommissionAddRequest ) {
@PostMapping ( " update/rate " )
@Operation ( summary = " 小程序用户修改项目的抽佣比例 " , description = " 参数:项目明细抽佣添加请求体,权限:管理员,方法名:update ProjectCommissionRate " )
@RequiresPermission ( mustRole = UserConstant . DEFAULT _ROLE)
@SysLog ( title = " 项目明细抽佣管理 " , content = " 小程序用户修改项目的抽佣比例 " )
public BaseResponse < Boolean > update ProjectCommissionRate ( @Valid @RequestBody ProjectCommissionAddRequest projectCommissionAddRequest ) {
ProjectCommission projectCommission = commonService . copyProperties ( projectCommissionAddRequest , ProjectCommission . class ) ;
projectCommissionService . save ( projectCommission ) ;
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 项目明细抽佣批量删除请求体
* @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端管理员添加项目明细抽佣
// * @param projectCommissionAddRequest 项目明细抽佣添加请求体
// * @return 是否添加成功
// */
// @PostMapping("add" )
// @Operation(summary = "web端管理员添加项目明细抽佣", description = "参数: 项目明细抽佣添加请求体, 权限: 管理员, 方法名: addProjectCommission" )
// @RequiresPermission(mustRole = UserConstant.ADMIN_ROLE )
// @SysLog(title = "项目明细抽佣管理", content = "web端管理员添加项目明细抽佣")
// public BaseResponse<Boolean> addProjectCommission(@Valid @RequestBody ProjectCommissionAddRequest projectCommissionAddRequest) {
// ProjectCommission projectCommission = commonService.copyProperties(projectCommissionAddRequest, ProjectCommission.class) ;
// projectCommissionService.save(projectCommission) ;
// 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 项目明细抽佣批量删除请求体
// * @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端管理员分页查询项目明细抽佣