Browse Source

1、ios登录校验问题

yys 2 days ago
parent
commit
e653315699

+ 4 - 0
fs-service/src/main/java/com/fs/his/config/AppConfig.java

@@ -13,6 +13,10 @@ public class AppConfig {
     private List<FsPackage> fsPackage;
     private Long courseId;
     private Long tongueFlag;
+    /**
+     * 苹果审核开关(true=审核模式,苹果登录可不绑微信直接创建;false=需微信授权校验unionId,默认false)
+     */
+    private Boolean appleCheckFlag;
     private String appId;
     private List<FsUserCourseVideoVO> fsCourse;
     private Integer unbindLimit;

+ 26 - 0
fs-service/src/main/java/com/fs/system/service/impl/SysConfigServiceImpl.java

@@ -135,6 +135,7 @@ public class SysConfigServiceImpl implements ISysConfigService
         if (row > 0)
         {
             redisCache.setCacheObject(getCacheKey(config.getConfigKey()), config.getConfigValue());
+            syncAppleCheckFlag(config);
         }
         return row;
     }
@@ -152,11 +153,36 @@ public class SysConfigServiceImpl implements ISysConfigService
         if (row > 0)
         {
             redisCache.setCacheObject(getCacheKey(config.getConfigKey()), config.getConfigValue());
+            syncAppleCheckFlag(config);
         }
         this.resetConfigCache();
         return row;
     }
 
+    /**
+     * APP设置保存时,同步苹果审核开关到 Redis(appleCheckFlag)
+     */
+    private void syncAppleCheckFlag(SysConfig config)
+    {
+        if (config == null || !"app.config".equals(config.getConfigKey()) || StringUtils.isEmpty(config.getConfigValue()))
+        {
+            return;
+        }
+        try
+        {
+            com.alibaba.fastjson.JSONObject json = com.alibaba.fastjson.JSON.parseObject(config.getConfigValue());
+            if (json == null || !json.containsKey("appleCheckFlag"))
+            {
+                return;
+            }
+            Boolean appleCheckFlag = json.getBoolean("appleCheckFlag");
+            redisCache.setCacheObject("appleCheckFlag", appleCheckFlag != null && appleCheckFlag);
+        }
+        catch (Exception ignored)
+        {
+        }
+    }
+
     /**
      * 批量删除参数信息
      *

+ 27 - 6
fs-user-app/src/main/java/com/fs/app/controller/AppLoginController.java

@@ -26,6 +26,7 @@ import com.fs.course.param.FsCourseLinkMiniParam;
 import com.fs.course.service.IFsUserCourseVideoService;
 import com.fs.course.domain.FsCoursePlaySourceConfig;
 import com.fs.course.service.IFsCoursePlaySourceConfigService;
+import com.fs.his.config.AppConfig;
 import com.fs.his.config.FsSysConfig;
 import com.fs.his.domain.FsUser;
 import com.fs.his.domain.FsUserNewTask;
@@ -39,8 +40,10 @@ import com.fs.im.dto.OpenImResponseDTO;
 import com.fs.im.service.OpenIMService;
 import com.fs.qw.domain.QwUser;
 import com.fs.qw.service.ILuckyBagService;
+import com.fs.system.service.ISysConfigService;
 import com.fs.system.service.ISysDictDataService;
 import com.fs.system.service.ISysDictTypeService;
+import cn.hutool.json.JSONUtil;
 import com.fs.voice.utils.StringUtil;
 import com.fs.watch.domain.WatchDeviceSetup;
 import com.fs.watch.domain.WatchUser;
@@ -90,6 +93,9 @@ public class AppLoginController extends AppBaseController{
     @Autowired
     private RedisCache redisCache;
 
+    @Autowired
+    private ISysConfigService configService;
+
     @Autowired
     private IFsUserCouponService fsUserCouponService;
 
@@ -438,12 +444,8 @@ public class AppLoginController extends AppBaseController{
             // 根据苹果key查询用户
             FsUser user = userMapper.findUserByAppleKey(param.getAppleKey());
             Map<String, Object> map = new HashMap<>();
-            // 因苹果审核问题, 如果开关打开 则创建新用户 ,若开关关闭需要校验 unionId
-            String key="appleCheckFlag";
-            Boolean flag =redisCache.getCacheObject(key);
-            if(flag==null){
-                flag =false; // 默认关闭
-            }
+            // 因苹果审核问题:开关打开则创建新用户;关闭则需校验unionId(微信授权),可在后台APP设置中配置
+            Boolean flag = getAppleCheckFlag();
 
             if (user == null) {
                 if( flag){
@@ -1207,4 +1209,23 @@ public class AppLoginController extends AppBaseController{
         return  openIMService.deleteUserInfo(ownerUserID, friendUserID);
     }
 
+    /**
+     * 苹果审核开关:优先读 app.config,其次 Redis;默认 false(需微信授权)
+     */
+    private Boolean getAppleCheckFlag() {
+        try {
+            String appJson = configService.selectConfigByKey("app.config");
+            if (StringUtils.isNotEmpty(appJson)) {
+                AppConfig appConfig = JSONUtil.toBean(appJson, AppConfig.class);
+                if (appConfig != null && appConfig.getAppleCheckFlag() != null) {
+                    return appConfig.getAppleCheckFlag();
+                }
+            }
+        } catch (Exception e) {
+            logger.warn("读取app.config中appleCheckFlag失败:{}", e.getMessage());
+        }
+        Boolean flag = redisCache.getCacheObject("appleCheckFlag");
+        return flag != null ? flag : false;
+    }
+
 }