Commit 417707175817e01bfe925bc482f3af2894c8dc65

Authored by 芋道源码
Committed by Gitee
2 parents 5fcd0a21 93effe8f

!560 todo修改

Merge pull request !560 from QingX/feature/mall_product
Showing 34 changed files with 431 additions and 284 deletions
sql/mysql/member_poinit_20230809积分四张表结构调整.sql 0 → 100644
  1 +/*
  2 + Navicat Premium Data Transfer
  3 +
  4 + Source Server : docer-master-root(3308)
  5 + Source Server Type : MySQL
  6 + Source Server Version : 80030
  7 + Source Host : 10.211.55.5:3308
  8 + Source Schema : mall
  9 +
  10 + Target Server Type : MySQL
  11 + Target Server Version : 80030
  12 + File Encoding : 65001
  13 +
  14 + Date: 09/08/2023 22:41:36
  15 +*/
  16 +
  17 +SET NAMES utf8mb4;
  18 +SET FOREIGN_KEY_CHECKS = 0;
  19 +
  20 +-- ----------------------------
  21 +-- Table structure for member_point_config
  22 +-- ----------------------------
  23 +DROP TABLE IF EXISTS `member_point_config`;
  24 +CREATE TABLE `member_point_config` (
  25 + `id` bigint NOT NULL AUTO_INCREMENT COMMENT '自增主键',
  26 + `trade_deduct_enable` bit(1) DEFAULT NULL COMMENT '1 开启积分抵扣\n0 关闭积分抵扣',
  27 + `trade_deduct_unit_price` int DEFAULT NULL COMMENT '积分抵扣(单位:分)',
  28 + `trade_deduct_max_price` int DEFAULT NULL COMMENT '积分抵扣最大值',
  29 + `trade_give_point` int DEFAULT NULL COMMENT '1元赠送多少分',
  30 + `creator` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMMENT '创建人',
  31 + `create_time` datetime DEFAULT NULL COMMENT '创建时间',
  32 + `updater` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMMENT '更新人',
  33 + `update_time` datetime DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP COMMENT '变更时间',
  34 + `tenant_id` varchar(255) DEFAULT NULL COMMENT '租户id',
  35 + `deleted` bit(1) DEFAULT b'0' COMMENT '是否被删除 0 未删除 1已删除',
  36 + PRIMARY KEY (`id`)
  37 +) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='会员积分配置表';
  38 +
  39 +-- ----------------------------
  40 +-- Records of member_point_config
  41 +-- ----------------------------
  42 +BEGIN;
  43 +INSERT INTO `member_point_config` (`id`, `trade_deduct_enable`, `trade_deduct_unit_price`, `trade_deduct_max_price`, `trade_give_point`, `creator`, `create_time`, `updater`, `update_time`, `tenant_id`, `deleted`) VALUES (5, b'1', 12504, 1234, 1234, '1', '2023-08-09 22:27:42', '1', '2023-08-09 22:32:55', '1', b'0');
  44 +COMMIT;
  45 +
  46 +-- ----------------------------
  47 +-- Table structure for member_point_record
  48 +-- ----------------------------
  49 +DROP TABLE IF EXISTS `member_point_record`;
  50 +CREATE TABLE `member_point_record` (
  51 + `id` bigint NOT NULL AUTO_INCREMENT COMMENT '自增主键',
  52 + `biz_id` varchar(255) DEFAULT NULL COMMENT '业务编码',
  53 + `biz_type` varchar(255) DEFAULT NULL COMMENT '业务类型',
  54 + `title` varchar(255) DEFAULT NULL COMMENT '积分标题',
  55 + `description` varchar(5000) DEFAULT NULL COMMENT '积分描述',
  56 + `point` int DEFAULT NULL COMMENT '积分',
  57 + `total_point` int NOT NULL COMMENT '变动后的积分',
  58 + `status` int DEFAULT NULL COMMENT '状态:1-订单创建,2-冻结期,3-完成,4-失效(订单退款)\n',
  59 + `user_id` bigint DEFAULT NULL COMMENT '用户id',
  60 + `freezing_time` datetime DEFAULT NULL COMMENT '冻结时间',
  61 + `thawing_time` datetime DEFAULT NULL COMMENT '解冻时间',
  62 + `create_time` datetime DEFAULT NULL COMMENT '发生时间',
  63 + `tenant_id` varchar(255) DEFAULT NULL COMMENT '租户',
  64 + `deleted` int DEFAULT '0' COMMENT '是否删除',
  65 + `creator` varchar(255) DEFAULT NULL COMMENT '创建用户',
  66 + `updater` varchar(255) DEFAULT NULL COMMENT '更新用户',
  67 + `update_time` datetime DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
  68 + PRIMARY KEY (`id`),
  69 + KEY `index_userId` (`user_id`),
  70 + KEY `index_title` (`title`) USING BTREE
  71 +) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='用户积分记录';
  72 +
  73 +-- ----------------------------
  74 +-- Records of member_point_record
  75 +-- ----------------------------
  76 +BEGIN;
  77 +INSERT INTO `member_point_record` (`id`, `biz_id`, `biz_type`, `title`, `description`, `point`, `total_point`, `status`, `user_id`, `freezing_time`, `thawing_time`, `create_time`, `tenant_id`, `deleted`, `creator`, `updater`, `update_time`) VALUES (1, '1', '1', '12', NULL, 212, 12, 1, 247, '2023-06-13 00:00:00', '2023-06-20 00:00:00', '2023-06-10 12:38:48', '1', 1, '1', '1', '2023-08-09 12:30:36');
  78 +INSERT INTO `member_point_record` (`id`, `biz_id`, `biz_type`, `title`, `description`, `point`, `total_point`, `status`, `user_id`, `freezing_time`, `thawing_time`, `create_time`, `tenant_id`, `deleted`, `creator`, `updater`, `update_time`) VALUES (2, '12', '1', '这是一个测试', '我是描述', 1212, 12, 2, 247, '2023-06-28 00:00:00', NULL, '2023-06-10 12:42:48', '1', 0, '1', '1', '2023-08-09 12:31:45');
  79 +INSERT INTO `member_point_record` (`id`, `biz_id`, `biz_type`, `title`, `description`, `point`, `total_point`, `status`, `user_id`, `freezing_time`, `thawing_time`, `create_time`, `tenant_id`, `deleted`, `creator`, `updater`, `update_time`) VALUES (3, '12', '1', '12', '我是一个描述', 12, 12, 1, 248, '2023-06-27 00:00:00', '2023-06-23 00:00:00', '2023-06-10 20:06:48', '1', 0, '1', '1', '2023-08-09 12:31:41');
  80 +INSERT INTO `member_point_record` (`id`, `biz_id`, `biz_type`, `title`, `description`, `point`, `total_point`, `status`, `user_id`, `freezing_time`, `thawing_time`, `create_time`, `tenant_id`, `deleted`, `creator`, `updater`, `update_time`) VALUES (4, '12', '1', '描述2', '我是一个描述', -12, 12, 1, 248, '2023-08-09 11:21:00', '2023-09-13 00:00:00', '2023-06-10 20:06:48', '1', 0, '1', '1', '2023-08-09 12:57:28');
  81 +COMMIT;
  82 +
  83 +-- ----------------------------
  84 +-- Table structure for member_sign_in_config
  85 +-- ----------------------------
  86 +DROP TABLE IF EXISTS `member_sign_in_config`;
  87 +CREATE TABLE `member_sign_in_config` (
  88 + `id` int NOT NULL AUTO_INCREMENT COMMENT '规则自增主键',
  89 + `day` int DEFAULT NULL COMMENT '签到第x天',
  90 + `point` int DEFAULT NULL COMMENT '签到天数对应分数',
  91 + `create_time` datetime DEFAULT NULL COMMENT '创建时间',
  92 + `update_time` datetime DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP COMMENT '变更时间',
  93 + `tenant_id` varchar(255) DEFAULT NULL COMMENT '租户id',
  94 + `is_enable` tinyint(1) DEFAULT NULL COMMENT '是否启用 1启用,0未启动',
  95 + `deleted` int DEFAULT '0' COMMENT '是否删除',
  96 + `creator` varchar(255) DEFAULT NULL COMMENT '创建人',
  97 + `updater` varchar(255) DEFAULT NULL COMMENT '变更人',
  98 + PRIMARY KEY (`id`)
  99 +) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='积分签到规则';
  100 +
  101 +-- ----------------------------
  102 +-- Records of member_sign_in_config
  103 +-- ----------------------------
  104 +BEGIN;
  105 +INSERT INTO `member_sign_in_config` (`id`, `day`, `point`, `create_time`, `update_time`, `tenant_id`, `is_enable`, `deleted`, `creator`, `updater`) VALUES (1, 4, 10, '2023-06-10 11:34:43', '2023-08-08 15:10:03', '1', 1, 0, '1', '1');
  106 +INSERT INTO `member_sign_in_config` (`id`, `day`, `point`, `create_time`, `update_time`, `tenant_id`, `is_enable`, `deleted`, `creator`, `updater`) VALUES (2, 2, 20, '2023-06-10 11:34:59', '2023-08-08 13:39:54', '1', 1, 1, '1', '1');
  107 +INSERT INTO `member_sign_in_config` (`id`, `day`, `point`, `create_time`, `update_time`, `tenant_id`, `is_enable`, `deleted`, `creator`, `updater`) VALUES (3, 7, 1001, '2023-06-10 17:47:45', '2023-08-08 15:09:55', '1', 0, 0, '1', '1');
  108 +INSERT INTO `member_sign_in_config` (`id`, `day`, `point`, `create_time`, `update_time`, `tenant_id`, `is_enable`, `deleted`, `creator`, `updater`) VALUES (4, 6, 12121, '2023-06-10 17:47:55', '2023-08-08 15:09:47', '1', 0, 0, '1', '1');
  109 +INSERT INTO `member_sign_in_config` (`id`, `day`, `point`, `create_time`, `update_time`, `tenant_id`, `is_enable`, `deleted`, `creator`, `updater`) VALUES (5, 2, 12, '2023-06-10 19:54:52', '2023-08-08 15:10:03', '1', 1, 0, '1', '1');
  110 +COMMIT;
  111 +
  112 +-- ----------------------------
  113 +-- Table structure for member_sign_in_record
  114 +-- ----------------------------
  115 +DROP TABLE IF EXISTS `member_sign_in_record`;
  116 +CREATE TABLE `member_sign_in_record` (
  117 + `id` bigint NOT NULL AUTO_INCREMENT COMMENT '签到自增id',
  118 + `user_id` bigint DEFAULT NULL COMMENT '签到用户',
  119 + `day` int DEFAULT NULL COMMENT '第几天签到',
  120 + `point` int DEFAULT NULL COMMENT '签到的分数',
  121 + `create_time` datetime DEFAULT NULL COMMENT '签到时间',
  122 + `update_time` datetime DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP COMMENT '变更时间',
  123 + `tenant_id` varchar(255) DEFAULT NULL COMMENT '租户id',
  124 + `deleted` int DEFAULT '0' COMMENT '是否删除',
  125 + `creator` varchar(255) DEFAULT NULL COMMENT '创建人',
  126 + `updater` varchar(255) DEFAULT NULL COMMENT '更新人',
  127 + PRIMARY KEY (`id`)
  128 +) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='用户签到积分';
  129 +
  130 +-- ----------------------------
  131 +-- Records of member_sign_in_record
  132 +-- ----------------------------
  133 +BEGIN;
  134 +INSERT INTO `member_sign_in_record` (`id`, `user_id`, `day`, `point`, `create_time`, `update_time`, `tenant_id`, `deleted`, `creator`, `updater`) VALUES (1, 247, 1, 123, '2023-06-10 12:58:18', '2023-08-09 08:51:31', '1', 1, '1', '1');
  135 +INSERT INTO `member_sign_in_record` (`id`, `user_id`, `day`, `point`, `create_time`, `update_time`, `tenant_id`, `deleted`, `creator`, `updater`) VALUES (2, 247, 12, 12, '2023-06-10 19:56:39', '2023-08-09 08:51:32', '1', 1, '1', '1');
  136 +INSERT INTO `member_sign_in_record` (`id`, `user_id`, `day`, `point`, `create_time`, `update_time`, `tenant_id`, `deleted`, `creator`, `updater`) VALUES (3, 1, 12, 1212, '2023-06-10 20:01:17', '2023-08-09 08:05:07', '1', 1, '1', '1');
  137 +INSERT INTO `member_sign_in_record` (`id`, `user_id`, `day`, `point`, `create_time`, `update_time`, `tenant_id`, `deleted`, `creator`, `updater`) VALUES (4, 247, 12, 1212, '2023-06-10 20:01:27', '2023-08-09 08:51:34', '1', 0, '1', '1');
  138 +COMMIT;
  139 +
  140 +SET FOREIGN_KEY_CHECKS = 1;
yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/point/MemberPointRecordController.java
@@ -2,22 +2,28 @@ package cn.iocoder.yudao.module.member.controller.admin.point; @@ -2,22 +2,28 @@ package cn.iocoder.yudao.module.member.controller.admin.point;
2 2
3 import cn.iocoder.yudao.framework.common.pojo.CommonResult; 3 import cn.iocoder.yudao.framework.common.pojo.CommonResult;
4 import cn.iocoder.yudao.framework.common.pojo.PageResult; 4 import cn.iocoder.yudao.framework.common.pojo.PageResult;
  5 +import cn.iocoder.yudao.module.member.api.user.MemberUserApi;
  6 +import cn.iocoder.yudao.module.member.api.user.dto.MemberUserRespDTO;
5 import cn.iocoder.yudao.module.member.controller.admin.point.vo.recrod.MemberPointRecordPageReqVO; 7 import cn.iocoder.yudao.module.member.controller.admin.point.vo.recrod.MemberPointRecordPageReqVO;
6 import cn.iocoder.yudao.module.member.controller.admin.point.vo.recrod.MemberPointRecordRespVO; 8 import cn.iocoder.yudao.module.member.controller.admin.point.vo.recrod.MemberPointRecordRespVO;
7 -import cn.iocoder.yudao.module.member.controller.admin.point.vo.recrod.MemberPointRecordUpdateReqVO;  
8 import cn.iocoder.yudao.module.member.convert.point.MemberPointRecordConvert; 9 import cn.iocoder.yudao.module.member.convert.point.MemberPointRecordConvert;
9 import cn.iocoder.yudao.module.member.dal.dataobject.point.MemberPointRecordDO; 10 import cn.iocoder.yudao.module.member.dal.dataobject.point.MemberPointRecordDO;
  11 +import cn.iocoder.yudao.module.member.dal.dataobject.signin.MemberSignInRecordDO;
