Переглянути джерело

登录注解添加用户校验,用户邀请链接添加合并用户积分密码

wangxy 17 годин тому
батько
коміт
98774d157c

+ 19 - 2
fs-user-app/src/main/java/com/fs/app/controller/CompanyUserController.java

@@ -9,6 +9,7 @@ import com.fs.app.param.FsBindCompanyUserParam;
 import com.fs.app.param.HelpPatientAndAddressParam;
 import com.fs.common.annotation.Log;
 import com.fs.common.annotation.RepeatSubmit;
+import com.fs.common.constant.HttpStatus;
 import com.fs.common.core.domain.R;
 import com.fs.common.core.page.TableDataInfo;
 import com.fs.common.core.redis.RedisCache;
@@ -149,7 +150,7 @@ public class CompanyUserController extends AppBaseController {
         Long currentUserId = Long.parseLong(getUserId());
         FsUser user = fsUserService.selectFsUserByUserId(currentUserId);
         if (user == null) {
-            return R.error("用户不存在");
+            return R.error(HttpStatus.UNAUTHORIZED,"用户不存在");
         }
 
         List<FsUser> usersByPhone = findUsersByPhone(param.getPhone());
@@ -166,7 +167,7 @@ public class CompanyUserController extends AppBaseController {
             if (!user.getUserId().equals(userByPhone.getUserId())) {
                 // 手机号查询出的用户unionId为空合并账号
                 if (StringUtils.isBlank(userByPhone.getUnionId())) {
-                    fsUserService.realDeleteFsUserByUserId(userByPhone.getUserId());
+                    mergeUserFields(user, userByPhone);
                 }
 
                 // 手机号查询出的用户unionId不为空且于登录用户unionId不一致
@@ -235,6 +236,22 @@ public class CompanyUserController extends AppBaseController {
         return encryptedText;
     }
 
+    private void mergeUserFields(FsUser target, FsUser source) {
+        if (StringUtils.isNotEmpty(source.getPassword())) {
+            target.setPassword(source.getPassword());
+        }
+        if (source.getIntegral() != null && source.getIntegral() > 0) {
+            target.setIntegral(source.getIntegral());
+        }
+        if (StringUtils.isNotEmpty(source.getSource())) {
+            target.setSource(source.getSource());
+        }
+        if (StringUtils.isNotEmpty(source.getLoginDevice())) {
+            target.setLoginDevice(source.getLoginDevice());
+        }
+        fsUserService.realDeleteFsUserByUserId(source.getUserId());
+    }
+
 
     @Login
     @ApiOperation("上传声纹")

+ 13 - 1
fs-user-app/src/main/java/com/fs/app/interceptor/AuthorizationInterceptor.java

@@ -6,6 +6,8 @@ import com.fs.app.exception.FSException;
 import com.fs.app.utils.JwtUtils;
 import com.fs.common.core.redis.RedisCache;
 import com.fs.common.utils.StringUtils;
+import com.fs.his.domain.FsUser;
+import com.fs.his.mapper.FsUserMapper;
 import io.jsonwebtoken.Claims;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.http.HttpStatus;
@@ -25,6 +27,8 @@ public class AuthorizationInterceptor extends HandlerInterceptorAdapter {
     private JwtUtils jwtUtils;
     @Autowired
     RedisCache redisCache;
+    @Autowired
+    FsUserMapper fsUserMapper;
     public static final String USER_KEY = "userId";
 
     @Override
@@ -55,13 +59,21 @@ public class AuthorizationInterceptor extends HandlerInterceptorAdapter {
         if(claims == null || jwtUtils.isTokenExpired(claims.getExpiration())){
             throw new FSException(jwtUtils.getHeader() + "失效,请重新登录", HttpStatus.UNAUTHORIZED.value());
         }
+        
         //查询用户的TOKEN是否和REDIS中的一样
 //        String redisToken=redisCache.getCacheObject("token:"+ Long.parseLong(claims.getSubject()));
 //        if(redisToken==null||!redisToken.equals(token)){
 //            throw new FSException(jwtUtils.getHeader() + "失效,请重新登录", HttpStatus.UNAUTHORIZED.value());
 //        }
+
+        Long userId = Long.parseLong(claims.getSubject());
+        FsUser fsUser = fsUserMapper.selectFsUserByUserIdNotDel(userId);
+        if (fsUser == null) {
+            throw new FSException(jwtUtils.getHeader() + "失效,请重新登录", HttpStatus.UNAUTHORIZED.value());
+        }
+
         //设置userId到request里,后续根据userId,获取用户信息
-        request.setAttribute(USER_KEY, Long.parseLong(claims.getSubject()));
+        request.setAttribute(USER_KEY, userId);
 
         return true;
     }