Commit 33323c1483604330b17b1767e774fd39d1c005fc

Authored by xiaqing
1 parent ba59ec85

会员签到针对代码格式、功能优化

1.优化todo建议
2.删除无用代码
Showing 16 changed files with 152 additions and 122 deletions
yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/signin/MemberSignInConfigController.java
@@ -3,7 +3,6 @@ package cn.iocoder.yudao.module.member.controller.admin.signin; @@ -3,7 +3,6 @@ package cn.iocoder.yudao.module.member.controller.admin.signin;
3 import cn.iocoder.yudao.framework.common.pojo.CommonResult; 3 import cn.iocoder.yudao.framework.common.pojo.CommonResult;
4 import cn.iocoder.yudao.framework.common.pojo.PageResult; 4 import cn.iocoder.yudao.framework.common.pojo.PageResult;
5 import cn.iocoder.yudao.module.member.controller.admin.signin.vo.MemberSignInConfigCreateReqVO; 5 import cn.iocoder.yudao.module.member.controller.admin.signin.vo.MemberSignInConfigCreateReqVO;
6 -import cn.iocoder.yudao.module.member.controller.admin.signin.vo.MemberSignInConfigPageReqVO;  
7 import cn.iocoder.yudao.module.member.controller.admin.signin.vo.MemberSignInConfigRespVO; 6 import cn.iocoder.yudao.module.member.controller.admin.signin.vo.MemberSignInConfigRespVO;
8 import cn.iocoder.yudao.module.member.controller.admin.signin.vo.MemberSignInConfigUpdateReqVO; 7 import cn.iocoder.yudao.module.member.controller.admin.signin.vo.MemberSignInConfigUpdateReqVO;
9 import cn.iocoder.yudao.module.member.convert.signin.MemberSignInConfigConvert; 8 import cn.iocoder.yudao.module.member.convert.signin.MemberSignInConfigConvert;
@@ -19,6 +18,8 @@ import org.springframework.web.bind.annotation.*; @@ -19,6 +18,8 @@ import org.springframework.web.bind.annotation.*;
19 import javax.annotation.Resource; 18 import javax.annotation.Resource;
20 import javax.validation.Valid; 19 import javax.validation.Valid;
21 20
  21 +import java.util.List;
  22 +
22 import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success; 23 import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
23 24
24 @Tag(name = "管理后台 - 积分签到规则") 25 @Tag(name = "管理后台 - 积分签到规则")
@@ -63,12 +64,12 @@ public class MemberSignInConfigController { @@ -63,12 +64,12 @@ public class MemberSignInConfigController {
63 return success(MemberSignInConfigConvert.INSTANCE.convert(signInConfig)); 64 return success(MemberSignInConfigConvert.INSTANCE.convert(signInConfig));
64 } 65 }
65 66
66 - @GetMapping("/page") 67 + @GetMapping("/list")
67 @Operation(summary = "获得积分签到规则分页") 68 @Operation(summary = "获得积分签到规则分页")
68 @PreAuthorize("@ss.hasPermission('point:sign-in-config:query')") 69 @PreAuthorize("@ss.hasPermission('point:sign-in-config:query')")
69 - public CommonResult<PageResult<MemberSignInConfigRespVO>> getSignInConfigPage(@Valid MemberSignInConfigPageReqVO pageVO) {  
70 - PageResult<MemberSignInConfigDO> pageResult = memberSignInConfigService.getSignInConfigPage(pageVO);  
71 - return success(MemberSignInConfigConvert.INSTANCE.convertPage(pageResult)); 70 + public CommonResult<List<MemberSignInConfigRespVO>> getSignInConfigPage() {
  71 + List<MemberSignInConfigDO> pageResult = memberSignInConfigService.getSignInConfigList();
  72 + return success(MemberSignInConfigConvert.INSTANCE.convertList(pageResult));
72 } 73 }
73 74
74 } 75 }
yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/signin/MemberSignInRecordController.java
@@ -7,16 +7,22 @@ import cn.iocoder.yudao.module.member.controller.admin.signin.vo.MemberSignInRec @@ -7,16 +7,22 @@ import cn.iocoder.yudao.module.member.controller.admin.signin.vo.MemberSignInRec
7 import cn.iocoder.yudao.module.member.convert.signin.MemberSignInRecordConvert; 7 import cn.iocoder.yudao.module.member.convert.signin.MemberSignInRecordConvert;
8 import cn.iocoder.yudao.module.member.dal.dataobject.signin.MemberSignInRecordDO; 8 import cn.iocoder.yudao.module.member.dal.dataobject.signin.MemberSignInRecordDO;
9 import cn.iocoder.yudao.module.member.service.signin.MemberSignInRecordService; 9 import cn.iocoder.yudao.module.member.service.signin.MemberSignInRecordService;
  10 +import cn.iocoder.yudao.module.system.api.user.AdminUserApi;
  11 +import cn.iocoder.yudao.module.system.api.user.dto.AdminUserRespDTO;
