Commit 800c44a46eede8d592a547d0ff82b99890cc7fc0
1 parent
4cd5b571
code review:会员等级
Showing
25 changed files
with
59 additions
and
48 deletions
yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/level/MemberExperienceLogController.java
| @@ -28,9 +28,7 @@ import java.util.List; | @@ -28,9 +28,7 @@ import java.util.List; | ||
| 28 | import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success; | 28 | import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success; |
| 29 | import static cn.iocoder.yudao.framework.operatelog.core.enums.OperateTypeEnum.EXPORT; | 29 | import static cn.iocoder.yudao.framework.operatelog.core.enums.OperateTypeEnum.EXPORT; |
| 30 | 30 | ||
| 31 | -/** | ||
| 32 | - * @author owen | ||
| 33 | - */ | 31 | +// TODO @疯狂:要不 Log 改成 Record,和 PointRecord 保持一致 |
| 34 | @Tag(name = "管理后台 - 会员经验记录") | 32 | @Tag(name = "管理后台 - 会员经验记录") |
| 35 | @RestController | 33 | @RestController |
| 36 | @RequestMapping("/member/experience-log") | 34 | @RequestMapping("/member/experience-log") |
| @@ -40,6 +38,7 @@ public class MemberExperienceLogController { | @@ -40,6 +38,7 @@ public class MemberExperienceLogController { | ||
| 40 | @Resource | 38 | @Resource |
| 41 | private MemberExperienceLogService experienceLogService; | 39 | private MemberExperienceLogService experienceLogService; |
| 42 | 40 | ||
| 41 | + // TODO @疯狂:不允许删除经验哈 | ||
| 43 | @DeleteMapping("/delete") | 42 | @DeleteMapping("/delete") |
| 44 | @Operation(summary = "删除会员经验记录") | 43 | @Operation(summary = "删除会员经验记录") |
| 45 | @Parameter(name = "id", description = "编号", required = true) | 44 | @Parameter(name = "id", description = "编号", required = true) |
| @@ -58,6 +57,7 @@ public class MemberExperienceLogController { | @@ -58,6 +57,7 @@ public class MemberExperienceLogController { | ||
| 58 | return success(MemberExperienceLogConvert.INSTANCE.convert(experienceLog)); | 57 | return success(MemberExperienceLogConvert.INSTANCE.convert(experienceLog)); |
| 59 | } | 58 | } |
| 60 | 59 | ||
| 60 | + // TODO @疯狂:这个接口可以删除哈,应该用不到 | ||
| 61 | @GetMapping("/list") | 61 | @GetMapping("/list") |
| 62 | @Operation(summary = "获得会员经验记录列表") | 62 | @Operation(summary = "获得会员经验记录列表") |
| 63 | @Parameter(name = "ids", description = "编号列表", required = true, example = "1024,2048") | 63 | @Parameter(name = "ids", description = "编号列表", required = true, example = "1024,2048") |
| @@ -75,6 +75,7 @@ public class MemberExperienceLogController { | @@ -75,6 +75,7 @@ public class MemberExperienceLogController { | ||
| 75 | return success(MemberExperienceLogConvert.INSTANCE.convertPage(pageResult)); | 75 | return success(MemberExperienceLogConvert.INSTANCE.convertPage(pageResult)); |
| 76 | } | 76 | } |
| 77 | 77 | ||
| 78 | + // TODO @疯狂:导出可以先不支持,场景不多 | ||
| 78 | @GetMapping("/export-excel") | 79 | @GetMapping("/export-excel") |
| 79 | @Operation(summary = "导出会员经验记录 Excel") | 80 | @Operation(summary = "导出会员经验记录 Excel") |
| 80 | @PreAuthorize("@ss.hasPermission('member:experience-log:export')") | 81 | @PreAuthorize("@ss.hasPermission('member:experience-log:export')") |
yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/level/MemberLevelController.java
| @@ -2,7 +2,7 @@ package cn.iocoder.yudao.module.member.controller.admin.level; | @@ -2,7 +2,7 @@ package cn.iocoder.yudao.module.member.controller.admin.level; | ||
| 2 | 2 | ||
| 3 | import cn.iocoder.yudao.framework.common.pojo.CommonResult; | 3 | import cn.iocoder.yudao.framework.common.pojo.CommonResult; |
| 4 | import cn.iocoder.yudao.framework.common.pojo.PageResult; | 4 | import cn.iocoder.yudao.framework.common.pojo.PageResult; |
| 5 | -import cn.iocoder.yudao.module.member.controller.admin.level.vo.*; | 5 | +import cn.iocoder.yudao.module.member.controller.admin.level.vo.level.*; |
| 6 | import cn.iocoder.yudao.module.member.convert.level.MemberLevelConvert; | 6 | import cn.iocoder.yudao.module.member.convert.level.MemberLevelConvert; |
| 7 | import cn.iocoder.yudao.module.member.dal.dataobject.level.MemberLevelDO; | 7 | import cn.iocoder.yudao.module.member.dal.dataobject.level.MemberLevelDO; |
| 8 | import cn.iocoder.yudao.module.member.service.level.MemberLevelService; | 8 | import cn.iocoder.yudao.module.member.service.level.MemberLevelService; |
| @@ -20,9 +20,6 @@ import java.util.List; | @@ -20,9 +20,6 @@ import java.util.List; | ||
| 20 | 20 | ||
| 21 | import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success; | 21 | import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success; |
| 22 | 22 | ||
| 23 | -/** | ||
| 24 | - * @author owen | ||
| 25 | - */ | ||
| 26 | @Tag(name = "管理后台 - 会员等级") | 23 | @Tag(name = "管理后台 - 会员等级") |
| 27 | @RestController | 24 | @RestController |
| 28 | @RequestMapping("/member/level") | 25 | @RequestMapping("/member/level") |
| @@ -65,6 +62,7 @@ public class MemberLevelController { | @@ -65,6 +62,7 @@ public class MemberLevelController { | ||
| 65 | return success(MemberLevelConvert.INSTANCE.convert(level)); | 62 | return success(MemberLevelConvert.INSTANCE.convert(level)); |
| 66 | } | 63 | } |
| 67 | 64 | ||
| 65 | + // TODO @疯狂:这个应该用不到哈 | ||
| 68 | @GetMapping("/list") | 66 | @GetMapping("/list") |
| 69 | @Operation(summary = "获得会员等级列表") | 67 | @Operation(summary = "获得会员等级列表") |
| 70 | @Parameter(name = "ids", description = "编号列表", required = true, example = "1024,2048") | 68 | @Parameter(name = "ids", description = "编号列表", required = true, example = "1024,2048") |
| @@ -83,6 +81,7 @@ public class MemberLevelController { | @@ -83,6 +81,7 @@ public class MemberLevelController { | ||
| 83 | return success(MemberLevelConvert.INSTANCE.convertSimpleList(list)); | 81 | return success(MemberLevelConvert.INSTANCE.convertSimpleList(list)); |
| 84 | } | 82 | } |
| 85 | 83 | ||
| 84 | + // TODO @疯狂:是不是不做分页,直接 list 就好啦;返回的时候,按照经验排序下哈; | ||
| 86 | @GetMapping("/page") | 85 | @GetMapping("/page") |
| 87 | @Operation(summary = "获得会员等级分页") | 86 | @Operation(summary = "获得会员等级分页") |
| 88 | @PreAuthorize("@ss.hasPermission('member:level:query')") | 87 | @PreAuthorize("@ss.hasPermission('member:level:query')") |
yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/level/MemberLevelLogController.java
| @@ -28,9 +28,7 @@ import java.util.List; | @@ -28,9 +28,7 @@ import java.util.List; | ||
| 28 | import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success; | 28 | import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success; |
| 29 | import static cn.iocoder.yudao.framework.operatelog.core.enums.OperateTypeEnum.EXPORT; | 29 | import static cn.iocoder.yudao.framework.operatelog.core.enums.OperateTypeEnum.EXPORT; |
| 30 | 30 | ||
| 31 | -/** | ||
| 32 | - * @author owen | ||
| 33 | - */ | 31 | +// TODO @疯狂:是不是不用这个 controller;因为日志只是为了记录,db 可以查询、和审计即可,目前暂时不需要开放出来; |
| 34 | @Tag(name = "管理后台 - 会员等级记录") | 32 | @Tag(name = "管理后台 - 会员等级记录") |
| 35 | @RestController | 33 | @RestController |
| 36 | @RequestMapping("/member/level-log") | 34 | @RequestMapping("/member/level-log") |
| @@ -40,6 +38,7 @@ public class MemberLevelLogController { | @@ -40,6 +38,7 @@ public class MemberLevelLogController { | ||
| 40 | @Resource | 38 | @Resource |
| 41 | private MemberLevelLogService levelLogService; | 39 | private MemberLevelLogService levelLogService; |
| 42 | 40 | ||
| 41 | + // TODO @疯狂:这个不允许删除哈 | ||
| 43 | @DeleteMapping("/delete") | 42 | @DeleteMapping("/delete") |
| 44 | @Operation(summary = "删除会员等级记录") | 43 | @Operation(summary = "删除会员等级记录") |
| 45 | @Parameter(name = "id", description = "编号", required = true) | 44 | @Parameter(name = "id", description = "编号", required = true) |
| @@ -58,6 +57,7 @@ public class MemberLevelLogController { | @@ -58,6 +57,7 @@ public class MemberLevelLogController { | ||
| 58 | return success(MemberLevelLogConvert.INSTANCE.convert(levelLog)); | 57 | return success(MemberLevelLogConvert.INSTANCE.convert(levelLog)); |
| 59 | } | 58 | } |
| 60 | 59 | ||
| 60 | + // TODO @疯狂:这个接口,应该没用 | ||
| 61 | @GetMapping("/list") | 61 | @GetMapping("/list") |
| 62 | @Operation(summary = "获得会员等级记录列表") | 62 | @Operation(summary = "获得会员等级记录列表") |
| 63 | @Parameter(name = "ids", description = "编号列表", required = true, example = "1024,2048") | 63 | @Parameter(name = "ids", description = "编号列表", required = true, example = "1024,2048") |
| @@ -75,6 +75,7 @@ public class MemberLevelLogController { | @@ -75,6 +75,7 @@ public class MemberLevelLogController { | ||
| 75 | return success(MemberLevelLogConvert.INSTANCE.convertPage(pageResult)); | 75 | return success(MemberLevelLogConvert.INSTANCE.convertPage(pageResult)); |
| 76 | } | 76 | } |
| 77 | 77 | ||
| 78 | + // TODO @疯狂:导出可以去掉先 | ||
| 78 | @GetMapping("/export-excel") | 79 | @GetMapping("/export-excel") |
| 79 | @Operation(summary = "导出会员等级记录 Excel") | 80 | @Operation(summary = "导出会员等级记录 Excel") |
| 80 | @PreAuthorize("@ss.hasPermission('member:level-log:export')") | 81 | @PreAuthorize("@ss.hasPermission('member:level-log:export')") |
yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/level/vo/experience/MemberExperienceLogBaseVO.java
| @@ -38,7 +38,7 @@ public class MemberExperienceLogBaseVO { | @@ -38,7 +38,7 @@ public class MemberExperienceLogBaseVO { | ||
| 38 | @NotNull(message = "变更后的经验不能为空") | 38 | @NotNull(message = "变更后的经验不能为空") |
| 39 | private Integer totalExperience; | 39 | private Integer totalExperience; |
| 40 | 40 | ||
| 41 | - @Schema(description = "描述", requiredMode = Schema.RequiredMode.REQUIRED, example = "下单增加100经验") | 41 | + @Schema(description = "描述", requiredMode = Schema.RequiredMode.REQUIRED, example = "下单增加 100 经验") |
| 42 | @NotNull(message = "描述不能为空") | 42 | @NotNull(message = "描述不能为空") |
| 43 | private String description; | 43 | private String description; |
| 44 | 44 |
yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/level/vo/MemberLevelBaseVO.java renamed to yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/level/vo/level/MemberLevelBaseVO.java
| 1 | -package cn.iocoder.yudao.module.member.controller.admin.level.vo; | 1 | +package cn.iocoder.yudao.module.member.controller.admin.level.vo.level; |
| 2 | 2 | ||
| 3 | +import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum; | ||
| 4 | +import cn.iocoder.yudao.framework.common.validation.InEnum; | ||
| 3 | import io.swagger.v3.oas.annotations.media.Schema; | 5 | import io.swagger.v3.oas.annotations.media.Schema; |
| 4 | import lombok.Data; | 6 | import lombok.Data; |
| 5 | import org.hibernate.validator.constraints.Range; | 7 | import org.hibernate.validator.constraints.Range; |
| @@ -24,29 +26,30 @@ public class MemberLevelBaseVO { | @@ -24,29 +26,30 @@ public class MemberLevelBaseVO { | ||
| 24 | 26 | ||
| 25 | @Schema(description = "升级经验", requiredMode = Schema.RequiredMode.REQUIRED, example = "100") | 27 | @Schema(description = "升级经验", requiredMode = Schema.RequiredMode.REQUIRED, example = "100") |
| 26 | @NotNull(message = "升级经验不能为空") | 28 | @NotNull(message = "升级经验不能为空") |
| 27 | - @Positive(message = "升级经验必须大于0") | 29 | + @Positive(message = "升级经验必须大于 0") |
| 28 | private Integer experience; | 30 | private Integer experience; |
| 29 | 31 | ||
| 30 | @Schema(description = "等级", requiredMode = Schema.RequiredMode.REQUIRED, example = "1") | 32 | @Schema(description = "等级", requiredMode = Schema.RequiredMode.REQUIRED, example = "1") |
| 31 | @NotNull(message = "等级不能为空") | 33 | @NotNull(message = "等级不能为空") |
| 32 | - @Positive(message = "等级必须大于0") | 34 | + @Positive(message = "等级必须大于 0") |
| 33 | private Integer level; | 35 | private Integer level; |
| 34 | 36 | ||
| 35 | @Schema(description = "享受折扣", requiredMode = Schema.RequiredMode.REQUIRED, example = "98") | 37 | @Schema(description = "享受折扣", requiredMode = Schema.RequiredMode.REQUIRED, example = "98") |
| 36 | @NotNull(message = "享受折扣不能为空") | 38 | @NotNull(message = "享受折扣不能为空") |
| 37 | - @Range(min = 0, max = 100, message = "享受折扣的范围为0-100") | 39 | + @Range(min = 0, max = 100, message = "享受折扣的范围为 0-100") |
| 38 | private Integer discount; | 40 | private Integer discount; |
| 39 | 41 | ||
| 40 | @Schema(description = "等级图标", example = "https://www.iocoder.cn/yudao.jpg") | 42 | @Schema(description = "等级图标", example = "https://www.iocoder.cn/yudao.jpg") |
| 41 | - @URL(message = "等级图标 必须是 URL 格式") | 43 | + @URL(message = "等级图标必须是 URL 格式") |
| 42 | private String icon; | 44 | private String icon; |
| 43 | 45 | ||
| 44 | @Schema(description = "等级背景图", example = "https://www.iocoder.cn/yudao.jpg") | 46 | @Schema(description = "等级背景图", example = "https://www.iocoder.cn/yudao.jpg") |
| 45 | - @URL(message = "等级背景图 必须是 URL 格式") | 47 | + @URL(message = "等级背景图必须是 URL 格式") |
| 46 | private String backgroundUrl; | 48 | private String backgroundUrl; |
| 47 | 49 | ||
| 48 | @Schema(description = "状态", requiredMode = Schema.RequiredMode.REQUIRED, example = "1") | 50 | @Schema(description = "状态", requiredMode = Schema.RequiredMode.REQUIRED, example = "1") |
| 49 | @NotNull(message = "状态不能为空") | 51 | @NotNull(message = "状态不能为空") |
| 52 | + @InEnum(CommonStatusEnum.class) | ||
| 50 | private Integer status; | 53 | private Integer status; |
| 51 | 54 | ||
| 52 | } | 55 | } |
yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/level/vo/MemberLevelCreateReqVO.java renamed to yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/level/vo/level/MemberLevelCreateReqVO.java
| 1 | -package cn.iocoder.yudao.module.member.controller.admin.level.vo; | 1 | +package cn.iocoder.yudao.module.member.controller.admin.level.vo.level; |
| 2 | 2 | ||
| 3 | import io.swagger.v3.oas.annotations.media.Schema; | 3 | import io.swagger.v3.oas.annotations.media.Schema; |
| 4 | import lombok.Data; | 4 | import lombok.Data; |
| 5 | import lombok.EqualsAndHashCode; | 5 | import lombok.EqualsAndHashCode; |
| 6 | import lombok.ToString; | 6 | import lombok.ToString; |
| 7 | 7 | ||
| 8 | +// TODO @疯狂:项目的 vo 和 controller 不写 author 信息哈,只写 swagger 注解 | ||
| 8 | /** | 9 | /** |
| 9 | * @author owen | 10 | * @author owen |
| 10 | */ | 11 | */ |
yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/level/vo/MemberLevelPageReqVO.java renamed to yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/level/vo/level/MemberLevelPageReqVO.java
| 1 | -package cn.iocoder.yudao.module.member.controller.admin.level.vo; | 1 | +package cn.iocoder.yudao.module.member.controller.admin.level.vo.level; |
| 2 | 2 | ||
| 3 | import cn.iocoder.yudao.framework.common.pojo.PageParam; | 3 | import cn.iocoder.yudao.framework.common.pojo.PageParam; |
| 4 | import io.swagger.v3.oas.annotations.media.Schema; | 4 | import io.swagger.v3.oas.annotations.media.Schema; |
yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/level/vo/MemberLevelRespVO.java renamed to yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/level/vo/level/MemberLevelRespVO.java
yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/level/vo/MemberLevelSimpleRespVO.java renamed to yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/level/vo/level/MemberLevelSimpleRespVO.java
| 1 | -package cn.iocoder.yudao.module.member.controller.admin.level.vo; | 1 | +package cn.iocoder.yudao.module.member.controller.admin.level.vo.level; |
| 2 | 2 | ||
| 3 | import io.swagger.v3.oas.annotations.media.Schema; | 3 | import io.swagger.v3.oas.annotations.media.Schema; |
| 4 | import lombok.Data; | 4 | import lombok.Data; |
| 5 | import lombok.EqualsAndHashCode; | 5 | import lombok.EqualsAndHashCode; |
| 6 | import lombok.ToString; | 6 | import lombok.ToString; |
| 7 | 7 | ||
| 8 | -/** | ||
| 9 | - * @author owen | ||
| 10 | - */ | 8 | +// TODO @疯狂:不需要继承 MemberLevelBaseVO |
| 11 | @Schema(description = "管理后台 - 会员等级 Response VO") | 9 | @Schema(description = "管理后台 - 会员等级 Response VO") |
| 12 | @Data | 10 | @Data |
| 13 | @EqualsAndHashCode(callSuper = true) | 11 | @EqualsAndHashCode(callSuper = true) |
yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/level/vo/MemberLevelUpdateReqVO.java renamed to yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/level/vo/level/MemberLevelUpdateReqVO.java
yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/tag/MemberTagController.java
| @@ -69,7 +69,7 @@ public class MemberTagController { | @@ -69,7 +69,7 @@ public class MemberTagController { | ||
| 69 | @Operation(summary = "获取会员标签精简信息列表", description = "只包含被开启的会员标签,主要用于前端的下拉选项") | 69 | @Operation(summary = "获取会员标签精简信息列表", description = "只包含被开启的会员标签,主要用于前端的下拉选项") |
| 70 | public CommonResult<List<MemberTagRespVO>> getSimpleTagList() { | 70 | public CommonResult<List<MemberTagRespVO>> getSimpleTagList() { |
| 71 | // 获用户列表,只要开启状态的 | 71 | // 获用户列表,只要开启状态的 |
| 72 | - List<MemberTagDO> list = tagService.getList(); | 72 | + List<MemberTagDO> list = tagService.getTagList(); |
| 73 | // 排序后,返回给前端 | 73 | // 排序后,返回给前端 |
| 74 | return success(MemberTagConvert.INSTANCE.convertList(list)); | 74 | return success(MemberTagConvert.INSTANCE.convertList(list)); |
| 75 | } | 75 | } |
yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/user/MemberUserController.java
| @@ -76,10 +76,9 @@ public class MemberUserController { | @@ -76,10 +76,9 @@ public class MemberUserController { | ||
| 76 | .flatMap(Collection::stream) | 76 | .flatMap(Collection::stream) |
| 77 | .collect(Collectors.toSet()); | 77 | .collect(Collectors.toSet()); |
| 78 | List<MemberTagDO> tags = memberTagService.getTagList(tagIds); | 78 | List<MemberTagDO> tags = memberTagService.getTagList(tagIds); |
| 79 | - | ||
| 80 | // 处理会员级别返显 | 79 | // 处理会员级别返显 |
| 81 | List<MemberLevelDO> levels = memberLevelService.getEnableLevelList(); | 80 | List<MemberLevelDO> levels = memberLevelService.getEnableLevelList(); |
| 82 | - | 81 | + // 拼接 |
| 83 | return success(MemberUserConvert.INSTANCE.convertPage(pageResult, tags, levels)); | 82 | return success(MemberUserConvert.INSTANCE.convertPage(pageResult, tags, levels)); |
| 84 | } | 83 | } |
| 85 | 84 |
yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/convert/level/MemberLevelConvert.java
| 1 | package cn.iocoder.yudao.module.member.convert.level; | 1 | package cn.iocoder.yudao.module.member.convert.level; |
| 2 | 2 | ||
| 3 | import cn.iocoder.yudao.framework.common.pojo.PageResult; | 3 | import cn.iocoder.yudao.framework.common.pojo.PageResult; |
| 4 | -import cn.iocoder.yudao.module.member.controller.admin.level.vo.MemberLevelCreateReqVO; | ||
| 5 | -import cn.iocoder.yudao.module.member.controller.admin.level.vo.MemberLevelRespVO; | ||
| 6 | -import cn.iocoder.yudao.module.member.controller.admin.level.vo.MemberLevelSimpleRespVO; | ||
| 7 | -import cn.iocoder.yudao.module.member.controller.admin.level.vo.MemberLevelUpdateReqVO; | 4 | +import cn.iocoder.yudao.module.member.controller.admin.level.vo.level.MemberLevelCreateReqVO; |
| 5 | +import cn.iocoder.yudao.module.member.controller.admin.level.vo.level.MemberLevelRespVO; | ||
| 6 | +import cn.iocoder.yudao.module.member.controller.admin.level.vo.level.MemberLevelSimpleRespVO; | ||
| 7 | +import cn.iocoder.yudao.module.member.controller.admin.level.vo.level.MemberLevelUpdateReqVO; | ||
| 8 | import cn.iocoder.yudao.module.member.dal.dataobject.level.MemberLevelDO; | 8 | import cn.iocoder.yudao.module.member.dal.dataobject.level.MemberLevelDO; |
| 9 | import org.mapstruct.Mapper; | 9 | import org.mapstruct.Mapper; |
| 10 | import org.mapstruct.factory.Mappers; | 10 | import org.mapstruct.factory.Mappers; |
yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/convert/user/MemberUserConvert.java
| @@ -44,8 +44,6 @@ public interface MemberUserConvert { | @@ -44,8 +44,6 @@ public interface MemberUserConvert { | ||
| 44 | // 处理关联数据 | 44 | // 处理关联数据 |
| 45 | Map<Long, String> tagMap = convertMap(tags, MemberTagDO::getId, MemberTagDO::getName); | 45 | Map<Long, String> tagMap = convertMap(tags, MemberTagDO::getId, MemberTagDO::getName); |
| 46 | Map<Long, String> levelMap = convertMap(levels, MemberLevelDO::getId, MemberLevelDO::getName); | 46 | Map<Long, String> levelMap = convertMap(levels, MemberLevelDO::getId, MemberLevelDO::getName); |
| 47 | - | ||
| 48 | - // 填充关联数据 | ||
| 49 | for (MemberUserRespVO vo : result.getList()) { | 47 | for (MemberUserRespVO vo : result.getList()) { |
| 50 | vo.setTagNames(convertList(vo.getTagIds(), tagMap::get)); | 48 | vo.setTagNames(convertList(vo.getTagIds(), tagMap::get)); |
| 51 | vo.setLevelName(MapUtil.getStr(levelMap, vo.getLevelId(), StrUtil.EMPTY)); | 49 | vo.setLevelName(MapUtil.getStr(levelMap, vo.getLevelId(), StrUtil.EMPTY)); |
yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/dal/dataobject/level/MemberLevelDO.java
yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/dal/dataobject/level/MemberLevelLogDO.java
yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/dal/dataobject/user/MemberUserDO.java
| @@ -4,6 +4,7 @@ import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum; | @@ -4,6 +4,7 @@ import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum; | ||
| 4 | import cn.iocoder.yudao.framework.ip.core.Area; | 4 | import cn.iocoder.yudao.framework.ip.core.Area; |
| 5 | import cn.iocoder.yudao.framework.mybatis.core.type.LongListTypeHandler; | 5 | import cn.iocoder.yudao.framework.mybatis.core.type.LongListTypeHandler; |
| 6 | import cn.iocoder.yudao.framework.tenant.core.db.TenantBaseDO; | 6 | import cn.iocoder.yudao.framework.tenant.core.db.TenantBaseDO; |
| 7 | +import cn.iocoder.yudao.module.member.dal.dataobject.level.MemberLevelDO; | ||
| 7 | import cn.iocoder.yudao.module.system.enums.common.SexEnum; | 8 | import cn.iocoder.yudao.module.system.enums.common.SexEnum; |
| 8 | import com.baomidou.mybatisplus.annotation.KeySequence; | 9 | import com.baomidou.mybatisplus.annotation.KeySequence; |
| 9 | import com.baomidou.mybatisplus.annotation.TableField; | 10 | import com.baomidou.mybatisplus.annotation.TableField; |
| @@ -119,6 +120,8 @@ public class MemberUserDO extends TenantBaseDO { | @@ -119,6 +120,8 @@ public class MemberUserDO extends TenantBaseDO { | ||
| 119 | 120 | ||
| 120 | /** | 121 | /** |
| 121 | * 会员级别编号 | 122 | * 会员级别编号 |
| 123 | + * | ||
| 124 | + * 关联 {@link MemberLevelDO#getLevel()} 字段 | ||
| 122 | */ | 125 | */ |
| 123 | private Long levelId; | 126 | private Long levelId; |
| 124 | /** | 127 | /** |
| @@ -126,5 +129,4 @@ public class MemberUserDO extends TenantBaseDO { | @@ -126,5 +129,4 @@ public class MemberUserDO extends TenantBaseDO { | ||
| 126 | */ | 129 | */ |
| 127 | private Integer experience; | 130 | private Integer experience; |
| 128 | 131 | ||
| 129 | - // TODO 积分等等 | ||
| 130 | } | 132 | } |
yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/dal/mysql/level/MemberLevelMapper.java
| @@ -3,7 +3,7 @@ package cn.iocoder.yudao.module.member.dal.mysql.level; | @@ -3,7 +3,7 @@ package cn.iocoder.yudao.module.member.dal.mysql.level; | ||
| 3 | import cn.iocoder.yudao.framework.common.pojo.PageResult; | 3 | import cn.iocoder.yudao.framework.common.pojo.PageResult; |
| 4 | import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX; | 4 | import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX; |
| 5 | import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX; | 5 | import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX; |
| 6 | -import cn.iocoder.yudao.module.member.controller.admin.level.vo.MemberLevelPageReqVO; | 6 | +import cn.iocoder.yudao.module.member.controller.admin.level.vo.level.MemberLevelPageReqVO; |
| 7 | import cn.iocoder.yudao.module.member.dal.dataobject.level.MemberLevelDO; | 7 | import cn.iocoder.yudao.module.member.dal.dataobject.level.MemberLevelDO; |
| 8 | import org.apache.ibatis.annotations.Mapper; | 8 | import org.apache.ibatis.annotations.Mapper; |
| 9 | 9 |
yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/dal/mysql/user/MemberUserMapper.java
| @@ -49,6 +49,7 @@ public interface MemberUserMapper extends BaseMapperX<MemberUserDO> { | @@ -49,6 +49,7 @@ public interface MemberUserMapper extends BaseMapperX<MemberUserDO> { | ||
| 49 | .orderByDesc(MemberUserDO::getId)); | 49 | .orderByDesc(MemberUserDO::getId)); |
| 50 | } | 50 | } |
| 51 | 51 | ||
| 52 | + // TODO @疯狂:命名可以改成 updateUserLevelToNull;db 侧的操作,尽量无业务含义,更多是 select、update、insert 操作 | ||
| 52 | /** | 53 | /** |
| 53 | * 取消会员的等级 | 54 | * 取消会员的等级 |
| 54 | * | 55 | * |
yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/level/MemberLevelService.java
| @@ -2,9 +2,9 @@ package cn.iocoder.yudao.module.member.service.level; | @@ -2,9 +2,9 @@ package cn.iocoder.yudao.module.member.service.level; | ||
| 2 | 2 | ||
| 3 | import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum; | 3 | import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum; |
| 4 | import cn.iocoder.yudao.framework.common.pojo.PageResult; | 4 | import cn.iocoder.yudao.framework.common.pojo.PageResult; |
| 5 | -import cn.iocoder.yudao.module.member.controller.admin.level.vo.MemberLevelCreateReqVO; | ||
| 6 | -import cn.iocoder.yudao.module.member.controller.admin.level.vo.MemberLevelPageReqVO; | ||
| 7 | -import cn.iocoder.yudao.module.member.controller.admin.level.vo.MemberLevelUpdateReqVO; | 5 | +import cn.iocoder.yudao.module.member.controller.admin.level.vo.level.MemberLevelCreateReqVO; |
| 6 | +import cn.iocoder.yudao.module.member.controller.admin.level.vo.level.MemberLevelPageReqVO; | ||
| 7 | +import cn.iocoder.yudao.module.member.controller.admin.level.vo.level.MemberLevelUpdateReqVO; | ||
| 8 | import cn.iocoder.yudao.module.member.dal.dataobject.level.MemberLevelDO; | 8 | import cn.iocoder.yudao.module.member.dal.dataobject.level.MemberLevelDO; |
| 9 | import cn.iocoder.yudao.module.member.dal.dataobject.user.MemberUserDO; | 9 | import cn.iocoder.yudao.module.member.dal.dataobject.user.MemberUserDO; |
| 10 | import cn.iocoder.yudao.module.member.enums.MemberExperienceBizTypeEnum; | 10 | import cn.iocoder.yudao.module.member.enums.MemberExperienceBizTypeEnum; |
yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/level/MemberLevelServiceImpl.java
| @@ -6,9 +6,9 @@ import cn.hutool.core.util.ObjUtil; | @@ -6,9 +6,9 @@ import cn.hutool.core.util.ObjUtil; | ||
| 6 | import cn.hutool.core.util.ObjectUtil; | 6 | import cn.hutool.core.util.ObjectUtil; |
| 7 | import cn.hutool.core.util.StrUtil; | 7 | import cn.hutool.core.util.StrUtil; |
| 8 | import cn.iocoder.yudao.framework.common.pojo.PageResult; | 8 | import cn.iocoder.yudao.framework.common.pojo.PageResult; |
| 9 | -import cn.iocoder.yudao.module.member.controller.admin.level.vo.MemberLevelCreateReqVO; | ||
| 10 | -import cn.iocoder.yudao.module.member.controller.admin.level.vo.MemberLevelPageReqVO; | ||
| 11 | -import cn.iocoder.yudao.module.member.controller.admin.level.vo.MemberLevelUpdateReqVO; | 9 | +import cn.iocoder.yudao.module.member.controller.admin.level.vo.level.MemberLevelCreateReqVO; |
| 10 | +import cn.iocoder.yudao.module.member.controller.admin.level.vo.level.MemberLevelPageReqVO; | ||
| 11 | +import cn.iocoder.yudao.module.member.controller.admin.level.vo.level.MemberLevelUpdateReqVO; | ||
| 12 | import cn.iocoder.yudao.module.member.convert.level.MemberLevelConvert; | 12 | import cn.iocoder.yudao.module.member.convert.level.MemberLevelConvert; |
| 13 | import cn.iocoder.yudao.module.member.dal.dataobject.level.MemberLevelDO; | 13 | import cn.iocoder.yudao.module.member.dal.dataobject.level.MemberLevelDO; |
| 14 | import cn.iocoder.yudao.module.member.dal.dataobject.user.MemberUserDO; | 14 | import cn.iocoder.yudao.module.member.dal.dataobject.user.MemberUserDO; |
| @@ -74,6 +74,7 @@ public class MemberLevelServiceImpl implements MemberLevelService { | @@ -74,6 +74,7 @@ public class MemberLevelServiceImpl implements MemberLevelService { | ||
| 74 | 74 | ||
| 75 | @Override | 75 | @Override |
| 76 | public void deleteLevel(Long id) { | 76 | public void deleteLevel(Long id) { |
| 77 | + // TODO @疯狂:校验是否有用户使用该等级 | ||
| 77 | // 校验存在 | 78 | // 校验存在 |
| 78 | validateLevelExists(id); | 79 | validateLevelExists(id); |
| 79 | // 删除 | 80 | // 删除 |
yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/tag/MemberTagService.java
yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/tag/MemberTagServiceImpl.java
| @@ -106,7 +106,7 @@ public class MemberTagServiceImpl implements MemberTagService { | @@ -106,7 +106,7 @@ public class MemberTagServiceImpl implements MemberTagService { | ||
| 106 | } | 106 | } |
| 107 | 107 | ||
| 108 | @Override | 108 | @Override |
| 109 | - public List<MemberTagDO> getList() { | 109 | + public List<MemberTagDO> getTagList() { |
| 110 | return tagMapper.selectList(); | 110 | return tagMapper.selectList(); |
| 111 | } | 111 | } |
| 112 | 112 |
yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/user/MemberUserServiceImpl.java
| @@ -184,8 +184,8 @@ public class MemberUserServiceImpl implements MemberUserService { | @@ -184,8 +184,8 @@ public class MemberUserServiceImpl implements MemberUserService { | ||
| 184 | return passwordEncoder.encode(password); | 184 | return passwordEncoder.encode(password); |
| 185 | } | 185 | } |
| 186 | 186 | ||
| 187 | - @Transactional(rollbackFor = Exception.class) | ||
| 188 | @Override | 187 | @Override |
| 188 | + @Transactional(rollbackFor = Exception.class) | ||
| 189 | public void updateUser(MemberUserUpdateReqVO updateReqVO) { | 189 | public void updateUser(MemberUserUpdateReqVO updateReqVO) { |
| 190 | // 校验存在 | 190 | // 校验存在 |
| 191 | MemberUserDO user = validateUserExists(updateReqVO.getId()); | 191 | MemberUserDO user = validateUserExists(updateReqVO.getId()); |
| @@ -197,6 +197,7 @@ public class MemberUserServiceImpl implements MemberUserService { | @@ -197,6 +197,7 @@ public class MemberUserServiceImpl implements MemberUserService { | ||
| 197 | memberUserMapper.updateById(updateObj); | 197 | memberUserMapper.updateById(updateObj); |
| 198 | 198 | ||
| 199 | // 会员级别修改 | 199 | // 会员级别修改 |
| 200 | + // TODO @疯狂:修改用户等级,要不要单独一个前端操作 + 接口;因为它是个相对严肃独立的动作 | ||
| 200 | memberLevelService.updateUserLevel(user, updateReqVO.getLevelId(), updateReqVO.getLevelReason()); | 201 | memberLevelService.updateUserLevel(user, updateReqVO.getLevelId(), updateReqVO.getLevelReason()); |
| 201 | } | 202 | } |
| 202 | 203 |
yudao-module-member/yudao-module-member-biz/src/test/java/cn/iocoder/yudao/module/member/service/level/MemberLevelServiceImplTest.java
| @@ -4,9 +4,9 @@ import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum; | @@ -4,9 +4,9 @@ import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum; | ||
| 4 | import cn.iocoder.yudao.framework.common.pojo.PageResult; | 4 | import cn.iocoder.yudao.framework.common.pojo.PageResult; |
| 5 | import cn.iocoder.yudao.framework.common.util.collection.ArrayUtils; | 5 | import cn.iocoder.yudao.framework.common.util.collection.ArrayUtils; |
| 6 | import cn.iocoder.yudao.framework.test.core.ut.BaseDbUnitTest; | 6 | import cn.iocoder.yudao.framework.test.core.ut.BaseDbUnitTest; |
| 7 | -import cn.iocoder.yudao.module.member.controller.admin.level.vo.MemberLevelCreateReqVO; | ||
| 8 | -import cn.iocoder.yudao.module.member.controller.admin.level.vo.MemberLevelPageReqVO; | ||
| 9 | -import cn.iocoder.yudao.module.member.controller.admin.level.vo.MemberLevelUpdateReqVO; | 7 | +import cn.iocoder.yudao.module.member.controller.admin.level.vo.level.MemberLevelCreateReqVO; |
| 8 | +import cn.iocoder.yudao.module.member.controller.admin.level.vo.level.MemberLevelPageReqVO; | ||
| 9 | +import cn.iocoder.yudao.module.member.controller.admin.level.vo.level.MemberLevelUpdateReqVO; | ||
| 10 | import cn.iocoder.yudao.module.member.dal.dataobject.level.MemberLevelDO; | 10 | import cn.iocoder.yudao.module.member.dal.dataobject.level.MemberLevelDO; |
| 11 | import cn.iocoder.yudao.module.member.dal.mysql.level.MemberLevelMapper; | 11 | import cn.iocoder.yudao.module.member.dal.mysql.level.MemberLevelMapper; |
| 12 | import org.junit.jupiter.api.Test; | 12 | import org.junit.jupiter.api.Test; |
| @@ -25,6 +25,7 @@ import static cn.iocoder.yudao.framework.test.core.util.RandomUtils.*; | @@ -25,6 +25,7 @@ import static cn.iocoder.yudao.framework.test.core.util.RandomUtils.*; | ||
| 25 | import static cn.iocoder.yudao.module.member.enums.ErrorCodeConstants.*; | 25 | import static cn.iocoder.yudao.module.member.enums.ErrorCodeConstants.*; |
| 26 | import static org.junit.jupiter.api.Assertions.*; | 26 | import static org.junit.jupiter.api.Assertions.*; |
| 27 | 27 | ||
| 28 | +// TODO 芋艿:完全 review 完,在去 review 单测 | ||
| 28 | /** | 29 | /** |
| 29 | * {@link MemberLevelServiceImpl} 的单元测试类 | 30 | * {@link MemberLevelServiceImpl} 的单元测试类 |
| 30 | * | 31 | * |