diff --git a/src/main/java/com/greenorange/promotion/annotation/FileEnumValidator.java b/src/main/java/com/greenorange/promotion/annotation/FileEnumValidator.java index f0d9b4c..eeebb52 100644 --- a/src/main/java/com/greenorange/promotion/annotation/FileEnumValidator.java +++ b/src/main/java/com/greenorange/promotion/annotation/FileEnumValidator.java @@ -5,11 +5,11 @@ import jakarta.validation.ConstraintValidator; import jakarta.validation.ConstraintValidatorContext; // 枚举校验器 -public class FileEnumValidator implements ConstraintValidator { +public class FileEnumValidator implements ConstraintValidator { @Override - public void initialize(UserEnumValue constraintAnnotation) { + public void initialize(FileEnumValue constraintAnnotation) { } diff --git a/src/main/java/com/greenorange/promotion/annotation/FileEnumValue.java b/src/main/java/com/greenorange/promotion/annotation/FileEnumValue.java index 80e4f77..d116762 100644 --- a/src/main/java/com/greenorange/promotion/annotation/FileEnumValue.java +++ b/src/main/java/com/greenorange/promotion/annotation/FileEnumValue.java @@ -9,7 +9,7 @@ import java.lang.annotation.RetentionPolicy; import java.lang.annotation.Target; // 自定义校验注解 -@Constraint(validatedBy = UserEnumValidator.class) +@Constraint(validatedBy = FileEnumValidator.class) @Target({ ElementType.FIELD, ElementType.PARAMETER, ElementType.METHOD }) @Retention(RetentionPolicy.RUNTIME) public @interface FileEnumValue { diff --git a/src/main/java/com/greenorange/promotion/annotation/ProjectStatusEnumValidator.java b/src/main/java/com/greenorange/promotion/annotation/ProjectStatusEnumValidator.java new file mode 100644 index 0000000..81d7acf --- /dev/null +++ b/src/main/java/com/greenorange/promotion/annotation/ProjectStatusEnumValidator.java @@ -0,0 +1,19 @@ +package com.greenorange.promotion.annotation; + +import com.greenorange.promotion.model.enums.ProjectStatusEnum; +import jakarta.validation.ConstraintValidator; +import jakarta.validation.ConstraintValidatorContext; + +public class ProjectStatusEnumValidator implements ConstraintValidator { + + + @Override + public void initialize(ProjectStatusEnumValue constraintAnnotation) { + + } + + @Override + public boolean isValid(String value, ConstraintValidatorContext context) { + return ProjectStatusEnum.getEnumByValue(value) != null; + } +} diff --git a/src/main/java/com/greenorange/promotion/annotation/ProjectStatusEnumValue.java b/src/main/java/com/greenorange/promotion/annotation/ProjectStatusEnumValue.java new file mode 100644 index 0000000..226e4d5 --- /dev/null +++ b/src/main/java/com/greenorange/promotion/annotation/ProjectStatusEnumValue.java @@ -0,0 +1,22 @@ +package com.greenorange.promotion.annotation; + +import jakarta.validation.Constraint; +import jakarta.validation.Payload; + +import java.lang.annotation.ElementType; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; +import java.lang.annotation.Target; + +// 自定义校验注解 +@Constraint(validatedBy = ProjectStatusEnumValidator.class) +@Target({ ElementType.FIELD, ElementType.PARAMETER, ElementType.METHOD }) +@Retention(RetentionPolicy.RUNTIME) +public @interface ProjectStatusEnumValue { + + String message() default "项目状态错误"; // 错误信息 + Class[] groups() default {}; // 组别 + Class[] payload() default {}; // 负载 + Class> enumClass(); // 枚举类类型 + +} 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 d524165..659d54f 100644 --- a/src/main/java/com/greenorange/promotion/controller/project/ProjectController.java +++ b/src/main/java/com/greenorange/promotion/controller/project/ProjectController.java @@ -16,10 +16,17 @@ import com.greenorange.promotion.model.dto.CommonBatchRequest; import com.greenorange.promotion.model.dto.CommonRequest; import com.greenorange.promotion.model.dto.project.ProjectAddRequest; import com.greenorange.promotion.model.dto.project.ProjectQueryRequest; +import com.greenorange.promotion.model.dto.project.ProjectStatusUpdateRequest; import com.greenorange.promotion.model.dto.project.ProjectUpdateRequest; +import com.greenorange.promotion.model.dto.projectDetail.ProjectDetailAddRequest; +import com.greenorange.promotion.model.dto.projectNotification.ProjectNotificationAddRequest; import com.greenorange.promotion.model.entity.Project; +import com.greenorange.promotion.model.entity.ProjectDetail; +import com.greenorange.promotion.model.entity.ProjectNotification; import com.greenorange.promotion.model.vo.project.ProjectVO; import com.greenorange.promotion.service.common.CommonService; +import com.greenorange.promotion.service.project.ProjectDetailService; +import com.greenorange.promotion.service.project.ProjectNotificationService; import com.greenorange.promotion.service.project.ProjectService; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.tags.Tag; @@ -149,25 +156,43 @@ public class ProjectController { return ResultUtils.success(voPage); } -// /** -// * Web端管理员上(下)架项目 -// * @param commonRequest 项目id -// * @return 是否更新成功 -// */ -// @PostMapping("/shelves") -// @Operation(summary = "Web端管理员上(下)架项目", description = "参数:项目id,权限:管理员(admin, boss),方法名:updateProjectShelvesStatus") -// @RequiresPermission(mustRole = UserConstant.ADMIN_ROLE) -// @SysLog(title = "项目管理", content = "Web端管理员上(下)架项目") -// public BaseResponse updateProjectShelvesStatus(@RequestBody CommonRequest commonRequest) { -// // 获取当前服务类商品的上(下)架状态 -// Long id = commonRequest.getId(); -// Project project = projectService.getById(id); -// Integer status = project.getIsShelves() == 0 ? 1 : 0; -// LambdaUpdateWrapper updateWrapper = new LambdaUpdateWrapper<>(); -// updateWrapper.eq(Project::getId, id).set(Project::getIsShelves, status); -// projectService.update(updateWrapper); -// return ResultUtils.success(true); -// } + /** + * Web端管理员上(下)架项目 + * @param commonRequest 项目id + * @return 是否更新成功 + */ + @PostMapping("shelves") + @Operation(summary = "Web端管理员上(下)架项目", description = "参数:项目id,权限:管理员(admin, boss),方法名:updateProjectShelvesStatus") + @RequiresPermission(mustRole = UserConstant.ADMIN_ROLE) + @SysLog(title = "项目管理", content = "Web端管理员上(下)架项目") + public BaseResponse updateProjectShelvesStatus(@Valid @RequestBody CommonRequest commonRequest) { + // 获取当前服务类商品的上(下)架状态 + Long id = commonRequest.getId(); + Project project = projectService.getById(id); + Boolean isShelves = project.getIsShelves(); + LambdaUpdateWrapper updateWrapper = new LambdaUpdateWrapper<>(); + updateWrapper.eq(Project::getId, id).set(Project::getIsShelves, !isShelves); + projectService.update(updateWrapper); + return ResultUtils.success(true); + } + + /** + * Web端管理员根据项目id修改项目状态 + * @param projectStatusUpdateRequest 项目状态更新请求体 + * @return 是否更新成功 + */ + @PostMapping("status") + @Operation(summary = "Web端管理员根据项目id修改项目状态", description = "参数:项目id,权限:管理员(admin, boss),方法名:updateProjectStatus") + @RequiresPermission(mustRole = UserConstant.ADMIN_ROLE) + @SysLog(title = "项目管理", content = "Web端管理员根据项目id修改项目状态") + public BaseResponse updateProjectStatus(@Valid @RequestBody ProjectStatusUpdateRequest projectStatusUpdateRequest) { + Long id = projectStatusUpdateRequest.getId(); + String projectStatus = projectStatusUpdateRequest.getProjectStatus(); + LambdaUpdateWrapper updateWrapper = new LambdaUpdateWrapper<>(); + updateWrapper.eq(Project::getId, id).set(Project::getProjectStatus, projectStatus); + projectService.update(updateWrapper); + return ResultUtils.success(true); + } } \ No newline at end of file diff --git a/src/main/java/com/greenorange/promotion/controller/projectCommission/ProjectCommissionController.java b/src/main/java/com/greenorange/promotion/controller/projectCommission/ProjectCommissionController.java new file mode 100644 index 0000000..e18f482 --- /dev/null +++ b/src/main/java/com/greenorange/promotion/controller/projectCommission/ProjectCommissionController.java @@ -0,0 +1,148 @@ +package com.greenorange.promotion.controller.projectCommission; + +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.projectCommission.ProjectCommissionAddRequest; +import com.greenorange.promotion.model.dto.projectCommission.ProjectCommissionQueryRequest; +import com.greenorange.promotion.model.dto.projectCommission.ProjectCommissionUpdateRequest; +import com.greenorange.promotion.model.entity.ProjectCommission; +import com.greenorange.promotion.model.vo.projectCommission.ProjectCommissionVO; +import com.greenorange.promotion.service.common.CommonService; +import com.greenorange.promotion.service.project.ProjectCommissionService; +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("projectCommission") +@Slf4j +@Tag(name = "项目明细抽佣管理") +public class ProjectCommissionController { + + @Resource + private ProjectCommissionService projectCommissionService; + + @Resource + private CommonService commonService; + + /** + * 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); +// } +} \ No newline at end of file diff --git a/src/main/java/com/greenorange/promotion/controller/subUserProjectCommission/SubUserProjectCommissionController.java b/src/main/java/com/greenorange/promotion/controller/subUserProjectCommission/SubUserProjectCommissionController.java new file mode 100644 index 0000000..2533a8f --- /dev/null +++ b/src/main/java/com/greenorange/promotion/controller/subUserProjectCommission/SubUserProjectCommissionController.java @@ -0,0 +1,148 @@ +package com.greenorange.promotion.controller.subUserProjectCommission; + +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/generator/Generator.java b/src/main/java/com/greenorange/promotion/generator/Generator.java index 0572793..aabe498 100644 --- a/src/main/java/com/greenorange/promotion/generator/Generator.java +++ b/src/main/java/com/greenorange/promotion/generator/Generator.java @@ -27,13 +27,13 @@ public class Generator { // 作者 private static final String AUTHOR = "chenxinzhi"; // 表注释 - private static final String TABLE_COMMENT = "用户项目"; + private static final String TABLE_COMMENT = "下级用户项目明细抽佣"; // 实体类名 - private static final String ENTITY_NAME = "UserProject"; + private static final String ENTITY_NAME = "SubUserProjectCommission"; // 表名 - private static final String TABLE_NAME = "user_project"; + private static final String TABLE_NAME = "sub_user_project_commission"; // 实体类属性名 - private static final String ENTITY_NAME_LOWER = "userProject"; + private static final String ENTITY_NAME_LOWER = "subUserProjectCommission"; // 父包名 private static final String PARENT_PATH = "com.greenorange.promotion"; diff --git a/src/main/java/com/greenorange/promotion/mapper/ProjectCommissionMapper.java b/src/main/java/com/greenorange/promotion/mapper/ProjectCommissionMapper.java new file mode 100644 index 0000000..1429c40 --- /dev/null +++ b/src/main/java/com/greenorange/promotion/mapper/ProjectCommissionMapper.java @@ -0,0 +1,18 @@ +package com.greenorange.promotion.mapper; + +import com.greenorange.promotion.model.entity.ProjectCommission; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** +* @author 35880 +* @description 针对表【project_commission(项目明细抽佣表)】的数据库操作Mapper +* @createDate 2025-05-09 18:42:17 +* @Entity com.greenorange.promotion.model.entity.ProjectCommission +*/ +public interface ProjectCommissionMapper extends BaseMapper { + +} + + + + diff --git a/src/main/java/com/greenorange/promotion/mapper/SubUserProjectCommissionMapper.java b/src/main/java/com/greenorange/promotion/mapper/SubUserProjectCommissionMapper.java new file mode 100644 index 0000000..11d0548 --- /dev/null +++ b/src/main/java/com/greenorange/promotion/mapper/SubUserProjectCommissionMapper.java @@ -0,0 +1,18 @@ +package com.greenorange.promotion.mapper; + +import com.greenorange.promotion.model.entity.SubUserProjectCommission; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** +* @author 35880 +* @description 针对表【sub_user_project_commission(下级用户项目明细抽佣表)】的数据库操作Mapper +* @createDate 2025-05-09 19:06:19 +* @Entity com.greenorange.promotion.model.entity.SubUserProjectCommission +*/ +public interface SubUserProjectCommissionMapper extends BaseMapper { + +} + + + + diff --git a/src/main/java/com/greenorange/promotion/model/dto/fileInfo/FileInfoAddRequest.java b/src/main/java/com/greenorange/promotion/model/dto/fileInfo/FileInfoAddRequest.java index 63dee49..57cdc29 100644 --- a/src/main/java/com/greenorange/promotion/model/dto/fileInfo/FileInfoAddRequest.java +++ b/src/main/java/com/greenorange/promotion/model/dto/fileInfo/FileInfoAddRequest.java @@ -61,10 +61,10 @@ public class FileInfoAddRequest implements Serializable { private String fileView; /** - * 文件业务类型(头像,项目,富文本,默认) + * 文件业务类型[头像(avatar)|项目(project)|富文本(richText)|默认(default))] */ @FileEnumValue(enumClass = FileUploadBizEnum.class) - @Schema(description = "文件业务类型(头像,项目,富文本,默认)", example = "avatar") + @Schema(description = "文件业务类型[头像(avatar)|项目(project)|富文本(richText)|默认(default))]", example = "avatar") private String biz; /** diff --git a/src/main/java/com/greenorange/promotion/model/dto/fileInfo/FileInfoUpdateRequest.java b/src/main/java/com/greenorange/promotion/model/dto/fileInfo/FileInfoUpdateRequest.java index 139755f..90ba3bc 100644 --- a/src/main/java/com/greenorange/promotion/model/dto/fileInfo/FileInfoUpdateRequest.java +++ b/src/main/java/com/greenorange/promotion/model/dto/fileInfo/FileInfoUpdateRequest.java @@ -68,10 +68,10 @@ public class FileInfoUpdateRequest implements Serializable { private String fileView; /** - * 文件业务类型(头像,项目,富文本,默认) + * 文件业务类型[头像(avatar)|项目(project)|富文本(richText)|默认(default))] */ @FileEnumValue(enumClass = FileUploadBizEnum.class) - @Schema(description = "文件业务类型(头像,项目,富文本,默认)", example = "avatar") + @Schema(description = "文件业务类型[头像(avatar)|项目(project)|富文本(richText)|默认(default))]", example = "default") private String biz; /** diff --git a/src/main/java/com/greenorange/promotion/model/dto/fileInfo/UploadFileRequest.java b/src/main/java/com/greenorange/promotion/model/dto/fileInfo/UploadFileRequest.java index 83f46d4..7cd7dea 100644 --- a/src/main/java/com/greenorange/promotion/model/dto/fileInfo/UploadFileRequest.java +++ b/src/main/java/com/greenorange/promotion/model/dto/fileInfo/UploadFileRequest.java @@ -13,10 +13,10 @@ import java.io.Serializable; public class UploadFileRequest implements Serializable { /** - * 文件业务类型(头像,项目,富文本,默认) + * 文件业务类型[头像(avatar)|项目(project)|富文本(richText)|默认(default))] */ @FileEnumValue(enumClass = FileUploadBizEnum.class) - @Schema(description = "文件业务类型(头像,项目,富文本,默认)", example = "avatar") + @Schema(description = "文件业务类型[头像(avatar)|项目(project)|富文本(richText)|默认(default))]", example = "default") private String biz; diff --git a/src/main/java/com/greenorange/promotion/model/dto/project/ProjectAddRequest.java b/src/main/java/com/greenorange/promotion/model/dto/project/ProjectAddRequest.java index 77b4c1f..bb8bfb9 100644 --- a/src/main/java/com/greenorange/promotion/model/dto/project/ProjectAddRequest.java +++ b/src/main/java/com/greenorange/promotion/model/dto/project/ProjectAddRequest.java @@ -1,16 +1,21 @@ package com.greenorange.promotion.model.dto.project; -import com.greenorange.promotion.annotation.UserEnumValue; +import com.greenorange.promotion.annotation.ProjectStatusEnumValue; +import com.greenorange.promotion.model.dto.projectDetail.ProjectDetailAddRequest; +import com.greenorange.promotion.model.dto.projectDetail.ProjectDetailUpdateRequest; +import com.greenorange.promotion.model.dto.projectNotification.ProjectNotificationAddRequest; +import com.greenorange.promotion.model.entity.ProjectNotification; import com.greenorange.promotion.model.enums.ProjectStatusEnum; import io.swagger.v3.oas.annotations.media.Schema; -import jakarta.validation.constraints.DecimalMin; -import jakarta.validation.constraints.NotBlank; import jakarta.validation.constraints.Min; +import jakarta.validation.constraints.NotBlank; +import jakarta.validation.constraints.NotEmpty; import lombok.Data; import java.io.Serial; import java.io.Serializable; import java.math.BigDecimal; +import java.util.List; /** * 项目添加请求体 @@ -19,13 +24,14 @@ import java.math.BigDecimal; @Schema(description = "项目添加请求体", requiredProperties = { "projectName", "projectImage", + "projectSettlementCycle", + "maxPromoterCount", + "projectStatus", "projectDescription", "settlementDesc", "projectDesc", "projectFlow", "applyPromoCodeDesc", - "projectSettlementCycle", - "maxPromoterCount", }) public class ProjectAddRequest implements Serializable { @@ -43,6 +49,27 @@ public class ProjectAddRequest implements Serializable { @Schema(description = "项目图片URL", example = "http://xxx.png") private String projectImage; + /** + * 项目结算周期 + */ + @Min(value = 1, message = "项目结算周期不能小于1") + @Schema(description = "项目结算周期", example = "2") + private Integer projectSettlementCycle; + + /** + * 最大推广人数 + */ + @Min(value = 1, message = "最大推广人数不能小于1") + @Schema(description = "最大推广人数", example = "200") + private Integer maxPromoterCount; + + /** + * 项目状态[项目运行(running)|人数已满(full)|项目暂停(paused)] + */ + @ProjectStatusEnumValue(enumClass = ProjectStatusEnum.class) + @Schema(description = "项目状态[项目运行(running)|人数已满(full)|项目暂停(paused)]", example = "running") + private String projectStatus; + /** * 项目简介 */ @@ -78,20 +105,6 @@ public class ProjectAddRequest implements Serializable { @Schema(description = "申请推广码说明(富文本)", example = "富文本") private String applyPromoCodeDesc; - /** - * 项目结算周期 - */ - @Min(value = 1, message = "项目结算周期不能小于1") - @Schema(description = "项目结算周期", example = "2") - private Integer projectSettlementCycle; - - /** - * 最大推广人数 - */ - @Min(value = 1, message = "最大推广人数不能小于1") - @Schema(description = "最大推广人数", example = "200") - private Integer maxPromoterCount; - @Serial private static final long serialVersionUID = 1L; diff --git a/src/main/java/com/greenorange/promotion/model/dto/project/ProjectStatusUpdateRequest.java b/src/main/java/com/greenorange/promotion/model/dto/project/ProjectStatusUpdateRequest.java new file mode 100644 index 0000000..346c679 --- /dev/null +++ b/src/main/java/com/greenorange/promotion/model/dto/project/ProjectStatusUpdateRequest.java @@ -0,0 +1,37 @@ +package com.greenorange.promotion.model.dto.project; + +import com.greenorange.promotion.annotation.ProjectStatusEnumValue; +import com.greenorange.promotion.model.enums.ProjectStatusEnum; +import io.swagger.v3.oas.annotations.media.Schema; +import jakarta.validation.constraints.Min; +import lombok.Data; + +import java.io.Serial; +import java.io.Serializable; + +/** + * 项目状态更新请求体 + */ +@Data +@Schema(description = "项目状态更新请求体", requiredProperties = {"id", "projectStatus"}) +public class ProjectStatusUpdateRequest implements Serializable { + + /** + * 项目 ID + */ + @Min(value = 1L, message = "项目 ID不能小于1") + @Schema(description = "项目 ID", example = "1") + private Long id; + + + /** + * 项目状态[项目运行(running)|人数已满(full)|项目暂停(paused)] + */ + @ProjectStatusEnumValue(enumClass = ProjectStatusEnum.class) + @Schema(description = "项目状态[项目运行(running)|人数已满(full)|项目暂停(paused)]", example = "running") + private String projectStatus; + + + @Serial + private static final long serialVersionUID = 1L; +} diff --git a/src/main/java/com/greenorange/promotion/model/dto/projectCommission/ProjectCommissionAddRequest.java b/src/main/java/com/greenorange/promotion/model/dto/projectCommission/ProjectCommissionAddRequest.java new file mode 100644 index 0000000..87913be --- /dev/null +++ b/src/main/java/com/greenorange/promotion/model/dto/projectCommission/ProjectCommissionAddRequest.java @@ -0,0 +1,62 @@ +package com.greenorange.promotion.model.dto.projectCommission; + +import io.swagger.v3.oas.annotations.media.Schema; +import jakarta.validation.constraints.NotBlank; +import jakarta.validation.constraints.Min; +import lombok.Data; + +import java.io.Serial; +import java.io.Serializable; +import java.math.BigDecimal; + +/** + * 项目明细抽佣添加请求体 + */ +@Data +@Schema(description = "项目明细抽佣添加请求体", requiredProperties = { + "projectDetailId", + "myUnitPrice", + "currentCommissionRate", + "projectId", + "userId", +}) +public class ProjectCommissionAddRequest implements Serializable { + + /** + * 项目明细ID + */ + @Min(value = 1L, message = "项目明细ID ID不能小于1") + @Schema(description = "项目明细ID", example = "") + private Long projectDetailId; + + /** + * 我的单价 + */ + @Schema(description = "我的单价", example = "") + private BigDecimal myUnitPrice; + + /** + * 当前抽佣比例 + */ + @Schema(description = "当前抽佣比例", example = "") + private BigDecimal currentCommissionRate; + + /** + * 项目ID + */ + @Min(value = 1L, message = "项目ID ID不能小于1") + @Schema(description = "项目ID", example = "") + private Long projectId; + + /** + * 用户ID + */ + @Min(value = 1L, message = "用户ID ID不能小于1") + @Schema(description = "用户ID", example = "") + private Long userId; + + + @Serial + private static final long serialVersionUID = 1L; +} + diff --git a/src/main/java/com/greenorange/promotion/model/dto/projectCommission/ProjectCommissionQueryRequest.java b/src/main/java/com/greenorange/promotion/model/dto/projectCommission/ProjectCommissionQueryRequest.java new file mode 100644 index 0000000..953e89d --- /dev/null +++ b/src/main/java/com/greenorange/promotion/model/dto/projectCommission/ProjectCommissionQueryRequest.java @@ -0,0 +1,65 @@ +package com.greenorange.promotion.model.dto.projectCommission; + +import io.swagger.v3.oas.annotations.media.Schema; +import jakarta.validation.constraints.NotBlank; +import jakarta.validation.constraints.Min; +import lombok.Data; + +import java.io.Serial; +import java.io.Serializable; +import java.math.BigDecimal; + +import com.greenorange.promotion.common.PageRequest; + +/** + * 项目明细抽佣查询请求体,继承自分页请求 PageRequest + */ +@Data +@Schema(description = "项目明细抽佣查询请求体", requiredProperties = {"current", "pageSize"}) +public class ProjectCommissionQueryRequest extends PageRequest implements Serializable { + + /** + * 抽佣记录ID + */ + @Min(value = 1L, message = "抽佣记录ID ID不能小于1") + @Schema(description = "抽佣记录ID", example = "") + private Long id; + + /** + * 项目明细ID + */ + @Min(value = 1L, message = "项目明细ID ID不能小于1") + @Schema(description = "项目明细ID", example = "") + private Long projectDetailId; + + /** + * 我的单价 + */ + @Schema(description = "我的单价", example = "") + private BigDecimal myUnitPrice; + + /** + * 当前抽佣比例 + */ + @Schema(description = "当前抽佣比例", example = "") + private BigDecimal currentCommissionRate; + + /** + * 项目ID + */ + @Min(value = 1L, message = "项目ID ID不能小于1") + @Schema(description = "项目ID", example = "") + private Long projectId; + + /** + * 用户ID + */ + @Min(value = 1L, message = "用户ID ID不能小于1") + @Schema(description = "用户ID", example = "") + private Long userId; + + + @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 new file mode 100644 index 0000000..9458968 --- /dev/null +++ b/src/main/java/com/greenorange/promotion/model/dto/projectCommission/ProjectCommissionUpdateRequest.java @@ -0,0 +1,69 @@ +package com.greenorange.promotion.model.dto.projectCommission; + +import io.swagger.v3.oas.annotations.media.Schema; +import jakarta.validation.constraints.NotBlank; +import jakarta.validation.constraints.Min; +import lombok.Data; + +import java.io.Serial; +import java.io.Serializable; +import java.math.BigDecimal; + +/** + * 项目明细抽佣更新请求体 + */ +@Data +@Schema(description = "项目明细抽佣更新请求体", requiredProperties = { + "id", + "projectDetailId", + "myUnitPrice", + "currentCommissionRate", + "projectId", + "userId", +}) +public class ProjectCommissionUpdateRequest implements Serializable { + + /** + * 抽佣记录ID + */ + @Min(value = 1L, message = "抽佣记录ID ID不能小于1") + @Schema(description = "抽佣记录ID", example = "") + private Long id; + + /** + * 项目明细ID + */ + @Min(value = 1L, message = "项目明细ID ID不能小于1") + @Schema(description = "项目明细ID", example = "") + private Long projectDetailId; + + /** + * 我的单价 + */ + @Schema(description = "我的单价", example = "") + private BigDecimal myUnitPrice; + + /** + * 当前抽佣比例 + */ + @Schema(description = "当前抽佣比例", example = "") + private BigDecimal currentCommissionRate; + + /** + * 项目ID + */ + @Min(value = 1L, message = "项目ID ID不能小于1") + @Schema(description = "项目ID", example = "") + private Long projectId; + + /** + * 用户ID + */ + @Min(value = 1L, message = "用户ID ID不能小于1") + @Schema(description = "用户ID", example = "") + private Long userId; + + + @Serial + private static final long serialVersionUID = 1L; +} \ No newline at end of file diff --git a/src/main/java/com/greenorange/promotion/model/dto/promoCode/PromoCodeAddRequest.java b/src/main/java/com/greenorange/promotion/model/dto/promoCode/PromoCodeAddRequest.java index f67143d..c47b6ec 100644 --- a/src/main/java/com/greenorange/promotion/model/dto/promoCode/PromoCodeAddRequest.java +++ b/src/main/java/com/greenorange/promotion/model/dto/promoCode/PromoCodeAddRequest.java @@ -24,29 +24,29 @@ public class PromoCodeAddRequest implements Serializable { * 推广码信息key */ @NotBlank(message = "推广码信息key不能为空") - @Schema(description = "推广码信息key", example = "") + @Schema(description = "推广码信息key", example = "ykxy227") private String promoCodeInfoKey; /** * 推广码链接 */ @NotBlank(message = "推广码链接不能为空") - @Schema(description = "推广码链接", example = "") + @Schema(description = "推广码链接", example = "mp://y04CZgGkCBmIaZd") private String promoCodeLink; /** * 项目ID */ @Min(value = 1L, message = "项目ID ID不能小于1") - @Schema(description = "项目ID", example = "") + @Schema(description = "项目ID", example = "1") private Long projectId; /** - * 推广码状态 + * 推广码状态(true:占用,false:空闲) */ @NotBlank(message = "推广码状态不能为空") - @Schema(description = "推广码状态", example = "") - private String promoCodeStatus; + @Schema(description = "推广码状态(true:占用,false:空闲)", example = "false") + private Boolean promoCodeStatus; @Serial diff --git a/src/main/java/com/greenorange/promotion/model/dto/promoCode/PromoCodeQueryRequest.java b/src/main/java/com/greenorange/promotion/model/dto/promoCode/PromoCodeQueryRequest.java index 89ecd2a..01b8391 100644 --- a/src/main/java/com/greenorange/promotion/model/dto/promoCode/PromoCodeQueryRequest.java +++ b/src/main/java/com/greenorange/promotion/model/dto/promoCode/PromoCodeQueryRequest.java @@ -20,36 +20,36 @@ public class PromoCodeQueryRequest extends PageRequest implements Serializable { * 推广码ID */ @Min(value = 1L, message = "推广码ID ID不能小于1") - @Schema(description = "推广码ID", example = "") + @Schema(description = "推广码ID", example = "1") private Long id; /** * 推广码信息key */ @NotBlank(message = "推广码信息key不能为空") - @Schema(description = "推广码信息key", example = "") + @Schema(description = "推广码信息key", example = "ykxy227") private String promoCodeInfoKey; /** * 推广码链接 */ @NotBlank(message = "推广码链接不能为空") - @Schema(description = "推广码链接", example = "") + @Schema(description = "推广码链接", example = "mp://y04CZgGkCBmIaZd") private String promoCodeLink; /** * 项目ID */ @Min(value = 1L, message = "项目ID ID不能小于1") - @Schema(description = "项目ID", example = "") + @Schema(description = "项目ID", example = "1") private Long projectId; /** - * 推广码状态 + * 推广码状态(true:占用,false:空闲) */ @NotBlank(message = "推广码状态不能为空") - @Schema(description = "推广码状态", example = "") - private String promoCodeStatus; + @Schema(description = "推广码状态(true:占用,false:空闲)", example = "false") + private Boolean promoCodeStatus; @Serial diff --git a/src/main/java/com/greenorange/promotion/model/dto/promoCode/PromoCodeUpdateRequest.java b/src/main/java/com/greenorange/promotion/model/dto/promoCode/PromoCodeUpdateRequest.java index bb8d051..985d214 100644 --- a/src/main/java/com/greenorange/promotion/model/dto/promoCode/PromoCodeUpdateRequest.java +++ b/src/main/java/com/greenorange/promotion/model/dto/promoCode/PromoCodeUpdateRequest.java @@ -25,36 +25,36 @@ public class PromoCodeUpdateRequest implements Serializable { * 推广码ID */ @Min(value = 1L, message = "推广码ID ID不能小于1") - @Schema(description = "推广码ID", example = "") + @Schema(description = "推广码ID", example = "1") private Long id; /** * 推广码信息key */ @NotBlank(message = "推广码信息key不能为空") - @Schema(description = "推广码信息key", example = "") + @Schema(description = "推广码信息key", example = "ykxy227") private String promoCodeInfoKey; /** * 推广码链接 */ @NotBlank(message = "推广码链接不能为空") - @Schema(description = "推广码链接", example = "") + @Schema(description = "推广码链接", example = "mp://y04CZgGkCBmIaZd") private String promoCodeLink; /** * 项目ID */ @Min(value = 1L, message = "项目ID ID不能小于1") - @Schema(description = "项目ID", example = "") + @Schema(description = "项目ID", example = "1") private Long projectId; /** - * 推广码状态 + * 推广码状态(true:占用,false:空闲) */ @NotBlank(message = "推广码状态不能为空") - @Schema(description = "推广码状态", example = "") - private String promoCodeStatus; + @Schema(description = "推广码状态(true:占用,false:空闲)", example = "false") + private Boolean promoCodeStatus; @Serial diff --git a/src/main/java/com/greenorange/promotion/model/dto/subUserProjectCommission/SubUserProjectCommissionAddRequest.java b/src/main/java/com/greenorange/promotion/model/dto/subUserProjectCommission/SubUserProjectCommissionAddRequest.java new file mode 100644 index 0000000..dab1f31 --- /dev/null +++ b/src/main/java/com/greenorange/promotion/model/dto/subUserProjectCommission/SubUserProjectCommissionAddRequest.java @@ -0,0 +1,70 @@ +package com.greenorange.promotion.model.dto.subUserProjectCommission; + +import io.swagger.v3.oas.annotations.media.Schema; +import jakarta.validation.constraints.NotBlank; +import jakarta.validation.constraints.Min; +import lombok.Data; + +import java.io.Serial; +import java.io.Serializable; +import java.math.BigDecimal; + +/** + * 下级用户项目明细抽佣添加请求体 + */ +@Data +@Schema(description = "下级用户项目明细抽佣添加请求体", requiredProperties = { + "projectDetailId", + "myUnitPrice", + "currentCommissionRate", + "subUserId", + "projectId", + "userId", +}) +public class SubUserProjectCommissionAddRequest implements Serializable { + + /** + * 项目明细ID + */ + @Min(value = 1L, message = "项目明细ID ID不能小于1") + @Schema(description = "项目明细ID", example = "") + private Long projectDetailId; + + /** + * 我的单价 + */ + @Schema(description = "我的单价", example = "") + private BigDecimal myUnitPrice; + + /** + * 当前抽佣比例 + */ + @Schema(description = "当前抽佣比例", example = "") + private BigDecimal currentCommissionRate; + + /** + * 下级用户ID + */ + @Min(value = 1L, message = "下级用户ID ID不能小于1") + @Schema(description = "下级用户ID", example = "") + private Long subUserId; + + /** + * 项目ID + */ + @Min(value = 1L, message = "项目ID ID不能小于1") + @Schema(description = "项目ID", example = "") + private Long projectId; + + /** + * 用户ID + */ + @Min(value = 1L, message = "用户ID ID不能小于1") + @Schema(description = "用户ID", example = "") + private Long userId; + + + @Serial + private static final long serialVersionUID = 1L; +} + diff --git a/src/main/java/com/greenorange/promotion/model/dto/subUserProjectCommission/SubUserProjectCommissionQueryRequest.java b/src/main/java/com/greenorange/promotion/model/dto/subUserProjectCommission/SubUserProjectCommissionQueryRequest.java new file mode 100644 index 0000000..65fd40e --- /dev/null +++ b/src/main/java/com/greenorange/promotion/model/dto/subUserProjectCommission/SubUserProjectCommissionQueryRequest.java @@ -0,0 +1,72 @@ +package com.greenorange.promotion.model.dto.subUserProjectCommission; + +import io.swagger.v3.oas.annotations.media.Schema; +import jakarta.validation.constraints.NotBlank; +import jakarta.validation.constraints.Min; +import lombok.Data; + +import java.io.Serial; +import java.io.Serializable; +import java.math.BigDecimal; + +import com.greenorange.promotion.common.PageRequest; + +/** + * 下级用户项目明细抽佣查询请求体,继承自分页请求 PageRequest + */ +@Data +@Schema(description = "下级用户项目明细抽佣查询请求体", requiredProperties = {"current", "pageSize"}) +public class SubUserProjectCommissionQueryRequest extends PageRequest implements Serializable { + + /** + * 下级用户抽佣记录ID + */ + @Min(value = 1L, message = "下级用户抽佣记录ID ID不能小于1") + @Schema(description = "下级用户抽佣记录ID", example = "") + private Long id; + + /** + * 项目明细ID + */ + @Min(value = 1L, message = "项目明细ID ID不能小于1") + @Schema(description = "项目明细ID", example = "") + private Long projectDetailId; + + /** + * 我的单价 + */ + @Schema(description = "我的单价", example = "") + private BigDecimal myUnitPrice; + + /** + * 当前抽佣比例 + */ + @Schema(description = "当前抽佣比例", example = "") + private BigDecimal currentCommissionRate; + + /** + * 下级用户ID + */ + @Min(value = 1L, message = "下级用户ID ID不能小于1") + @Schema(description = "下级用户ID", example = "") + private Long subUserId; + + /** + * 项目ID + */ + @Min(value = 1L, message = "项目ID ID不能小于1") + @Schema(description = "项目ID", example = "") + private Long projectId; + + /** + * 用户ID + */ + @Min(value = 1L, message = "用户ID ID不能小于1") + @Schema(description = "用户ID", example = "") + 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 new file mode 100644 index 0000000..15dbea2 --- /dev/null +++ b/src/main/java/com/greenorange/promotion/model/dto/subUserProjectCommission/SubUserProjectCommissionUpdateRequest.java @@ -0,0 +1,77 @@ +package com.greenorange.promotion.model.dto.subUserProjectCommission; + +import io.swagger.v3.oas.annotations.media.Schema; +import jakarta.validation.constraints.NotBlank; +import jakarta.validation.constraints.Min; +import lombok.Data; + +import java.io.Serial; +import java.io.Serializable; +import java.math.BigDecimal; + +/** + * 下级用户项目明细抽佣更新请求体 + */ +@Data +@Schema(description = "下级用户项目明细抽佣更新请求体", requiredProperties = { + "id", + "projectDetailId", + "myUnitPrice", + "currentCommissionRate", + "subUserId", + "projectId", + "userId", +}) +public class SubUserProjectCommissionUpdateRequest implements Serializable { + + /** + * 下级用户抽佣记录ID + */ + @Min(value = 1L, message = "下级用户抽佣记录ID ID不能小于1") + @Schema(description = "下级用户抽佣记录ID", example = "") + private Long id; + + /** + * 项目明细ID + */ + @Min(value = 1L, message = "项目明细ID ID不能小于1") + @Schema(description = "项目明细ID", example = "") + private Long projectDetailId; + + /** + * 我的单价 + */ + @Schema(description = "我的单价", example = "") + private BigDecimal myUnitPrice; + + /** + * 当前抽佣比例 + */ + @Schema(description = "当前抽佣比例", example = "") + private BigDecimal currentCommissionRate; + + /** + * 下级用户ID + */ + @Min(value = 1L, message = "下级用户ID ID不能小于1") + @Schema(description = "下级用户ID", example = "") + private Long subUserId; + + /** + * 项目ID + */ + @Min(value = 1L, message = "项目ID ID不能小于1") + @Schema(description = "项目ID", example = "") + private Long projectId; + + /** + * 用户ID + */ + @Min(value = 1L, message = "用户ID ID不能小于1") + @Schema(description = "用户ID", example = "") + private Long userId; + + + @Serial + private static final long serialVersionUID = 1L; +} \ No newline at end of file diff --git a/src/main/java/com/greenorange/promotion/model/entity/FileInfo.java b/src/main/java/com/greenorange/promotion/model/entity/FileInfo.java index dbfbd05..3b72046 100644 --- a/src/main/java/com/greenorange/promotion/model/entity/FileInfo.java +++ b/src/main/java/com/greenorange/promotion/model/entity/FileInfo.java @@ -54,7 +54,7 @@ public class FileInfo implements Serializable { private String fileView; /** - * 文件业务类型(头像,项目,富文本,默认) + * 文件业务类型[头像(avatar)|项目(project)|富文本(richText)|默认(default))] */ private String biz; diff --git a/src/main/java/com/greenorange/promotion/model/entity/Project.java b/src/main/java/com/greenorange/promotion/model/entity/Project.java index f00abf6..c876d9c 100644 --- a/src/main/java/com/greenorange/promotion/model/entity/Project.java +++ b/src/main/java/com/greenorange/promotion/model/entity/Project.java @@ -37,6 +37,11 @@ public class Project implements Serializable { */ private String projectDescription; + /** + * 项目价格 + */ + private BigDecimal projectPrice; + /** * 结算说明(富文本) */ @@ -73,7 +78,7 @@ public class Project implements Serializable { private Integer maxPromoterCount; /** - * 项目状态(项目运行|人数已满|项目暂停) + * 项目状态[项目运行(running)|人数已满(full)|项目暂停(paused)] */ private String projectStatus; diff --git a/src/main/java/com/greenorange/promotion/model/entity/ProjectCommission.java b/src/main/java/com/greenorange/promotion/model/entity/ProjectCommission.java new file mode 100644 index 0000000..d32a9fe --- /dev/null +++ b/src/main/java/com/greenorange/promotion/model/entity/ProjectCommission.java @@ -0,0 +1,67 @@ +package com.greenorange.promotion.model.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import java.io.Serializable; +import java.math.BigDecimal; +import java.util.Date; +import lombok.Data; + +/** + * 项目明细抽佣表 + * @TableName project_commission + */ +@TableName(value ="project_commission") +@Data +public class ProjectCommission implements Serializable { + /** + * 抽佣记录ID + */ + @TableId(type = IdType.AUTO) + private Long id; + + /** + * 项目明细ID + */ + private Long projectDetailId; + + /** + * 我的单价 + */ + private BigDecimal myUnitPrice; + + /** + * 当前抽佣比例 + */ + private BigDecimal currentCommissionRate; + + /** + * 项目ID + */ + private Long projectId; + + /** + * 用户ID + */ + private Long userId; + + /** + * 是否删除 + */ + private Integer isDelete; + + /** + * 创建时间 + */ + private Date createTime; + + /** + * 更新时间 + */ + private Date updateTime; + + @TableField(exist = false) + private static final long serialVersionUID = 1L; +} \ No newline at end of file diff --git a/src/main/java/com/greenorange/promotion/model/entity/PromoCode.java b/src/main/java/com/greenorange/promotion/model/entity/PromoCode.java index c6b34ea..b40d034 100644 --- a/src/main/java/com/greenorange/promotion/model/entity/PromoCode.java +++ b/src/main/java/com/greenorange/promotion/model/entity/PromoCode.java @@ -39,7 +39,7 @@ public class PromoCode implements Serializable { /** * 推广码状态 */ - private Object promoCodeStatus; + private Boolean promoCodeStatus; /** * 是否删除 diff --git a/src/main/java/com/greenorange/promotion/model/entity/SubUserProjectCommission.java b/src/main/java/com/greenorange/promotion/model/entity/SubUserProjectCommission.java new file mode 100644 index 0000000..c5122bb --- /dev/null +++ b/src/main/java/com/greenorange/promotion/model/entity/SubUserProjectCommission.java @@ -0,0 +1,72 @@ +package com.greenorange.promotion.model.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import java.io.Serializable; +import java.math.BigDecimal; +import java.util.Date; +import lombok.Data; + +/** + * 下级用户项目明细抽佣表 + * @TableName sub_user_project_commission + */ +@TableName(value ="sub_user_project_commission") +@Data +public class SubUserProjectCommission implements Serializable { + /** + * 下级用户抽佣记录ID + */ + @TableId(type = IdType.AUTO) + private Long id; + + /** + * 项目明细ID + */ + private Long projectDetailId; + + /** + * 我的单价 + */ + private BigDecimal myUnitPrice; + + /** + * 当前抽佣比例 + */ + private BigDecimal currentCommissionRate; + + /** + * 下级用户ID + */ + private Long subUserId; + + /** + * 项目ID + */ + private Long projectId; + + /** + * 用户ID + */ + private Long userId; + + /** + * 是否删除 + */ + private Integer isDelete; + + /** + * 创建时间 + */ + private Date createTime; + + /** + * 更新时间 + */ + private Date updateTime; + + @TableField(exist = false) + private static final long serialVersionUID = 1L; +} \ No newline at end of file diff --git a/src/main/java/com/greenorange/promotion/model/enums/FileUploadBizEnum.java b/src/main/java/com/greenorange/promotion/model/enums/FileUploadBizEnum.java index 083ad18..37e8374 100644 --- a/src/main/java/com/greenorange/promotion/model/enums/FileUploadBizEnum.java +++ b/src/main/java/com/greenorange/promotion/model/enums/FileUploadBizEnum.java @@ -16,7 +16,8 @@ public enum FileUploadBizEnum { AVATAR("用户头像", "avatar"), PROJECT("项目", "project"), - RICH_TEXT("富文本", "richText"); + RICH_TEXT("富文本", "richText"), + DEFAULT("默认", "default"); private final String text; private final String value; diff --git a/src/main/java/com/greenorange/promotion/model/vo/fileInfo/FileInfoVO.java b/src/main/java/com/greenorange/promotion/model/vo/fileInfo/FileInfoVO.java index 9740fdc..442d68b 100644 --- a/src/main/java/com/greenorange/promotion/model/vo/fileInfo/FileInfoVO.java +++ b/src/main/java/com/greenorange/promotion/model/vo/fileInfo/FileInfoVO.java @@ -51,9 +51,9 @@ public class FileInfoVO implements Serializable { private String fileView; /** - * 文件业务类型(头像,项目,富文本,默认) + * 文件业务类型[头像(avatar)|项目(project)|富文本(richText)|默认(default))] */ - @Schema(description = "文件业务类型(头像,项目,富文本,默认)", example = "user_avatar") + @Schema(description = "文件业务类型[头像(avatar)|项目(project)|富文本(richText)|默认(default))]", example = "default") private String biz; /** diff --git a/src/main/java/com/greenorange/promotion/model/vo/project/ProjectVO.java b/src/main/java/com/greenorange/promotion/model/vo/project/ProjectVO.java index 2bd6fdd..e3456ca 100644 --- a/src/main/java/com/greenorange/promotion/model/vo/project/ProjectVO.java +++ b/src/main/java/com/greenorange/promotion/model/vo/project/ProjectVO.java @@ -27,6 +27,12 @@ public class ProjectVO implements Serializable { @Schema(description = "项目名称", example = "美团省钱包") private String projectName; + /** + * 项目价格 + */ + @Schema(description = "项目价格", example = "0.72") + private BigDecimal projectPrice; + /** * 项目图片URL */ @@ -82,9 +88,9 @@ public class ProjectVO implements Serializable { private Integer maxPromoterCount; /** - * 项目状态(项目运行|人数已满|项目暂停) + * 项目状态[项目运行(running)|人数已满(full)|项目暂停(paused)] */ - @Schema(description = "项目状态", example = "项目运行") + @Schema(description = "项目状态[项目运行(running)|人数已满(full)|项目暂停(paused)]", example = "running") private String projectStatus; /** diff --git a/src/main/java/com/greenorange/promotion/model/vo/projectCommission/ProjectCommissionVO.java b/src/main/java/com/greenorange/promotion/model/vo/projectCommission/ProjectCommissionVO.java new file mode 100644 index 0000000..8f21953 --- /dev/null +++ b/src/main/java/com/greenorange/promotion/model/vo/projectCommission/ProjectCommissionVO.java @@ -0,0 +1,56 @@ +package com.greenorange.promotion.model.vo.projectCommission; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +import java.io.Serial; +import java.io.Serializable; +import java.math.BigDecimal; + +/** + * 项目明细抽佣 视图对象 + */ +@Data +@Schema(description = "项目明细抽佣 视图对象") +public class ProjectCommissionVO implements Serializable { + + /** + * 项目明细抽佣ID + */ + @Schema(description = "项目明细抽佣ID", example = "1") + private Long id; + + /** + * 项目明细ID + */ + @Schema(description = "项目明细ID", example = "${field.example}") + private Long projectDetailId; + + /** + * 我的单价 + */ + @Schema(description = "我的单价", example = "${field.example}") + private BigDecimal myUnitPrice; + + /** + * 当前抽佣比例 + */ + @Schema(description = "当前抽佣比例", example = "${field.example}") + private BigDecimal currentCommissionRate; + + /** + * 项目ID + */ + @Schema(description = "项目ID", example = "${field.example}") + private Long projectId; + + /** + * 用户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/model/vo/promoCode/PromoCodeVO.java b/src/main/java/com/greenorange/promotion/model/vo/promoCode/PromoCodeVO.java index eda5f76..74e455c 100644 --- a/src/main/java/com/greenorange/promotion/model/vo/promoCode/PromoCodeVO.java +++ b/src/main/java/com/greenorange/promotion/model/vo/promoCode/PromoCodeVO.java @@ -23,26 +23,26 @@ public class PromoCodeVO implements Serializable { /** * 推广码信息key */ - @Schema(description = "推广码信息key", example = "${field.example}") + @Schema(description = "推广码信息key", example = "ykxy227") private String promoCodeInfoKey; /** * 推广码链接 */ - @Schema(description = "推广码链接", example = "${field.example}") + @Schema(description = "推广码链接", example = "mp://y04CZgGkCBmIaZd") private String promoCodeLink; /** * 项目ID */ - @Schema(description = "项目ID", example = "${field.example}") + @Schema(description = "项目ID", example = "1") private Long projectId; /** - * 推广码状态 + * 推广码状态(true:占用,false:空闲) */ - @Schema(description = "推广码状态", example = "${field.example}") - private String promoCodeStatus; + @Schema(description = "推广码状态(true:占用,false:空闲)", example = "false") + private Boolean promoCodeStatus; @Serial 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 new file mode 100644 index 0000000..5d17372 --- /dev/null +++ b/src/main/java/com/greenorange/promotion/model/vo/subUserProjectCommission/SubUserProjectCommissionVO.java @@ -0,0 +1,62 @@ +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 +@Schema(description = "下级用户项目明细抽佣 视图对象") +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}") + private Long subUserId; + + /** + * 项目ID + */ + @Schema(description = "项目ID", example = "${field.example}") + private Long projectId; + + /** + * 用户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/ProjectCommissionService.java b/src/main/java/com/greenorange/promotion/service/project/ProjectCommissionService.java new file mode 100644 index 0000000..6e75278 --- /dev/null +++ b/src/main/java/com/greenorange/promotion/service/project/ProjectCommissionService.java @@ -0,0 +1,13 @@ +package com.greenorange.promotion.service.project; + +import com.greenorange.promotion.model.entity.ProjectCommission; +import com.baomidou.mybatisplus.extension.service.IService; + +/** +* @author 35880 +* @description 针对表【project_commission(项目明细抽佣表)】的数据库操作Service +* @createDate 2025-05-09 18:42:17 +*/ +public interface ProjectCommissionService extends IService { + +} diff --git a/src/main/java/com/greenorange/promotion/service/project/SubUserProjectCommissionService.java b/src/main/java/com/greenorange/promotion/service/project/SubUserProjectCommissionService.java new file mode 100644 index 0000000..54eb0f0 --- /dev/null +++ b/src/main/java/com/greenorange/promotion/service/project/SubUserProjectCommissionService.java @@ -0,0 +1,13 @@ +package com.greenorange.promotion.service.project; + +import com.greenorange.promotion.model.entity.SubUserProjectCommission; +import com.baomidou.mybatisplus.extension.service.IService; + +/** +* @author 35880 +* @description 针对表【sub_user_project_commission(下级用户项目明细抽佣表)】的数据库操作Service +* @createDate 2025-05-09 19:06:19 +*/ +public interface SubUserProjectCommissionService extends IService { + +} diff --git a/src/main/java/com/greenorange/promotion/service/project/impl/ProjectCommissionServiceImpl.java b/src/main/java/com/greenorange/promotion/service/project/impl/ProjectCommissionServiceImpl.java new file mode 100644 index 0000000..2b8a338 --- /dev/null +++ b/src/main/java/com/greenorange/promotion/service/project/impl/ProjectCommissionServiceImpl.java @@ -0,0 +1,22 @@ +package com.greenorange.promotion.service.project.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.greenorange.promotion.model.entity.ProjectCommission; +import com.greenorange.promotion.service.project.ProjectCommissionService; +import com.greenorange.promotion.mapper.ProjectCommissionMapper; +import org.springframework.stereotype.Service; + +/** +* @author 35880 +* @description 针对表【project_commission(项目明细抽佣表)】的数据库操作Service实现 +* @createDate 2025-05-09 18:42:17 +*/ +@Service +public class ProjectCommissionServiceImpl extends ServiceImpl + implements ProjectCommissionService{ + +} + + + + diff --git a/src/main/java/com/greenorange/promotion/service/project/impl/SubUserProjectCommissionServiceImpl.java b/src/main/java/com/greenorange/promotion/service/project/impl/SubUserProjectCommissionServiceImpl.java new file mode 100644 index 0000000..0bb1b20 --- /dev/null +++ b/src/main/java/com/greenorange/promotion/service/project/impl/SubUserProjectCommissionServiceImpl.java @@ -0,0 +1,22 @@ +package com.greenorange.promotion.service.project.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.greenorange.promotion.model.entity.SubUserProjectCommission; +import com.greenorange.promotion.service.project.SubUserProjectCommissionService; +import com.greenorange.promotion.mapper.SubUserProjectCommissionMapper; +import org.springframework.stereotype.Service; + +/** +* @author 35880 +* @description 针对表【sub_user_project_commission(下级用户项目明细抽佣表)】的数据库操作Service实现 +* @createDate 2025-05-09 19:06:19 +*/ +@Service +public class SubUserProjectCommissionServiceImpl extends ServiceImpl + implements SubUserProjectCommissionService{ + +} + + + + diff --git a/src/main/resources/mapper/ProjectCommissionMapper.xml b/src/main/resources/mapper/ProjectCommissionMapper.xml new file mode 100644 index 0000000..fe5e721 --- /dev/null +++ b/src/main/resources/mapper/ProjectCommissionMapper.xml @@ -0,0 +1,24 @@ + + + + + + + + + + + + + + + + + + id,projectDetailId,myUnitPrice, + currentCommissionRate,projectId,userId, + isDelete,createTime,updateTime + + diff --git a/src/main/resources/mapper/ProjectMapper.xml b/src/main/resources/mapper/ProjectMapper.xml index 2e82509..ae447f6 100644 --- a/src/main/resources/mapper/ProjectMapper.xml +++ b/src/main/resources/mapper/ProjectMapper.xml @@ -8,6 +8,7 @@ + diff --git a/src/main/resources/mapper/SubUserProjectCommissionMapper.xml b/src/main/resources/mapper/SubUserProjectCommissionMapper.xml new file mode 100644 index 0000000..6ff49cd --- /dev/null +++ b/src/main/resources/mapper/SubUserProjectCommissionMapper.xml @@ -0,0 +1,26 @@ + + + + + + + + + + + + + + + + + + + id,projectDetailId,myUnitPrice, + currentCommissionRate,subUserId,projectId, + userId,isDelete,createTime, + updateTime + +