10 import io.swagger.v3.oas.annotations.Operation; 12 import io.swagger.v3.oas.annotations.Operation;
11 import io.swagger.v3.oas.annotations.Parameter; 13 import io.swagger.v3.oas.annotations.Parameter;
12 import io.swagger.v3.oas.annotations.tags.Tag; 14 import io.swagger.v3.oas.annotations.tags.Tag;
13 import org.springframework.security.access.prepost.PreAuthorize; 15 import org.springframework.security.access.prepost.PreAuthorize;
  16 +import org.springframework.util.CollectionUtils;
14 import org.springframework.validation.annotation.Validated; 17 import org.springframework.validation.annotation.Validated;
15 import org.springframework.web.bind.annotation.*; 18 import org.springframework.web.bind.annotation.*;
16 19
17 import javax.annotation.Resource; 20 import javax.annotation.Resource;
18 import javax.validation.Valid; 21 import javax.validation.Valid;
19 22
  23 +import java.util.List;
  24 +import java.util.stream.Collectors;
  25 +
20 import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success; 26 import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
21 27
22 @Tag(name = "管理后台 - 用户签到积分") 28 @Tag(name = "管理后台 - 用户签到积分")
@@ -27,31 +33,22 @@ public class MemberSignInRecordController { @@ -27,31 +33,22 @@ public class MemberSignInRecordController {
27 33
28 @Resource 34 @Resource
29 private MemberSignInRecordService memberSignInRecordService; 35 private MemberSignInRecordService memberSignInRecordService;
  36 + @Resource
  37 + AdminUserApi adminUserApi;
30 38
31 - // TODO @xiaqing:签到是不是不用删除?  
32 - @DeleteMapping("/delete")  
33 - @Operation(summary = "删除用户签到积分")  
34 - @Parameter(name = "id", description = "编号", required = true)  
35 - @PreAuthorize("@ss.hasPermission('point:sign-in-record:delete')")  
36 - public CommonResult<Boolean> deleteSignInRecord(@RequestParam("id") Long id) {  
37 - memberSignInRecordService.deleteSignInRecord(id);  
38 - return success(true);  
39 - }  
40 -  
41 - @GetMapping("/get")  
42 - @Operation(summary = "获得用户签到积分")  
43 - @Parameter(name = "id", description = "编号", required = true, example = "1024")  
44 - @PreAuthorize("@ss.hasPermission('point:sign-in-record:query')")  
45 - public CommonResult<MemberSignInRecordRespVO> getSignInRecord(@RequestParam("id") Long id) {  
46 - MemberSignInRecordDO signInRecord = memberSignInRecordService.getSignInRecord(id);  
47 - return success(MemberSignInRecordConvert.INSTANCE.convert(signInRecord));  
48 - }  
49 39
50 @GetMapping("/page") 40 @GetMapping("/page")
51 @Operation(summary = "获得用户签到积分分页") 41 @Operation(summary = "获得用户签到积分分页")
52 @PreAuthorize("@ss.hasPermission('point:sign-in-record:query')") 42 @PreAuthorize("@ss.hasPermission('point:sign-in-record:query')")
53 - public CommonResult<PageResult<MemberSignInRecordRespVO>> getSignInRecordPage(@Valid MemberSignInRecordPageReqVO pageVO) {  
54 - PageResult<MemberSignInRecordDO> pageResult = memberSignInRecordService.getSignInRecordPage(pageVO);  
55 - return success(MemberSignInRecordConvert.INSTANCE.convertPage(pageResult)); 43 + public CommonResult <PageResult <MemberSignInRecordRespVO>> getSignInRecordPage(@Valid MemberSignInRecordPageReqVO pageVO) {
  44 + PageResult <MemberSignInRecordDO> pageResult = memberSignInRecordService.getSignInRecordPage(pageVO);
  45 + List <MemberSignInRecordDO> result = pageResult.getList();
  46 + //设置获取的用户信息
  47 + List <AdminUserRespDTO> users = null;
  48 + if (!CollectionUtils.isEmpty(result)) {
  49 + List <Long> ids = result.stream().map(user -> user.getUserId()).collect(Collectors.toList());
  50 + users = adminUserApi.getUserList(ids);
  51 + }
  52 + return success(MemberSignInRecordConvert.INSTANCE.convertPage(pageResult, users));
56 } 53 }
57 } 54 }
yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/signin/vo/MemberSignInConfigBaseVO.java
@@ -16,4 +16,8 @@ public class MemberSignInConfigBaseVO { @@ -16,4 +16,8 @@ public class MemberSignInConfigBaseVO {
16 @Schema(description = "签到天数对应分数", example = "10") 16 @Schema(description = "签到天数对应分数", example = "10")
17 private Integer point; 17 private Integer point;
18 18
  19 + @Schema(description = "是否启用", example = "1")
  20 + private Boolean isEnable;
  21 +
  22 +
19 } 23 }
yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/signin/vo/MemberSignInConfigPageReqVO.java deleted
1 -package cn.iocoder.yudao.module.member.controller.admin.signin.vo;  
2 -  
3 -import lombok.*;  
4 -import io.swagger.v3.oas.annotations.media.Schema;  
5 -import cn.iocoder.yudao.framework.common.pojo.PageParam;  
6 -  
7 -@Schema(description = "管理后台 - 积分签到规则分页 Request VO")  
8 -@Data  
9 -@EqualsAndHashCode(callSuper = true)  
10 -@ToString(callSuper = true)  
11 -public class MemberSignInConfigPageReqVO extends PageParam {  
12 -  
13 - @Schema(description = "签到第x天", example = "7")  
14 - private Integer day;  
15 -  
16 -}  
yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/signin/vo/MemberSignInRecordBaseVO.java
@@ -11,7 +11,7 @@ import lombok.Data; @@ -11,7 +11,7 @@ import lombok.Data;
11 public class MemberSignInRecordBaseVO { 11 public class MemberSignInRecordBaseVO {
12 12
13 @Schema(description = "签到用户", example = "6507") 13 @Schema(description = "签到用户", example = "6507")
14 - private Integer userId; 14 + private Long userId;
15 15
16 @Schema(description = "第几天签到") 16 @Schema(description = "第几天签到")
17 private Integer day; 17 private Integer day;
yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/signin/vo/MemberSignInRecordPageReqVO.java
@@ -18,7 +18,7 @@ import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_ @@ -18,7 +18,7 @@ import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_
18 public class MemberSignInRecordPageReqVO extends PageParam { 18 public class MemberSignInRecordPageReqVO extends PageParam {
19 19
20 @Schema(description = "签到用户", example = "6507") 20 @Schema(description = "签到用户", example = "6507")
21 - private Integer userId; 21 + private Long userId;
22 22
23 @Schema(description = "第几天签到") 23 @Schema(description = "第几天签到")
24 private Integer day; 24 private Integer day;
yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/signin/vo/MemberSignInRecordRespVO.java
@@ -19,4 +19,7 @@ public class MemberSignInRecordRespVO extends MemberSignInRecordBaseVO { @@ -19,4 +19,7 @@ public class MemberSignInRecordRespVO extends MemberSignInRecordBaseVO {
19 @Schema(description = "签到时间") 19 @Schema(description = "签到时间")
20 private LocalDateTime createTime; 20 private LocalDateTime createTime;
21 21
  22 + //昵称,用于前台展示
  23 + private String nickName;
  24 +
22 } 25 }
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.module.member.controller.admin.signin.vo.MemberSignInRecordCreateReqVO;  
5 import cn.iocoder.yudao.module.member.controller.admin.signin.vo.MemberSignInRecordRespVO; 4 import cn.iocoder.yudao.module.member.controller.admin.signin.vo.MemberSignInRecordRespVO;
6 -import cn.iocoder.yudao.module.member.controller.admin.signin.vo.MemberSignInRecordUpdateReqVO;  
7 import cn.iocoder.yudao.module.member.dal.dataobject.signin.MemberSignInRecordDO; 5 import cn.iocoder.yudao.module.member.dal.dataobject.signin.MemberSignInRecordDO;
  6 +import cn.iocoder.yudao.module.system.api.user.dto.AdminUserRespDTO;
8 import org.mapstruct.Mapper; 7 import org.mapstruct.Mapper;
9 import org.mapstruct.factory.Mappers; 8 import org.mapstruct.factory.Mappers;
  9 +import org.springframework.util.CollectionUtils;
  10 +
  11 +import java.util.ArrayList;
  12 +import java.util.List;
  13 +import java.util.Map;
  14 +import java.util.function.Function;
  15 +import java.util.stream.Collectors;
10 16
11 /** 17 /**
12 * 用户签到积分 Convert 18 * 用户签到积分 Convert
@@ -18,12 +24,57 @@ public interface MemberSignInRecordConvert { @@ -18,12 +24,57 @@ public interface MemberSignInRecordConvert {
18 24
19 MemberSignInRecordConvert INSTANCE = Mappers.getMapper(MemberSignInRecordConvert.class); 25 MemberSignInRecordConvert INSTANCE = Mappers.getMapper(MemberSignInRecordConvert.class);
20 26
21 - MemberSignInRecordDO convert(MemberSignInRecordCreateReqVO bean); 27 + default public MemberSignInRecordRespVO convert(MemberSignInRecordDO bean) {
  28 + if (bean == null) {
  29 + return null;
  30 + }
  31 +
  32 + MemberSignInRecordRespVO memberSignInRecordRespVO = new MemberSignInRecordRespVO();
  33 +
  34 + memberSignInRecordRespVO.setUserId(bean.getUserId());
  35 + memberSignInRecordRespVO.setDay(bean.getDay());
  36 + memberSignInRecordRespVO.setPoint(bean.getPoint());
  37 + memberSignInRecordRespVO.setId(bean.getId());
  38 + memberSignInRecordRespVO.setCreateTime(bean.getCreateTime());
  39 +
  40 + return memberSignInRecordRespVO;
  41 + }
  42 +
  43 + default PageResult <MemberSignInRecordRespVO> convertPage(PageResult <MemberSignInRecordDO> page, List<AdminUserRespDTO> userRespDTOS) {
  44 + if (page == null) {
  45 + return null;
  46 + }
  47 +
  48 + PageResult <MemberSignInRecordRespVO> pageResult = new PageResult <MemberSignInRecordRespVO>();
  49 +
  50 + pageResult.setList(memberSignInRecordDOListToMemberSignInRecordRespVOList(page.getList(),userRespDTOS));
  51 + pageResult.setTotal(page.getTotal());
  52 +
  53 + return pageResult;
  54 + }
22 55
23 - MemberSignInRecordDO convert(MemberSignInRecordUpdateReqVO bean); 56 + default List <MemberSignInRecordRespVO> memberSignInRecordDOListToMemberSignInRecordRespVOList(List <MemberSignInRecordDO> list,List<AdminUserRespDTO> userRespDTOS) {
  57 + if (list == null) {
  58 + return null;
  59 + }
  60 + Map <Long, String> maps=null;
  61 + //是否需要转换用户标志
  62 + boolean userNickFlag = !CollectionUtils.isEmpty(userRespDTOS);
  63 + if(userNickFlag){
  64 + maps = userRespDTOS.stream()
  65 + .collect(Collectors.toMap(AdminUserRespDTO::getId, AdminUserRespDTO::getNickname, (key1, key2) -> key2));
  66 + }
  67 + List <MemberSignInRecordRespVO> list1 = new ArrayList <MemberSignInRecordRespVO>(list.size());
  68 + for (MemberSignInRecordDO memberSignInRecordDO : list) {
  69 + MemberSignInRecordRespVO recordRespVO = convert(memberSignInRecordDO);
  70 + if(userNickFlag){
  71 + recordRespVO.setNickName(maps.get(recordRespVO.getUserId()));
  72 + }
  73 + list1.add(recordRespVO);
  74 + }
24 75
25 - MemberSignInRecordRespVO convert(MemberSignInRecordDO bean); 76 + return list1;
  77 + }
26 78
27 - PageResult<MemberSignInRecordRespVO> convertPage(PageResult<MemberSignInRecordDO> page);  
28 79
29 } 80 }
yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/dal/dataobject/signin/MemberSignInConfigDO.java
@@ -34,5 +34,8 @@ public class MemberSignInConfigDO extends BaseDO { @@ -34,5 +34,8 @@ public class MemberSignInConfigDO extends BaseDO {
34 * 签到天数对应分数 34 * 签到天数对应分数
35 */ 35 */
36 private Integer point; 36 private Integer point;
37 - 37 + /**
  38 + * 是否启用
  39 + */
  40 + private Boolean isEnable;
38 } 41 }
yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/dal/dataobject/signin/MemberSignInRecordDO.java
@@ -29,7 +29,7 @@ public class MemberSignInRecordDO extends BaseDO { @@ -29,7 +29,7 @@ public class MemberSignInRecordDO extends BaseDO {
29 /** 29 /**
30 * 签到用户 30 * 签到用户
31 */ 31 */
32 - private Integer userId; 32 + private Long userId;
33 /** 33 /**
34 * 第几天签到 34 * 第几天签到
35 */ 35 */
yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/dal/mysql/signin/MemberSignInConfigMapper.java
1 package cn.iocoder.yudao.module.member.dal.mysql.signin; 1 package cn.iocoder.yudao.module.member.dal.mysql.signin;
2 2
3 -import cn.iocoder.yudao.framework.common.pojo.PageResult;  
4 import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX; 3 import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX;
5 import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX; 4 import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX;
6 -import cn.iocoder.yudao.module.member.controller.admin.signin.vo.MemberSignInConfigPageReqVO;  
7 -import cn.iocoder.yudao.module.member.controller.admin.signin.vo.MemberSignInConfigUpdateReqVO;  
8 import cn.iocoder.yudao.module.member.dal.dataobject.signin.MemberSignInConfigDO; 5 import cn.iocoder.yudao.module.member.dal.dataobject.signin.MemberSignInConfigDO;
  6 +import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
9 import org.apache.ibatis.annotations.Mapper; 7 import org.apache.ibatis.annotations.Mapper;
10 8
  9 +import java.util.List;
  10 +
11 /** 11 /**
12 * 积分签到规则 Mapper 12 * 积分签到规则 Mapper
13 * 13 *
@@ -16,18 +16,32 @@ import org.apache.ibatis.annotations.Mapper; @@ -16,18 +16,32 @@ import org.apache.ibatis.annotations.Mapper;
16 @Mapper 16 @Mapper
17 public interface MemberSignInConfigMapper extends BaseMapperX<MemberSignInConfigDO> { 17 public interface MemberSignInConfigMapper extends BaseMapperX<MemberSignInConfigDO> {
18 18
19 - default PageResult<MemberSignInConfigDO> selectPage(MemberSignInConfigPageReqVO reqVO) {  
20 - return selectPage(reqVO, new LambdaQueryWrapperX<MemberSignInConfigDO>()  
21 - .eqIfPresent(MemberSignInConfigDO::getDay, reqVO.getDay())  
22 - .orderByAsc(MemberSignInConfigDO::getDay)); 19 + /**
  20 + * 描述 :选择性更新对象属性,如果不为空则更新。
  21 + * Author :xiaqing
  22 + * Date :2023-08-08 23:38:48
  23 + */
  24 + default int updateIfPresent(MemberSignInConfigDO updateObj){
  25 + LambdaUpdateWrapper <MemberSignInConfigDO> wrapper = new LambdaUpdateWrapper <>();
  26 + wrapper.eq(MemberSignInConfigDO::getId, updateObj.getId())
  27 + .set(updateObj.getDay() != null, MemberSignInConfigDO::getDay, updateObj.getDay())
  28 + .set(updateObj.getPoint() != null, MemberSignInConfigDO::getPoint, updateObj.getPoint())
  29 + .set(updateObj.getIsEnable() != null, MemberSignInConfigDO::getIsEnable, updateObj.getIsEnable());
  30 + return update(null,wrapper);
  31 + }
  32 +
  33 + default List <MemberSignInConfigDO> getList(){
  34 + return selectList(new LambdaQueryWrapperX <MemberSignInConfigDO>().orderByAsc(MemberSignInConfigDO::getDay));
23 } 35 }
24 36
25 - //  
26 - default long selectSameDayNotSelf(MemberSignInConfigUpdateReqVO reqVO){  
27 - return selectCount(new LambdaQueryWrapperX <MemberSignInConfigDO>()  
28 - .ne(MemberSignInConfigDO::getId, reqVO.getId())  
29 - .eq(MemberSignInConfigDO::getDay,reqVO.getDay())  
30 - ); 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 +
31 } 45 }
32 46
33 } 47 }
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.framework.common.pojo.PageResult;  
4 import cn.iocoder.yudao.module.member.controller.admin.signin.vo.MemberSignInConfigCreateReqVO; 3 import cn.iocoder.yudao.module.member.controller.admin.signin.vo.MemberSignInConfigCreateReqVO;
5 -import cn.iocoder.yudao.module.member.controller.admin.signin.vo.MemberSignInConfigPageReqVO;  
6 import cn.iocoder.yudao.module.member.controller.admin.signin.vo.MemberSignInConfigUpdateReqVO; 4 import cn.iocoder.yudao.module.member.controller.admin.signin.vo.MemberSignInConfigUpdateReqVO;
7 import cn.iocoder.yudao.module.member.dal.dataobject.signin.MemberSignInConfigDO; 5 import cn.iocoder.yudao.module.member.dal.dataobject.signin.MemberSignInConfigDO;
8 6
9 import javax.validation.Valid; 7 import javax.validation.Valid;
  8 +import java.util.List;
