Commit be2ee905df0aa0f7da3edaa2ef2f96926b1079f0

Authored by YunaiV
1 parent 41770717

code review:积分模块的实现

Showing 36 changed files with 293 additions and 457 deletions
yudao-module-member/yudao-module-member-api/src/main/java/cn/iocoder/yudao/module/member/api/user/MemberUserApi.java
@@ -29,7 +29,7 @@ public interface MemberUserApi { @@ -29,7 +29,7 @@ public interface MemberUserApi {
29 * @param ids 用户编号的数组 29 * @param ids 用户编号的数组
30 * @return 用户信息们 30 * @return 用户信息们
31 */ 31 */
32 - List<MemberUserRespDTO> getUsers(Collection<Long> ids); 32 + List<MemberUserRespDTO> getUserList(Collection<Long> ids);
33 33
34 /** 34 /**
35 * 获得会员用户 Map 35 * 获得会员用户 Map
@@ -38,7 +38,7 @@ public interface MemberUserApi { @@ -38,7 +38,7 @@ public interface MemberUserApi {
38 * @return 会员用户 Map 38 * @return 会员用户 Map
39 */ 39 */
40 default Map<Long, MemberUserRespDTO> getUserMap(Collection<Long> ids) { 40 default Map<Long, MemberUserRespDTO> getUserMap(Collection<Long> ids) {
41 - return convertMap(getUsers(ids), MemberUserRespDTO::getId); 41 + return convertMap(getUserList(ids), MemberUserRespDTO::getId);
42 } 42 }
43 43
44 /** 44 /**
yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/api/user/MemberUserApiImpl.java
@@ -30,7 +30,7 @@ public class MemberUserApiImpl implements MemberUserApi { @@ -30,7 +30,7 @@ public class MemberUserApiImpl implements MemberUserApi {
30 } 30 }
31 31
32 @Override 32 @Override
33 - public List<MemberUserRespDTO> getUsers(Collection<Long> ids) { 33 + public List<MemberUserRespDTO> getUserList(Collection<Long> ids) {
34 return UserConvert.INSTANCE.convertList2(userService.getUserList(ids)); 34 return UserConvert.INSTANCE.convertList2(userService.getUserList(ids));
35 } 35 }
36 36
yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/point/MemberPointConfigController.java
@@ -17,6 +17,7 @@ import javax.validation.Valid; @@ -17,6 +17,7 @@ import javax.validation.Valid;
17 17
18 import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success; 18 import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
19 19
  20 +// TODO @xiaqing:url 使用 member 作为前缀
20 @Tag(name = "管理后台 - 会员积分设置") 21 @Tag(name = "管理后台 - 会员积分设置")
21 @RestController 22 @RestController
22 @RequestMapping("/point/config") 23 @RequestMapping("/point/config")
yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/point/MemberPointRecordController.java
@@ -8,24 +8,24 @@ import cn.iocoder.yudao.module.member.controller.admin.point.vo.recrod.MemberPoi @@ -8,24 +8,24 @@ import cn.iocoder.yudao.module.member.controller.admin.point.vo.recrod.MemberPoi
8 import cn.iocoder.yudao.module.member.controller.admin.point.vo.recrod.MemberPointRecordRespVO; 8 import cn.iocoder.yudao.module.member.controller.admin.point.vo.recrod.MemberPointRecordRespVO;
9 import cn.iocoder.yudao.module.member.convert.point.MemberPointRecordConvert; 9 import cn.iocoder.yudao.module.member.convert.point.MemberPointRecordConvert;
10 import cn.iocoder.yudao.module.member.dal.dataobject.point.MemberPointRecordDO; 10 import cn.iocoder.yudao.module.member.dal.dataobject.point.MemberPointRecordDO;
11 -import cn.iocoder.yudao.module.member.dal.dataobject.signin.MemberSignInRecordDO;  
12 import cn.iocoder.yudao.module.member.service.point.MemberPointRecordService; 11 import cn.iocoder.yudao.module.member.service.point.MemberPointRecordService;
13 import io.swagger.v3.oas.annotations.Operation; 12 import io.swagger.v3.oas.annotations.Operation;
14 import io.swagger.v3.oas.annotations.tags.Tag; 13 import io.swagger.v3.oas.annotations.tags.Tag;
15 -import org.apache.commons.lang3.StringUtils;  
16 import org.springframework.security.access.prepost.PreAuthorize; 14 import org.springframework.security.access.prepost.PreAuthorize;
17 import org.springframework.util.CollectionUtils; 15 import org.springframework.util.CollectionUtils;
18 import org.springframework.validation.annotation.Validated; 16 import org.springframework.validation.annotation.Validated;
19 -import org.springframework.web.bind.annotation.*; 17 +import org.springframework.web.bind.annotation.GetMapping;
  18 +import org.springframework.web.bind.annotation.RequestMapping;
  19 +import org.springframework.web.bind.annotation.RestController;
20 20
21 import javax.annotation.Resource; 21 import javax.annotation.Resource;
22 import javax.validation.Valid; 22 import javax.validation.Valid;
23 -  
24 import java.util.List; 23 import java.util.List;
25 -import java.util.stream.Collectors;  
26 24
27 import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success; 25 import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
  26 +import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertSet;
28 27
  28 +// TODO @xiaqing:url 使用 member 作为前缀
29 @Tag(name = "管理后台 - 用户积分记录") 29 @Tag(name = "管理后台 - 用户积分记录")
30 @RestController 30 @RestController
31 @RequestMapping("/point/record") 31 @RequestMapping("/point/record")
@@ -33,35 +33,25 @@ import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success; @@ -33,35 +33,25 @@ import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
33 public class MemberPointRecordController { 33 public class MemberPointRecordController {
34 34
35 @Resource 35 @Resource
36 - private MemberPointRecordService recordService; 36 + private MemberPointRecordService pointRecordService;
  37 +
37 @Resource 38 @Resource
38 - MemberUserApi memberUserApi; 39 + private MemberUserApi memberUserApi;
39 40
40 @GetMapping("/page") 41 @GetMapping("/page")
41 @Operation(summary = "获得用户积分记录分页") 42 @Operation(summary = "获得用户积分记录分页")
42 @PreAuthorize("@ss.hasPermission('point:record:query')") 43 @PreAuthorize("@ss.hasPermission('point:record:query')")
43 - public CommonResult <PageResult <MemberPointRecordRespVO>> getRecordPage(@Valid MemberPointRecordPageReqVO pageVO) {  
44 - //根据用户昵称查询出用户ids  
45 - List <Long> userIds = null;  
46 - if (StringUtils.isNotBlank(pageVO.getNickName())) {  
47 - List <MemberUserRespDTO> users = memberUserApi.getUserListByNickname(pageVO.getNickName());  
48 - //如果查询用户结果为空直接返回无需继续查询  
49 - if (CollectionUtils.isEmpty(users)) {  
50 - return success(new PageResult <>());  
51 - }  
52 - userIds=users.stream().map(user->user.getId()).collect(Collectors.toList());  
53 - pageVO.setUserIds(userIds); 44 + public CommonResult<PageResult<MemberPointRecordRespVO>> getRecordPage(@Valid MemberPointRecordPageReqVO pageVO) {
  45 + // 执行分页查询
  46 + PageResult<MemberPointRecordDO> pageResult = pointRecordService.getRecordPage(pageVO);
  47 + if (CollectionUtils.isEmpty(pageResult.getList())) {
  48 + return success(PageResult.empty(pageResult.getTotal()));
54 } 49 }
55 50
56 - PageResult <MemberPointRecordDO> pageResult = recordService.getRecordPage(pageVO);  
57 - //根据查询的userId转换成nickName  
58 - List <MemberPointRecordDO> result = pageResult.getList();  
59 - List <MemberUserRespDTO> users = null;  
60 - if (!CollectionUtils.isEmpty(result)) {  
61 - List <Long> ids = result.stream().map(user -> user.getUserId()).collect(Collectors.toList());  
62 - users = memberUserApi.getUsers(ids);  
63 - }  
64 - return success(MemberPointRecordConvert.INSTANCE.convertPage(pageResult,users)); 51 + // 拼接结果返回
  52 + List<MemberUserRespDTO> users = memberUserApi.getUserList(
  53 + convertSet(pageResult.getList(), MemberPointRecordDO::getUserId));
  54 + return success(MemberPointRecordConvert.INSTANCE.convertPage(pageResult, users));
65 } 55 }
66 56
67 } 57 }
yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/point/vo/config/MemberPointConfigBaseVO.java
@@ -3,8 +3,6 @@ package cn.iocoder.yudao.module.member.controller.admin.point.vo.config; @@ -3,8 +3,6 @@ package cn.iocoder.yudao.module.member.controller.admin.point.vo.config;
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 5
6 -import java.math.BigDecimal;  
7 -  
8 /** 6 /**
9 * 会员积分配置 Base VO,提供给添加、修改、详细的子 VO 使用 7 * 会员积分配置 Base VO,提供给添加、修改、详细的子 VO 使用
10 * 如果子 VO 存在差异的字段,请不要添加到这里,影响 Swagger 文档生成 8 * 如果子 VO 存在差异的字段,请不要添加到这里,影响 Swagger 文档生成
@@ -12,18 +10,18 @@ import java.math.BigDecimal; @@ -12,18 +10,18 @@ import java.math.BigDecimal;
12 @Data 10 @Data
13 public class MemberPointConfigBaseVO { 11 public class MemberPointConfigBaseVO {
14 12
15 - private Long id; 13 + // TODO @xiaqing:参数校验注解
16 14
17 - @Schema(description = "积分抵扣开关", required = true, example = "true") 15 + @Schema(description = "积分抵扣开关", requiredMode = Schema.RequiredMode.REQUIRED, example = "true")
18 private Boolean tradeDeductEnable; 16 private Boolean tradeDeductEnable;
19 17
20 - @Schema(description = "积分抵扣,单位:分", example = "13506") 18 + @Schema(description = "积分抵扣,单位:分", requiredMode = Schema.RequiredMode.REQUIRED, example = "13506")
21 private Integer tradeDeductUnitPrice; 19 private Integer tradeDeductUnitPrice;
22 20
23 - @Schema(description = "积分抵扣最大值", example = "32428") 21 + @Schema(description = "积分抵扣最大值", requiredMode = Schema.RequiredMode.REQUIRED, example = "32428")
24 private Integer tradeDeductMaxPrice; 22 private Integer tradeDeductMaxPrice;
25 23
26 - @Schema(description = "1 元赠送多少分") 24 + @Schema(description = "1 元赠送多少分", requiredMode = Schema.RequiredMode.REQUIRED, example = "100")
27 private Integer tradeGivePoint; 25 private Integer tradeGivePoint;
28 26
29 } 27 }
yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/point/vo/config/MemberPointConfigRespVO.java
@@ -10,4 +10,8 @@ import lombok.ToString; @@ -10,4 +10,8 @@ import lombok.ToString;
10 @EqualsAndHashCode(callSuper = true) 10 @EqualsAndHashCode(callSuper = true)
11 @ToString(callSuper = true) 11 @ToString(callSuper = true)
12 public class MemberPointConfigRespVO extends MemberPointConfigBaseVO { 12 public class MemberPointConfigRespVO extends MemberPointConfigBaseVO {
  13 +
  14 + @Schema(description = "自增主键", requiredMode = Schema.RequiredMode.REQUIRED, example = "1024")
  15 + private Long id;
  16 +
13 } 17 }
yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/point/vo/recrod/MemberPointRecordBaseVO.java deleted
1 -package cn.iocoder.yudao.module.member.controller.admin.point.vo.recrod;  
2 -  
3 -import io.swagger.v3.oas.annotations.media.Schema;  
4 -import lombok.*;  
5 -  
6 -import java.time.LocalDateTime;  
7 -import javax.validation.constraints.*;  
8 -import org.springframework.format.annotation.DateTimeFormat;  
9 -  
10 -import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;  
11 -  
12 -/**  
13 - * 用户积分记录 Base VO,提供给添加、修改、详细的子 VO 使用  
14 - * 如果子 VO 存在差异的字段,请不要添加到这里,影响 Swagger 文档生成  
15 - */  
16 -@Data  
17 -public class MemberPointRecordBaseVO {  
18 -  
19 - @Schema(description = "业务编码", example = "22706")  
20 - @NotNull(message = "业务编码不能为空")  
21 - private String bizId;  
22 -  
23 - @Schema(description = "业务类型", example = "1")  
24 - @NotNull(message = "业务类型不能为空")  
25 - private String bizType;  
26 -  
27 - @Schema(description = "积分标题")  
28 - @NotNull(message = "积分标题不能为空")  
29 - private String title;  
30 -  
31 - @Schema(description = "积分描述", example = "你猜")  
32 - private String description;  
33 -  
34 - @Schema(description = "积分")  
35 - @NotNull(message = "操作积分不能为空")  
36 - private Integer point;  
37 -  
38 - @Schema(description = "变动后的积分", requiredMode = Schema.RequiredMode.REQUIRED)  
39 -// @NotNull(message = "变动后的积分不能为空")  
40 - private Integer totalPoint;  
41 -  
42 - @Schema(description = "状态:1-订单创建,2-冻结期,3-完成,4-失效(订单退款) ", example = "1")  
43 - @NotNull(message = "积分状态不能为空")  
44 - private Integer status;  
45 -  
46 - @Schema(description = "冻结时间")  
47 - @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)  
48 - @NotNull(message = "冻结时间不能为空")  
49 - private LocalDateTime freezingTime;  
50 -  
51 - @Schema(description = "解冻时间")  
52 - @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)  
53 - @NotNull(message = "解冻时间不能为空")  
54 - private LocalDateTime thawingTime;  
55 -  
56 -}  
yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/point/vo/recrod/MemberPointRecordPageReqVO.java
1 package cn.iocoder.yudao.module.member.controller.admin.point.vo.recrod; 1 package cn.iocoder.yudao.module.member.controller.admin.point.vo.recrod;
2 2
3 -import lombok.*;  
4 -import io.swagger.v3.oas.annotations.media.Schema;  
5 import cn.iocoder.yudao.framework.common.pojo.PageParam; 3 import cn.iocoder.yudao.framework.common.pojo.PageParam;
6 -  
7 -import java.util.List; 4 +import io.swagger.v3.oas.annotations.media.Schema;
  5 +import lombok.Data;
  6 +import lombok.EqualsAndHashCode;
  7 +import lombok.ToString;
