Commit 417707175817e01bfe925bc482f3af2894c8dc65
Committed by
Gitee
!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
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
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
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
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
yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/dal/dataobject/signin/MemberSignInRecordDO.java
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<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<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 # 密码,建议生产环境开启 | ... | ... |