10 9
11 /** 10 /**
12 * 积分签到规则 Service 接口 11 * 积分签到规则 Service 接口
@@ -48,9 +47,8 @@ public interface MemberSignInConfigService { @@ -48,9 +47,8 @@ public interface MemberSignInConfigService {
48 /** 47 /**
49 * 获得积分签到规则分页 48 * 获得积分签到规则分页
50 * 49 *
51 - * @param pageReqVO 分页查询  
52 * @return 积分签到规则分页 50 * @return 积分签到规则分页
53 */ 51 */
54 - PageResult<MemberSignInConfigDO> getSignInConfigPage(MemberSignInConfigPageReqVO pageReqVO); 52 + List<MemberSignInConfigDO> getSignInConfigList();
55 53
56 } 54 }
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.framework.common.pojo.PageResult;  
4 import cn.iocoder.yudao.module.member.controller.admin.signin.vo.MemberSignInConfigCreateReqVO; 3 import cn.iocoder.yudao.module.member.controller.admin.signin.vo.MemberSignInConfigCreateReqVO;
5 -import cn.iocoder.yudao.module.member.controller.admin.signin.vo.MemberSignInConfigPageReqVO;  
6 import cn.iocoder.yudao.module.member.controller.admin.signin.vo.MemberSignInConfigUpdateReqVO; 4 import cn.iocoder.yudao.module.member.controller.admin.signin.vo.MemberSignInConfigUpdateReqVO;
7 import cn.iocoder.yudao.module.member.convert.signin.MemberSignInConfigConvert; 5 import cn.iocoder.yudao.module.member.convert.signin.MemberSignInConfigConvert;
8 import cn.iocoder.yudao.module.member.dal.dataobject.signin.MemberSignInConfigDO; 6 import cn.iocoder.yudao.module.member.dal.dataobject.signin.MemberSignInConfigDO;
9 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;
10 import org.springframework.stereotype.Service; 11 import org.springframework.stereotype.Service;
11 import org.springframework.validation.annotation.Validated; 12 import org.springframework.validation.annotation.Validated;
12 13
13 import javax.annotation.Resource; 14 import javax.annotation.Resource;
14 15
  16 +import java.util.List;
  17 +