8 8
9 @Schema(description = "管理后台 - 用户积分记录分页 Request VO") 9 @Schema(description = "管理后台 - 用户积分记录分页 Request VO")
10 @Data 10 @Data
@@ -13,19 +13,15 @@ import java.util.List; @@ -13,19 +13,15 @@ import java.util.List;
13 public class MemberPointRecordPageReqVO extends PageParam { 13 public class MemberPointRecordPageReqVO extends PageParam {
14 14
15 @Schema(description = "用户昵称", example = "张三") 15 @Schema(description = "用户昵称", example = "张三")
16 - private String nickName;  
17 -  
18 - //用户id集合,用户将nickName查询转换成user_ids查询  
19 - private List<Long> userIds; 16 + private String nickname;
20 17
21 @Schema(description = "业务类型", example = "1") 18 @Schema(description = "业务类型", example = "1")
22 private String bizType; 19 private String bizType;
23 20
24 - @Schema(description = "积分标题") 21 + @Schema(description = "积分标题", example = "呵呵")
25 private String title; 22 private String title;
26 23
27 - @Schema(description = "状态:1-订单创建,2-冻结期,3-完成,4-失效(订单退款) ", example = "1") 24 + @Schema(description = "积分状态", example = "1")
28 private Integer status; 25 private Integer status;
29 26
30 -  
31 } 27 }
yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/point/vo/recrod/MemberPointRecordRespVO.java
@@ -2,21 +2,56 @@ package cn.iocoder.yudao.module.member.controller.admin.point.vo.recrod; @@ -2,21 +2,56 @@ package cn.iocoder.yudao.module.member.controller.admin.point.vo.recrod;
2 2
3 import io.swagger.v3.oas.annotations.media.Schema; 3 import io.swagger.v3.oas.annotations.media.Schema;
4 import lombok.*; 4 import lombok.*;
  5 +import org.springframework.format.annotation.DateTimeFormat;
  6 +
  7 +import javax.validation.constraints.NotNull;
5 import java.time.LocalDateTime; 8 import java.time.LocalDateTime;
6 9
  10 +import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
  11 +
