diff --git a/src/main/java/com/greenorange/promotion/aop/PermissionCheck.java b/src/main/java/com/greenorange/promotion/aop/PermissionCheck.java index dda5a8b..4fe321f 100644 --- a/src/main/java/com/greenorange/promotion/aop/PermissionCheck.java +++ b/src/main/java/com/greenorange/promotion/aop/PermissionCheck.java @@ -1,32 +1,14 @@ package com.greenorange.promotion.aop; -import cn.hutool.core.date.DateUtil; -import com.auth0.jwt.JWT; -import com.auth0.jwt.exceptions.JWTDecodeException; -import com.auth0.jwt.interfaces.Claim; -import com.auth0.jwt.interfaces.DecodedJWT; -import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; -import com.baomidou.mybatisplus.core.toolkit.StringUtils; import com.greenorange.promotion.annotation.RequiresPermission; -import com.greenorange.promotion.common.ErrorCode; -import com.greenorange.promotion.exception.ThrowUtils; -import com.greenorange.promotion.model.entity.UserInfo; -import com.greenorange.promotion.model.enums.UserRoleEnum; -import com.greenorange.promotion.service.user.UserInfoService; +import com.greenorange.promotion.service.userInfo.UserInfoService; import com.greenorange.promotion.utils.JWTUtils; import jakarta.annotation.Resource; -import jakarta.servlet.http.HttpServletRequest; import lombok.extern.slf4j.Slf4j; -import org.apache.catalina.User; import org.aspectj.lang.ProceedingJoinPoint; import org.aspectj.lang.annotation.Around; import org.aspectj.lang.annotation.Aspect; import org.springframework.stereotype.Component; -import org.springframework.web.context.request.RequestContextHolder; -import org.springframework.web.context.request.ServletRequestAttributes; - -import java.util.Date; -import java.util.Objects; /** diff --git a/src/main/java/com/greenorange/promotion/controller/project/ProjectCommissionController.java b/src/main/java/com/greenorange/promotion/controller/project/ProjectCommissionController.java index 1381c23..666dfc8 100644 --- a/src/main/java/com/greenorange/promotion/controller/project/ProjectCommissionController.java +++ b/src/main/java/com/greenorange/promotion/controller/project/ProjectCommissionController.java @@ -4,21 +4,25 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; 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.CommonRequest; -import com.greenorange.promotion.model.dto.project.ProjectUpdateRequest; -import com.greenorange.promotion.model.dto.projectCommission.ProjectCommissionAddRequest; +import com.greenorange.promotion.model.dto.projectCommission.ProjectCommissionUniteUpdateRequest; 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.dto.subUserProjectCommission.SubUserProjectCommissionUpdateRequest; +import com.greenorange.promotion.model.entity.*; import com.greenorange.promotion.model.vo.projectCommission.ProjectCommissionVO; import com.greenorange.promotion.model.vo.projectCommission.ProjectDetailCommissionVO; +import com.greenorange.promotion.model.vo.subUserProjectCommission.SubUserProjectCommissionVO; +import com.greenorange.promotion.model.vo.subUserProjectCommission.SubUserProjectDetailCommissionVO; 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 com.greenorange.promotion.service.project.SubUserProjectCommissionService; +import com.greenorange.promotion.service.userInfo.UserInfoService; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.tags.Tag; import jakarta.annotation.Resource; @@ -49,6 +53,9 @@ public class ProjectCommissionController { @Resource private ProjectCommissionService projectCommissionService; + @Resource + private SubUserProjectCommissionService subUserProjectCommissionService; + @Resource private CommonService commonService; @@ -58,12 +65,15 @@ public class ProjectCommissionController { @Resource private ProjectDetailService projectDetailService; + @Resource + private UserInfoService userInfoService; + /** * 小程序用户查看查询项目的抽佣情况 - * @return 项目抽佣比例列表 + * @return 项目抽佣列表 */ - @PostMapping("query/rate") + @PostMapping("query/commission") @Operation(summary = "小程序用户查看查询项目的抽佣情况", description = "参数:无,权限:管理员,方法名:queryProjectCommission") @RequiresPermission(mustRole = UserConstant.DEFAULT_ROLE) @SysLog(title = "项目明细抽佣管理", content = "小程序用户查看查询项目的抽佣情况") @@ -76,8 +86,11 @@ public class ProjectCommissionController { List projectDetailList = commonService.findByFieldInTargetField(projectCommissionList, projectDetailService, ProjectCommission::getProjectDetailId, "id"); // 封装Map集合(键:项目明细id,值:项目明细名称) Map projectDetailMap = new HashMap<>(); + // 封装Map集合(键:项目明细id,值:项目明细最大抽佣比例) + Map rateMap = new HashMap<>(); for (ProjectDetail projectDetail : projectDetailList) { projectDetailMap.put(projectDetail.getId(), projectDetail.getProjectDetailName()); + rateMap.put(projectDetail.getId(), projectDetail.getMaxCommissionRate()); } // 封装项目明细抽佣列表 List projectDetailCommissionVOList = new ArrayList<>(); @@ -86,8 +99,10 @@ public class ProjectCommissionController { BigDecimal myUnitPrice = projectCommission.getMyUnitPrice(); BigDecimal currentCommissionRate = projectCommission.getCurrentCommissionRate(); String projectDetailName = projectDetailMap.get(projectDetailId); + BigDecimal maxCommissionRate = rateMap.get(projectDetailId); ProjectDetailCommissionVO projectDetailCommissionVO = commonService.copyProperties(projectCommission, ProjectDetailCommissionVO.class); projectDetailCommissionVO.setProjectDetailName(projectDetailName); + projectDetailCommissionVO.setMaxCommissionRate(maxCommissionRate); BigDecimal agentUnitPrice = myUnitPrice.multiply(BigDecimal.ONE.subtract(currentCommissionRate)); projectDetailCommissionVO.setAgentUnitPrice(agentUnitPrice); projectDetailCommissionVOList.add(projectDetailCommissionVO); @@ -100,9 +115,10 @@ public class ProjectCommissionController { if (pdcList == null) { pdcList = new ArrayList<>(); } + pdcList.add(projectDetailCommissionVO); pdcMap.put(projectId, pdcList); } - // 封装项目抽佣比例列表 + // 封装项目抽佣列表 List projectList = commonService.findByFieldInTargetField(projectCommissionList, projectService, ProjectCommission::getProjectId, "id"); List projectCommissionVOList = new ArrayList<>(); for (Project project : projectList) { @@ -118,119 +134,179 @@ public class ProjectCommissionController { /** * 小程序用户修改项目的抽佣比例 - * @param projectCommissionUpdateRequest 项目明细抽佣添加请求体 + * @param projectCommissionUpdateRequest 项目明细抽佣更新请求体 * @return 是否添加成功 */ @PostMapping("update/rate") - @Operation(summary = "小程序用户修改项目的抽佣比例", description = "参数:项目明细抽佣添加请求体,权限:管理员,方法名:updateProjectCommissionRate") + @Operation(summary = "小程序用户修改项目的抽佣比例", description = "参数:项目明细抽佣更新请求体,权限:管理员,方法名:updateProjectCommissionRate") @RequiresPermission(mustRole = UserConstant.DEFAULT_ROLE) @SysLog(title = "项目明细抽佣管理", content = "小程序用户修改项目的抽佣比例") - public BaseResponse updateProjectCommissionRate(@Valid @RequestBody ProjectCommissionUpdateRequest projectCommissionUpdateRequest) { - ProjectCommission projectCommission = commonService.copyProperties(projectCommissionUpdateRequest, ProjectCommission.class); - projectCommissionService.save(projectCommission); + public BaseResponse updateProjectCommissionRate(@Valid @RequestBody ProjectCommissionUpdateRequest projectCommissionUpdateRequest, HttpServletRequest request) { + Long id = projectCommissionUpdateRequest.getId(); + BigDecimal currentCommissionRate = projectCommissionUpdateRequest.getCurrentCommissionRate(); + // 校验当前抽佣比例不能大于最大抽佣比例 + ProjectCommission projectCommission = projectCommissionService.getById(id); + Long projectDetailId = projectCommission.getProjectDetailId(); + ProjectDetail projectDetail = projectDetailService.getById(projectDetailId); + BigDecimal maxCommissionRate = projectDetail.getMaxCommissionRate(); + ThrowUtils.throwIf(currentCommissionRate.compareTo(maxCommissionRate) > 0, ErrorCode.OPERATION_ERROR, "当前抽佣比例不能大于最大抽佣比例"); + projectCommission.setCurrentCommissionRate(currentCommissionRate); + projectCommissionService.updateById(projectCommission); + + // 批量更新下级用户的项目明细抽佣比例 + Long userId = (Long) request.getAttribute("userId"); + LambdaQueryWrapper lambdaQueryWrapper = new LambdaQueryWrapper<>(); + lambdaQueryWrapper.eq(SubUserProjectCommission::getProjectDetailId, projectDetailId); + lambdaQueryWrapper.eq(SubUserProjectCommission::getUserId, userId); + List subUserProjectCommissionList = subUserProjectCommissionService.list(lambdaQueryWrapper); + for (SubUserProjectCommission subUserProjectCommission : subUserProjectCommissionList) { + subUserProjectCommission.setCurrentCommissionRate(currentCommissionRate); + } + subUserProjectCommissionService.updateBatchById(subUserProjectCommissionList); return ResultUtils.success(true); } -// -// /** -// * web端管理员添加项目明细抽佣 -// * @param projectCommissionAddRequest 项目明细抽佣添加请求体 -// * @return 是否添加成功 -// */ -// @PostMapping("add") -// @Operation(summary = "web端管理员添加项目明细抽佣", description = "参数:项目明细抽佣添加请求体,权限:管理员,方法名:addProjectCommission") -// @RequiresPermission(mustRole = UserConstant.ADMIN_ROLE) -// @SysLog(title = "项目明细抽佣管理", content = "web端管理员添加项目明细抽佣") -// public BaseResponse 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 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 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 delBatchProjectCommission(@Valid @RequestBody CommonBatchRequest commonBatchRequest) { -// List 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 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 projectCommissionQueryRequest 项目明细抽佣查询请求体 -// * @return 项目明细抽佣列表 -// */ -// @PostMapping("page") -// @Operation(summary = "Web端管理员分页查询项目明细抽佣", description = "参数:项目明细抽佣查询请求体,权限:管理员,方法名:listProjectCommissionByPage") -// @RequiresPermission(mustRole = UserConstant.ADMIN_ROLE) -// @SysLog(title = "项目明细抽佣管理", content = "Web端管理员分页查询项目明细抽佣") -// public BaseResponse> listProjectCommissionByPage(@Valid @RequestBody ProjectCommissionQueryRequest projectCommissionQueryRequest) { -// long current = projectCommissionQueryRequest.getCurrent(); -// long pageSize = projectCommissionQueryRequest.getPageSize(); -// QueryWrapper queryWrapper = projectCommissionService.getQueryWrapper(projectCommissionQueryRequest); -// Page page = projectCommissionService.page(new Page<>(current, pageSize), queryWrapper); -// List projectCommissionList = page.getRecords(); -// List projectCommissionVOList = commonService.convertList(projectCommissionList, ProjectCommissionVO.class); -// Page voPage = new Page<>(current, pageSize); -// voPage.setRecords(projectCommissionVOList); -// voPage.setPages(page.getPages()); -// voPage.setTotal(page.getTotal()); -// return ResultUtils.success(voPage); -// } + /** + * 小程序用户查看下级用户的项目明细抽佣情况 + * @param commonRequest 项目id + * @return 下级用户的项目明细抽佣列表 + */ + @PostMapping("query/sub/commission") + @Operation(summary = "小程序用户查看下级用户的项目明细抽佣情况", description = "参数:项目明细抽佣添加请求体,权限:管理员,方法名:querySubUserProjectCommission") + @RequiresPermission(mustRole = UserConstant.DEFAULT_ROLE) + @SysLog(title = "项目明细抽佣管理", content = "小程序用户查看下级用户的项目明细抽佣情况") + public BaseResponse> querySubUserProjectCommission(@Valid @RequestBody CommonRequest commonRequest, HttpServletRequest request) { + Long projectId = commonRequest.getId(); + Long userId = (Long) request.getAttribute("userId"); + LambdaQueryWrapper lambdaQueryWrapper = new LambdaQueryWrapper<>(); + lambdaQueryWrapper.eq(SubUserProjectCommission::getProjectId, projectId); + lambdaQueryWrapper.eq(SubUserProjectCommission::getUserId, userId); + List subUserProjectCommissionList = subUserProjectCommissionService.list(lambdaQueryWrapper); + + List projectDetailList = commonService.findByFieldInTargetField(subUserProjectCommissionList, projectDetailService, SubUserProjectCommission::getProjectDetailId, "id"); + // 封装Map集合(键:项目明细id,值:项目明细名称) + Map projectDetailMap = new HashMap<>(); + // 封装Map集合(键:项目明细id,值:项目明细最大抽佣比例) + Map rateMap = new HashMap<>(); + for (ProjectDetail projectDetail : projectDetailList) { + projectDetailMap.put(projectDetail.getId(), projectDetail.getProjectDetailName()); + rateMap.put(projectDetail.getId(), projectDetail.getMaxCommissionRate()); + } + // 封装下级用户项目明细抽佣列表 + List subUserProjectDetailCommissionVOList = new ArrayList<>(); + for (SubUserProjectCommission subUserProjectCommission : subUserProjectCommissionList) { + Long projectDetailId = subUserProjectCommission.getProjectDetailId(); + String projectDetailName = projectDetailMap.get(projectDetailId); + BigDecimal maxCommissionRate = rateMap.get(projectDetailId); + SubUserProjectDetailCommissionVO subUserProjectDetailCommissionVO = commonService.copyProperties(subUserProjectCommission, SubUserProjectDetailCommissionVO.class); + subUserProjectDetailCommissionVO.setProjectDetailName(projectDetailName); + subUserProjectDetailCommissionVO.setMaxCommissionRate(maxCommissionRate); + BigDecimal myUnitPrice = subUserProjectCommission.getMyUnitPrice(); + BigDecimal currentCommissionRate = subUserProjectCommission.getCurrentCommissionRate(); + BigDecimal agentUnitPrice = myUnitPrice.multiply(BigDecimal.ONE.subtract(currentCommissionRate)); + subUserProjectDetailCommissionVO.setAgentUnitPrice(agentUnitPrice); + subUserProjectDetailCommissionVOList.add(subUserProjectDetailCommissionVO); + } + // 封装Map集合(键:下级用户id,值:项目明细抽佣列表) + Map > subPdcMap = new HashMap<>(); + for (SubUserProjectDetailCommissionVO subUserProjectDetailCommissionVO : subUserProjectDetailCommissionVOList) { + Long subUserId = subUserProjectDetailCommissionVO.getSubUserId(); + List subUserProjectDetailCommissionVOS = subPdcMap.get(subUserId); + if (subUserProjectDetailCommissionVOS == null) { + subUserProjectDetailCommissionVOS = new ArrayList<>(); + } + subUserProjectDetailCommissionVOS.add(subUserProjectDetailCommissionVO); + subPdcMap.put(subUserId, subUserProjectDetailCommissionVOS); + } + // 封装下级用户项目抽佣列表 + LambdaQueryWrapper userInfoLambdaQueryWrapper = new LambdaQueryWrapper<>(); + userInfoLambdaQueryWrapper.eq(UserInfo::getParentUserId, userId); + List userInfoList = userInfoService.list(userInfoLambdaQueryWrapper); + List subUserProjectCommissionVOList = new ArrayList<>(); + for (UserInfo userInfo : userInfoList) { + Long subUserId = userInfo.getId(); + String nickName = userInfo.getNickName(); + List subUserProjectDetailCommissionVOS = subPdcMap.get(subUserId); + SubUserProjectCommissionVO subUserProjectCommissionVO = SubUserProjectCommissionVO.builder() + .subUserId(subUserId) + .subUserNickName(nickName) + .subUserProjectDetailCommissionVOList(subUserProjectDetailCommissionVOS) + .build(); + subUserProjectCommissionVOList.add(subUserProjectCommissionVO); + } + return ResultUtils.success(subUserProjectCommissionVOList); + } + + + /** + * 小程序用户修改下级用户的项目明细抽佣比例 + * @param subUserProjectCommissionUpdateRequest 下级用户项目明细抽佣更新请求体 + * @return 是否添加成功 + */ + @PostMapping("update/sub/rate") + @Operation(summary = "小程序用户修改下级用户的项目明细抽佣比例", description = "参数:下级用户项目明细抽佣更新请求体,权限:管理员,方法名:updateSubUserProjectCommissionRate") + @RequiresPermission(mustRole = UserConstant.DEFAULT_ROLE) + @SysLog(title = "项目明细抽佣管理", content = "小程序用户修改下级用户的项目明细抽佣比例") + public BaseResponse updateSubUserProjectCommissionRate(@Valid @RequestBody SubUserProjectCommissionUpdateRequest subUserProjectCommissionUpdateRequest) { + Long id = subUserProjectCommissionUpdateRequest.getId(); + BigDecimal currentCommissionRate = subUserProjectCommissionUpdateRequest.getCurrentCommissionRate(); + // 校验当前抽佣比例不能大于最大抽佣比例 + SubUserProjectCommission subUserProjectCommission = subUserProjectCommissionService.getById(id); + Long projectDetailId = subUserProjectCommission.getProjectDetailId(); + ProjectDetail projectDetail = projectDetailService.getById(projectDetailId); + BigDecimal maxCommissionRate = projectDetail.getMaxCommissionRate(); + ThrowUtils.throwIf(currentCommissionRate.compareTo(maxCommissionRate) > 0, ErrorCode.OPERATION_ERROR, "当前抽佣比例不能大于最大抽佣比例"); + subUserProjectCommission.setCurrentCommissionRate(currentCommissionRate); + subUserProjectCommissionService.updateById(subUserProjectCommission); + return ResultUtils.success(true); + } + + + /** + * 小程序用户一键设置项目的的抽佣比例 + * @param projectCommissionUniteUpdateRequest 统一抽佣比例 + * @return 是否添加成功 + */ + @PostMapping("update/unite/rate") + @Operation(summary = "小程序用户一键设置项目的的抽佣比例", description = "参数:统一抽佣比例,权限:管理员,方法名:uniteProjectCommissionRate") + @RequiresPermission(mustRole = UserConstant.DEFAULT_ROLE) + @SysLog(title = "项目明细抽佣管理", content = "小程序用户一键设置项目的的抽佣比例") + public BaseResponse uniteProjectCommissionRate(@Valid @RequestBody ProjectCommissionUniteUpdateRequest projectCommissionUniteUpdateRequest, HttpServletRequest request) { + Long userId = (Long) request.getAttribute("userId"); + BigDecimal uniteCommissionRate = projectCommissionUniteUpdateRequest.getUniteCommissionRate(); + LambdaQueryWrapper projectCommissionLambdaQueryWrapper = new LambdaQueryWrapper<>(); + projectCommissionLambdaQueryWrapper.eq(ProjectCommission::getUserId, userId); + List projectCommissionList = projectCommissionService.list(projectCommissionLambdaQueryWrapper); + + List projectDetailList = commonService.findByFieldInTargetField(projectCommissionList, projectDetailService, ProjectCommission::getProjectDetailId, "id"); + // 封装map集合(键:项目明细id, 值:项目明细最大抽佣比例) + Map map = new HashMap<>(); + for (ProjectDetail projectDetail : projectDetailList) { + map.put(projectDetail.getId(), projectDetail.getMaxCommissionRate()); + } + for (ProjectCommission projectCommission : projectCommissionList) { + Long projectDetailId = projectCommission.getProjectDetailId(); + BigDecimal maxCommissionRate = map.get(projectDetailId); + BigDecimal setCommissionRate = uniteCommissionRate.compareTo(maxCommissionRate) > 0 ? maxCommissionRate : uniteCommissionRate; + projectCommission.setCurrentCommissionRate(setCommissionRate); + } + projectCommissionService.updateBatchById(projectCommissionList); + + // 修改下级用户的项目明细抽佣比例 + LambdaQueryWrapper subUserProjectCommissionLambdaQueryWrapper = new LambdaQueryWrapper<>(); + subUserProjectCommissionLambdaQueryWrapper.eq(SubUserProjectCommission::getUserId, userId); + List subUserProjectCommissionList = subUserProjectCommissionService.list(subUserProjectCommissionLambdaQueryWrapper); + for (SubUserProjectCommission subUserProjectCommission : subUserProjectCommissionList) { + Long projectDetailId = subUserProjectCommission.getProjectDetailId(); + BigDecimal maxCommissionRate = map.get(projectDetailId); + BigDecimal setCommissionRate = uniteCommissionRate.compareTo(maxCommissionRate) > 0 ? maxCommissionRate : uniteCommissionRate; + subUserProjectCommission.setCurrentCommissionRate(setCommissionRate); + } + subUserProjectCommissionService.updateBatchById(subUserProjectCommissionList); + return ResultUtils.success(true); + } + + } \ No newline at end of file diff --git a/src/main/java/com/greenorange/promotion/controller/project/ProjectDetailController.java b/src/main/java/com/greenorange/promotion/controller/project/ProjectDetailController.java index a7eb879..0b9573b 100644 --- a/src/main/java/com/greenorange/promotion/controller/project/ProjectDetailController.java +++ b/src/main/java/com/greenorange/promotion/controller/project/ProjectDetailController.java @@ -1,7 +1,6 @@ package com.greenorange.promotion.controller.project; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; -import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.greenorange.promotion.annotation.RequiresPermission; import com.greenorange.promotion.annotation.SysLog; import com.greenorange.promotion.common.BaseResponse; @@ -9,11 +8,8 @@ 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.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.dto.subUserProjectCommission.SubUserProjectCommissionAddRequest; import com.greenorange.promotion.model.entity.*; @@ -22,14 +18,13 @@ 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 com.greenorange.promotion.service.userInfo.UserInfoService; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.tags.Tag; import jakarta.annotation.Resource; 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; diff --git a/src/main/java/com/greenorange/promotion/controller/project/SubUserProjectCommissionController.java b/src/main/java/com/greenorange/promotion/controller/project/SubUserProjectCommissionController.java deleted file mode 100644 index 2165421..0000000 --- a/src/main/java/com/greenorange/promotion/controller/project/SubUserProjectCommissionController.java +++ /dev/null @@ -1,148 +0,0 @@ -package com.greenorange.promotion.controller.project; - -import com.baomidou.mybatisplus.core.conditions.query.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.subUserProjectCommission.SubUserProjectCommissionAddRequest; -import com.greenorange.promotion.model.dto.subUserProjectCommission.SubUserProjectCommissionQueryRequest; -import com.greenorange.promotion.model.dto.subUserProjectCommission.SubUserProjectCommissionUpdateRequest; -import com.greenorange.promotion.model.entity.SubUserProjectCommission; -import com.greenorange.promotion.model.vo.subUserProjectCommission.SubUserProjectCommissionVO; -import com.greenorange.promotion.service.common.CommonService; -import com.greenorange.promotion.service.project.SubUserProjectCommissionService; -import io.swagger.v3.oas.annotations.Operation; -import io.swagger.v3.oas.annotations.tags.Tag; -import jakarta.annotation.Resource; -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.util.List; - - -/** - * 下级用户项目明细抽佣 控制器 - */ -@RestController -@RequestMapping("subUserProjectCommission") -@Slf4j -@Tag(name = "下级用户项目明细抽佣管理") -public class SubUserProjectCommissionController { - - @Resource - private SubUserProjectCommissionService subUserProjectCommissionService; - - @Resource - private CommonService commonService; - - /** - * web端管理员添加下级用户项目明细抽佣 - * @param subUserProjectCommissionAddRequest 下级用户项目明细抽佣添加请求体 - * @return 是否添加成功 - */ - @PostMapping("add") - @Operation(summary = "web端管理员添加下级用户项目明细抽佣", description = "参数:下级用户项目明细抽佣添加请求体,权限:管理员,方法名:addSubUserProjectCommission") - @RequiresPermission(mustRole = UserConstant.ADMIN_ROLE) - @SysLog(title = "下级用户项目明细抽佣管理", content = "web端管理员添加下级用户项目明细抽佣") - public BaseResponse addSubUserProjectCommission(@Valid @RequestBody SubUserProjectCommissionAddRequest subUserProjectCommissionAddRequest) { - SubUserProjectCommission subUserProjectCommission = commonService.copyProperties(subUserProjectCommissionAddRequest, SubUserProjectCommission.class); - subUserProjectCommissionService.save(subUserProjectCommission); - return ResultUtils.success(true); - } - - /** - * web端管理员根据id修改下级用户项目明细抽佣信息 - * @param subUserProjectCommissionUpdateRequest 下级用户项目明细抽佣更新请求体 - * @return 是否更新成功 - */ - @PostMapping("update") - @Operation(summary = "web端管理员更新下级用户项目明细抽佣", description = "参数:下级用户项目明细抽佣更新请求体,权限:管理员,方法名:updateSubUserProjectCommission") - @RequiresPermission(mustRole = UserConstant.ADMIN_ROLE) - @SysLog(title = "下级用户项目明细抽佣管理", content = "web端管理员根据id修改下级用户项目明细抽佣信息") - public BaseResponse updateSubUserProjectCommission(@Valid @RequestBody SubUserProjectCommissionUpdateRequest subUserProjectCommissionUpdateRequest) { - SubUserProjectCommission subUserProjectCommission = commonService.copyProperties(subUserProjectCommissionUpdateRequest, SubUserProjectCommission.class); - subUserProjectCommissionService.updateById(subUserProjectCommission); - return ResultUtils.success(true); - } - - /** - * web端管理员根据id删除下级用户项目明细抽佣 - * @param commonRequest 下级用户项目明细抽佣删除请求体 - * @return 是否删除成功 - */ - @PostMapping("delete") - @Operation(summary = "web端管理员根据id删除下级用户项目明细抽佣", description = "参数:下级用户项目明细抽佣删除请求体,权限:管理员,方法名:delSubUserProjectCommission") - @RequiresPermission(mustRole = UserConstant.ADMIN_ROLE) - @SysLog(title = "下级用户项目明细抽佣管理", content = "web端管理员根据id删除下级用户项目明细抽佣") - public BaseResponse delSubUserProjectCommission(@Valid @RequestBody CommonRequest commonRequest) { - Long id = commonRequest.getId(); - subUserProjectCommissionService.removeById(id); - return ResultUtils.success(true); - } - - /** - * web端管理员批量删除下级用户项目明细抽佣 - * @param commonBatchRequest 下级用户项目明细抽佣批量删除请求体 - * @return 是否删除成功 - */ - @PostMapping("delBatch") - @Operation(summary = "web端管理员批量删除下级用户项目明细抽佣", description = "参数:下级用户项目明细抽佣批量删除请求体,权限:管理员,方法名:delBatchSubUserProjectCommission") - @RequiresPermission(mustRole = UserConstant.ADMIN_ROLE) - @SysLog(title = "下级用户项目明细抽佣管理", content = "web端管理员批量删除下级用户项目明细抽佣") - public BaseResponse delBatchSubUserProjectCommission(@Valid @RequestBody CommonBatchRequest commonBatchRequest) { - List ids = commonBatchRequest.getIds(); - subUserProjectCommissionService.removeByIds(ids); - return ResultUtils.success(true); - } - - /** - * web端管理员根据id查询下级用户项目明细抽佣 - * @param commonRequest 下级用户项目明细抽佣查询请求体 - * @return 下级用户项目明细抽佣信息 - */ - @PostMapping("queryById") - @Operation(summary = "web端管理员根据id查询下级用户项目明细抽佣", description = "参数:下级用户项目明细抽佣查询请求体,权限:管理员,方法名:querySubUserProjectCommissionById") - @RequiresPermission(mustRole = UserConstant.ADMIN_ROLE) - @SysLog(title = "下级用户项目明细抽佣管理", content = "web端管理员根据id查询下级用户项目明细抽佣") - public BaseResponse querySubUserProjectCommissionById(@Valid @RequestBody CommonRequest commonRequest) { - Long id = commonRequest.getId(); - SubUserProjectCommission subUserProjectCommission = subUserProjectCommissionService.getById(id); - ThrowUtils.throwIf(subUserProjectCommission == null, ErrorCode.OPERATION_ERROR, "当前下级用户项目明细抽佣不存在"); - SubUserProjectCommissionVO subUserProjectCommissionVO = commonService.copyProperties(subUserProjectCommission, SubUserProjectCommissionVO.class); - return ResultUtils.success(subUserProjectCommissionVO); - } - -// /** -// * Web端管理员分页查询下级用户项目明细抽佣 -// * @param subUserProjectCommissionQueryRequest 下级用户项目明细抽佣查询请求体 -// * @return 下级用户项目明细抽佣列表 -// */ -// @PostMapping("page") -// @Operation(summary = "Web端管理员分页查询下级用户项目明细抽佣", description = "参数:下级用户项目明细抽佣查询请求体,权限:管理员,方法名:listSubUserProjectCommissionByPage") -// @RequiresPermission(mustRole = UserConstant.ADMIN_ROLE) -// @SysLog(title = "下级用户项目明细抽佣管理", content = "Web端管理员分页查询下级用户项目明细抽佣") -// public BaseResponse> listSubUserProjectCommissionByPage(@Valid @RequestBody SubUserProjectCommissionQueryRequest subUserProjectCommissionQueryRequest) { -// long current = subUserProjectCommissionQueryRequest.getCurrent(); -// long pageSize = subUserProjectCommissionQueryRequest.getPageSize(); -// QueryWrapper queryWrapper = subUserProjectCommissionService.getQueryWrapper(subUserProjectCommissionQueryRequest); -// Page page = subUserProjectCommissionService.page(new Page<>(current, pageSize), queryWrapper); -// List subUserProjectCommissionList = page.getRecords(); -// List subUserProjectCommissionVOList = commonService.convertList(subUserProjectCommissionList, SubUserProjectCommissionVO.class); -// Page voPage = new Page<>(current, pageSize); -// voPage.setRecords(subUserProjectCommissionVOList); -// voPage.setPages(page.getPages()); -// voPage.setTotal(page.getTotal()); -// return ResultUtils.success(voPage); -// } -} \ No newline at end of file diff --git a/src/main/java/com/greenorange/promotion/controller/projectSettlement/ProjectSettlementController.java b/src/main/java/com/greenorange/promotion/controller/projectSettlement/ProjectSettlementController.java index 440f5b0..d6ff70d 100644 --- a/src/main/java/com/greenorange/promotion/controller/projectSettlement/ProjectSettlementController.java +++ b/src/main/java/com/greenorange/promotion/controller/projectSettlement/ProjectSettlementController.java @@ -8,7 +8,6 @@ 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.projectSettlement.ProjectSettlementAddRequest; import com.greenorange.promotion.model.dto.projectSettlement.ProjectSettlementUpdateRequest; @@ -18,8 +17,7 @@ import com.greenorange.promotion.service.common.CommonService; import com.greenorange.promotion.service.project.PromoCodeApplyService; import com.greenorange.promotion.service.settle.FundsChangeService; import com.greenorange.promotion.service.settle.ProjectSettlementService; -import com.greenorange.promotion.service.user.UserInfoService; -import com.greenorange.promotion.service.user.UserMainInfoService; +import com.greenorange.promotion.service.userInfo.UserMainInfoService; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.tags.Tag; import jakarta.annotation.Resource; diff --git a/src/main/java/com/greenorange/promotion/controller/projectSettlement/WithdrawalApplyController.java b/src/main/java/com/greenorange/promotion/controller/projectSettlement/WithdrawalApplyController.java index a4d578c..376f3d1 100644 --- a/src/main/java/com/greenorange/promotion/controller/projectSettlement/WithdrawalApplyController.java +++ b/src/main/java/com/greenorange/promotion/controller/projectSettlement/WithdrawalApplyController.java @@ -5,33 +5,25 @@ import com.baomidou.mybatisplus.core.conditions.query.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.withdrawalApply.WithdrawalApplyAddRequest; import com.greenorange.promotion.model.dto.withdrawalApply.WithdrawalApplyQueryRequest; -import com.greenorange.promotion.model.dto.withdrawalApply.WithdrawalApplyUpdateRequest; import com.greenorange.promotion.model.entity.FundsChange; -import com.greenorange.promotion.model.entity.UserInfo; import com.greenorange.promotion.model.entity.WithdrawalApply; import com.greenorange.promotion.model.vo.fundsChange.FundsChangeVO; import com.greenorange.promotion.model.vo.withdrawalApply.WithdrawalApplyVO; import com.greenorange.promotion.service.common.CommonService; import com.greenorange.promotion.service.settle.FundsChangeService; import com.greenorange.promotion.service.settle.WithdrawalApplyService; -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; import jakarta.servlet.http.HttpServletRequest; -import lombok.With; 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; diff --git a/src/main/java/com/greenorange/promotion/controller/userInfo/UserInfoController.java b/src/main/java/com/greenorange/promotion/controller/userInfo/UserInfoController.java index d5255e6..3bd6826 100644 --- a/src/main/java/com/greenorange/promotion/controller/userInfo/UserInfoController.java +++ b/src/main/java/com/greenorange/promotion/controller/userInfo/UserInfoController.java @@ -14,14 +14,14 @@ 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.CommonStringRequest; -import com.greenorange.promotion.model.dto.user.*; +import com.greenorange.promotion.model.dto.userInfo.*; import com.greenorange.promotion.model.entity.UserInfo; import com.greenorange.promotion.model.entity.UserMainInfo; -import com.greenorange.promotion.model.vo.user.UserInfoVO; +import com.greenorange.promotion.model.vo.userInfo.UserInfoVO; import com.greenorange.promotion.model.vo.userMainInfo.UserMainInfoVO; import com.greenorange.promotion.service.common.CommonService; -import com.greenorange.promotion.service.user.UserInfoService; -import com.greenorange.promotion.service.user.UserMainInfoService; +import com.greenorange.promotion.service.userInfo.UserInfoService; +import com.greenorange.promotion.service.userInfo.UserMainInfoService; import com.greenorange.promotion.utils.JWTUtils; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.tags.Tag; diff --git a/src/main/java/com/greenorange/promotion/controller/userInfo/UserMainInfoController.java b/src/main/java/com/greenorange/promotion/controller/userInfo/UserMainInfoController.java index 6165b6f..4bed5e9 100644 --- a/src/main/java/com/greenorange/promotion/controller/userInfo/UserMainInfoController.java +++ b/src/main/java/com/greenorange/promotion/controller/userInfo/UserMainInfoController.java @@ -13,10 +13,11 @@ import com.greenorange.promotion.model.dto.userMainInfo.UserMainInfoUpdateReques import com.greenorange.promotion.model.entity.UserMainInfo; import com.greenorange.promotion.model.vo.userMainInfo.UserMainInfoVO; import com.greenorange.promotion.service.common.CommonService; -import com.greenorange.promotion.service.user.UserMainInfoService; +import com.greenorange.promotion.service.userInfo.UserMainInfoService; 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 lombok.extern.slf4j.Slf4j; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; @@ -43,6 +44,21 @@ public class UserMainInfoController { @Resource private CommonService commonService; + + /** + * 小程序用户查询团队信息 + * @return 团队信息 + */ + @PostMapping("query/team") + @Operation(summary = "小程序用户查询团队信息", description = "参数:用户主要信息添加请求体,权限:管理员,方法名:queryUserTeamInfo") + @RequiresPermission(mustRole = UserConstant.DEFAULT_ROLE) + @SysLog(title = "用户主要信息管理", content = "小程序用户查询团队信息") + public BaseResponse queryUserTeamInfo(HttpServletRequest request) { + Long userId = (Long) request.getAttribute("userId"); + return ResultUtils.success(true); + } + + /** * web端管理员添加用户主要信息 * @param userMainInfoAddRequest 用户主要信息添加请求体 diff --git a/src/main/java/com/greenorange/promotion/model/dto/projectCommission/ProjectCommissionUniteUpdateRequest.java b/src/main/java/com/greenorange/promotion/model/dto/projectCommission/ProjectCommissionUniteUpdateRequest.java new file mode 100644 index 0000000..804813c --- /dev/null +++ b/src/main/java/com/greenorange/promotion/model/dto/projectCommission/ProjectCommissionUniteUpdateRequest.java @@ -0,0 +1,25 @@ +package com.greenorange.promotion.model.dto.projectCommission; + +import io.swagger.v3.oas.annotations.media.Schema; +import jakarta.validation.constraints.Min; +import lombok.Data; + +import java.io.Serial; +import java.io.Serializable; +import java.math.BigDecimal; + +@Data +public class ProjectCommissionUniteUpdateRequest implements Serializable { + + /** + * 统一抽佣比例 + */ + @Min(value = 0L, message = "抽佣比例不能小于0") + @Schema(description = "统一抽佣比例", example = "5") + private BigDecimal uniteCommissionRate; + + + @Serial + private static final long serialVersionUID = 1L; + +} diff --git a/src/main/java/com/greenorange/promotion/model/dto/projectCommission/ProjectCommissionUpdateRequest.java b/src/main/java/com/greenorange/promotion/model/dto/projectCommission/ProjectCommissionUpdateRequest.java index 4ac1814..4f6cde4 100644 --- a/src/main/java/com/greenorange/promotion/model/dto/projectCommission/ProjectCommissionUpdateRequest.java +++ b/src/main/java/com/greenorange/promotion/model/dto/projectCommission/ProjectCommissionUpdateRequest.java @@ -15,11 +15,7 @@ import java.math.BigDecimal; @Data @Schema(description = "项目明细抽佣更新请求体", requiredProperties = { "id", - "projectDetailId", - "myUnitPrice", - "currentCommissionRate", - "projectId", - "userId", + "currentCommissionRate" }) public class ProjectCommissionUpdateRequest implements Serializable { @@ -30,39 +26,14 @@ public class ProjectCommissionUpdateRequest implements Serializable { @Schema(description = "抽佣记录ID", example = "1") private Long id; - /** - * 项目明细ID - */ - @Min(value = 1L, message = "项目明细ID ID不能小于1") - @Schema(description = "项目明细ID", example = "1") - private Long projectDetailId; - - /** - * 我的单价 - */ - @Schema(description = "我的单价", example = "0.45") - private BigDecimal myUnitPrice; /** * 当前抽佣比例 */ + @Min(value = 0L, message = "抽佣比例不能小于0") @Schema(description = "当前抽佣比例", example = "5") private BigDecimal currentCommissionRate; - /** - * 项目ID - */ - @Min(value = 1L, message = "项目ID ID不能小于1") - @Schema(description = "项目ID", example = "1") - private Long projectId; - - /** - * 用户ID - */ - @Min(value = 1L, message = "用户ID ID不能小于1") - @Schema(description = "用户ID", example = "1") - private Long userId; - @Serial private static final long serialVersionUID = 1L; diff --git a/src/main/java/com/greenorange/promotion/model/dto/subUserProjectCommission/SubUserProjectCommissionUpdateRequest.java b/src/main/java/com/greenorange/promotion/model/dto/subUserProjectCommission/SubUserProjectCommissionUpdateRequest.java index a65c163..272a070 100644 --- a/src/main/java/com/greenorange/promotion/model/dto/subUserProjectCommission/SubUserProjectCommissionUpdateRequest.java +++ b/src/main/java/com/greenorange/promotion/model/dto/subUserProjectCommission/SubUserProjectCommissionUpdateRequest.java @@ -15,12 +15,7 @@ import java.math.BigDecimal; @Data @Schema(description = "下级用户项目明细抽佣更新请求体", requiredProperties = { "id", - "projectDetailId", - "myUnitPrice", "currentCommissionRate", - "subUserId", - "projectId", - "userId", }) public class SubUserProjectCommissionUpdateRequest implements Serializable { @@ -31,46 +26,12 @@ public class SubUserProjectCommissionUpdateRequest implements Serializable { @Schema(description = "下级用户抽佣记录ID", example = "1") private Long id; - /** - * 项目明细ID - */ - @Min(value = 1L, message = "项目明细ID ID不能小于1") - @Schema(description = "项目明细ID", example = "1") - private Long projectDetailId; - - /** - * 我的单价 - */ - @Schema(description = "我的单价", example = "0.24") - private BigDecimal myUnitPrice; - /** * 当前抽佣比例 */ @Schema(description = "当前抽佣比例", example = "4") private BigDecimal currentCommissionRate; - /** - * 下级用户ID - */ - @Min(value = 1L, message = "下级用户ID ID不能小于1") - @Schema(description = "下级用户ID", example = "2") - private Long subUserId; - - /** - * 项目ID - */ - @Min(value = 1L, message = "项目ID ID不能小于1") - @Schema(description = "项目ID", example = "1") - private Long projectId; - - /** - * 用户ID - */ - @Min(value = 1L, message = "用户ID ID不能小于1") - @Schema(description = "用户ID", example = "1") - private Long userId; - @Serial private static final long serialVersionUID = 1L; diff --git a/src/main/java/com/greenorange/promotion/model/dto/user/UserInfoAddRequest.java b/src/main/java/com/greenorange/promotion/model/dto/userInfo/UserInfoAddRequest.java similarity index 94% rename from src/main/java/com/greenorange/promotion/model/dto/user/UserInfoAddRequest.java rename to src/main/java/com/greenorange/promotion/model/dto/userInfo/UserInfoAddRequest.java index 42151b1..0faabed 100644 --- a/src/main/java/com/greenorange/promotion/model/dto/user/UserInfoAddRequest.java +++ b/src/main/java/com/greenorange/promotion/model/dto/userInfo/UserInfoAddRequest.java @@ -1,14 +1,11 @@ -package com.greenorange.promotion.model.dto.user; +package com.greenorange.promotion.model.dto.userInfo; import com.greenorange.promotion.annotation.UserEnumValue; import com.greenorange.promotion.model.enums.UserRoleEnum; import io.swagger.v3.oas.annotations.media.Schema; import jakarta.validation.constraints.NotBlank; import jakarta.validation.constraints.Size; -import lombok.AllArgsConstructor; -import lombok.Builder; import lombok.Data; -import lombok.NoArgsConstructor; import java.io.Serial; import java.io.Serializable; diff --git a/src/main/java/com/greenorange/promotion/model/dto/user/UserInfoLoginRequest.java b/src/main/java/com/greenorange/promotion/model/dto/userInfo/UserInfoLoginRequest.java similarity index 94% rename from src/main/java/com/greenorange/promotion/model/dto/user/UserInfoLoginRequest.java rename to src/main/java/com/greenorange/promotion/model/dto/userInfo/UserInfoLoginRequest.java index 00fc299..b5596b5 100644 --- a/src/main/java/com/greenorange/promotion/model/dto/user/UserInfoLoginRequest.java +++ b/src/main/java/com/greenorange/promotion/model/dto/userInfo/UserInfoLoginRequest.java @@ -1,4 +1,4 @@ -package com.greenorange.promotion.model.dto.user; +package com.greenorange.promotion.model.dto.userInfo; import io.swagger.v3.oas.annotations.media.Schema; import jakarta.validation.constraints.NotBlank; diff --git a/src/main/java/com/greenorange/promotion/model/dto/user/UserInfoMiniPasswordLoginRequest.java b/src/main/java/com/greenorange/promotion/model/dto/userInfo/UserInfoMiniPasswordLoginRequest.java similarity index 94% rename from src/main/java/com/greenorange/promotion/model/dto/user/UserInfoMiniPasswordLoginRequest.java rename to src/main/java/com/greenorange/promotion/model/dto/userInfo/UserInfoMiniPasswordLoginRequest.java index 0fe0b9f..d88c131 100644 --- a/src/main/java/com/greenorange/promotion/model/dto/user/UserInfoMiniPasswordLoginRequest.java +++ b/src/main/java/com/greenorange/promotion/model/dto/userInfo/UserInfoMiniPasswordLoginRequest.java @@ -1,4 +1,4 @@ -package com.greenorange.promotion.model.dto.user; +package com.greenorange.promotion.model.dto.userInfo; import io.swagger.v3.oas.annotations.media.Schema; import jakarta.validation.constraints.NotBlank; diff --git a/src/main/java/com/greenorange/promotion/model/dto/user/UserInfoMiniVerifyCodeLoginRequest.java b/src/main/java/com/greenorange/promotion/model/dto/userInfo/UserInfoMiniVerifyCodeLoginRequest.java similarity index 94% rename from src/main/java/com/greenorange/promotion/model/dto/user/UserInfoMiniVerifyCodeLoginRequest.java rename to src/main/java/com/greenorange/promotion/model/dto/userInfo/UserInfoMiniVerifyCodeLoginRequest.java index 978abe0..a1a405c 100644 --- a/src/main/java/com/greenorange/promotion/model/dto/user/UserInfoMiniVerifyCodeLoginRequest.java +++ b/src/main/java/com/greenorange/promotion/model/dto/userInfo/UserInfoMiniVerifyCodeLoginRequest.java @@ -1,4 +1,4 @@ -package com.greenorange.promotion.model.dto.user; +package com.greenorange.promotion.model.dto.userInfo; import io.swagger.v3.oas.annotations.media.Schema; import jakarta.validation.constraints.NotBlank; diff --git a/src/main/java/com/greenorange/promotion/model/dto/user/UserInfoQueryRequest.java b/src/main/java/com/greenorange/promotion/model/dto/userInfo/UserInfoQueryRequest.java similarity index 85% rename from src/main/java/com/greenorange/promotion/model/dto/user/UserInfoQueryRequest.java rename to src/main/java/com/greenorange/promotion/model/dto/userInfo/UserInfoQueryRequest.java index d7031c8..b47e45c 100644 --- a/src/main/java/com/greenorange/promotion/model/dto/user/UserInfoQueryRequest.java +++ b/src/main/java/com/greenorange/promotion/model/dto/userInfo/UserInfoQueryRequest.java @@ -1,9 +1,7 @@ -package com.greenorange.promotion.model.dto.user; +package com.greenorange.promotion.model.dto.userInfo; import io.swagger.v3.oas.annotations.media.Schema; import jakarta.validation.constraints.Min; -import jakarta.validation.constraints.NotBlank; -import jakarta.validation.constraints.NotNull; import lombok.Data; import java.io.Serial; import java.io.Serializable; diff --git a/src/main/java/com/greenorange/promotion/model/dto/user/UserInfoRegisterRequest.java b/src/main/java/com/greenorange/promotion/model/dto/userInfo/UserInfoRegisterRequest.java similarity index 96% rename from src/main/java/com/greenorange/promotion/model/dto/user/UserInfoRegisterRequest.java rename to src/main/java/com/greenorange/promotion/model/dto/userInfo/UserInfoRegisterRequest.java index 2fe908b..1f59571 100644 --- a/src/main/java/com/greenorange/promotion/model/dto/user/UserInfoRegisterRequest.java +++ b/src/main/java/com/greenorange/promotion/model/dto/userInfo/UserInfoRegisterRequest.java @@ -1,4 +1,4 @@ -package com.greenorange.promotion.model.dto.user; +package com.greenorange.promotion.model.dto.userInfo; import io.swagger.v3.oas.annotations.media.Schema; import jakarta.validation.constraints.NotBlank; diff --git a/src/main/java/com/greenorange/promotion/model/dto/user/UserInfoResetRequest.java b/src/main/java/com/greenorange/promotion/model/dto/userInfo/UserInfoResetRequest.java similarity index 96% rename from src/main/java/com/greenorange/promotion/model/dto/user/UserInfoResetRequest.java rename to src/main/java/com/greenorange/promotion/model/dto/userInfo/UserInfoResetRequest.java index 56eeb20..728a428 100644 --- a/src/main/java/com/greenorange/promotion/model/dto/user/UserInfoResetRequest.java +++ b/src/main/java/com/greenorange/promotion/model/dto/userInfo/UserInfoResetRequest.java @@ -1,4 +1,4 @@ -package com.greenorange.promotion.model.dto.user; +package com.greenorange.promotion.model.dto.userInfo; import io.swagger.v3.oas.annotations.media.Schema; import jakarta.validation.constraints.NotBlank; diff --git a/src/main/java/com/greenorange/promotion/model/dto/user/UserInfoUpdateRequest.java b/src/main/java/com/greenorange/promotion/model/dto/userInfo/UserInfoUpdateRequest.java similarity index 97% rename from src/main/java/com/greenorange/promotion/model/dto/user/UserInfoUpdateRequest.java rename to src/main/java/com/greenorange/promotion/model/dto/userInfo/UserInfoUpdateRequest.java index b8c085b..07614cf 100644 --- a/src/main/java/com/greenorange/promotion/model/dto/user/UserInfoUpdateRequest.java +++ b/src/main/java/com/greenorange/promotion/model/dto/userInfo/UserInfoUpdateRequest.java @@ -1,4 +1,4 @@ -package com.greenorange.promotion.model.dto.user; +package com.greenorange.promotion.model.dto.userInfo; import com.greenorange.promotion.annotation.UserEnumValue; import com.greenorange.promotion.model.enums.UserRoleEnum; diff --git a/src/main/java/com/greenorange/promotion/model/vo/projectCommission/ProjectDetailCommissionVO.java b/src/main/java/com/greenorange/promotion/model/vo/projectCommission/ProjectDetailCommissionVO.java index 61d3c4b..a6750a1 100644 --- a/src/main/java/com/greenorange/promotion/model/vo/projectCommission/ProjectDetailCommissionVO.java +++ b/src/main/java/com/greenorange/promotion/model/vo/projectCommission/ProjectDetailCommissionVO.java @@ -40,6 +40,12 @@ public class ProjectDetailCommissionVO implements Serializable { @Schema(description = "当前抽佣比例", example = "3") private BigDecimal currentCommissionRate; + /** + * 最大抽佣比例 + */ + @Schema(description = "最大抽佣比例", example = "2") + private BigDecimal maxCommissionRate; + /** * 项目id */ diff --git a/src/main/java/com/greenorange/promotion/model/vo/subUserProjectCommission/SubUserProjectCommissionVO.java b/src/main/java/com/greenorange/promotion/model/vo/subUserProjectCommission/SubUserProjectCommissionVO.java index 5d17372..8d7f0d6 100644 --- a/src/main/java/com/greenorange/promotion/model/vo/subUserProjectCommission/SubUserProjectCommissionVO.java +++ b/src/main/java/com/greenorange/promotion/model/vo/subUserProjectCommission/SubUserProjectCommissionVO.java @@ -1,60 +1,43 @@ package com.greenorange.promotion.model.vo.subUserProjectCommission; import io.swagger.v3.oas.annotations.media.Schema; +import lombok.AllArgsConstructor; +import lombok.Builder; import lombok.Data; +import lombok.NoArgsConstructor; import java.io.Serial; import java.io.Serializable; import java.math.BigDecimal; +import java.util.List; /** * 下级用户项目明细抽佣 视图对象 */ @Data @Schema(description = "下级用户项目明细抽佣 视图对象") +@NoArgsConstructor +@AllArgsConstructor +@Builder public class SubUserProjectCommissionVO 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 */ - @Schema(description = "下级用户ID", example = "${field.example}") + @Schema(description = "下级用户ID", example = "5") private Long subUserId; /** - * 项目ID + * 下级用户昵称 */ - @Schema(description = "项目ID", example = "${field.example}") - private Long projectId; + @Schema(description = "下级用户昵称", example = "caozhe") + private String subUserNickName; /** - * 用户ID + * 下级用户的项目明细抽佣列表 */ - @Schema(description = "用户ID", example = "${field.example}") - private Long userId; + @Schema(description = "下级用户项目明细抽佣列表") + private List subUserProjectDetailCommissionVOList; @Serial diff --git a/src/main/java/com/greenorange/promotion/model/vo/subUserProjectCommission/SubUserProjectDetailCommissionVO.java b/src/main/java/com/greenorange/promotion/model/vo/subUserProjectCommission/SubUserProjectDetailCommissionVO.java new file mode 100644 index 0000000..9851c28 --- /dev/null +++ b/src/main/java/com/greenorange/promotion/model/vo/subUserProjectCommission/SubUserProjectDetailCommissionVO.java @@ -0,0 +1,63 @@ +package com.greenorange.promotion.model.vo.subUserProjectCommission; + +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 SubUserProjectDetailCommissionVO 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; + + /** + * 最大抽佣比例 + */ + @Schema(description = "最大抽佣比例", example = "2") + private BigDecimal maxCommissionRate; + + /** + * 项目id + */ + @Schema(description = "项目id", example = "1") + private Long projectId; + + /** + * 下级用户ID + */ + @Schema(description = "下级用户ID", example = "5") + private Long subUserId; + + @Serial + private static final long serialVersionUID = 1L; +} diff --git a/src/main/java/com/greenorange/promotion/model/vo/user/UserInfoVO.java b/src/main/java/com/greenorange/promotion/model/vo/userInfo/UserInfoVO.java similarity index 92% rename from src/main/java/com/greenorange/promotion/model/vo/user/UserInfoVO.java rename to src/main/java/com/greenorange/promotion/model/vo/userInfo/UserInfoVO.java index ce67099..91d28e8 100644 --- a/src/main/java/com/greenorange/promotion/model/vo/user/UserInfoVO.java +++ b/src/main/java/com/greenorange/promotion/model/vo/userInfo/UserInfoVO.java @@ -1,8 +1,6 @@ -package com.greenorange.promotion.model.vo.user; +package com.greenorange.promotion.model.vo.userInfo; import io.swagger.v3.oas.annotations.media.Schema; -import jakarta.validation.constraints.NotBlank; -import jakarta.validation.constraints.Size; import lombok.Data; import java.io.Serial; diff --git a/src/main/java/com/greenorange/promotion/model/vo/userMainInfo/UserTeamInfoVO.java b/src/main/java/com/greenorange/promotion/model/vo/userMainInfo/UserTeamInfoVO.java new file mode 100644 index 0000000..476040d --- /dev/null +++ b/src/main/java/com/greenorange/promotion/model/vo/userMainInfo/UserTeamInfoVO.java @@ -0,0 +1,67 @@ +package com.greenorange.promotion.model.vo.userMainInfo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +import java.io.Serial; +import java.io.Serializable; +import java.math.BigDecimal; + +@Data +@Schema(description = "用户团队信息 视图对象") +public class UserTeamInfoVO implements Serializable { + + /** + * 用户主要信息ID + */ + @Schema(description = "用户主要信息ID", example = "1") + private Long id; + + /** + * 团队人数(不包括自己) + */ + @Schema(description = "团队人数(不包括自己)", example = "${field.example}") + private Integer teamSize; + + /** + * 给上级带来的收益 + */ + @Schema(description = "给上级带来的收益", example = "${field.example}") + private BigDecimal parentEarnings; + + /** + * 当前余额 + */ + @Schema(description = "当前余额", example = "${field.example}") + private BigDecimal currentBalance; + + /** + * 提现中的金额 + */ + @Schema(description = "提现中的金额", example = "${field.example}") + private BigDecimal withdrawalAmount; + + /** + * 已提现的金额 + */ + @Schema(description = "已提现的金额", example = "${field.example}") + private BigDecimal withdrawnAmount; + + /** + * 累计收入 + */ + @Schema(description = "累计收入", example = "${field.example}") + private BigDecimal totalIncome; + + + /** + * 邀请二维码 + */ + @Schema(description = "邀请二维码", example = "${field.example}") + private String inviteQrCode; + + + @Serial + private static final long serialVersionUID = 1L; + +} diff --git a/src/main/java/com/greenorange/promotion/service/user/UserInfoService.java b/src/main/java/com/greenorange/promotion/service/userInfo/UserInfoService.java similarity index 89% rename from src/main/java/com/greenorange/promotion/service/user/UserInfoService.java rename to src/main/java/com/greenorange/promotion/service/userInfo/UserInfoService.java index 2766679..3c0168e 100644 --- a/src/main/java/com/greenorange/promotion/service/user/UserInfoService.java +++ b/src/main/java/com/greenorange/promotion/service/userInfo/UserInfoService.java @@ -1,10 +1,9 @@ -package com.greenorange.promotion.service.user; +package com.greenorange.promotion.service.userInfo; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; -import com.greenorange.promotion.model.dto.user.*; +import com.greenorange.promotion.model.dto.userInfo.*; import com.greenorange.promotion.model.entity.UserInfo; import com.baomidou.mybatisplus.extension.service.IService; -import jakarta.servlet.http.HttpServletRequest; /** * @author 35880 diff --git a/src/main/java/com/greenorange/promotion/service/user/UserMainInfoService.java b/src/main/java/com/greenorange/promotion/service/userInfo/UserMainInfoService.java similarity index 86% rename from src/main/java/com/greenorange/promotion/service/user/UserMainInfoService.java rename to src/main/java/com/greenorange/promotion/service/userInfo/UserMainInfoService.java index c44e0e2..75184da 100644 --- a/src/main/java/com/greenorange/promotion/service/user/UserMainInfoService.java +++ b/src/main/java/com/greenorange/promotion/service/userInfo/UserMainInfoService.java @@ -1,4 +1,4 @@ -package com.greenorange.promotion.service.user; +package com.greenorange.promotion.service.userInfo; import com.greenorange.promotion.model.entity.UserMainInfo; import com.baomidou.mybatisplus.extension.service.IService; diff --git a/src/main/java/com/greenorange/promotion/service/user/impl/UserInfoServiceImpl.java b/src/main/java/com/greenorange/promotion/service/userInfo/impl/UserInfoServiceImpl.java similarity index 96% rename from src/main/java/com/greenorange/promotion/service/user/impl/UserInfoServiceImpl.java rename to src/main/java/com/greenorange/promotion/service/userInfo/impl/UserInfoServiceImpl.java index 300c3eb..0368480 100644 --- a/src/main/java/com/greenorange/promotion/service/user/impl/UserInfoServiceImpl.java +++ b/src/main/java/com/greenorange/promotion/service/userInfo/impl/UserInfoServiceImpl.java @@ -1,10 +1,9 @@ -package com.greenorange.promotion.service.user.impl; +package com.greenorange.promotion.service.userInfo.impl; import cn.hutool.core.util.RandomUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; -import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.greenorange.promotion.common.ErrorCode; import com.greenorange.promotion.constant.CommonConstant; @@ -12,13 +11,13 @@ import com.greenorange.promotion.constant.SystemConstant; import com.greenorange.promotion.constant.UserConstant; import com.greenorange.promotion.exception.ThrowUtils; import com.greenorange.promotion.mapper.UserInfoMapper; -import com.greenorange.promotion.model.dto.user.*; +import com.greenorange.promotion.model.dto.userInfo.*; import com.greenorange.promotion.model.entity.UserInfo; import com.greenorange.promotion.model.entity.UserMainInfo; import com.greenorange.promotion.model.enums.UserRoleEnum; import com.greenorange.promotion.service.common.CommonService; -import com.greenorange.promotion.service.user.UserInfoService; -import com.greenorange.promotion.service.user.UserMainInfoService; +import com.greenorange.promotion.service.userInfo.UserInfoService; +import com.greenorange.promotion.service.userInfo.UserMainInfoService; import com.greenorange.promotion.service.wechat.WechatGetQrcodeService; import com.greenorange.promotion.utils.JWTUtils; import com.greenorange.promotion.utils.RegexUtils; @@ -26,7 +25,6 @@ import com.greenorange.promotion.utils.SendSmsUtil; import com.greenorange.promotion.utils.SqlUtils; import jakarta.annotation.Resource; import org.apache.commons.lang3.StringUtils; -import org.springframework.beans.BeanUtils; import org.springframework.data.redis.core.RedisTemplate; import org.springframework.stereotype.Service; diff --git a/src/main/java/com/greenorange/promotion/service/user/impl/UserMainInfoServiceImpl.java b/src/main/java/com/greenorange/promotion/service/userInfo/impl/UserMainInfoServiceImpl.java similarity index 80% rename from src/main/java/com/greenorange/promotion/service/user/impl/UserMainInfoServiceImpl.java rename to src/main/java/com/greenorange/promotion/service/userInfo/impl/UserMainInfoServiceImpl.java index f7915ce..a04a69f 100644 --- a/src/main/java/com/greenorange/promotion/service/user/impl/UserMainInfoServiceImpl.java +++ b/src/main/java/com/greenorange/promotion/service/userInfo/impl/UserMainInfoServiceImpl.java @@ -1,8 +1,8 @@ -package com.greenorange.promotion.service.user.impl; +package com.greenorange.promotion.service.userInfo.impl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.greenorange.promotion.model.entity.UserMainInfo; -import com.greenorange.promotion.service.user.UserMainInfoService; +import com.greenorange.promotion.service.userInfo.UserMainInfoService; import com.greenorange.promotion.mapper.UserMainInfoMapper; import org.springframework.stereotype.Service;