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 2  
3 3 import cn.iocoder.yudao.framework.common.pojo.CommonResult;
4 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 7 import cn.iocoder.yudao.module.member.controller.admin.point.vo.recrod.MemberPointRecordPageReqVO;
6 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 9 import cn.iocoder.yudao.module.member.convert.point.MemberPointRecordConvert;
9 10 import cn.iocoder.yudao.module.member.dal.dataobject.point.MemberPointRecordDO;
  11 +import cn.iocoder.yudao.module.member.dal.dataobject.signin.MemberSignInRecordDO;
10 12 import cn.iocoder.yudao.module.member.service.point.MemberPointRecordService;
11 13 import io.swagger.v3.oas.annotations.Operation;
12   -import io.swagger.v3.oas.annotations.Parameter;
13 14 import io.swagger.v3.oas.annotations.tags.Tag;
  15 +import org.apache.commons.lang3.StringUtils;
14 16 import org.springframework.security.access.prepost.PreAuthorize;
  17 +import org.springframework.util.CollectionUtils;
15 18 import org.springframework.validation.annotation.Validated;
16 19 import org.springframework.web.bind.annotation.*;
17 20  
18 21 import javax.annotation.Resource;
19 22 import javax.validation.Valid;
20 23  
  24 +import java.util.List;
  25 +import java.util.stream.Collectors;
  26 +
