Преглед изворни кода

boot版测试通过 添加物业 添加小区 添加楼栋添加单元添加房屋 添加业主 业主绑定房屋 添加费用 创建费用 缴费 打印收据 等功能

java110 пре 3 година
родитељ
комит
0cd10b7f84

+ 52 - 0
java110-utils/src/main/java/com/java110/utils/util/BootReplaceUtil.java

@@ -0,0 +1,52 @@
+package com.java110.utils.util;
+
+public class BootReplaceUtil {
+
+    public static String replaceServiceName(String requestUrl){
+        if(requestUrl.contains("http://community-service")){
+            requestUrl = requestUrl.replace("community-service","127.0.0.1:8008");
+        }
+
+        if(requestUrl.contains("http://user-service")){
+            requestUrl = requestUrl.replace("user-service","127.0.0.1:8008");
+        }
+
+        if(requestUrl.contains("http://common-service")){
+            requestUrl = requestUrl.replace("common-service","127.0.0.1:8008");
+        }
+
+        if(requestUrl.contains("http://fee-service")){
+            requestUrl = requestUrl.replace("fee-service","127.0.0.1:8008");
+        }
+
+        if(requestUrl.contains("http://acct-service")){
+            requestUrl = requestUrl.replace("acct-service","127.0.0.1:8008");
+        }
+        if(requestUrl.contains("http://dev-service")){
+            requestUrl = requestUrl.replace("dev-service","127.0.0.1:8008");
+        }
+
+        if(requestUrl.contains("http://job-service")){
+            requestUrl = requestUrl.replace("job-service","127.0.0.1:8008");
+        }
+
+        if(requestUrl.contains("http://oa-service")){
+            requestUrl = requestUrl.replace("oa-service","127.0.0.1:8008");
+        }
+
+        if(requestUrl.contains("http://store-service")){
+            requestUrl = requestUrl.replace("store-service","127.0.0.1:8008");
+        }
+
+        if(requestUrl.contains("http://order-service")){
+            requestUrl = requestUrl.replace("order-service","127.0.0.1:8008");
+        }
+
+        if(requestUrl.contains("http://report-service")){
+            requestUrl = requestUrl.replace("report-service","127.0.0.1:8008");
+        }
+
+
+        return requestUrl;
+    }
+}

+ 1 - 1
service-community/src/main/java/com/java110/community/cmd/parkingSpace/QueryParkingSpacesCmd.java