7 @Schema(description = "管理后台 - 用户积分记录 Response VO") 12 @Schema(description = "管理后台 - 用户积分记录 Response VO")
8 @Data 13 @Data
9 -@EqualsAndHashCode(callSuper = true)  
10 -@ToString(callSuper = true)  
11 -public class MemberPointRecordRespVO extends MemberPointRecordBaseVO { 14 +public class MemberPointRecordRespVO {
12 15
13 @Schema(description = "自增主键", requiredMode = Schema.RequiredMode.REQUIRED, example = "31457") 16 @Schema(description = "自增主键", requiredMode = Schema.RequiredMode.REQUIRED, example = "31457")
14 private Long id; 17 private Long id;
15 18
16 - @Schema(description = "发生时间")  
17 - private LocalDateTime createTime; 19 + @Schema(description = "用户编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "1024")
  20 + private Long userId;
  21 +
  22 + @Schema(description = "昵称", example = "张三")
  23 + private String nickname;
  24 +
  25 + @Schema(description = "业务编码", requiredMode = Schema.RequiredMode.REQUIRED, example = "22706")
  26 + private String bizId;
  27 +
  28 + @Schema(description = "业务类型", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
  29 + private String bizType;
  30 +
  31 + @Schema(description = "积分标题", requiredMode = Schema.RequiredMode.REQUIRED, example = "你猜")
  32 + private String title;
18 33
19 - //昵称  
20 - private String nickName; 34 + @Schema(description = "积分描述", example = "你猜")
  35 + private String description;
  36 +
  37 + @Schema(description = "积分", requiredMode = Schema.RequiredMode.REQUIRED, example = "100")
  38 + private Integer point;
  39 +
  40 + @Schema(description = "变动后的积分", requiredMode = Schema.RequiredMode.REQUIRED, example = "200")
  41 + private Integer totalPoint;
  42 +
  43 + @Schema(description = "积分状态", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
  44 + private Integer status;
  45 +
  46 + @Schema(description = "冻结时间")
  47 + @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
  48 + private LocalDateTime freezingTime;
  49 +
  50 + @Schema(description = "解冻时间")
  51 + @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
  52 + private LocalDateTime thawingTime;
  53 +
  54 + @Schema(description = "发生时间", requiredMode = Schema.RequiredMode.REQUIRED)
  55 + private LocalDateTime createTime;
21 56
22 } 57 }
yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/signin/MemberSignInConfigController.java
1 package cn.iocoder.yudao.module.member.controller.admin.signin; 1 package cn.iocoder.yudao.module.member.controller.admin.signin;
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;  
5 -import cn.iocoder.yudao.module.member.controller.admin.signin.vo.MemberSignInConfigCreateReqVO;  
6 -import cn.iocoder.yudao.module.member.controller.admin.signin.vo.MemberSignInConfigRespVO;  
7 -import cn.iocoder.yudao.module.member.controller.admin.signin.vo.MemberSignInConfigUpdateReqVO; 4 +import cn.iocoder.yudao.module.member.controller.admin.signin.vo.config.MemberSignInConfigCreateReqVO;
  5 +import cn.iocoder.yudao.module.member.controller.admin.signin.vo.config.MemberSignInConfigRespVO;
  6 +import cn.iocoder.yudao.module.member.controller.admin.signin.vo.config.MemberSignInConfigUpdateReqVO;
8 import cn.iocoder.yudao.module.member.convert.signin.MemberSignInConfigConvert; 7 import cn.iocoder.yudao.module.member.convert.signin.MemberSignInConfigConvert;
9 import cn.iocoder.yudao.module.member.dal.dataobject.signin.MemberSignInConfigDO; 8 import cn.iocoder.yudao.module.member.dal.dataobject.signin.MemberSignInConfigDO;
10 import cn.iocoder.yudao.module.member.service.signin.MemberSignInConfigService; 9 import cn.iocoder.yudao.module.member.service.signin.MemberSignInConfigService;
@@ -17,11 +16,11 @@ import org.springframework.web.bind.annotation.*; @@ -17,11 +16,11 @@ import org.springframework.web.bind.annotation.*;
17 16
18 import javax.annotation.Resource; 17 import javax.annotation.Resource;
19 import javax.validation.Valid; 18 import javax.validation.Valid;
20 -  
21 import java.util.List; 19 import java.util.List;
22 20
23 import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success; 21 import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
24 22
  23 +// TODO @xiaqing:url 使用 member 作为前缀
25 @Tag(name = "管理后台 - 积分签到规则") 24 @Tag(name = "管理后台 - 积分签到规则")
26 @RestController 25 @RestController
27 @RequestMapping("/point/sign-in-config") 26 @RequestMapping("/point/sign-in-config")
@@ -29,20 +28,20 @@ import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success; @@ -29,20 +28,20 @@ import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
29 public class MemberSignInConfigController { 28 public class MemberSignInConfigController {
30 29
31 @Resource 30 @Resource
32 - private MemberSignInConfigService memberSignInConfigService; 31 + private MemberSignInConfigService signInConfigService;
33 32
34 @PostMapping("/create") 33 @PostMapping("/create")
35 @Operation(summary = "创建积分签到规则") 34 @Operation(summary = "创建积分签到规则")
36 @PreAuthorize("@ss.hasPermission('point:sign-in-config:create')") 35 @PreAuthorize("@ss.hasPermission('point:sign-in-config:create')")
37 - public CommonResult<Integer> createSignInConfig(@Valid @RequestBody MemberSignInConfigCreateReqVO createReqVO) {  
38 - return success(memberSignInConfigService.createSignInConfig(createReqVO)); 36 + public CommonResult<Long> createSignInConfig(@Valid @RequestBody MemberSignInConfigCreateReqVO createReqVO) {
  37 + return success(signInConfigService.createSignInConfig(createReqVO));
39 } 38 }
40 39
41 @PutMapping("/update") 40 @PutMapping("/update")
42 @Operation(summary = "更新积分签到规则") 41 @Operation(summary = "更新积分签到规则")
43 @PreAuthorize("@ss.hasPermission('point:sign-in-config:update')") 42 @PreAuthorize("@ss.hasPermission('point:sign-in-config:update')")
44 public CommonResult<Boolean> updateSignInConfig(@Valid @RequestBody MemberSignInConfigUpdateReqVO updateReqVO) { 43 public CommonResult<Boolean> updateSignInConfig(@Valid @RequestBody MemberSignInConfigUpdateReqVO updateReqVO) {
45 - memberSignInConfigService.updateSignInConfig(updateReqVO); 44 + signInConfigService.updateSignInConfig(updateReqVO);
46 return success(true); 45 return success(true);
47 } 46 }
48 47
@@ -50,8 +49,8 @@ public class MemberSignInConfigController { @@ -50,8 +49,8 @@ public class MemberSignInConfigController {
50 @Operation(summary = "删除积分签到规则") 49 @Operation(summary = "删除积分签到规则")
51 @Parameter(name = "id", description = "编号", required = true) 50 @Parameter(name = "id", description = "编号", required = true)
52 @PreAuthorize("@ss.hasPermission('point:sign-in-config:delete')") 51 @PreAuthorize("@ss.hasPermission('point:sign-in-config:delete')")
53 - public CommonResult<Boolean> deleteSignInConfig(@RequestParam("id") Integer id) {  
54 - memberSignInConfigService.deleteSignInConfig(id); 52 + public CommonResult<Boolean> deleteSignInConfig(@RequestParam("id") Long id) {
  53 + signInConfigService.deleteSignInConfig(id);
55 return success(true); 54 return success(true);
56 } 55 }
57 56
@@ -59,16 +58,16 @@ public class MemberSignInConfigController { @@ -59,16 +58,16 @@ public class MemberSignInConfigController {
59 @Operation(summary = "获得积分签到规则") 58 @Operation(summary = "获得积分签到规则")
60 @Parameter(name = "id", description = "编号", required = true, example = "1024") 59 @Parameter(name = "id", description = "编号", required = true, example = "1024")
61 @PreAuthorize("@ss.hasPermission('point:sign-in-config:query')") 60 @PreAuthorize("@ss.hasPermission('point:sign-in-config:query')")
62 - public CommonResult<MemberSignInConfigRespVO> getSignInConfig(@RequestParam("id") Integer id) {  
63 - MemberSignInConfigDO signInConfig = memberSignInConfigService.getSignInConfig(id); 61 + public CommonResult<MemberSignInConfigRespVO> getSignInConfig(@RequestParam("id") Long id) {
  62 + MemberSignInConfigDO signInConfig = signInConfigService.getSignInConfig(id);
64 return success(MemberSignInConfigConvert.INSTANCE.convert(signInConfig)); 63 return success(MemberSignInConfigConvert.INSTANCE.convert(signInConfig));
65 } 64 }
66 65
67 @GetMapping("/list") 66 @GetMapping("/list")
68 @Operation(summary = "获得积分签到规则分页") 67 @Operation(summary = "获得积分签到规则分页")
69 @PreAuthorize("@ss.hasPermission('point:sign-in-config:query')") 68 @PreAuthorize("@ss.hasPermission('point:sign-in-config:query')")
70 - public CommonResult<List<MemberSignInConfigRespVO>> getSignInConfigPage() {  
71 - List<MemberSignInConfigDO> pageResult = memberSignInConfigService.getSignInConfigList(); 69 + public CommonResult<List<MemberSignInConfigRespVO>> getSignInConfigList() {
  70 + List<MemberSignInConfigDO> pageResult = signInConfigService.getSignInConfigList();
72 return success(MemberSignInConfigConvert.INSTANCE.convertList(pageResult)); 71 return success(MemberSignInConfigConvert.INSTANCE.convertList(pageResult));
73 } 72 }
74 73
yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/signin/MemberSignInRecordController.java
@@ -4,30 +4,28 @@ import cn.iocoder.yudao.framework.common.pojo.CommonResult; @@ -4,30 +4,28 @@ 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.api.user.MemberUserApi; 5 import cn.iocoder.yudao.module.member.api.user.MemberUserApi;
6 import cn.iocoder.yudao.module.member.api.user.dto.MemberUserRespDTO; 6 import cn.iocoder.yudao.module.member.api.user.dto.MemberUserRespDTO;
7 -import cn.iocoder.yudao.module.member.controller.admin.signin.vo.MemberSignInRecordPageReqVO;  
8 -import cn.iocoder.yudao.module.member.controller.admin.signin.vo.MemberSignInRecordRespVO; 7 +import cn.iocoder.yudao.module.member.controller.admin.signin.vo.record.MemberSignInRecordPageReqVO;
  8 +import cn.iocoder.yudao.module.member.controller.admin.signin.vo.record.MemberSignInRecordRespVO;
9 import cn.iocoder.yudao.module.member.convert.signin.MemberSignInRecordConvert; 9 import cn.iocoder.yudao.module.member.convert.signin.MemberSignInRecordConvert;
10 import cn.iocoder.yudao.module.member.dal.dataobject.signin.MemberSignInRecordDO; 10 import cn.iocoder.yudao.module.member.dal.dataobject.signin.MemberSignInRecordDO;
11 import cn.iocoder.yudao.module.member.service.signin.MemberSignInRecordService; 11 import cn.iocoder.yudao.module.member.service.signin.MemberSignInRecordService;
12 -import cn.iocoder.yudao.module.system.api.user.AdminUserApi;  
13 -import cn.iocoder.yudao.module.system.api.user.dto.AdminUserRespDTO;  
14 import io.swagger.v3.oas.annotations.Operation; 12 import io.swagger.v3.oas.annotations.Operation;
15 -import io.swagger.v3.oas.annotations.Parameter;  
16 import io.swagger.v3.oas.annotations.tags.Tag; 13 import io.swagger.v3.oas.annotations.tags.Tag;
17 -import org.apache.commons.lang3.StringUtils;  
18 import org.springframework.security.access.prepost.PreAuthorize; 14 import org.springframework.security.access.prepost.PreAuthorize;
19 import org.springframework.util.CollectionUtils; 15 import org.springframework.util.CollectionUtils;
20 import org.springframework.validation.annotation.Validated; 16 import org.springframework.validation.annotation.Validated;
21 -import org.springframework.web.bind.annotation.*; 17 +import org.springframework.web.bind.annotation.GetMapping;
  18 +import org.springframework.web.bind.annotation.RequestMapping;
  19 +import org.springframework.web.bind.annotation.RestController;
22 20
23 import javax.annotation.Resource; 21 import javax.annotation.Resource;
24 import javax.validation.Valid; 22 import javax.validation.Valid;
25 -  
26 import java.util.List; 23 import java.util.List;
27 -import java.util.stream.Collectors;  
28 24
29 import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success; 25 import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
  26 +import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertSet;
30 27
  28 +// TODO @xiaqing:url 使用 member 作为前缀
31 @Tag(name = "管理后台 - 用户签到积分") 29 @Tag(name = "管理后台 - 用户签到积分")
32 @RestController 30 @RestController
33 @RequestMapping("/point/sign-in-record") 31 @RequestMapping("/point/sign-in-record")
@@ -35,34 +33,24 @@ import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success; @@ -35,34 +33,24 @@ import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
35 public class MemberSignInRecordController { 33 public class MemberSignInRecordController {
36 34
37 @Resource 35 @Resource
38 - private MemberSignInRecordService memberSignInRecordService;  
39 - @Resource  
40 - MemberUserApi memberUserApi; 36 + private MemberSignInRecordService signInRecordService;
41 37
  38 + @Resource
  39 + private MemberUserApi memberUserApi;
42 40
43 @GetMapping("/page") 41 @GetMapping("/page")
44 @Operation(summary = "获得用户签到积分分页") 42 @Operation(summary = "获得用户签到积分分页")
45 @PreAuthorize("@ss.hasPermission('point:sign-in-record:query')") 43 @PreAuthorize("@ss.hasPermission('point:sign-in-record:query')")
46 - public CommonResult <PageResult <MemberSignInRecordRespVO>> getSignInRecordPage(@Valid MemberSignInRecordPageReqVO pageVO) {  
47 - //请求中如果有nickName,需要根据nickName查询出userId  
48 - if(StringUtils.isNotBlank(pageVO.getNickName())){  
49 - List<Long> users= memberUserApi.getUserListByNickname(pageVO.getNickName()).stream()  
50 - .map(user->user.getId()).collect(Collectors.toList());  
51 - //如果根据昵称查出来的用户为空,则无需继续查找  
52 - if(CollectionUtils.isEmpty(users)){  
53 - return success(new PageResult <>());  
54 - }  
55 - pageVO.setUserIds(users);  
56 - }  
57 - //处理查询结果首先将数据信息查询,然后将userId转换为nickName  
58 - PageResult <MemberSignInRecordDO> pageResult = memberSignInRecordService.getSignInRecordPage(pageVO);  
59 - List <MemberSignInRecordDO> result = pageResult.getList();  
60 - //设置获取的用户信息  
61 - List <MemberUserRespDTO> users = null;  
62 - if (!CollectionUtils.isEmpty(result)) {  
63 - List <Long> ids = result.stream().map(user -> user.getUserId()).collect(Collectors.toList());  
64 - users = memberUserApi.getUsers(ids); 44 + public CommonResult<PageResult<MemberSignInRecordRespVO>> getSignInRecordPage(@Valid MemberSignInRecordPageReqVO pageVO) {
  45 + // 执行分页查询
  46 + PageResult<MemberSignInRecordDO> pageResult = signInRecordService.getSignInRecordPage(pageVO);
  47 + if (CollectionUtils.isEmpty(pageResult.getList())) {
  48 + return success(PageResult.empty(pageResult.getTotal()));
65 } 49 }
  50 +
  51 + // 拼接结果返回
  52 + List<MemberUserRespDTO> users = memberUserApi.getUserList(
  53 + convertSet(pageResult.getList(), MemberSignInRecordDO::getUserId));
66 return success(MemberSignInRecordConvert.INSTANCE.convertPage(pageResult, users)); 54 return success(MemberSignInRecordConvert.INSTANCE.convertPage(pageResult, users));
67 } 55 }
68 } 56 }
yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/signin/vo/MemberSignInRecordBaseVO.java deleted
1 -package cn.iocoder.yudao.module.member.controller.admin.signin.vo;  
2 -  
3 -import io.swagger.v3.oas.annotations.media.Schema;  
4 -import lombok.Data;  
5 -  
6 -/**  
7 - * 用户签到积分 Base VO,提供给添加、修改、详细的子 VO 使用  
8 - * 如果子 VO 存在差异的字段,请不要添加到这里,影响 Swagger 文档生成  
9 - */  
10 -@Data  
11 -public class MemberSignInRecordBaseVO {  
12 -  
13 - @Schema(description = "签到用户", example = "6507")  
14 - private Long userId;  
15 -  
16 - @Schema(description = "第几天签到")  
17 - private Integer day;  
18 -  
19 - @Schema(description = "签到的分数")  
20 - private Integer point;  
21 -  
22 -}  
yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/signin/vo/MemberSignInRecordCreateReqVO.java deleted
1 -package cn.iocoder.yudao.module.member.controller.admin.signin.vo;  
2 -  
3 -import io.swagger.v3.oas.annotations.media.Schema;  
4 -import lombok.Data;  
5 -import lombok.EqualsAndHashCode;  
6 -import lombok.ToString;  
7 -  
8 -@Schema(description = "管理后台 - 用户签到积分创建 Request VO")  
9 -@Data  
10 -@EqualsAndHashCode(callSuper = true)  
11 -@ToString(callSuper = true)  
12 -public class MemberSignInRecordCreateReqVO extends MemberSignInRecordBaseVO {  
13 -  
14 -}  
yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/signin/vo/MemberSignInRecordRespVO.java deleted
1 -package cn.iocoder.yudao.module.member.controller.admin.signin.vo;  
2 -  
3 -import io.swagger.v3.oas.annotations.media.Schema;  
4 -import lombok.Data;  
5 -import lombok.EqualsAndHashCode;  
6 -import lombok.ToString;  
7 -  
8 -import java.time.LocalDateTime;  
9 -  
10 -@Schema(description = "管理后台 - 用户签到积分 Response VO")  
11 -@Data  
12 -@EqualsAndHashCode(callSuper = true)  
13 -@ToString(callSuper = true)  
14 -public class MemberSignInRecordRespVO extends MemberSignInRecordBaseVO {  
15 -  
16 - @Schema(description = "签到自增id", requiredMode = Schema.RequiredMode.REQUIRED, example = "11903")  
17 - private Long id;  
18 -  
19 - @Schema(description = "签到时间")  
20 - private LocalDateTime createTime;  
21 -  
22 - //昵称,用于前台展示  
23 - private String nickName;  
24 -  
25 -}  
yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/signin/vo/MemberSignInRecordUpdateReqVO.java deleted
1 -package cn.iocoder.yudao.module.member.controller.admin.signin.vo;  
2 -  
3 -import io.swagger.v3.oas.annotations.media.Schema;  
4 -import lombok.Data;  
5 -import lombok.EqualsAndHashCode;  
6 -import lombok.ToString;  
7 -  
8 -import javax.validation.constraints.NotNull;  
9 -  
10 -@Schema(description = "管理后台 - 用户签到积分更新 Request VO")  
11 -@Data  
12 -@EqualsAndHashCode(callSuper = true)  
13 -@ToString(callSuper = true)  
14 -public class MemberSignInRecordUpdateReqVO extends MemberSignInRecordBaseVO {  
15 -  
16 - @Schema(description = "签到自增id", requiredMode = Schema.RequiredMode.REQUIRED, example = "11903")  
17 - @NotNull(message = "签到自增id不能为空")  
18 - private Long id;  
19 -  
20 -}  
yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/signin/vo/MemberSignInConfigBaseVO.java renamed to yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/signin/vo/config/MemberSignInConfigBaseVO.java
1 -package cn.iocoder.yudao.module.member.controller.admin.signin.vo; 1 +package cn.iocoder.yudao.module.member.controller.admin.signin.vo.config;
2 2
3 import io.swagger.v3.oas.annotations.media.Schema; 3 import io.swagger.v3.oas.annotations.media.Schema;
4 import lombok.*; 4 import lombok.*;
@@ -10,14 +10,16 @@ import lombok.*; @@ -10,14 +10,16 @@ import lombok.*;
10 @Data 10 @Data
11 public class MemberSignInConfigBaseVO { 11 public class MemberSignInConfigBaseVO {
12 12
13 - @Schema(description = "签到第 x 天", example = "7") 13 + // TODO @xiaqing:必须的参数校验注解
  14 +
  15 + @Schema(description = "签到第 x 天", requiredMode = Schema.RequiredMode.REQUIRED, example = "7")
14 private Integer day; 16 private Integer day;
15 17
16 - @Schema(description = "签到天数对应分数", example = "10") 18 + @Schema(description = "签到天数对应分数", requiredMode = Schema.RequiredMode.REQUIRED, example = "10")
17 private Integer point; 19 private Integer point;
18 20
19 - @Schema(description = "是否启用", example = "1") 21 + // TODO @xiaqing:enable
  22 + @Schema(description = "是否启用", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
20 private Boolean isEnable; 23 private Boolean isEnable;
21 24
22 -  
23 } 25 }
yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/signin/vo/MemberSignInConfigCreateReqVO.java renamed to yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/signin/vo/config/MemberSignInConfigCreateReqVO.java
1 -package cn.iocoder.yudao.module.member.controller.admin.signin.vo; 1 +package cn.iocoder.yudao.module.member.controller.admin.signin.vo.config;
2 2
3 import lombok.*; 3 import lombok.*;
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/signin/vo/MemberSignInConfigRespVO.java renamed to yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/signin/vo/config/MemberSignInConfigRespVO.java
1 -package cn.iocoder.yudao.module.member.controller.admin.signin.vo; 1 +package cn.iocoder.yudao.module.member.controller.admin.signin.vo.config;
2 2
3 import io.swagger.v3.oas.annotations.media.Schema; 3 import io.swagger.v3.oas.annotations.media.Schema;
4 import lombok.*; 4 import lombok.*;
yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/signin/vo/MemberSignInConfigUpdateReqVO.java renamed to yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/signin/vo/config/MemberSignInConfigUpdateReqVO.java
1 -package cn.iocoder.yudao.module.member.controller.admin.signin.vo; 1 +package cn.iocoder.yudao.module.member.controller.admin.signin.vo.config;
2 2
3 import io.swagger.v3.oas.annotations.media.Schema; 3 import io.swagger.v3.oas.annotations.media.Schema;
4 import lombok.*; 4 import lombok.*;
@@ -13,6 +13,6 @@ public class MemberSignInConfigUpdateReqVO extends MemberSignInConfigBaseVO { @@ -13,6 +13,6 @@ public class MemberSignInConfigUpdateReqVO extends MemberSignInConfigBaseVO {
13 13
14 @Schema(description = "规则自增主键", requiredMode = Schema.RequiredMode.REQUIRED, example = "13653") 14 @Schema(description = "规则自增主键", requiredMode = Schema.RequiredMode.REQUIRED, example = "13653")
15 @NotNull(message = "规则自增主键不能为空") 15 @NotNull(message = "规则自增主键不能为空")
16 - private Integer id; 16 + private Long id;
17 17
18 } 18 }
yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/signin/vo/MemberSignInRecordPageReqVO.java renamed to yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/signin/vo/record/MemberSignInRecordPageReqVO.java
1 -package cn.iocoder.yudao.module.member.controller.admin.signin.vo; 1 +package cn.iocoder.yudao.module.member.controller.admin.signin.vo.record;
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;
@@ -8,7 +8,6 @@ import lombok.ToString; @@ -8,7 +8,6 @@ import lombok.ToString;
8 import org.springframework.format.annotation.DateTimeFormat; 8 import org.springframework.format.annotation.DateTimeFormat;
9 9
10 import java.time.LocalDateTime; 10 import java.time.LocalDateTime;
11 -import java.util.List;  
12 11
13 import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND; 12 import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
14 13
@@ -18,13 +17,10 @@ import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_ @@ -18,13 +17,10 @@ import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_
18 @ToString(callSuper = true) 17 @ToString(callSuper = true)
19 public class MemberSignInRecordPageReqVO extends PageParam { 18 public class MemberSignInRecordPageReqVO extends PageParam {
20 19
21 - //用户前台模糊查询  
22 - @Schema(description = "签到用户", example = "6507")  
23 - private String nickName; 20 + @Schema(description = "签到用户", example = "土豆")
  21 + private String nickname;
24 22
25 - private List<Long>userIds;  
26 -  
27 - @Schema(description = "第几天签到") 23 + @Schema(description = "第几天签到", example = "10")
28 private Integer day; 24 private Integer day;
29 25
30 @Schema(description = "签到时间") 26 @Schema(description = "签到时间")
yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/signin/vo/record/MemberSignInRecordRespVO.java 0 → 100644
  1 +package cn.iocoder.yudao.module.member.controller.admin.signin.vo.record;
  2 +
  3 +import io.swagger.v3.oas.annotations.media.Schema;
  4 +import lombok.Data;
  5 +
  6 +import java.time.LocalDateTime;
  7 +
  8 +@Schema(description = "管理后台 - 用户签到积分 Response VO")
  9 +@Data
  10 +public class MemberSignInRecordRespVO {
  11 +
  12 + @Schema(description = "签到自增 id", requiredMode = Schema.RequiredMode.REQUIRED, example = "11903")
  13 + private Long id;
  14 +
  15 + @Schema(description = "签到用户", requiredMode = Schema.RequiredMode.REQUIRED, example = "6507")
  16 + private Long userId;
  17 +
  18 + @Schema(description = "昵称", example = "张三")
  19 + private String nickname;
  20 +
  21 + @Schema(description = "第几天签到", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
  22 + private Integer day;
  23 +
  24 + @Schema(description = "签到的分数", requiredMode = Schema.RequiredMode.REQUIRED, example = "10")
  25 + private Integer point;
  26 +
  27 + @Schema(description = "签到时间", requiredMode = Schema.RequiredMode.REQUIRED)
  28 + private LocalDateTime createTime;
  29 +
  30 +}
yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/convert/point/MemberPointConfigConvert.java
@@ -20,5 +20,4 @@ public interface MemberPointConfigConvert { @@ -20,5 +20,4 @@ public interface MemberPointConfigConvert {
20 20
21 MemberPointConfigDO convert(MemberPointConfigSaveReqVO bean); 21 MemberPointConfigDO convert(MemberPointConfigSaveReqVO bean);
22 22
23 -  
24 } 23 }
yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/convert/point/MemberPointRecordConvert.java
1 package cn.iocoder.yudao.module.member.convert.point; 1 package cn.iocoder.yudao.module.member.convert.point;
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.framework.common.util.collection.MapUtils;
4 import cn.iocoder.yudao.module.member.api.user.dto.MemberUserRespDTO; 5 import cn.iocoder.yudao.module.member.api.user.dto.MemberUserRespDTO;
5 import cn.iocoder.yudao.module.member.controller.admin.point.vo.recrod.MemberPointRecordRespVO; 6 import cn.iocoder.yudao.module.member.controller.admin.point.vo.recrod.MemberPointRecordRespVO;
6 import cn.iocoder.yudao.module.member.dal.dataobject.point.MemberPointRecordDO; 7 import cn.iocoder.yudao.module.member.dal.dataobject.point.MemberPointRecordDO;
7 import org.mapstruct.Mapper; 8 import org.mapstruct.Mapper;
8 import org.mapstruct.factory.Mappers; 9 import org.mapstruct.factory.Mappers;
9 -import org.springframework.util.CollectionUtils;  
10 10
11 -import java.util.ArrayList;  
12 import java.util.List; 11 import java.util.List;
13 import java.util.Map; 12 import java.util.Map;
14 -import java.util.stream.Collectors; 13 +
  14 +import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertMap;
15 15
16 /** 16 /**
17 * 用户积分记录 Convert 17 * 用户积分记录 Convert
@@ -23,62 +23,14 @@ public interface MemberPointRecordConvert { @@ -23,62 +23,14 @@ public interface MemberPointRecordConvert {
23 23
24 MemberPointRecordConvert INSTANCE = Mappers.getMapper(MemberPointRecordConvert.class); 24 MemberPointRecordConvert INSTANCE = Mappers.getMapper(MemberPointRecordConvert.class);
25 25
26 - default PageResult <MemberPointRecordRespVO> convertPage(PageResult <MemberPointRecordDO> page, List <MemberUserRespDTO> users) {  
27 - if (page == null) {  
28 - return null;  
29 - }  
30 -  
31 - PageResult <MemberPointRecordRespVO> pageResult = new PageResult <MemberPointRecordRespVO>();  
32 -  
33 - pageResult.setList(memberPointRecordDOListToMemberPointRecordRespVOList(page.getList(), users));  
34 - pageResult.setTotal(page.getTotal());  
35 -  
36 - return pageResult;  
37 - }  
38 -  
39 - default List <MemberPointRecordRespVO> memberPointRecordDOListToMemberPointRecordRespVOList(List <MemberPointRecordDO> list, List <MemberUserRespDTO> users) {  
40 - if (list == null) {  
41 - return null;  
42 - }  
43 - Map <Long, String> maps = null;  
44 - //是否需要转换用户标志  
45 - boolean userNickFlag = !CollectionUtils.isEmpty(users);  
46 - if (userNickFlag) {  
47 - maps = users.stream()  
48 - .collect(Collectors.toMap(MemberUserRespDTO::getId, MemberUserRespDTO::getNickname, (key1, key2) -> key2));  
49 - }  
50 - List <MemberPointRecordRespVO> list1 = new ArrayList <MemberPointRecordRespVO>(list.size());  
51 - for (MemberPointRecordDO memberPointRecordDO : list) {  
52 - MemberPointRecordRespVO recordRespVO = memberPointRecordDOToMemberPointRecordRespVO(memberPointRecordDO);  
53 - recordRespVO.setNickName(maps.get(memberPointRecordDO.getUserId()));  
54 - list1.add(recordRespVO);  
55 - }  
56 -  
57 - return list1; 26 + default PageResult<MemberPointRecordRespVO> convertPage(PageResult<MemberPointRecordDO> pageResult, List<MemberUserRespDTO> users) {
  27 + PageResult<MemberPointRecordRespVO> voPageResult = convertPage(pageResult);
  28 + // user 拼接
  29 + Map<Long, MemberUserRespDTO> userMap = convertMap(users, MemberUserRespDTO::getId);
  30 + voPageResult.getList().forEach(record -> MapUtils.findAndThen(userMap, record.getUserId(),
  31 + memberUserRespDTO -> record.setNickname(memberUserRespDTO.getNickname())));
  32 + return voPageResult;
58 } 33 }
59 -  
60 - default MemberPointRecordRespVO memberPointRecordDOToMemberPointRecordRespVO(MemberPointRecordDO memberPointRecordDO) {  
61 - if (memberPointRecordDO == null) {  
62 - return null;  
63 - }  
64 -  
65 - MemberPointRecordRespVO memberPointRecordRespVO = new MemberPointRecordRespVO();  
66 -  
67 - memberPointRecordRespVO.setBizId(memberPointRecordDO.getBizId());  
68 - memberPointRecordRespVO.setBizType(memberPointRecordDO.getBizType());  
69 - memberPointRecordRespVO.setType(memberPointRecordDO.getType());  
70 - memberPointRecordRespVO.setTitle(memberPointRecordDO.getTitle());  
71 - memberPointRecordRespVO.setDescription(memberPointRecordDO.getDescription());  
72 - memberPointRecordRespVO.setPoint(memberPointRecordDO.getPoint());  
73 - memberPointRecordRespVO.setTotalPoint(memberPointRecordDO.getTotalPoint());  
74 - memberPointRecordRespVO.setStatus(memberPointRecordDO.getStatus());  
75 - memberPointRecordRespVO.setFreezingTime(memberPointRecordDO.getFreezingTime());  
76 - memberPointRecordRespVO.setThawingTime(memberPointRecordDO.getThawingTime());  
77 - memberPointRecordRespVO.setId(memberPointRecordDO.getId());  
78 - memberPointRecordRespVO.setCreateTime(memberPointRecordDO.getCreateTime());  
79 -  
80 - return memberPointRecordRespVO;  
81 - }  
82 - 34 + PageResult<MemberPointRecordRespVO> convertPage(PageResult<MemberPointRecordDO> pageResult);
83 35
84 } 36 }
yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/convert/signin/MemberSignInConfigConvert.java
1 package cn.iocoder.yudao.module.member.convert.signin; 1 package cn.iocoder.yudao.module.member.convert.signin;
2 2
3 -import cn.iocoder.yudao.framework.common.pojo.PageResult;  
4 -import cn.iocoder.yudao.module.member.controller.admin.signin.vo.MemberSignInConfigCreateReqVO;  
5 -import cn.iocoder.yudao.module.member.controller.admin.signin.vo.MemberSignInConfigRespVO;  
6 -import cn.iocoder.yudao.module.member.controller.admin.signin.vo.MemberSignInConfigUpdateReqVO; 3 +import cn.iocoder.yudao.module.member.controller.admin.signin.vo.config.MemberSignInConfigCreateReqVO;
  4 +import cn.iocoder.yudao.module.member.controller.admin.signin.vo.config.MemberSignInConfigRespVO;
  5 +import cn.iocoder.yudao.module.member.controller.admin.signin.vo.config.MemberSignInConfigUpdateReqVO;
7 import cn.iocoder.yudao.module.member.dal.dataobject.signin.MemberSignInConfigDO; 6 import cn.iocoder.yudao.module.member.dal.dataobject.signin.MemberSignInConfigDO;
8 import org.mapstruct.Mapper; 7 import org.mapstruct.Mapper;
9 import org.mapstruct.factory.Mappers; 8 import org.mapstruct.factory.Mappers;
@@ -28,6 +27,4 @@ public interface MemberSignInConfigConvert { @@ -28,6 +27,4 @@ public interface MemberSignInConfigConvert {
28 27
29 List<MemberSignInConfigRespVO> convertList(List<MemberSignInConfigDO> list); 28 List<MemberSignInConfigRespVO> convertList(List<MemberSignInConfigDO> list);
30 29
31 - PageResult<MemberSignInConfigRespVO> convertPage(PageResult<MemberSignInConfigDO> page);  
32 -  
33 } 30 }
yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/convert/signin/MemberSignInRecordConvert.java
1 package cn.iocoder.yudao.module.member.convert.signin; 1 package cn.iocoder.yudao.module.member.convert.signin;
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.framework.common.util.collection.MapUtils;
4 import cn.iocoder.yudao.module.member.api.user.dto.MemberUserRespDTO; 5 import cn.iocoder.yudao.module.member.api.user.dto.MemberUserRespDTO;
5 -import cn.iocoder.yudao.module.member.controller.admin.signin.vo.MemberSignInRecordRespVO; 6 +import cn.iocoder.yudao.module.member.controller.admin.signin.vo.record.MemberSignInRecordRespVO;
6 import cn.iocoder.yudao.module.member.dal.dataobject.signin.MemberSignInRecordDO; 7 import cn.iocoder.yudao.module.member.dal.dataobject.signin.MemberSignInRecordDO;
7 -import cn.iocoder.yudao.module.system.api.user.dto.AdminUserRespDTO;  
8 import org.mapstruct.Mapper; 8 import org.mapstruct.Mapper;
9 import org.mapstruct.factory.Mappers; 9 import org.mapstruct.factory.Mappers;
10 -import org.springframework.util.CollectionUtils;  
11 10
12 -import java.util.ArrayList;  
13 import java.util.List; 11 import java.util.List;
14 import java.util.Map; 12 import java.util.Map;
15 -import java.util.function.Function;  
16 -import java.util.stream.Collectors; 13 +
  14 +import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertMap;
17 15
18 /** 16 /**
19 * 用户签到积分 Convert 17 * 用户签到积分 Convert
@@ -25,57 +23,14 @@ public interface MemberSignInRecordConvert { @@ -25,57 +23,14 @@ public interface MemberSignInRecordConvert {
25 23
26 MemberSignInRecordConvert INSTANCE = Mappers.getMapper(MemberSignInRecordConvert.class); 24 MemberSignInRecordConvert INSTANCE = Mappers.getMapper(MemberSignInRecordConvert.class);
27 25
28 - default public MemberSignInRecordRespVO convert(MemberSignInRecordDO bean) {  
29 - if (bean == null) {  
30 - return null;  
31 - }  
32 -  
33 - MemberSignInRecordRespVO memberSignInRecordRespVO = new MemberSignInRecordRespVO();  
34 -  
35 - memberSignInRecordRespVO.setUserId(bean.getUserId());  
36 - memberSignInRecordRespVO.setDay(bean.getDay());  
37 - memberSignInRecordRespVO.setPoint(bean.getPoint());  
38 - memberSignInRecordRespVO.setId(bean.getId());  
39 - memberSignInRecordRespVO.setCreateTime(bean.getCreateTime());  
40 -  
41 - return memberSignInRecordRespVO; 26 + default PageResult<MemberSignInRecordRespVO> convertPage(PageResult<MemberSignInRecordDO> pageResult, List<MemberUserRespDTO> users) {
  27 + PageResult<MemberSignInRecordRespVO> voPageResult = convertPage(pageResult);
  28 + // user 拼接
  29 + Map<Long, MemberUserRespDTO> userMap = convertMap(users, MemberUserRespDTO::getId);
  30 + voPageResult.getList().forEach(record -> MapUtils.findAndThen(userMap, record.getUserId(),
  31 + memberUserRespDTO -> record.setNickname(memberUserRespDTO.getNickname())));
  32 + return voPageResult;
42 } 33 }
43 -  
44 - default PageResult <MemberSignInRecordRespVO> convertPage(PageResult <MemberSignInRecordDO> page, List <MemberUserRespDTO> userRespDTOS) {  
45 - if (page == null) {  
46 - return null;  
47 - }  
48 -  
49 - PageResult <MemberSignInRecordRespVO> pageResult = new PageResult <MemberSignInRecordRespVO>();  
50 -  
51 - pageResult.setList(memberSignInRecordDOListToMemberSignInRecordRespVOList(page.getList(),userRespDTOS));  
52 - pageResult.setTotal(page.getTotal());  
53 -  
54 - return pageResult;  
55 - }  
56 -  
57 - default List <MemberSignInRecordRespVO> memberSignInRecordDOListToMemberSignInRecordRespVOList(List <MemberSignInRecordDO> list,List <MemberUserRespDTO> userRespDTOS) {  
58 - if (list == null) {  
59 - return null;  
60 - }  
61 - Map <Long, String> maps=null;  
62 - //是否需要转换用户标志  
63 - boolean userNickFlag = !CollectionUtils.isEmpty(userRespDTOS);  
64 - if(userNickFlag){  
65 - maps = userRespDTOS.stream()  
66 - .collect(Collectors.toMap(MemberUserRespDTO::getId, MemberUserRespDTO::getNickname, (key1, key2) -> key2));  
67 - }  
68 - List <MemberSignInRecordRespVO> list1 = new ArrayList <MemberSignInRecordRespVO>(list.size());  
69 - for (MemberSignInRecordDO memberSignInRecordDO : list) {  
70 - MemberSignInRecordRespVO recordRespVO = convert(memberSignInRecordDO);  
71 - if(userNickFlag){  
72 - recordRespVO.setNickName(maps.get(recordRespVO.getUserId()));  
73 - }  
74 - list1.add(recordRespVO);  
75 - }  
76 -  
77 - return list1;  
78 - }  
79 - 34 + PageResult<MemberSignInRecordRespVO> convertPage(PageResult<MemberSignInRecordDO> pageResult);
80 35
81 } 36 }
yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/dal/dataobject/point/MemberPointRecordDO.java
@@ -29,6 +29,13 @@ public class MemberPointRecordDO extends BaseDO { @@ -29,6 +29,13 @@ public class MemberPointRecordDO extends BaseDO {
29 @TableId 29 @TableId
30 private Long id; 30 private Long id;
31 /** 31 /**
  32 + * 用户编号
  33 + *
  34 + * 对应 MemberUserDO 的 id 属性
  35 + */
  36 + private Long userId;
  37 +
  38 + /**
32 * 业务编码 39 * 业务编码
33 */ 40 */
34 private String bizId; 41 private String bizId;
@@ -36,6 +43,7 @@ public class MemberPointRecordDO extends BaseDO { @@ -36,6 +43,7 @@ public class MemberPointRecordDO extends BaseDO {
36 * 业务类型 43 * 业务类型
37 * 44 *
38 * 枚举 {@link TODO biz_type 对应枚举,然后改成 int 类型哈} 45 * 枚举 {@link TODO biz_type 对应枚举,然后改成 int 类型哈}
  46 + * TODO @qingxia:这个改成 Integer,然后搞个枚举
39 */ 47 */
40 private String bizType; 48 private String bizType;
41 /** 49 /**
@@ -58,12 +66,10 @@ public class MemberPointRecordDO extends BaseDO { @@ -58,12 +66,10 @@ public class MemberPointRecordDO extends BaseDO {
58 * 状态:1-订单创建,2-冻结期,3-完成,4-失效(订单退款) 66 * 状态:1-订单创建,2-冻结期,3-完成,4-失效(订单退款)
59 * 67 *
60 * 枚举 {@link point_status 对应的类} 68 * 枚举 {@link point_status 对应的类}
  69 + * TODO @qingxia:搞个枚举
61 */ 70 */
62 private Integer status; 71 private Integer status;
63 - /**  
64 - * 用户id  
65 - */  
66 - private Long userId; 72 +
67 /** 73 /**
68 * 冻结时间 74 * 冻结时间
69 */ 75 */
yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/dal/dataobject/signin/MemberSignInConfigDO.java
@@ -25,7 +25,7 @@ public class MemberSignInConfigDO extends BaseDO { @@ -25,7 +25,7 @@ public class MemberSignInConfigDO extends BaseDO {
25 * 规则自增主键 25 * 规则自增主键
26 */ 26 */
27 @TableId 27 @TableId
28 - private Integer id; 28 + private Long id;
29 /** 29 /**
30 * 签到第x天 30 * 签到第x天
31 */ 31 */
@@ -34,8 +34,11 @@ public class MemberSignInConfigDO extends BaseDO { @@ -34,8 +34,11 @@ public class MemberSignInConfigDO extends BaseDO {
34 * 签到天数对应分数 34 * 签到天数对应分数
35 */ 35 */
36 private Integer point; 36 private Integer point;
  37 +
  38 + // TODO @puhui999:enable;不用 is 开头
37 /** 39 /**
38 * 是否启用 40 * 是否启用
39 */ 41 */
40 private Boolean isEnable; 42 private Boolean isEnable;
  43 +
41 } 44 }
yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/dal/mysql/point/MemberPointRecordMapper.java
@@ -7,6 +7,8 @@ import cn.iocoder.yudao.module.member.controller.admin.point.vo.recrod.MemberPoi @@ -7,6 +7,8 @@ import cn.iocoder.yudao.module.member.controller.admin.point.vo.recrod.MemberPoi
7 import cn.iocoder.yudao.module.member.dal.dataobject.point.MemberPointRecordDO; 7 import cn.iocoder.yudao.module.member.dal.dataobject.point.MemberPointRecordDO;
8 import org.apache.ibatis.annotations.Mapper; 8 import org.apache.ibatis.annotations.Mapper;
9 9
  10 +import java.util.Set;
  11 +
10 /** 12 /**
11 * 用户积分记录 Mapper 13 * 用户积分记录 Mapper
12 * 14 *
@@ -15,11 +17,10 @@ import org.apache.ibatis.annotations.Mapper; @@ -15,11 +17,10 @@ import org.apache.ibatis.annotations.Mapper;
15 @Mapper 17 @Mapper
16 public interface MemberPointRecordMapper extends BaseMapperX<MemberPointRecordDO> { 18 public interface MemberPointRecordMapper extends BaseMapperX<MemberPointRecordDO> {
17 19
18 - default PageResult<MemberPointRecordDO> selectPage(MemberPointRecordPageReqVO reqVO) { 20 + default PageResult<MemberPointRecordDO> selectPage(MemberPointRecordPageReqVO reqVO, Set<Long> userIds) {
19 return selectPage(reqVO, new LambdaQueryWrapperX<MemberPointRecordDO>() 21 return selectPage(reqVO, new LambdaQueryWrapperX<MemberPointRecordDO>()
20 - .inIfPresent(MemberPointRecordDO::getUserId,reqVO.getUserIds()) 22 + .inIfPresent(MemberPointRecordDO::getUserId, userIds)
21 .eqIfPresent(MemberPointRecordDO::getBizType, reqVO.getBizType()) 23 .eqIfPresent(MemberPointRecordDO::getBizType, reqVO.getBizType())
22 - .eqIfPresent(MemberPointRecordDO::getType, reqVO.getType())  
23 .eqIfPresent(MemberPointRecordDO::getTitle, reqVO.getTitle()) 24 .eqIfPresent(MemberPointRecordDO::getTitle, reqVO.getTitle())
24 .eqIfPresent(MemberPointRecordDO::getStatus, reqVO.getStatus()) 25 .eqIfPresent(MemberPointRecordDO::getStatus, reqVO.getStatus())
25 .orderByDesc(MemberPointRecordDO::getId)); 26 .orderByDesc(MemberPointRecordDO::getId));
yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/dal/mysql/signin/MemberSignInConfigMapper.java
@@ -16,11 +16,7 @@ import java.util.List; @@ -16,11 +16,7 @@ import java.util.List;
16 @Mapper 16 @Mapper
17 public interface MemberSignInConfigMapper extends BaseMapperX<MemberSignInConfigDO> { 17 public interface MemberSignInConfigMapper extends BaseMapperX<MemberSignInConfigDO> {
18 18
19 - /**  
20 - * 描述 :选择性更新对象属性,如果不为空则更新。  
21 - * Author :xiaqing  
22 - * Date :2023-08-08 23:38:48  
23 - */ 19 + // TODO @qingxia:是不是不用这个方法,直接 updateById 即可
24 default int updateIfPresent(MemberSignInConfigDO updateObj){ 20 default int updateIfPresent(MemberSignInConfigDO updateObj){
25 LambdaUpdateWrapper <MemberSignInConfigDO> wrapper = new LambdaUpdateWrapper <>(); 21 LambdaUpdateWrapper <MemberSignInConfigDO> wrapper = new LambdaUpdateWrapper <>();
26 wrapper.eq(MemberSignInConfigDO::getId, updateObj.getId()) 22 wrapper.eq(MemberSignInConfigDO::getId, updateObj.getId())
@@ -30,18 +26,13 @@ public interface MemberSignInConfigMapper extends BaseMapperX&lt;MemberSignInConfig @@ -30,18 +26,13 @@ public interface MemberSignInConfigMapper extends BaseMapperX&lt;MemberSignInConfig
30 return update(null,wrapper); 26 return update(null,wrapper);
31 } 27 }
32 28
33 - default List <MemberSignInConfigDO> getList(){ 29 + // TODO @qingxia:不用这个方法,selectList,业务层自己排序即可
  30 + default List<MemberSignInConfigDO> getList() {
34 return selectList(new LambdaQueryWrapperX <MemberSignInConfigDO>().orderByAsc(MemberSignInConfigDO::getDay)); 31 return selectList(new LambdaQueryWrapperX <MemberSignInConfigDO>().orderByAsc(MemberSignInConfigDO::getDay));
35 } 32 }
36 33
37 - /**  
38 - * 描述 :根据天数查询对应记录  
39 - * Date :2023-08-09 00:07:11  
40 - */  
41 - default MemberSignInConfigDO selectByDay(Integer day){  
42 - return selectOne(new LambdaQueryWrapperX <MemberSignInConfigDO>()  
43 - .eq(MemberSignInConfigDO::getDay,day));  
44 - 34 + default MemberSignInConfigDO selectByDay(Integer day) {
  35 + return selectOne(MemberSignInConfigDO::getDay, day);
45 } 36 }
46 37
47 } 38 }
yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/dal/mysql/signin/MemberSignInRecordMapper.java
@@ -3,10 +3,12 @@ package cn.iocoder.yudao.module.member.dal.mysql.signin; @@ -3,10 +3,12 @@ package cn.iocoder.yudao.module.member.dal.mysql.signin;
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.signin.vo.MemberSignInRecordPageReqVO; 6 +import cn.iocoder.yudao.module.member.controller.admin.signin.vo.record.MemberSignInRecordPageReqVO;
7 import cn.iocoder.yudao.module.member.dal.dataobject.signin.MemberSignInRecordDO; 7 import cn.iocoder.yudao.module.member.dal.dataobject.signin.MemberSignInRecordDO;
8 import org.apache.ibatis.annotations.Mapper; 8 import org.apache.ibatis.annotations.Mapper;
9 9
  10 +import java.util.Set;
  11 +
10 /** 12 /**
11 * 用户签到积分 Mapper 13 * 用户签到积分 Mapper
12 * 14 *
@@ -15,9 +17,9 @@ import org.apache.ibatis.annotations.Mapper; @@ -15,9 +17,9 @@ import org.apache.ibatis.annotations.Mapper;
15 @Mapper 17 @Mapper
16 public interface MemberSignInRecordMapper extends BaseMapperX<MemberSignInRecordDO> { 18 public interface MemberSignInRecordMapper extends BaseMapperX<MemberSignInRecordDO> {
17 19
18 - default PageResult<MemberSignInRecordDO> selectPage(MemberSignInRecordPageReqVO reqVO) { 20 + default PageResult<MemberSignInRecordDO> selectPage(MemberSignInRecordPageReqVO reqVO, Set<Long> userIds) {
19 return selectPage(reqVO, new LambdaQueryWrapperX<MemberSignInRecordDO>() 21 return selectPage(reqVO, new LambdaQueryWrapperX<MemberSignInRecordDO>()
20 - .inIfPresent(MemberSignInRecordDO::getUserId, reqVO.getUserIds()) 22 + .inIfPresent(MemberSignInRecordDO::getUserId, userIds)
21 .eqIfPresent(MemberSignInRecordDO::getDay, reqVO.getDay()) 23 .eqIfPresent(MemberSignInRecordDO::getDay, reqVO.getDay())
22 .betweenIfPresent(MemberSignInRecordDO::getCreateTime, reqVO.getCreateTime()) 24 .betweenIfPresent(MemberSignInRecordDO::getCreateTime, reqVO.getCreateTime())
23 .orderByDesc(MemberSignInRecordDO::getId)); 25 .orderByDesc(MemberSignInRecordDO::getId));
yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/point/MemberPointRecordServiceImpl.java
1 package cn.iocoder.yudao.module.member.service.point; 1 package cn.iocoder.yudao.module.member.service.point;
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.api.user.MemberUserApi;
  5 +import cn.iocoder.yudao.module.member.api.user.dto.MemberUserRespDTO;
4 import cn.iocoder.yudao.module.member.controller.admin.point.vo.recrod.MemberPointRecordPageReqVO; 6 import cn.iocoder.yudao.module.member.controller.admin.point.vo.recrod.MemberPointRecordPageReqVO;
5 import cn.iocoder.yudao.module.member.dal.dataobject.point.MemberPointRecordDO; 7 import cn.iocoder.yudao.module.member.dal.dataobject.point.MemberPointRecordDO;
6 import cn.iocoder.yudao.module.member.dal.mysql.point.MemberPointRecordMapper; 8 import cn.iocoder.yudao.module.member.dal.mysql.point.MemberPointRecordMapper;
  9 +import org.apache.commons.lang3.StringUtils;
7 import org.springframework.stereotype.Service; 10 import org.springframework.stereotype.Service;
  11 +import org.springframework.util.CollectionUtils;
8 import org.springframework.validation.annotation.Validated; 12 import org.springframework.validation.annotation.Validated;
9 13
10 import javax.annotation.Resource; 14 import javax.annotation.Resource;
  15 +import java.util.List;
  16 +import java.util.Set;
  17 +
  18 +import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertSet;
11 19
12 20
13 /** 21 /**
@@ -22,9 +30,22 @@ public class MemberPointRecordServiceImpl implements MemberPointRecordService { @@ -22,9 +30,22 @@ public class MemberPointRecordServiceImpl implements MemberPointRecordService {
22 @Resource 30 @Resource
23 private MemberPointRecordMapper recordMapper; 31 private MemberPointRecordMapper recordMapper;
24 32
  33 + @Resource
  34 + private MemberUserApi memberUserApi;
  35 +
25 @Override 36 @Override
26 public PageResult<MemberPointRecordDO> getRecordPage(MemberPointRecordPageReqVO pageReqVO) { 37 public PageResult<MemberPointRecordDO> getRecordPage(MemberPointRecordPageReqVO pageReqVO) {
27 - return recordMapper.selectPage(pageReqVO); 38 + // 根据用户昵称查询出用户ids
  39 + Set<Long> userIds = null;
  40 + if (StringUtils.isNotBlank(pageReqVO.getNickname())) {
  41 + List<MemberUserRespDTO> users = memberUserApi.getUserListByNickname(pageReqVO.getNickname());
  42 + // 如果查询用户结果为空直接返回无需继续查询
  43 + if (CollectionUtils.isEmpty(users)) {
  44 + return PageResult.empty();
  45 + }
  46 + userIds = convertSet(users, MemberUserRespDTO::getId);
  47 + }
  48 + return recordMapper.selectPage(pageReqVO, userIds);
28 } 49 }
29 50
30 } 51 }
yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/signin/MemberSignInConfigService.java
1 package cn.iocoder.yudao.module.member.service.signin; 1 package cn.iocoder.yudao.module.member.service.signin;
2 2
3 -import cn.iocoder.yudao.module.member.controller.admin.signin.vo.MemberSignInConfigCreateReqVO;  
4 -import cn.iocoder.yudao.module.member.controller.admin.signin.vo.MemberSignInConfigUpdateReqVO; 3 +import cn.iocoder.yudao.module.member.controller.admin.signin.vo.config.MemberSignInConfigCreateReqVO;
  4 +import cn.iocoder.yudao.module.member.controller.admin.signin.vo.config.MemberSignInConfigUpdateReqVO;
5 import cn.iocoder.yudao.module.member.dal.dataobject.signin.MemberSignInConfigDO; 5 import cn.iocoder.yudao.module.member.dal.dataobject.signin.MemberSignInConfigDO;
6 6
7 import javax.validation.Valid; 7 import javax.validation.Valid;
@@ -20,7 +20,7 @@ public interface MemberSignInConfigService { @@ -20,7 +20,7 @@ public interface MemberSignInConfigService {
20 * @param createReqVO 创建信息 20 * @param createReqVO 创建信息
21 * @return 编号 21 * @return 编号
22 */ 22 */
23 - Integer createSignInConfig(@Valid MemberSignInConfigCreateReqVO createReqVO); 23 + Long createSignInConfig(@Valid MemberSignInConfigCreateReqVO createReqVO);
24 24
25 /** 25 /**
26 * 更新积分签到规则 26 * 更新积分签到规则
@@ -34,7 +34,7 @@ public interface MemberSignInConfigService { @@ -34,7 +34,7 @@ public interface MemberSignInConfigService {
34 * 34 *
35 * @param id 编号 35 * @param id 编号
36 */ 36 */
37 - void deleteSignInConfig(Integer id); 37 + void deleteSignInConfig(Long id);
38 38
39 /** 39 /**
40 * 获得积分签到规则 40 * 获得积分签到规则
@@ -42,7 +42,7 @@ public interface MemberSignInConfigService { @@ -42,7 +42,7 @@ public interface MemberSignInConfigService {
42 * @param id 编号 42 * @param id 编号
43 * @return 积分签到规则 43 * @return 积分签到规则
44 */ 44 */
45 - MemberSignInConfigDO getSignInConfig(Integer id); 45 + MemberSignInConfigDO getSignInConfig(Long id);
46 46
47 /** 47 /**
48 * 获得积分签到规则分页 48 * 获得积分签到规则分页
yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/signin/MemberSignInConfigServiceImpl.java
1 package cn.iocoder.yudao.module.member.service.signin; 1 package cn.iocoder.yudao.module.member.service.signin;
2 2
3 -import cn.iocoder.yudao.module.member.controller.admin.signin.vo.MemberSignInConfigCreateReqVO;  
4 -import cn.iocoder.yudao.module.member.controller.admin.signin.vo.MemberSignInConfigUpdateReqVO; 3 +import cn.iocoder.yudao.module.member.controller.admin.signin.vo.config.MemberSignInConfigCreateReqVO;
  4 +import cn.iocoder.yudao.module.member.controller.admin.signin.vo.config.MemberSignInConfigUpdateReqVO;
5 import cn.iocoder.yudao.module.member.convert.signin.MemberSignInConfigConvert; 5 import cn.iocoder.yudao.module.member.convert.signin.MemberSignInConfigConvert;
6 import cn.iocoder.yudao.module.member.dal.dataobject.signin.MemberSignInConfigDO; 6 import cn.iocoder.yudao.module.member.dal.dataobject.signin.MemberSignInConfigDO;
7 import cn.iocoder.yudao.module.member.dal.mysql.signin.MemberSignInConfigMapper; 7 import cn.iocoder.yudao.module.member.dal.mysql.signin.MemberSignInConfigMapper;
8 -import com.baomidou.mybatisplus.core.conditions.Wrapper;  
9 -import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;  
10 -import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;  
11 import org.springframework.stereotype.Service; 8 import org.springframework.stereotype.Service;
12 import org.springframework.validation.annotation.Validated; 9 import org.springframework.validation.annotation.Validated;
13 10
14 import javax.annotation.Resource; 11 import javax.annotation.Resource;
15 -  
16 import java.util.List; 12 import java.util.List;
17 13
18 import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception; 14 import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;
19 -import static cn.iocoder.yudao.module.member.enums.ErrorCodeConstants.SIGN_IN_CONFIG_EXISTS;  
20 -import static cn.iocoder.yudao.module.member.enums.ErrorCodeConstants.SIGN_IN_CONFIG_NOT_EXISTS; 15 +import static cn.iocoder.yudao.module.member.enums.ErrorCodeConstants.*;
21 16
22 /** 17 /**
23 * 积分签到规则 Service 实现类 18 * 积分签到规则 Service 实现类
@@ -29,16 +24,16 @@ import static cn.iocoder.yudao.module.member.enums.ErrorCodeConstants.SIGN_IN_CO @@ -29,16 +24,16 @@ import static cn.iocoder.yudao.module.member.enums.ErrorCodeConstants.SIGN_IN_CO
29 public class MemberSignInConfigServiceImpl implements MemberSignInConfigService { 24 public class MemberSignInConfigServiceImpl implements MemberSignInConfigService {
30 25
31 @Resource 26 @Resource
32 - private MemberSignInConfigMapper memberSignInConfigMapper; 27 + private MemberSignInConfigMapper signInConfigMapper;
33 28
34 @Override 29 @Override
35 - public Integer createSignInConfig(MemberSignInConfigCreateReqVO createReqVO) { 30 + public Long createSignInConfig(MemberSignInConfigCreateReqVO createReqVO) {
36 // 判断是否重复插入签到天数 31 // 判断是否重复插入签到天数
37 - validateSignInConfigExistsDay(createReqVO.getDay()); 32 + validateSignInConfigDayDuplicate(createReqVO.getDay(), null);
38 33
39 // 插入 34 // 插入
40 MemberSignInConfigDO signInConfig = MemberSignInConfigConvert.INSTANCE.convert(createReqVO); 35 MemberSignInConfigDO signInConfig = MemberSignInConfigConvert.INSTANCE.convert(createReqVO);
41 - memberSignInConfigMapper.insert(signInConfig); 36 + signInConfigMapper.insert(signInConfig);
42 // 返回 37 // 返回
43 return signInConfig.getId(); 38 return signInConfig.getId();
44 } 39 }
@@ -47,52 +42,54 @@ public class MemberSignInConfigServiceImpl implements MemberSignInConfigService @@ -47,52 +42,54 @@ public class MemberSignInConfigServiceImpl implements MemberSignInConfigService
47 public void updateSignInConfig(MemberSignInConfigUpdateReqVO updateReqVO) { 42 public void updateSignInConfig(MemberSignInConfigUpdateReqVO updateReqVO) {
48 // 校验存在 43 // 校验存在
49 validateSignInConfigExists(updateReqVO.getId()); 44 validateSignInConfigExists(updateReqVO.getId());
50 - //判断是否重复插入签到天数  
51 - validateSignInConfigSameDayNotSelf(updateReqVO); 45 + // 判断是否重复插入签到天数
  46 + validateSignInConfigDayDuplicate(updateReqVO.getDay(), updateReqVO.getId());
52 47
53 // 判断更新 48 // 判断更新
54 MemberSignInConfigDO updateObj = MemberSignInConfigConvert.INSTANCE.convert(updateReqVO); 49 MemberSignInConfigDO updateObj = MemberSignInConfigConvert.INSTANCE.convert(updateReqVO);
55 - memberSignInConfigMapper.updateIfPresent(updateObj); 50 + signInConfigMapper.updateIfPresent(updateObj);
56 } 51 }
57 52
58 @Override 53 @Override
59 - public void deleteSignInConfig(Integer id) { 54 + public void deleteSignInConfig(Long id) {
60 // 校验存在 55 // 校验存在
61 validateSignInConfigExists(id); 56 validateSignInConfigExists(id);
62 // 删除 57 // 删除
63 - memberSignInConfigMapper.deleteById(id); 58 + signInConfigMapper.deleteById(id);
64 } 59 }
65 60
66 - private void validateSignInConfigExists(Integer id) {  
67 - if (memberSignInConfigMapper.selectById(id) == null) { 61 + private void validateSignInConfigExists(Long id) {
  62 + if (signInConfigMapper.selectById(id) == null) {
68 throw exception(SIGN_IN_CONFIG_NOT_EXISTS); 63 throw exception(SIGN_IN_CONFIG_NOT_EXISTS);
69 } 64 }
70 } 65 }
71 66
72 - //根据签到天数判断是否存在一个相同的天数  
73 - private void validateSignInConfigExistsDay(Integer day) {  
74 - MemberSignInConfigDO configDO = memberSignInConfigMapper.selectByDay(day);  
75 - if (configDO != null) { 67 + /**
  68 + * 校验 day 是否重复
  69 + *
  70 + * @param day 天
  71 + * @param id 编号,只有更新的时候会传递
  72 + */
  73 + private void validateSignInConfigDayDuplicate(Integer day, Long id) {
  74 + MemberSignInConfigDO configDO = signInConfigMapper.selectByDay(day);
  75 + // 1. 新增时,configDO 非空,则说明重复
  76 + if (id == null && configDO != null) {
76 throw exception(SIGN_IN_CONFIG_EXISTS); 77 throw exception(SIGN_IN_CONFIG_EXISTS);
77 } 78 }
78 - }  
79 -  
80 - // 更新天数时判断是否有重复的天数,需要去除自己  
81 - private void validateSignInConfigSameDayNotSelf(MemberSignInConfigUpdateReqVO reqVO) {  
82 - MemberSignInConfigDO configDO = memberSignInConfigMapper.selectByDay(reqVO.getDay());  
83 - if (configDO != null && configDO.getId() != reqVO.getId()) { 79 + // 2. 更新时,如果 configDO 非空,且 id 不相等,则说明重复
  80 + if (id != null && configDO != null && !configDO.getId().equals(id)) {
84 throw exception(SIGN_IN_CONFIG_EXISTS); 81 throw exception(SIGN_IN_CONFIG_EXISTS);
85 } 82 }
86 } 83 }
87 84
88 @Override 85 @Override
89 - public MemberSignInConfigDO getSignInConfig(Integer id) {  
90 - return memberSignInConfigMapper.selectById(id); 86 + public MemberSignInConfigDO getSignInConfig(Long id) {
  87 + return signInConfigMapper.selectById(id);
91 } 88 }
92 89
93 @Override 90 @Override
94 public List <MemberSignInConfigDO> getSignInConfigList() { 91 public List <MemberSignInConfigDO> getSignInConfigList() {
95 - return memberSignInConfigMapper.getList(); 92 + return signInConfigMapper.getList();
96 } 93 }
97 94
98 } 95 }
yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/signin/MemberSignInRecordService.java
1 package cn.iocoder.yudao.module.member.service.signin; 1 package cn.iocoder.yudao.module.member.service.signin;
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.signin.vo.MemberSignInRecordPageReqVO; 4 +import cn.iocoder.yudao.module.member.controller.admin.signin.vo.record.MemberSignInRecordPageReqVO;
5 import cn.iocoder.yudao.module.member.dal.dataobject.signin.MemberSignInRecordDO; 5 import cn.iocoder.yudao.module.member.dal.dataobject.signin.MemberSignInRecordDO;
6 6
7 /** 7 /**
@@ -11,8 +11,6 @@ import cn.iocoder.yudao.module.member.dal.dataobject.signin.MemberSignInRecordDO @@ -11,8 +11,6 @@ import cn.iocoder.yudao.module.member.dal.dataobject.signin.MemberSignInRecordDO
11 */ 11 */
12 public interface MemberSignInRecordService { 12 public interface MemberSignInRecordService {
13 13
14 -  
15 -  
16 /** 14 /**
17 * 获得用户签到积分分页 15 * 获得用户签到积分分页
18 * 16 *
@@ -21,5 +19,4 @@ public interface MemberSignInRecordService { @@ -21,5 +19,4 @@ public interface MemberSignInRecordService {
21 */ 19 */
22 PageResult<MemberSignInRecordDO> getSignInRecordPage(MemberSignInRecordPageReqVO pageReqVO); 20 PageResult<MemberSignInRecordDO> getSignInRecordPage(MemberSignInRecordPageReqVO pageReqVO);
23 21
24 -  
25 } 22 }
yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/signin/MemberSignInRecordServiceImpl.java
1 package cn.iocoder.yudao.module.member.service.signin; 1 package cn.iocoder.yudao.module.member.service.signin;
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.signin.vo.MemberSignInRecordPageReqVO; 4 +import cn.iocoder.yudao.module.member.api.user.MemberUserApi;
  5 +import cn.iocoder.yudao.module.member.api.user.dto.MemberUserRespDTO;
  6 +import cn.iocoder.yudao.module.member.controller.admin.signin.vo.record.MemberSignInRecordPageReqVO;
5 import cn.iocoder.yudao.module.member.dal.dataobject.signin.MemberSignInRecordDO; 7 import cn.iocoder.yudao.module.member.dal.dataobject.signin.MemberSignInRecordDO;
6 import cn.iocoder.yudao.module.member.dal.mysql.signin.MemberSignInRecordMapper; 8 import cn.iocoder.yudao.module.member.dal.mysql.signin.MemberSignInRecordMapper;
7 -import cn.iocoder.yudao.module.system.api.user.AdminUserApi; 9 +import org.apache.commons.lang3.StringUtils;
8 import org.springframework.stereotype.Service; 10 import org.springframework.stereotype.Service;
  11 +import org.springframework.util.CollectionUtils;
9 import org.springframework.validation.annotation.Validated; 12 import org.springframework.validation.annotation.Validated;
10 13
11 import javax.annotation.Resource; 14 import javax.annotation.Resource;
  15 +import java.util.List;
  16 +import java.util.Set;
12 17
13 -import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;  
14 -import static cn.iocoder.yudao.module.member.enums.ErrorCodeConstants.SIGN_IN_RECORD_NOT_EXISTS; 18 +import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertSet;
15 19
16 /** 20 /**
17 * 用户签到积分 Service 实现类 21 * 用户签到积分 Service 实现类
@@ -23,15 +27,24 @@ import static cn.iocoder.yudao.module.member.enums.ErrorCodeConstants.SIGN_IN_RE @@ -23,15 +27,24 @@ import static cn.iocoder.yudao.module.member.enums.ErrorCodeConstants.SIGN_IN_RE
23 public class MemberSignInRecordServiceImpl implements MemberSignInRecordService { 27 public class MemberSignInRecordServiceImpl implements MemberSignInRecordService {
24 28
25 @Resource 29 @Resource
26 - private MemberSignInRecordMapper memberSignInRecordMapper;  
27 - @Resource  
28 - AdminUserApi adminUserApi;  
29 - 30 + private MemberSignInRecordMapper signInRecordMapper;
30 31
  32 + @Resource
  33 + private MemberUserApi memberUserApi;
31 34
32 @Override 35 @Override
33 public PageResult<MemberSignInRecordDO> getSignInRecordPage(MemberSignInRecordPageReqVO pageReqVO) { 36 public PageResult<MemberSignInRecordDO> getSignInRecordPage(MemberSignInRecordPageReqVO pageReqVO) {
34 - return memberSignInRecordMapper.selectPage(pageReqVO); 37 + // 根据用户昵称查询出用户ids
  38 + Set<Long> userIds = null;
  39 + if (StringUtils.isNotBlank(pageReqVO.getNickname())) {
  40 + List<MemberUserRespDTO> users = memberUserApi.getUserListByNickname(pageReqVO.getNickname());
  41 + // 如果查询用户结果为空直接返回无需继续查询
  42 + if (CollectionUtils.isEmpty(users)) {
  43 + return PageResult.empty();
  44 + }
  45 + userIds = convertSet(users, MemberUserRespDTO::getId);
  46 + }
  47 + return signInRecordMapper.selectPage(pageReqVO, userIds);
35 } 48 }
36 49
37 } 50 }
yudao-server/src/main/resources/application-local.yaml
@@ -51,7 +51,7 @@ spring: @@ -51,7 +51,7 @@ spring:
51 # url: jdbc:oracle:thin:@127.0.0.1:1521:xe # Oracle 连接的示例 51 # url: jdbc:oracle:thin:@127.0.0.1:1521:xe # Oracle 连接的示例
52 # url: jdbc:sqlserver://127.0.0.1:1433;DatabaseName=${spring.datasource.dynamic.datasource.master.name} # SQLServer 连接的示例 52 # url: jdbc:sqlserver://127.0.0.1:1433;DatabaseName=${spring.datasource.dynamic.datasource.master.name} # SQLServer 连接的示例
53 username: root 53 username: root
54 - password: 1qaz!QAZ 54 + password: 123456
55 # username: sa 55 # username: sa
56 # password: JSm:g(*%lU4ZAkz06cd52KqT3)i1?H7W 56 # password: JSm:g(*%lU4ZAkz06cd52KqT3)i1?H7W
57 slave: # 模拟从库,可根据自己需要修改 57 slave: # 模拟从库,可根据自己需要修改
@@ -62,13 +62,13 @@ spring: @@ -62,13 +62,13 @@ spring:
62 # url: jdbc:oracle:thin:@127.0.0.1:1521:xe # Oracle 连接的示例 62 # url: jdbc:oracle:thin:@127.0.0.1:1521:xe # Oracle 连接的示例
63 # url: jdbc:sqlserver://127.0.0.1:1433;DatabaseName=${spring.datasource.dynamic.datasource.slave.name} # SQLServer 连接的示例 63 # url: jdbc:sqlserver://127.0.0.1:1433;DatabaseName=${spring.datasource.dynamic.datasource.slave.name} # SQLServer 连接的示例
64 username: root 64 username: root
65 - password: 1qaz!QAZ 65 + password: 123456
66 # username: sa 66 # username: sa
67 # password: JSm:g(*%lU4ZAkz06cd52KqT3)i1?H7W 67 # password: JSm:g(*%lU4ZAkz06cd52KqT3)i1?H7W
68 68
69 # Redis 配置。Redisson 默认的配置足够使用,一般不需要进行调优 69 # Redis 配置。Redisson 默认的配置足够使用,一般不需要进行调优
70 redis: 70 redis:
71 - host: 10.211.55.5 # 地址 71 + host: 127.0.0.1 # 地址
72 port: 6379 # 端口 72 port: 6379 # 端口
73 database: 0 # 数据库索引 73 database: 0 # 数据库索引
74 # password: dev # 密码,建议生产环境开启 74 # password: dev # 密码,建议生产环境开启