From 138dfb39ff8e9724e1c4fa78aa0523dce37b95ff Mon Sep 17 00:00:00 2001 From: chen-xin-zhi <3588068430@qq.com> Date: Sun, 11 May 2025 10:13:44 +0800 Subject: [PATCH] =?UTF-8?q?=E5=B7=B2=E5=AE=8C=E6=88=90=E5=B0=8F=E7=A8=8B?= =?UTF-8?q?=E5=BA=8F=E7=AB=AF=E7=9A=84=E9=A1=B9=E7=9B=AE=E6=9F=A5=E8=AF=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/project/ProjectController.java | 53 ++++-- .../project/PromoCodeApplyController.java | 179 +++++++++--------- .../model/entity/PromoCodeApply.java | 7 + .../promotion/model/entity/UserProject.java | 7 + .../model/vo/userProject/UserProjectVO.java | 6 - .../project/PromoCodeApplyService.java | 7 + .../impl/PromoCodeApplyServiceImpl.java | 19 ++ 7 files changed, 167 insertions(+), 111 deletions(-) diff --git a/src/main/java/com/greenorange/promotion/controller/project/ProjectController.java b/src/main/java/com/greenorange/promotion/controller/project/ProjectController.java index 55e34a6..a635925 100644 --- a/src/main/java/com/greenorange/promotion/controller/project/ProjectController.java +++ b/src/main/java/com/greenorange/promotion/controller/project/ProjectController.java @@ -22,11 +22,13 @@ import com.greenorange.promotion.model.vo.project.ProjectDetailVO; import com.greenorange.promotion.model.vo.project.ProjectPageVO; import com.greenorange.promotion.model.vo.project.ProjectVO; import com.greenorange.promotion.model.vo.projectNotification.ProjectNotificationVO; +import com.greenorange.promotion.model.vo.userProject.UserProjectVO; import com.greenorange.promotion.service.common.CommonService; import com.greenorange.promotion.service.project.*; 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; @@ -67,6 +69,10 @@ public class ProjectController { @Resource private SubUserProjectCommissionService subUserProjectCommissionService; + @Resource + private UserProjectService userProjectService; + + /** * 小程序用户查看项目列表 @@ -110,23 +116,23 @@ public class ProjectController { return ResultUtils.success(projectDetailVO); } -// /** -// * 小程序用户申请推广码 -// * @param promoCodeApplyRequest 推广码申请请求体 -// * @return 项目详情 -// */ -// @PostMapping("query/id") -// @Operation(summary = "小程序用户申请推广码", description = "参数:无,权限:管理员,方法名:applyPromoCode") -// @RequiresPermission(mustRole = UserConstant.DEFAULT_ROLE) -// @SysLog(title = "项目管理", content = "小程序用户申请推广码") -// public BaseResponse applyPromoCode(@Valid @RequestBody PromoCodeApplyRequest promoCodeApplyRequest) { -// // 取出当前项目的推广码 -// Long projectId = promoCodeApplyRequest.getProjectId(); -// LambdaQueryWrapper promoCodeLambdaQueryWrapper = new LambdaQueryWrapper<>(); -// promoCodeLambdaQueryWrapper.eq(PromoCode::getProjectId, projectId); -// List promoCodeList = promoCodeService.list(promoCodeLambdaQueryWrapper); -// return ResultUtils.success(projectDetailVO); -// } + + /** + * 小程序用户查看正在推广的项目 + * @return 推广的项目列表 + */ + @PostMapping("get/running") + @Operation(summary = "小程序用户查看项目列表", description = "参数:无,权限:管理员,方法名:queryUserProjectList") + @RequiresPermission(mustRole = UserConstant.DEFAULT_ROLE) + @SysLog(title = "项目管理", content = "小程序用户查看项目列表") + public BaseResponse> queryUserProjectList(HttpServletRequest request) { + Long userId = (Long) request.getAttribute("userId"); + LambdaQueryWrapper lambdaQueryWrapper = new LambdaQueryWrapper<>(); + lambdaQueryWrapper.eq(UserProject::getUserId, userId); + List userProjectList = userProjectService.list(lambdaQueryWrapper); + List userProjectVOS = commonService.convertList(userProjectList, UserProjectVO.class); + return ResultUtils.success(userProjectVOS); + } @@ -157,6 +163,16 @@ public class ProjectController { public BaseResponse updateProject(@Valid @RequestBody ProjectUpdateRequest projectUpdateRequest) { Project project = commonService.copyProperties(projectUpdateRequest, Project.class); projectService.updateById(project); + // 批量修改用户项目记录 + LambdaQueryWrapper userProjectLambdaQueryWrapper = new LambdaQueryWrapper<>(); + userProjectLambdaQueryWrapper.eq(UserProject::getProjectId, project.getId()); + List userProjectList = userProjectService.list(userProjectLambdaQueryWrapper); + for (UserProject userProject : userProjectList) { + userProject.setProjectName(project.getProjectName()); + userProject.setProjectImage(project.getProjectImage()); + userProject.setProjectSettlementCycle(project.getProjectSettlementCycle()); + } + userProjectService.updateBatchById(userProjectList); return ResultUtils.success(true); } @@ -187,6 +203,9 @@ public class ProjectController { LambdaQueryWrapper subUserProjectCommissionLambdaQueryWrapper = new LambdaQueryWrapper<>(); subUserProjectCommissionLambdaQueryWrapper.eq(SubUserProjectCommission::getProjectId, id); subUserProjectCommissionService.remove(subUserProjectCommissionLambdaQueryWrapper); + LambdaQueryWrapper userProjectLambdaQueryWrapper = new LambdaQueryWrapper<>(); + userProjectLambdaQueryWrapper.eq(UserProject::getProjectId, id); + userProjectService.remove(userProjectLambdaQueryWrapper); return ResultUtils.success(true); } diff --git a/src/main/java/com/greenorange/promotion/controller/project/PromoCodeApplyController.java b/src/main/java/com/greenorange/promotion/controller/project/PromoCodeApplyController.java index a1238d3..26585fc 100644 --- a/src/main/java/com/greenorange/promotion/controller/project/PromoCodeApplyController.java +++ b/src/main/java/com/greenorange/promotion/controller/project/PromoCodeApplyController.java @@ -1,5 +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; @@ -11,14 +12,22 @@ import com.greenorange.promotion.exception.ThrowUtils; import com.greenorange.promotion.model.dto.CommonBatchRequest; import com.greenorange.promotion.model.dto.promoCodeApply.PromoCodeApplyAddRequest; import com.greenorange.promotion.model.dto.promoCodeApply.PromoCodeApplyQueryRequest; +import com.greenorange.promotion.model.dto.promoCodeApply.PromoCodeApplyRequest; import com.greenorange.promotion.model.dto.promoCodeApply.PromoCodeApplyUpdateRequest; +import com.greenorange.promotion.model.entity.Project; +import com.greenorange.promotion.model.entity.PromoCode; import com.greenorange.promotion.model.entity.PromoCodeApply; +import com.greenorange.promotion.model.entity.UserProject; import com.greenorange.promotion.model.vo.promoCodeApply.PromoCodeApplyVO; import com.greenorange.promotion.service.common.CommonService; +import com.greenorange.promotion.service.project.ProjectService; import com.greenorange.promotion.service.project.PromoCodeApplyService; +import com.greenorange.promotion.service.project.PromoCodeService; +import com.greenorange.promotion.service.project.UserProjectService; 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; @@ -46,103 +55,97 @@ public class PromoCodeApplyController { @Resource private CommonService commonService; + @Resource + private PromoCodeService promoCodeService; + + @Resource + private UserProjectService userProjectService; + + @Resource + private ProjectService projectService; + + + /** - * web端管理员添加推广码申请记录 - * @param promoCodeApplyAddRequest 推广码申请记录添加请求体 - * @return 是否添加成功 + * 小程序用户申请推广码 + * @param promoCodeApplyRequest 推广码申请请求体 + * @return 项目详情 */ - @PostMapping("add") - @Operation(summary = "web端管理员添加推广码申请记录", description = "参数:推广码申请记录添加请求体,权限:管理员,方法名:addPromoCodeApply") - @RequiresPermission(mustRole = UserConstant.ADMIN_ROLE) - @SysLog(title = "推广码申请记录管理", content = "web端管理员添加推广码申请记录") - public BaseResponse addPromoCodeApply(@Valid @RequestBody PromoCodeApplyAddRequest promoCodeApplyAddRequest) { - PromoCodeApply promoCodeApply = commonService.copyProperties(promoCodeApplyAddRequest, PromoCodeApply.class); + @PostMapping("apply") + @Operation(summary = "小程序用户申请推广码", description = "参数:无,权限:管理员,方法名:applyPromoCode") + @RequiresPermission(mustRole = UserConstant.DEFAULT_ROLE) + @SysLog(title = "项目管理", content = "小程序用户申请推广码") + public BaseResponse applyPromoCode(@Valid @RequestBody PromoCodeApplyRequest promoCodeApplyRequest, HttpServletRequest request) { + // 取出当前项目的推广码 + Long projectId = promoCodeApplyRequest.getProjectId(); + LambdaQueryWrapper promoCodeLambdaQueryWrapper = new LambdaQueryWrapper<>(); + promoCodeLambdaQueryWrapper.eq(PromoCode::getProjectId, projectId); + promoCodeLambdaQueryWrapper.eq(PromoCode::getPromoCodeStatus, false); + List promoCodeList = promoCodeService.list(promoCodeLambdaQueryWrapper); + ThrowUtils.throwIf(promoCodeList.size() == 0, ErrorCode.OPERATION_ERROR, "当前项目没有推广码"); + PromoCode promoCode = promoCodeList.get(0); + promoCode.setPromoCodeStatus(true); + promoCodeService.updateById(promoCode); + // 获取推广码参数信息 + String promoCodeInfoKey = promoCode.getPromoCodeInfoKey(); + String promoCodeLink = promoCode.getPromoCodeLink(); + // 获取项目的参数信息 + Project project = projectService.getById(projectId); + String projectName = project.getProjectName(); + String projectImage = project.getProjectImage(); + Integer projectSettlementCycle = project.getProjectSettlementCycle(); + // 获取业务员信息 + String salespersonName = promoCodeApplyRequest.getSalespersonName(); + String salespersonPhone = promoCodeApplyRequest.getSalespersonPhone(); + // 获取用户id + Long userId = (Long) request.getAttribute("userId"); + // 添加推广码申请记录 + PromoCodeApply promoCodeApply = PromoCodeApply.builder() + .salespersonName(salespersonName) + .salespersonPhone(salespersonPhone) + .promoCodeInfoKey(promoCodeInfoKey) + .promoCodeLink(promoCodeLink) + .projectName(projectName) + .projectImage(projectImage) + .userId(userId) + .build(); promoCodeApplyService.save(promoCodeApply); + + // 添加用户项目记录 + UserProject userProject = UserProject.builder() + .projectId(projectId) + .projectName(projectName) + .projectImage(projectImage) + .projectSettlementCycle(projectSettlementCycle) + .userId(userId) + .build(); + userProjectService.save(userProject); return ResultUtils.success(true); } - /** - * web端管理员根据id修改推广码申请记录信息 - * @param promoCodeApplyUpdateRequest 推广码申请记录更新请求体 - * @return 是否更新成功 - */ - @PostMapping("update") - @Operation(summary = "web端管理员根据id修改推广码申请记录", description = "参数:推广码申请记录更新请求体,权限:管理员,方法名:updatePromoCodeApply") - @RequiresPermission(mustRole = UserConstant.ADMIN_ROLE) - @SysLog(title = "推广码申请记录管理", content = "web端管理员根据id修改推广码申请记录信息") - public BaseResponse updatePromoCodeApply(@Valid @RequestBody PromoCodeApplyUpdateRequest promoCodeApplyUpdateRequest) { - PromoCodeApply promoCodeApply = commonService.copyProperties(promoCodeApplyUpdateRequest, PromoCodeApply.class); - promoCodeApplyService.updateById(promoCodeApply); - return ResultUtils.success(true); - } + + /** - * web端管理员根据id删除推广码申请记录 - * @param commonRequest 推广码申请记录删除请求体 - * @return 是否删除成功 + * Web端管理员分页查询推广码申请记录 + * @param promoCodeApplyQueryRequest 推广码申请记录查询请求体 + * @return 推广码申请记录列表 */ - @PostMapping("delete") - @Operation(summary = "web端管理员根据id删除推广码申请记录", description = "参数:推广码申请记录删除请求体,权限:管理员,方法名:delPromoCodeApply") + @PostMapping("page") + @Operation(summary = "Web端管理员分页查询推广码申请记录", description = "参数:推广码申请记录查询请求体,权限:管理员,方法名:listPromoCodeApplyByPage") @RequiresPermission(mustRole = UserConstant.ADMIN_ROLE) - @SysLog(title = "推广码申请记录管理", content = "web端管理员根据id删除推广码申请记录") - public BaseResponse delPromoCodeApply(@Valid @RequestBody CommonRequest commonRequest) { - Long id = commonRequest.getId(); - promoCodeApplyService.removeById(id); - return ResultUtils.success(true); + @SysLog(title = "推广码申请记录管理", content = "Web端管理员分页查询推广码申请记录") + public BaseResponse> listPromoCodeApplyByPage(@Valid @RequestBody PromoCodeApplyQueryRequest promoCodeApplyQueryRequest) { + long current = promoCodeApplyQueryRequest.getCurrent(); + long pageSize = promoCodeApplyQueryRequest.getPageSize(); + QueryWrapper queryWrapper = promoCodeApplyService.getQueryWrapper(promoCodeApplyQueryRequest); + Page page = promoCodeApplyService.page(new Page<>(current, pageSize), queryWrapper); + List promoCodeApplyList = page.getRecords(); + List promoCodeApplyVOList = commonService.convertList(promoCodeApplyList, PromoCodeApplyVO.class); + Page voPage = new Page<>(current, pageSize); + voPage.setRecords(promoCodeApplyVOList); + voPage.setPages(page.getPages()); + voPage.setTotal(page.getTotal()); + return ResultUtils.success(voPage); } - - /** - * web端管理员批量删除推广码申请记录 - * @param commonBatchRequest 推广码申请记录批量删除请求体 - * @return 是否删除成功 - */ - @PostMapping("delBatch") - @Operation(summary = "web端管理员批量删除推广码申请记录", description = "参数:推广码申请记录批量删除请求体,权限:管理员,方法名:delBatchPromoCodeApply") - @RequiresPermission(mustRole = UserConstant.ADMIN_ROLE) - @SysLog(title = "推广码申请记录管理", content = "web端管理员批量删除推广码申请记录") - public BaseResponse delBatchPromoCodeApply(@Valid @RequestBody CommonBatchRequest commonBatchRequest) { - List ids = commonBatchRequest.getIds(); - promoCodeApplyService.removeByIds(ids); - return ResultUtils.success(true); - } - - /** - * web端管理员根据id查询推广码申请记录 - * @param commonRequest 推广码申请记录查询请求体 - * @return 推广码申请记录信息 - */ - @PostMapping("queryById") - @Operation(summary = "web端管理员根据id查询推广码申请记录", description = "参数:推广码申请记录查询请求体,权限:管理员,方法名:queryPromoCodeApplyById") - @RequiresPermission(mustRole = UserConstant.ADMIN_ROLE) - @SysLog(title = "推广码申请记录管理", content = "web端管理员根据id查询推广码申请记录") - public BaseResponse queryPromoCodeApplyById(@Valid @RequestBody CommonRequest commonRequest) { - Long id = commonRequest.getId(); - PromoCodeApply promoCodeApply = promoCodeApplyService.getById(id); - ThrowUtils.throwIf(promoCodeApply == null, ErrorCode.OPERATION_ERROR, "当前推广码申请记录不存在"); - PromoCodeApplyVO promoCodeApplyVO = commonService.copyProperties(promoCodeApply, PromoCodeApplyVO.class); - return ResultUtils.success(promoCodeApplyVO); - } - -// /** -// * Web端管理员分页查询推广码申请记录 -// * @param promoCodeApplyQueryRequest 推广码申请记录查询请求体 -// * @return 推广码申请记录列表 -// */ -// @PostMapping("page") -// @Operation(summary = "Web端管理员分页查询推广码申请记录", description = "参数:推广码申请记录查询请求体,权限:管理员,方法名:listPromoCodeApplyByPage") -// @RequiresPermission(mustRole = UserConstant.ADMIN_ROLE) -// @SysLog(title = "推广码申请记录管理", content = "Web端管理员分页查询推广码申请记录") -// public BaseResponse> listPromoCodeApplyByPage(@Valid @RequestBody PromoCodeApplyQueryRequest promoCodeApplyQueryRequest) { -// long current = promoCodeApplyQueryRequest.getCurrent(); -// long pageSize = promoCodeApplyQueryRequest.getPageSize(); -// QueryWrapper queryWrapper = promoCodeApplyService.getQueryWrapper(promoCodeApplyQueryRequest); -// Page page = promoCodeApplyService.page(new Page<>(current, pageSize), queryWrapper); -// List promoCodeApplyList = page.getRecords(); -// List promoCodeApplyVOList = commonService.convertList(promoCodeApplyList, PromoCodeApplyVO.class); -// Page voPage = new Page<>(current, pageSize); -// voPage.setRecords(promoCodeApplyVOList); -// 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/model/entity/PromoCodeApply.java b/src/main/java/com/greenorange/promotion/model/entity/PromoCodeApply.java index 8be2825..ced9d9e 100644 --- a/src/main/java/com/greenorange/promotion/model/entity/PromoCodeApply.java +++ b/src/main/java/com/greenorange/promotion/model/entity/PromoCodeApply.java @@ -7,7 +7,11 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; import java.math.BigDecimal; import java.util.Date; + +import lombok.AllArgsConstructor; +import lombok.Builder; import lombok.Data; +import lombok.NoArgsConstructor; /** * 推广码申请记录表 @@ -15,6 +19,9 @@ import lombok.Data; */ @TableName(value ="promo_code_apply") @Data +@NoArgsConstructor +@AllArgsConstructor +@Builder public class PromoCodeApply implements Serializable { /** * 推广码申请ID diff --git a/src/main/java/com/greenorange/promotion/model/entity/UserProject.java b/src/main/java/com/greenorange/promotion/model/entity/UserProject.java index 2f8e3b6..27a9e96 100644 --- a/src/main/java/com/greenorange/promotion/model/entity/UserProject.java +++ b/src/main/java/com/greenorange/promotion/model/entity/UserProject.java @@ -6,7 +6,11 @@ import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; import java.util.Date; + +import lombok.AllArgsConstructor; +import lombok.Builder; import lombok.Data; +import lombok.NoArgsConstructor; /** * 用户项目表 @@ -14,6 +18,9 @@ import lombok.Data; */ @TableName(value ="user_project") @Data +@NoArgsConstructor +@AllArgsConstructor +@Builder public class UserProject implements Serializable { /** * 用户项目ID diff --git a/src/main/java/com/greenorange/promotion/model/vo/userProject/UserProjectVO.java b/src/main/java/com/greenorange/promotion/model/vo/userProject/UserProjectVO.java index fac1338..6f60ae9 100644 --- a/src/main/java/com/greenorange/promotion/model/vo/userProject/UserProjectVO.java +++ b/src/main/java/com/greenorange/promotion/model/vo/userProject/UserProjectVO.java @@ -44,12 +44,6 @@ public class UserProjectVO implements Serializable { @Schema(description = "项目结算周期", example = "${field.example}") private Integer projectSettlementCycle; - /** - * 用户ID - */ - @Schema(description = "用户ID", example = "${field.example}") - private Long userId; - @Serial private static final long serialVersionUID = 1L; diff --git a/src/main/java/com/greenorange/promotion/service/project/PromoCodeApplyService.java b/src/main/java/com/greenorange/promotion/service/project/PromoCodeApplyService.java index 089b093..b87a17c 100644 --- a/src/main/java/com/greenorange/promotion/service/project/PromoCodeApplyService.java +++ b/src/main/java/com/greenorange/promotion/service/project/PromoCodeApplyService.java @@ -1,5 +1,7 @@ package com.greenorange.promotion.service.project; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.greenorange.promotion.model.dto.promoCodeApply.PromoCodeApplyQueryRequest; import com.greenorange.promotion.model.entity.PromoCodeApply; import com.baomidou.mybatisplus.extension.service.IService; @@ -10,4 +12,9 @@ import com.baomidou.mybatisplus.extension.service.IService; */ public interface PromoCodeApplyService extends IService { + + /** + * 获取查询条件 + */ + QueryWrapper getQueryWrapper(PromoCodeApplyQueryRequest promoCodeApplyQueryRequest); } diff --git a/src/main/java/com/greenorange/promotion/service/project/impl/PromoCodeApplyServiceImpl.java b/src/main/java/com/greenorange/promotion/service/project/impl/PromoCodeApplyServiceImpl.java index 2fdc347..2b4b055 100644 --- a/src/main/java/com/greenorange/promotion/service/project/impl/PromoCodeApplyServiceImpl.java +++ b/src/main/java/com/greenorange/promotion/service/project/impl/PromoCodeApplyServiceImpl.java @@ -1,9 +1,15 @@ package com.greenorange.promotion.service.project.impl; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.greenorange.promotion.constant.CommonConstant; +import com.greenorange.promotion.model.dto.promoCodeApply.PromoCodeApplyQueryRequest; +import com.greenorange.promotion.model.entity.Project; import com.greenorange.promotion.model.entity.PromoCodeApply; import com.greenorange.promotion.service.project.PromoCodeApplyService; import com.greenorange.promotion.mapper.PromoCodeApplyMapper; +import com.greenorange.promotion.utils.SqlUtils; +import org.apache.commons.lang3.StringUtils; import org.springframework.stereotype.Service; /** @@ -15,6 +21,19 @@ import org.springframework.stereotype.Service; public class PromoCodeApplyServiceImpl extends ServiceImpl implements PromoCodeApplyService{ + /** + * 获取查询条件 + */ + @Override + public QueryWrapper getQueryWrapper(PromoCodeApplyQueryRequest promoCodeApplyQueryRequest) { + String salespersonPhone = promoCodeApplyQueryRequest.getSalespersonPhone(); + String sortField = promoCodeApplyQueryRequest.getSortField(); + String sortOrder = promoCodeApplyQueryRequest.getSortOrder(); + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq(StringUtils.isNotBlank(salespersonPhone), "salespersonPhone", salespersonPhone); + queryWrapper.orderBy(SqlUtils.validSortField(sortField), sortOrder.equals(CommonConstant.SORT_ORDER_ASC), sortField); + return queryWrapper; + } }