Browse Source

降低 front 和api 交互难度

java110 5 years ago
parent
commit
9bfac95538

+ 47 - 0
java110-bean/src/main/java/com/java110/dto/owner/OwnerAppUserDto.java

@@ -37,10 +37,17 @@ public class OwnerAppUserDto extends PageDto implements Serializable {
     private String userId;
     private String appType;
     private String[] userIds;
+    private String oldAppUserId;
 
 
     private String[] states;
 
+    private String areaCode;
+    private String areaName;
+    private String parentAreaCode;
+    private String parentAreaName;
+
+
 
     private Date createTime;
 
@@ -191,4 +198,44 @@ public class OwnerAppUserDto extends PageDto implements Serializable {
     public void setAppType(String appType) {
         this.appType = appType;
     }
+
+    public String getAreaCode() {
+        return areaCode;
+    }
+
+    public void setAreaCode(String areaCode) {
+        this.areaCode = areaCode;
+    }
+
+    public String getAreaName() {
+        return areaName;
+    }
+
+    public void setAreaName(String areaName) {
+        this.areaName = areaName;
+    }
+
+    public String getParentAreaCode() {
+        return parentAreaCode;
+    }
+
+    public void setParentAreaCode(String parentAreaCode) {
+        this.parentAreaCode = parentAreaCode;
+    }
+
+    public String getParentAreaName() {
+        return parentAreaName;
+    }
+
+    public void setParentAreaName(String parentAreaName) {
+        this.parentAreaName = parentAreaName;
+    }
+
+    public String getOldAppUserId() {
+        return oldAppUserId;
+    }
+
+    public void setOldAppUserId(String oldAppUserId) {
+        this.oldAppUserId = oldAppUserId;
+    }
 }

+ 18 - 1
java110-bean/src/main/java/com/java110/vo/ResultVo.java

@@ -19,7 +19,7 @@ public class ResultVo implements Serializable {
 
     public static final int CODE_ERROR = 404;// 未知异常
 
-    public static final int CODE_OK = 200; // 成功
+    public static final int CODE_OK = 0; // 成功
 
     public static final int CODE_MACHINE_OK = 0; // 成功
 
@@ -37,6 +37,9 @@ public class ResultVo implements Serializable {
 
     public static final String MSG_UNAUTHORIZED = "认证失败"; //认证失败
 
+    public static final int DEFAULT_RECORD = 1;
+    public static final int DEFAULT_TOTAL = 1;
+
     // 分页页数
     private int page;
     // 行数
@@ -154,6 +157,19 @@ public class ResultVo implements Serializable {
         return JSONObject.toJSONString(this);
     }
 
+
+    /**
+     * 创建ResponseEntity对象
+     *
+     * @param data 数据对象
+     * @return
+     */
+    public static ResponseEntity<String> createResponseEntity(Object data) {
+        ResultVo resultVo = new ResultVo(DEFAULT_RECORD, DEFAULT_TOTAL, data);
+        ResponseEntity<String> responseEntity = new ResponseEntity<String>(resultVo.toString(), HttpStatus.OK);
+        return responseEntity;
+    }
+
     /**
      * 创建ResponseEntity对象
      *
@@ -170,6 +186,7 @@ public class ResultVo implements Serializable {
 
     /**
      * 页面跳转
+     *
      * @param url
      * @return
      */

+ 29 - 0
java110-core/src/main/java/com/java110/core/base/smo/BaseServiceSMO.java

@@ -9,6 +9,7 @@ import com.java110.core.base.AppBase;
 import com.java110.core.context.AppContext;
 import com.java110.core.context.IPageData;
 import com.java110.core.smo.code.IPrimaryKeyInnerServiceSMO;
+import org.apache.commons.lang3.StringUtils;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.http.HttpEntity;
@@ -19,6 +20,8 @@ import org.springframework.http.ResponseEntity;
 import org.springframework.web.client.HttpStatusCodeException;
 import org.springframework.web.client.RestTemplate;
 
+import java.util.Map;
+
 /**
  * 所有服务端的基类
  * 1、报文分装
@@ -71,4 +74,30 @@ public class BaseServiceSMO extends AppBase {
     }
 
 
+    /**
+     * map 参数转 url get 参数 非空值转为get参数 空值忽略
+     *
+     * @param info map数据
+     * @return url get 参数 带?
+     */
+    protected String mapToUrlParam(Map info) {
+        String urlParam = "";
+        if (info == null || info.isEmpty()) {
+            return urlParam;
+        }
+
+        urlParam += "?";
+
+        for (Object key : info.keySet()) {
+            if (StringUtils.isEmpty(info.get(key) + "")) {
+                continue;
+            }
+
+            urlParam += (key + "=" + info.get(key) + "&");
+        }
+
+        urlParam = urlParam.endsWith("&") ? urlParam.substring(0, urlParam.length() - 1) : urlParam;
+
+        return urlParam;
+    }
 }

+ 17 - 0
java110-core/src/main/java/com/java110/core/base/smo/front/AbstractFrontServiceSMO.java

@@ -0,0 +1,17 @@
+package com.java110.core.base.smo.front;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+/**
+ * @ClassName AbstrateBaseFrontServcieSMO
+ * @Description TODO
+ * @Author wuxw
+ * @Date 2020/6/15 21:41
+ * @Version 1.0
+ * add by wuxw 2020/6/15
+ **/
+public abstract class AbstractFrontServiceSMO extends BaseFrontServiceSMO {
+    private static Logger logger = LoggerFactory.getLogger(AbstractFrontServiceSMO.class);
+
+}

+ 157 - 0
java110-core/src/main/java/com/java110/core/base/smo/front/BaseFrontServiceSMO.java

@@ -0,0 +1,157 @@
+package com.java110.core.base.smo.front;
+
+import com.alibaba.fastjson.JSONArray;
+import com.alibaba.fastjson.JSONObject;
+import com.java110.core.base.smo.BaseServiceSMO;
+import com.java110.core.context.IPageData;
+import com.java110.utils.constant.ServiceConstant;
+import com.java110.utils.exception.SMOException;
+import com.java110.utils.util.BeanConvertUtil;
+import com.java110.vo.ResultVo;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.http.HttpMethod;
+import org.springframework.http.HttpStatus;
+import org.springframework.http.ResponseEntity;
+import org.springframework.web.client.RestTemplate;
+
+import java.util.List;
+
+/**
+ * @ClassName BaseFrontServiceSMO
+ * @Description TODO
+ * @Author wuxw
+ * @Date 2020/6/15 21:22
+ * @Version 1.0
+ * add by wuxw 2020/6/15
+ **/
+public class BaseFrontServiceSMO extends BaseServiceSMO {
+
+    private static final String URL_API = ServiceConstant.SERVICE_API_URL + "/api/";
+    //日志
+    private static Logger logger = LoggerFactory.getLogger(BaseFrontServiceSMO.class);
+
+    @Autowired
+    private RestTemplate restTemplate;
+
+
+    /**
+     * 查询
+     *
+     * @param pd          页面对象
+     * @param param       传入对象
+     * @param serviceCode 服务编码
+     * @param t           返回类
+     * @param <T>
+     * @return
+     */
+    protected <T> T getForApi(IPageData pd, T param, String serviceCode, Class<T> t) {
+
+        List<T> list = getForApis(pd, param, serviceCode, t);
+        if (list != null && list.size() > 0) {
+            return list.get(0);
+        }
+        return null;
+    }
+
+    /**
+     * 查询
+     *
+     * @param pd          页面对象
+     * @param param       传入对象
+     * @param serviceCode 服务编码
+     * @param t           返回类
+     * @param <T>
+     * @return
+     */
+    protected <T> T postForApi(IPageData pd, T param, String serviceCode, Class<T> t) {
+        return postForApi(pd, param, serviceCode, t);
+    }
+
+    /**
+     * 查询
+     *
+     * @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 = URL_API;
+
+
+        ResponseEntity<String> responseEntity = callCenterService(restTemplate, 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
+     */
+    protected <T> List<T> getForApis(IPageData pd, T param, String serviceCode, Class<T> t) {
+
+        String url = URL_API;
+        if (param != null) {
+            url += mapToUrlParam(BeanConvertUtil.beanCovertMap(param));
+        }
+
+        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;
+    }
+
+
+}

+ 0 - 25
java110-core/src/main/java/com/java110/core/component/BaseComponentSMO.java

@@ -222,32 +222,7 @@ public class BaseComponentSMO extends BaseServiceSMO {
 
     }
 
-    /**
-     * map 参数转 url get 参数 非空值转为get参数 空值忽略
-     *
-     * @param info map数据
-     * @return url get 参数 带?
-     */
-    protected String mapToUrlParam(Map info) {
-        String urlParam = "";
-        if (info == null || info.isEmpty()) {
-            return urlParam;
-        }
-
-        urlParam += "?";
 
-        for (Object key : info.keySet()) {
-            if (StringUtils.isEmpty(info.get(key) + "")) {
-                continue;
-            }
-
-            urlParam += (key + "=" + info.get(key) + "&");
-        }
-
-        urlParam = urlParam.endsWith("&") ? urlParam.substring(0, urlParam.length() - 1) : urlParam;
-
-        return urlParam;
-    }
 
 
     /**

+ 9 - 0
java110-utils/src/main/java/com/java110/utils/exception/SMOException.java

@@ -28,6 +28,15 @@ public class SMOException extends RuntimeException {
         this.result = result;
     }
 
+    /**
+     * 构造方法
+     * @param msg  错误消息
+     */
+    public SMOException(String msg) {
+        super(msg);
+        this.result = new Result(1999, msg);
+    }
+
     /**
      * 构造方法
      * @param code 返回码

+ 19 - 27
service-api/src/main/java/com/java110/api/listener/owner/ListAppUserBindingOwnersListener.java

@@ -12,6 +12,7 @@ import com.java110.dto.community.CommunityDto;
 import com.java110.dto.owner.OwnerAppUserDto;
 import com.java110.utils.constant.ServiceCodeConstant;
 import com.java110.utils.util.BeanConvertUtil;
+import com.java110.vo.ResultVo;
 import com.java110.vo.api.auditAppUserBindingOwner.ApiAuditAppUserBindingOwnerDataVo;
 import com.java110.vo.api.auditAppUserBindingOwner.ApiAuditAppUserBindingOwnerVo;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -95,44 +96,35 @@ public class ListAppUserBindingOwnersListener extends AbstractServiceApiListener
 
         int count = ownerAppUserInnerServiceSMOImpl.queryOwnerAppUsersCount(ownerAppUserDto);
 
-        List<ApiAuditAppUserBindingOwnerDataVo> auditAppUserBindingOwners = null;
 
+        List<OwnerAppUserDto> ownerAppUserDtos = null;
         if (count > 0) {
-            auditAppUserBindingOwners = BeanConvertUtil.covertBeanList(ownerAppUserInnerServiceSMOImpl.queryOwnerAppUsers(ownerAppUserDto), ApiAuditAppUserBindingOwnerDataVo.class);
-            refreshCommunityArea(auditAppUserBindingOwners);
+            ownerAppUserDtos = ownerAppUserInnerServiceSMOImpl.queryOwnerAppUsers(ownerAppUserDto);
+            refreshCommunityArea(ownerAppUserDtos);
         } else {
-            auditAppUserBindingOwners = new ArrayList<>();
+            ownerAppUserDtos = new ArrayList<>();
         }
-
-        ApiAuditAppUserBindingOwnerVo apiAuditAppUserBindingOwnerVo = new ApiAuditAppUserBindingOwnerVo();
-
-        apiAuditAppUserBindingOwnerVo.setTotal(count);
-        apiAuditAppUserBindingOwnerVo.setRecords((int) Math.ceil((double) count / (double) reqJson.getInteger("row")));
-        apiAuditAppUserBindingOwnerVo.setAuditAppUserBindingOwners(auditAppUserBindingOwners);
-
-        ResponseEntity<String> responseEntity = new ResponseEntity<String>(JSONObject.toJSONString(apiAuditAppUserBindingOwnerVo), HttpStatus.OK);
-
-        context.setResponseEntity(responseEntity);
+        context.setResponseEntity(ResultVo.createResponseEntity((int) Math.ceil((double) count / (double) reqJson.getInteger("row")),count,ownerAppUserDtos));
 
     }
 
     /**
      * 刷入小区地区
      *
-     * @param auditAppUserBindingOwners
+     * @param ownerAppUserDtos
      */
-    private void refreshCommunityArea(List<ApiAuditAppUserBindingOwnerDataVo> auditAppUserBindingOwners) {
+    private void refreshCommunityArea(List<OwnerAppUserDto> ownerAppUserDtos) {
         CommunityDto communityDto = new CommunityDto();
-        communityDto.setCommunityIds(getCommunityIds(auditAppUserBindingOwners));
+        communityDto.setCommunityIds(getCommunityIds(ownerAppUserDtos));
         List<CommunityDto> communityDtos = communityInnerServiceSMOImpl.queryCommunitys(communityDto);
 
         for (CommunityDto tmpCommunityDto : communityDtos) {
-            for (ApiAuditAppUserBindingOwnerDataVo apiAuditAppUserBindingOwnerDataVo : auditAppUserBindingOwners) {
-                if (apiAuditAppUserBindingOwnerDataVo.getCommunityId().equals(tmpCommunityDto.getCommunityId())) {
-                    apiAuditAppUserBindingOwnerDataVo.setAreaCode(tmpCommunityDto.getAreaCode());
-                    apiAuditAppUserBindingOwnerDataVo.setAreaName(tmpCommunityDto.getAreaName());
-                    apiAuditAppUserBindingOwnerDataVo.setParentAreaCode(tmpCommunityDto.getParentAreaCode());
-                    apiAuditAppUserBindingOwnerDataVo.setParentAreaName(tmpCommunityDto.getParentAreaName());
+            for (OwnerAppUserDto ownerAppUserDto : ownerAppUserDtos) {
+                if (ownerAppUserDto.getCommunityId().equals(tmpCommunityDto.getCommunityId())) {
+                    ownerAppUserDto.setAreaCode(tmpCommunityDto.getAreaCode());
+                    ownerAppUserDto.setAreaName(tmpCommunityDto.getAreaName());
+                    ownerAppUserDto.setParentAreaCode(tmpCommunityDto.getParentAreaCode());
+                    ownerAppUserDto.setParentAreaName(tmpCommunityDto.getParentAreaName());
                 }
             }
         }
@@ -143,13 +135,13 @@ public class ListAppUserBindingOwnersListener extends AbstractServiceApiListener
     /**
      * 获取批量userIdsaveOwner
      *
-     * @param auditAppUserBindingOwners 业主绑定信息
+     * @param ownerAppUserDtos 业主绑定信息
      * @return 批量userIds 信息
      */
-    private String[] getCommunityIds(List<ApiAuditAppUserBindingOwnerDataVo> auditAppUserBindingOwners) {
+    private String[] getCommunityIds(List<OwnerAppUserDto> ownerAppUserDtos) {
         List<String> communityIds = new ArrayList<String>();
-        for (ApiAuditAppUserBindingOwnerDataVo apiAuditAppUserBindingOwnerDataVo : auditAppUserBindingOwners) {
-            communityIds.add(apiAuditAppUserBindingOwnerDataVo.getCommunityId());
+        for (OwnerAppUserDto ownerAppUserDto : ownerAppUserDtos) {
+            communityIds.add(ownerAppUserDto.getCommunityId());
         }
 
         return communityIds.toArray(new String[communityIds.size()]);

+ 1 - 1
service-front/src/main/java/com/java110/front/controller/WxLoginController.java

@@ -1,4 +1,4 @@
-package com.java110.front.controller;
+package com.java110.front.controller.mina;
 
 import com.alibaba.fastjson.JSONObject;
 import com.java110.front.smo.wxLogin.IWxLoginSMO;

+ 1 - 1
service-front/src/main/java/com/java110/front/controller/LoginOwnerWechatAuthController.java

@@ -1,4 +1,4 @@
-package com.java110.front.controller;
+package com.java110.front.controller.wechat;
 
 import com.alibaba.fastjson.JSONObject;
 import com.java110.core.base.controller.BaseController;

+ 1 - 1
service-front/src/main/java/com/java110/front/controller/WechatGatewayController.java

@@ -1,4 +1,4 @@
-package com.java110.front.controller;
+package com.java110.front.controller.wechat;
 
 
 import com.alibaba.fastjson.JSONObject;

+ 11 - 0
service-front/src/main/java/com/java110/front/smo/AppAbstractComponentSMO.java

@@ -1,12 +1,17 @@
 package com.java110.front.smo;
 
+import com.alibaba.fastjson.JSONArray;
+import com.alibaba.fastjson.JSONObject;
 import com.java110.core.component.AbstractComponentSMO;
 import com.java110.core.context.IPageData;
 import com.java110.dto.smallWeChat.SmallWeChatDto;
 import com.java110.front.properties.WechatAuthProperties;
 import com.java110.utils.cache.MappingCache;
 import com.java110.utils.constant.CommonConstant;
+import com.java110.utils.constant.ServiceConstant;
+import com.java110.utils.exception.SMOException;
 import com.java110.utils.util.Assert;
+import com.java110.utils.util.BeanConvertUtil;
 import com.java110.utils.util.PayUtil;
 import com.java110.utils.util.StringUtil;
 import org.slf4j.Logger;
@@ -20,6 +25,7 @@ import org.springframework.http.ResponseEntity;
 import org.springframework.web.client.HttpStatusCodeException;
 import org.springframework.web.client.RestTemplate;
 
+import java.util.List;
 import java.util.Map;
 import java.util.SortedMap;
 import java.util.TreeMap;
@@ -30,6 +36,9 @@ public abstract class AppAbstractComponentSMO extends AbstractComponentSMO {
     @Autowired
     private WechatAuthProperties wechatAuthProperties;
 
+    @Autowired
+    private RestTemplate restTemplate;
+
     //微信支付
     public static final String DOMAIN_WECHAT_PAY = "WECHAT_PAY";
     // 微信服务商支付开关
@@ -41,6 +50,8 @@ public abstract class AppAbstractComponentSMO extends AbstractComponentSMO {
 
     private static final String WECHAT_SERVICE_MCH_ID = "SERVICE_MCH_ID";
 
+
+
     /**
      * 调用中心服务
      *

+ 96 - 120
service-front/src/main/java/com/java110/front/smo/ownerLogin/impl/OwnerAppLoginSMOImpl.java

@@ -2,16 +2,17 @@ package com.java110.front.smo.ownerLogin.impl;
 
 import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONObject;
+import com.java110.core.base.smo.front.AbstractFrontServiceSMO;
 import com.java110.core.context.IPageData;
 import com.java110.core.context.PageData;
 import com.java110.core.factory.AuthenticationFactory;
 import com.java110.dto.owner.OwnerAppUserDto;
 import com.java110.front.properties.WechatAuthProperties;
-import com.java110.front.smo.AppAbstractComponentSMO;
 import com.java110.front.smo.ownerLogin.IOwnerAppLoginSMO;
 import com.java110.utils.cache.CommonCache;
 import com.java110.utils.constant.CommonConstant;
 import com.java110.utils.constant.ResponseConstant;
+import com.java110.utils.constant.ServiceCodeConstant;
 import com.java110.utils.constant.ServiceConstant;
 import com.java110.utils.constant.WechatConstant;
 import com.java110.utils.exception.SMOException;
@@ -32,6 +33,7 @@ import javax.servlet.http.HttpServletResponse;
 import java.net.URL;
 import java.net.URLEncoder;
 import java.util.HashMap;
+import java.util.List;
 import java.util.Map;
 import java.util.UUID;
 
@@ -39,7 +41,7 @@ import java.util.UUID;
  * wx登录
  */
 @Service("ownerAppLoginSMOImpl")
-public class OwnerAppLoginSMOImpl extends AppAbstractComponentSMO implements IOwnerAppLoginSMO {
+public class OwnerAppLoginSMOImpl extends AbstractFrontServiceSMO implements IOwnerAppLoginSMO {
 
     private final static Logger logger = LoggerFactory.getLogger(OwnerAppLoginSMOImpl.class);
 
@@ -55,9 +57,56 @@ public class OwnerAppLoginSMOImpl extends AppAbstractComponentSMO implements IOw
     private WechatAuthProperties wechatAuthProperties;
 
     @Override
-    public ResponseEntity<String>
-    doLogin(IPageData pd) throws SMOException {
-        return businessProcess(pd);
+    public ResponseEntity<String> doLogin(IPageData pd) throws SMOException {
+        JSONObject paramIn = JSONObject.parseObject(pd.getReqData());
+        Assert.hasKeyAndValue(paramIn, "username", "请求报文中未包含用户名");
+        Assert.hasKeyAndValue(paramIn, "password", "请求报文中未包含密码");
+        logger.debug("doLogin入参:" + paramIn.toJSONString());
+        ResponseEntity<String> responseEntity;
+
+        JSONObject loginInfo = JSONObject.parseObject(pd.getReqData());
+
+        loginInfo.put("passwd", AuthenticationFactory.passwdMd5(loginInfo.getString("password")));
+        responseEntity = this.callCenterService(restTemplate, pd, loginInfo.toJSONString(), ServiceConstant.SERVICE_API_URL + "/api/user.service.login", HttpMethod.POST);
+        if (responseEntity.getStatusCode() != HttpStatus.OK) {
+            return responseEntity;
+        }
+
+        JSONObject userInfo = JSONObject.parseObject(responseEntity.getBody());
+
+        //根据用户查询商户信息
+        String userId = userInfo.getString("userId");
+
+        pd = PageData.newInstance().builder(userId, "", "", pd.getReqData(),
+                "", "", "", "",
+                pd.getAppId());
+        OwnerAppUserDto ownerAppUserDto = new OwnerAppUserDto();
+        ownerAppUserDto.setUserId(userId);
+        List<OwnerAppUserDto> ownerAppUserDtos = super.getForApis(pd, ownerAppUserDto, ServiceCodeConstant.LIST_APPUSERBINDINGOWNERS, OwnerAppUserDto.class);
+
+
+        if (ownerAppUserDtos == null || ownerAppUserDtos.size() < 1) {
+            responseEntity = new ResponseEntity<>("用户未绑定业主", HttpStatus.BAD_REQUEST);
+            return responseEntity;
+        }
+
+        JSONObject appUser = JSONObject.parseObject(JSONObject.toJSONString(ownerAppUserDtos.get(0)));
+        appUser.put("userId", userId);
+        appUser.put("userName", paramIn.getString("username"));
+        JSONObject paramOut = new JSONObject();
+        paramOut.put("result", 0);
+        paramOut.put("owner", appUser);
+        paramOut.put("token", userInfo.getString("token"));
+
+        String appId = pd.getAppId();
+
+        if ("992020061452450002".equals(appId)) { //公众号
+            return wechat(pd, paramIn, paramOut, userId, ownerAppUserDtos);
+        } else if ("992019111758490006".equals(appId)) { //小程序
+            return mina(pd, paramIn, paramOut, userId, ownerAppUserDtos);
+        } else {//app
+            return new ResponseEntity<>(paramOut.toJSONString(), HttpStatus.OK);
+        }
     }
 
     @Override
@@ -92,15 +141,11 @@ public class OwnerAppLoginSMOImpl extends AppAbstractComponentSMO implements IOw
         pd = PageData.newInstance().builder("-1", "", "", pd.getReqData(),
                 "", "", "", "",
                 pd.getAppId());
-        ResponseEntity responseEntity = this.callCenterService(restTemplate, pd, "", ServiceConstant.SERVICE_API_URL + "/api/owner.listAppUserBindingOwners?openId=" + openId, HttpMethod.GET);
-        if (responseEntity.getStatusCode() != HttpStatus.OK) {
-            //将openId放到redis 缓存,给前段下发临时票据
-            String code = UUID.randomUUID().toString();
-            CommonCache.setValue(code, openId, expireTime);
-            return ResultVo.redirectPage("/#/pages/login/login?code=" + code);
-        }
-        JSONObject ownerInfo = JSONObject.parseObject(responseEntity.getBody().toString());
-        if (ownerInfo.getInteger("total") < 1) {
+        OwnerAppUserDto ownerAppUserDto = new OwnerAppUserDto();
+        ownerAppUserDto.setOpenId(openId);
+        List<OwnerAppUserDto> ownerAppUserDtos = super.getForApis(pd, ownerAppUserDto, ServiceCodeConstant.LIST_APPUSERBINDINGOWNERS, OwnerAppUserDto.class);
+
+        if (ownerAppUserDtos == null || ownerAppUserDtos.size() < 1) {
             //将openId放到redis 缓存,给前段下发临时票据
             String code = UUID.randomUUID().toString();
             CommonCache.setValue(code, openId, expireTime);
@@ -109,8 +154,8 @@ public class OwnerAppLoginSMOImpl extends AppAbstractComponentSMO implements IOw
 
         // String accessToken = paramObj.getString("access_token");//暂时不用
         Map userMap = new HashMap();
-        userMap.put(CommonConstant.LOGIN_USER_ID, ownerInfo.getString("userId"));
-        userMap.put(CommonConstant.LOGIN_USER_NAME, ownerInfo.getString("appUserName"));
+        userMap.put(CommonConstant.LOGIN_USER_ID, ownerAppUserDtos.get(0).getUserId());
+        userMap.put(CommonConstant.LOGIN_USER_NAME, ownerAppUserDtos.get(0).getAppUserName());
         String token = "";
         try {
             token = AuthenticationFactory.createAndSaveToken(userMap);
@@ -170,69 +215,6 @@ public class OwnerAppLoginSMOImpl extends AppAbstractComponentSMO implements IOw
         return ResultVo.createResponseEntity(ResultVo.CODE_MACHINE_OK, ResultVo.MSG_OK, urlObj);
     }
 
-    @Override
-    protected void validate(IPageData pd, JSONObject paramIn) {
-
-        Assert.hasKeyAndValue(paramIn, "username", "请求报文中未包含用户名");
-        Assert.hasKeyAndValue(paramIn, "password", "请求报文中未包含密码");
-    }
-
-    @Override
-    protected ResponseEntity<String> doBusinessProcess(IPageData pd, JSONObject paramIn) {
-
-        logger.debug("doLogin入参:" + paramIn.toJSONString());
-        ResponseEntity<String> responseEntity;
-
-        JSONObject loginInfo = JSONObject.parseObject(pd.getReqData());
-
-        loginInfo.put("passwd", AuthenticationFactory.passwdMd5(loginInfo.getString("password")));
-        responseEntity = this.callCenterService(restTemplate, pd, loginInfo.toJSONString(), ServiceConstant.SERVICE_API_URL + "/api/user.service.login", HttpMethod.POST);
-        if (responseEntity.getStatusCode() != HttpStatus.OK) {
-            return responseEntity;
-        }
-
-        JSONObject userInfo = JSONObject.parseObject(responseEntity.getBody());
-
-        //根据用户查询商户信息
-        String userId = userInfo.getString("userId");
-
-        pd = PageData.newInstance().builder(userId, "", "", pd.getReqData(),
-                "", "", "", "",
-                pd.getAppId());
-        responseEntity = this.callCenterService(restTemplate, pd, "", ServiceConstant.SERVICE_API_URL + "/api/owner.listAppUserBindingOwners?userid=" + userId, HttpMethod.GET);
-
-        if (responseEntity.getStatusCode() != HttpStatus.OK) {
-            return responseEntity;
-        }
-
-        JSONObject ownerInfo = JSONObject.parseObject(responseEntity.getBody().toString());
-
-        if (ownerInfo.getInteger("total") < 1) {
-            responseEntity = new ResponseEntity<>("用户未绑定业主", HttpStatus.BAD_REQUEST);
-            return responseEntity;
-        }
-
-        JSONArray auditAppUserBindingOwners = ownerInfo.getJSONArray("auditAppUserBindingOwners");
-
-        JSONObject appUser = auditAppUserBindingOwners.getJSONObject(0);
-        appUser.put("userId", userId);
-        appUser.put("userName", paramIn.getString("username"));
-        JSONObject paramOut = new JSONObject();
-        paramOut.put("result", 0);
-        paramOut.put("owner", appUser);
-        paramOut.put("token", userInfo.getString("token"));
-
-        String appId = pd.getAppId();
-
-        if ("992020061452450002".equals(appId)) { //公众号
-            return wechat(pd, paramIn, paramOut, userId, auditAppUserBindingOwners);
-        } else if ("992019111758490006".equals(appId)) { //小程序
-            return mina(pd, paramIn, paramOut, userId, auditAppUserBindingOwners);
-        } else {//app
-            return new ResponseEntity<>(paramOut.toJSONString(), HttpStatus.OK);
-        }
-    }
-
     /**
      * 公众号登录
      *
@@ -240,11 +222,11 @@ public class OwnerAppLoginSMOImpl extends AppAbstractComponentSMO implements IOw
      * @param paramIn
      * @param paramOut
      * @param userId
-     * @param auditAppUserBindingOwners
+     * @param ownerAppUserDtos
      * @return
      */
     private ResponseEntity<String> wechat(IPageData pd, JSONObject paramIn, JSONObject paramOut, String userId,
-                                          JSONArray auditAppUserBindingOwners) {
+                                          List<OwnerAppUserDto> ownerAppUserDtos) {
 
         ResponseEntity<String> responseEntity = null;
         //查询微信信息
@@ -262,39 +244,37 @@ public class OwnerAppLoginSMOImpl extends AppAbstractComponentSMO implements IOw
             return responseEntity;
         }
 
-        JSONObject curOwnerApp = judgeCurrentOwnerBind(auditAppUserBindingOwners, OwnerAppUserDto.APP_TYPE_WECHAT);
+        OwnerAppUserDto curOwnerApp = judgeCurrentOwnerBind(ownerAppUserDtos, OwnerAppUserDto.APP_TYPE_WECHAT);
 
         //说明 当前的openId 就是最新的
-        if (curOwnerApp != null && openId.equals(curOwnerApp.getString("openId"))) {
+        if (curOwnerApp != null && openId.equals(curOwnerApp.getOpenId())) {
             return new ResponseEntity<>(paramOut.toJSONString(), HttpStatus.OK);
         }
 
         JSONObject userOwnerInfo = new JSONObject();
-
-        userOwnerInfo.put("openId", openId);
-        userOwnerInfo.put("appType", OwnerAppUserDto.APP_TYPE_WECHAT);
+        OwnerAppUserDto ownerAppUserDto = new OwnerAppUserDto();
+        ownerAppUserDto.setOpenId(openId);
+        ownerAppUserDto.setAppType(OwnerAppUserDto.APP_TYPE_WECHAT);
         if (curOwnerApp != null) {
-            userOwnerInfo.put("appUserId", curOwnerApp.getString("appUserId"));
-            userOwnerInfo.put("communityId", curOwnerApp.getString("communityId"));
+            ownerAppUserDto.setAppUserId(curOwnerApp.getAppUserId());
+            ownerAppUserDto.setCommunityId(curOwnerApp.getCommunityId());
         } else {
-            userOwnerInfo.put("oldAppUserId", auditAppUserBindingOwners.getJSONObject(0).getString("appUserId"));
-            userOwnerInfo.put("appUserId", "-1");
-            userOwnerInfo.put("communityId", auditAppUserBindingOwners.getJSONObject(0).getString("communityId"));
+            ownerAppUserDto.setOldAppUserId(ownerAppUserDtos.get(0).getAppUserId());
+            ownerAppUserDto.setAppUserId("-1");
+            ownerAppUserDto.setCommunityId(ownerAppUserDtos.get(0).getCommunityId());
         }
 
         //查询微信信息
         pd = PageData.newInstance().builder(userId, "", "", pd.getReqData(),
                 "", "", "", "",
                 pd.getAppId());
-        responseEntity = this.callCenterService(restTemplate, pd, userOwnerInfo.toJSONString(),
-                ServiceConstant.SERVICE_API_URL + "/api/owner.refreshAppUserBindingOwnerOpenId", HttpMethod.POST);
-        if (responseEntity.getStatusCode() != HttpStatus.OK) {
-            return responseEntity;
-        }
+
+        super.postForApi(pd, ownerAppUserDto, ServiceCodeConstant.REFRESH_APP_USER_BINDING_OWNER_OPEN_ID,
+                OwnerAppUserDto.class);
         return new ResponseEntity<>(paramOut.toJSONString(), HttpStatus.OK);
     }
 
-    private ResponseEntity<String> mina(IPageData pd, JSONObject paramIn, JSONObject paramOut, String userId, JSONArray auditAppUserBindingOwners) {
+    private ResponseEntity<String> mina(IPageData pd, JSONObject paramIn, JSONObject paramOut, String userId, List<OwnerAppUserDto> ownerAppUserDtos) {
 
         ResponseEntity<String> responseEntity = null;
         //查询微信信息
@@ -339,50 +319,46 @@ public class OwnerAppLoginSMOImpl extends AppAbstractComponentSMO implements IOw
 
         String openId = responseObj.getString("openid");
 
-        JSONObject curOwnerApp = judgeCurrentOwnerBind(auditAppUserBindingOwners, OwnerAppUserDto.APP_TYPE_WECHAT_MINA);
+        OwnerAppUserDto ownerAppUserDto = judgeCurrentOwnerBind(ownerAppUserDtos, OwnerAppUserDto.APP_TYPE_WECHAT_MINA);
 
         //说明 当前的openId 就是最新的
-        if (curOwnerApp != null && openId.equals(curOwnerApp.getString("openId"))) {
+        if (ownerAppUserDto != null && openId.equals(ownerAppUserDto.getOpenId())) {
             return new ResponseEntity<>(paramOut.toJSONString(), HttpStatus.OK);
         }
 
-        JSONObject userOwnerInfo = new JSONObject();
-
-        userOwnerInfo.put("openId", openId);
-        userOwnerInfo.put("appType", OwnerAppUserDto.APP_TYPE_WECHAT_MINA);
-        if (curOwnerApp != null) {
-            userOwnerInfo.put("appUserId", curOwnerApp.getString("appUserId"));
-            userOwnerInfo.put("communityId", curOwnerApp.getString("communityId"));
+        OwnerAppUserDto tmpOwnerAppUserDto = new OwnerAppUserDto();
+        ownerAppUserDto.setOpenId(openId);
+        ownerAppUserDto.setAppType(OwnerAppUserDto.APP_TYPE_WECHAT_MINA);
+        if (ownerAppUserDto != null) {
+            ownerAppUserDto.setAppUserId(tmpOwnerAppUserDto.getAppUserId());
+            ownerAppUserDto.setCommunityId(tmpOwnerAppUserDto.getCommunityId());
         } else {
-            userOwnerInfo.put("oldAppUserId", auditAppUserBindingOwners.getJSONObject(0).getString("appUserId"));
-            userOwnerInfo.put("appUserId", "-1");
-            userOwnerInfo.put("communityId", auditAppUserBindingOwners.getJSONObject(0).getString("communityId"));
+            ownerAppUserDto.setOldAppUserId(ownerAppUserDtos.get(0).getAppUserId());
+            ownerAppUserDto.setAppUserId("-1");
+            ownerAppUserDto.setCommunityId(ownerAppUserDtos.get(0).getCommunityId());
         }
-
         //查询微信信息
         pd = PageData.newInstance().builder(userId, "", "", pd.getReqData(),
                 "", "", "", "",
                 pd.getAppId());
-        responseEntity = this.callCenterService(restTemplate, pd, userOwnerInfo.toJSONString(),
-                ServiceConstant.SERVICE_API_URL + "/api/owner.refreshAppUserBindingOwnerOpenId", HttpMethod.POST);
-        if (responseEntity.getStatusCode() != HttpStatus.OK) {
-            return responseEntity;
-        }
+
+        super.postForApi(pd, ownerAppUserDto, ServiceCodeConstant.REFRESH_APP_USER_BINDING_OWNER_OPEN_ID,
+                OwnerAppUserDto.class);
         return new ResponseEntity<>(paramOut.toJSONString(), HttpStatus.OK);
     }
 
     /**
      * 判断 绑定表里是否存在当前 端 绑定信息
      *
-     * @param auditAppUserBindingOwners
+     * @param ownerAppUserDtos
      * @param appType
      * @return
      */
-    private JSONObject judgeCurrentOwnerBind(JSONArray auditAppUserBindingOwners, String appType) {
+    private OwnerAppUserDto judgeCurrentOwnerBind(List<OwnerAppUserDto> ownerAppUserDtos, String appType) {
 
-        for (int appUserIndex = 0; appUserIndex < auditAppUserBindingOwners.size(); appUserIndex++) {
-            if (appType.equals(auditAppUserBindingOwners.getJSONObject(appUserIndex).getString("appType"))) {
-                return auditAppUserBindingOwners.getJSONObject(appUserIndex);
+        for (OwnerAppUserDto ownerAppUserDto : ownerAppUserDtos) {
+            if (appType.equals(ownerAppUserDto.getAppType())) {
+                return ownerAppUserDto;
             }
         }
         return null;

+ 18 - 23
service-front/src/main/java/com/java110/front/smo/ownerRegister/ownerLogin/impl/OwnerAppRegisterSMOImpl.java

@@ -1,11 +1,13 @@
 package com.java110.front.smo.ownerRegister.ownerLogin.impl;
 
 import com.alibaba.fastjson.JSONObject;
+import com.java110.core.base.smo.front.AbstractFrontServiceSMO;
 import com.java110.core.context.IPageData;
 import com.java110.core.context.PageData;
 import com.java110.core.factory.AuthenticationFactory;
-import com.java110.front.smo.AppAbstractComponentSMO;
+import com.java110.dto.owner.OwnerAppUserDto;
 import com.java110.front.smo.ownerRegister.ownerLogin.IOwnerAppRegisterSMO;
+import com.java110.utils.constant.ServiceCodeConstant;
 import com.java110.utils.constant.ServiceConstant;
 import com.java110.utils.exception.SMOException;
 import com.java110.utils.util.Assert;
@@ -18,11 +20,13 @@ import org.springframework.http.ResponseEntity;
 import org.springframework.stereotype.Service;
 import org.springframework.web.client.RestTemplate;
 
+import java.util.List;
+
 /**
  * wx登录
  */
 @Service("ownerAppRegisterSMOImpl")
-public class OwnerAppRegisterSMOImpl extends AppAbstractComponentSMO implements IOwnerAppRegisterSMO {
+public class OwnerAppRegisterSMOImpl extends AbstractFrontServiceSMO implements IOwnerAppRegisterSMO {
 
     private final static Logger logger = LoggerFactory.getLogger(OwnerAppRegisterSMOImpl.class);
 
@@ -32,29 +36,20 @@ public class OwnerAppRegisterSMOImpl extends AppAbstractComponentSMO implements
     @Override
     public ResponseEntity<String>
     doLogin(IPageData pd) throws SMOException {
-        return businessProcess(pd);
-    }
-
-    @Override
-    protected void validate(IPageData pd, JSONObject paramIn) {
-
         //super.validatePageInfo(pd);
 
+        JSONObject paramIn = JSONObject.parseObject(pd.getReqData());
+
         Assert.hasKeyAndValue(paramIn, "username", "请求报文中未包含用户名");
         Assert.hasKeyAndValue(paramIn, "password", "请求报文中未包含密码");
         //super.checkUserHasPrivilege(pd, restTemplate, PrivilegeCodeConstant.LIST_ORG);
-    }
-
-    @Override
-    protected ResponseEntity<String> doBusinessProcess(IPageData pd, JSONObject paramIn) {
-
         logger.debug("doLogin入参:" + paramIn.toJSONString());
         ResponseEntity<String> responseEntity;
 
         JSONObject loginInfo = JSONObject.parseObject(pd.getReqData());
 
         loginInfo.put("passwd", AuthenticationFactory.passwdMd5(loginInfo.getString("password")));
-        responseEntity = this.callCenterService(restTemplate, pd, loginInfo.toJSONString(), ServiceConstant.SERVICE_API_URL +"/api/user.service.login", HttpMethod.POST);
+        responseEntity = this.callCenterService(restTemplate, pd, loginInfo.toJSONString(), ServiceConstant.SERVICE_API_URL + "/api/user.service.login", HttpMethod.POST);
         if (responseEntity.getStatusCode() != HttpStatus.OK) {
             return responseEntity;
         }
@@ -67,22 +62,21 @@ public class OwnerAppRegisterSMOImpl extends AppAbstractComponentSMO implements
         pd = PageData.newInstance().builder(userId, "", "", pd.getReqData(),
                 "", "", "", "",
                 pd.getAppId());
-        responseEntity = this.callCenterService(restTemplate,pd,"", ServiceConstant.SERVICE_API_URL + "/api/owner.listAppUserBindingOwners?userid="+userId,HttpMethod.GET);
+        OwnerAppUserDto ownerAppUserDto = new OwnerAppUserDto();
+        ownerAppUserDto.setUserId(userId);
 
-        if (responseEntity.getStatusCode() != HttpStatus.OK) {
-            return responseEntity;
-        }
+        List<OwnerAppUserDto> ownerAppUserDtos = super.getForApis(pd, ownerAppUserDto, ServiceCodeConstant.LIST_APPUSERBINDINGOWNERS, OwnerAppUserDto.class);
 
         JSONObject ownerInfo = JSONObject.parseObject(responseEntity.getBody().toString());
 
-        if(ownerInfo.getInteger("total") != 1){
-            responseEntity = new ResponseEntity<>("用户未绑定业主",HttpStatus.BAD_REQUEST);
+        if (ownerAppUserDtos == null || ownerAppUserDtos.size() < 1) {
+            responseEntity = new ResponseEntity<>("用户未绑定业主", HttpStatus.BAD_REQUEST);
             return responseEntity;
         }
 
-        JSONObject appUser = ownerInfo.getJSONArray("auditAppUserBindingOwners").getJSONObject(0);
-        appUser.put("userId",userId);
-        appUser.put("userName",paramIn.getString("username"));
+        JSONObject appUser = JSONObject.parseObject(JSONObject.toJSONString(ownerAppUserDtos.get(0)));
+        appUser.put("userId", userId);
+        appUser.put("userName", paramIn.getString("username"));
         JSONObject paramOut = new JSONObject();
         paramOut.put("result", 0);
         paramOut.put("owner", appUser);
@@ -92,6 +86,7 @@ public class OwnerAppRegisterSMOImpl extends AppAbstractComponentSMO implements
         return new ResponseEntity<>(paramOut.toJSONString(), HttpStatus.OK);
     }
 
+
     public RestTemplate getRestTemplate() {
         return restTemplate;
     }

+ 12 - 21
service-front/src/main/java/com/java110/front/smo/wechatGateway/impl/WechatGatewaySMOImpl.java

@@ -1,31 +1,33 @@
 package com.java110.front.smo.wechatGateway.impl;
 
 import com.alibaba.fastjson.JSONObject;
+import com.java110.core.base.smo.front.AbstractFrontServiceSMO;
 import com.java110.core.context.IPageData;
 import com.java110.core.factory.WechatFactory;
+import com.java110.dto.owner.OwnerAppUserDto;
 import com.java110.front.properties.WechatAuthProperties;
-import com.java110.front.smo.AppAbstractComponentSMO;
 import com.java110.front.smo.wechatGateway.IWechatGatewaySMO;
 import com.java110.utils.cache.MappingCache;
-import com.java110.utils.constant.ServiceConstant;
+import com.java110.utils.constant.ServiceCodeConstant;
 import com.java110.utils.constant.WechatConstant;
 import com.java110.utils.util.Assert;
 import com.java110.utils.util.StringUtil;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.http.HttpMethod;
 import org.springframework.http.HttpStatus;
 import org.springframework.http.ResponseEntity;
 import org.springframework.stereotype.Service;
 import org.springframework.web.client.RestTemplate;
 import org.thymeleaf.util.StringUtils;
 
+import java.util.List;
+
 /**
  * wx登录
  */
 @Service("wechatGatewaySMOImpl")
-public class WechatGatewaySMOImpl extends AppAbstractComponentSMO implements IWechatGatewaySMO {
+public class WechatGatewaySMOImpl extends AbstractFrontServiceSMO implements IWechatGatewaySMO {
 
     private final static Logger logger = LoggerFactory.getLogger(WechatGatewaySMOImpl.class);
 
@@ -41,17 +43,10 @@ public class WechatGatewaySMOImpl extends AppAbstractComponentSMO implements IWe
     @Override
     public ResponseEntity<String>
     gateway(IPageData pd) throws Exception {
-        return businessProcess(pd);
-    }
 
-    @Override
-    protected void validate(IPageData pd, JSONObject paramIn) {
+        JSONObject paramIn = JSONObject.parseObject(JSONObject.toJSONString(pd.getReqData()));
         Assert.hasKeyAndValue(paramIn, "fromUserName", "请求报文中未包含fromUserName");
         Assert.hasKeyAndValue(paramIn, "toUserName", "请求报文中未包含toUserName");
-    }
-
-    @Override
-    protected ResponseEntity<String> doBusinessProcess(IPageData pd, JSONObject paramIn) throws Exception {
 
         logger.debug("doLogin入参:" + paramIn.toJSONString());
         String responseStr = "";
@@ -79,6 +74,7 @@ public class WechatGatewaySMOImpl extends AppAbstractComponentSMO implements IWe
         return new ResponseEntity<>(responseStr, HttpStatus.OK);
     }
 
+
     public RestTemplate getRestTemplate() {
         return restTemplate;
     }
@@ -168,16 +164,11 @@ public class WechatGatewaySMOImpl extends AppAbstractComponentSMO implements IWe
      * @return
      */
     private boolean judgeBindOwner(IPageData pd, String openId) {
+        OwnerAppUserDto ownerAppUserDto = new OwnerAppUserDto();
+        ownerAppUserDto.setOpenId(openId);
+        List<OwnerAppUserDto> ownerAppUserDtos = super.getForApis(pd, ownerAppUserDto, ServiceCodeConstant.LIST_APPUSERBINDINGOWNERS, OwnerAppUserDto.class);
 
-        ResponseEntity responseEntity = this.callCenterService(restTemplate, pd, "", ServiceConstant.SERVICE_API_URL + "/api/owner.listAppUserBindingOwners?openId=" + openId, HttpMethod.GET);
-
-        if (responseEntity.getStatusCode() != HttpStatus.OK) {
-            return true;
-        }
-
-        JSONObject ownerInfo = JSONObject.parseObject(responseEntity.getBody().toString());
-
-        if (ownerInfo.getInteger("total") != 1) {
+        if (ownerAppUserDtos == null || ownerAppUserDtos.size() != 1) {
             return false;
         }
         return true;