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

Merge branch 'master' of https://github.com/java110/MicroCommunity

wuxw лет назад: 6
Родитель
Сommit
f39cd4d82c
28 измененных файлов с 255 добавлено и 102 удалено
  1. 8 1
      Api/docker/docker-compose.yml
  2. 60 55
      Api/src/main/java/com/java110/api/listener/menu/QueryMenuServiceListener.java
  3. 8 1
      CommunityService/docker/docker-compose.yml
  4. 8 1
      OrderService/docker/docker-compose.yml
  5. 6 3
      Readme.md
  6. 8 1
      ShopService/docker/docker-compose.yml
  7. 8 1
      StoreService/docker/docker-compose.yml
  8. 8 1
      UserService/docker/docker-compose.yml
  9. 8 1
      WebService/docker/docker-compose.yml
  10. 3 3
      WebService/docker/onStart.sh
  11. 6 6
      WebService/src/main/java/com/java110/web/components/MenuComponent.java
  12. 1 1
      WebService/src/main/java/com/java110/web/smo/IMenuServiceSMO.java
  13. 3 4
      WebService/src/main/java/com/java110/web/smo/impl/MenuServiceSMOImpl.java
  14. 7 0
      WebService/src/main/java/com/java110/web/smo/impl/NavServiceSMOImpl.java
  15. 13 0
      WebService/src/main/resources/components/menu/menu.js
  16. 13 1
      WebService/src/main/resources/components/nav/nav.js
  17. 22 0
      WebService/src/main/resources/static/js/core.js
  18. 1 0
      WebService/src/main/resources/static/js/vc-constant.js
  19. 2 2
      docs/index.html
  20. 5 0
      docs/start/vedio.md
  21. 0 6
      eureka/bin/start_eureka.sh
  22. 0 2
      eureka/docker/Dockerfile
  23. 6 0
      eureka/docker/bin/start_eureka.sh
  24. 19 0
      eureka/docker/docker-compose.yml
  25. 28 10
      java110-common/src/main/java/com/java110/common/util/CommonUtil.java
  26. 0 1
      java110-event/src/main/java/com/java110/event/service/api/ServiceDataFlowListener.java
  27. 2 0
      reBuildAll.sh
  28. 2 1
      restartAll.sh

+ 8 - 1
Api/docker/docker-compose.yml

@@ -9,4 +9,11 @@ services:
        ports:
        - "8008:8008"
        volumes:
-       - ../target/Api.jar:/root/target/Api.jar
+       - ../target/Api.jar:/root/target/Api.jar
+#       extra_hosts:
+#       - "dev.java110.com:192.168.1.18"
+#       - "dev.db.java110.com:192.168.1.18"
+#       - "dev.zk.java110.com:192.168.1.18"
+#       - "dev.kafka.java110.com:192.168.1.18"
+#       - "dev.redis.java110.com:192.168.1.18"
+#       - "api.java110.com:92.168.1.18"

+ 60 - 55
Api/src/main/java/com/java110/api/listener/menu/QueryMenuServiceListener.java

@@ -39,6 +39,7 @@ public class QueryMenuServiceListener extends AbstractServiceApiDataFlowListener
 
     /**
      * 业务处理
+     *
      * @param event
      */
     @Override
@@ -46,30 +47,30 @@ public class QueryMenuServiceListener extends AbstractServiceApiDataFlowListener
         DataFlowContext dataFlowContext = event.getDataFlowContext();
         AppService service = event.getAppService();
         //get 方式下 请求参数会转化到header 中
-        Map<String,String> requestHeaders = dataFlowContext.getRequestHeaders();
-        Assert.hasKey(requestHeaders,"userId","请求信息中未包含userId信息");
+        Map<String, String> requestHeaders = dataFlowContext.getRequestHeaders();
+        Assert.hasKey(requestHeaders, "userId", "请求信息中未包含userId信息");
 
         String userId = requestHeaders.get("userId");
         //根据用户查询 商户类
-        String domain = queryStoreTypeCd(dataFlowContext,userId);
-        domain = StringUtil.isEmpty(domain)?"-1":domain;
-        ResponseEntity responseEntity= null;
-        String requestUrl = service.getUrl() + "?userId="+userId+"&domain="+domain;
-        dataFlowContext.getRequestHeaders().put("REQUEST_URL",requestUrl);
+        String domain = queryStoreTypeCd(dataFlowContext, userId);
+        domain = StringUtil.isEmpty(domain) ? "-1" : domain;
+        ResponseEntity responseEntity = null;
+        String requestUrl = service.getUrl() + "?userId=" + userId + "&domain=" + domain;
+        dataFlowContext.getRequestHeaders().put("REQUEST_URL", requestUrl);
         HttpHeaders header = new HttpHeaders();