@@ -44,7 +44,7 @@ public class QueryParkingSpacesCmd  extends Cmd {
     @Override
     public void doCmd(CmdEvent event, ICmdDataFlowContext cmdDataFlowContext, JSONObject reqJson) throws CmdException {
         //根据车牌号去查询 车位信息
-        if (reqJson.containsKey("carNum") && !StringUtil.isEmpty("carNum")) {
+        if (reqJson.containsKey("carNum") && !StringUtil.isEmpty(reqJson.getString("carNum"))) {
 
             queryParkingSpaceByCarNum(reqJson, cmdDataFlowContext);
             return;

+ 55 - 0
springboot/src/main/java/com/java110/boot/components/NavComponent.java

@@ -0,0 +1,55 @@
+package com.java110.boot.components;
+
+import com.java110.boot.smo.INavServiceSMO;
+import com.java110.core.context.IPageData;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.http.HttpStatus;
+import org.springframework.http.ResponseEntity;
+import org.springframework.stereotype.Component;
+
+/**
+ * 导航栏
+ * Created by wuxw on 2019/3/19.
+ */
+
+@Component("nav")
+public class NavComponent {
+
+    @Autowired
+    private INavServiceSMO navServiceSMOImpl;
+
+
+    /**
+     * 退出登录
+     *
+     * @param pd 页面封装对象
+     * @return 页面对象ResponseEntity
+     */
+    public ResponseEntity<String> logout(IPageData pd) {
+        ResponseEntity<String> responseEntity = null;
+        try {
+            responseEntity = navServiceSMOImpl.doExit(pd);
+        } catch (Exception e) {
+            responseEntity = new ResponseEntity<String>(e.getMessage(), HttpStatus.INTERNAL_SERVER_ERROR);
+        }
+        return responseEntity;
+    }
+
+    /**
+     * 获取用户信息
+     *
+     * @param pd 页面封装对象
+     * @return 页面对象ResponseEntity
+     */
+    public ResponseEntity<String> getUserInfo(IPageData pd) {
+        ResponseEntity<String> responseEntity = null;
+        try {
+            responseEntity = navServiceSMOImpl.getUserInfo(pd);
+        } catch (Exception e) {
+            responseEntity = new ResponseEntity<String>(e.getMessage(), HttpStatus.INTERNAL_SERVER_ERROR);
+        }
+        return responseEntity;
+    }
+
+
+}

+ 61 - 0
springboot/src/main/java/com/java110/boot/components/company/StoreEnterCommunityComponent.java

@@ -0,0 +1,61 @@
+package com.java110.boot.components.company;
+
+import com.java110.boot.smo.ICommunityServiceSMO;
+import com.java110.core.context.IPageData;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.http.HttpStatus;
+import org.springframework.http.ResponseEntity;
+import org.springframework.stereotype.Component;
+
+/**
+ * 商户申请入驻小区
+ */
+@Component("storeEnterCommunity")
+public class StoreEnterCommunityComponent {
+
+    @Autowired
+    private ICommunityServiceSMO communityServiceSMOImpl;
+
+
+    /**
+     * 显示还没有入驻的小区
+     * @param pd
+     * @return
+     */
+    public ResponseEntity<String> listNoEnterCommunity(IPageData pd){
+            ResponseEntity<String> responseEntity = null;
+            try{
+                responseEntity =  communityServiceSMOImpl.listNoEnterCommunity(pd);
+            }catch (Exception e){
+                responseEntity = new ResponseEntity<String>(e.getMessage(), HttpStatus.INTERNAL_SERVER_ERROR);
+            }finally {
+            }
+            
+            return responseEntity;
+    }
+
+    /**
+     * 入驻小区
+     * @param pd
+     * @return
+     */
+    public ResponseEntity<String> _saveEnterCommunity(IPageData pd){
+        ResponseEntity<String> responseEntity = null;
+        try{
+            responseEntity =  communityServiceSMOImpl._saveEnterCommunity(pd);
+        }catch (Exception e){
+            responseEntity = new ResponseEntity<String>(e.getMessage(), HttpStatus.INTERNAL_SERVER_ERROR);
+        }finally {
+        }
+        
+        return responseEntity;
+    }
+
+    public ICommunityServiceSMO getCommunityServiceSMOImpl() {
+        return communityServiceSMOImpl;
+    }
+
+    public void setCommunityServiceSMOImpl(ICommunityServiceSMO communityServiceSMOImpl) {
+        this.communityServiceSMOImpl = communityServiceSMOImpl;
+    }
+}

+ 40 - 0
springboot/src/main/java/com/java110/boot/smo/ICommunityServiceSMO.java

@@ -0,0 +1,40 @@
+package com.java110.boot.smo;
+
+import com.java110.core.context.IPageData;
+import org.springframework.http.ResponseEntity;
+
+/**
+ * 小区服务类
+ */
+public interface ICommunityServiceSMO {
+
+    /**
+     * 我入驻的小区
+     * @param pd
+     * @return
+     */
+    public ResponseEntity<String> listMyCommunity(IPageData pd);
+
+
+    /**
+     * 查询未入驻的小区
+     * @param pd
+     * @return
+     */
+    public ResponseEntity<String> listNoEnterCommunity(IPageData pd);
+
+
+    /**
+     * 入驻小区
+     * @param pd
+     * @return
+     */
+    public ResponseEntity<String> _saveEnterCommunity(IPageData pd);
+
+    /**
+     * 退出小区
+     * @param pd
+     * @return
+     */
+    public ResponseEntity<String> exitCommunity(IPageData pd);
+}

+ 1 - 7
springboot/src/main/java/com/java110/boot/smo/INavServiceSMO.java

@@ -26,11 +26,5 @@ public interface INavServiceSMO {
      */
     ResponseEntity<String> getUserInfo(IPageData pd);
 
-    /**
-     * 查询入驻小区
-     *
-     * @param pd 页面封装数据
-     * @return ResponseEntity对象
-     */
-    ResponseEntity<String> listMyCommunity(IPageData pd);
+
 }

+ 67 - 8
springboot/src/main/java/com/java110/boot/smo/impl/ApiServiceSMOImpl.java

@@ -21,10 +21,14 @@ import com.java110.entity.center.DataFlowLinksCost;
 import com.java110.po.transactionLog.TransactionLogPo;
 import com.java110.utils.cache.AppRouteCache;
 import com.java110.utils.cache.MappingCache;
-import com.java110.utils.constant.*;
+import com.java110.utils.constant.CommonConstant;
+import com.java110.utils.constant.KafkaConstant;
+import com.java110.utils.constant.MappingConstant;
+import com.java110.utils.constant.ResponseConstant;
 import com.java110.utils.exception.*;
 import com.java110.utils.kafka.KafkaFactory;
 import com.java110.utils.log.LoggerEngine;
+import com.java110.utils.util.BootReplaceUtil;
 import com.java110.utils.util.DateUtil;
 import com.java110.utils.util.StringUtil;
 import com.java110.vo.ResultVo;
@@ -379,7 +383,9 @@ public class ApiServiceSMOImpl extends LoggerEngine implements IApiServiceSMO {
                 throw new ListenerExecuteException(ResponseConstant.RESULT_CODE_ERROR,
                         "服务【" + appService.getServiceCode() + "】调用方式不对请检查,当前请求方式为:" + httpMethod);
             }
-            dataFlow.setApiCurrentService(ServiceCodeConstant.SERVICE_CODE_DO_SERVICE_TRANSFER);
+            //dataFlow.setApiCurrentService(ServiceCodeConstant.SERVICE_CODE_DO_SERVICE_TRANSFER);
+            doNT(appService, dataFlow, dataFlow.getReqJson());
+            return;
         } else if ("T".equals(appService.getIsInstance())) {
             //如果是透传类 请求方式必须与接口提供方调用方式一致
             String httpMethod = dataFlow.getRequestCurrentHeaders().get(CommonConstant.HTTP_METHOD);
@@ -387,7 +393,7 @@ public class ApiServiceSMOImpl extends LoggerEngine implements IApiServiceSMO {
                 throw new ListenerExecuteException(ResponseConstant.RESULT_CODE_ERROR,
                         "服务【" + appService.getServiceCode() + "】调用方式不对请检查,当前请求方式为:" + httpMethod);
             }
-            doTransfer(appService,dataFlow,dataFlow.getReqJson());
+            doTransfer(appService, dataFlow, dataFlow.getReqJson());
             return;
         } else if ("CMD".equals(appService.getIsInstance())) {
             //如果是透传类 请求方式必须与接口提供方调用方式一致
@@ -396,8 +402,8 @@ public class ApiServiceSMOImpl extends LoggerEngine implements IApiServiceSMO {
                 throw new ListenerExecuteException(ResponseConstant.RESULT_CODE_ERROR,
                         "服务【" + appService.getServiceCode() + "】调用方式不对请检查,当前请求方式为:" + httpMethod);
             }
-            dealCmd(appService,dataFlow,dataFlow.getReqJson());
-            return ;
+            dealCmd(appService, dataFlow, dataFlow.getReqJson());
+            return;
         } else {
             dataFlow.setApiCurrentService(dataFlow.getRequestHeaders().get(CommonConstant.HTTP_SERVICE));
         }
@@ -405,6 +411,59 @@ public class ApiServiceSMOImpl extends LoggerEngine implements IApiServiceSMO {
         DataFlowFactory.addCostTime(dataFlow, "invokeBusinessSystem", "调用下游系统耗时", startDate);
     }
 
+    private void doNT(AppService service, ApiDataFlow dataFlow, JSONObject reqJson) {
+
+
+        HttpHeaders header = new HttpHeaders();
+        for (String key : dataFlow.getRequestCurrentHeaders().keySet()) {
+            header.add(key, dataFlow.getRequestCurrentHeaders().get(key));
+        }
+        HttpEntity<String> httpEntity = new HttpEntity<String>(reqJson.toJSONString(), header);
+        //http://user-service/test/sayHello
+
+        ResponseEntity responseEntity = null;
+        //配置c_service 时请注意 如果是以out 开头的调用外部的地址
+
+        try {
+            if (CommonConstant.HTTP_METHOD_GET.equals(service.getMethod())) {
+                String requestUrl = dataFlow.getRequestHeaders().get("REQUEST_URL");
+                if (!StringUtil.isNullOrNone(requestUrl)) {
+                    String param = requestUrl.contains("?") ? requestUrl.substring(requestUrl.indexOf("?") + 1, requestUrl.length()) : "";
+                    if (service.getUrl().contains("?")) {
+                        requestUrl = service.getUrl() + "&" + param;
+                    } else {
+                        requestUrl = service.getUrl() + "?" + param;
+                    }
+                }
+
+                requestUrl = BootReplaceUtil.replaceServiceName(requestUrl);
+
+                responseEntity = outRestTemplate.exchange(requestUrl, HttpMethod.GET, httpEntity, String.class);
+            } else if (CommonConstant.HTTP_METHOD_PUT.equals(service.getMethod())) {
+                responseEntity = outRestTemplate.exchange(service.getUrl(), HttpMethod.PUT, httpEntity, String.class);
+            } else if (CommonConstant.HTTP_METHOD_DELETE.equals(service.getMethod())) {
+                String requestUrl = dataFlow.getRequestHeaders().get("REQUEST_URL");
+                if (!StringUtil.isNullOrNone(requestUrl)) {
+                    String param = requestUrl.contains("?") ? requestUrl.substring(requestUrl.indexOf("?"), requestUrl.length()) : "";
+                    if (service.getUrl().contains("?")) {
+                        requestUrl = service.getUrl() + "&" + param;
+                    } else {
+                        requestUrl = service.getUrl() + "?" + param;
+                    }
+                }
+                responseEntity = outRestTemplate.exchange(requestUrl, HttpMethod.DELETE, httpEntity, String.class);
+            } else {
+                responseEntity = outRestTemplate.exchange(service.getUrl(), HttpMethod.POST, httpEntity, String.class);
+            }
+        } catch (HttpStatusCodeException e) { //这里spring 框架 在4XX 或 5XX 时抛出 HttpServerErrorException 异常,需要重新封装一下
+            responseEntity = new ResponseEntity<String>(e.getResponseBodyAsString(), e.getStatusCode());
+        }
+
+        logger.debug("API 服务调用下游服务请求:{},返回为:{}", httpEntity, responseEntity);
+
+        dataFlow.setResponseEntity(responseEntity);
+    }
+
     private void doTransfer(AppService appService, ApiDataFlow dataFlow, JSONObject reqJson) {
 
         Map<String, String> reqHeader = dataFlow.getRequestCurrentHeaders();
@@ -445,7 +504,7 @@ public class ApiServiceSMOImpl extends LoggerEngine implements IApiServiceSMO {
             //进入databus
             if (!CommonConstant.HTTP_METHOD_GET.equals(appService.getMethod())) {
 
-               // dealDatabus(serviceCode, reqJson, oId);
+                // dealDatabus(serviceCode, reqJson, oId);
             }
 
 
@@ -484,7 +543,7 @@ public class ApiServiceSMOImpl extends LoggerEngine implements IApiServiceSMO {
         dataFlow.setResponseEntity(responseEntity);
     }
 
-    private void dealCmd(AppService appService,ApiDataFlow dataFlow,JSONObject reqJson) {
+    private void dealCmd(AppService appService, ApiDataFlow dataFlow, JSONObject reqJson) {
         Map<String, String> reqHeader = dataFlow.getRequestCurrentHeaders();
         HttpHeaders header = new HttpHeaders();
         for (String key : dataFlow.getRequestCurrentHeaders().keySet()) {
@@ -509,7 +568,7 @@ public class ApiServiceSMOImpl extends LoggerEngine implements IApiServiceSMO {
 
         serviceCode = serviceCode.startsWith("/") ? serviceCode : ("/" + serviceCode);
 
-        String requestUrl =   "http://127.0.0.1:8008/cmd" + serviceCode;
+        String requestUrl = "http://127.0.0.1:8008/cmd" + serviceCode;
         //
         ResponseEntity responseEntity = null;
         if (!StringUtil.isNullOrNone(orgRequestUrl)) {

+ 214 - 0
springboot/src/main/java/com/java110/boot/smo/impl/FrontCommunityServiceSMOImpl.java

@@ -0,0 +1,214 @@
+package com.java110.boot.smo.impl;
+
+import com.alibaba.fastjson.JSONArray;
+import com.alibaba.fastjson.JSONObject;
+import com.java110.boot.smo.DefaultAbstractComponentSMO;
+import com.java110.boot.smo.ICommunityServiceSMO;
+import com.java110.core.context.IPageData;
+import com.java110.core.log.LoggerFactory;
+import com.java110.utils.cache.MappingCache;
+import com.java110.utils.constant.AttrCdConstant;
+import com.java110.utils.constant.MappingConstant;
+import com.java110.utils.constant.PrivilegeCodeConstant;
+import com.java110.utils.util.Assert;
+import com.java110.utils.util.StringUtil;
+import org.slf4j.Logger;
+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 java.util.HashMap;
+import java.util.Map;
+
+/**
+ * 小区服务类
+ */
+
+@Service("frontCommunityServiceSMOImpl")
+public class FrontCommunityServiceSMOImpl extends DefaultAbstractComponentSMO implements ICommunityServiceSMO {
+
+    private static Logger logger = LoggerFactory.getLogger(FrontCommunityServiceSMOImpl.class);
+
+    @Autowired
+    private RestTemplate restTemplate;
+
+    @Override
+    public ResponseEntity<String> listMyCommunity(IPageData pd) {
+        ResponseEntity<String> responseEntity = null;
+        JSONObject _paramObj = JSONObject.parseObject(pd.getReqData());
+        //权限校验
+        checkUserHasPrivilege(pd, restTemplate, PrivilegeCodeConstant.PRIVILEGE_ENTER_COMMUNITY);
+        responseEntity = super.getStoreInfo(pd, restTemplate);
+        if (responseEntity.getStatusCode() != HttpStatus.OK) {
+            return responseEntity;
+        }
+        Assert.jsonObjectHaveKey(responseEntity.getBody().toString(), "storeId", "根据用户ID查询商户ID失败,未包含storeId节点");
+        String storeId = JSONObject.parseObject(responseEntity.getBody().toString()).getString("storeId");
+        String storeTypeCd = JSONObject.parseObject(responseEntity.getBody().toString()).getString("storeTypeCd");
+        Map paramIn = new HashMap();
+        paramIn.put("memberId", storeId);
+        paramIn.put("memberTypeCd", MappingCache.getValue(MappingConstant.DOMAIN_STORE_TYPE_2_COMMUNITY_MEMBER_TYPE, storeTypeCd));
+        paramIn.putAll(_paramObj);
+        responseEntity = this.callCenterService(restTemplate, pd, "",
+                "/communitys/queryStoreCommunitys" + mapToUrlParam(paramIn),
+                HttpMethod.GET);
+
+        if (responseEntity.getStatusCode() != HttpStatus.OK) {
+            return responseEntity;
+        }
+        JSONArray tmpCommunitys = JSONObject.parseObject(responseEntity.getBody().toString()).getJSONArray("data");
+        freshCommunityAttr(tmpCommunitys);
+        responseEntity = new ResponseEntity<String>(tmpCommunitys.toJSONString(),
+                HttpStatus.OK);
+        return responseEntity;
+    }
+
+    /**
+     * 查询未入驻的小区
+     *
+     * @param pd
+     * @return
+     */
+    @Override
+    public ResponseEntity<String> listNoEnterCommunity(IPageData pd) {
+        ResponseEntity<String> responseEntity = null;
+        JSONObject _paramObj = JSONObject.parseObject(pd.getReqData());
+        //权限校验
+        checkUserHasPrivilege(pd, restTemplate, PrivilegeCodeConstant.PRIVILEGE_ENTER_COMMUNITY);
+        responseEntity = super.getStoreInfo(pd, restTemplate);
+        if (responseEntity.getStatusCode() != HttpStatus.OK) {
+            return responseEntity;
+        }
+        Assert.jsonObjectHaveKey(responseEntity.getBody().toString(), "storeId", "根据用户ID查询商户ID失败,未包含storeId节点");
+
+        String storeId = JSONObject.parseObject(responseEntity.getBody().toString()).getString("storeId");
+        String storeTypeCd = JSONObject.parseObject(responseEntity.getBody().toString()).getString("storeTypeCd");
+        String communityName = !_paramObj.containsKey("communityName") ? "" : _paramObj.getString("communityName");
+        //修改用户信息
+        if (StringUtil.isEmpty(communityName)) {
+            responseEntity = this.callCenterService(restTemplate, pd, "",
+                    "query.noEnterCommunity.byMember?"
+                            + "memberTypeCd=" + MappingCache.getValue(MappingConstant.DOMAIN_STORE_TYPE_2_COMMUNITY_MEMBER_TYPE, storeTypeCd),
+                    HttpMethod.GET);
+        } else {
+            responseEntity = this.callCenterService(restTemplate, pd, "",
+                    "query.noEnterCommunity.byMemberAndName?"
+                            + "memberTypeCd=" + MappingCache.getValue(MappingConstant.DOMAIN_STORE_TYPE_2_COMMUNITY_MEMBER_TYPE, storeTypeCd)
+                            + "&name=" + communityName,
+                    HttpMethod.GET);
+        }
+
+        if (responseEntity.getStatusCode() != HttpStatus.OK) {
+            return responseEntity;
+        }
+
+        JSONArray tmpCommunitys = JSONObject.parseObject(responseEntity.getBody().toString()).getJSONArray("communitys");
+        freshCommunityAttr(tmpCommunitys);
+        responseEntity = new ResponseEntity<String>(tmpCommunitys.toJSONString(),
+                HttpStatus.OK);
+        return responseEntity;
+    }
+
+
+    /**
+     * 商户入驻申请接口
+     *
+     * @param pd
+     * @return
+     */
+    @Override
+    public ResponseEntity<String> _saveEnterCommunity(IPageData pd) {
+
+        ResponseEntity<String> responseEntity = null;
+        Assert.jsonObjectHaveKey(pd.getReqData(), "communityId", "请求信息中未包含communityId");
+        JSONObject _paramObj = JSONObject.parseObject(pd.getReqData());
+
+        String communityId = _paramObj.getString("communityId");
+
+        //权限校验
+        checkUserHasPrivilege(pd, restTemplate, PrivilegeCodeConstant.PRIVILEGE_ENTER_COMMUNITY);
+        responseEntity = super.getStoreInfo(pd, restTemplate);
+        if (responseEntity.getStatusCode() != HttpStatus.OK) {
+            return responseEntity;
+        }
+        Assert.jsonObjectHaveKey(responseEntity.getBody().toString(), "storeId", "根据用户ID查询商户ID失败,未包含storeId节点");
+
+        String storeId = JSONObject.parseObject(responseEntity.getBody().toString()).getString("storeId");
+        String storeTypeCd = JSONObject.parseObject(responseEntity.getBody().toString()).getString("storeTypeCd");
+        _paramObj.put("memberId", storeId);
+        _paramObj.put("memberTypeCd", MappingCache.getValue(MappingConstant.DOMAIN_STORE_TYPE_2_COMMUNITY_MEMBER_TYPE, storeTypeCd));
+
+        responseEntity = this.callCenterService(restTemplate, pd, _paramObj.toJSONString(),
+                "member.join.community",
+                HttpMethod.POST);
+
+        return responseEntity;
+    }
+
+    /**
+     * 退出小区
+     *
+     * @param pd
+     * @return
+     */
+    @Override
+    public ResponseEntity<String> exitCommunity(IPageData pd) {
+        ResponseEntity<String> responseEntity = null;
+        Assert.jsonObjectHaveKey(pd.getReqData(), "communityId", "请求信息中未包含communityId");
+        JSONObject _paramObj = JSONObject.parseObject(pd.getReqData());
+
+        String communityId = _paramObj.getString("communityId");
+
+        Assert.hasLength(communityId, "请求报文中communityId为空");
+
+        //权限校验
+        checkUserHasPrivilege(pd, restTemplate, PrivilegeCodeConstant.PRIVILEGE_ENTER_COMMUNITY);
+        responseEntity = super.getStoreInfo(pd, restTemplate);
+        if (responseEntity.getStatusCode() != HttpStatus.OK) {
+            return responseEntity;
+        }
+        Assert.jsonObjectHaveKey(responseEntity.getBody().toString(), "storeId", "根据用户ID查询商户ID失败,未包含storeId节点");
+
+        String storeId = JSONObject.parseObject(responseEntity.getBody().toString()).getString("storeId");
+        String storeTypeCd = JSONObject.parseObject(responseEntity.getBody().toString()).getString("storeTypeCd");
+        JSONObject paramInObj = new JSONObject();
+        paramInObj.put("communityId", communityId);
+        paramInObj.put("memberId", storeId);
+        paramInObj.put("memberTypeCd", MappingCache.getValue(MappingConstant.DOMAIN_STORE_TYPE_2_COMMUNITY_MEMBER_TYPE, storeTypeCd));
+
+        responseEntity = this.callCenterService(restTemplate, pd, paramInObj.toJSONString(),
+                "member.quit.community",
+                HttpMethod.POST);
+
+        return responseEntity;
+    }
+
+
+    private void freshCommunityAttr(JSONArray community) {
+        for (int _communityIndex = 0; _communityIndex < community.size(); _communityIndex++) {
+            JSONObject _community = community.getJSONObject(_communityIndex);
+            if (!_community.containsKey("attrs")) {
+                continue;
+            }
+            JSONArray _attrs = _community.getJSONArray("attrs");
+            for (int _cAttrIndex = 0; _cAttrIndex < _attrs.size(); _cAttrIndex++) {
+                if (AttrCdConstant.SPEC_CD_COMMUNITY_TEL.equals(_attrs.getJSONObject(_cAttrIndex).getString("specCd"))) {
+                    _community.put("tel", _attrs.getJSONObject(_cAttrIndex).getString("value"));
+                }
+            }
+
+        }
+
+    }
+
+    public RestTemplate getRestTemplate() {
+        return restTemplate;
+    }
+
+    public void setRestTemplate(RestTemplate restTemplate) {
+        this.restTemplate = restTemplate;
+    }
+}

+ 90 - 0
springboot/src/main/java/com/java110/boot/smo/impl/NavServiceSMOImpl.java

@@ -0,0 +1,90 @@
+package com.java110.boot.smo.impl;
+
+import com.alibaba.fastjson.JSONArray;
+import com.alibaba.fastjson.JSONObject;
+import com.java110.boot.smo.DefaultAbstractComponentSMO;
+import com.java110.boot.smo.INavServiceSMO;
+import com.java110.core.context.IPageData;
+import com.java110.core.log.LoggerFactory;
+import com.java110.utils.cache.MappingCache;
+import com.java110.utils.constant.StateConstant;
+import com.java110.utils.util.StringUtil;
+import org.slf4j.Logger;
+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.util.Assert;
+import org.springframework.web.client.RestTemplate;
+
+/**
+ * 导航栏业务处理类
+ * Created by Administrator on 2019/4/1.
+ */
+@Service("navServiceSMOImpl")
+public class NavServiceSMOImpl extends DefaultAbstractComponentSMO implements INavServiceSMO {
+    private static Logger logger = LoggerFactory.getLogger(NavServiceSMOImpl.class);
+
+    @Autowired
+    private RestTemplate restTemplate;
+
+
+    /**
+     * 用户退出
+     *
+     * @param pd
+     * @return
+     */
+    @Override
+    public ResponseEntity<String> doExit(IPageData pd) {
+        ResponseEntity<String> responseEntity = null;
+        JSONObject exitInfo = new JSONObject();
+        exitInfo.put("token", pd.getToken());
+        responseEntity = this.callCenterService(restTemplate, pd, exitInfo.toJSONString(),
+                "user.service.logout", HttpMethod.POST);
+
+        return responseEntity;
+    }
+
+    /**
+     * 获取用户信息
+     *
+     * @param pd
+     * @return
+     */
+    @Override
+    public ResponseEntity<String> getUserInfo(IPageData pd) {
+        Assert.hasLength(pd.getUserId(), "用户未登录请先登录");
+        ResponseEntity<String> responseEntity = null;
+        responseEntity = super.getUserInfo(pd, restTemplate);
+        if (responseEntity.getStatusCode() != HttpStatus.OK) {
+            return responseEntity;
+        }
+        JSONObject tmpUserInfo = JSONObject.parseObject(responseEntity.getBody().toString());
+        JSONObject resultUserInfo = new JSONObject();
+        responseEntity = super.getStoreInfo(pd, restTemplate);
+        if (responseEntity.getStatusCode() == HttpStatus.OK && StringUtil.jsonHasKayAndValue(responseEntity.getBody().toString(),"storeTypeCd")) {
+            String storeTypeCd = JSONObject.parseObject(responseEntity.getBody().toString()).getString("storeTypeCd");
+            resultUserInfo.put("storeTypeCd", storeTypeCd);
+        }
+        resultUserInfo.put("name", tmpUserInfo.getString("name"));
+        resultUserInfo.put("address", tmpUserInfo.getString("address"));
+        resultUserInfo.put("sex", tmpUserInfo.getString("sex"));
+        resultUserInfo.put("localtionCd", tmpUserInfo.getString("localtionCd"));
+        resultUserInfo.put("levelCd", tmpUserInfo.getString("levelCd"));
+        //resultUserInfo.put("tel", CommonUtil.mobileEncrypt(tmpUserInfo.getString("tel")));
+        resultUserInfo.put("tel", tmpUserInfo.getString("tel")); // 这里不加密了 因为前台很多地方直接 关联出 用户的手机号 所以 加密了 没法处理 modify by wuxw 2022-07-04
+        resultUserInfo.put("email", tmpUserInfo.getString("email"));
+        resultUserInfo.put("userId",tmpUserInfo.getString("userId"));
+        String watermark = MappingCache.getValue("watermark");
+        resultUserInfo.put("watermark",watermark);
+
+        responseEntity = new ResponseEntity<String>(resultUserInfo.toJSONString(), HttpStatus.OK);
+
+        return responseEntity;
+    }
+
+
+
+}