Преглед на файлове

商城小程序多小程序登录异常问题

yjwang преди 3 седмици
родител
ревизия
f909d5ff97

+ 29 - 0
fs-service/src/main/java/com/fs/his/utils/ConfigUtil.java

@@ -70,4 +70,33 @@ public class ConfigUtil {
     }
 
 
+    public JSONObject generateConfigMiniByKey(String key, String appId) {
+
+        SysConfig sysConfig = sysConfigMapper.selectConfigByConfigKey(key);
+        if (sysConfig == null) {
+            throw new RuntimeException("未找到key为[" + key + "]的配置");
+        }
+
+        String configValue = sysConfig.getConfigValue();
+        if (configValue == null || configValue.trim().isEmpty()) {
+            throw new RuntimeException("key为[" + key + "]的配置值为空");
+        }
+
+        if (configValue.trim().startsWith("[")) {
+            JSONArray array = JSON.parseArray(configValue);
+
+            return array.stream()
+                    .map(obj -> (JSONObject) obj)
+                    .filter(json -> appId.equals(json.getString("appid")))
+                    .findFirst()
+                    .orElseThrow(() -> new RuntimeException("未找到与appId[" + appId + "]匹配的配置"));
+        }
+
+        JSONObject jsonObject = JSONObject.parseObject(configValue);
+        if (!appId.equals(jsonObject.getString("appId"))) {
+            throw new RuntimeException("配置的appId与当前appId[" + appId + "]不匹配");
+        }
+        return jsonObject;
+    }
+
 }

+ 2 - 2
fs-service/src/main/java/com/fs/hisStore/param/LoginMpWxParam.java

@@ -23,6 +23,6 @@ public class LoginMpWxParam implements Serializable {
     private String signature;
 
     private String userCode;
-
-
+    //小程序APPID
+    private String appId;
 }

+ 2 - 1
fs-user-app/src/main/java/com/fs/app/controller/store/WxUserScrmController.java

@@ -260,8 +260,9 @@ public class WxUserScrmController extends AppBaseController {
         if (StringUtils.isBlank(param.getCode())) {
             return R.error("code不存在");
         }
+
         final WxMaService wxService = WxMaConfiguration.getMaService(
-                configUtil.generateConfigByKey(SysConfigEnum.COURSE_MA_CONFIG.getKey()).getString("appid")
+                configUtil.generateConfigMiniByKey(SysConfigEnum.COURSE_MA_CONFIG.getKey(),param.getAppId()).getString("appid")
         );
         try {
             WxMaJscode2SessionResult session = wxService.getUserService().getSessionInfo(param.getCode());