zoujiajian 3 лет назад
Родитель
Сommit
dcaf181900

+ 18 - 5
netflix-service/src/main/java/com/cyksj/service/gzh/factory/EventMsgService.java

@@ -5,16 +5,20 @@ import cn.hutool.core.util.StrUtil;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.cyksj.common.constant.Constant;
 import com.cyksj.common.util.Codec;
+import com.cyksj.config.WeChatConfig;
 import com.cyksj.mapper.UserMapper;
 import com.cyksj.mapper.WxAppMapper;
+import com.cyksj.mapper.WxSyncLogMapper;
 import com.cyksj.mapper.gzh.UserGzhRelationMapper;
 import com.cyksj.model.dto.GzhUnionidUserinfo;
 import com.cyksj.model.dto.MsgEvent;
 import com.cyksj.model.entity.User;
 import com.cyksj.model.entity.UserGzhRelation;
 import com.cyksj.model.entity.WxApp;
+import com.cyksj.model.entity.WxSyncLog;
 import com.cyksj.redis.RedisService;
 import com.cyksj.service.distribute.DistributeService;
+import com.cyksj.service.user.UserService;
 import com.cyksj.service.wechat.WeChatService;
 import lombok.RequiredArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
@@ -45,6 +49,12 @@ public class EventMsgService implements GzhMsgService {
 
 	private final DistributeService distributeService;
 
+	private final UserService userService;
+
+	private final WeChatConfig weChatConfig;
+
+	private final WxSyncLogMapper wxSyncLogMapper;
+
 	@Override
 	public String handleNotify(MsgEvent msgEvent) {
 		try {
@@ -84,12 +94,15 @@ public class EventMsgService implements GzhMsgService {
 		if (StrUtil.isEmpty(openId)) {
 			return false;
 		}
-		//该用户是否存在于用户表里面
-		User user = userMapper.selectOne(Wrappers.lambdaQuery(User.class)
-				.eq(User::getOpenId, openId)
-				.select(User::getId)
-				.last("limit 1"));
+		//迁移公众号之后同步授权后信息
+		//是否是迁移用户
+		WxSyncLog wxSyncLog = wxSyncLogMapper.selectOne(Wrappers.lambdaQuery(WxSyncLog.class)
+				.eq(WxSyncLog::getToAppid, weChatConfig.getAppid())
+				.eq(WxSyncLog::getNewOpenid, openId).last("limit 1"));
 		GzhUnionidUserinfo info = weChatService.getUserInfo2(weChatService.getAccessToken(), openId);
+
+		User user = userService.getSyncUser(info.getOpenid(), info.getUnionid(), wxSyncLog);
+
 		if (user == null) {
 			user = new User();
 			user.setNickname(String.format("%s%s", Constant.DEFAULT_NAME, Codec.DoDigest.custom().setAlgorithm(Codec.DoDigest.Algorithm.MD5).setStringData(RandomUtil.randomString(10)).toHexString().substring(0, 6)))

+ 3 - 0
netflix-service/src/main/java/com/cyksj/service/user/UserService.java

@@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.extension.service.IService;
 import com.cyksj.model.dto.GzhOAuth2UserInfo;
 import com.cyksj.model.dto.UserWhoami;
 import com.cyksj.model.entity.User;
+import com.cyksj.model.entity.WxSyncLog;
 
 /**
  * @author chan
@@ -14,4 +15,6 @@ public interface UserService extends IService<User> {
     User saveAuth(GzhOAuth2UserInfo userinfo, Long sharedId);
 
     UserWhoami whoami(long userId);
+
+    User getSyncUser(String openId, String unionId, WxSyncLog wxSyncLog);
 }

+ 29 - 20
netflix-service/src/main/java/com/cyksj/service/user/impl/UserServiceImpl.java

@@ -46,29 +46,12 @@ public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements Us
         if (StrUtil.isEmpty(unionid)) {
             throw BusinessRuntimeException.getInstance("授权操作异常,请刷新页面");
         }
-        User user;
-        //迁移公众号之后同步授权后信息
-        //是否是迁移用户
         WxSyncLog wxSyncLog = wxSyncLogMapper.selectOne(Wrappers.lambdaQuery(WxSyncLog.class)
                 .eq(WxSyncLog::getToAppid, weChatConfig.getAppid())
                 .eq(WxSyncLog::getNewOpenid, info.getOpenid()).last("limit 1"));
-        if (wxSyncLog != null) {
-            user = this.getOne(Wrappers.lambdaQuery(User.class)
-                    .eq(User::getOpenId, wxSyncLog.getOriOpenid()).last("limit 1"));
-            if (user != null) {
-                user.setOpenId(wxSyncLog.getNewOpenid());
-            } else {
-                // 查询用户是否存在
-                user = Optional.ofNullable(
-                        this.getOne(new LambdaQueryWrapper<User>().eq(User::getUnionid, info.getUnionid())))
-                        .orElseGet(() -> this.getOne(new LambdaQueryWrapper<User>().eq(User::getOpenId, info.getOpenid())));
-            }
-        } else {
-            // 查询用户是否存在
-            user = Optional.ofNullable(
-                    this.getOne(new LambdaQueryWrapper<User>().eq(User::getUnionid, info.getUnionid())))
-                    .orElseGet(() -> this.getOne(new LambdaQueryWrapper<User>().eq(User::getOpenId, info.getOpenid())));
-        }
+
+        User user = getSyncUser(info.getOpenid(), info.getUnionid(), wxSyncLog);
+
         user = Optional.ofNullable(user).orElseGet(() -> new User()
                 .setUnionid(unionid));
         user.setNickname(info.getNickname())
@@ -115,4 +98,30 @@ public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements Us
 
         return userWhoami;
     }
+
+    @Override
+    public User getSyncUser(String openId, String unionId, WxSyncLog wxSyncLog) {
+        User user;
+        //迁移公众号之后同步授权后信息
+        //是否是迁移用户
+        if (wxSyncLog != null) {
+            user = this.getOne(Wrappers.lambdaQuery(User.class)
+                    .ne(User::getUnionid, unionId)
+                    .eq(User::getOpenId, wxSyncLog.getOriOpenid()).last("limit 1"));
+            if (user != null) {
+                user.setOpenId(wxSyncLog.getNewOpenid());
+            } else {
+                // 查询用户是否存在
+                user = Optional.ofNullable(
+                        this.getOne(new LambdaQueryWrapper<User>().eq(User::getUnionid, unionId)))
+                        .orElseGet(() -> this.getOne(new LambdaQueryWrapper<User>().eq(User::getOpenId, openId)));
+            }
+        } else {
+            // 查询用户是否存在
+            user = Optional.ofNullable(
+                    this.getOne(new LambdaQueryWrapper<User>().eq(User::getUnionid, unionId)))
+                    .orElseGet(() -> this.getOne(new LambdaQueryWrapper<User>().eq(User::getOpenId, openId)));
+        }
+        return user;
+    }
 }