zoujiajian 3 år sedan
förälder
incheckning
f14704426c

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

@@ -22,4 +22,9 @@ public interface UserService extends IService<User> {
      * 发放添加固定客服渠道优惠券
      */
     void sendFixedCustomerCoupon(Long popularizeId, Long userId, String unionId);
+
+    /**
+     * 获取多用户关联后 微信的用户信息
+     */
+    User getWechatUserByRelation(Long userId);
 }

+ 28 - 1
netflix-service/src/main/java/com/cyksj/service/user/impl/UserServiceImpl.java

@@ -9,10 +9,12 @@ import com.cyksj.common.constant.Constant;
 import com.cyksj.common.exception.BusinessRuntimeException;
 import com.cyksj.common.task.GlobalThreadPoolTaskExecutor;
 import com.cyksj.config.WeChatConfig;
+import com.cyksj.enums.GatewayApiCode;
 import com.cyksj.mapper.UserMapper;
 import com.cyksj.mapper.UserTransferLogMapper;
 import com.cyksj.mapper.WxSyncLogMapper;
 import com.cyksj.mapper.channel.ChannelPopularizeMapper;
+import com.cyksj.mapper.market.task.UserBindPhoneMapper;
 import com.cyksj.model.dto.GzhOAuth2UserInfo;
 import com.cyksj.model.dto.UserWhoami;
 import com.cyksj.model.entity.*;
@@ -55,6 +57,8 @@ public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements Us
 
 	private final RedisService redisService;
 
+	private final UserBindPhoneMapper userBindPhoneMapper;
+
 	private static final GlobalThreadPoolTaskExecutor TASK_POOL = GlobalThreadPoolTaskExecutor.getInstance();
 
 	@Override
@@ -125,7 +129,7 @@ public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements Us
 
     @Override
     public UserWhoami whoami(long userId) {
-        User user = this.getById(userId);
+        User user = this.getWechatUserByRelation(userId);
         Assert.notNull(user,"业务处理失败,请联系客服");
         UserWhoami userWhoami = new UserWhoami();
 
@@ -197,4 +201,27 @@ public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements Us
 			Constant.FIXED_CUSTOMER_COUPON_IDS.forEach(couponId -> couponCommonService.sendCouponToUser(userId, couponId, 0l, 0l, 0l, CouponUser.Channel.wxCorp));
 		}
 	}
+
+	@Override
+	public User getWechatUserByRelation(Long userId) {
+		User user = this.getById(userId);
+		if (user == null) {
+			throw BusinessRuntimeException.getGatewayApiCode(GatewayApiCode.CMS_TOKEN_VALID);
+		}
+		if (StrUtil.isNotBlank(user.getOpenId())) {
+			return user;
+		}
+		String phone = user.getPhone();
+		String email = user.getEmail();
+		//微信绑定手机号、邮箱
+		UserBindPhone userBindPhone = userBindPhoneMapper.selectOne(Wrappers.lambdaQuery(UserBindPhone.class)
+				.eq(StrUtil.isNotEmpty(phone), UserBindPhone::getPhone, phone)
+				.or()
+				.eq(StrUtil.isNotEmpty(email), UserBindPhone::getEmail, email).last("limit 1"));
+		if (userBindPhone == null) {
+			return user;
+		}
+		user = this.getById(userBindPhone.getUserId());
+		return user;
+	}
 }

+ 2 - 0
netflix-web/src/main/java/com/cyksj/web/controller/user/AuthorizationController.java

@@ -411,6 +411,8 @@ public class AuthorizationController {
                 distributeService.saveDistributionInvitation(sharedId, user.getId());
             }
         }
+        //获取微信绑定的用户信息
+        user = userService.getWechatUserByRelation(user.getId());
         //写回登陆信息
         StpUserUtil.login(user.getId());
         LoginPhoneRep loginPhoneRep = new LoginPhoneRep(StpUserUtil.getTokenValue(), user.getId(), user.getNickname(), user.getHeadimgurl());