21 27 import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
22 28  
23 29 @Tag(name = "管理后台 - 用户积分记录")
... ... @@ -28,31 +34,34 @@ public class MemberPointRecordController {
28 34  
29 35 @Resource
30 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 40 @GetMapping("/page")
51 41 @Operation(summary = "获得用户积分记录分页")
52 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 18 private Boolean tradeDeductEnable;
19 19  
20 20 @Schema(description = "积分抵扣,单位:分", example = "13506")
21   - private BigDecimal tradeDeductUnitPrice;
  21 + private Integer tradeDeductUnitPrice;
22 22  
23 23 @Schema(description = "积分抵扣最大值", example = "32428")
24   - private Long tradeDeductMaxPrice;
  24 + private Integer tradeDeductMaxPrice;
25 25  
26 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 24 @NotNull(message = "业务类型不能为空")
25 25 private String bizType;
26 26  
27   - @Schema(description = "1增加 0扣减", example = "1")
28   - @NotNull(message = "操作类型不能为空")
29   - private String type;
30   -
31 27 @Schema(description = "积分标题")
32 28 @NotNull(message = "积分标题不能为空")
33 29 private String title;
... ... @@ -47,10 +43,6 @@ public class MemberPointRecordBaseVO {
47 43 @NotNull(message = "积分状态不能为空")
48 44 private Integer status;
49 45  
50   - @Schema(description = "用户id", example = "31169")
51   - @NotNull(message = "用户ID不能为空")
52   - private Integer userId;
53   -
54 46 @Schema(description = "冻结时间")
55 47 @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
56 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 4 import io.swagger.v3.oas.annotations.media.Schema;
5 5 import cn.iocoder.yudao.framework.common.pojo.PageParam;
6 6  
  7 +import java.util.List;
  8 +
7 9 @Schema(description = "管理后台 - 用户积分记录分页 Request VO")
8 10 @Data
9 11 @EqualsAndHashCode(callSuper = true)
10 12 @ToString(callSuper = true)
11 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 21 @Schema(description = "业务类型", example = "1")
17 22 private String bizType;
18 23  
19   - @Schema(description = "1增加 0扣减", example = "1")
20   - private String type;
21   -
22 24 @Schema(description = "积分标题")
23 25 private String title;
24 26  
25 27 @Schema(description = "状态:1-订单创建,2-冻结期,3-完成,4-失效(订单退款) ", example = "1")
26 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 16 @Schema(description = "发生时间")
17 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 3 import cn.iocoder.yudao.framework.common.pojo.CommonResult;
4 4 import cn.iocoder.yudao.framework.common.pojo.PageResult;
5 5 import cn.iocoder.yudao.module.member.controller.admin.signin.vo.MemberSignInConfigCreateReqVO;
6   -import cn.iocoder.yudao.module.member.controller.admin.signin.vo.MemberSignInConfigPageReqVO;
7 6 import cn.iocoder.yudao.module.member.controller.admin.signin.vo.MemberSignInConfigRespVO;
8 7 import cn.iocoder.yudao.module.member.controller.admin.signin.vo.MemberSignInConfigUpdateReqVO;
9 8 import cn.iocoder.yudao.module.member.convert.signin.MemberSignInConfigConvert;
... ... @@ -19,6 +18,8 @@ import org.springframework.web.bind.annotation.*;
19 18 import javax.annotation.Resource;
20 19 import javax.validation.Valid;
21 20  
  21 +import java.util.List;
  22 +
22 23 import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
23 24  
24 25 @Tag(name = "管理后台 - 积分签到规则")
... ... @@ -63,12 +64,12 @@ public class MemberSignInConfigController {
63 64 return success(MemberSignInConfigConvert.INSTANCE.convert(signInConfig));
64 65 }
65 66  
66   - @GetMapping("/page")
  67 + @GetMapping("/list")
67 68 @Operation(summary = "获得积分签到规则分页")
68 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 2  
3 3 import cn.iocoder.yudao.framework.common.pojo.CommonResult;
4 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 7 import cn.iocoder.yudao.module.member.controller.admin.signin.vo.MemberSignInRecordPageReqVO;
6 8 import cn.iocoder.yudao.module.member.controller.admin.signin.vo.MemberSignInRecordRespVO;
7 9 import cn.iocoder.yudao.module.member.convert.signin.MemberSignInRecordConvert;
8 10 import cn.iocoder.yudao.module.member.dal.dataobject.signin.MemberSignInRecordDO;
9 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 14 import io.swagger.v3.oas.annotations.Operation;
11 15 import io.swagger.v3.oas.annotations.Parameter;
12 16 import io.swagger.v3.oas.annotations.tags.Tag;
  17 +import org.apache.commons.lang3.StringUtils;
13 18 import org.springframework.security.access.prepost.PreAuthorize;
  19 +import org.springframework.util.CollectionUtils;
14 20 import org.springframework.validation.annotation.Validated;
15 21 import org.springframework.web.bind.annotation.*;
16 22  
17 23 import javax.annotation.Resource;
18 24 import javax.validation.Valid;
19 25  
  26 +import java.util.List;
  27 +import java.util.stream.Collectors;
  28 +
20 29 import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
21 30  
22 31 @Tag(name = "管理后台 - 用户签到积分")
... ... @@ -27,31 +36,33 @@ public class MemberSignInRecordController {
27 36  
28 37 @Resource
29 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 43 @GetMapping("/page")
51 44 @Operation(summary = "获得用户签到积分分页")
52 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 16 @Schema(description = "签到天数对应分数", example = "10")
17 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 11 public class MemberSignInRecordBaseVO {
12 12  
13 13 @Schema(description = "签到用户", example = "6507")
14   - private Integer userId;
  14 + private Long userId;
15 15  
16 16 @Schema(description = "第几天签到")
17 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 8 import org.springframework.format.annotation.DateTimeFormat;
9 9  
10 10 import java.time.LocalDateTime;
  11 +import java.util.List;
11 12  
12 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 18 @ToString(callSuper = true)
18 19 public class MemberSignInRecordPageReqVO extends PageParam {
19 20  
  21 + //用户前台模糊查询
20 22 @Schema(description = "签到用户", example = "6507")
21   - private Integer userId;
  23 + private String nickName;
  24 +
  25 + private List<Long>userIds;
22 26  
23 27 @Schema(description = "第几天签到")
24 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 19 @Schema(description = "签到时间")
20 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 2  
3 3 import cn.iocoder.yudao.module.member.controller.admin.point.vo.config.MemberPointConfigRespVO;
4 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 5 import cn.iocoder.yudao.module.member.dal.dataobject.point.MemberPointConfigDO;
7   -import cn.iocoder.yudao.module.member.dal.dataobject.point.MemberPointRecordDO;
8 6 import org.mapstruct.Mapper;
9 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 1 package cn.iocoder.yudao.module.member.convert.point;
2 2  
3 3 import cn.iocoder.yudao.framework.common.pojo.PageResult;
4   -import cn.iocoder.yudao.module.member.controller.admin.point.vo.recrod.MemberPointRecordCreateReqVO;
  4 +import cn.iocoder.yudao.module.member.api.user.dto.MemberUserRespDTO;
5 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 6 import cn.iocoder.yudao.module.member.dal.dataobject.point.MemberPointRecordDO;
8 7 import org.mapstruct.Mapper;
9 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 17 * 用户积分记录 Convert
... ... @@ -18,12 +23,62 @@ public interface MemberPointRecordConvert {
18 23  
19 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 1 package cn.iocoder.yudao.module.member.convert.signin;
2 2  
3 3 import cn.iocoder.yudao.framework.common.pojo.PageResult;
4   -import cn.iocoder.yudao.module.member.controller.admin.signin.vo.MemberSignInRecordCreateReqVO;
  4 +import cn.iocoder.yudao.module.member.api.user.dto.MemberUserRespDTO;
5 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 6 import cn.iocoder.yudao.module.member.dal.dataobject.signin.MemberSignInRecordDO;
  7 +import cn.iocoder.yudao.module.system.api.user.dto.AdminUserRespDTO;
8 8 import org.mapstruct.Mapper;
9 9 import org.mapstruct.factory.Mappers;
  10 +import org.springframework.util.CollectionUtils;
  11 +
  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 19 * 用户签到积分 Convert
... ... @@ -18,12 +25,57 @@ public interface MemberSignInRecordConvert {
18 25  
19 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 27 * 自增主键
28 28 */
29 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 37 *
38 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 39 */
40 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 44 private String title;
... ... @@ -52,7 +47,7 @@ public class MemberPointRecordDO extends BaseDO {
52 47 */
53 48 private String description;
54 49 /**
55   - * 积分
  50 + * 积分 正数表示获得积分 负数表示消耗积分
56 51 */
57 52 private Integer point;
58 53 /**
... ... @@ -62,13 +57,13 @@ public class MemberPointRecordDO extends BaseDO {
62 57 /**
63 58 * 状态:1-订单创建,2-冻结期,3-完成,4-失效(订单退款)
64 59 *
65   - * 枚举 {@link TODO point_status 对应的类}
  60 + * 枚举 {@link point_status 对应的类}
66 61 */
67 62 private Integer status;
68 63 /**
69 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 34 * 签到天数对应分数
35 35 */
36 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 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 17  
18 18 default PageResult<MemberPointRecordDO> selectPage(MemberPointRecordPageReqVO reqVO) {
19 19 return selectPage(reqVO, new LambdaQueryWrapperX<MemberPointRecordDO>()
20   - .eqIfPresent(MemberPointRecordDO::getBizId, reqVO.getBizId())
  20 + .inIfPresent(MemberPointRecordDO::getUserId,reqVO.getUserIds())
21 21 .eqIfPresent(MemberPointRecordDO::getBizType, reqVO.getBizType())
22 22 .eqIfPresent(MemberPointRecordDO::getType, reqVO.getType())
23 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 1 package cn.iocoder.yudao.module.member.dal.mysql.signin;
2 2  
3   -import cn.iocoder.yudao.framework.common.pojo.PageResult;
4 3 import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX;
5 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 5 import cn.iocoder.yudao.module.member.dal.dataobject.signin.MemberSignInConfigDO;
  6 +import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
9 7 import org.apache.ibatis.annotations.Mapper;
10 8  
  9 +import java.util.List;
  10 +
11 11 /**
12 12 * 积分签到规则 Mapper
13 13 *
... ... @@ -16,18 +16,32 @@ import org.apache.ibatis.annotations.Mapper;
16 16 @Mapper
17 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 17  
18 18 default PageResult<MemberSignInRecordDO> selectPage(MemberSignInRecordPageReqVO reqVO) {
19 19 return selectPage(reqVO, new LambdaQueryWrapperX<MemberSignInRecordDO>()
20   - .eqIfPresent(MemberSignInRecordDO::getUserId, reqVO.getUserId())
  20 + .inIfPresent(MemberSignInRecordDO::getUserId, reqVO.getUserIds())
21 21 .eqIfPresent(MemberSignInRecordDO::getDay, reqVO.getDay())
22 22 .betweenIfPresent(MemberSignInRecordDO::getCreateTime, reqVO.getCreateTime())
23 23 .orderByDesc(MemberSignInRecordDO::getId));
... ...
yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/point/MemberPointConfigServiceImpl.java
1 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 5 import cn.iocoder.yudao.module.member.controller.admin.point.vo.config.MemberPointConfigSaveReqVO;
4 6 import cn.iocoder.yudao.module.member.convert.point.MemberPointConfigConvert;
5 7 import cn.iocoder.yudao.module.member.dal.dataobject.point.MemberPointConfigDO;
... ... @@ -24,13 +26,15 @@ public class MemberPointConfigServiceImpl implements MemberPointConfigService {
24 26  
25 27 @Override
26 28 public void saveConfig(MemberPointConfigSaveReqVO saveReqVO) {
27   - // TODO @xiaqing:直接 getConfig() 查询,如果不存在,则插入;存在,则进行更新;
28   - long total = pointConfigMapper.selectCount();
  29 + //获取当前记录
  30 + MemberPointConfigDO configDO = getConfig();
29 31 MemberPointConfigDO pointConfigDO = MemberPointConfigConvert.INSTANCE.convert(saveReqVO);
30   - //大于0存在记录,则更新,否则插入
31   - if (total > 0) {
  32 + //当前存在记录,则更新,否则插入
  33 + if (configDO != null) {
  34 + pointConfigDO.setId(configDO.getId());
32 35 pointConfigMapper.updateById(pointConfigDO);
33 36 } else {
  37 + pointConfigDO.setId(null);
34 38 pointConfigMapper.insert(pointConfigDO);
35 39 }
36 40 }
... ... @@ -38,8 +42,7 @@ public class MemberPointConfigServiceImpl implements MemberPointConfigService {
38 42 @Override
39 43 public MemberPointConfigDO getConfig() {
40 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 2  
3 3 import cn.iocoder.yudao.framework.common.pojo.PageResult;
4 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 5 import cn.iocoder.yudao.module.member.dal.dataobject.point.MemberPointRecordDO;
7 6  
8 7 import javax.validation.Valid;
... ... @@ -13,23 +12,6 @@ import javax.validation.Valid;
13 12 * @author QingX
14 13 */
15 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 2  
3 3 import cn.iocoder.yudao.framework.common.pojo.PageResult;
4 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 5 import cn.iocoder.yudao.module.member.dal.dataobject.point.MemberPointRecordDO;
8 6 import cn.iocoder.yudao.module.member.dal.mysql.point.MemberPointRecordMapper;
9   -import cn.iocoder.yudao.module.member.enums.ErrorCodeConstants;
10 7 import org.springframework.stereotype.Service;
11 8 import org.springframework.validation.annotation.Validated;
12 9  
13 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 23 private MemberPointRecordMapper recordMapper;
31 24  
32 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 26 public PageResult<MemberPointRecordDO> getRecordPage(MemberPointRecordPageReqVO pageReqVO) {
54 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 1 package cn.iocoder.yudao.module.member.service.signin;
2 2  
3   -import cn.iocoder.yudao.framework.common.pojo.PageResult;
4 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 4 import cn.iocoder.yudao.module.member.controller.admin.signin.vo.MemberSignInConfigUpdateReqVO;
7 5 import cn.iocoder.yudao.module.member.dal.dataobject.signin.MemberSignInConfigDO;
8 6  
9 7 import javax.validation.Valid;
  8 +import java.util.List;
10 9  
11 10 /**
12 11 * 积分签到规则 Service 接口
... ... @@ -48,9 +47,8 @@ public interface MemberSignInConfigService {
48 47 /**
49 48 * 获得积分签到规则分页
50 49 *
51   - * @param pageReqVO 分页查询
52 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 1 package cn.iocoder.yudao.module.member.service.signin;
2 2  
3   -import cn.iocoder.yudao.framework.common.pojo.PageResult;
4 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 4 import cn.iocoder.yudao.module.member.controller.admin.signin.vo.MemberSignInConfigUpdateReqVO;
7 5 import cn.iocoder.yudao.module.member.convert.signin.MemberSignInConfigConvert;
8 6 import cn.iocoder.yudao.module.member.dal.dataobject.signin.MemberSignInConfigDO;
9 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 11 import org.springframework.stereotype.Service;
11 12 import org.springframework.validation.annotation.Validated;
12 13  
13 14 import javax.annotation.Resource;
14 15  
  16 +import java.util.List;
  17 +
15 18 import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;
16 19 import static cn.iocoder.yudao.module.member.enums.ErrorCodeConstants.SIGN_IN_CONFIG_EXISTS;
17 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 31 @Resource
29 32 private MemberSignInConfigMapper memberSignInConfigMapper;
30 33  
31   - // TODO @xiaqing:这种写的逻辑,最好按照 校验 - 更新这样的顺序写;类似这里,37 要放到 34 前面;updateSignInConfig 也是一样的思路
32 34 @Override
33 35 public Integer createSignInConfig(MemberSignInConfigCreateReqVO createReqVO) {
  36 + // 判断是否重复插入签到天数
  37 + validateSignInConfigExistsDay(createReqVO.getDay());
  38 +
34 39 // 插入
35 40 MemberSignInConfigDO signInConfig = MemberSignInConfigConvert.INSTANCE.convert(createReqVO);
36   - // 判断是否重复插入签到天数
37   - validateSignInConfigExistsDay(signInConfig.getDay());
38 41 memberSignInConfigMapper.insert(signInConfig);
39 42 // 返回
40 43 return signInConfig.getId();
41 44 }
42 45  
43   - // TODO @xiaqing:这个逻辑的空行要注意;52 到 53 是没必要的空行;而 49 和 50 之间有个空行会好点,可以区分出是 校验 - 更新这样的逻辑间隔
44 46 @Override
45 47 public void updateSignInConfig(MemberSignInConfigUpdateReqVO updateReqVO) {
46 48 // 校验存在
47 49 validateSignInConfigExists(updateReqVO.getId());
48 50 //判断是否重复插入签到天数
49 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 58 @Override
... ... @@ -68,18 +69,18 @@ public class MemberSignInConfigServiceImpl implements MemberSignInConfigService
68 69 }
69 70 }
70 71  
71   - // TODO @xiaqing:这个唯一判断,也可以参考下别的模块哈;
72 72 //根据签到天数判断是否存在一个相同的天数
73 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 76 throw exception(SIGN_IN_CONFIG_EXISTS);
76 77 }
77 78 }
78 79  
79   - // TODO @xiaqing:参考下别的模块,判断唯一,排除自己怎么写的哈;
80 80 // 更新天数时判断是否有重复的天数,需要去除自己
81 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 84 throw exception(SIGN_IN_CONFIG_EXISTS);
84 85 }
85 86 }
... ... @@ -90,8 +91,8 @@ public class MemberSignInConfigServiceImpl implements MemberSignInConfigService
90 91 }
91 92  
92 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 11 */
12 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 21 */
35 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 4 import cn.iocoder.yudao.module.member.controller.admin.signin.vo.MemberSignInRecordPageReqVO;
5 5 import cn.iocoder.yudao.module.member.dal.dataobject.signin.MemberSignInRecordDO;
6 6 import cn.iocoder.yudao.module.member.dal.mysql.signin.MemberSignInRecordMapper;
  7 +import cn.iocoder.yudao.module.system.api.user.AdminUserApi;
7 8 import org.springframework.stereotype.Service;
8 9 import org.springframework.validation.annotation.Validated;
9 10  
... ... @@ -23,25 +24,10 @@ public class MemberSignInRecordServiceImpl implements MemberSignInRecordService
23 24  
24 25 @Resource
25 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 32 @Override
47 33 public PageResult<MemberSignInRecordDO> getSignInRecordPage(MemberSignInRecordPageReqVO pageReqVO) {
... ...
yudao-server/src/main/resources/application-local.yaml
... ... @@ -51,24 +51,24 @@ spring:
51 51 # url: jdbc:oracle:thin:@127.0.0.1:1521:xe # Oracle 连接的示例
52 52 # url: jdbc:sqlserver://127.0.0.1:1433;DatabaseName=${spring.datasource.dynamic.datasource.master.name} # SQLServer 连接的示例
53 53 username: root
54   - password: 123456
  54 + password: 1qaz!QAZ
55 55 # username: sa
56 56 # password: JSm:g(*%lU4ZAkz06cd52KqT3)i1?H7W
57 57 slave: # 模拟从库,可根据自己需要修改
58 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 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 61 # url: jdbc:postgresql://127.0.0.1:5432/${spring.datasource.dynamic.datasource.slave.name} # PostgreSQL 连接的示例
62 62 # url: jdbc:oracle:thin:@127.0.0.1:1521:xe # Oracle 连接的示例
63 63 # url: jdbc:sqlserver://127.0.0.1:1433;DatabaseName=${spring.datasource.dynamic.datasource.slave.name} # SQLServer 连接的示例
64 64 username: root
65   - password: 123456
  65 + password: 1qaz!QAZ
66 66 # username: sa
67 67 # password: JSm:g(*%lU4ZAkz06cd52KqT3)i1?H7W
68 68  
69 69 # Redis 配置。Redisson 默认的配置足够使用,一般不需要进行调优
70 70 redis:
71   - host: 127.0.0.1 # 地址
  71 + host: 10.211.55.5 # 地址
72 72 port: 6379 # 端口
73 73 database: 0 # 数据库索引
74 74 # password: dev # 密码,建议生产环境开启
... ...