15 import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception; 18 import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;
16 import static cn.iocoder.yudao.module.member.enums.ErrorCodeConstants.SIGN_IN_CONFIG_EXISTS; 19 import static cn.iocoder.yudao.module.member.enums.ErrorCodeConstants.SIGN_IN_CONFIG_EXISTS;
17 import static cn.iocoder.yudao.module.member.enums.ErrorCodeConstants.SIGN_IN_CONFIG_NOT_EXISTS; 20 import static cn.iocoder.yudao.module.member.enums.ErrorCodeConstants.SIGN_IN_CONFIG_NOT_EXISTS;
@@ -28,30 +31,28 @@ public class MemberSignInConfigServiceImpl implements MemberSignInConfigService @@ -28,30 +31,28 @@ public class MemberSignInConfigServiceImpl implements MemberSignInConfigService
28 @Resource 31 @Resource
29 private MemberSignInConfigMapper memberSignInConfigMapper; 32 private MemberSignInConfigMapper memberSignInConfigMapper;
30 33
31 - // TODO @xiaqing:这种写的逻辑,最好按照 校验 - 更新这样的顺序写;类似这里,37 要放到 34 前面;updateSignInConfig 也是一样的思路  
32 @Override 34 @Override
33 public Integer createSignInConfig(MemberSignInConfigCreateReqVO createReqVO) { 35 public Integer createSignInConfig(MemberSignInConfigCreateReqVO createReqVO) {
  36 + // 判断是否重复插入签到天数
  37 + validateSignInConfigExistsDay(createReqVO.getDay());
  38 +
34 // 插入 39 // 插入
35 MemberSignInConfigDO signInConfig = MemberSignInConfigConvert.INSTANCE.convert(createReqVO); 40 MemberSignInConfigDO signInConfig = MemberSignInConfigConvert.INSTANCE.convert(createReqVO);
36 - // 判断是否重复插入签到天数  
37 - validateSignInConfigExistsDay(signInConfig.getDay());  
38 memberSignInConfigMapper.insert(signInConfig); 41 memberSignInConfigMapper.insert(signInConfig);
39 // 返回 42 // 返回
40 return signInConfig.getId(); 43 return signInConfig.getId();
41 } 44 }
42 45
43 - // TODO @xiaqing:这个逻辑的空行要注意;52 到 53 是没必要的空行;而 49 和 50 之间有个空行会好点,可以区分出是 校验 - 更新这样的逻辑间隔  
44 @Override 46 @Override
45 public void updateSignInConfig(MemberSignInConfigUpdateReqVO updateReqVO) { 47 public void updateSignInConfig(MemberSignInConfigUpdateReqVO updateReqVO) {
46 // 校验存在 48 // 校验存在
47 validateSignInConfigExists(updateReqVO.getId()); 49 validateSignInConfigExists(updateReqVO.getId());
48 //判断是否重复插入签到天数 50 //判断是否重复插入签到天数
49 validateSignInConfigSameDayNotSelf(updateReqVO); 51 validateSignInConfigSameDayNotSelf(updateReqVO);
50 - // 判断更新的  
51 - MemberSignInConfigDO updateObj = MemberSignInConfigConvert.INSTANCE.convert(updateReqVO);  
52 -  
53 52
54 - memberSignInConfigMapper.updateById(updateObj); 53 + // 判断更新
  54 + MemberSignInConfigDO updateObj = MemberSignInConfigConvert.INSTANCE.convert(updateReqVO);
  55 + memberSignInConfigMapper.updateIfPresent(updateObj);
55 } 56 }
56 57
57 @Override 58 @Override
@@ -68,18 +69,18 @@ public class MemberSignInConfigServiceImpl implements MemberSignInConfigService @@ -68,18 +69,18 @@ public class MemberSignInConfigServiceImpl implements MemberSignInConfigService
68 } 69 }
69 } 70 }
70 71
71 - // TODO @xiaqing:这个唯一判断,也可以参考下别的模块哈;  
72 //根据签到天数判断是否存在一个相同的天数 72 //根据签到天数判断是否存在一个相同的天数
73 private void validateSignInConfigExistsDay(Integer day) { 73 private void validateSignInConfigExistsDay(Integer day) {
74 - if (memberSignInConfigMapper.selectCount(MemberSignInConfigDO::getDay,day)>0) { 74 + MemberSignInConfigDO configDO = memberSignInConfigMapper.selectByDay(day);
  75 + if (configDO != null) {
75 throw exception(SIGN_IN_CONFIG_EXISTS); 76 throw exception(SIGN_IN_CONFIG_EXISTS);
76 } 77 }
77 } 78 }
78 79
79 - // TODO @xiaqing:参考下别的模块,判断唯一,排除自己怎么写的哈;  
80 // 更新天数时判断是否有重复的天数,需要去除自己 80 // 更新天数时判断是否有重复的天数,需要去除自己
81 private void validateSignInConfigSameDayNotSelf(MemberSignInConfigUpdateReqVO reqVO) { 81 private void validateSignInConfigSameDayNotSelf(MemberSignInConfigUpdateReqVO reqVO) {
82 - if (memberSignInConfigMapper.selectSameDayNotSelf(reqVO)>0) { 82 + MemberSignInConfigDO configDO = memberSignInConfigMapper.selectByDay(reqVO.getDay());
  83 + if (configDO != null && configDO.getId() != reqVO.getId()) {
83 throw exception(SIGN_IN_CONFIG_EXISTS); 84 throw exception(SIGN_IN_CONFIG_EXISTS);
84 } 85 }
85 } 86 }
@@ -90,8 +91,8 @@ public class MemberSignInConfigServiceImpl implements MemberSignInConfigService @@ -90,8 +91,8 @@ public class MemberSignInConfigServiceImpl implements MemberSignInConfigService
90 } 91 }
91 92
92 @Override 93 @Override
93 - public PageResult<MemberSignInConfigDO> getSignInConfigPage(MemberSignInConfigPageReqVO pageReqVO) {  
94 - return memberSignInConfigMapper.selectPage(pageReqVO); 94 + public List <MemberSignInConfigDO> getSignInConfigList() {
  95 + return memberSignInConfigMapper.getList();
95 } 96 }
96 97
97 } 98 }
yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/signin/MemberSignInRecordService.java
@@ -11,20 +11,7 @@ import cn.iocoder.yudao.module.member.dal.dataobject.signin.MemberSignInRecordDO @@ -11,20 +11,7 @@ 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 - *  
17 - * @param id 编号  
18 - */  
19 - void deleteSignInRecord(Long id);  
20 14
21 - /**  
22 - * 获得用户签到积分  
23 - *  
24 - * @param id 编号  
25 - * @return 用户签到积分  
26 - */  
27 - MemberSignInRecordDO getSignInRecord(Long id);  
28 15
29 /** 16 /**
30 * 获得用户签到积分分页 17 * 获得用户签到积分分页
@@ -34,4 +21,5 @@ public interface MemberSignInRecordService { @@ -34,4 +21,5 @@ public interface MemberSignInRecordService {
34 */ 21 */
35 PageResult<MemberSignInRecordDO> getSignInRecordPage(MemberSignInRecordPageReqVO pageReqVO); 22 PageResult<MemberSignInRecordDO> getSignInRecordPage(MemberSignInRecordPageReqVO pageReqVO);
36 23
  24 +
