Commit be19cd09 authored by xiaoguang.xu's avatar xiaoguang.xu

修改手机号时,修改微信表中手机号.

parent 539adab6
package cn.quantgroup.xyqb.event; package cn.quantgroup.xyqb.event;
import cn.quantgroup.xyqb.entity.User; import cn.quantgroup.xyqb.entity.User;
import cn.quantgroup.xyqb.model.session.SessionStruct;
import cn.quantgroup.xyqb.model.session.SessionValue;
import cn.quantgroup.xyqb.service.session.ISessionService;
import cn.quantgroup.xyqb.service.user.IUserService; import cn.quantgroup.xyqb.service.user.IUserService;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.ApplicationListener; import org.springframework.context.ApplicationListener;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import java.util.List;
@Slf4j @Slf4j
@Component @Component
public class CacheEvictPhoneNoUpdateEventListener implements ApplicationListener<PhoneNoUpdateEvent> { public class CacheEvictPhoneNoUpdateEventListener implements ApplicationListener<PhoneNoUpdateEvent> {
...@@ -14,12 +19,24 @@ public class CacheEvictPhoneNoUpdateEventListener implements ApplicationListener ...@@ -14,12 +19,24 @@ public class CacheEvictPhoneNoUpdateEventListener implements ApplicationListener
@Autowired @Autowired
private IUserService userService; private IUserService userService;
@Autowired
private ISessionService sessionService;
@Override @Override
public void onApplicationEvent(PhoneNoUpdateEvent event) { public void onApplicationEvent(PhoneNoUpdateEvent event) {
String oldPhoneNo = event.getOldPhoneNo(); String oldPhoneNo = event.getOldPhoneNo();
User user = event.getUser(); User user = event.getUser();
userService.userCacheEvict(user.getUuid(), oldPhoneNo);
//todo session 处理
List<SessionStruct> sessionStructList = sessionService.findByUserId(user.getId());
for (SessionStruct sessionStruct : sessionStructList) {
SessionValue values = sessionStruct.getValues();
User sessionUser = values.getUser();
//修改 session 中的手机号
sessionUser.setPhoneNo(user.getPhoneNo());
values.setUser(sessionUser);
}
sessionService.persistSession(sessionStructList);
userService.userCacheEvict(user.getUuid(), oldPhoneNo);
} }
} }
package cn.quantgroup.xyqb.event; package cn.quantgroup.xyqb.event;
import cn.quantgroup.xyqb.entity.User; import cn.quantgroup.xyqb.entity.User;
import lombok.extern.slf4j.Slf4j; import cn.quantgroup.xyqb.entity.WechatUserInfo;
import cn.quantgroup.xyqb.service.wechat.IWechatService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.ApplicationListener; import org.springframework.context.ApplicationListener;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
/** import java.util.Objects;
* 记录手机号变更情况
*
* @author 徐小光
*/
@Slf4j
@Component @Component
public class RecordPhoneNoUpdateEventListener implements ApplicationListener<PhoneNoUpdateEvent> { public class WechatPhoneNoUpdateEventListener implements ApplicationListener<PhoneNoUpdateEvent> {
@Autowired
private IWechatService wechatService;
@Override @Override
public void onApplicationEvent(PhoneNoUpdateEvent event) { public void onApplicationEvent(PhoneNoUpdateEvent event) {
String oldPhoneNo = event.getOldPhoneNo(); String oldPhoneNo = event.getOldPhoneNo();
User user = event.getUser(); User user = event.getUser();
//todo 表纪录 WechatUserInfo userInfo = wechatService.findWechatUserInfoByPhoneNo(oldPhoneNo);
log.info("userId:{},旧手机号:{},新手机号:{}", user.getId(), oldPhoneNo, user.getPhoneNo()); if (Objects.isNull(userInfo)) {
return;
}
if (Objects.isNull(userInfo.getPhoneNo())) {
return;
}
userInfo.setPhoneNo(user.getPhoneNo());
wechatService.saveWechatUserInfo(userInfo);
} }
} }
...@@ -6,6 +6,8 @@ import cn.quantgroup.xyqb.model.LoginProperties; ...@@ -6,6 +6,8 @@ import cn.quantgroup.xyqb.model.LoginProperties;
import cn.quantgroup.xyqb.model.session.SessionStruct; import cn.quantgroup.xyqb.model.session.SessionStruct;
import cn.quantgroup.xyqb.model.session.SessionValue; import cn.quantgroup.xyqb.model.session.SessionValue;
import java.util.List;
/** /**
* Created by 11 on 2016/12/28. * Created by 11 on 2016/12/28.
*/ */
...@@ -29,4 +31,9 @@ public interface ISessionService { ...@@ -29,4 +31,9 @@ public interface ISessionService {
void deleteByUserId(long userId); void deleteByUserId(long userId);
void deleteUserCatch(User user); void deleteUserCatch(User user);
List<SessionStruct> findByUserId(long userId);
void persistSession(List<SessionStruct> sessionStructList);
} }
...@@ -9,14 +9,12 @@ import cn.quantgroup.xyqb.model.session.SessionStruct; ...@@ -9,14 +9,12 @@ import cn.quantgroup.xyqb.model.session.SessionStruct;
import cn.quantgroup.xyqb.model.session.SessionValue; import cn.quantgroup.xyqb.model.session.SessionValue;
import cn.quantgroup.xyqb.service.session.ISessionService; import cn.quantgroup.xyqb.service.session.ISessionService;
import cn.quantgroup.xyqb.service.session.aspect.UserBtRegisterFill; import cn.quantgroup.xyqb.service.session.aspect.UserBtRegisterFill;
import cn.quantgroup.xyqb.service.user.IUserService;
import cn.quantgroup.xyqb.util.MqUtils; import cn.quantgroup.xyqb.util.MqUtils;
import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSON;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.springframework.cache.annotation.CacheEvict; import org.springframework.cache.annotation.CacheEvict;
import org.springframework.cache.annotation.Caching; import org.springframework.cache.annotation.Caching;
import org.springframework.context.ApplicationEventPublisher;
import org.springframework.data.redis.core.RedisTemplate; import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.util.CollectionUtils; import org.springframework.util.CollectionUtils;
...@@ -35,10 +33,6 @@ public class SessionServiceImpl implements ISessionService { ...@@ -35,10 +33,6 @@ public class SessionServiceImpl implements ISessionService {
@Resource @Resource
private RedisTemplate<String, String> stringRedisTemplate; private RedisTemplate<String, String> stringRedisTemplate;
@Resource
private IUserService userService;
@Resource
private ApplicationEventPublisher applicationEventPublisher;
/** /**
* 更新session * 更新session
...@@ -101,7 +95,8 @@ public class SessionServiceImpl implements ISessionService { ...@@ -101,7 +95,8 @@ public class SessionServiceImpl implements ISessionService {
/** /**
* 每个渠道都有不同的 session * 每个渠道都有不同的 session
* @param userId 用户 ID *
* @param userId 用户 ID
* @param properties baitiao/xyqb/vcc ... + 用户注册来源 * @param properties baitiao/xyqb/vcc ... + 用户注册来源
* @return redisKey. 用来标识这个渠道的用户 Session 是否存在 * @return redisKey. 用来标识这个渠道的用户 Session 是否存在
*/ */
...@@ -227,6 +222,31 @@ public class SessionServiceImpl implements ISessionService { ...@@ -227,6 +222,31 @@ public class SessionServiceImpl implements ISessionService {
} }
@Override
public List<SessionStruct> findByUserId(long userId) {
List<SessionStruct> sessionStructList = new ArrayList<>();
String setKey = getUserSessionSetKey(userId);
Set<String> userIdKeys = stringRedisTemplate.opsForSet().members(setKey);
if (CollectionUtils.isEmpty(userIdKeys)) {
return sessionStructList;
}
for (String userIdKey : userIdKeys) {
String sessionId = stringRedisTemplate.opsForValue().get(userIdKey);
SessionStruct sessionStruct = findSessionBySessionId(sessionId);
sessionStructList.add(sessionStruct);
}
return sessionStructList;
}
@Override
public void persistSession(List<SessionStruct> sessionStructList) {
for (SessionStruct sessionStruct : sessionStructList) {
String sid = sessionStruct.getSid();
SessionValue values = sessionStruct.getValues();
persistSession(sid, values);
}
}
/** /**
* 获取用户的会话缓存Set的Redis-Key * 获取用户的会话缓存Set的Redis-Key
* *
......
...@@ -212,13 +212,13 @@ public class UserServiceImpl implements IUserService { ...@@ -212,13 +212,13 @@ public class UserServiceImpl implements IUserService {
public User modifyPhoneNo(String oldPhoneNo, String newPhoneNo) { public User modifyPhoneNo(String oldPhoneNo, String newPhoneNo) {
//1. 判断新手机号是否存在 //1. 判断新手机号是否存在
User newPhoneUser = userRepository.findByPhoneNo(newPhoneNo); User newPhoneUser = userRepository.findByPhoneNo(newPhoneNo);
if (Objects.isNull(newPhoneUser)) { if (Objects.nonNull(newPhoneUser)) {
//新手机号已存在 //新手机号已存在
return null; return null;
} }
User oldPhoneUser = userRepository.findByPhoneNo(oldPhoneNo); User oldPhoneUser = userRepository.findByPhoneNo(oldPhoneNo);
if (Objects.isNull(oldPhoneUser)) { if (Objects.isNull(oldPhoneUser)) {
//这不是扯了.旧手机号不存在. //这不是扯了.旧手机号不存在.
return null; return null;
} }
//2. 执行修改 //2. 执行修改
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment