优惠券:新人券使用 MQ 发放

This commit is contained in:
owen
2023-09-30 17:29:32 +08:00
parent 497ea2eee8
commit fc432ba073
10 changed files with 132 additions and 6 deletions

View File

@ -22,6 +22,11 @@
<artifactId>yudao-common</artifactId>
</dependency>
<dependency>
<groupId>cn.iocoder.boot</groupId>
<artifactId>yudao-spring-boot-starter-mq</artifactId>
<scope>compile</scope>
</dependency>
<!-- 参数校验 -->
<dependency>
<groupId>org.springframework.boot</groupId>

View File

@ -0,0 +1,29 @@
package cn.iocoder.yudao.module.member.mq.message.user;
import cn.iocoder.yudao.framework.mq.core.stream.AbstractStreamMessage;
import lombok.Data;
import lombok.EqualsAndHashCode;
import javax.validation.constraints.NotNull;
/**
* 新人券发放消息
*
* @author owen
*/
@Data
@EqualsAndHashCode(callSuper = true)
public class RegisterCouponSendMessage extends AbstractStreamMessage {
/**
* 用户编号
*/
@NotNull(message = "用户编号不能为空")
private Long userId;
@Override
public String getStreamKey() {
return "member.register-coupon.send";
}
}

View File

@ -0,0 +1,31 @@
package cn.iocoder.yudao.module.member.mq.producer.user;
import cn.iocoder.yudao.framework.mq.core.RedisMQTemplate;
import cn.iocoder.yudao.module.member.mq.message.user.RegisterCouponSendMessage;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Component;
import javax.annotation.Resource;
/**
* 新人券发放 Producer
*
* @author owen
*/
@Slf4j
@Component
public class RegisterCouponProducer {
@Resource
private RedisMQTemplate redisMQTemplate;
/**
* 发送 {@link RegisterCouponSendMessage} 消息
*
* @param userId 用户编号
*/
public void sendMailSendMessage(Long userId) {
redisMQTemplate.send(new RegisterCouponSendMessage().setUserId(userId));
}
}

View File

@ -18,6 +18,7 @@ import cn.iocoder.yudao.module.member.convert.auth.AuthConvert;
import cn.iocoder.yudao.module.member.convert.user.MemberUserConvert;
import cn.iocoder.yudao.module.member.dal.dataobject.user.MemberUserDO;
import cn.iocoder.yudao.module.member.dal.mysql.user.MemberUserMapper;
import cn.iocoder.yudao.module.member.mq.producer.user.RegisterCouponProducer;
import cn.iocoder.yudao.module.system.api.sms.SmsCodeApi;
import cn.iocoder.yudao.module.system.api.sms.dto.code.SmsCodeUseReqDTO;
import cn.iocoder.yudao.module.system.enums.sms.SmsSceneEnum;
@ -58,6 +59,9 @@ public class MemberUserServiceImpl implements MemberUserService {
@Resource
private PasswordEncoder passwordEncoder;
@Resource
private RegisterCouponProducer registerCouponProducer;
@Override
public MemberUserDO getUserByMobile(String mobile) {
return memberUserMapper.selectByMobile(mobile);
@ -89,6 +93,9 @@ public class MemberUserServiceImpl implements MemberUserService {
user.setPassword(encodePassword(password)); // 加密密码
user.setRegisterIp(registerIp);
memberUserMapper.insert(user);
// 发送 MQ 消息,发放新人券
registerCouponProducer.sendMailSendMessage(user.getId());
return user;
}