@ -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.ProjectCommissionQueryRequest ;
import com.greenorange.promotion.model.dto.projectCommission.ProjectCommissionUpdateRequest ;
import com.greenorange.promotion.model.entity.Project ;
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 = " 参数: 项目明细抽佣添加请求体, 权限: 管理员, 方法名: addProjectCommission " )
@RequiresPermission ( mustRole = UserConstant . ADMIN_ROLE )
@SysLog ( title = " 项目明细抽佣管理 " , content = " web端管理员添加项目明细抽佣 " )
public BaseResponse < Boolean > addProjectCommission ( @Valid @RequestBody ProjectCommissionAddRequest projectCommissionAddRequest ) {
@PostMapping ( " update/rate " )
@Operation ( summary = " 小程序用户修改项目的抽佣比例 " , description = " 参数:项目明细抽佣添加请求体,权限:管理员,方法名: updateProjectCommissionRate " )
@RequiresPermission ( mustRole = UserConstant . DEFAULT _ROLE)
@SysLog ( title = " 项目明细抽佣管理 " , content = " 小程序用户修改项目的抽佣比例 " )
public BaseResponse < Boolean > updateProjectCommissionRate ( @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端管理员分页查询项目明细抽佣