37 } 25 }
yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/signin/MemberSignInRecordServiceImpl.java
@@ -4,6 +4,7 @@ import cn.iocoder.yudao.framework.common.pojo.PageResult; @@ -4,6 +4,7 @@ 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.MemberSignInRecordPageReqVO;
5 import cn.iocoder.yudao.module.member.dal.dataobject.signin.MemberSignInRecordDO; 5 import cn.iocoder.yudao.module.member.dal.dataobject.signin.MemberSignInRecordDO;
6 import cn.iocoder.yudao.module.member.dal.mysql.signin.MemberSignInRecordMapper; 6 import cn.iocoder.yudao.module.member.dal.mysql.signin.MemberSignInRecordMapper;
  7 +import cn.iocoder.yudao.module.system.api.user.AdminUserApi;
7 import org.springframework.stereotype.Service; 8 import org.springframework.stereotype.Service;
8 import org.springframework.validation.annotation.Validated; 9 import org.springframework.validation.annotation.Validated;
9 10
@@ -23,25 +24,10 @@ public class MemberSignInRecordServiceImpl implements MemberSignInRecordService @@ -23,25 +24,10 @@ public class MemberSignInRecordServiceImpl implements MemberSignInRecordService
23 24
24 @Resource 25 @Resource
25 private MemberSignInRecordMapper memberSignInRecordMapper; 26 private MemberSignInRecordMapper memberSignInRecordMapper;
  27 + @Resource
  28 + AdminUserApi adminUserApi;
