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 29 * @param ids 用户编号的数组
30 30 * @return 用户信息们
31 31 */
32   - List<MemberUserRespDTO> getUsers(Collection<Long> ids);
  32 + List<MemberUserRespDTO> getUserList(Collection<Long> ids);
33 33  
34 34 /**
35 35 * 获得会员用户 Map
... ... @@ -38,7 +38,7 @@ public interface MemberUserApi {
38 38 * @return 会员用户 Map
39 39 */
40 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 30 }
31 31  
32 32 @Override
33   - public List<MemberUserRespDTO> getUsers(Collection<Long> ids) {
  33 + public List<MemberUserRespDTO> getUserList(Collection<Long> ids) {
34 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 17  
18 18 import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
19 19  
  20 +// TODO @xiaqing:url 使用 member 作为前缀
20 21 @Tag(name = "管理后台 - 会员积分设置")
21 22 @RestController
22 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 8 import cn.iocoder.yudao.module.member.controller.admin.point.vo.recrod.MemberPointRecordRespVO;
9 9 import cn.iocoder.yudao.module.member.convert.point.MemberPointRecordConvert;
10 10 import cn.iocoder.yudao.module.member.dal.dataobject.point.MemberPointRecordDO;
11   -import cn.iocoder.yudao.module.member.dal.dataobject.signin.MemberSignInRecordDO;
12 11 import cn.iocoder.yudao.module.member.service.point.MemberPointRecordService;
13 12 import io.swagger.v3.oas.annotations.Operation;
14 13 import io.swagger.v3.oas.annotations.tags.Tag;
15   -import org.apache.commons.lang3.StringUtils;
16 14 import org.springframework.security.access.prepost.PreAuthorize;
17 15 import org.springframework.util.CollectionUtils;
18 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 21 import javax.annotation.Resource;
22 22 import javax.validation.Valid;
23   -
24 23 import java.util.List;
25   -import java.util.stream.Collectors;
26 24  
27 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 29 @Tag(name = "管理后台 - 用户积分记录")
30 30 @RestController
31 31 @RequestMapping("/point/record")
... ... @@ -33,35 +33,25 @@ import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
33 33 public class MemberPointRecordController {
34 34  
35 35 @Resource
36   - private MemberPointRecordService recordService;
  36 + private MemberPointRecordService pointRecordService;
  37 +
37 38 @Resource
38   - MemberUserApi memberUserApi;
  39 + private MemberUserApi memberUserApi;
39 40  
40 41 @GetMapping("/page")
41 42 @Operation(summary = "获得用户积分记录分页")
42 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 3 import io.swagger.v3.oas.annotations.media.Schema;
4 4 import lombok.Data;
5 5  
6   -import java.math.BigDecimal;
7   -
8 6 /**
9 7 * 会员积分配置 Base VO,提供给添加、修改、详细的子 VO 使用
10 8 * 如果子 VO 存在差异的字段,请不要添加到这里,影响 Swagger 文档生成
... ... @@ -12,18 +10,18 @@ import java.math.BigDecimal;
12 10 @Data
13 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 16 private Boolean tradeDeductEnable;
19 17  
20   - @Schema(description = "积分抵扣,单位:分", example = "13506")
  18 + @Schema(description = "积分抵扣,单位:分", requiredMode = Schema.RequiredMode.REQUIRED, example = "13506")
21 19 private Integer tradeDeductUnitPrice;
22 20  
23   - @Schema(description = "积分抵扣最大值", example = "32428")
  21 + @Schema(description = "积分抵扣最大值", requiredMode = Schema.RequiredMode.REQUIRED, example = "32428")
24 22 private Integer tradeDeductMaxPrice;
25 23  
26   - @Schema(description = "1 元赠送多少分")
  24 + @Schema(description = "1 元赠送多少分", requiredMode = Schema.RequiredMode.REQUIRED, example = "100")
27 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 10 @EqualsAndHashCode(callSuper = true)
11 11 @ToString(callSuper = true)
12 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 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 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 9 @Schema(description = "管理后台 - 用户积分记录分页 Request VO")
10 10 @Data
... ... @@ -13,19 +13,15 @@ import java.util.List;
13 13 public class MemberPointRecordPageReqVO extends PageParam {
14 14  
15 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 18 @Schema(description = "业务类型", example = "1")
22 19 private String bizType;
23 20  
24   - @Schema(description = "积分标题")
  21 + @Schema(description = "积分标题", example = "呵呵")
25 22 private String title;
26 23  
27   - @Schema(description = "状态:1-订单创建,2-冻结期,3-完成,4-失效(订单退款) ", example = "1")
  24 + @Schema(description = "积分状态", example = "1")
28 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 2  
3 3 import io.swagger.v3.oas.annotations.media.Schema;
4 4 import lombok.*;
  5 +import org.springframework.format.annotation.DateTimeFormat;
  6 +
  7 +import javax.validation.constraints.NotNull;
5 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 12 @Schema(description = "管理后台 - 用户积分记录 Response VO")
8 13 @Data
9   -@EqualsAndHashCode(callSuper = true)
10   -@ToString(callSuper = true)
11   -public class MemberPointRecordRespVO extends MemberPointRecordBaseVO {
  14 +public class MemberPointRecordRespVO {
12 15  
13 16 @Schema(description = "自增主键", requiredMode = Schema.RequiredMode.REQUIRED, example = "31457")
14 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 1 package cn.iocoder.yudao.module.member.controller.admin.signin;
2 2  
3 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 7 import cn.iocoder.yudao.module.member.convert.signin.MemberSignInConfigConvert;
9 8 import cn.iocoder.yudao.module.member.dal.dataobject.signin.MemberSignInConfigDO;
10 9 import cn.iocoder.yudao.module.member.service.signin.MemberSignInConfigService;
... ... @@ -17,11 +16,11 @@ import org.springframework.web.bind.annotation.*;
17 16  
18 17 import javax.annotation.Resource;
19 18 import javax.validation.Valid;
20   -
21 19 import java.util.List;
22 20  
23 21 import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
24 22  
  23 +// TODO @xiaqing:url 使用 member 作为前缀
25 24 @Tag(name = "管理后台 - 积分签到规则")
26 25 @RestController
27 26 @RequestMapping("/point/sign-in-config")
... ... @@ -29,20 +28,20 @@ import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
29 28 public class MemberSignInConfigController {
30 29  
31 30 @Resource
32   - private MemberSignInConfigService memberSignInConfigService;
  31 + private MemberSignInConfigService signInConfigService;
33 32  
34 33 @PostMapping("/create")
35 34 @Operation(summary = "创建积分签到规则")
36 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 40 @PutMapping("/update")
42 41 @Operation(summary = "更新积分签到规则")
43 42 @PreAuthorize("@ss.hasPermission('point:sign-in-config:update')")
44 43 public CommonResult<Boolean> updateSignInConfig(@Valid @RequestBody MemberSignInConfigUpdateReqVO updateReqVO) {
45   - memberSignInConfigService.updateSignInConfig(updateReqVO);
  44 + signInConfigService.updateSignInConfig(updateReqVO);
46 45 return success(true);
47 46 }
48 47  
... ... @@ -50,8 +49,8 @@ public class MemberSignInConfigController {
50 49 @Operation(summary = "删除积分签到规则")
51 50 @Parameter(name = "id", description = "编号", required = true)
52 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 54 return success(true);
56 55 }
57 56  
... ... @@ -59,16 +58,16 @@ public class MemberSignInConfigController {
59 58 @Operation(summary = "获得积分签到规则")
60 59 @Parameter(name = "id", description = "编号", required = true, example = "1024")
61 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 63 return success(MemberSignInConfigConvert.INSTANCE.convert(signInConfig));
65 64 }
66 65  
67 66 @GetMapping("/list")
68 67 @Operation(summary = "获得积分签到规则分页")
69 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 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 4 import cn.iocoder.yudao.framework.common.pojo.PageResult;
5 5 import cn.iocoder.yudao.module.member.api.user.MemberUserApi;
6 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 9 import cn.iocoder.yudao.module.member.convert.signin.MemberSignInRecordConvert;
10 10 import cn.iocoder.yudao.module.member.dal.dataobject.signin.MemberSignInRecordDO;
11 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 12 import io.swagger.v3.oas.annotations.Operation;
15   -import io.swagger.v3.oas.annotations.Parameter;
16 13 import io.swagger.v3.oas.annotations.tags.Tag;
17   -import org.apache.commons.lang3.StringUtils;
18 14 import org.springframework.security.access.prepost.PreAuthorize;
19 15 import org.springframework.util.CollectionUtils;
20 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 21 import javax.annotation.Resource;
24 22 import javax.validation.Valid;
25   -
26 23 import java.util.List;
27   -import java.util.stream.Collectors;
28 24  
29 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 29 @Tag(name = "管理后台 - 用户签到积分")
32 30 @RestController
33 31 @RequestMapping("/point/sign-in-record")
... ... @@ -35,34 +33,24 @@ import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
35 33 public class MemberSignInRecordController {
36 34  
37 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 41 @GetMapping("/page")
44 42 @Operation(summary = "获得用户签到积分分页")
45 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 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 3 import io.swagger.v3.oas.annotations.media.Schema;
4 4 import lombok.*;
... ... @@ -10,14 +10,16 @@ import lombok.*;
10 10 @Data
11 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 16 private Integer day;
15 17  
16   - @Schema(description = "签到天数对应分数", example = "10")
  18 + @Schema(description = "签到天数对应分数", requiredMode = Schema.RequiredMode.REQUIRED, example = "10")
17 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 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 3 import lombok.*;
4 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 3 import io.swagger.v3.oas.annotations.media.Schema;
4 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 3 import io.swagger.v3.oas.annotations.media.Schema;
4 4 import lombok.*;
... ... @@ -13,6 +13,6 @@ public class MemberSignInConfigUpdateReqVO extends MemberSignInConfigBaseVO {
13 13  
14 14 @Schema(description = "规则自增主键", requiredMode = Schema.RequiredMode.REQUIRED, example = "13653")
15 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 3 import cn.iocoder.yudao.framework.common.pojo.PageParam;
4 4 import io.swagger.v3.oas.annotations.media.Schema;
... ... @@ -8,7 +8,6 @@ import lombok.ToString;
8 8 import org.springframework.format.annotation.DateTimeFormat;
9 9  
10 10 import java.time.LocalDateTime;
11   -import java.util.List;
12 11  
13 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 17 @ToString(callSuper = true)
19 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 24 private Integer day;
29 25  
30 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 20  
21 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 1 package cn.iocoder.yudao.module.member.convert.point;
2 2  
3 3 import cn.iocoder.yudao.framework.common.pojo.PageResult;
  4 +import cn.iocoder.yudao.framework.common.util.collection.MapUtils;
4 5 import cn.iocoder.yudao.module.member.api.user.dto.MemberUserRespDTO;
5 6 import cn.iocoder.yudao.module.member.controller.admin.point.vo.recrod.MemberPointRecordRespVO;
6 7 import cn.iocoder.yudao.module.member.dal.dataobject.point.MemberPointRecordDO;
7 8 import org.mapstruct.Mapper;
8 9 import org.mapstruct.factory.Mappers;
9   -import org.springframework.util.CollectionUtils;
10 10  
11   -import java.util.ArrayList;
12 11 import java.util.List;
13 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 17 * 用户积分记录 Convert
... ... @@ -23,62 +23,14 @@ public interface MemberPointRecordConvert {
23 23  
24 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 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 6 import cn.iocoder.yudao.module.member.dal.dataobject.signin.MemberSignInConfigDO;
8 7 import org.mapstruct.Mapper;
9 8 import org.mapstruct.factory.Mappers;
... ... @@ -28,6 +27,4 @@ public interface MemberSignInConfigConvert {
28 27  
29 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 1 package cn.iocoder.yudao.module.member.convert.signin;
2 2  
3 3 import cn.iocoder.yudao.framework.common.pojo.PageResult;
  4 +import cn.iocoder.yudao.framework.common.util.collection.MapUtils;
4 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 7 import cn.iocoder.yudao.module.member.dal.dataobject.signin.MemberSignInRecordDO;
7   -import cn.iocoder.yudao.module.system.api.user.dto.AdminUserRespDTO;
8 8 import org.mapstruct.Mapper;
9 9 import org.mapstruct.factory.Mappers;
10   -import org.springframework.util.CollectionUtils;
11 10  
12   -import java.util.ArrayList;
13 11 import java.util.List;
14 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 17 * 用户签到积分 Convert
... ... @@ -25,57 +23,14 @@ public interface MemberSignInRecordConvert {
25 23  
26 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 29 @TableId
30 30 private Long id;
31 31 /**
  32 + * 用户编号
  33 + *
  34 + * 对应 MemberUserDO 的 id 属性
  35 + */
  36 + private Long userId;
  37 +
  38 + /**
32 39 * 业务编码
33 40 */
34 41 private String bizId;
... ... @@ -36,6 +43,7 @@ public class MemberPointRecordDO extends BaseDO {
36 43 * 业务类型
37 44 *
38 45 * 枚举 {@link TODO biz_type 对应枚举,然后改成 int 类型哈}
  46 + * TODO @qingxia:这个改成 Integer,然后搞个枚举
39 47 */
40 48 private String bizType;
41 49 /**
... ... @@ -58,12 +66,10 @@ public class MemberPointRecordDO extends BaseDO {
58 66 * 状态:1-订单创建,2-冻结期,3-完成,4-失效(订单退款)
59 67 *
60 68 * 枚举 {@link point_status 对应的类}
  69 + * TODO @qingxia:搞个枚举
61 70 */
62 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 25 * 规则自增主键
26 26 */
27 27 @TableId
28   - private Integer id;
  28 + private Long id;
29 29 /**
30 30 * 签到第x天
31 31 */
... ... @@ -34,8 +34,11 @@ public class MemberSignInConfigDO extends BaseDO {
34 34 * 签到天数对应分数
35 35 */
36 36 private Integer point;
  37 +
  38 + // TODO @puhui999:enable;不用 is 开头
37 39 /**
38 40 * 是否启用
39 41 */
40 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 7 import cn.iocoder.yudao.module.member.dal.dataobject.point.MemberPointRecordDO;
8 8 import org.apache.ibatis.annotations.Mapper;
9 9  
  10 +import java.util.Set;
  11 +
10 12 /**
11 13 * 用户积分记录 Mapper
12 14 *
... ... @@ -15,11 +17,10 @@ import org.apache.ibatis.annotations.Mapper;
15 17 @Mapper
16 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 21 return selectPage(reqVO, new LambdaQueryWrapperX<MemberPointRecordDO>()
20   - .inIfPresent(MemberPointRecordDO::getUserId,reqVO.getUserIds())
  22 + .inIfPresent(MemberPointRecordDO::getUserId, userIds)
21 23 .eqIfPresent(MemberPointRecordDO::getBizType, reqVO.getBizType())
22   - .eqIfPresent(MemberPointRecordDO::getType, reqVO.getType())
23 24 .eqIfPresent(MemberPointRecordDO::getTitle, reqVO.getTitle())
24 25 .eqIfPresent(MemberPointRecordDO::getStatus, reqVO.getStatus())
25 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 16 @Mapper
17 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 20 default int updateIfPresent(MemberSignInConfigDO updateObj){
25 21 LambdaUpdateWrapper <MemberSignInConfigDO> wrapper = new LambdaUpdateWrapper <>();
26 22 wrapper.eq(MemberSignInConfigDO::getId, updateObj.getId())
... ... @@ -30,18 +26,13 @@ public interface MemberSignInConfigMapper extends BaseMapperX&lt;MemberSignInConfig
30 26 return update(null,wrapper);
31 27 }
32 28  
33   - default List <MemberSignInConfigDO> getList(){
  29 + // TODO @qingxia:不用这个方法,selectList,业务层自己排序即可
  30 + default List<MemberSignInConfigDO> getList() {
34 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 3 import cn.iocoder.yudao.framework.common.pojo.PageResult;
4 4 import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX;
5 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 7 import cn.iocoder.yudao.module.member.dal.dataobject.signin.MemberSignInRecordDO;
8 8 import org.apache.ibatis.annotations.Mapper;
9 9  
  10 +import java.util.Set;
  11 +
10 12 /**
11 13 * 用户签到积分 Mapper
12 14 *
... ... @@ -15,9 +17,9 @@ import org.apache.ibatis.annotations.Mapper;
15 17 @Mapper
16 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 21 return selectPage(reqVO, new LambdaQueryWrapperX<MemberSignInRecordDO>()
20   - .inIfPresent(MemberSignInRecordDO::getUserId, reqVO.getUserIds())
  22 + .inIfPresent(MemberSignInRecordDO::getUserId, userIds)
21 23 .eqIfPresent(MemberSignInRecordDO::getDay, reqVO.getDay())
22 24 .betweenIfPresent(MemberSignInRecordDO::getCreateTime, reqVO.getCreateTime())
23 25 .orderByDesc(MemberSignInRecordDO::getId));
... ...
yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/point/MemberPointRecordServiceImpl.java
1 1 package cn.iocoder.yudao.module.member.service.point;
2 2  
3 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 6 import cn.iocoder.yudao.module.member.controller.admin.point.vo.recrod.MemberPointRecordPageReqVO;
5 7 import cn.iocoder.yudao.module.member.dal.dataobject.point.MemberPointRecordDO;
6 8 import cn.iocoder.yudao.module.member.dal.mysql.point.MemberPointRecordMapper;
  9 +import org.apache.commons.lang3.StringUtils;
7 10 import org.springframework.stereotype.Service;
  11 +import org.springframework.util.CollectionUtils;
8 12 import org.springframework.validation.annotation.Validated;
9 13  
10 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 30 @Resource
23 31 private MemberPointRecordMapper recordMapper;
24 32  
  33 + @Resource
  34 + private MemberUserApi memberUserApi;
  35 +
25 36 @Override
26 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 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 5 import cn.iocoder.yudao.module.member.dal.dataobject.signin.MemberSignInConfigDO;
6 6  
7 7 import javax.validation.Valid;
... ... @@ -20,7 +20,7 @@ public interface MemberSignInConfigService {
20 20 * @param createReqVO 创建信息
21 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 34 *
35 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 42 * @param id 编号
43 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 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 5 import cn.iocoder.yudao.module.member.convert.signin.MemberSignInConfigConvert;
6 6 import cn.iocoder.yudao.module.member.dal.dataobject.signin.MemberSignInConfigDO;
7 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 8 import org.springframework.stereotype.Service;
12 9 import org.springframework.validation.annotation.Validated;
13 10  
14 11 import javax.annotation.Resource;
15   -
16 12 import java.util.List;
17 13  
18 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 18 * 积分签到规则 Service 实现类
... ... @@ -29,16 +24,16 @@ import static cn.iocoder.yudao.module.member.enums.ErrorCodeConstants.SIGN_IN_CO
29 24 public class MemberSignInConfigServiceImpl implements MemberSignInConfigService {
30 25  
31 26 @Resource
32   - private MemberSignInConfigMapper memberSignInConfigMapper;
  27 + private MemberSignInConfigMapper signInConfigMapper;
33 28  
34 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 35 MemberSignInConfigDO signInConfig = MemberSignInConfigConvert.INSTANCE.convert(createReqVO);
41   - memberSignInConfigMapper.insert(signInConfig);
  36 + signInConfigMapper.insert(signInConfig);
42 37 // 返回
43 38 return signInConfig.getId();
44 39 }
... ... @@ -47,52 +42,54 @@ public class MemberSignInConfigServiceImpl implements MemberSignInConfigService
47 42 public void updateSignInConfig(MemberSignInConfigUpdateReqVO updateReqVO) {
48 43 // 校验存在
49 44 validateSignInConfigExists(updateReqVO.getId());
50   - //判断是否重复插入签到天数
51   - validateSignInConfigSameDayNotSelf(updateReqVO);
  45 + // 判断是否重复插入签到天数
  46 + validateSignInConfigDayDuplicate(updateReqVO.getDay(), updateReqVO.getId());
52 47  
53 48 // 判断更新
54 49 MemberSignInConfigDO updateObj = MemberSignInConfigConvert.INSTANCE.convert(updateReqVO);
55   - memberSignInConfigMapper.updateIfPresent(updateObj);
  50 + signInConfigMapper.updateIfPresent(updateObj);
56 51 }
57 52  
58 53 @Override
59   - public void deleteSignInConfig(Integer id) {
  54 + public void deleteSignInConfig(Long id) {
60 55 // 校验存在
61 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 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 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 81 throw exception(SIGN_IN_CONFIG_EXISTS);
85 82 }
86 83 }
87 84  
88 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 90 @Override
94 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 1 package cn.iocoder.yudao.module.member.service.signin;
2 2  
3 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 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 11 */
12 12 public interface MemberSignInRecordService {
13 13  
14   -
15   -
16 14 /**
17 15 * 获得用户签到积分分页
18 16 *
... ... @@ -21,5 +19,4 @@ public interface MemberSignInRecordService {
21 19 */
22 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 1 package cn.iocoder.yudao.module.member.service.signin;
2 2  
3 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 7 import cn.iocoder.yudao.module.member.dal.dataobject.signin.MemberSignInRecordDO;
6 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 10 import org.springframework.stereotype.Service;
  11 +import org.springframework.util.CollectionUtils;
9 12 import org.springframework.validation.annotation.Validated;
10 13  
11 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 21 * 用户签到积分 Service 实现类
... ... @@ -23,15 +27,24 @@ import static cn.iocoder.yudao.module.member.enums.ErrorCodeConstants.SIGN_IN_RE
23 27 public class MemberSignInRecordServiceImpl implements MemberSignInRecordService {
24 28  
25 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 35 @Override
33 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 51 # url: jdbc:oracle:thin:@127.0.0.1:1521:xe # Oracle 连接的示例
52 52 # url: jdbc:sqlserver://127.0.0.1:1433;DatabaseName=${spring.datasource.dynamic.datasource.master.name} # SQLServer 连接的示例
53 53 username: root
54   - password: 1qaz!QAZ
  54 + password: 123456
55 55 # username: sa
56 56 # password: JSm:g(*%lU4ZAkz06cd52KqT3)i1?H7W
57 57 slave: # 模拟从库,可根据自己需要修改
... ... @@ -62,13 +62,13 @@ spring:
62 62 # url: jdbc:oracle:thin:@127.0.0.1:1521:xe # Oracle 连接的示例
63 63 # url: jdbc:sqlserver://127.0.0.1:1433;DatabaseName=${spring.datasource.dynamic.datasource.slave.name} # SQLServer 连接的示例
64 64 username: root
65   - password: 1qaz!QAZ
  65 + password: 123456
66 66 # username: sa
67 67 # password: JSm:g(*%lU4ZAkz06cd52KqT3)i1?H7W
68 68  
69 69 # Redis 配置。Redisson 默认的配置足够使用,一般不需要进行调优
70 70 redis:
71   - host: 10.211.55.5 # 地址
  71 + host: 127.0.0.1 # 地址
72 72 port: 6379 # 端口
73 73 database: 0 # 数据库索引
74 74 # password: dev # 密码,建议生产环境开启
... ...