10 import cn.iocoder.yudao.module.member.service.point.MemberPointRecordService; 12 import cn.iocoder.yudao.module.member.service.point.MemberPointRecordService;
11 import io.swagger.v3.oas.annotations.Operation; 13 import io.swagger.v3.oas.annotations.Operation;
12 -import io.swagger.v3.oas.annotations.Parameter;  
13 import io.swagger.v3.oas.annotations.tags.Tag; 14 import io.swagger.v3.oas.annotations.tags.Tag;
  15 +import org.apache.commons.lang3.StringUtils;
14 import org.springframework.security.access.prepost.PreAuthorize; 16 import org.springframework.security.access.prepost.PreAuthorize;
  17 +import org.springframework.util.CollectionUtils;
15 import org.springframework.validation.annotation.Validated; 18 import org.springframework.validation.annotation.Validated;
16 import org.springframework.web.bind.annotation.*; 19 import org.springframework.web.bind.annotation.*;
17 20
18 import javax.annotation.Resource; 21 import javax.annotation.Resource;
19 import javax.validation.Valid; 22 import javax.validation.Valid;
20 23
  24 +import java.util.List;
  25 +import java.util.stream.Collectors;
  26 +
21 import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success; 27 import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
22 28
23 @Tag(name = "管理后台 - 用户积分记录") 29 @Tag(name = "管理后台 - 用户积分记录")
@@ -28,31 +34,34 @@ public class MemberPointRecordController { @@ -28,31 +34,34 @@ public class MemberPointRecordController {
28 34
29 @Resource 35 @Resource
30 private MemberPointRecordService recordService; 36 private MemberPointRecordService recordService;
31 -  
32 - // TODO @xiaqing:积分应该没有更新操作呀?可以删除哈;  
33 - @PutMapping("/update")  
34 - @Operation(summary = "更新用户积分记录")  
35 - @PreAuthorize("@ss.hasPermission('point:record:update')")  
36 - public CommonResult<Boolean> updateRecord(@Valid @RequestBody MemberPointRecordUpdateReqVO updateReqVO) {  
37 - recordService.updateRecord(updateReqVO);  
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:record:query')")  
45 - public CommonResult<MemberPointRecordRespVO> getRecord(@RequestParam("id") Long id) {  
46 - MemberPointRecordDO record = recordService.getRecord(id);  
47 - return success(MemberPointRecordConvert.INSTANCE.convert(record));  
48 - } 37 + @Resource
  38 + MemberUserApi memberUserApi;
49 39
50 @GetMapping("/page") 40 @GetMapping("/page")
51 @Operation(summary = "获得用户积分记录分页") 41 @Operation(summary = "获得用户积分记录分页")
52 @PreAuthorize("@ss.hasPermission('point:record:query')") 42 @PreAuthorize("@ss.hasPermission('point:record:query')")
53 - public CommonResult<PageResult<MemberPointRecordRespVO>> getRecordPage(@Valid MemberPointRecordPageReqVO pageVO) {  
54 - PageResult<MemberPointRecordDO> pageResult = recordService.getRecordPage(pageVO);  
55 - return success(MemberPointRecordConvert.INSTANCE.convertPage(pageResult)); 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);
  54 + }
  55 +
  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));
