فهرست منبع

APP登录授权优化

yjwang 3 هفته پیش
والد
کامیت
69b1ef33ef

+ 1 - 0
fs-service/src/main/java/com/fs/course/service/impl/FsUserCourseVideoServiceImpl.java

@@ -2228,6 +2228,7 @@ public class FsUserCourseVideoServiceImpl implements IFsUserCourseVideoService
             if(fsUser.getQwExtId() != null){
                 qwExternalContact = qwExternalContactMapper.selectOne(new QueryWrapper<QwExternalContact>().eq("id", fsUser.getQwExtId()));
             }
+
             if(fsUser.getCompanyUserId() == null && fsUser.getIsAddQw() == 1 && (qwExternalContact != null && qwExternalContact.getCompanyUserId().equals(param.getCompanyUserId()))){
                 userCompanyUser = userCompanyUserService.bindRelationship(fsUser.getUserId(), courseProject, param.getCompanyId(), param.getCompanyUserId(), 1);
             }else {

+ 3 - 0
fs-service/src/main/java/com/fs/his/mapper/FsUserMapper.java

@@ -124,6 +124,9 @@ public interface FsUserMapper
 
     @Select("select * from fs_user where phone=#{phone} limit 1")
     FsUser selectFsUserByPhoneLimitOne(String phone);
+
+    @Select("select * from fs_user where phone=#{phone} and union_id = #{unionId} limit 1")
+    FsUser selectFsUserByPhoneAndAndUnionIdLimitOne(@Param("phone") String phone,@Param("unionId") String unionId);
     @Select({"<script> " +
             "select distinct f1.*,f2.nick_name tui_name,f2.phone tui_phone FROM company_user_user cuu LEFT JOIN fs_user f1 ON cuu.user_id =f1.user_id left JOIN fs_user f2 ON f1.tui_user_id =f2.user_id"+
             " where f1.is_del=0 "+

+ 20 - 4
fs-user-app/src/main/java/com/fs/app/controller/AppLoginController.java

@@ -308,7 +308,9 @@ public class AppLoginController extends AppBaseController{
             return R.error("账号或密码不能为空");
         }
 
-        FsUser user = findUserByPhone(param.getPhone());
+        Map result = WxUtil.getAccessToken(param.getCode(), openProperties.getAppId(), openProperties.getSecret());
+        String unionid = result.get("unionid").toString();
+        FsUser user = findUserByPhoneAndUnionId(param.getPhone(),unionid);
 
         // 校验用户是否存在及账号状态
         if (user == null) {
@@ -337,9 +339,6 @@ public class AppLoginController extends AppBaseController{
         }
         String phone = param.getPhone();
         String encryptedPhone = encryptPhone(phone);
-
-        // 根据手机号查用户
-        FsUser user = findUserByPhone(phone);
         logger.info("zyp app绑定微信,param: {}", param);
         Map tokenResult = WxUtil.getAccessToken(param.getCode(), openProperties.getAppId(), openProperties.getSecret());
         logger.info("APP的ID信息: {}", openProperties.getAppId());
@@ -348,6 +347,10 @@ public class AppLoginController extends AppBaseController{
         String unionid = String.valueOf(tokenResult.get("unionid"));
         logger.info("APP获取的唯一ID信息: {}",unionid);
         String openid = String.valueOf(tokenResult.get("openid"));
+
+        // 根据手机号查用户
+        FsUser user = findUserByPhoneAndUnionId(phone,unionid);
+
         // 获取微信用户信息
         Map userInfo = WxUtil.getUserInfo(accessToken, openid);
         if (userInfo == null) {
@@ -427,6 +430,19 @@ public class AppLoginController extends AppBaseController{
         return user;
     }
 
+    private FsUser findUserByPhoneAndUnionId(String phone,String unionId) {
+        // 先根据加密手机号查询用户
+        String jiami = (encryptPhone(phone));
+        FsUser user = userMapper.selectFsUserByPhoneAndAndUnionIdLimitOne(jiami,unionId);
+
+        // 如果没有找到用户,再根据手机号查询
+        if (user == null) {
+            user = userMapper.selectFsUserByPhoneAndAndUnionIdLimitOne(phone,unionId);
+
+        }
+        return user;
+    }
+
     @PostMapping("/loginTest")
     public R loginTest(@RequestBody String userId) {
         FsUser user = userMapper.selectFsUserByUserId(Long.parseLong(userId));