26 29
27 - @Override  
28 - public void deleteSignInRecord(Long id) {  
29 - // 校验存在  
30 - validateSignInRecordExists(id);  
31 - // 删除  
32 - memberSignInRecordMapper.deleteById(id);  
33 - }  
34 30
35 - private void validateSignInRecordExists(Long id) {  
36 - if (memberSignInRecordMapper.selectById(id) == null) {  
37 - throw exception(SIGN_IN_RECORD_NOT_EXISTS);  
38 - }  
39 - }  
40 -  
41 - @Override  
42 - public MemberSignInRecordDO getSignInRecord(Long id) {  
43 - return memberSignInRecordMapper.selectById(id);  
44 - }  
45 31
46 @Override 32 @Override
47 public PageResult<MemberSignInRecordDO> getSignInRecordPage(MemberSignInRecordPageReqVO pageReqVO) { 33 public PageResult<MemberSignInRecordDO> getSignInRecordPage(MemberSignInRecordPageReqVO pageReqVO) {
yudao-server/src/main/resources/application-local.yaml
@@ -44,31 +44,31 @@ spring: @@ -44,31 +44,31 @@ spring:
44 primary: master 44 primary: master
45 datasource: 45 datasource:
46 master: 46 master:
47 - name: ruoyi-vue-pro  
48 - url: jdbc:mysql://127.0.0.1:3306/${spring.datasource.dynamic.datasource.master.name}?useSSL=false&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true&nullCatalogMeansCurrent=true # MySQL Connector/J 8.X 连接的示例 47 + name: mall
  48 + url: jdbc:mysql://10.211.55.5:3308/${spring.datasource.dynamic.datasource.master.name}?useSSL=false&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true&nullCatalogMeansCurrent=true # MySQL Connector/J 8.X 连接的示例
49 # url: jdbc:mysql://127.0.0.1:3306/${spring.datasource.dynamic.datasource.master.name}?useSSL=false&allowPublicKeyRetrieval=true&useUnicode=true&characterEncoding=UTF-8&serverTimezone=CTT # MySQL Connector/J 5.X 连接的示例 49 # url: jdbc:mysql://127.0.0.1:3306/${spring.datasource.dynamic.datasource.master.name}?useSSL=false&allowPublicKeyRetrieval=true&useUnicode=true&characterEncoding=UTF-8&serverTimezone=CTT # MySQL Connector/J 5.X 连接的示例
50 # url: jdbc:postgresql://127.0.0.1:5432/${spring.datasource.dynamic.datasource.master.name} # PostgreSQL 连接的示例 50 # url: jdbc:postgresql://127.0.0.1:5432/${spring.datasource.dynamic.datasource.master.name} # PostgreSQL 连接的示例
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: 123456 54 + password: 1qaz!QAZ
55 # username: sa 55 # username: sa
56 # password: JSm:g(*%lU4ZAkz06cd52KqT3)i1?H7W 56 # password: JSm:g(*%lU4ZAkz06cd52KqT3)i1?H7W
57 slave: # 模拟从库,可根据自己需要修改 57 slave: # 模拟从库,可根据自己需要修改
58 - name: ruoyi-vue-pro  
59 - url: jdbc:mysql://127.0.0.1:3306/${spring.datasource.dynamic.datasource.slave.name}?useSSL=false&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true&nullCatalogMeansCurrent=true # MySQL Connector/J 8.X 连接的示例 58 + name: mall
  59 + url: jdbc:mysql://10.211.55.5:3308/${spring.datasource.dynamic.datasource.slave.name}?useSSL=false&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true&nullCatalogMeansCurrent=true # MySQL Connector/J 8.X 连接的示例
60 # url: jdbc:mysql://127.0.0.1:3306/${spring.datasource.dynamic.datasource.slave.name}?useSSL=false&allowPublicKeyRetrieval=true&useUnicode=true&characterEncoding=UTF-8&serverTimezone=CTT # MySQL Connector/J 5.X 连接的示例 60 # url: jdbc:mysql://127.0.0.1:3306/${spring.datasource.dynamic.datasource.slave.name}?useSSL=false&allowPublicKeyRetrieval=true&useUnicode=true&characterEncoding=UTF-8&serverTimezone=CTT # MySQL Connector/J 5.X 连接的示例
61 # url: jdbc:postgresql://127.0.0.1:5432/${spring.datasource.dynamic.datasource.slave.name} # PostgreSQL 连接的示例 61 # url: jdbc:postgresql://127.0.0.1:5432/${spring.datasource.dynamic.datasource.slave.name} # PostgreSQL 连接的示例
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: 123456 65 + password: 1qaz!QAZ
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: 127.0.0.1 # 地址 71 + host: 10.211.55.5 # 地址
72 port: 6379 # 端口 72 port: 6379 # 端口
73 database: 0 # 数据库索引 73 database: 0 # 数据库索引
74 # password: dev # 密码,建议生产环境开启 74 # password: dev # 密码,建议生产环境开启