56 } 65 }
57 66
58 } 67 }
yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/point/vo/config/MemberPointConfigBaseVO.java
@@ -18,12 +18,12 @@ public class MemberPointConfigBaseVO { @@ -18,12 +18,12 @@ public class MemberPointConfigBaseVO {
18 private Boolean tradeDeductEnable; 18 private Boolean tradeDeductEnable;
19 19
20 @Schema(description = "积分抵扣,单位:分", example = "13506") 20 @Schema(description = "积分抵扣,单位:分", example = "13506")
21 - private BigDecimal tradeDeductUnitPrice; 21 + private Integer tradeDeductUnitPrice;
22 22
23 @Schema(description = "积分抵扣最大值", example = "32428") 23 @Schema(description = "积分抵扣最大值", example = "32428")
24 - private Long tradeDeductMaxPrice; 24 + private Integer tradeDeductMaxPrice;
25 25
26 @Schema(description = "1 元赠送多少分") 26 @Schema(description = "1 元赠送多少分")
27 - private Long tradeGivePoint; 27 + private Integer tradeGivePoint;
28 28
29 } 29 }
yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/point/vo/recrod/MemberPointRecordBaseVO.java
@@ -24,10 +24,6 @@ public class MemberPointRecordBaseVO { @@ -24,10 +24,6 @@ public class MemberPointRecordBaseVO {
24 @NotNull(message = "业务类型不能为空") 24 @NotNull(message = "业务类型不能为空")
25 private String bizType; 25 private String bizType;
26 26
27 - @Schema(description = "1增加 0扣减", example = "1")  
28 - @NotNull(message = "操作类型不能为空")  
29 - private String type;  
30 -  
31 @Schema(description = "积分标题") 27 @Schema(description = "积分标题")
32 @NotNull(message = "积分标题不能为空") 28 @NotNull(message = "积分标题不能为空")
33 private String title; 29 private String title;
@@ -47,10 +43,6 @@ public class MemberPointRecordBaseVO { @@ -47,10 +43,6 @@ public class MemberPointRecordBaseVO {
47 @NotNull(message = "积分状态不能为空") 43 @NotNull(message = "积分状态不能为空")
48 private Integer status; 44 private Integer status;
49 45
50 - @Schema(description = "用户id", example = "31169")  
51 - @NotNull(message = "用户ID不能为空")  
52 - private Integer userId;  
53 -  
54 @Schema(description = "冻结时间") 46 @Schema(description = "冻结时间")
55 @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) 47 @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
56 @NotNull(message = "冻结时间不能为空") 48 @NotNull(message = "冻结时间不能为空")
yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/point/vo/recrod/MemberPointRecordCreateReqVO.java deleted
1 -package cn.iocoder.yudao.module.member.controller.admin.point.vo.recrod;  
2 -  
3 -import lombok.*;  
4 -import io.swagger.v3.oas.annotations.media.Schema;  
5 -  
6 -@Schema(description = "管理后台 - 用户积分记录创建 Request VO")  
7 -@Data  
8 -@EqualsAndHashCode(callSuper = true)  
9 -@ToString(callSuper = true)  
10 -public class MemberPointRecordCreateReqVO extends MemberPointRecordBaseVO {  
11 -  
12 -}  
yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/point/vo/recrod/MemberPointRecordExportReqVO.java deleted
1 -package cn.iocoder.yudao.module.member.controller.admin.point.vo.recrod;  
2 -  
3 -import lombok.*;  
4 -import io.swagger.v3.oas.annotations.media.Schema;  
5 -  
6 -@Schema(description = "管理后台 - 用户积分记录 Excel 导出 Request VO,参数和 PointRecordPageReqVO 是一致的")  
7 -@Data  
8 -public class MemberPointRecordExportReqVO {  
9 -  
10 - @Schema(description = "业务编码", example = "22706")  
11 - private String bizId;  
12 -  
13 - @Schema(description = "业务类型", example = "1")  
14 - private String bizType;  
15 -  
16 - @Schema(description = "1增加 0扣减", example = "1")  
17 - private String type;  
18 -  
19 - @Schema(description = "积分标题")  
20 - private String title;  
21 -  
22 - @Schema(description = "状态:1-订单创建,2-冻结期,3-完成,4-失效(订单退款) ", example = "1")  
23 - private Integer status;  
24 -  
25 -}  
yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/point/vo/recrod/MemberPointRecordPageReqVO.java
@@ -4,25 +4,28 @@ import lombok.*; @@ -4,25 +4,28 @@ import lombok.*;
4 import io.swagger.v3.oas.annotations.media.Schema; 4 import io.swagger.v3.oas.annotations.media.Schema;
5 import cn.iocoder.yudao.framework.common.pojo.PageParam; 5 import cn.iocoder.yudao.framework.common.pojo.PageParam;
6 6
  7 +import java.util.List;
  8 +
7 @Schema(description = "管理后台 - 用户积分记录分页 Request VO") 9 @Schema(description = "管理后台 - 用户积分记录分页 Request VO")
8 @Data 10 @Data
9 @EqualsAndHashCode(callSuper = true) 11 @EqualsAndHashCode(callSuper = true)
10 @ToString(callSuper = true) 12 @ToString(callSuper = true)
11 public class MemberPointRecordPageReqVO extends PageParam { 13 public class MemberPointRecordPageReqVO extends PageParam {
12 14
13 - @Schema(description = "业务编码", example = "22706")  
14 - private String bizId; 15 + @Schema(description = "用户昵称", example = "张三")
  16 + private String nickName;
  17 +
  18 + //用户id集合,用户将nickName查询转换成user_ids查询
  19 + private List<Long> userIds;
15 20
16 @Schema(description = "业务类型", example = "1") 21 @Schema(description = "业务类型", example = "1")
17 private String bizType; 22 private String bizType;
18 23
19 - @Schema(description = "1增加 0扣减", example = "1")  
20 - private String type;  
21 -  
22 @Schema(description = "积分标题") 24 @Schema(description = "积分标题")
23 private String title; 25 private String title;
24 26
25 @Schema(description = "状态:1-订单创建,2-冻结期,3-完成,4-失效(订单退款) ", example = "1") 27 @Schema(description = "状态:1-订单创建,2-冻结期,3-完成,4-失效(订单退款) ", example = "1")
26 private Integer status; 28 private Integer status;
27 29
  30 +
28 } 31 }
yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/point/vo/recrod/MemberPointRecordRespVO.java
@@ -16,4 +16,7 @@ public class MemberPointRecordRespVO extends MemberPointRecordBaseVO { @@ -16,4 +16,7 @@ public class MemberPointRecordRespVO extends MemberPointRecordBaseVO {
16 @Schema(description = "发生时间") 16 @Schema(description = "发生时间")
17 private LocalDateTime createTime; 17 private LocalDateTime createTime;
18 18
  19 + //昵称
  20 + private String nickName;
  21 +
19 } 22 }
yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/point/vo/recrod/MemberPointRecordUpdateReqVO.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 javax.validation.constraints.*;  
7 -  
8 -@Schema(description = "管理后台 - 用户积分记录更新 Request VO")  
9 -@Data  
10 -@EqualsAndHashCode(callSuper = true)  
11 -@ToString(callSuper = true)  
12 -public class MemberPointRecordUpdateReqVO extends MemberPointRecordBaseVO {  
13 -  
14 - @Schema(description = "自增主键", requiredMode = Schema.RequiredMode.REQUIRED, example = "31457")  
15 - @NotNull(message = "自增主键不能为空")  
16 - private Long id;  
17 -  
18 -}  
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
@@ -2,21 +2,30 @@ package cn.iocoder.yudao.module.member.controller.admin.signin; @@ -2,21 +2,30 @@ package cn.iocoder.yudao.module.member.controller.admin.signin;
2 2
3 import cn.iocoder.yudao.framework.common.pojo.CommonResult; 3 import cn.iocoder.yudao.framework.common.pojo.CommonResult;
4 import cn.iocoder.yudao.framework.common.pojo.PageResult; 4 import cn.iocoder.yudao.framework.common.pojo.PageResult;
  5 +import cn.iocoder.yudao.module.member.api.user.MemberUserApi;
  6 +import cn.iocoder.yudao.module.member.api.user.dto.MemberUserRespDTO;
5 import cn.iocoder.yudao.module.member.controller.admin.signin.vo.MemberSignInRecordPageReqVO; 7 import cn.iocoder.yudao.module.member.controller.admin.signin.vo.MemberSignInRecordPageReqVO;
6 import cn.iocoder.yudao.module.member.controller.admin.signin.vo.MemberSignInRecordRespVO; 8 import cn.iocoder.yudao.module.member.controller.admin.signin.vo.MemberSignInRecordRespVO;
7 import cn.iocoder.yudao.module.member.convert.signin.MemberSignInRecordConvert; 9 import cn.iocoder.yudao.module.member.convert.signin.MemberSignInRecordConvert;
8 import cn.iocoder.yudao.module.member.dal.dataobject.signin.MemberSignInRecordDO; 10 import cn.iocoder.yudao.module.member.dal.dataobject.signin.MemberSignInRecordDO;
9 import cn.iocoder.yudao.module.member.service.signin.MemberSignInRecordService; 11 import cn.iocoder.yudao.module.member.service.signin.MemberSignInRecordService;
  12 +import cn.iocoder.yudao.module.system.api.user.AdminUserApi;
  13 +import cn.iocoder.yudao.module.system.api.user.dto.AdminUserRespDTO;
10 import io.swagger.v3.oas.annotations.Operation; 14 import io.swagger.v3.oas.annotations.Operation;
11 import io.swagger.v3.oas.annotations.Parameter; 15 import io.swagger.v3.oas.annotations.Parameter;
12 import io.swagger.v3.oas.annotations.tags.Tag; 16 import io.swagger.v3.oas.annotations.tags.Tag;
  17 +import org.apache.commons.lang3.StringUtils;
13 import org.springframework.security.access.prepost.PreAuthorize; 18 import org.springframework.security.access.prepost.PreAuthorize;
  19 +import org.springframework.util.CollectionUtils;
14 import org.springframework.validation.annotation.Validated; 20 import org.springframework.validation.annotation.Validated;
15 import org.springframework.web.bind.annotation.*; 21 import org.springframework.web.bind.annotation.*;
16 22
17 import javax.annotation.Resource; 23 import javax.annotation.Resource;
18 import javax.validation.Valid; 24 import javax.validation.Valid;
19 25
  26 +import java.util.List;
  27 +import java.util.stream.Collectors;
  28 +
20 import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success; 29 import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
21 30
22 @Tag(name = "管理后台 - 用户签到积分") 31 @Tag(name = "管理后台 - 用户签到积分")
@@ -27,31 +36,33 @@ public class MemberSignInRecordController { @@ -27,31 +36,33 @@ public class MemberSignInRecordController {
27 36
28 @Resource 37 @Resource
29 private MemberSignInRecordService memberSignInRecordService; 38 private MemberSignInRecordService memberSignInRecordService;
  39 + @Resource
  40 + MemberUserApi memberUserApi;
30 41
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 42
50 @GetMapping("/page") 43 @GetMapping("/page")
51 @Operation(summary = "获得用户签到积分分页") 44 @Operation(summary = "获得用户签到积分分页")
52 @PreAuthorize("@ss.hasPermission('point:sign-in-record:query')") 45 @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)); 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);
  65 + }
  66 + return success(MemberSignInRecordConvert.INSTANCE.convertPage(pageResult, users));
56 } 67 }
57 } 68 }
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
@@ -8,6 +8,7 @@ import lombok.ToString; @@ -8,6 +8,7 @@ import lombok.ToString;
8 import org.springframework.format.annotation.DateTimeFormat; 8 import org.springframework.format.annotation.DateTimeFormat;
9 9
10 import java.time.LocalDateTime; 10 import java.time.LocalDateTime;
  11 +import java.util.List;
