Commit 7fdd36d97978be36d0ea45dcb5e840b1cf76c865
1 parent
0c1f5c95
Review代码修改
Showing
10 changed files
with
67 additions
and
44 deletions
yudao-module-mall/yudao-module-promotion-biz/src/main/java/cn/iocoder/yudao/module/promotion/mq/consumer/coupon/RegisterCouponSendConsumer.java renamed to yudao-module-mall/yudao-module-promotion-biz/src/main/java/cn/iocoder/yudao/module/promotion/mq/consumer/coupon/UserCreateConsumer.java
| 1 | package cn.iocoder.yudao.module.promotion.mq.consumer.coupon; | 1 | package cn.iocoder.yudao.module.promotion.mq.consumer.coupon; |
| 2 | 2 | ||
| 3 | import cn.iocoder.yudao.framework.mq.core.stream.AbstractStreamMessageListener; | 3 | import cn.iocoder.yudao.framework.mq.core.stream.AbstractStreamMessageListener; |
| 4 | -import cn.iocoder.yudao.module.member.mq.message.user.RegisterCouponSendMessage; | 4 | +import cn.iocoder.yudao.module.promotion.mq.message.coupon.UserCreateMessage; |
| 5 | import cn.iocoder.yudao.module.promotion.service.coupon.CouponService; | 5 | import cn.iocoder.yudao.module.promotion.service.coupon.CouponService; |
| 6 | import lombok.extern.slf4j.Slf4j; | 6 | import lombok.extern.slf4j.Slf4j; |
| 7 | import org.springframework.stereotype.Component; | 7 | import org.springframework.stereotype.Component; |
| @@ -9,19 +9,19 @@ import org.springframework.stereotype.Component; | @@ -9,19 +9,19 @@ import org.springframework.stereotype.Component; | ||
| 9 | import javax.annotation.Resource; | 9 | import javax.annotation.Resource; |
| 10 | 10 | ||
| 11 | /** | 11 | /** |
| 12 | - * 针对 {@link RegisterCouponSendMessage} 的消费者 | 12 | + * 针对 {@link UserCreateMessage} 的消费者 |
| 13 | * | 13 | * |
| 14 | * @author owen | 14 | * @author owen |
| 15 | */ | 15 | */ |
| 16 | @Component | 16 | @Component |
| 17 | @Slf4j | 17 | @Slf4j |
| 18 | -public class RegisterCouponSendConsumer extends AbstractStreamMessageListener<RegisterCouponSendMessage> { | 18 | +public class UserCreateConsumer extends AbstractStreamMessageListener<UserCreateMessage> { |
| 19 | 19 | ||
| 20 | @Resource | 20 | @Resource |
| 21 | private CouponService couponService; | 21 | private CouponService couponService; |
| 22 | 22 | ||
| 23 | @Override | 23 | @Override |
| 24 | - public void onMessage(RegisterCouponSendMessage message) { | 24 | + public void onMessage(UserCreateMessage message) { |
| 25 | log.info("[onMessage][消息内容({})]", message); | 25 | log.info("[onMessage][消息内容({})]", message); |
| 26 | couponService.takeCouponByRegister(message.getUserId()); | 26 | couponService.takeCouponByRegister(message.getUserId()); |
| 27 | } | 27 | } |
yudao-module-mall/yudao-module-promotion-biz/src/main/java/cn/iocoder/yudao/module/promotion/mq/message/coupon/UserCreateMessage.java
0 → 100644
| 1 | +package cn.iocoder.yudao.module.promotion.mq.message.coupon; | ||
| 2 | + | ||
| 3 | +import cn.iocoder.yudao.framework.mq.core.stream.AbstractStreamMessage; | ||
| 4 | +import lombok.Data; | ||
| 5 | +import lombok.EqualsAndHashCode; | ||
| 6 | + | ||
| 7 | +import javax.validation.constraints.NotNull; | ||
| 8 | + | ||
| 9 | +/** | ||
| 10 | + * 会员用户创建消息 | ||
| 11 | + * | ||
| 12 | + * @author owen | ||
| 13 | + */ | ||
| 14 | +@Data | ||
| 15 | +@EqualsAndHashCode(callSuper = true) | ||
| 16 | +public class UserCreateMessage extends AbstractStreamMessage { | ||
| 17 | + | ||
| 18 | + /** | ||
| 19 | + * 用户编号 | ||
| 20 | + */ | ||
| 21 | + @NotNull(message = "用户编号不能为空") | ||
| 22 | + private Long userId; | ||
| 23 | + | ||
| 24 | + @Override | ||
| 25 | + public String getStreamKey() { | ||
| 26 | + return "member.create.send"; | ||
| 27 | + } | ||
| 28 | + | ||
| 29 | +} |
yudao-module-mall/yudao-module-promotion-biz/src/main/java/cn/iocoder/yudao/module/promotion/service/coupon/CouponServiceImpl.java
| @@ -178,7 +178,7 @@ public class CouponServiceImpl implements CouponService { | @@ -178,7 +178,7 @@ public class CouponServiceImpl implements CouponService { | ||
| 178 | } | 178 | } |
| 179 | 179 | ||
| 180 | @Override | 180 | @Override |
| 181 | - // TODO @疯狂:搞个事务; | 181 | + @Transactional(rollbackFor = Exception.class) |
| 182 | public void takeCouponByRegister(Long userId) { | 182 | public void takeCouponByRegister(Long userId) { |
| 183 | List<CouponTemplateDO> templates = couponTemplateService.getCouponTemplateListByTakeType(CouponTakeTypeEnum.REGISTER); | 183 | List<CouponTemplateDO> templates = couponTemplateService.getCouponTemplateListByTakeType(CouponTakeTypeEnum.REGISTER); |
| 184 | for (CouponTemplateDO template : templates) { | 184 | for (CouponTemplateDO template : templates) { |
yudao-module-member/yudao-module-member-api/pom.xml
| @@ -22,13 +22,6 @@ | @@ -22,13 +22,6 @@ | ||
| 22 | <artifactId>yudao-common</artifactId> | 22 | <artifactId>yudao-common</artifactId> |
| 23 | </dependency> | 23 | </dependency> |
| 24 | 24 | ||
| 25 | - <!-- TODO @疯狂:biz 引入哈;api 保持低依赖 --> | ||
| 26 | - <dependency> | ||
| 27 | - <groupId>cn.iocoder.boot</groupId> | ||
| 28 | - <artifactId>yudao-spring-boot-starter-mq</artifactId> | ||
| 29 | - <scope>compile</scope> | ||
| 30 | - </dependency> | ||
| 31 | - | ||
| 32 | <!-- 参数校验 --> | 25 | <!-- 参数校验 --> |
| 33 | <dependency> | 26 | <dependency> |
| 34 | <groupId>org.springframework.boot</groupId> | 27 | <groupId>org.springframework.boot</groupId> |
yudao-module-member/yudao-module-member-api/src/main/java/cn/iocoder/yudao/module/member/enums/ErrorCodeConstants.java
| @@ -38,11 +38,9 @@ public interface ErrorCodeConstants { | @@ -38,11 +38,9 @@ public interface ErrorCodeConstants { | ||
| 38 | //========== 签到配置 1-004-009-000 ========== | 38 | //========== 签到配置 1-004-009-000 ========== |
| 39 | ErrorCode SIGN_IN_CONFIG_NOT_EXISTS = new ErrorCode(1_004_009_000, "签到天数规则不存在"); | 39 | ErrorCode SIGN_IN_CONFIG_NOT_EXISTS = new ErrorCode(1_004_009_000, "签到天数规则不存在"); |
| 40 | ErrorCode SIGN_IN_CONFIG_EXISTS = new ErrorCode(1_004_009_001, "签到天数规则已存在"); | 40 | ErrorCode SIGN_IN_CONFIG_EXISTS = new ErrorCode(1_004_009_001, "签到天数规则已存在"); |
| 41 | - // TODO @疯狂:这个可以用 validator 去做;通过在 BaseVO 里,增加一个 @AssertTrue 注解的方式 | ||
| 42 | - ErrorCode SIGN_IN_CONFIG_AWARD_EMPTY = new ErrorCode(1_004_009_002, "签到奖励积分和经验不能同时为空"); | ||
| 43 | 41 | ||
| 44 | //========== 签到配置 1-004-010-000 ========== | 42 | //========== 签到配置 1-004-010-000 ========== |
| 45 | - ErrorCode SIGN_IN_RECORD_TODAY_EXISTS = new ErrorCode(1_004_010_000,"今日已签到,请勿重复签到"); | 43 | + ErrorCode SIGN_IN_RECORD_TODAY_EXISTS = new ErrorCode(1_004_010_000, "今日已签到,请勿重复签到"); |
| 46 | 44 | ||
| 47 | //========== 用户等级 1-004-011-000 ========== | 45 | //========== 用户等级 1-004-011-000 ========== |
| 48 | ErrorCode LEVEL_NOT_EXISTS = new ErrorCode(1_004_011_000, "用户等级不存在"); | 46 | ErrorCode LEVEL_NOT_EXISTS = new ErrorCode(1_004_011_000, "用户等级不存在"); |
yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/signin/vo/config/MemberSignInConfigBaseVO.java
| 1 | package cn.iocoder.yudao.module.member.controller.admin.signin.vo.config; | 1 | package cn.iocoder.yudao.module.member.controller.admin.signin.vo.config; |
| 2 | 2 | ||
| 3 | +import cn.hutool.core.util.ObjUtil; | ||
| 3 | import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum; | 4 | import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum; |
| 4 | import cn.iocoder.yudao.framework.common.validation.InEnum; | 5 | import cn.iocoder.yudao.framework.common.validation.InEnum; |
| 6 | +import com.fasterxml.jackson.annotation.JsonIgnore; | ||
| 5 | import io.swagger.v3.oas.annotations.media.Schema; | 7 | import io.swagger.v3.oas.annotations.media.Schema; |
| 6 | import lombok.Data; | 8 | import lombok.Data; |
| 7 | 9 | ||
| 10 | +import javax.validation.constraints.AssertTrue; | ||
| 8 | import javax.validation.constraints.NotNull; | 11 | import javax.validation.constraints.NotNull; |
| 9 | import javax.validation.constraints.PositiveOrZero; | 12 | import javax.validation.constraints.PositiveOrZero; |
| 10 | 13 | ||
| @@ -34,4 +37,9 @@ public class MemberSignInConfigBaseVO { | @@ -34,4 +37,9 @@ public class MemberSignInConfigBaseVO { | ||
| 34 | @InEnum(CommonStatusEnum.class) | 37 | @InEnum(CommonStatusEnum.class) |
| 35 | private Integer status; | 38 | private Integer status; |
| 36 | 39 | ||
| 40 | + @AssertTrue(message = "签到奖励积分和经验不能同时为空") | ||
| 41 | + @JsonIgnore | ||
| 42 | + public boolean isConfigAward() { | ||
| 43 | + return ObjUtil.notEqual(point, 0) || ObjUtil.notEqual(experience, 0); | ||
| 44 | + } | ||
| 37 | } | 45 | } |
yudao-module-member/yudao-module-member-api/src/main/java/cn/iocoder/yudao/module/member/mq/message/user/RegisterCouponSendMessage.java renamed to yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/mq/message/user/UserCreateMessage.java
| @@ -7,13 +7,13 @@ import lombok.EqualsAndHashCode; | @@ -7,13 +7,13 @@ import lombok.EqualsAndHashCode; | ||
| 7 | import javax.validation.constraints.NotNull; | 7 | import javax.validation.constraints.NotNull; |
| 8 | 8 | ||
| 9 | /** | 9 | /** |
| 10 | - * 新人券发放消息 | 10 | + * 会员用户创建消息 |
| 11 | * | 11 | * |
| 12 | * @author owen | 12 | * @author owen |
| 13 | */ | 13 | */ |
| 14 | @Data | 14 | @Data |
| 15 | @EqualsAndHashCode(callSuper = true) | 15 | @EqualsAndHashCode(callSuper = true) |
| 16 | -public class RegisterCouponSendMessage extends AbstractStreamMessage { | 16 | +public class UserCreateMessage extends AbstractStreamMessage { |
| 17 | 17 | ||
| 18 | /** | 18 | /** |
| 19 | * 用户编号 | 19 | * 用户编号 |
| @@ -23,7 +23,7 @@ public class RegisterCouponSendMessage extends AbstractStreamMessage { | @@ -23,7 +23,7 @@ public class RegisterCouponSendMessage extends AbstractStreamMessage { | ||
| 23 | 23 | ||
| 24 | @Override | 24 | @Override |
| 25 | public String getStreamKey() { | 25 | public String getStreamKey() { |
| 26 | - return "member.register-coupon.send"; | 26 | + return "member.create.send"; |
| 27 | } | 27 | } |
| 28 | 28 | ||
| 29 | } | 29 | } |
yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/mq/producer/user/RegisterCouponProducer.java renamed to yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/mq/producer/user/UserCreateProducer.java
| 1 | package cn.iocoder.yudao.module.member.mq.producer.user; | 1 | package cn.iocoder.yudao.module.member.mq.producer.user; |
| 2 | 2 | ||
| 3 | import cn.iocoder.yudao.framework.mq.core.RedisMQTemplate; | 3 | import cn.iocoder.yudao.framework.mq.core.RedisMQTemplate; |
| 4 | -import cn.iocoder.yudao.module.member.mq.message.user.RegisterCouponSendMessage; | 4 | +import cn.iocoder.yudao.module.member.mq.message.user.UserCreateMessage; |
| 5 | import lombok.extern.slf4j.Slf4j; | 5 | import lombok.extern.slf4j.Slf4j; |
| 6 | import org.springframework.stereotype.Component; | 6 | import org.springframework.stereotype.Component; |
| 7 | 7 | ||
| 8 | import javax.annotation.Resource; | 8 | import javax.annotation.Resource; |
| 9 | 9 | ||
| 10 | -// TODO @疯狂:发 UserCreateMessage;解耦,然后优惠劵监听到,去发卷; | ||
| 11 | /** | 10 | /** |
| 12 | - * 新人券发放 Producer | 11 | + * 会员用户创建 Producer |
| 13 | * | 12 | * |
| 14 | * @author owen | 13 | * @author owen |
| 15 | */ | 14 | */ |
| 16 | @Slf4j | 15 | @Slf4j |
| 17 | @Component | 16 | @Component |
| 18 | -public class RegisterCouponProducer { | 17 | +public class UserCreateProducer { |
| 19 | 18 | ||
| 20 | @Resource | 19 | @Resource |
| 21 | private RedisMQTemplate redisMQTemplate; | 20 | private RedisMQTemplate redisMQTemplate; |
| 22 | 21 | ||
| 23 | /** | 22 | /** |
| 24 | - * 发送 {@link RegisterCouponSendMessage} 消息 | 23 | + * 发送 {@link UserCreateMessage} 消息 |
| 25 | * | 24 | * |
| 26 | * @param userId 用户编号 | 25 | * @param userId 用户编号 |
| 27 | */ | 26 | */ |
| 28 | - public void sendMailSendMessage(Long userId) { | ||
| 29 | - redisMQTemplate.send(new RegisterCouponSendMessage().setUserId(userId)); | 27 | + public void sendUserCreateMessage(Long userId) { |
| 28 | + redisMQTemplate.send(new UserCreateMessage().setUserId(userId)); | ||
| 30 | } | 29 | } |
| 31 | 30 | ||
| 32 | } | 31 | } |
yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/signin/MemberSignInConfigServiceImpl.java
| @@ -11,10 +11,10 @@ import org.springframework.validation.annotation.Validated; | @@ -11,10 +11,10 @@ import org.springframework.validation.annotation.Validated; | ||
| 11 | import javax.annotation.Resource; | 11 | import javax.annotation.Resource; |
| 12 | import java.util.Comparator; | 12 | import java.util.Comparator; |
| 13 | import java.util.List; | 13 | import java.util.List; |
| 14 | -import java.util.Objects; | ||
| 15 | 14 | ||
| 16 | import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception; | 15 | import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception; |
| 17 | -import static cn.iocoder.yudao.module.member.enums.ErrorCodeConstants.*; | 16 | +import static cn.iocoder.yudao.module.member.enums.ErrorCodeConstants.SIGN_IN_CONFIG_EXISTS; |
| 17 | +import static cn.iocoder.yudao.module.member.enums.ErrorCodeConstants.SIGN_IN_CONFIG_NOT_EXISTS; | ||
| 18 | 18 | ||
| 19 | /** | 19 | /** |
| 20 | * 签到规则 Service 实现类 | 20 | * 签到规则 Service 实现类 |
| @@ -30,8 +30,6 @@ public class MemberSignInConfigServiceImpl implements MemberSignInConfigService | @@ -30,8 +30,6 @@ public class MemberSignInConfigServiceImpl implements MemberSignInConfigService | ||
| 30 | 30 | ||
| 31 | @Override | 31 | @Override |
| 32 | public Long createSignInConfig(MemberSignInConfigCreateReqVO createReqVO) { | 32 | public Long createSignInConfig(MemberSignInConfigCreateReqVO createReqVO) { |
| 33 | - // 校验奖励积分、奖励经验 | ||
| 34 | - validatePointAndExperience(createReqVO.getPoint(), createReqVO.getExperience()); | ||
| 35 | // 判断是否重复插入签到天数 | 33 | // 判断是否重复插入签到天数 |
| 36 | validateSignInConfigDayDuplicate(createReqVO.getDay(), null); | 34 | validateSignInConfigDayDuplicate(createReqVO.getDay(), null); |
| 37 | 35 | ||
| @@ -44,8 +42,6 @@ public class MemberSignInConfigServiceImpl implements MemberSignInConfigService | @@ -44,8 +42,6 @@ public class MemberSignInConfigServiceImpl implements MemberSignInConfigService | ||
| 44 | 42 | ||
| 45 | @Override | 43 | @Override |
| 46 | public void updateSignInConfig(MemberSignInConfigUpdateReqVO updateReqVO) { | 44 | public void updateSignInConfig(MemberSignInConfigUpdateReqVO updateReqVO) { |
| 47 | - // 校验奖励积分、奖励经验 | ||
| 48 | - validatePointAndExperience(updateReqVO.getPoint(), updateReqVO.getExperience()); | ||
| 49 | // 校验存在 | 45 | // 校验存在 |
| 50 | validateSignInConfigExists(updateReqVO.getId()); | 46 | validateSignInConfigExists(updateReqVO.getId()); |
| 51 | // 判断是否重复插入签到天数 | 47 | // 判断是否重复插入签到天数 |
| @@ -88,13 +84,6 @@ public class MemberSignInConfigServiceImpl implements MemberSignInConfigService | @@ -88,13 +84,6 @@ public class MemberSignInConfigServiceImpl implements MemberSignInConfigService | ||
| 88 | } | 84 | } |
| 89 | } | 85 | } |
| 90 | 86 | ||
| 91 | - private void validatePointAndExperience(Integer point, Integer experience) { | ||
| 92 | - // 奖励积分、经验 至少要配置一个,否则没有意义 | ||
| 93 | - if (Objects.equals(point, 0) && Objects.equals(experience, 0)) { | ||
| 94 | - throw exception(SIGN_IN_CONFIG_AWARD_EMPTY); | ||
| 95 | - } | ||
| 96 | - } | ||
| 97 | - | ||
| 98 | @Override | 87 | @Override |
| 99 | public MemberSignInConfigDO getSignInConfig(Long id) { | 88 | public MemberSignInConfigDO getSignInConfig(Long id) { |
| 100 | return memberSignInConfigMapper.selectById(id); | 89 | return memberSignInConfigMapper.selectById(id); |
yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/user/MemberUserServiceImpl.java
| @@ -2,6 +2,7 @@ package cn.iocoder.yudao.module.member.service.user; | @@ -2,6 +2,7 @@ package cn.iocoder.yudao.module.member.service.user; | ||
| 2 | 2 | ||
| 3 | import cn.hutool.core.collection.CollUtil; | 3 | import cn.hutool.core.collection.CollUtil; |
| 4 | import cn.hutool.core.collection.ListUtil; | 4 | import cn.hutool.core.collection.ListUtil; |
| 5 | +import cn.hutool.core.util.BooleanUtil; | ||
| 5 | import cn.hutool.core.util.IdUtil; | 6 | import cn.hutool.core.util.IdUtil; |
| 6 | import cn.hutool.core.util.ObjectUtil; | 7 | import cn.hutool.core.util.ObjectUtil; |
| 7 | import cn.hutool.core.util.StrUtil; | 8 | import cn.hutool.core.util.StrUtil; |
| @@ -18,7 +19,7 @@ import cn.iocoder.yudao.module.member.convert.auth.AuthConvert; | @@ -18,7 +19,7 @@ import cn.iocoder.yudao.module.member.convert.auth.AuthConvert; | ||
| 18 | import cn.iocoder.yudao.module.member.convert.user.MemberUserConvert; | 19 | import cn.iocoder.yudao.module.member.convert.user.MemberUserConvert; |
| 19 | import cn.iocoder.yudao.module.member.dal.dataobject.user.MemberUserDO; | 20 | import cn.iocoder.yudao.module.member.dal.dataobject.user.MemberUserDO; |
| 20 | import cn.iocoder.yudao.module.member.dal.mysql.user.MemberUserMapper; | 21 | import cn.iocoder.yudao.module.member.dal.mysql.user.MemberUserMapper; |
| 21 | -import cn.iocoder.yudao.module.member.mq.producer.user.RegisterCouponProducer; | 22 | +import cn.iocoder.yudao.module.member.mq.producer.user.UserCreateProducer; |
| 22 | import cn.iocoder.yudao.module.system.api.sms.SmsCodeApi; | 23 | import cn.iocoder.yudao.module.system.api.sms.SmsCodeApi; |
| 23 | import cn.iocoder.yudao.module.system.api.sms.dto.code.SmsCodeUseReqDTO; | 24 | import cn.iocoder.yudao.module.system.api.sms.dto.code.SmsCodeUseReqDTO; |
| 24 | import cn.iocoder.yudao.module.system.enums.sms.SmsSceneEnum; | 25 | import cn.iocoder.yudao.module.system.enums.sms.SmsSceneEnum; |
| @@ -27,6 +28,7 @@ import lombok.extern.slf4j.Slf4j; | @@ -27,6 +28,7 @@ import lombok.extern.slf4j.Slf4j; | ||
| 27 | import org.springframework.security.crypto.password.PasswordEncoder; | 28 | import org.springframework.security.crypto.password.PasswordEncoder; |
| 28 | import org.springframework.stereotype.Service; | 29 | import org.springframework.stereotype.Service; |
| 29 | import org.springframework.transaction.annotation.Transactional; | 30 | import org.springframework.transaction.annotation.Transactional; |
| 31 | +import org.springframework.transaction.support.TransactionTemplate; | ||
| 30 | 32 | ||
| 31 | import javax.annotation.Resource; | 33 | import javax.annotation.Resource; |
| 32 | import javax.validation.Valid; | 34 | import javax.validation.Valid; |
| @@ -60,7 +62,10 @@ public class MemberUserServiceImpl implements MemberUserService { | @@ -60,7 +62,10 @@ public class MemberUserServiceImpl implements MemberUserService { | ||
| 60 | private PasswordEncoder passwordEncoder; | 62 | private PasswordEncoder passwordEncoder; |
| 61 | 63 | ||
| 62 | @Resource | 64 | @Resource |
| 63 | - private RegisterCouponProducer registerCouponProducer; | 65 | + private UserCreateProducer registerCouponProducer; |
| 66 | + | ||
| 67 | + @Resource | ||
| 68 | + private TransactionTemplate transactionTemplate; | ||
| 64 | 69 | ||
| 65 | @Override | 70 | @Override |
| 66 | public MemberUserDO getUserByMobile(String mobile) { | 71 | public MemberUserDO getUserByMobile(String mobile) { |
| @@ -92,11 +97,13 @@ public class MemberUserServiceImpl implements MemberUserService { | @@ -92,11 +97,13 @@ public class MemberUserServiceImpl implements MemberUserService { | ||
| 92 | user.setStatus(CommonStatusEnum.ENABLE.getStatus()); // 默认开启 | 97 | user.setStatus(CommonStatusEnum.ENABLE.getStatus()); // 默认开启 |
| 93 | user.setPassword(encodePassword(password)); // 加密密码 | 98 | user.setPassword(encodePassword(password)); // 加密密码 |
| 94 | user.setRegisterIp(registerIp); | 99 | user.setRegisterIp(registerIp); |
| 95 | - memberUserMapper.insert(user); | ||
| 96 | 100 | ||
| 97 | - // 发送 MQ 消息,发放新人券 | ||
| 98 | - // TODO @疯狂:事务结束后,在发送 MQ 消息;避免出现消息已经发了,事务没提交,或者回滚了 | ||
| 99 | - registerCouponProducer.sendMailSendMessage(user.getId()); | 101 | + Boolean success = transactionTemplate.execute(status -> memberUserMapper.insert(user) > 0); |
| 102 | + if (BooleanUtil.isTrue(success)) { | ||
| 103 | + // 发送 MQ 消息:用户创建 | ||
| 104 | + registerCouponProducer.sendUserCreateMessage(user.getId()); | ||
| 105 | + } | ||
| 106 | + | ||
| 100 | return user; | 107 | return user; |
| 101 | } | 108 | } |
| 102 | 109 |