Commit d272bb74 authored by killer's avatar killer

销户

parent 58dbc884
......@@ -12,7 +12,6 @@ import static org.springframework.transaction.annotation.Propagation.MANDATORY;
/**
* Created by 11 on 2017/1/18.
* modify by djh 20200527 http://confluence.quantgroup.cn/pages/viewpage.action?pageId=30657427
*
*/
public interface IWeChatUserRepository extends JpaRepository<WechatUserInfo, Long> {
WechatUserInfo findByOpenIdAndAppName(String openId, String appName);
......@@ -37,6 +36,17 @@ public interface IWeChatUserRepository extends JpaRepository<WechatUserInfo, Lon
@Query(value = "update wechat_userinfo set user_id=null,phone_no='*' where user_id=?1 and app_name=?2", nativeQuery = true)
int dissociateByUserIdAndAppName(Long userId, String appName);
/**
* 解除商城用户与小程序和公众号关联关系
*
* @param userId 用户id
* @return 结果
*/
@Transactional(rollbackFor = Exception.class)
@Modifying
@Query(value = "update wechat_userinfo set user_id=null,phone_no='*' where user_id=?1 and app_name in ('xyqb', 'wuxi')", nativeQuery = true)
int forbiddenXyqbAndWuxiUserByUserId(Long userId);
/**
* 关联用户
*
......
......@@ -549,6 +549,6 @@ public class UserServiceImpl implements IUserService, IBaseController {
/* 清空缓存 */
sessionService.deleteUserCatch(user);
/* 禁用微信 */
wechatService.forbiddenUserWeChat(user.getId());
wechatService.forbiddenXyqbAndWuxiUserByUserId(user.getId());
}
}
......@@ -35,7 +35,16 @@ public interface IWechatService {
* @return
*/
WechatUserInfo queryByUserId(Long userId);
WechatUserInfo queryByUserId(Long userId,String appName);
WechatUserInfo queryByUserId(Long userId, String appName);
int forbiddenUserWeChat(Long userId);
/**
* 通过userId解除商城用户与小程序和公众号关联关系
*
* @param userId 用户id
* @return 禁用结果
*/
int forbiddenXyqbAndWuxiUserByUserId(Long userId);
}
......@@ -117,20 +117,20 @@ public class WechatServiceImpl implements IWechatService {
@Override
public WechatUserInfo findWechatUserInfoFromDb(String openId) {
return weChatUserRepository.findByOpenIdAndAppName(openId,"xyqb");
return weChatUserRepository.findByOpenIdAndAppName(openId, "xyqb");
}
@Override
@Transactional(rollbackFor = Exception.class)
public WechatUserInfo saveWechatUserInfo(WechatUserInfo userInfo) {
log.info("微信信息保存开始:{}",JSON.toJSONString(userInfo));
log.info("微信信息保存开始:{}", JSON.toJSONString(userInfo));
if (Objects.isNull(userInfo) || Objects.isNull(userInfo.getOpenId())) {
return null;
}
long count = weChatUserRepository.countByOpenIdAndAppName(userInfo.getOpenId(),"xyqb");
long count = weChatUserRepository.countByOpenIdAndAppName(userInfo.getOpenId(), "xyqb");
if (count > 0) {
//注意,这里会抛异常(5000/total),WeChatController中已捕获处理
return weChatUserRepository.findByOpenIdAndAppName(userInfo.getOpenId(),"xyqb");
return weChatUserRepository.findByOpenIdAndAppName(userInfo.getOpenId(), "xyqb");
}
if (null == userInfo.getPhoneNo()) {
userInfo.setPhoneNo("");
......@@ -151,9 +151,9 @@ public class WechatServiceImpl implements IWechatService {
userInfo = userInfo.convertEmoji();
WechatUserInfo wechatUserInfo = weChatUserRepository.save(userInfo);
WechatEventMsg wechatEventMsg = WechatEventMsg.builder()
.userId(wechatUserInfo.getUserId())
.openId(wechatUserInfo.getOpenId())
.build();
.userId(wechatUserInfo.getUserId())
.openId(wechatUserInfo.getOpenId())
.build();
applicationEventPublisher.publishEvent(new WechatBindEvent(this, wechatEventMsg));
return wechatUserInfo;
}
......@@ -166,27 +166,27 @@ public class WechatServiceImpl implements IWechatService {
return 0;
}
// Old - 当前openId的WechatUserInfo
WechatUserInfo wechatUserInfo = weChatUserRepository.findByOpenIdAndAppName(openId,"xyqb");
WechatUserInfo wechatUserInfo = weChatUserRepository.findByOpenIdAndAppName(openId, "xyqb");
if (Objects.nonNull(wechatUserInfo) && Objects.equals(userId, wechatUserInfo.getUserId()) && Objects.equals(openId, wechatUserInfo.getOpenId())) {
log.info("微信关联成功:重复关联:跳过:[service]:userId:{},phoneNo:{},openId:{}", userId, phoneNo, openId);
return 1;
}
// 强制解除关联
int dissociate = weChatUserRepository.dissociateUser(openId, userId,"xyqb");
int dissociate = weChatUserRepository.dissociateUser(openId, userId, "xyqb");
if (dissociate < 1) {
log.error("微信关联失败:解绑条数<1:[service]:userId:{},phoneNo:{},openId:{}", userId, phoneNo, openId);
throw new WechatRelateUserException("微信关联失败");
}
int relate = weChatUserRepository.relateUser(userId, Optional.ofNullable(phoneNo).orElse(""), openId,"xyqb");
int relate = weChatUserRepository.relateUser(userId, Optional.ofNullable(phoneNo).orElse(""), openId, "xyqb");
if (relate < 1) {
log.error("微信关联失败:绑定条数<1:[service]:userId:{},phoneNo:{},openId:{}", userId, phoneNo, openId);
throw new WechatRelateUserException("微信关联失败");
}
WechatEventMsg wechatEventMsg = WechatEventMsg.builder()
.userId(userId)
.openId(openId)
.build();
applicationEventPublisher.publishEvent(new WechatBindEvent(this,wechatEventMsg));
.userId(userId)
.openId(openId)
.build();
applicationEventPublisher.publishEvent(new WechatBindEvent(this, wechatEventMsg));
// Todo : 如果当前openId已关联其他用户,则解绑成功后要注销其登录session -- 考虑后暂时不执行,影响太大
log.info("微信关联成功:[service]:userId:{},phoneNo:{},openId:{},dissociate:{},relate:{},Old-WechatUserInfo:{}", userId, phoneNo, openId, dissociate, relate, wechatUserInfo);
return relate;
......@@ -197,7 +197,7 @@ public class WechatServiceImpl implements IWechatService {
if (!ValidationUtil.validatePhoneNo(phoneNo)) {
return null;
}
return weChatUserRepository.findByPhoneNoAndAppName(phoneNo,"xyqb");
return weChatUserRepository.findByPhoneNoAndAppName(phoneNo, "xyqb");
}
private String getTokenFromWechatServer(String code) {
......@@ -222,30 +222,33 @@ public class WechatServiceImpl implements IWechatService {
* @param userId - 用户标识
* @return
* @TODO 2021-10-14 修改 findByUserIdAndAppName 为 findFirstByUserIdAndAppNameOrderByCreatedAtDesc, 原因是存在有多个数据情况
*
*/
@Override
public WechatUserInfo queryByUserId(Long userId) {
return weChatUserRepository.findFirstByUserIdAndAppNameOrderByCreatedAtDesc(userId,"xyqb");
return weChatUserRepository.findFirstByUserIdAndAppNameOrderByCreatedAtDesc(userId, "xyqb");
}
/**
*
* @param userId
* @param appName
* @return
* @TODO 2021-10-14 修改 findByUserIdAndAppName 为 findFirstByUserIdAndAppNameOrderByCreatedAtDesc, 原因是存在有多个数据情况
*/
public WechatUserInfo queryByUserId(Long userId,String appName){
if(appName==null||"".equals(appName.trim())){
public WechatUserInfo queryByUserId(Long userId, String appName) {
if (appName == null || "".equals(appName.trim())) {
appName = "xyqb";
}
return weChatUserRepository.findFirstByUserIdAndAppNameOrderByCreatedAtDesc(userId,appName);
return weChatUserRepository.findFirstByUserIdAndAppNameOrderByCreatedAtDesc(userId, appName);
}
@Override
public int forbiddenUserWeChat(Long userId) {
return weChatUserRepository.dissociateByUserIdAndAppName(userId,"xyqb");
return weChatUserRepository.dissociateByUserIdAndAppName(userId, "xyqb");
}
@Override
public int forbiddenXyqbAndWuxiUserByUserId(Long userId) {
return weChatUserRepository.forbiddenXyqbAndWuxiUserByUserId(userId);
}
}
This diff is collapsed.
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