11 12
12 import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND; 13 import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
13 14
@@ -17,8 +18,11 @@ import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_ @@ -17,8 +18,11 @@ import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_
17 @ToString(callSuper = true) 18 @ToString(callSuper = true)
18 public class MemberSignInRecordPageReqVO extends PageParam { 19 public class MemberSignInRecordPageReqVO extends PageParam {
19 20
  21 + //用户前台模糊查询
20 @Schema(description = "签到用户", example = "6507") 22 @Schema(description = "签到用户", example = "6507")
21 - private Integer userId; 23 + private String nickName;
  24 +
  25 + private List<Long>userIds;
22 26
23 @Schema(description = "第几天签到") 27 @Schema(description = "第几天签到")
24 private Integer day; 28 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/point/MemberPointConfigConvert.java
@@ -2,9 +2,7 @@ package cn.iocoder.yudao.module.member.convert.point; @@ -2,9 +2,7 @@ package cn.iocoder.yudao.module.member.convert.point;
2 2
3 import cn.iocoder.yudao.module.member.controller.admin.point.vo.config.MemberPointConfigRespVO; 3 import cn.iocoder.yudao.module.member.controller.admin.point.vo.config.MemberPointConfigRespVO;
4 import cn.iocoder.yudao.module.member.controller.admin.point.vo.config.MemberPointConfigSaveReqVO; 4 import cn.iocoder.yudao.module.member.controller.admin.point.vo.config.MemberPointConfigSaveReqVO;
5 -import cn.iocoder.yudao.module.member.controller.admin.point.vo.recrod.MemberPointRecordUpdateReqVO;  
6 import cn.iocoder.yudao.module.member.dal.dataobject.point.MemberPointConfigDO; 5 import cn.iocoder.yudao.module.member.dal.dataobject.point.MemberPointConfigDO;
7 -import cn.iocoder.yudao.module.member.dal.dataobject.point.MemberPointRecordDO;  
8 import org.mapstruct.Mapper; 6 import org.mapstruct.Mapper;
9 import org.mapstruct.factory.Mappers; 7 import org.mapstruct.factory.Mappers;
10 8
yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/convert/point/MemberPointRecordConvert.java
1 package cn.iocoder.yudao.module.member.convert.point; 1 package cn.iocoder.yudao.module.member.convert.point;
2 2
3 import cn.iocoder.yudao.framework.common.pojo.PageResult; 3 import cn.iocoder.yudao.framework.common.pojo.PageResult;
4 -import cn.iocoder.yudao.module.member.controller.admin.point.vo.recrod.MemberPointRecordCreateReqVO; 4 +import cn.iocoder.yudao.module.member.api.user.dto.MemberUserRespDTO;
5 import cn.iocoder.yudao.module.member.controller.admin.point.vo.recrod.MemberPointRecordRespVO; 5 import cn.iocoder.yudao.module.member.controller.admin.point.vo.recrod.MemberPointRecordRespVO;
6 -import cn.iocoder.yudao.module.member.controller.admin.point.vo.recrod.MemberPointRecordUpdateReqVO;  
7 import cn.iocoder.yudao.module.member.dal.dataobject.point.MemberPointRecordDO; 6 import cn.iocoder.yudao.module.member.dal.dataobject.point.MemberPointRecordDO;
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.stream.Collectors;
10 15
11 /** 16 /**
12 * 用户积分记录 Convert 17 * 用户积分记录 Convert
@@ -18,12 +23,62 @@ public interface MemberPointRecordConvert { @@ -18,12 +23,62 @@ public interface MemberPointRecordConvert {
18 23
19 MemberPointRecordConvert INSTANCE = Mappers.getMapper(MemberPointRecordConvert.class); 24 MemberPointRecordConvert INSTANCE = Mappers.getMapper(MemberPointRecordConvert.class);
20 25
21 - MemberPointRecordDO convert(MemberPointRecordCreateReqVO bean); 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;
  58 + }
  59 +
  60 + default MemberPointRecordRespVO memberPointRecordDOToMemberPointRecordRespVO(MemberPointRecordDO memberPointRecordDO) {
  61 + if (memberPointRecordDO == null) {
  62 + return null;
  63 + }
  64 +
  65 + MemberPointRecordRespVO memberPointRecordRespVO = new MemberPointRecordRespVO();
22 66
23 - MemberPointRecordDO convert(MemberPointRecordUpdateReqVO bean); 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());
24 79
25 - MemberPointRecordRespVO convert(MemberPointRecordDO bean); 80 + return memberPointRecordRespVO;
  81 + }
26 82
27 - PageResult<MemberPointRecordRespVO> convertPage(PageResult<MemberPointRecordDO> page);  
28 83
29 } 84 }
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; 4 +import cn.iocoder.yudao.module.member.api.user.dto.MemberUserRespDTO;
5 import cn.iocoder.yudao.module.member.controller.admin.signin.vo.MemberSignInRecordRespVO; 5 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; 6 import cn.iocoder.yudao.module.member.dal.dataobject.signin.MemberSignInRecordDO;
  7 +import cn.iocoder.yudao.module.system.api.user.dto.AdminUserRespDTO;
8 import org.mapstruct.Mapper; 8 import org.mapstruct.Mapper;
9 import org.mapstruct.factory.Mappers; 9 import org.mapstruct.factory.Mappers;
  10 +import org.springframework.util.CollectionUtils;
  11 +
  12 +import java.util.ArrayList;
  13 +import java.util.List;
  14 +import java.util.Map;
  15 +import java.util.function.Function;
  16 +import java.util.stream.Collectors;
10 17
11 /** 18 /**
12 * 用户签到积分 Convert 19 * 用户签到积分 Convert
@@ -18,12 +25,57 @@ public interface MemberSignInRecordConvert { @@ -18,12 +25,57 @@ public interface MemberSignInRecordConvert {
18 25
19 MemberSignInRecordConvert INSTANCE = Mappers.getMapper(MemberSignInRecordConvert.class); 26 MemberSignInRecordConvert INSTANCE = Mappers.getMapper(MemberSignInRecordConvert.class);
20 27
21 - MemberSignInRecordDO convert(MemberSignInRecordCreateReqVO bean); 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;
  42 + }
  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 + }
22 56
23 - MemberSignInRecordDO convert(MemberSignInRecordUpdateReqVO bean); 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 + }
24 76
25 - MemberSignInRecordRespVO convert(MemberSignInRecordDO bean); 77 + return list1;
  78 + }
26 79
27 - PageResult<MemberSignInRecordRespVO> convertPage(PageResult<MemberSignInRecordDO> page);  
28 80
29 } 81 }
yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/dal/dataobject/point/MemberPointConfigDO.java
@@ -27,7 +27,7 @@ public class MemberPointConfigDO extends BaseDO { @@ -27,7 +27,7 @@ public class MemberPointConfigDO extends BaseDO {
27 * 自增主键 27 * 自增主键
28 */ 28 */
29 @TableId 29 @TableId
30 - private Integer id; 30 + private Long id;
31 /** 31 /**
32 * 积分抵扣开关 32 * 积分抵扣开关
33 */ 33 */
@@ -37,7 +37,7 @@ public class MemberPointConfigDO extends BaseDO { @@ -37,7 +37,7 @@ public class MemberPointConfigDO extends BaseDO {
37 * 37 *
38 * 1 积分抵扣多少分 38 * 1 积分抵扣多少分
39 */ 39 */
40 - private BigDecimal tradeDeductUnitPrice; 40 + private Integer tradeDeductUnitPrice;
41 /** 41 /**
42 * 积分抵扣最大值 42 * 积分抵扣最大值
43 */ 43 */
yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/dal/dataobject/point/MemberPointRecordDO.java
@@ -39,11 +39,6 @@ public class MemberPointRecordDO extends BaseDO { @@ -39,11 +39,6 @@ public class MemberPointRecordDO extends BaseDO {
39 */ 39 */
40 private String bizType; 40 private String bizType;
41 /** 41 /**
42 - * 1增加 0扣减  
43 - */  
44 - // TODO @xiaqing:要不把 type 合并到 point 里?增加 point 是正数,减少 point 是负数?  
45 - private String type;  
46 - /**  
47 * 积分标题 42 * 积分标题
48 */ 43 */
49 private String title; 44 private String title;
@@ -52,7 +47,7 @@ public class MemberPointRecordDO extends BaseDO { @@ -52,7 +47,7 @@ public class MemberPointRecordDO extends BaseDO {
52 */ 47 */
53 private String description; 48 private String description;
54 /** 49 /**
55 - * 积分 50 + * 积分 正数表示获得积分 负数表示消耗积分
56 */ 51 */
57 private Integer point; 52 private Integer point;
58 /** 53 /**
@@ -62,13 +57,13 @@ public class MemberPointRecordDO extends BaseDO { @@ -62,13 +57,13 @@ public class MemberPointRecordDO extends BaseDO {
62 /** 57 /**
63 * 状态:1-订单创建,2-冻结期,3-完成,4-失效(订单退款) 58 * 状态:1-订单创建,2-冻结期,3-完成,4-失效(订单退款)
64 * 59 *
65 - * 枚举 {@link TODO point_status 对应的类} 60 + * 枚举 {@link point_status 对应的类}
66 */ 61 */
67 private Integer status; 62 private Integer status;
68 /** 63 /**
69 * 用户id 64 * 用户id
70 */ 65 */
71 - private Integer userId; 66 + private Long userId;
72 /** 67 /**
73 * 冻结时间 68 * 冻结时间
74 */ 69 */
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/point/MemberPointRecordMapper.java
@@ -17,7 +17,7 @@ public interface MemberPointRecordMapper extends BaseMapperX&lt;MemberPointRecordDO @@ -17,7 +17,7 @@ public interface MemberPointRecordMapper extends BaseMapperX&lt;MemberPointRecordDO
17 17
18 default PageResult<MemberPointRecordDO> selectPage(MemberPointRecordPageReqVO reqVO) { 18 default PageResult<MemberPointRecordDO> selectPage(MemberPointRecordPageReqVO reqVO) {
19 return selectPage(reqVO, new LambdaQueryWrapperX<MemberPointRecordDO>() 19 return selectPage(reqVO, new LambdaQueryWrapperX<MemberPointRecordDO>()
20 - .eqIfPresent(MemberPointRecordDO::getBizId, reqVO.getBizId()) 20 + .inIfPresent(MemberPointRecordDO::getUserId,reqVO.getUserIds())
21 .eqIfPresent(MemberPointRecordDO::getBizType, reqVO.getBizType()) 21 .eqIfPresent(MemberPointRecordDO::getBizType, reqVO.getBizType())
22 .eqIfPresent(MemberPointRecordDO::getType, reqVO.getType()) 22 .eqIfPresent(MemberPointRecordDO::getType, reqVO.getType())
23 .eqIfPresent(MemberPointRecordDO::getTitle, reqVO.getTitle()) 23 .eqIfPresent(MemberPointRecordDO::getTitle, reqVO.getTitle())
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/dal/mysql/signin/MemberSignInRecordMapper.java
@@ -17,7 +17,7 @@ public interface MemberSignInRecordMapper extends BaseMapperX&lt;MemberSignInRecord @@ -17,7 +17,7 @@ public interface MemberSignInRecordMapper extends BaseMapperX&lt;MemberSignInRecord
17 17
18 default PageResult<MemberSignInRecordDO> selectPage(MemberSignInRecordPageReqVO reqVO) { 18 default PageResult<MemberSignInRecordDO> selectPage(MemberSignInRecordPageReqVO reqVO) {
19 return selectPage(reqVO, new LambdaQueryWrapperX<MemberSignInRecordDO>() 19 return selectPage(reqVO, new LambdaQueryWrapperX<MemberSignInRecordDO>()
20 - .eqIfPresent(MemberSignInRecordDO::getUserId, reqVO.getUserId()) 20 + .inIfPresent(MemberSignInRecordDO::getUserId, reqVO.getUserIds())
21 .eqIfPresent(MemberSignInRecordDO::getDay, reqVO.getDay()) 21 .eqIfPresent(MemberSignInRecordDO::getDay, reqVO.getDay())
22 .betweenIfPresent(MemberSignInRecordDO::getCreateTime, reqVO.getCreateTime()) 22 .betweenIfPresent(MemberSignInRecordDO::getCreateTime, reqVO.getCreateTime())
23 .orderByDesc(MemberSignInRecordDO::getId)); 23 .orderByDesc(MemberSignInRecordDO::getId));
yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/point/MemberPointConfigServiceImpl.java
1 package cn.iocoder.yudao.module.member.service.point; 1 package cn.iocoder.yudao.module.member.service.point;
2 2
  3 +import cn.iocoder.yudao.framework.common.util.collection.CollectionUtils;
  4 +import cn.iocoder.yudao.framework.common.util.object.ObjectUtils;
3 import cn.iocoder.yudao.module.member.controller.admin.point.vo.config.MemberPointConfigSaveReqVO; 5 import cn.iocoder.yudao.module.member.controller.admin.point.vo.config.MemberPointConfigSaveReqVO;
4 import cn.iocoder.yudao.module.member.convert.point.MemberPointConfigConvert; 6 import cn.iocoder.yudao.module.member.convert.point.MemberPointConfigConvert;
5 import cn.iocoder.yudao.module.member.dal.dataobject.point.MemberPointConfigDO; 7 import cn.iocoder.yudao.module.member.dal.dataobject.point.MemberPointConfigDO;
@@ -24,13 +26,15 @@ public class MemberPointConfigServiceImpl implements MemberPointConfigService { @@ -24,13 +26,15 @@ public class MemberPointConfigServiceImpl implements MemberPointConfigService {
24 26
25 @Override 27 @Override
26 public void saveConfig(MemberPointConfigSaveReqVO saveReqVO) { 28 public void saveConfig(MemberPointConfigSaveReqVO saveReqVO) {
27 - // TODO @xiaqing:直接 getConfig() 查询,如果不存在,则插入;存在,则进行更新;  
28 - long total = pointConfigMapper.selectCount(); 29 + //获取当前记录
  30 + MemberPointConfigDO configDO = getConfig();
29 MemberPointConfigDO pointConfigDO = MemberPointConfigConvert.INSTANCE.convert(saveReqVO); 31 MemberPointConfigDO pointConfigDO = MemberPointConfigConvert.INSTANCE.convert(saveReqVO);
30 - //大于0存在记录,则更新,否则插入  
31 - if (total > 0) { 32 + //当前存在记录,则更新,否则插入
  33 + if (configDO != null) {
  34 + pointConfigDO.setId(configDO.getId());
32 pointConfigMapper.updateById(pointConfigDO); 35 pointConfigMapper.updateById(pointConfigDO);
33 } else { 36 } else {
  37 + pointConfigDO.setId(null);
34 pointConfigMapper.insert(pointConfigDO); 38 pointConfigMapper.insert(pointConfigDO);
35 } 39 }
36 } 40 }
@@ -38,8 +42,7 @@ public class MemberPointConfigServiceImpl implements MemberPointConfigService { @@ -38,8 +42,7 @@ public class MemberPointConfigServiceImpl implements MemberPointConfigService {
38 @Override 42 @Override
39 public MemberPointConfigDO getConfig() { 43 public MemberPointConfigDO getConfig() {
40 List <MemberPointConfigDO> list = pointConfigMapper.selectList(); 44 List <MemberPointConfigDO> list = pointConfigMapper.selectList();
41 - // TODO @xiaqing:可以使用 CollUtil.getFirst()  
42 - return list == null ? null : list.get(0); 45 + return CollectionUtils.getFirst(list);
43 } 46 }
44 47
45 } 48 }
yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/point/MemberPointRecordService.java
@@ -2,7 +2,6 @@ package cn.iocoder.yudao.module.member.service.point; @@ -2,7 +2,6 @@ package cn.iocoder.yudao.module.member.service.point;
2 2
3 import cn.iocoder.yudao.framework.common.pojo.PageResult; 3 import cn.iocoder.yudao.framework.common.pojo.PageResult;
4 import cn.iocoder.yudao.module.member.controller.admin.point.vo.recrod.MemberPointRecordPageReqVO; 4 import cn.iocoder.yudao.module.member.controller.admin.point.vo.recrod.MemberPointRecordPageReqVO;
5 -import cn.iocoder.yudao.module.member.controller.admin.point.vo.recrod.MemberPointRecordUpdateReqVO;  
6 import cn.iocoder.yudao.module.member.dal.dataobject.point.MemberPointRecordDO; 5 import cn.iocoder.yudao.module.member.dal.dataobject.point.MemberPointRecordDO;
7 6
8 import javax.validation.Valid; 7 import javax.validation.Valid;
@@ -13,23 +12,6 @@ import javax.validation.Valid; @@ -13,23 +12,6 @@ import javax.validation.Valid;
13 * @author QingX 12 * @author QingX
14 */ 13 */
15 public interface MemberPointRecordService { 14 public interface MemberPointRecordService {
16 - // TODO @xiaqing:方法和方法之间,是空一行哈;  
17 -  
18 - /**  
19 - * 更新用户积分记录  
20 - *  
21 - * @param updateReqVO 更新信息  
22 - */  
23 - void updateRecord(@Valid MemberPointRecordUpdateReqVO updateReqVO);  
24 -  
25 -  
26 - /**  
27 - * 获得用户积分记录  
28 - *  
29 - * @param id 编号  
30 - * @return 用户积分记录  
31 - */  
32 - MemberPointRecordDO getRecord(Long id);  
33 15
34 /** 16 /**
35 * 获得用户积分记录分页 17 * 获得用户积分记录分页
yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/point/MemberPointRecordServiceImpl.java
@@ -2,19 +2,12 @@ package cn.iocoder.yudao.module.member.service.point; @@ -2,19 +2,12 @@ package cn.iocoder.yudao.module.member.service.point;
2 2
3 import cn.iocoder.yudao.framework.common.pojo.PageResult; 3 import cn.iocoder.yudao.framework.common.pojo.PageResult;
4 import cn.iocoder.yudao.module.member.controller.admin.point.vo.recrod.MemberPointRecordPageReqVO; 4 import cn.iocoder.yudao.module.member.controller.admin.point.vo.recrod.MemberPointRecordPageReqVO;
5 -import cn.iocoder.yudao.module.member.controller.admin.point.vo.recrod.MemberPointRecordUpdateReqVO;  
6 -import cn.iocoder.yudao.module.member.convert.point.MemberPointRecordConvert;  
7 import cn.iocoder.yudao.module.member.dal.dataobject.point.MemberPointRecordDO; 5 import cn.iocoder.yudao.module.member.dal.dataobject.point.MemberPointRecordDO;
8 import cn.iocoder.yudao.module.member.dal.mysql.point.MemberPointRecordMapper; 6 import cn.iocoder.yudao.module.member.dal.mysql.point.MemberPointRecordMapper;
9 -import cn.iocoder.yudao.module.member.enums.ErrorCodeConstants;  
10 import org.springframework.stereotype.Service; 7 import org.springframework.stereotype.Service;
11 import org.springframework.validation.annotation.Validated; 8 import org.springframework.validation.annotation.Validated;
12 9
13 import javax.annotation.Resource; 10 import javax.annotation.Resource;
14 -import java.util.Collection;  
15 -import java.util.List;  
16 -  
17 -import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;  
18 11
19 12
20 /** 13 /**
@@ -30,26 +23,6 @@ public class MemberPointRecordServiceImpl implements MemberPointRecordService { @@ -30,26 +23,6 @@ public class MemberPointRecordServiceImpl implements MemberPointRecordService {
30 private MemberPointRecordMapper recordMapper; 23 private MemberPointRecordMapper recordMapper;
31 24
32 @Override 25 @Override
33 - public void updateRecord(MemberPointRecordUpdateReqVO updateReqVO) {  
34 - // 校验存在  
35 - validateRecordExists(updateReqVO.getId());  
36 - // 更新  
37 - MemberPointRecordDO updateObj = MemberPointRecordConvert.INSTANCE.convert(updateReqVO);  
38 - recordMapper.updateById(updateObj);  
39 - }  
40 -  
41 - private void validateRecordExists(Long id) {  
42 - if (recordMapper.selectById(id) == null) {  
43 - throw exception(ErrorCodeConstants.RECORD_NOT_EXISTS);  
44 - }  
45 - }  
46 -  
47 - @Override  
48 - public MemberPointRecordDO getRecord(Long id) {  
49 - return recordMapper.selectById(id);  
50 - }  
51 -  
52 - @Override  
53 public PageResult<MemberPointRecordDO> getRecordPage(MemberPointRecordPageReqVO pageReqVO) { 26 public PageResult<MemberPointRecordDO> getRecordPage(MemberPointRecordPageReqVO pageReqVO) {
54 return recordMapper.selectPage(pageReqVO); 27 return recordMapper.selectPage(pageReqVO);
55 } 28 }
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
@@ -51,24 +51,24 @@ spring: @@ -51,24 +51,24 @@ spring:
51 # url: jdbc:oracle:thin:@127.0.0.1:1521:xe # Oracle 连接的示例 51 # url: jdbc:oracle:thin:@127.0.0.1:1521:xe # Oracle 连接的示例
52 # url: jdbc:sqlserver://127.0.0.1:1433;DatabaseName=${spring.datasource.dynamic.datasource.master.name} # SQLServer 连接的示例 52 # url: jdbc:sqlserver://127.0.0.1:1433;DatabaseName=${spring.datasource.dynamic.datasource.master.name} # SQLServer 连接的示例
53 username: root 53 username: root
54 - password: 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 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 连接的示例 59 + 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 连接的示例
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 # 密码,建议生产环境开启