Selaa lähdekoodia

用户登陆deviceId空值处理

hidewnd 1 kuukausi sitten
vanhempi
commit
9ffcb80395

+ 12 - 0
yt-question/yt-question-service/src/main/java/com/ytpm/question/controller/WxController.java

@@ -5,6 +5,7 @@ import cn.hutool.core.util.IdUtil;
 import cn.hutool.core.util.StrUtil;
 import cn.hutool.http.HttpUtil;
 import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONObject;
 import com.ytpm.app.enums.AppTypeEnums;
 import com.ytpm.app.enums.LoginType;
 import com.ytpm.app.model.YtAppDefaultConfig;
@@ -59,6 +60,17 @@ public class WxController {
     @ApiOperation("微信登录")
     @Transactional
     public Result<YtDyzUser> wxLogin(@RequestBody WxLoginParam param, HttpServletRequest request) {
+        if (StrUtil.isEmpty(param.getDeviceId())) {
+            log.warn("[wx login validate]deviceId is empty!");
+            // 尝试从phoneJson中获取
+            if (StrUtil.isNotEmpty(param.getPhoneJson())) {
+                JSONObject phoneJson = JSONObject.parseObject(param.getPhoneJson());
+                if (phoneJson.get("device_basic") != null) {
+                    String deviveId = phoneJson.getJSONObject("device_basic").getString("device_id");
+                    param.setDeviceId(deviveId);
+                }
+            }
+        }
         //根据应用获取配置调用微信接口登录
         WxDefaultConfig defaultConfig = appUserMapper.getDefaultConfig(param.getAppType());
         if (Objects.isNull(defaultConfig)) {

+ 14 - 0
yt-question/yt-question-service/src/main/java/com/ytpm/question/service/impl/VisitorLoginServiceImpl.java

@@ -5,6 +5,7 @@ import cn.hutool.core.collection.CollUtil;
 import cn.hutool.core.util.IdUtil;
 import cn.hutool.core.util.RandomUtil;
 import cn.hutool.core.util.StrUtil;
+import com.alibaba.fastjson.JSONObject;
 import com.ytpm.agent.enums.AdRecordEnum;
 import com.ytpm.agent.enums.UserStatusEnum;
 import com.ytpm.app.enums.LoginType;
@@ -95,7 +96,20 @@ public class VisitorLoginServiceImpl extends AbstractLoginService {
 
     @Override
     protected void validateParams(LoginParam loginParam, HttpServletRequest request) {
+        // deviceId空值处理
+        if (StrUtil.isEmpty(loginParam.getDeviceId())) {
+            log.warn("[visitor login validate]deviceId is empty!");
+            // 尝试从phoneJson中获取
+            if (StrUtil.isNotEmpty(loginParam.getPhoneJson())) {
+                JSONObject phoneJson = JSONObject.parseObject(loginParam.getPhoneJson());
+                if (phoneJson.get("device_basic") != null) {
+                    String deviveId = phoneJson.getJSONObject("device_basic").getString("device_id");
+                    loginParam.setDeviceId(deviveId);
+                }
+            }
+        }
         if (StrUtil.isNotEmpty(loginParam.getRequestId())) {
+            log.info("[visitor login validate]requestId check...");
             // 游客登陆幂等校验
             String redisKey = StrUtil.format("visitor:requestId:{}:{}:{}", loginParam.getDitchId(),
                     loginParam.getAppType(), loginParam.getDeviceId());