Просмотр исходного кода

优化 微信小程序登录bug

java110 лет назад: 4
Родитель
Сommit
8d8d6a8bf2

+ 89 - 0
service-api/src/main/java/com/java110/api/smo/AppAbstractComponentSMO.java

@@ -1,5 +1,6 @@
 package com.java110.api.smo;
 
+import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONObject;
 import com.java110.core.component.AbstractComponentSMO;
 import com.java110.core.context.IPageData;
@@ -9,9 +10,12 @@ import com.java110.utils.constant.ResponseConstant;
 import com.java110.utils.constant.ServiceCodeConstant;
 import com.java110.utils.constant.ServiceConstant;
 import com.java110.utils.exception.SMOException;
+import com.java110.utils.factory.ApplicationContextFactory;
 import com.java110.utils.util.Assert;
+import com.java110.utils.util.BeanConvertUtil;
 import com.java110.utils.util.StringUtil;
 import com.java110.utils.util.UrlParamToJsonUtil;
+import com.java110.vo.ResultVo;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -20,6 +24,7 @@ import org.springframework.web.client.HttpStatusCodeException;
 import org.springframework.web.client.RestTemplate;
 
 import java.util.HashMap;
+import java.util.List;
 import java.util.Map;
 
 public abstract class AppAbstractComponentSMO extends AbstractComponentSMO {
@@ -209,5 +214,89 @@ public abstract class AppAbstractComponentSMO extends AbstractComponentSMO {
         }
     }
 
+    /**
+     * 查询
+     *
+     * @param pd          页面对象
+     * @param param       传入对象
+     * @param serviceCode 服务编码
+     * @param t           返回类
+     * @param <T>
+     * @return
+     */
+    protected <T> List<T> postForApis(IPageData pd, T param, String serviceCode, Class<T> t) {
+
+        String url =  serviceCode;
+
+        ResponseEntity<String> responseEntity = callCenterService(null, pd, JSONObject.toJSONString(param), url, HttpMethod.POST);
+
+        if (responseEntity.getStatusCode() != HttpStatus.OK) {
+            throw new SMOException("调用" + serviceCode + "失败," + responseEntity.getBody());
+        }
+
+        JSONObject resultVo = JSONObject.parseObject(responseEntity.getBody());
+
+        if (ResultVo.CODE_MACHINE_OK != resultVo.getInteger("code")) {
+            throw new SMOException(resultVo.getString("msg"));
+        }
+
+        Object bObj = resultVo.get("data");
+        JSONArray datas = null;
+        if (bObj instanceof JSONObject) {
+            datas = new JSONArray();
+            datas.add(bObj);
+        } else {
+            datas = (JSONArray) bObj;
+        }
+        String jsonStr = JSONObject.toJSONString(datas);
+
+        List<T> list = JSONObject.parseArray(jsonStr, t);
+        return list;
+    }
+
+    /**
+     * 查询
+     *
+     * @param pd          页面对象
+     * @param param       传入对象
+     * @param serviceCode 服务编码
+     * @param t           返回类
+     * @param <T>
+     * @return
+     */
+    public <T> List<T> getForApis(IPageData pd, T param, String serviceCode, Class<T> t) {
+
+        String url =  serviceCode;
+        if (param != null) {
+            url += mapToUrlParam(BeanConvertUtil.beanCovertMap(param));
+        }
+        RestTemplate restTemplate = ApplicationContextFactory.getBean("restTemplate", RestTemplate.class);
+
+        ResponseEntity<String> responseEntity = callCenterService(restTemplate, pd, "", url, HttpMethod.GET);
+
+        if (responseEntity.getStatusCode() != HttpStatus.OK) {
+            throw new SMOException("调用" + serviceCode + "失败," + responseEntity.getBody());
+        }
+
+        JSONObject resultVo = JSONObject.parseObject(responseEntity.getBody());
+
+        if (!"0".equals(resultVo.getString("code"))) {
+            throw new SMOException(resultVo.getString("msg"));
+        }
+
+        Object bObj = resultVo.get("data");
+        JSONArray datas = null;
+        if (bObj instanceof JSONObject) {
+            datas = new JSONArray();
+            datas.add(bObj);
+        } else {
+            datas = (JSONArray) bObj;
+        }
+        String jsonStr = JSONObject.toJSONString(datas);
+
+        List<T> list = JSONObject.parseArray(jsonStr, t);
+        return list;
+    }
+
 
 }

+ 1 - 1
service-api/src/main/java/com/java110/api/smo/login/impl/WxLoginSMOImpl.java

@@ -106,7 +106,7 @@ public class WxLoginSMOImpl extends AppAbstractComponentSMO implements IWxLoginS
         //responseEntity = super.getUserInfoByOpenId(pd, restTemplate, openId);
         OwnerAppUserDto ownerAppUserDto = new OwnerAppUserDto();
         ownerAppUserDto.setOpenId(openId);
-        List<OwnerAppUserDto> ownerAppUserDtos = CallApiServiceFactory.getForApis(pd, ownerAppUserDto, ServiceCodeConstant.LIST_APPUSERBINDINGOWNERS, OwnerAppUserDto.class);
+        List<OwnerAppUserDto> ownerAppUserDtos = super.getForApis(pd, ownerAppUserDto, ServiceCodeConstant.LIST_APPUSERBINDINGOWNERS, OwnerAppUserDto.class);
         JSONObject paramOut = new JSONObject();
         if (ownerAppUserDtos == null || ownerAppUserDtos.size() < 1) {
             //将openId放到redis 缓存,给前段下发临时票据