Bläddra i källkod

小程序用户登录关联公众号用户信息

skyline 1 år sedan
förälder
incheckning
81b8481444
1 ändrade filer med 25 tillägg och 13 borttagningar
  1. 25 13
      service/src/main/java/com/kym/service/miniapp/impl/UserServiceImpl.java

+ 25 - 13
service/src/main/java/com/kym/service/miniapp/impl/UserServiceImpl.java

@@ -4,6 +4,7 @@ import cn.dev33.satoken.stp.StpUtil;
 import com.baomidou.dynamic.datasource.annotation.DS;
 import com.baomidou.dynamic.datasource.toolkit.DynamicDataSourceContextHolder;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
 import com.github.pagehelper.PageHelper;
 import com.github.yulichang.base.MPJBaseServiceImpl;
 import com.kym.common.R;
@@ -19,23 +20,25 @@ import com.kym.entity.admin.queryParams.CommonQueryParam;
 import com.kym.entity.admin.vo.ActivityVo;
 import com.kym.entity.admin.vo.CustomUserVo;
 import com.kym.entity.common.PageBean;
-import com.kym.entity.miniapp.Account;
-import com.kym.entity.miniapp.Cars;
-import com.kym.entity.miniapp.RefundLog;
-import com.kym.entity.miniapp.User;
+import com.kym.entity.miniapp.*;
 import com.kym.entity.miniapp.queryParams.WxLoginParams;
 import com.kym.entity.miniapp.vo.UserVo;
 import com.kym.entity.wechat.WxPhoneNum;
+import com.kym.mapper.miniapp.MpRelationMapper;
 import com.kym.mapper.miniapp.UserMapper;
 import com.kym.service.admin.ActivityService;
 import com.kym.service.admin.BannerService;
 import com.kym.service.admin.RechargeRightsService;
-import com.kym.service.miniapp.*;
+import com.kym.service.miniapp.AccountService;
+import com.kym.service.miniapp.CarsService;
+import com.kym.service.miniapp.RefundLogService;
+import com.kym.service.miniapp.UserService;
 import lombok.SneakyThrows;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.beans.BeanUtils;
 import org.springframework.context.annotation.Lazy;
+import org.springframework.scheduling.annotation.Async;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
@@ -62,26 +65,24 @@ public class UserServiceImpl extends MPJBaseServiceImpl<UserMapper, User> implem
     private final AccountService accountService;
     private final RefundLogService refundLogService;
     private final CarsService carsService;
-    private final UserRechargeRightsService userRechargeRightsService;
     private final RechargeRightsService rechargeRightsService;
     private final ActivityService activityService;
     private final BannerService bannerService;
 
-    private final UserCouponService userCouponService;
+    private final MpRelationMapper mpRelationMapper;
+
 
     public UserServiceImpl(WxConfig wxConfig, @Lazy AccountService accountService, RefundLogService refundLogService,
-                           CarsService carsService, UserRechargeRightsService userRechargeRightsService,
-                           RechargeRightsService rechargeRightsService, @Lazy ActivityService activityService,
-                           BannerService bannerService, @Lazy UserCouponService userCouponService) {
+                           CarsService carsService, RechargeRightsService rechargeRightsService, @Lazy ActivityService activityService,
+                           BannerService bannerService, MpRelationMapper mpRelationMapper) {
         this.wxConfig = wxConfig;
         this.accountService = accountService;
         this.refundLogService = refundLogService;
         this.carsService = carsService;
-        this.userRechargeRightsService = userRechargeRightsService;
         this.rechargeRightsService = rechargeRightsService;
         this.activityService = activityService;
         this.bannerService = bannerService;
-        this.userCouponService = userCouponService;
+        this.mpRelationMapper = mpRelationMapper;
     }
 
 
@@ -105,7 +106,7 @@ public class UserServiceImpl extends MPJBaseServiceImpl<UserMapper, User> implem
             var user = baseMapper.selectOne(new QueryWrapper<User>().eq("openid", openid));
             if (user != null) {
                 // 登录逻辑
-                if(CommUtil.isNotEmptyAndNull(unionid) && CommUtil.isEmptyOrNull(user.getUnionid())){
+                if (CommUtil.isNotEmptyAndNull(unionid) && CommUtil.isEmptyOrNull(user.getUnionid())) {
                     user.setUnionid(unionid);
                 }
                 return handleLogin(user);
@@ -192,9 +193,20 @@ public class UserServiceImpl extends MPJBaseServiceImpl<UserMapper, User> implem
         user.setLastLoginTime(LocalDateTime.now());
         updateById(user);
         LOGGER.info("用户:{}/{}登录成功,tokenName:{},tokenValue:{}", user.getMobilePhone(), user.getId(), StpUtil.getTokenName(), StpUtil.getTokenValue());
+        updateUnionid();
         return R.success(of("userId", user.getId(), "satoken", StpUtil.getTokenValue()));
     }
 
+    @Async
+    protected void updateUnionid() {
+        var unionid = StpUtil.getSession().getString("unionid");
+        if (CommUtil.isNotEmptyAndNull(unionid)) {
+            // 匹配公众号用户
+            var wrapper = new LambdaUpdateWrapper<MpRelation>().eq(MpRelation::getUnionid, unionid).set(MpRelation::getUserId, StpUtil.getLoginIdAsLong()).set(MpRelation::getOpenid, StpUtil.getSession().getString("openid"));
+            mpRelationMapper.update(null, wrapper);
+        }
+    }
+
 
     @Transactional(rollbackFor = Exception.class)
     @Override