-        header.add(CommonConstant.HTTP_SERVICE.toLowerCase(),ServiceCodeConstant.SERVICE_CODE_QUERY_MENU_INFO);
+        header.add(CommonConstant.HTTP_SERVICE.toLowerCase(), ServiceCodeConstant.SERVICE_CODE_QUERY_MENU_INFO);
         HttpEntity<String> httpEntity = new HttpEntity<String>("", header);
-        doRequest(dataFlowContext,service,httpEntity);
+        doRequest(dataFlowContext, service, httpEntity);
         responseEntity = dataFlowContext.getResponseEntity();
         //如果调用后端失败了 则直接返回
-        if(responseEntity.getStatusCode() != HttpStatus.OK){
-            return ;
+        if (responseEntity.getStatusCode() != HttpStatus.OK) {
+            return;
         }
 
         JSONObject resultObj = JSONObject.parseObject(responseEntity.getBody().toString());
 
-        if(!resultObj.containsKey("menus")){
-            return ;
+        if (!resultObj.containsKey("menus")) {
+            return;
         }
 
         dataFlowContext.setResponseEntity(refreshMenusInfo(resultObj.getJSONArray("menus")));
@@ -78,26 +79,27 @@ public class QueryMenuServiceListener extends AbstractServiceApiDataFlowListener
 
     /**
      * 根据用户ID查询商户信息
+     *
      * @param dataFlowContext
      * @param userId
      * @return
      */
-    private String queryStoreTypeCd(DataFlowContext dataFlowContext,String userId){
-        ResponseEntity responseEntity= null;
+    private String queryStoreTypeCd(DataFlowContext dataFlowContext, String userId) {
+        ResponseEntity responseEntity = null;
         AppService appService = DataFlowFactory.getService(dataFlowContext.getAppId(), ServiceCodeConstant.SERVICE_CODE_QUERY_STORE_BYUSER);
-        if(appService == null){
-            responseEntity = new ResponseEntity<String>("当前没有权限访问"+ServiceCodeConstant.SERVICE_CODE_QUERY_USER_LOGIN,HttpStatus.UNAUTHORIZED);
+        if (appService == null) {
+            responseEntity = new ResponseEntity<String>("当前没有权限访问" + ServiceCodeConstant.SERVICE_CODE_QUERY_USER_LOGIN, HttpStatus.UNAUTHORIZED);
             dataFlowContext.setResponseEntity(responseEntity);
             return "";
         }
-        String requestUrl = appService.getUrl() + "?userId="+userId;
+        String requestUrl = appService.getUrl() + "?userId=" + userId;
         HttpHeaders header = new HttpHeaders();
-        header.add(CommonConstant.HTTP_SERVICE.toLowerCase(),ServiceCodeConstant.SERVICE_CODE_QUERY_STORE_BYUSER);
+        header.add(CommonConstant.HTTP_SERVICE.toLowerCase(), ServiceCodeConstant.SERVICE_CODE_QUERY_STORE_BYUSER);
         HttpEntity<String> httpEntity = new HttpEntity<String>("", header);
-        doRequest(dataFlowContext,appService,httpEntity);
+        doRequest(dataFlowContext, appService, httpEntity);
         responseEntity = dataFlowContext.getResponseEntity();
 
-        if(responseEntity.getStatusCode() != HttpStatus.OK){
+        if (responseEntity.getStatusCode() != HttpStatus.OK) {
             dataFlowContext.setResponseEntity(responseEntity);
         }
 
@@ -107,62 +109,65 @@ public class QueryMenuServiceListener extends AbstractServiceApiDataFlowListener
     /**
      * 刷新菜单信息
      * 将 数据 [{
-     "gId": "800201904001",
-     "menuDescription": "添加员工",
-     "menuGroupSeq": 1,
-     "menuSeq": 1,
-     "icon": "fa-desktop",
-     "mId": "700201904001",
-     "menuName": "添加员工",
-     "pId": "500201904001",
-     "menuGroupName": "员工管理",
-     "label": "",
-     "menuGroupDescription": "员工管理",
-     "url": "/"
-     }],
-     转为:
+     * "gId": "800201904001",
+     * "menuDescription": "添加员工",
+     * "menuGroupSeq": 1,
+     * "menuSeq": 1,
+     * "icon": "fa-desktop",
+     * "mId": "700201904001",
+     * "menuName": "添加员工",
+     * "pId": "500201904001",
+     * "menuGroupName": "员工管理",
+     * "label": "",
+     * "menuGroupDescription": "员工管理",
+     * "url": "/"
+     * }],
+     * 转为:
      * "[{'id':1,'icon':'fa-desktop','name':'我的菜单','label':'HOT','childs':[" +
-     "{'name':'子菜单','href':'http://www.baidu.com'}]}," +
-     "{'id':2,'icon':'fa-flask','name':'我的菜单','childs':[],'href':'/doc'}," +
-     "{'id':3,'icon':'fa-globe','name':'我的菜单','childs':[{'name':'子菜单','href':'http://www.baidu.com'}]}" +
-     "]";
-     * @param menusList 菜单列表
+     * "{'name':'子菜单','href':'http://www.baidu.com'}]}," +
+     * "{'id':2,'icon':'fa-flask','name':'我的菜单','childs':[],'href':'/doc'}," +
+     * "{'id':3,'icon':'fa-globe','name':'我的菜单','childs':[{'name':'子菜单','href':'http://www.baidu.com'}]}" +
+     * "]";
      *
+     * @param menusList 菜单列表
      * @return
      */
-    private ResponseEntity<String> refreshMenusInfo(JSONArray menusList){
+    private ResponseEntity<String> refreshMenusInfo(JSONArray menusList) {
         JSONArray tempMenus = new JSONArray();
         JSONObject tempMenu = null;
-        for(int menuIndex = 0 ; menuIndex < menusList.size(); menuIndex ++){
+        for (int menuIndex = 0; menuIndex < menusList.size(); menuIndex++) {
             JSONObject tMenu = menusList.getJSONObject(menuIndex);
-            tempMenu = this.getMenuFromMenus(tempMenus,tMenu.getString("gId"));
-            if(tempMenu == null){
+            tempMenu = this.getMenuFromMenus(tempMenus, tMenu.getString("gId"));
+            if (tempMenu == null) {
                 tempMenu = new JSONObject();
-                tempMenu.put("id",tMenu.getString("gId"));
-                tempMenu.put("icon",tMenu.getString("icon"));
-                tempMenu.put("name",tMenu.getString("menuGroupName"));
-                tempMenu.put("label",tMenu.getString("label"));
-                tempMenu.put("childs",new JSONArray());
+                tempMenu.put("id", tMenu.getString("gId"));
+                tempMenu.put("icon", tMenu.getString("icon"));
+                tempMenu.put("name", tMenu.getString("menuGroupName"));
+                tempMenu.put("label", tMenu.getString("label"));
+                tempMenu.put("seq", tMenu.getString("menuGroupSeq"));
+                tempMenu.put("childs", new JSONArray());
                 tempMenus.add(tempMenu);
             }
             //获取孩子菜单
             JSONArray childs = tempMenu.getJSONArray("childs");
             JSONObject childMenu = new JSONObject();
-            childMenu.put("name",tMenu.getString("menuName"));
-            childMenu.put("href",tMenu.getString("url"));
+            childMenu.put("name", tMenu.getString("menuName"));
+            childMenu.put("href", tMenu.getString("url"));
+            childMenu.put("seq", tMenu.getString("menuSeq"));
             childs.add(childMenu);
         }
-        return new ResponseEntity<String>(tempMenus.toJSONString(),HttpStatus.OK);
+        return new ResponseEntity<String>(tempMenus.toJSONString(), HttpStatus.OK);
     }
 
     /**
      * 在菜单列表查询菜单
+     *
      * @param gId
      * @return
      */
-    private JSONObject getMenuFromMenus(JSONArray tempMenus,String gId){
-        for(int tempIndex = 0 ; tempIndex < tempMenus.size();tempIndex ++){
-            if(tempMenus.getJSONObject(tempIndex).getString("id").equals(gId)){
+    private JSONObject getMenuFromMenus(JSONArray tempMenus, String gId) {
+        for (int tempIndex = 0; tempIndex < tempMenus.size(); tempIndex++) {
+            if (tempMenus.getJSONObject(tempIndex).getString("id").equals(gId)) {
                 return tempMenus.getJSONObject(tempIndex);
             }
         }

+ 8 - 1
CommunityService/docker/docker-compose.yml

@@ -9,4 +9,11 @@ services:
        ports:
        - "8009:8009"
        volumes:
-       - ../target/CommunityService.jar:/root/target/CommunityService.jar
+       - ../target/CommunityService.jar:/root/target/CommunityService.jar
+#       extra_hosts:
+#       - "dev.java110.com:192.168.1.18"
+#       - "dev.db.java110.com:192.168.1.18"
+#       - "dev.zk.java110.com:192.168.1.18"
+#       - "dev.kafka.java110.com:192.168.1.18"
+#       - "dev.redis.java110.com:192.168.1.18"
+#       - "api.java110.com:92.168.1.18"

+ 8 - 1
OrderService/docker/docker-compose.yml

@@ -9,4 +9,11 @@ services:
        ports:
        - "8001:8001"
        volumes:
-       - ../target/OrderService.jar:/root/target/OrderService.jar
+       - ../target/OrderService.jar:/root/target/OrderService.jar
+#       extra_hosts:
+#       - "dev.java110.com:192.168.1.18"
+#       - "dev.db.java110.com:192.168.1.18"
+#       - "dev.zk.java110.com:192.168.1.18"
+#       - "dev.kafka.java110.com:192.168.1.18"
+#       - "dev.redis.java110.com:192.168.1.18"
+#       - "api.java110.com:92.168.1.18"

+ 6 - 3
Readme.md

@@ -5,9 +5,11 @@ v0.01|初稿|2018-07-24|wuxw
 
 ### 代码分享视频
 
-1、[小区管理系统源码讲解](http://www.iqiyi.com/w_19s7u6le2p.html#vfrm=16-1-1-1)
+1、[安装视频](http://www.iqiyi.com/w_19s9dzcnp9.html)
 
-2、[小区管理系统服务端开发视频](http://www.iqiyi.com/w_19s7omicex.html#curid=38432723509_ef5ddb9c572fa848bcdd80f193d78eeb)
+2、[小区管理系统源码讲解](http://www.iqiyi.com/w_19s7u6le2p.html#vfrm=16-1-1-1)
+
+3、[小区管理系统服务端开发视频](http://www.iqiyi.com/w_19s7omicex.html#curid=38432723509_ef5ddb9c572fa848bcdd80f193d78eeb)
 
 ### 分支说明(branch)
 
@@ -38,7 +40,7 @@ Java + spring cloud + mybatis + mysql + kafka + redis
 
 ### 如何安装(how to install)
 
-[从这里安装](docs/install.md)
+[安装文档](docs/install.md)
 
 ### 解决方案
 
@@ -79,6 +81,7 @@ Java + spring cloud + mybatis + mysql + kafka + redis
 ### 成为开发者
 
 如果您对小区 物业 有较深的理解,也致力于开发一套系统方便与物业,业主沟通交流,如果您还有空闲的时间,不怕吃苦,hc小区开发团队欢迎您的加入!
+qq群号 992420128
 
 ![image](join_me.JPG)
 

+ 8 - 1
ShopService/docker/docker-compose.yml

@@ -9,4 +9,11 @@ services:
        ports:
        - "8007:8007"
        volumes:
-       - ../target/ShopService.jar:/root/target/ShopService.jar
+       - ../target/ShopService.jar:/root/target/ShopService.jar
+#       extra_hosts:
+#       - "dev.java110.com:192.168.1.18"
+#       - "dev.db.java110.com:192.168.1.18"
+#       - "dev.zk.java110.com:192.168.1.18"
+#       - "dev.kafka.java110.com:192.168.1.18"
+#       - "dev.redis.java110.com:192.168.1.18"
+#       - "api.java110.com:92.168.1.18"

+ 8 - 1
StoreService/docker/docker-compose.yml

@@ -9,4 +9,11 @@ services:
        ports:
        - "8006:8006"
        volumes:
-       - ../target/StoreService.jar:/root/target/StoreService.jar
+       - ../target/StoreService.jar:/root/target/StoreService.jar
+#       extra_hosts:
+#       - "dev.java110.com:192.168.1.18"
+#       - "dev.db.java110.com:192.168.1.18"
+#       - "dev.zk.java110.com:192.168.1.18"
+#       - "dev.kafka.java110.com:192.168.1.18"
+#       - "dev.redis.java110.com:192.168.1.18"
+#       - "api.java110.com:92.168.1.18"

+ 8 - 1
UserService/docker/docker-compose.yml

@@ -9,4 +9,11 @@ services:
        ports:
        - "8002:8002"
        volumes:
-       - ../target/UserService.jar:/root/target/UserService.jar
+       - ../target/UserService.jar:/root/target/UserService.jar
+#       extra_hosts:
+#       - "dev.java110.com:192.168.1.18"
+#       - "dev.db.java110.com:192.168.1.18"
+#       - "dev.zk.java110.com:192.168.1.18"
+#       - "dev.kafka.java110.com:192.168.1.18"
+#       - "dev.redis.java110.com:192.168.1.18"
+#       - "api.java110.com:92.168.1.18"

+ 8 - 1
WebService/docker/docker-compose.yml

@@ -9,4 +9,11 @@ services:
        ports:
        - "443:8443"
        volumes:
-       - ../target/WebService.jar:/root/target/WebService.jar
+       - ../target/WebService.jar:/root/target/WebService.jar
+#       extra_hosts:
+#       - "dev.java110.com:192.168.1.18"
+#       - "dev.db.java110.com:192.168.1.18"
+#       - "dev.zk.java110.com:192.168.1.18"
+#       - "dev.kafka.java110.com:192.168.1.18"
+#       - "dev.redis.java110.com:192.168.1.18"
+#       - "api.java110.com:92.168.1.18"

+ 3 - 3
WebService/docker/onStart.sh

@@ -4,8 +4,8 @@ cp -r ../bin .
 
 cp  -r ../target .
 
-docker build -t java110/console .
+docker build -t java110/web .
 
-docker run -ti --name console_test -p8443:8443 -idt java110/console:latest
+docker run -ti --name web_test -p8443:8443 -idt java110/web:latest
 
-docker logs -f console_test
+docker logs -f web_test

+ 6 - 6
WebService/src/main/java/com/java110/web/components/MenuComponent.java

@@ -1,6 +1,5 @@
 package com.java110.web.components;
 
-import com.alibaba.fastjson.JSONArray;
 import com.java110.core.context.IPageData;
 import com.java110.web.smo.IMenuServiceSMO;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -20,9 +19,10 @@ public class MenuComponent {
 
     /**
      * 测试版本号
+     *
      * @return
      */
-    public ResponseEntity<String> getMenus(IPageData pd){
+    public ResponseEntity<String> getMenus(IPageData pd) {
 
        /* String menuData = "[{'id':1,'icon':'fa-desktop','name':'我的菜单','label':'HOT','childs':[" +
                 "{'name':'子菜单','href':'http://www.baidu.com'}]}," +
@@ -36,11 +36,11 @@ public class MenuComponent {
 
         */
         ResponseEntity<String> responseEntity = null;
-        try{
-            responseEntity =  menuServiceSMOImpl.queryMenusByUserId(pd);
-        }catch (Exception e){
+        try {
+            responseEntity = menuServiceSMOImpl.queryMenusByUserId(pd);
+        } catch (Exception e) {
             responseEntity = new ResponseEntity<String>(e.getMessage(), HttpStatus.INTERNAL_SERVER_ERROR);
-        }finally {
+        } finally {
             return responseEntity;
         }
     }

+ 1 - 1
WebService/src/main/java/com/java110/web/smo/IMenuServiceSMO.java

@@ -12,6 +12,6 @@ public interface IMenuServiceSMO {
      * 根据用户查菜单
      * @return
      */
-    public ResponseEntity<String> queryMenusByUserId(IPageData pd);
+     ResponseEntity<String> queryMenusByUserId(IPageData pd);
 
 }

+ 3 - 4
WebService/src/main/java/com/java110/web/smo/impl/MenuServiceSMOImpl.java

@@ -30,7 +30,6 @@ public class MenuServiceSMOImpl extends BaseComponentSMO implements IMenuService
 
 
     /**
-     *
      * @param pd
      * @return
      */
@@ -38,10 +37,10 @@ public class MenuServiceSMOImpl extends BaseComponentSMO implements IMenuService
     public ResponseEntity<String> queryMenusByUserId(IPageData pd) {
         ResponseEntity<String> responseEntity = null;
 
-        Assert.hasLength(pd.getUserId(),"用户还没有登录");
+        Assert.hasLength(pd.getUserId(), "用户还没有登录");
 
-        responseEntity = this.callCenterService(restTemplate,pd,"",
-                ServiceConstant.SERVICE_API_URL+"/api/query.menu.info?userId="+pd.getUserId(), HttpMethod.GET);
+        responseEntity = this.callCenterService(restTemplate, pd, "",
+                ServiceConstant.SERVICE_API_URL + "/api/query.menu.info?userId=" + pd.getUserId(), HttpMethod.GET);
         return responseEntity;
     }
 

+ 7 - 0
WebService/src/main/java/com/java110/web/smo/impl/NavServiceSMOImpl.java

@@ -4,6 +4,7 @@ import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONObject;
 import com.java110.common.constant.ServiceConstant;
 import com.java110.common.constant.StatusConstant;
+import com.java110.common.util.CommonUtil;
 import com.java110.core.context.IPageData;
 import com.java110.web.core.BaseComponentSMO;
 import com.java110.web.smo.ICommunityServiceSMO;
@@ -79,6 +80,12 @@ public class NavServiceSMOImpl extends BaseComponentSMO implements INavServiceSM
             JSONObject tmpUserInfo = JSONObject.parseObject(responseEntity.getBody().toString());
             JSONObject resultUserInfo = new JSONObject();
             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("email", tmpUserInfo.getString("email"));
             responseEntity = new ResponseEntity<String>(resultUserInfo.toJSONString(), HttpStatus.OK);
         }
         return responseEntity;

+ 13 - 0
WebService/src/main/resources/components/menu/menu.js

@@ -42,6 +42,15 @@
            },
            refreshMenuActive:function(jsonArray,_id){
                 for(var menuIndex =0 ; menuIndex < jsonArray.length;menuIndex ++){
+
+                    if(jsonArray[menuIndex].hasOwnProperty('childs')){
+                        var _childs = jsonArray[menuIndex].childs;
+                        _childs.sort(function(_child,_newChild){
+                            return _child.seq - _newChild.seq
+                        });
+                        jsonArray[menuIndex].childs = _childs;
+                    }
+
                     if(_id === jsonArray[menuIndex].id){
                         if(jsonArray[menuIndex].active === true){
                             //如果当前本身是打开状态,说明 需要关闭
@@ -54,6 +63,10 @@
                     jsonArray[menuIndex].active=false;
                 }
 
+                jsonArray.sort(function(a,b){
+                			return a.seq - b.seq
+                });
+
                 return  jsonArray;
            },
            switchMenu:function(_id){

+ 13 - 1
WebService/src/main/resources/components/nav/nav.js

@@ -17,10 +17,11 @@
         mounted:function(){
             this.getNavCommunity();
             this.getNavData();
-            this.getUserInfo();
+            //this.getUserInfo();
         },
         methods:{
             getNavData:function(){
+
                 var param = {
                     msg:'123',
                 };
@@ -59,6 +60,12 @@
                            );
             },
             getUserInfo:function(){
+//                var _userInfo = vc.getData("_userInfo");
+//                //浏览器缓存中能获取到
+//                if(_userInfo != null && _userInfo != undefined){
+//                    vm.userName = _userInfo.name;
+//                    return ;
+//                }
                 //获取用户名
                 var param = {
                                     msg:'123',
@@ -71,7 +78,9 @@
                              function(json,res){
                                 if(res.status == 200){
                                     var tmpUserInfo = JSON.parse(json);
+                                    console.log(vm,tmpUserInfo);
                                    vm.userName = tmpUserInfo.name;
+//                                   vc.saveData("_userInfo",tmpUserInfo);
                                }
                              },function(){
                                 console.log('请求失败处理');
@@ -124,4 +133,7 @@
 
 
     });
+
+     vm.getUserInfo();
+
 })(window.vc);

+ 22 - 0
WebService/src/main/resources/static/js/core.js

@@ -69,10 +69,23 @@
                 });
         },
         get:function(componentCode,componentMethod,param,successCallback,errorCallback){
+                //加入缓存机制
+                var _getPath = '/'+componentCode +'/' +componentMethod;
+                if(vc.constant.GET_CACHE_URL.includes(_getPath)){
+                    var _cacheData = vc.getData(_getPath);
+                    //浏览器缓存中能获取到
+                    if(_cacheData != null && _cacheData != undefined){
+                        successCallback(JSON.stringify(_cacheData),{status:200});
+                        return ;
+                    }
+                }
                 vc.loading('open');
                 Vue.http.get('/callComponent/'+componentCode +"/"+componentMethod, param)
                 .then(function(res){
                     successCallback(res.bodyText,res);
+                    if(vc.constant.GET_CACHE_URL.includes(_getPath) && res.status == 200){
+                         vc.saveData(_getPath,JSON.parse(res.bodyText));
+                    }
                     vc.loading('close');
                 }, function(error){
                     errorCallback(error.bodyText,error);
@@ -146,6 +159,15 @@
         return JSON.parse(window.localStorage.getItem('hc_menus'));
     };
 
+    //保存用户菜单
+    vc.saveData = function(_key,_value){
+        window.localStorage.setItem(_key,JSON.stringify(_value));
+    };
+    //获取用户菜单
+    vc.getData = function(_key){
+        return JSON.parse(window.localStorage.getItem(_key));
+    };
+
     //保存当前小区信息 _communityInfo : {"communityId":"123213","name":"测试小区"}
     vc.setCurrentCommunity = function(_currentCommunityInfo){
         window.localStorage.setItem('hc_currentCommunityInfo',JSON.stringify(_currentCommunityInfo));

+ 1 - 0
WebService/src/main/resources/static/js/vc-constant.js

@@ -5,6 +5,7 @@
 
     var constant = {
         REQUIRED_MSG:"不能为空",
+        GET_CACHE_URL:["/nav/getUserInfo"]
     }
     vc.constant = constant;
 })(window.vc);

+ 2 - 2
docs/index.html

@@ -12,8 +12,8 @@
 </head>
 <body>
 <nav>
-    <a href="https://www.iqiyi.com/w_19s7u6le2p.html">视频</a>
-    <a href="http://blog.java110.com">博客</a>
+    <a href="https://www.java110.com/#/start/vedio">视频</a>
+    <a target="_blank" href="https://demo.java110.com">演示环境</a>
 </nav>
 <div id="app"></div>
 <script>

+ 5 - 0
docs/start/vedio.md

@@ -3,6 +3,11 @@
 :-: | :-: | :-: | :-:
 v0.01|初稿|2019-04-22|wuxw
 
+
+## 小区管理系统安装视频
+
+[点这里](http://www.iqiyi.com/w_19s9dzcnp9.html)
+
 ## 小区管理系统代码分享视频
 
 [点这里](http://www.iqiyi.com/w_19s7u6le2p.html#vfrm=16-1-1-1)

+ 0 - 6
eureka/bin/start_eureka.sh

@@ -1,6 +0,0 @@
-#!/bin/bash
-
-#### normal dev model
-nohup java -jar target/eureka.jar > eureka.log $1 2>&1 &
-
-tail -100f eureka.log

+ 0 - 2
eureka/docker/Dockerfile

@@ -1,8 +1,6 @@
 FROM registry.cn-beijing.aliyuncs.com/sxd/ubuntu-java8:1.0
 MAINTAINER wuxw <wuxw7@asiainfo.com>
 
-ADD target/eureka.jar /root/target/
-
 ADD bin/start_eureka.sh /root/
 
 

+ 6 - 0
eureka/docker/bin/start_eureka.sh

@@ -0,0 +1,6 @@
+#!/bin/bash
+
+#### normal dev model
+nohup java -jar target/eureka.jar > eureka.log 2>&1 &
+
+tail -100f eureka.log

+ 19 - 0
eureka/docker/docker-compose.yml

@@ -0,0 +1,19 @@
+version: '2'
+services:
+   eureka:
+       container_name: eureka-1
+       build:
+          context: .
+          dockerfile: Dockerfile
+       restart: always
+       ports:
+       - "8761:8761"
+       volumes:
+       - ../target/eureka.jar:/root/target/eureka.jar
+#       extra_hosts:
+#       - "dev.java110.com:192.168.1.18"
+#       - "dev.db.java110.com:192.168.1.18"
+#       - "dev.zk.java110.com:192.168.1.18"
+#       - "dev.kafka.java110.com:192.168.1.18"
+#       - "dev.redis.java110.com:192.168.1.18"
+#       - "api.java110.com:92.168.1.18"

+ 28 - 10
java110-common/src/main/java/com/java110/common/util/CommonUtil.java

@@ -16,10 +16,11 @@ public class CommonUtil extends LoggerEngine {
     /**
      * 将 30*1000 转为 30000
      * 不能出现小数点等
+     *
      * @param val
      * @return
      */
-    public static int multiplicativeStringToInteger(String val){
+    public static int multiplicativeStringToInteger(String val) {
         try {
             if (StringUtils.isEmpty(val)) {
                 return 0;
@@ -27,19 +28,19 @@ public class CommonUtil extends LoggerEngine {
             if (val.contains("*")) {
                 String[] vals = val.split("\\*");
                 int value = 1;
-                for(int vIndex = 0 ; vIndex < vals.length;vIndex++){
-                    if(!NumberUtils.isNumber(vals[vIndex])){
+                for (int vIndex = 0; vIndex < vals.length; vIndex++) {
+                    if (!NumberUtils.isNumber(vals[vIndex])) {
                         throw new ClassCastException("配置的数据有问题,必须配置为30*1000格式");
                     }
                     value *= Integer.parseInt(vals[vIndex]);
                 }
                 return value;
             }
-            if(NumberUtils.isNumber(val)){
+            if (NumberUtils.isNumber(val)) {
                 return Integer.parseInt(val);
             }
-        }catch (Exception e){
-            logger.error("---------------[CommonUtil.multiplicativeStringToInteger]----------------类型转换失败",e);
+        } catch (Exception e) {
+            logger.error("---------------[CommonUtil.multiplicativeStringToInteger]----------------类型转换失败", e);
             return 0;
         }
         return 0;
@@ -47,19 +48,36 @@ public class CommonUtil extends LoggerEngine {
 
     /**
      * 生成六位验证码
+     *
      * @return
      */
-    public static String generateVerificationCode(){
+    public static String generateVerificationCode() {
         Random random = new Random();
 
-        String result="";
-        for(int i=0;i<6;i++){
-            result+=random.nextInt(10);
+        String result = "";
+        for (int i = 0; i < 6; i++) {
+            result += random.nextInt(10);
         }
 
         return result;
     }
 
+    // 手机号码前三后四脱敏
+    public static String mobileEncrypt(String mobile) {
+        if (StringUtils.isEmpty(mobile) || (mobile.length() != 11)) {
+            return mobile;
+        }
+        return mobile.replaceAll("(\\d{3})\\d{4}(\\d{4})", "$1****$2");
+    }
+
+    //身份证前三后四脱敏
+    public static String idEncrypt(String id) {
+        if (StringUtils.isEmpty(id) || (id.length() < 8)) {
+            return id;
+        }
+        return id.replaceAll("(?<=\\w{3})\\w(?=\\w{4})", "*");
+    }
+
 
     //效验
     public static boolean sqlValidate(String str) {

+ 0 - 1
java110-event/src/main/java/com/java110/event/service/api/ServiceDataFlowListener.java

@@ -1,7 +1,6 @@
 package com.java110.event.service.api;
 
 import com.java110.event.app.order.Ordered;
-import com.java110.event.service.BusinessServiceDataFlowEvent;
 import org.springframework.http.HttpMethod;
 
 import java.util.EventListener;

+ 2 - 0
reBuildAll.sh

@@ -5,9 +5,11 @@ git pull origin master
 mvn clean install -Dmaven.test.skip=true
 mvn package -Dmaven.test.skip=true
 
+#docker-compose -f ./eureka/docker/docker-compose.yml       up -d --build --force-recreate;
 docker-compose -f ./Api/docker/docker-compose.yml       up -d --build --force-recreate;
 docker-compose -f ./OrderService/docker/docker-compose.yml       up -d --build --force-recreate;
 docker-compose -f ./CommunityService/docker/docker-compose.yml       up -d --build --force-recreate;
 docker-compose -f ./StoreService/docker/docker-compose.yml       up -d --build --force-recreate;
 docker-compose -f ./UserService/docker/docker-compose.yml       up -d --build --force-recreate;
+docker-compose -f ./WebService/docker/docker-compose.yml       up -d --build --force-recreate;
 

+ 2 - 1
restartAll.sh

@@ -4,4 +4,5 @@ docker-compose -f ./Api/docker/docker-compose.yml        restart;
 docker-compose -f ./OrderService/docker/docker-compose.yml      restart;
 docker-compose -f ./CommunityService/docker/docker-compose.yml       restart;
 docker-compose -f ./StoreService/docker/docker-compose.yml       restart;
-docker-compose -f ./UserService/docker/docker-compose.yml       restart;
+docker-compose -f ./UserService/docker/docker-compose.yml       restart;
+docker-compose -f ./WebService/docker/docker-compose.yml       restart;