|
@@ -15,6 +15,7 @@ import cn.newfeifan.mall.module.member.convert.auth.AuthConvert;
|
|
|
import cn.newfeifan.mall.module.member.convert.user.MemberUserConvert;
|
|
|
import cn.newfeifan.mall.module.member.dal.dataobject.user.MemberUserDO;
|
|
|
import cn.newfeifan.mall.module.member.dal.mysql.user.MemberUserMapper;
|
|
|
+import cn.newfeifan.mall.module.member.mq.producer.shareLinkRegister.ShareLinkRegisterProducer;
|
|
|
import cn.newfeifan.mall.module.member.mq.producer.sharePath.SharePathProducer;
|
|
|
import cn.newfeifan.mall.module.member.mq.producer.user.MemberUserProducer;
|
|
|
import cn.newfeifan.mall.module.system.api.sms.SmsCodeApi;
|
|
@@ -28,6 +29,7 @@ import org.springframework.security.crypto.password.PasswordEncoder;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
import org.springframework.transaction.annotation.Transactional;
|
|
|
import org.springframework.transaction.support.TransactionSynchronization;
|
|
|
+import org.springframework.transaction.support.TransactionSynchronizationAdapter;
|
|
|
import org.springframework.transaction.support.TransactionSynchronizationManager;
|
|
|
|
|
|
import javax.annotation.Resource;
|
|
@@ -67,6 +69,8 @@ public class MemberUserServiceImpl implements MemberUserService {
|
|
|
|
|
|
@Resource
|
|
|
private SharePathProducer sharePathProducer;
|
|
|
+ @Resource
|
|
|
+ private ShareLinkRegisterProducer shareLinkRegisterProducer;
|
|
|
|
|
|
@Override
|
|
|
public MemberUserDO getUserByMobile(String mobile) {
|
|
@@ -80,24 +84,24 @@ public class MemberUserServiceImpl implements MemberUserService {
|
|
|
|
|
|
@Override
|
|
|
@Transactional(rollbackFor = Exception.class)
|
|
|
- public MemberUserDO createUserIfAbsent(String mobile, String registerIp, Integer terminal) {
|
|
|
+ public MemberUserDO createUserIfAbsent(String mobile, String registerIp, Integer terminal, Long linkId) {
|
|
|
// 用户已经存在
|
|
|
MemberUserDO user = memberUserMapper.selectByMobile(mobile);
|
|
|
if (user != null) {
|
|
|
return user;
|
|
|
}
|
|
|
// 用户不存在,则进行创建
|
|
|
- return privateCreateUser(mobile, null, null, registerIp, terminal);
|
|
|
+ return privateCreateUser(mobile, null, null, registerIp, terminal, linkId);
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
@Transactional(rollbackFor = Exception.class)
|
|
|
- public MemberUserDO createUser(String mobile,String nickname, String avtar, String registerIp, Integer terminal) {
|
|
|
- return privateCreateUser(mobile, nickname, avtar, registerIp, terminal);
|
|
|
+ public MemberUserDO createUser(String mobile, String nickname, String avtar, String registerIp, Integer terminal, Long linkId) {
|
|
|
+ return privateCreateUser(mobile, nickname, avtar, registerIp, terminal, linkId);
|
|
|
}
|
|
|
|
|
|
private MemberUserDO privateCreateUser(String mobile, String nickname, String avtar,
|
|
|
- String registerIp, Integer terminal) {
|
|
|
+ String registerIp, Integer terminal, Long linkId) {
|
|
|
// 生成密码
|
|
|
String password = IdUtil.fastSimpleUUID();
|
|
|
// 插入用户
|
|
@@ -113,19 +117,30 @@ public class MemberUserServiceImpl implements MemberUserService {
|
|
|
}
|
|
|
memberUserMapper.insert(user);
|
|
|
|
|
|
- // 发送 MQ 消息:创建了会员
|
|
|
- sharePathProducer.sendSharePathCreatMessage(1L,user.getId());
|
|
|
+ // 注册事务同步适配器
|
|
|
+ registerTransactionSynchronization(user.getId(), linkId);
|
|
|
|
|
|
- // 发送 MQ 消息:用户创建
|
|
|
- TransactionSynchronizationManager.registerSynchronization(new TransactionSynchronization() {
|
|
|
+ return user;
|
|
|
+ }
|
|
|
|
|
|
+ private void registerTransactionSynchronization(Long userId, Long linkId) {
|
|
|
+ TransactionSynchronizationManager.registerSynchronization(new TransactionSynchronizationAdapter() {
|
|
|
@Override
|
|
|
public void afterCommit() {
|
|
|
- memberUserProducer.sendUserCreateMessage(user.getId());
|
|
|
+ sharePathProducer.sendSharePathCreatMessage(linkId == null ? 1L : linkId, userId);
|
|
|
+ if (linkId != null) {
|
|
|
+ shareLinkRegisterProducer.sendShareLinkRegisterMessage(linkId, userId);
|
|
|
+ }
|
|
|
}
|
|
|
+ });
|
|
|
|
|
|
+ // 发送 MQ 消息:用户创建
|
|
|
+ TransactionSynchronizationManager.registerSynchronization(new TransactionSynchronization() {
|
|
|
+ @Override
|
|
|
+ public void afterCommit() {
|
|
|
+ memberUserProducer.sendUserCreateMessage(userId);
|
|
|
+ }
|
|
|
});
|
|
|
- return user;
|
|
|
}
|
|
|
|
|
|
@Override
|
|
@@ -232,8 +247,6 @@ public class MemberUserServiceImpl implements MemberUserService {
|
|
|
}
|
|
|
|
|
|
|
|
|
-
|
|
|
-
|
|
|
/**
|
|
|
* 对密码进行加密
|
|
|
*
|