Browse Source

Merge branch 'dev' of chenweida/jw2.0 into dev

chenweida 7 years ago
parent
commit
501d6a074b
94 changed files with 1653 additions and 1343 deletions
  1. 32 27
      common/common-rest-model/src/main/java/com/yihu/jw/restmodel/base/base/BaseContants.java
  2. 43 16
      common/common-rest-model/src/main/java/com/yihu/jw/restmodel/base/base/MFunction.java
  3. 35 15
      common/common-rest-model/src/main/java/com/yihu/jw/restmodel/base/base/MModule.java
  4. 46 37
      common/common-rest-model/src/main/java/com/yihu/jw/restmodel/base/version/BaseVersionContants.java
  5. 24 0
      common/common-rest-model/src/main/java/com/yihu/jw/restmodel/base/version/MBaseServerVersion.java
  6. 9 0
      common/common-rest-model/src/main/java/com/yihu/jw/restmodel/wx/MWxGraphicMessage.java
  7. 11 1
      common/common-rest-model/src/main/java/com/yihu/jw/restmodel/wx/MWxMenu.java
  8. 30 0
      common/common-rest-model/src/main/java/com/yihu/jw/restmodel/wx/MWxTemplate.java
  9. 20 8
      common/common-rest-model/src/main/java/com/yihu/jw/restmodel/wx/MWxWechat.java
  10. 2 3
      common/common-swagger/src/main/java/com/yihu/jw/config/SwaggerConfig.java
  11. 19 28
      svr-configuration/pom.xml
  12. 3 3
      svr-configuration/src/main/resources/application.yml
  13. 6 23
      svr-configuration/src/main/resources/bootstrap.yml
  14. 1 1
      svr-dashboard/src/main/resources/application.yml
  15. 3 3
      svr-dashboard/src/main/resources/bootstrap.yml
  16. 18 0
      svr-discovery/pom.xml
  17. 1 1
      svr-discovery/src/main/resources/application.yml
  18. 21 11
      svr-lib-parent-pom/pom.xml
  19. 1 1
      svr-lib-parent-pom/readme.MD
  20. 20 0
      svr-logServer/pom.xml
  21. 5 5
      svr-logServer/src/main/resources/bootstrap.yml
  22. 19 0
      svr/svr-base/pom.xml
  23. 49 13
      svr/svr-base/src/main/java/com/yihu/jw/base/controller/base/FunctionController.java
  24. 42 35
      svr/svr-base/src/main/java/com/yihu/jw/base/controller/base/ModuleController.java
  25. 8 0
      svr/svr-base/src/main/java/com/yihu/jw/base/dao/base/FunctionDao.java
  26. 9 0
      svr/svr-base/src/main/java/com/yihu/jw/base/dao/base/ModuleDao.java
  27. 13 0
      svr/svr-base/src/main/java/com/yihu/jw/base/dao/base/ModuleFunctionDao.java
  28. 23 1
      svr/svr-base/src/main/java/com/yihu/jw/base/model/base/Function.java
  29. 22 0
      svr/svr-base/src/main/java/com/yihu/jw/base/model/base/Module.java
  30. 3 7
      svr/svr-base/src/main/java/com/yihu/jw/base/model/base/ModuleFunction.java
  31. 52 0
      svr/svr-base/src/main/java/com/yihu/jw/base/service/base/FunctionService.java
  32. 37 0
      svr/svr-base/src/main/java/com/yihu/jw/base/service/base/ModuleService.java
  33. 50 31
      svr/svr-base/src/main/java/com/yihu/jw/version/controller/ServerVersionController.java
  34. 13 10
      svr/svr-base/src/main/java/com/yihu/jw/version/controller/WlyyVersionController.java
  35. 6 0
      svr/svr-base/src/main/java/com/yihu/jw/version/dao/ServerVersionDao.java
  36. 29 71
      svr/svr-base/src/main/java/com/yihu/jw/version/model/BaseServerVersion.java
  37. 10 59
      svr/svr-base/src/main/java/com/yihu/jw/version/model/BaseServerVersionLog.java
  38. 0 65
      svr/svr-base/src/main/java/com/yihu/jw/version/model/WlyyVersion.java
  39. 2 34
      svr/svr-base/src/main/java/com/yihu/jw/version/service/ServerVersionLogService.java
  40. 50 17
      svr/svr-base/src/main/java/com/yihu/jw/version/service/ServerVersionService.java
  41. 22 15
      svr/svr-base/src/main/java/com/yihu/jw/version/service/WlyyVersionService.java
  42. 14 5
      svr/svr-base/src/main/java/com/yihu/jw/wx/controller/WxMenuController.java
  43. 17 15
      svr/svr-base/src/main/java/com/yihu/jw/wx/controller/WxTemplateController.java
  44. 5 0
      svr/svr-base/src/main/java/com/yihu/jw/wx/dao/WxTemplateDao.java
  45. 10 0
      svr/svr-base/src/main/java/com/yihu/jw/wx/model/WxGraphicMessage.java
  46. 22 1
      svr/svr-base/src/main/java/com/yihu/jw/wx/model/WxMenu.java
  47. 9 0
      svr/svr-base/src/main/java/com/yihu/jw/wx/model/WxTemplate.java
  48. 16 3
      svr/svr-base/src/main/java/com/yihu/jw/wx/model/WxWechat.java
  49. 2 1
      svr/svr-base/src/main/java/com/yihu/jw/wx/service/WxMenuService.java
  50. 6 0
      svr/svr-base/src/main/java/com/yihu/jw/wx/service/WxTemplateService.java
  51. 3 3
      svr/svr-base/src/main/resources/application.yml
  52. 5 5
      svr/svr-base/src/main/resources/bootstrap.yml
  53. 5 22
      svr/svr-manage/pom.xml
  54. 14 1
      svr/svr-manage/src/main/java/com/yihu/jw/manage/controller/login/LoginController.java
  55. 19 20
      svr/svr-manage/src/main/java/com/yihu/jw/manage/controller/system/MenuController.java
  56. 6 7
      svr/svr-manage/src/main/java/com/yihu/jw/manage/controller/system/RoleController.java
  57. 12 5
      svr/svr-manage/src/main/java/com/yihu/jw/manage/controller/system/UserController.java
  58. 16 8
      svr/svr-manage/src/main/java/com/yihu/jw/manage/controller/wechat/GraphicMessageController.java
  59. 17 9
      svr/svr-manage/src/main/java/com/yihu/jw/manage/controller/wechat/WechatConfigController.java
  60. 2 0
      svr/svr-manage/src/main/java/com/yihu/jw/manage/dao/system/UserDao.java
  61. 47 10
      svr/svr-manage/src/main/java/com/yihu/jw/manage/interceptors/UserInterceptor.java
  62. 10 0
      svr/svr-manage/src/main/java/com/yihu/jw/manage/model/system/ManageMenu.java
  63. 1 1
      svr/svr-manage/src/main/java/com/yihu/jw/manage/service/base/SaasService.java
  64. 43 33
      svr/svr-manage/src/main/java/com/yihu/jw/manage/service/system/MenuService.java
  65. 25 3
      svr/svr-manage/src/main/java/com/yihu/jw/manage/service/system/RoleService.java
  66. 6 5
      svr/svr-manage/src/main/java/com/yihu/jw/manage/service/system/UserService.java
  67. 19 14
      svr/svr-manage/src/main/java/com/yihu/jw/manage/service/wechat/GraphicMessageService.java
  68. 22 17
      svr/svr-manage/src/main/java/com/yihu/jw/manage/service/wechat/WechatConfigService.java
  69. 18 3
      svr/svr-manage/src/main/resources/application.yml
  70. 1 1
      svr/svr-manage/src/main/resources/webapp/common/js/common.js
  71. 61 18
      svr/svr-manage/src/main/resources/webapp/common/js/util/util.js
  72. 18 18
      svr/svr-manage/src/main/resources/webapp/html/index/index.html
  73. 3 3
      svr/svr-manage/src/main/resources/webapp/html/index/index.js
  74. 14 11
      svr/svr-manage/src/main/resources/webapp/html/login/login.html
  75. 35 25
      svr/svr-manage/src/main/resources/webapp/html/system/menu/html/menuList.html
  76. 20 33
      svr/svr-manage/src/main/resources/webapp/html/system/role/html/roleList.html
  77. 28 33
      svr/svr-manage/src/main/resources/webapp/html/system/user/html/userList.html
  78. 11 9
      svr/svr-manage/src/main/resources/webapp/html/system/user/js/userList.js
  79. 18 15
      svr/svr-manage/src/main/resources/webapp/html/wechat/graphicMessage/html/graphicMessageList.html
  80. 10 17
      svr/svr-manage/src/main/resources/webapp/html/wechat/graphicMessage/js/graphicMessageList.js
  81. 41 73
      svr/svr-manage/src/main/resources/webapp/html/wechat/template/html/templateList.html
  82. 58 223
      svr/svr-manage/src/main/resources/webapp/html/wechat/template/js/templateList.js
  83. 38 36
      svr/svr-manage/src/main/resources/webapp/html/wechat/wechatConfig/html/wechatConfigList.html
  84. 35 51
      svr/svr-manage/src/main/resources/webapp/html/wechat/wechatConfig/js/wechatConfigList.js
  85. 4 4
      svr/svr-quota/src/main/resources/bootstrap.yml
  86. 4 4
      svr/svr-wlyy/src/main/resources/bootstrap.yml
  87. 18 17
      web-gateway/pom.xml
  88. 1 1
      web-gateway/src/main/java/com/yihu/jw/controller/base/wx/WechatAccessTokenController.java
  89. 4 2
      web-gateway/src/main/java/com/yihu/jw/controller/base/wx/WechatConfigController.java
  90. 8 8
      web-gateway/src/main/java/com/yihu/jw/controller/base/wx/WechatGraphicMessageController.java
  91. 8 3
      web-gateway/src/main/java/com/yihu/jw/controller/base/wx/WechatMenuController.java
  92. 12 3
      web-gateway/src/main/java/com/yihu/jw/controller/base/wx/WechatTemplateControlle.java
  93. 1 1
      web-gateway/src/main/java/com/yihu/jw/fegin/PatientFegin.java
  94. 2 2
      web-gateway/src/main/resources/bootstrap.yml

+ 32 - 27
common/common-rest-model/src/main/java/com/yihu/jw/restmodel/base/base/BaseContants.java

@ -6,6 +6,7 @@ package com.yihu.jw.restmodel.base.base;
 */
public class BaseContants {
    public static final String api_common = "/bases";
    //功能模块常量
    public static class Function{
@ -22,19 +23,18 @@ public class BaseContants {
        public static final String message_fail_code_is_null="code is null";
        public static final String message_fail_name_is_null="function is null";
        public static final String message_fail_id_is_null="id is null";
        public static final String message_fail_code_no_exist="code no exist";
        public static final String message_fail_code_no_exist="code no exist";
        public static final String api_common="function";
        public static final String api_create="create";
        public static final String api_update="update";
        public static final String api_delete="delete";
        public static final String api_getByCode="getByCode";
        public static final String api_getFunctions="getFunctions";
        public static final String api_assignFunction="assignFunction";
        public static final String api_getModuleFunctions="api_getModuleFunctions";
        public static final String api_getFunctionsNoPage="getFunctionsNoPage";
        public static final String api_create="/function";
        public static final String api_update="/function";
        public static final String api_delete="/function/{codes}";
        public static final String api_getByCode="/function/{code}";
        public static final String api_getListNoPage="/function/listNoPage";
        public static final String api_getList="/function/list";
        public static final String api_assignFunction="/assignFunction";
        public static final String api_getModuleFunctions="/api_getModuleFunctions";
        public static final String api_getChildren="/function/children/{code}";
    }
    //模块常量
@ -55,16 +55,21 @@ public class BaseContants {
        public static final String message_fail_code_no_exist="code no exist";
        public static final String api_common="module";
        public static final String api_create="create";
        public static final String api_update="update";
        public static final String api_delete="delete";
        public static final String api_getByCode="getByCode";
        public static final String api_getModules="getModules";
        public static final String api_getModulesNoPage="getModulesNoPage";
        public static final String api_assignModule="assignModule";
        public static final String api_getSaasModules="api_getSaasModules";
        public static final String api_create="/module";
        public static final String api_update="/module";
        public static final String api_delete="/module/{codes}";
        public static final String api_getByCode="/module/{code}";
        public static final String api_getListNoPage="/module/listNoPage";
        public static final String api_getList="/module/list";
        public static final String api_getChildren="/module/children/{code}";
    }
    public static class ModuleFun{
        public static final String api_getExistFun = "/moduleFun/existFunc/{code}";
        public static final String api_changeFun="/moduleFun/changeFun";
        public static final String moduleCode_is_null="moduleCode is null";
        public static final String funCodes_is_null="funCodes is null";
    }
    //saas常量
@ -83,13 +88,13 @@ public class BaseContants {
        public static final String message_fail_code_no_exist="code no exist";
        public static final String api_common="saas";
        public static final String api_create="create";
        public static final String api_update="update";
        public static final String api_delete="delete";
        public static final String api_getByCode="getByCode";
        public static final String api_getSaass="getSaass";
        public static final String api_getSaassNoPage="getSaassNoPage";
        public static final String api_common="/saas";
        public static final String api_create="/create";
        public static final String api_update="/update";
        public static final String api_delete="/delete";
        public static final String api_getByCode="/getByCode";
        public static final String api_getSaass="/getSaass";
        public static final String api_getSaassNoPage="/getSaassNoPage";
    }
}

+ 43 - 16
common/common-rest-model/src/main/java/com/yihu/jw/restmodel/base/base/MFunction.java

@ -1,6 +1,6 @@
package com.yihu.jw.restmodel.base.base;
import java.util.Date;
import java.util.*;
/**
 * Created by chenweida on 2017/5/19.
@ -12,13 +12,16 @@ public class MFunction {
    private String saasId; // saasid
    private String parentCode; //父功能code
    private Integer status; //状态 -1 删除 0 禁用 可用
    private String url;
    private String createUser;
    private String createUserName;
    private Date createTime;
    private String modifyUser;
    private String modifyUserName;
    private Date modifyTime;
    private String updateUser;
    private String updateUserName;
    private Date updateTime;
    private String remark; //备注
    private List<MFunction> children = new ArrayList<>();
    private String text;
    public Long getId() {
        return id;
@ -92,28 +95,28 @@ public class MFunction {
        this.createTime = createTime;
    }
    public String getModifyUser() {
        return modifyUser;
    public String getUpdateUser() {
        return updateUser;
    }
    public void setModifyUser(String modifyUser) {
        this.modifyUser = modifyUser;
    public void setUpdateUser(String updateUser) {
        this.updateUser = updateUser;
    }
    public String getModifyUserName() {
        return modifyUserName;
    public String getUpdateUserName() {
        return updateUserName;
    }
    public void setModifyUserName(String modifyUserName) {
        this.modifyUserName = modifyUserName;
    public void setUpdateUserName(String updateUserName) {
        this.updateUserName = updateUserName;
    }
    public Date getModifyTime() {
        return modifyTime;
    public Date getUpdateTime() {
        return updateTime;
    }
    public void setModifyTime(Date modifyTime) {
        this.modifyTime = modifyTime;
    public void setUpdateTime(Date updateTime) {
        this.updateTime = updateTime;
    }
    public String getRemark() {
@ -123,4 +126,28 @@ public class MFunction {
    public void setRemark(String remark) {
        this.remark = remark;
    }
    public List<MFunction> getChildren() {
        return children;
    }
    public void setChildren(List<MFunction> children) {
        this.children = children;
    }
    public String getText() {
        return name;
    }
    public void setText(String text) {
        this.text = text;
    }
    public String getUrl() {
        return url;
    }
    public void setUrl(String url) {
        this.url = url;
    }
}

+ 35 - 15
common/common-rest-model/src/main/java/com/yihu/jw/restmodel/base/base/MModule.java

@ -1,6 +1,8 @@
package com.yihu.jw.restmodel.base.base;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
/**
 * Created by chenweida on 2017/5/19.
@ -15,10 +17,12 @@ public class MModule {
    private String createUser;
    private String createUserName;
    private Date createTime;
    private String modifyUser;
    private String modifyUserName;
    private Date modifyTime;
    private String updateUser;
    private String updateUserName;
    private Date updateTime;
    private String remark;
    private String state ;   //closed:表示有子节点   open:表示没有子节点
    private List<MModule> children = new ArrayList<>();
    public Long getId() {
        return id;
@ -92,28 +96,28 @@ public class MModule {
        this.createTime = createTime;
    }
    public String getModifyUser() {
        return modifyUser;
    public String getUpdateUser() {
        return updateUser;
    }
    public void setModifyUser(String modifyUser) {
        this.modifyUser = modifyUser;
    public void setUpdateUser(String updateUser) {
        this.updateUser = updateUser;
    }
    public String getModifyUserName() {
        return modifyUserName;
    public String getUpdateUserName() {
        return updateUserName;
    }
    public void setModifyUserName(String modifyUserName) {
        this.modifyUserName = modifyUserName;
    public void setUpdateUserName(String updateUserName) {
        this.updateUserName = updateUserName;
    }
    public Date getModifyTime() {
        return modifyTime;
    public Date getUpdateTime() {
        return updateTime;
    }
    public void setModifyTime(Date modifyTime) {
        this.modifyTime = modifyTime;
    public void setUpdateTime(Date updateTime) {
        this.updateTime = updateTime;
    }
    public String getRemark() {
@ -123,4 +127,20 @@ public class MModule {
    public void setRemark(String remark) {
        this.remark = remark;
    }
    public String getState() {
        return state;
    }
    public void setState(String state) {
        this.state = state;
    }
    public List<MModule> getChildren() {
        return children;
    }
    public void setChildren(List<MModule> children) {
        this.children = children;
    }
}

+ 46 - 37
common/common-rest-model/src/main/java/com/yihu/jw/restmodel/base/version/BaseVersionContants.java

@ -4,6 +4,9 @@ package com.yihu.jw.restmodel.base.version;
 * Created by chenweida on 2017/6/16.
 */
public class BaseVersionContants {
    public static final String api_common = "/version";
    public static class BaseServerVersion {
        public static final String message_success_create = "ServerVersion create success";
        public static final String message_success_update = "ServerVersion update success";
@ -16,16 +19,14 @@ public class BaseVersionContants {
        public static final String message_fail_code_is_null = "code is null";
        public static final String message_fail_name_is_null = "ServerVersion is null";
        public static final String message_fail_id_is_null = "id is null";
        public static final String message_fail_code_no_exist = "code no exist";
        public static final String api_common = "serverVerion";
        public static final String api_create = "create";
        public static final String api_update = "update";
        public static final String api_delete = "delete";
        public static final String api_getByCode = "getByCode";
        public static final String api_getBaseServerVersion="getBaseServerVersions";
        public static final String api_getBaseServerVersionNoPage="getServerVersionNoPage";
        public static final String api_create = "/serverVersion";
        public static final String api_update = "/serverVersion";
        public static final String api_delete = "/serverVersion/{codes}";
        public static final String api_getByCode = "/serverVersion/{code}";
        public static final String api_getList="/serverVersion/list";
        public static final String api_getListNoPage="/serverVersion/listNoPage";
    }
@ -36,21 +37,18 @@ public class BaseVersionContants {
        public static final String message_success_find_BaseServerUrlVersions = "ServerUrlVersion find success";
        public static final String message_success_delete = "ServerUrlVersion delete success";
        public static final String message_fail_name_exist = "ServerUrlVersion name exist";
        public static final String message_fail_code_is_null = "code is null";
        public static final String message_fail_name_is_null = "ServerUrlVersion is null";
        public static final String message_fail_id_is_null = "id is null";
        public static final String message_fail_code_no_exist = "code no exist";
        public static final String api_common = "serverUrlVerion";
        public static final String api_create = "create";
        public static final String api_update = "update";
        public static final String api_delete = "delete";
        public static final String api_getByCode = "getByCode";
        public static final String api_getServerUrlVersions="getServerUrlVersions";
        public static final String api_getServerUrlVersionNoPage="getServerUrlVersionNoPage";
        public static final String api_create = "/serverUrl";
        public static final String api_update = "/serverUrl";
        public static final String api_delete = "/serverUrl/{codes}";
        public static final String api_getByCode = "/serverUrl/{code}";
        public static final String api_getList="/serverUrl/list";
        public static final String api_getListNoPage="/serverUrl/listNoPage";
    }
@ -61,20 +59,17 @@ public class BaseVersionContants {
        public static final String message_success_find_BaseServerVersionLog = "BaseServerVersionLog find success";
        public static final String message_success_delete = "BaseServerVersionLog delete success";
        public static final String message_fail_code_is_null = "code is null";
        public static final String message_fail_name_is_null = "ServerVersion is null";
        public static final String message_fail_id_is_null = "id is null";
        public static final String message_fail_code_no_exist = "code no exist";
        public static final String api_common = "serverVersionLog";
        public static final String api_create = "create";
        public static final String api_update = "update";
        public static final String api_delete = "delete";
        public static final String api_getByCode = "getByCode";
        public static final String api_getBaseServerVersionLog="getBaseServerVersionLog";
        public static final String api_getBaseServerVersionLogNoPage="getBaseServerVersionLogNoPage";
        public static final String api_create = "/serverVersionLog";
        public static final String api_update = "/serverVersionLog";
        public static final String api_delete = "/serverVersionLog/{codes}";
        public static final String api_getByCode = "/serverVersionLog/{code}";
        public static final String api_getList="/serverVersionLog/list";
        public static final String api_getListNoPage="/serverVersionLog/listNoPage";
    }
@ -91,16 +86,30 @@ public class BaseVersionContants {
        public static final String message_fail_code_is_null = "code is null";
        public static final String message_fail_name_is_null = "ServerVersion is null";
        public static final String message_fail_id_is_null = "id is null";
        public static final String message_fail_code_no_exist = "code no exist";
        public static final String api_create = "/wlyyVersion";
        public static final String api_update = "/wlyyVersion";
        public static final String api_delete = "/wlyyVersion/{codes}";
        public static final String api_getByCode = "/wlyyVersion/{code}";
        public static final String api_getList="/wlyyVersion/list";
        public static final String api_getListNoPage="/wlyyVersion/listNoPage";
        public static final String message_fail_code_no_exist = "code no exist";
        public static final String api_common = "wlyyVersion";
        public static final String api_create = "create";
        public static final String api_update = "update";
        public static final String api_delete = "delete";
        public static final String api_getByCode = "getByCode";
        public static final String api_getWlyyVersion="getWlyyVersions";
        public static final String api_getWlyyVersionNoPage="getWlyyVersionsNoPage";
    }
    public class UserUrlVersion {
        public static final String api_create = "/userUrlVersion";
        public static final String api_update = "/userUrlVersion";
        public static final String api_delete = "/userUrlVersion/{codes}";
        public static final String api_getByCode = "/userUrlVersion/{code}";
        public static final String api_getList="/userUrlVersion/list";
        public static final String api_getListNoPage="/userUrlVersion/listNoPage";
        public static final String api_changeUserVersion="/userUrlVersion/userVersion";
        public static final String message_success_create="userUrlVersion create success";
        public static final String message_success_update="update UserVersion success";
        public static final String message_success_delete="userUrlVersion delete success";
        public static final String message_success_find="userUrlVersion find success";
                ;
    }
}

+ 24 - 0
common/common-rest-model/src/main/java/com/yihu/jw/restmodel/base/version/MBaseServerVersion.java

@ -1,6 +1,8 @@
package com.yihu.jw.restmodel.base.version;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
/**
 * Created by chenweida on 2017/6/16.
@ -20,6 +22,12 @@ public class MBaseServerVersion {
    private Integer status;////-1 删除 0 禁用 可用
    private String remark;
    private List<MBaseServerUrlVersion> children = new ArrayList<>();
    //children长度为0时    state  “open”表示是子节点,“closed”表示为父节点;
    // children长度>0时,  state   “open,closed”表示是节点的打开关闭
    private String state;
    public String getCode() {
        return code;
    }
@ -123,4 +131,20 @@ public class MBaseServerVersion {
    public void setRemark(String remark) {
        this.remark = remark;
    }
    public List<MBaseServerUrlVersion> getChildren() {
        return children;
    }
    public void setChildren(List<MBaseServerUrlVersion> children) {
        this.children = children;
    }
    public String getState() {
        return state;
    }
    public void setState(String state) {
        this.state = state;
    }
}

+ 9 - 0
common/common-rest-model/src/main/java/com/yihu/jw/restmodel/wx/MWxGraphicMessage.java

@ -8,6 +8,7 @@ import java.util.Date;
public class MWxGraphicMessage {
    private Long id;
    private String code;//业务code
    private String saasId;
    private String title;//标题
    private String description;//描述
    private String url;//图文消息url值
@ -132,4 +133,12 @@ public class MWxGraphicMessage {
    public void setStatus(Integer status) {
        this.status = status;
    }
    public String getSaasId() {
        return saasId;
    }
    public void setSaasId(String saasId) {
        this.saasId = saasId;
    }
}

+ 11 - 1
common/common-rest-model/src/main/java/com/yihu/jw/restmodel/wx/MWxMenu.java

@ -1,5 +1,6 @@
package com.yihu.jw.restmodel.wx;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
@ -29,7 +30,8 @@ public class MWxMenu {
    private String createUserName;//创建人
    private String remark;//备注
    private Integer status; //状态 -1删除 0 冻结 1可用
    private List<MWxMenu> children;
    private List<MWxMenu> children = new ArrayList<>();
    private String state;
    public List<MWxMenu> getChildren() {
        return children;
@ -206,4 +208,12 @@ public class MWxMenu {
    public void setWechatName(String wechatName) {
        this.wechatName = wechatName;
    }
    public String getState() {
        return state;
    }
    public void setState(String state) {
        this.state = state;
    }
}

+ 30 - 0
common/common-rest-model/src/main/java/com/yihu/jw/restmodel/wx/MWxTemplate.java

@ -1,6 +1,9 @@
package com.yihu.jw.restmodel.wx;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.Map;
/**
 * Created by Administrator on 2017/5/20 0020.
@ -9,6 +12,7 @@ public class MWxTemplate {
    private Long id;
    private String code;//模板code
    private String title;//模板标题
    private String name;//用于模板列表渲染
    private String wechatCode;//关联的微信code 关联表 Wx_Wechat
    private String wechatName;//关联的微信名
    private String templateId;//微信模板id
@ -20,6 +24,8 @@ public class MWxTemplate {
    private String updateUserName;//修改人名称
    private Date updateTime;//修改时间
    private String remark;
    private List<Map<String,Object>> children = new ArrayList<>();
    private String state;
    private Integer status;  //状态 -1删除 0 冻结 1可用
    public String getRemark() {
@ -141,4 +147,28 @@ public class MWxTemplate {
    public void setUpdateTime(Date updateTime) {
        this.updateTime = updateTime;
    }
    public String getName() {
        return title;
    }
    public void setName(String name) {
        this.name = name;
    }
    public List<Map<String, Object>> getChildren() {
        return children;
    }
    public void setChildren(List<Map<String, Object>> children) {
        this.children = children;
    }
    public String getState() {
        return state;
    }
    public void setState(String state) {
        this.state = state;
    }
}

+ 20 - 8
common/common-rest-model/src/main/java/com/yihu/jw/restmodel/wx/MWxWechat.java

@ -1,7 +1,9 @@
package com.yihu.jw.restmodel.wx;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.Map;
/**
 * Created by Administrator on 2017/5/20 0020.
@ -27,15 +29,9 @@ public class MWxWechat {
    private String updateUserName;//'修改人名'
    private Date updateTime;//'修改时间'
    private String remark;//'备注'
    private List<MWxMenu> children;
    private List<Map<String,Object>> children = new ArrayList<>();
    private String state;
    public List<MWxMenu> getChildren() {
        return children;
    }
    public void setChildren(List<MWxMenu> children) {
        this.children = children;
    }
    public Long getId() {
        return id;
@ -188,4 +184,20 @@ public class MWxWechat {
    public void setRemark(String remark) {
        this.remark = remark;
    }
    public List<Map<String, Object>> getChildren() {
        return children;
    }
    public void setChildren(List<Map<String, Object>> children) {
        this.children = children;
    }
    public String getState() {
        return state;
    }
    public void setState(String state) {
        this.state = state;
    }
}

+ 2 - 3
common/common-swagger/src/main/java/com/yihu/jw/config/SwaggerConfig.java

@ -34,7 +34,7 @@ public class SwaggerConfig {
                .select()
                .paths(or(
                        regex("/patient/.*")
                        , regex("/"+ BaseContants.Function.api_common+"/.*")
                        , regex("/"+ BaseContants.api_common+"/.*")
                        ,regex("/"+ WechatContants.api_common+"/.*")
                        ,regex("/"+ WechatContants.WxAccessToken.api_common+"/.*")
                        ))
@ -97,9 +97,8 @@ public class SwaggerConfig {
                .pathMapping("/")
                .select()
                .paths(or(
                         regex("/"+ BaseContants.Function.api_common+"/.*")
                         regex("/"+ BaseContants.api_common+"/.*")
                        ,regex("/"+ BaseContants.Saas.api_common+"/.*")
                        ,regex("/"+ BaseContants.Module.api_common+"/.*")
                        ,regex("/"+ WechatContants.api_common+"/.*")
                        ,regex("/"+ WechatContants.WxAccessToken.api_common+"/.*")
                ))

+ 19 - 28
svr-configuration/pom.xml

@ -36,34 +36,25 @@
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-actuator</artifactId>
        </dependency>
        <!--动态刷新配置服务的配置-->
        <!--<dependency>-->
            <!--<groupId>org.springframework.cloud</groupId>-->
            <!--<artifactId>spring-cloud-starter-bus-kafka</artifactId>-->
            <!--<exclusions>-->
                <!--<exclusion>-->
                    <!--<groupId>org.apache.kafka</groupId>-->
                    <!--<artifactId>*</artifactId>-->
                <!--</exclusion>-->
            <!--</exclusions>-->
        <!--</dependency>-->
        <!--<dependency>-->
            <!--<groupId>org.apache.kafka</groupId>-->
            <!--<artifactId>kafka_2.10</artifactId>-->
            <!--<version>0.10.2.0</version>-->
        <!--</dependency>-->
        <!--<dependency>-->
            <!--<groupId>com.fasterxml.jackson.core</groupId>-->
            <!--<artifactId>jackson-annotations</artifactId>-->
        <!--</dependency>-->
        <!--<dependency>-->
            <!--<groupId>com.fasterxml.jackson.core</groupId>-->
            <!--<artifactId>jackson-core</artifactId>-->
        <!--</dependency>-->
        <!--<dependency>-->
            <!--<groupId>com.fasterxml.jackson.core</groupId>-->
            <!--<artifactId>jackson-databind</artifactId>-->
        <!--</dependency>-->
    </dependencies>
    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <executions>
                    <execution>
                        <goals>
                            <goal>repackage</goal>
                        </goals>
                    </execution>
                </executions>
                <configuration>
                    <mainClass>com.yihu.jw.SvrConfiguration</mainClass>
                </configuration>
            </plugin>
        </plugins>
    </build>
</project>

+ 3 - 3
svr-configuration/src/main/resources/application.yml

@ -11,7 +11,7 @@ eureka:
    prefer-ip-address: true
    #定制化在eurika中显示的名称
    ##instance-id: ${spring.application.name}:${spring.application.instance_id:${server.port}}
    instance-id: 127.0.0.1:${server.port}
    instance-id: localhost:${server.port}
---
@ -31,7 +31,7 @@ spring:
eureka:
  client:
    serviceUrl:
      defaultZone: http://jw:jkzl@127.0.0.1:8761/eureka
      defaultZone: http://jw:jkzl@172.19.103.33:8761/eureka
---
@ -41,7 +41,7 @@ spring:
eureka:
  client:
    serviceUrl:
      defaultZone: http://jw:jkzl@127.0.0.1:8761/eureka
      defaultZone: http://jw:jkzl@172.19.103.33:8761/eureka
---
spring:

+ 6 - 23
svr-configuration/src/main/resources/bootstrap.yml

@ -31,9 +31,9 @@ spring:
      failFast: true ##启动快速失败 即链接不到配置服务就启动失败
      server:
        git:
          uri: http://192.168.1.220:10080/chenweida/jw.config.git
#          uri: http://192.168.1.220:10080/chenweida/jw.config.git
#          uri: http://192.168.116.100:10080/chenweida/mini.jw.config.git
#          uri: http://192.168.1.220:10080/chenyongxing/jw.config.git
         uri: http://192.168.1.220:10080/chenyongxing/jw.config.git
        default-label: master
@ -43,10 +43,12 @@ spring:
##git配置
  cloud:
    config:
      failFast: true ##启动快速失败 即链接不到配置服务就启动失败
      server:
        git:
          uri: http://192.168.1.220:10080/EHR/ehr.config.git
        default-label: dev
#          uri: http://192.168.1.220:10080/EHR/ehr.config.git
          uri: http://192.168.1.220:10080/chenyongxing/jw.config.git
        default-label: master
---
spring:
@ -60,22 +62,3 @@ spring:
        default-label: master
---
##不想用远程的git 可以在环境变量配置native 开启本地配置
spring:
  profiles:
    active: native
  cloud:
    config:
      failFast: true ##启动快速失败 即链接不到配置服务就启动失败
      server:
        native:
          search-locations: file:G:\idea_workspace\jkzl_git\jw.config  ##本地的got配置路径
#配置服务动态刷新
#    stream:
#      kafka:
#        binder:
#          brokers: 172.17.110.201:9092
#          zkNodes: 172.17.110.201:2181

+ 1 - 1
svr-dashboard/src/main/resources/application.yml

@ -27,7 +27,7 @@ eureka:
  client:
    serviceUrl:
      #http://账号:密码@127.0.0.1:8761/eureka/
      defaultZone: http://jw:jkzl@127.0.0.1:8761/eureka/
      defaultZone: http://jw:jkzl@172.19.103.33:8761/eureka/
---

+ 3 - 3
svr-dashboard/src/main/resources/bootstrap.yml

@ -13,7 +13,7 @@ spring:
---
spring:
  profiles: dev
  profiles: jwdev
##发现服务的地址
eureka:
@ -24,14 +24,14 @@ eureka:
---
spring:
  profiles: test
  profiles: jwtest
eureka:
  client:
    serviceUrl:
      #http://账号:密码@127.0.0.1:8761/eureka/
      defaultZone: http://jw:jkzl@127.0.0.1:8761/eureka/
      defaultZone: http://jw:jkzl@172.19.103.33:8761/eureka/
---

+ 18 - 0
svr-discovery/pom.xml

@ -37,4 +37,22 @@
            <artifactId>spring-webmvc</artifactId>
        </dependency>
    </dependencies>
    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <executions>
                    <execution>
                        <goals>
                            <goal>repackage</goal>
                        </goals>
                    </execution>
                </executions>
                <configuration>
                    <mainClass>com.yihu.jw.SvrDiscovery</mainClass>
                </configuration>
            </plugin>
        </plugins>
    </build>
</project>

+ 1 - 1
svr-discovery/src/main/resources/application.yml

@ -11,7 +11,7 @@ eureka:
    registry-fetch-interval-seconds: 30 #定期的更新客户端的服务清单 30秒更新一次
    fetch-registry: false ##如果是做高可用的发现服务那就要改成true
    service-url:
      defaultZone: http://jw:jkzl@localhost:8761/eureka
      defaultZone: http://jw:jkzl@172.19.103.33:8761/eureka
#eurika界面的账号密码

+ 21 - 11
svr-lib-parent-pom/pom.xml

@ -519,20 +519,30 @@
                <plugin>
                    <groupId>org.springframework.boot</groupId>
                    <artifactId>spring-boot-maven-plugin</artifactId>
                    <executions>
                        <execution>
                            <goals>
                                <goal>repackage</goal>
                            </goals>
                        </execution>
                    </executions>
                </plugin>
                <!--springboot插件 en-->
                <!--编译插件 start-->
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-compiler-plugin</artifactId>
                    <configuration>
                        <source>1.8</source>
                        <target>1.8</target>
                    </configuration>
                    <version>3.1</version>
                </plugin>
                <!--编译插件 end-->
            </plugins>
        </pluginManagement>
        <plugins>
            <!--编译插件 start-->
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <configuration>
                    <source>1.8</source>
                    <target>1.8</target>
                </configuration>
                <version>3.1</version>
            </plugin>
            <!--编译插件 end-->
        </plugins>
    </build>
</project>

+ 1 - 1
svr-lib-parent-pom/readme.MD

@ -1,2 +1,2 @@
svr-**工程的父类 maven 
svr-**工程的父类maven
    1.一般子maven需要的jar包在父类maven工程定义好,子maven工程不需要添加版本号,版本由父maven决定

+ 20 - 0
svr-logServer/pom.xml

@ -51,4 +51,24 @@
        </dependency>
    </dependencies>
    <build>
        <finalName>svr-logServer</finalName>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <executions>
                    <execution>
                        <goals>
                            <goal>repackage</goal>
                        </goals>
                    </execution>
                </executions>
                <configuration>
                    <mainClass>com.yihu.jw.LogServerApplication</mainClass>
                </configuration>
            </plugin>
        </plugins>
    </build>
</project>

+ 5 - 5
svr-logServer/src/main/resources/bootstrap.yml

@ -13,30 +13,30 @@ spring:
---
spring:
  profiles: dev
  profiles: jwdev
##发现服务的地址
eureka:
  client:
    serviceUrl:
      #http://账号:密码@127.0.0.1:8761/eureka/
      defaultZone: http://jw:jkzl@127.0.0.1:8761/eureka/
      defaultZone: http://jw:jkzl@172.19.103.33:8761/eureka/
---
spring:
  profiles: test
  profiles: jwtest
eureka:
  client:
    serviceUrl:
      #http://账号:密码@127.0.0.1:8761/eureka/
      defaultZone: http://jw:jkzl@127.0.0.1:8761/eureka/
      defaultZone: http://jw:jkzl@172.19.103.33:8761/eureka/
---
spring:
  profiles: prod
  profiles: jwprod
eureka:

+ 19 - 0
svr/svr-base/pom.xml

@ -12,6 +12,7 @@
    <groupId>com.yihu.jw</groupId>
    <artifactId>svr-base</artifactId>
    <version>1.0.0</version>
    <packaging>jar</packaging>
    <dependencies>
        <dependency>
@ -113,4 +114,22 @@
            <artifactId>json</artifactId>
        </dependency>
    </dependencies>
    <build>
        <finalName>svr-base</finalName>
        <plugins>
            <!--springboot插件 start-->
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <executions>
                    <execution>
                        <goals>
                            <goal>repackage</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
            <!--springboot插件 en-->
        </plugins>
    </build>
</project>

+ 49 - 13
svr/svr-base/src/main/java/com/yihu/jw/base/controller/base/FunctionController.java

@ -2,6 +2,7 @@ package com.yihu.jw.base.controller.base;
import com.yihu.jw.base.model.base.Function;
import com.yihu.jw.base.service.base.FunctionService;
import com.yihu.jw.base.service.base.ModuleFunService;
import com.yihu.jw.restmodel.base.base.BaseContants;
import com.yihu.jw.restmodel.base.base.MFunction;
import com.yihu.jw.restmodel.common.Envelop;
@ -10,6 +11,7 @@ import com.yihu.jw.restmodel.exception.ApiException;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import org.apache.commons.lang.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.MediaType;
import org.springframework.web.bind.annotation.*;
@ -23,11 +25,13 @@ import java.util.List;
 * Created by chenweida on 2017/5/19.
 */
@RestController
@RequestMapping(BaseContants.Function.api_common)
@RequestMapping(BaseContants.api_common)
@Api(value = "功能模块", description = "功能模块接口管理")
public class FunctionController extends EnvelopRestController {
    @Autowired
    private FunctionService functionService;
    @Autowired
    private ModuleFunService moduleFunService;
    @PostMapping(value = BaseContants.Function.api_create, consumes = MediaType.APPLICATION_JSON_UTF8_VALUE)
    @ApiOperation(value = "创建功能", notes = "创建单个功能")
@ -54,24 +58,24 @@ public class FunctionController extends EnvelopRestController {
            return Envelop.getError(e.getMessage(), e.getErrorCode());
        }
    }
    @DeleteMapping(value = BaseContants.Function.api_delete, consumes = MediaType.APPLICATION_JSON_UTF8_VALUE)
    @DeleteMapping(value = BaseContants.Function.api_delete)
    @ApiOperation(value = "删除功能", notes = "删除功能")
    public Envelop deleteFunction(
            @ApiParam(name = "code", value = "code")
            @RequestParam(value = "code", required = true) String code) {
            @ApiParam(name = "codes", value = "codes")
            @PathVariable(value = "codes", required = true) String codes) {
        try {
            functionService.deleteFunction(code);
            functionService.deleteFunction(codes);
            return Envelop.getSuccess(BaseContants.Function.message_success_delete );
        } catch (ApiException e) {
            return Envelop.getError(e.getMessage(), e.getErrorCode());
        }
    }
    @GetMapping(value = BaseContants.Function.api_getByCode, consumes = MediaType.APPLICATION_JSON_UTF8_VALUE)
    @GetMapping(value = BaseContants.Function.api_getByCode)
    @ApiOperation(value = "根据code查找功能", notes = "根据code查找功能")
    public Envelop findByCode(
            @ApiParam(name = "code", value = "code")
            @RequestParam(value = "code", required = true) String code
            @PathVariable(value = "code", required = true) String code
    ) {
        try {
            return Envelop.getSuccess(BaseContants.Function.message_success_find, functionService.findByCode(code));
@ -81,10 +85,10 @@ public class FunctionController extends EnvelopRestController {
    }
    @RequestMapping(value = BaseContants.Function.api_getFunctions, method = RequestMethod.GET)
    @ApiOperation(value = "获取功能列表(分页)")
    @RequestMapping(value = BaseContants.Function.api_getList, method = RequestMethod.GET)
    @ApiOperation(value = "获取父功能列表(分页)")
    public Envelop getFunctions(
            @ApiParam(name = "fields", value = "返回的字段,为空返回全部字段", defaultValue = "code,name,saasId,parentCode,remark")
            @ApiParam(name = "fields", value = "返回的字段,为空返回全部字段", defaultValue = "id,code,name,url,parentCode,status,remark")
            @RequestParam(value = "fields", required = false) String fields,
            @ApiParam(name = "filters", value = "过滤器,为空检索所有条件")
            //code like 1,name大于aa ,code 等于1 , defaultValue = "code?1;name>aa;code=1"
@ -97,8 +101,25 @@ public class FunctionController extends EnvelopRestController {
            @RequestParam(value = "page", required = false) int page,
            HttpServletRequest request,
            HttpServletResponse response) throws Exception {
        if(StringUtils.isBlank(sorts)){
            sorts = "-updateTime";
        }
       if(StringUtils.isBlank(filters)){
            filters = "parentCode=0;";
        }else{
            filters="parentCode=0;"+filters;
        }
        //得到list数据
        List<Function> list = functionService.search(fields, filters, sorts, page, size);
        if(list!=null){
            for(Function func:list){//循环遍历,设置是否有子节点
                List<Function> children = functionService.getChildren(func.getCode());
                func.setChildren(children);
            }
        }
        //获取总数
        long count=functionService.getCount(filters);
        //封装头信息
@ -110,8 +131,8 @@ public class FunctionController extends EnvelopRestController {
    }
    @GetMapping(value = BaseContants.Function.api_getFunctionsNoPage)
    @ApiOperation(value = "获取功能列表,不分页")
    @GetMapping(value = BaseContants.Function.api_getListNoPage)
    @ApiOperation(value = "获取功能列表,并且封装成jstree,不分页")
    public Envelop getAppsNoPage(
            @ApiParam(name = "fields", value = "返回的字段,为空返回全部字段", defaultValue = "code,name,saasId,parentCode,remark")
            @RequestParam(value = "fields", required = false) String fields,
@ -121,8 +142,16 @@ public class FunctionController extends EnvelopRestController {
            @RequestParam(value = "sorts", required = false) String sorts) throws Exception {
        //得到list数据
        List<Function> list = functionService.search(fields,filters,sorts);
        List<Object> functions = new ArrayList<>();
        if(list!=null){
            for(Function func:list){
                String code = func.getCode();
                func = functionService.getAllChildren(code);
                functions.add(func);
            }
        }
        //封装返回格式
        List<MFunction> mFunctions = convertToModels(list, new ArrayList<>(list.size()), MFunction.class, fields);
        List<MFunction> mFunctions = convertToModels(functions, new ArrayList<>(functions.size()), MFunction.class, fields);
        return Envelop.getSuccessList(BaseContants.Function.message_success_find_functions,mFunctions);
    }
@ -152,4 +181,11 @@ public class FunctionController extends EnvelopRestController {
            return Envelop.getError(e.getMessage(), e.getErrorCode());
        }
    }
    @GetMapping(value =BaseContants.Function.api_getChildren )
    @ApiOperation(value="查找子节点")
    public Envelop getChildren(@PathVariable String code){
        List<Function> children = functionService.getChildren(code);
        return Envelop.getSuccess("查询成功",children);
    }
}

+ 42 - 35
svr/svr-base/src/main/java/com/yihu/jw/base/controller/base/ModuleController.java

@ -10,6 +10,7 @@ import com.yihu.jw.restmodel.exception.ApiException;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import org.apache.commons.lang.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.MediaType;
import org.springframework.web.bind.annotation.*;
@ -23,7 +24,7 @@ import java.util.List;
 * Created by chenweida on 2017/5/19.
 */
@RestController
@RequestMapping(BaseContants.Module.api_common)
@RequestMapping(BaseContants.api_common)
@Api(value = "模块模块", description = "模块接口管理")
public class ModuleController extends EnvelopRestController {
    @Autowired
@ -54,24 +55,25 @@ public class ModuleController extends EnvelopRestController {
            return Envelop.getError(e.getMessage(), e.getErrorCode());
        }
    }
    @DeleteMapping(value = BaseContants.Module.api_delete, consumes = MediaType.APPLICATION_JSON_UTF8_VALUE)
    @DeleteMapping(value = BaseContants.Module.api_delete)
    @ApiOperation(value = "删除模块", notes = "删除模块")
    public Envelop deleteModule(
            @ApiParam(name = "code", value = "code")
            @RequestParam(value = "code", required = true) String code) {
            @ApiParam(name = "codes", value = "codes")
            @PathVariable(value = "codes", required = true) String codes) {
        try {
            moduleService.deleteModule(code);
            moduleService.deleteModule(codes);
            return Envelop.getSuccess(BaseContants.Module.message_success_delete );
        } catch (ApiException e) {
            return Envelop.getError(e.getMessage(), e.getErrorCode());
        }
    }
    @GetMapping(value = BaseContants.Module.api_getByCode, consumes = MediaType.APPLICATION_JSON_UTF8_VALUE)
    @GetMapping(value = BaseContants.Module.api_getByCode)
    @ApiOperation(value = "根据code查找模块", notes = "根据code查找模块")
    public Envelop findByCode(
            @ApiParam(name = "code", value = "code")
            @RequestParam(value = "code", required = true) String code
            @PathVariable(value = "code", required = true) String code
    ) {
        try {
            return Envelop.getSuccess(BaseContants.Module.message_success_find, moduleService.findByCode(code));
@ -81,8 +83,8 @@ public class ModuleController extends EnvelopRestController {
    }
    @RequestMapping(value = BaseContants.Module.api_getModules, method = RequestMethod.GET)
    @ApiOperation(value = "获取模块列表(分页)")
    @RequestMapping(value = BaseContants.Module.api_getList, method = RequestMethod.GET)
    @ApiOperation(value = "获取父模块列表(分页)")
    public Envelop getModules(
            @ApiParam(name = "fields", value = "返回的字段,为空返回全部字段", defaultValue = "code,name,saasId,parentCode,remark")
            @RequestParam(value = "fields", required = false) String fields,
@ -97,8 +99,31 @@ public class ModuleController extends EnvelopRestController {
            @RequestParam(value = "page", required = false) int page,
            HttpServletRequest request,
            HttpServletResponse response) throws Exception {
        if(StringUtils.isBlank(sorts)){
            sorts = "-updateTime";
        }
        if(StringUtils.isBlank(filters)){
            filters = "parentCode=0;";
        }else{
            filters="parentCode=0;"+filters;
        }
        //得到list数据
        List<Module> list = moduleService.search(fields, filters, sorts, page, size);
        if(list!=null){
            for(Module module:list){//循环遍历,设置是否有子节点
                List<Module> children = moduleService.getChildren(module.getCode());
                //children长度为0时    state  “open”表示是子节点,“closed”表示为父节点;
                // children长度>0时,  state   “open,closed”表示是节点的打开关闭
                if (children.size()>0){
                    module.setState("closed");
                }else{
                    module.setState("open");
                }
            }
        }
        //获取总数
        long count=moduleService.getCount(filters);
        //封装头信息
@ -110,9 +135,9 @@ public class ModuleController extends EnvelopRestController {
    }
    @GetMapping(value = BaseContants.Module.api_getModulesNoPage)
    @GetMapping(value = BaseContants.Module.api_getListNoPage)
    @ApiOperation(value = "获取模块列表,不分页")
    public Envelop getAppsNoPage(
    public Envelop getListNoPage(
            @ApiParam(name = "fields", value = "返回的字段,为空返回全部字段", defaultValue = "code,name,saasId,parentCode,remark")
            @RequestParam(value = "fields", required = false) String fields,
            @ApiParam(name = "filters", value = "过滤器,为空检索所有条件")
@ -127,30 +152,12 @@ public class ModuleController extends EnvelopRestController {
    }
    @PutMapping(value = BaseContants.Module.api_assignModule, consumes = MediaType.APPLICATION_JSON_UTF8_VALUE)
    @ApiOperation(value = "分配模块", notes = "给对应的saas分配模块")
    public Envelop assignModule(
            @ApiParam(name = "saas_code", value = "saas_code", defaultValue = "")
            @RequestParam String saasCode,
            @ApiParam(name = "moduleCodes", value = "模块的code,可以传多个,逗号分割", defaultValue = "")
            @RequestParam String moduleCodes) {
        try {
            moduleService.assignModule(saasCode,moduleCodes);
            return Envelop.getSuccess(BaseContants.Module.message_success_assign_module);
        } catch (ApiException e) {
            return Envelop.getError(e.getMessage(), e.getErrorCode());
        }
    @GetMapping(value =BaseContants.Module.api_getChildren )
    @ApiOperation(value="查找子节点")
    public Envelop getChildren(@PathVariable String code){
        List<Module> children = moduleService.getChildren(code);
        return Envelop.getSuccess("查询成功",children);
    }
    @GetMapping(value = BaseContants.Module.api_getSaasModules, consumes = MediaType.APPLICATION_JSON_UTF8_VALUE)
    @ApiOperation(value = "查询saas的模块", notes = "查询saas已经分配的模块")
    public Envelop getSaasModules(
            @ApiParam(name = "saas_code", value = "saas_code", defaultValue = "")
            @RequestParam String saasCode) {
        try {
            return Envelop.getSuccess(BaseContants.Module.message_success_assign_module,moduleService.getSaasModules(saasCode));
        } catch (ApiException e) {
            return Envelop.getError(e.getMessage(), e.getErrorCode());
        }
    }
}

+ 8 - 0
svr/svr-base/src/main/java/com/yihu/jw/base/dao/base/FunctionDao.java

@ -5,6 +5,8 @@ import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
import org.springframework.data.jpa.repository.Query;
import org.springframework.data.repository.PagingAndSortingRepository;
import java.util.List;
/**
 * Created by chenweida on 2017/5/19.
 */
@ -18,4 +20,10 @@ public interface FunctionDao extends PagingAndSortingRepository<Function, Long>,
    @Query("from Function f where f.code=?1 and f.status=1")
    Function findByCode(String code);
    @Query("from Function f where f.parentCode=?1 and f.status=1")
    List<Function> getChildren(String code);
    @Query("from Function f where f.status=1")
    List<Function> findAll();
}

+ 9 - 0
svr/svr-base/src/main/java/com/yihu/jw/base/dao/base/ModuleDao.java

@ -1,10 +1,13 @@
package com.yihu.jw.base.dao.base;
import com.yihu.jw.base.model.base.Function;
import com.yihu.jw.base.model.base.Module;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
import org.springframework.data.jpa.repository.Query;
import org.springframework.data.repository.PagingAndSortingRepository;
import java.util.List;
/**
 * Created by chenweida on 2017/5/19.
 */
@ -17,4 +20,10 @@ public interface ModuleDao extends PagingAndSortingRepository<Module, Long>, Jpa
    @Query("from Module f where f.code=?1 and f.status=1")
    Module findByCode(String code);
    @Query("from Module f where f.parentCode=?1 and f.status=1")
    List<Module> getChildren(String code);
    @Query("from Module f where f.status=1")
    List<Module> findAll();
}

+ 13 - 0
svr/svr-base/src/main/java/com/yihu/jw/base/dao/base/ModuleFunctionDao.java

@ -5,12 +5,25 @@ import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
import org.springframework.data.jpa.repository.Modifying;
import org.springframework.data.jpa.repository.Query;
import org.springframework.data.repository.PagingAndSortingRepository;
import org.springframework.transaction.annotation.Transactional;
import java.util.List;
/**
 * Created by chenweida on 2017/5/22.
 */
public interface ModuleFunctionDao extends PagingAndSortingRepository<ModuleFunction, Long>, JpaSpecificationExecutor<ModuleFunction> {
    @Transactional
    @Modifying
    @Query("delete from ModuleFunction es where es.moduleId = ?1")
    int deleteByModuleCode(String moduleCode);
    @Query("from ModuleFunction mf where mf.moduleId = ?1")
    List<ModuleFunction> findByModuleCode(String code);
    @Transactional
    @Modifying
    @Query("delete from ModuleFunction es where es.functionId = ?1 and es.moduleId = ?2")
    void delete(String delCode, String moduleCode);
}

+ 23 - 1
svr/svr-base/src/main/java/com/yihu/jw/base/model/base/Function.java

@ -5,6 +5,9 @@ import com.yihu.jw.base.model.IdEntity;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Table;
import javax.persistence.Transient;
import java.util.ArrayList;
import java.util.List;
/**
 * WlyyFunction entity. @author MyEclipse Persistence Tools
@ -21,7 +24,10 @@ public class Function extends IdEntity implements java.io.Serializable {
	private Integer status; //状态 -1 删除 0 禁用 可用
	private String url;//功能对应的后台url路径
	private String remark; //备注
	@Transient
	private List<Function> children = new ArrayList<>();
	@Transient
	private String text;//用于jstree显示
	// Constructors
	/** default constructor */
@ -93,4 +99,20 @@ public class Function extends IdEntity implements java.io.Serializable {
	public void setUrl(String url) {
		this.url = url;
	}
	public List<Function> getChildren() {
		return children;
	}
	public void setChildren(List<Function> children) {
		this.children = children;
	}
	public String getText() {
		return name;
	}
	public void setText(String text) {
		this.text = text;
	}
}

+ 22 - 0
svr/svr-base/src/main/java/com/yihu/jw/base/model/base/Module.java

@ -5,6 +5,9 @@ import com.yihu.jw.base.model.IdEntity;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Table;
import javax.persistence.Transient;
import java.util.ArrayList;
import java.util.List;
/**
 * WlyyModule entity. @author MyEclipse Persistence Tools
@ -19,6 +22,10 @@ public class Module extends IdEntity implements java.io.Serializable {
	private String parentCode;//父id
	private Integer status; //-1 删除 0 禁用 可用
	private String remark;
	@Transient
	private String state ;   //closed:表示有子节点   open:表示没有子节点
	@Transient
	private List<Module> children = new ArrayList<>();
	// Constructors
@ -72,4 +79,19 @@ public class Module extends IdEntity implements java.io.Serializable {
		this.remark = remark;
	}
	public String getState() {
		return state;
	}
	public void setState(String state) {
		this.state = state;
	}
	public List<Module> getChildren() {
		return children;
	}
	public void setChildren(List<Module> children) {
		this.children = children;
	}
}

+ 3 - 7
svr/svr-base/src/main/java/com/yihu/jw/base/model/base/ModuleFunction.java

@ -1,7 +1,5 @@
package com.yihu.jw.base.model.base;// default package
import com.yihu.jw.base.model.IdEntity;
import javax.persistence.*;
/**
@ -9,14 +7,14 @@ import javax.persistence.*;
 */
@Entity
@Table(name = "base_module_function")
public class ModuleFunction extends IdEntity implements java.io.Serializable {
public class ModuleFunction implements java.io.Serializable {
	// Fields
	@Id
	@GeneratedValue(strategy = GenerationType.AUTO)
	private Long id;
	private String functionId;//关联 WlyyFunction    code
	private String moduleId;//关联 WlyyModule code
	private String functionId;//关联 base_function    code
	private String moduleId;//关联 base_module  code
	// Constructors
@ -42,12 +40,10 @@ public class ModuleFunction extends IdEntity implements java.io.Serializable {
		this.moduleId = moduleId;
	}
	@Override
	public Long getId() {
		return id;
	}
	@Override
	public void setId(Long id) {
		this.id = id;
	}

+ 52 - 0
svr/svr-base/src/main/java/com/yihu/jw/base/service/base/FunctionService.java

@ -16,7 +16,9 @@ import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.StringUtils;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
 * Created by chenweida on 2017/5/19.
@ -28,6 +30,8 @@ public class FunctionService extends BaseJpaService<Function, FunctionDao> {
    @Autowired
    private ModuleFunctionDao moduleFunctionDao;
    @Autowired
    private ModuleFunService moduleFunService;
    @Autowired
    private JdbcTemplate jdbcTemplate;
    @Transactional
@ -78,6 +82,7 @@ public class FunctionService extends BaseJpaService<Function, FunctionDao> {
            throw new ApiException(BaseContants.Function.message_fail_code_no_exist, CommonContants.common_error_params_code);
        }
        function.setStatus(-1);
        functionDao.save(function);
    }
    @Transactional
    public void assignFunction(String moduleCode, String functionCodes) {
@ -100,4 +105,51 @@ public class FunctionService extends BaseJpaService<Function, FunctionDao> {
        return jdbcTemplate.queryForList(sql,MFunction.class,saasCode);
    }
    /**
     * 根据code获得子节点,并判断是否子节点是否还有孙节点 (treegrid点击查询子节点 用到)
     * @param code
     * @return
     */
    public List<Function> getChildren(String code){
        List<Function> childrens = functionDao.getChildren(code);
        for(Function children:childrens){
            List<Function> children1 = functionDao.getChildren(children.getCode());//判断子节点是否有孙节点
            children.setChildren(children1);
        }
        return childrens;
    }
    public List<Function> findAll(){
        return functionDao.findAll();
    }
    /**
     * key为code ,value为功能名称
     * @return
     */
    public Map<String,String> getName(){
        List<Function> functions = findAll();
        Map<String, String> map = new HashMap<>();
        if(null!=functions){
            for(Function function: functions){
                map.put(function.getCode(),function.getName());
            }
        }
        return map;
    }
    /**
     * 根据code获取所有子节点(包括孙节点,曾孙节点....)
     * @param code
     * @return
     */
    public Function getAllChildren(String code){
        Function function = functionDao.findByCode(code);
        List<Function> childrens = functionDao.getChildren(code);
        for(Function children:childrens){
            getAllChildren(children.getCode());
        }
        function.setChildren(childrens);
        return function;
    }
}

+ 37 - 0
svr/svr-base/src/main/java/com/yihu/jw/base/service/base/ModuleService.java

@ -16,7 +16,9 @@ import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.StringUtils;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
 * Created by chenweida on 2017/5/19.
@ -104,4 +106,39 @@ public class ModuleService extends BaseJpaService<Module, ModuleDao> {
        String sql=" select m.code,m.parent_code,m.name from base_module m,base_saas_module sm where m.code=sm.module_id and m.status=1 and sm.saas_id=?";
       return jdbcTemplate.queryForList(sql,MModule.class,saasCode);
    }
    public List<Module> getChildren(String code){
        List<Module> childrens = moduleDao.getChildren(code);
        for(Module children:childrens){
            List<Module> children1 = moduleDao.getChildren(children.getCode());//判断子节点是否有孙节点
            //没有children    state
            //“open”表示是子节点,“closed”表示为父节点;
            if (children1.size()>0){
                children.setState("closed");
            }else{
                children.setState("open");
            }
        }
        return childrens;
    }
    public List<Module> findAll(){
        return moduleDao.findAll();
    }
    /**
     * key为code ,value为模块名称
     * @return
     */
    public Map<String,String> getName(){
        List<Module> modules = findAll();
        Map<String, String> map = new HashMap<>();
        if(null!=modules){
            for(Module module: modules){
                map.put(module.getCode(),module.getName());
            }
        }
        return map;
    }
}

+ 50 - 31
svr/svr-base/src/main/java/com/yihu/jw/version/controller/ServerVersionController.java

@ -1,12 +1,15 @@
package com.yihu.jw.version.controller;
import com.yihu.jw.restmodel.base.version.BaseVersionContants;
import com.yihu.jw.restmodel.base.version.MWlyyVersion;
import com.yihu.jw.restmodel.base.version.MBaseServerVersion;
import com.yihu.jw.restmodel.common.Envelop;
import com.yihu.jw.restmodel.common.EnvelopRestController;
import com.yihu.jw.restmodel.exception.ApiException;
import com.yihu.jw.version.model.WlyyVersion;
import com.yihu.jw.version.service.WlyyVersionService;
import com.yihu.jw.version.model.BaseServerUrlVersion;
import com.yihu.jw.version.model.BaseServerVersion;
import com.yihu.jw.version.model.BaseUserUrlVersion;
import com.yihu.jw.version.service.ServerUrlVersionService;
import com.yihu.jw.version.service.ServerVersionService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
@ -23,11 +26,13 @@ import java.util.List;
 * Created by chenweida on 2017/5/19.
 */
@RestController
@RequestMapping(BaseVersionContants.BaseServerVersion.api_common)
@RequestMapping(BaseVersionContants.api_common)
@Api(value = "服务器版本模块", description = "服务器版本模块接口管理")
public class ServerVersionController extends EnvelopRestController {
    @Autowired
    private WlyyVersionService wlyyVersionService;
    private ServerVersionService serverVersionService;
    @Autowired
    private ServerUrlVersionService serverUrlVersionService;
    @PostMapping(value = BaseVersionContants.BaseServerVersion.api_create, consumes = MediaType.APPLICATION_JSON_UTF8_VALUE)
    @ApiOperation(value = "创建服务器版本", notes = "创建单个服务器版本")
@ -35,8 +40,8 @@ public class ServerVersionController extends EnvelopRestController {
            @ApiParam(name = "json_data", value = "", defaultValue = "")
            @RequestBody String jsonData) {
        try {
            WlyyVersion WlyyVersion = toEntity(jsonData, WlyyVersion.class);
            return Envelop.getSuccess(BaseVersionContants.WlyyVersion.message_success_create, wlyyVersionService.createWlyyVersion(WlyyVersion));
            BaseServerVersion serverVersion = toEntity(jsonData, BaseServerVersion.class);
            return Envelop.getSuccess(BaseVersionContants.BaseServerVersion.message_success_create, serverVersionService.createBaseServerVersion(serverVersion));
        } catch (ApiException e) {
            return Envelop.getError(e.getMessage(), e.getErrorCode());
        }
@ -48,43 +53,48 @@ public class ServerVersionController extends EnvelopRestController {
            @ApiParam(name = "json_data", value = "", defaultValue = "")
            @RequestBody String jsonData) {
        try {
            WlyyVersion WlyyVersion = toEntity(jsonData, WlyyVersion.class);
            return Envelop.getSuccess(BaseVersionContants.WlyyVersion.message_success_update, wlyyVersionService.updateWlyyVersion(WlyyVersion));
            BaseServerVersion serverVersion = toEntity(jsonData, BaseServerVersion.class);
            return Envelop.getSuccess(BaseVersionContants.BaseServerVersion.message_success_update, serverVersionService.updateBaseServerVersion(serverVersion));
        } catch (ApiException e) {
            return Envelop.getError(e.getMessage(), e.getErrorCode());
        }
    }
    @DeleteMapping(value = BaseVersionContants.BaseServerVersion.api_delete, consumes = MediaType.APPLICATION_JSON_UTF8_VALUE)
    @ApiOperation(value = "删除服务器版本", notes = "删除服务器版本")
    public Envelop deleteWlyyVersion(
            @ApiParam(name = "code", value = "code")
            @RequestParam(value = "code", required = true) String code) {
    @DeleteMapping(value = BaseVersionContants.BaseServerVersion.api_delete)
      @ApiOperation(value = "删除服务器版本", notes = "删除服务器版本")
      public Envelop deleteWlyyVersion(
            @ApiParam(name = "codes", value = "codes")
            @PathVariable(value = "codes", required = true) String codes,
            @ApiParam(name = "userCode", value = "userCode")
            @RequestParam(value = "userCode", required = true) String userCode,
            @ApiParam(name = "userName", value = "userName")
            @RequestParam(value = "userName", required = true) String userName) {
        try {
            wlyyVersionService.deleteWlyyVersion(code);
            return Envelop.getSuccess(BaseVersionContants.WlyyVersion.message_success_delete );
            serverVersionService.deleteBaseServerVersion(codes,userCode,userName);
            return Envelop.getSuccess(BaseVersionContants.BaseServerVersion.message_success_delete );
        } catch (ApiException e) {
            return Envelop.getError(e.getMessage(), e.getErrorCode());
        }
    }
    @GetMapping(value = BaseVersionContants.BaseServerVersion.api_getByCode, consumes = MediaType.APPLICATION_JSON_UTF8_VALUE)
    @GetMapping(value = BaseVersionContants.BaseServerVersion.api_getByCode)
    @ApiOperation(value = "根据code查找服务器版本", notes = "根据code查找服务器版本")
    public Envelop findByCode(
            @ApiParam(name = "code", value = "code")
            @RequestParam(value = "code", required = true) String code
            @PathVariable(value = "code", required = true) String code
    ) {
        try {
            return Envelop.getSuccess(BaseVersionContants.WlyyVersion.message_success_find, wlyyVersionService.findByCode(code));
            return Envelop.getSuccess(BaseVersionContants.BaseServerVersion.message_success_find, serverVersionService.findByCode(code));
        } catch (ApiException e) {
            return Envelop.getError(e.getMessage(), e.getErrorCode());
        }
    }
    @RequestMapping(value = BaseVersionContants.BaseServerVersion.api_getBaseServerVersion, method = RequestMethod.GET)
    @RequestMapping(value = BaseVersionContants.BaseServerVersion.api_getList, method = RequestMethod.GET)
    @ApiOperation(value = "获取服务器版本列表(分页)")
    public Envelop getWlyyVersions(
            @ApiParam(name = "fields", value = "返回的字段,为空返回全部字段", defaultValue = "code,name,saasId,parentCode,remark")
            @ApiParam(name = "fields", value = "返回的字段,为空返回全部字段", defaultValue = "id,code,name,saasId,versionInt,remark")
            @RequestParam(value = "fields", required = false) String fields,
            @ApiParam(name = "filters", value = "过滤器,为空检索所有条件")
            //code like 1,name大于aa ,code 等于1 , defaultValue = "code?1;name>aa;code=1"
@ -98,19 +108,30 @@ public class ServerVersionController extends EnvelopRestController {
            HttpServletRequest request,
            HttpServletResponse response) throws Exception {
        //得到list数据
        List<WlyyVersion> list = wlyyVersionService.search(fields, filters, sorts, page, size);
        List<BaseServerVersion> list = serverVersionService.search(fields, filters, sorts, page, size);
        //查找是否存在功能版本
        for(BaseServerVersion baseServerVersion:list){
            List<BaseServerUrlVersion> serverUrlVersions = serverUrlVersionService.findByServer(baseServerVersion.getCode());
            if(serverUrlVersions.size()>0){
                baseServerVersion.setState("closed");
            }else{
                baseServerVersion.setState("open");
            }
        }
        //获取总数
        long count=wlyyVersionService.getCount(filters);
        long count=serverVersionService.getCount(filters);
        //封装头信息
        pagedResponse(request, response, count, page, size);
        //封装返回格式
        List<MWlyyVersion> mWlyyVersions = convertToModels(list, new ArrayList<>(list.size()), MWlyyVersion.class, fields);
        List<MBaseServerVersion> mWlyyVersions = convertToModels(list, new ArrayList<>(list.size()), MBaseServerVersion.class, fields);
        return Envelop.getSuccessListWithPage(BaseVersionContants.WlyyVersion.message_success_find_WlyyVersions,mWlyyVersions, page, size,count);
        return Envelop.getSuccessListWithPage(BaseVersionContants.BaseServerVersion.message_success_find_BaseServerVersions,mWlyyVersions, page, size,count);
    }
    @GetMapping(value = BaseVersionContants.BaseServerVersion.api_getBaseServerVersionNoPage)
    @GetMapping(value = BaseVersionContants.BaseServerVersion.api_getListNoPage)
    @ApiOperation(value = "获取服务器版本列表,不分页")
    public Envelop getAppsNoPage(
            @ApiParam(name = "fields", value = "返回的字段,为空返回全部字段", defaultValue = "code,name,saasId,parentCode,remark")
@ -120,11 +141,9 @@ public class ServerVersionController extends EnvelopRestController {
            @ApiParam(name = "sorts", value = "排序,规则参见说明文档", defaultValue = "+name,+createTime")
            @RequestParam(value = "sorts", required = false) String sorts) throws Exception {
        //得到list数据
        List<WlyyVersion> list = wlyyVersionService.search(fields,filters,sorts);
        List<BaseUserUrlVersion> list = serverVersionService.search(fields,filters,sorts);
        //封装返回格式
        List<MWlyyVersion> mWlyyVersions = convertToModels(list, new ArrayList<>(list.size()), MWlyyVersion.class, fields);
        return Envelop.getSuccessList(BaseVersionContants.WlyyVersion.message_success_find_WlyyVersions,mWlyyVersions);
        List<BaseUserUrlVersion> userVersion = convertToModels(list, new ArrayList<>(list.size()), BaseUserUrlVersion.class, fields);
        return Envelop.getSuccessList(BaseVersionContants.BaseServerVersion.message_success_find,userVersion);
    }
}

+ 13 - 10
svr/svr-base/src/main/java/com/yihu/jw/version/controller/WlyyVersionController.java

@ -6,7 +6,6 @@ import com.yihu.jw.restmodel.common.Envelop;
import com.yihu.jw.restmodel.common.EnvelopRestController;
import com.yihu.jw.restmodel.exception.ApiException;
import com.yihu.jw.version.model.WlyyVersion;
import com.yihu.jw.version.service.ServerVersionService;
import com.yihu.jw.version.service.WlyyVersionService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
@ -25,7 +24,7 @@ import java.util.List;
 */
@RestController
@RequestMapping(BaseVersionContants.WlyyVersion.api_common)
@RequestMapping(BaseVersionContants.api_common)
@Api(value = "i健康APP版本模块", description = "i健康APP版本模块接口管理")
public class WlyyVersionController  extends EnvelopRestController {
    @Autowired
@ -56,24 +55,28 @@ public class WlyyVersionController  extends EnvelopRestController {
            return Envelop.getError(e.getMessage(), e.getErrorCode());
        }
    }
    @DeleteMapping(value = BaseVersionContants.WlyyVersion.api_delete, consumes = MediaType.APPLICATION_JSON_UTF8_VALUE)
    @DeleteMapping(value = BaseVersionContants.WlyyVersion.api_delete)
    @ApiOperation(value = "删除i健康APP版本", notes = "删除i健康APP版本")
    public Envelop deleteWlyyVersion(
            @ApiParam(name = "code", value = "code")
            @RequestParam(value = "code", required = true) String code) {
            @ApiParam(name = "codes", value = "codes")
            @PathVariable(value = "codes", required = true) String codes,
            @ApiParam(name = "userCode", value = "userCode")
            @RequestParam(value = "userCode", required = true) String userCode,
            @ApiParam(name = "userName", value = "userName")
            @RequestParam(value = "userName", required = true) String userName) {
        try {
            wlyyVersionService.deleteWlyyVersion(code);
            wlyyVersionService.deleteWlyyVersion(codes,userCode,userName);
            return Envelop.getSuccess(BaseVersionContants.WlyyVersion.message_success_delete );
        } catch (ApiException e) {
            return Envelop.getError(e.getMessage(), e.getErrorCode());
        }
    }
    @GetMapping(value = BaseVersionContants.WlyyVersion.api_getByCode, consumes = MediaType.APPLICATION_JSON_UTF8_VALUE)
    @GetMapping(value = BaseVersionContants.WlyyVersion.api_getByCode)
    @ApiOperation(value = "根据code查找i健康APP版本", notes = "根据code查找i健康APP版本")
    public Envelop findByCode(
            @ApiParam(name = "code", value = "code")
            @RequestParam(value = "code", required = true) String code
            @PathVariable(value = "code", required = true) String code
    ) {
        try {
            return Envelop.getSuccess(BaseVersionContants.WlyyVersion.message_success_find, wlyyVersionService.findByCode(code));
@ -83,7 +86,7 @@ public class WlyyVersionController  extends EnvelopRestController {
    }
    @RequestMapping(value = BaseVersionContants.WlyyVersion.api_getWlyyVersion, method = RequestMethod.GET)
    @RequestMapping(value = BaseVersionContants.WlyyVersion.api_getList, method = RequestMethod.GET)
    @ApiOperation(value = "获取i健康APP版本列表(分页)")
    public Envelop getWlyyVersions(
            @ApiParam(name = "fields", value = "返回的字段,为空返回全部字段", defaultValue = "code,name,saasId,parentCode,remark")
@ -112,7 +115,7 @@ public class WlyyVersionController  extends EnvelopRestController {
    }
    @GetMapping(value = BaseVersionContants.WlyyVersion.api_getWlyyVersionNoPage)
    @GetMapping(value = BaseVersionContants.WlyyVersion.api_getListNoPage)
    @ApiOperation(value = "获取i健康APP版本列表,不分页")
    public Envelop getAppsNoPage(
            @ApiParam(name = "fields", value = "返回的字段,为空返回全部字段", defaultValue = "code,name,saasId,parentCode,remark")

+ 6 - 0
svr/svr-base/src/main/java/com/yihu/jw/version/dao/ServerVersionDao.java

@ -1,10 +1,13 @@
package com.yihu.jw.version.dao;
import com.yihu.jw.version.model.BaseServerVersion;
import com.yihu.jw.wx.model.WxWechat;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
import org.springframework.data.jpa.repository.Query;
import org.springframework.data.repository.PagingAndSortingRepository;
import java.util.List;
/**
 * Created by chenweida on 2017/5/19.
 */
@ -18,4 +21,7 @@ public interface ServerVersionDao extends PagingAndSortingRepository<BaseServerV
    @Query("from BaseServerVersion f where f.code=?1 and f.status=1")
    BaseServerVersion findByCode(String code);
    @Query("from BaseServerVersion v where v.status!=-1")
    List<BaseServerVersion> findAll();
}

+ 29 - 71
svr/svr-base/src/main/java/com/yihu/jw/version/model/BaseServerVersion.java

@ -2,30 +2,36 @@ package com.yihu.jw.version.model;// default package
import com.yihu.jw.base.model.IdEntity;
import java.util.Date;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Table;
import javax.persistence.Transient;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
/**
 * BaseServerVersion entity. @author MyEclipse Persistence Tools
 * 后台版本model
 */
@Entity
@Table(name = "base_server_version")
public class BaseServerVersion  extends IdEntity implements java.io.Serializable {
 
	private String code; //业务code
	private String saasId;//关联base_saas code
	private String name; //版本名称
	private Integer versionInt;//版本号
	private Date createTime;
	private String createUser;
	private String createUserName;
	private Date updateTime;
	private String updateUser;
	private String updateUserName;
	private Integer status;////-1 删除 0 禁用 可用
	private String remark;
	@Transient
	private List<BaseServerUrlVersion> children = new ArrayList<>();
	//children长度为0时    state  “open”表示是子节点,“closed”表示为父节点;
	// children长度>0时,  state   “open,closed”表示是节点的打开关闭
	@Transient
	private String state;
	// Constructors
@ -62,15 +68,6 @@ public class BaseServerVersion  extends IdEntity implements java.io.Serializable
		this.remark = remark;
	}
	@Column(name = "code", nullable = false, length = 10)
	public String getCode() {
		return this.code;
	}
	public void setCode(String code) {
		this.code = code;
	}
	@Column(name = "saas_id", length = 100)
	public String getSaasId() {
		return this.saasId;
@ -98,60 +95,6 @@ public class BaseServerVersion  extends IdEntity implements java.io.Serializable
		this.versionInt = versionInt;
	}
	@Column(name = "create_time", nullable = false, length = 0)
	public Date getCreateTime() {
		return this.createTime;
	}
	public void setCreateTime(Date createTime) {
		this.createTime = createTime;
	}
	@Column(name = "create_user", length = 100)
	public String getCreateUser() {
		return this.createUser;
	}
	public void setCreateUser(String createUser) {
		this.createUser = createUser;
	}
	@Column(name = "create_user_name", length = 50)
	public String getCreateUserName() {
		return this.createUserName;
	}
	public void setCreateUserName(String createUserName) {
		this.createUserName = createUserName;
	}
	@Column(name = "update_time", nullable = false, length = 0)
	public Date getUpdateTime() {
		return this.updateTime;
	}
	public void setUpdateTime(Date updateTime) {
		this.updateTime = updateTime;
	}
	@Column(name = "update_user", length = 100)
	public String getUpdateUser() {
		return this.updateUser;
	}
	public void setUpdateUser(String updateUser) {
		this.updateUser = updateUser;
	}
	@Column(name = "update_user_name", length = 50)
	public String getUpdateUserName() {
		return this.updateUserName;
	}
	public void setUpdateUserName(String updateUserName) {
		this.updateUserName = updateUserName;
	}
	@Column(name = "status", length = 1)
	public Integer getStatus() {
		return this.status;
@ -170,4 +113,19 @@ public class BaseServerVersion  extends IdEntity implements java.io.Serializable
		this.remark = remark;
	}
	public List<BaseServerUrlVersion> getChildren() {
		return children;
	}
	public void setChildren(List<BaseServerUrlVersion> children) {
		this.children = children;
	}
	public String getState() {
		return state;
	}
	public void setState(String state) {
		this.state = state;
	}
}

+ 10 - 59
svr/svr-base/src/main/java/com/yihu/jw/version/model/BaseServerVersionLog.java

@ -2,10 +2,10 @@ package com.yihu.jw.version.model;// default package
import com.yihu.jw.base.model.IdEntity;
import java.util.Date;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Table;
import java.util.Date;
/**
 * BaseServerVersionLog entity. @author MyEclipse Persistence Tools
@ -16,15 +16,10 @@ public class BaseServerVersionLog extends IdEntity implements java.io.Serializab
	private String saasId; //关联saas code
	private String userCodes;//此次更新的用户 多个逗号分割
	private String bsvCode;//关联 base_server_version code
	private String name;//此次更新的版本名称
	private Integer versionInt;//版本号
	private Integer type;//1更新 2回滚
	private Date createTime;
	private String createUser;
	private String createUserName;
	private Date updateTime;
	private String updateUser;
	private String updateUserName;
	private Integer status;////-1 删除 0 禁用 可用
	// Constructors
@ -89,34 +84,6 @@ public class BaseServerVersionLog extends IdEntity implements java.io.Serializab
		this.versionInt = versionInt;
	}
	@Column(name = "create_time", nullable = false, length = 0)
	public Date getCreateTime() {
		return this.createTime;
	}
	public void setCreateTime(Date createTime) {
		this.createTime = createTime;
	}
	@Column(name = "create_user", length = 100)
	public String getCreateUser() {
		return this.createUser;
	}
	public void setCreateUser(String createUser) {
		this.createUser = createUser;
	}
	@Column(name = "create_user_name", length = 50)
	public String getCreateUserName() {
		return this.createUserName;
	}
	public void setCreateUserName(String createUserName) {
		this.createUserName = createUserName;
	}
	public Integer getType() {
		return type;
	}
@ -125,30 +92,6 @@ public class BaseServerVersionLog extends IdEntity implements java.io.Serializab
		this.type = type;
	}
	public Date getUpdateTime() {
		return updateTime;
	}
	public void setUpdateTime(Date updateTime) {
		this.updateTime = updateTime;
	}
	public String getUpdateUser() {
		return updateUser;
	}
	public void setUpdateUser(String updateUser) {
		this.updateUser = updateUser;
	}
	public String getUpdateUserName() {
		return updateUserName;
	}
	public void setUpdateUserName(String updateUserName) {
		this.updateUserName = updateUserName;
	}
	public Integer getStatus() {
		return status;
	}
@ -156,4 +99,12 @@ public class BaseServerVersionLog extends IdEntity implements java.io.Serializab
	public void setStatus(Integer status) {
		this.status = status;
	}
	public String getBsvCode() {
		return bsvCode;
	}
	public void setBsvCode(String bsvCode) {
		this.bsvCode = bsvCode;
	}
}

+ 0 - 65
svr/svr-base/src/main/java/com/yihu/jw/version/model/WlyyVersion.java

@ -5,7 +5,6 @@ import com.yihu.jw.base.model.IdEntity;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Table;
import java.util.Date;
/**
 * WlyyVersion entity. @author MyEclipse Persistence Tools
@ -17,19 +16,12 @@ public class WlyyVersion extends IdEntity implements java.io.Serializable {
	// Fields
	private String saasId; //saas code
	private String code;
	private String name;
	private Double versionInt;
	private String versionStr;
	private String url;//app下载的路径
	private String info;//app更新的信息
	private Double size;//大小 MB
	private Date createTime;
	private String createUser;
	private String createUserName;
	private Date updateTime;
	private String updateUser;
	private String updateUserName;
	private Integer status;////-1 删除 0 禁用 可用
	// Constructors
@ -68,15 +60,6 @@ public class WlyyVersion extends IdEntity implements java.io.Serializable {
		this.saasId = saasId;
	}
	@Column(name = "code", nullable = false, length = 10)
	public String getCode() {
		return this.code;
	}
	public void setCode(String code) {
		this.code = code;
	}
	@Column(name = "name", nullable = false, length = 10)
	public String getName() {
		return this.name;
@ -131,54 +114,6 @@ public class WlyyVersion extends IdEntity implements java.io.Serializable {
		this.size = size;
	}
	public Date getCreateTime() {
		return createTime;
	}
	public void setCreateTime(Date createTime) {
		this.createTime = createTime;
	}
	public String getCreateUser() {
		return createUser;
	}
	public void setCreateUser(String createUser) {
		this.createUser = createUser;
	}
	public String getCreateUserName() {
		return createUserName;
	}
	public void setCreateUserName(String createUserName) {
		this.createUserName = createUserName;
	}
	public Date getUpdateTime() {
		return updateTime;
	}
	public void setUpdateTime(Date updateTime) {
		this.updateTime = updateTime;
	}
	public String getUpdateUser() {
		return updateUser;
	}
	public void setUpdateUser(String updateUser) {
		this.updateUser = updateUser;
	}
	public String getUpdateUserName() {
		return updateUserName;
	}
	public void setUpdateUserName(String updateUserName) {
		this.updateUserName = updateUserName;
	}
	public Integer getStatus() {
		return status;
	}

+ 2 - 34
svr/svr-base/src/main/java/com/yihu/jw/version/service/ServerVersionLogService.java

@ -1,9 +1,8 @@
package com.yihu.jw.version.service;
import com.yihu.jw.mysql.query.BaseJpaService;
import com.yihu.jw.version.dao.ServerVersionDao;
import com.yihu.jw.version.dao.ServerVersionLogDao;
import com.yihu.jw.version.model.BaseServerVersion;
import com.yihu.jw.version.model.BaseServerVersionLog;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.stereotype.Service;
@ -12,41 +11,10 @@ import org.springframework.stereotype.Service;
 * Created by chenweida on 2017/5/19.
 */
@Service
public class ServerVersionLogService extends BaseJpaService<BaseServerVersion, ServerVersionDao> {
public class ServerVersionLogService extends BaseJpaService<BaseServerVersionLog, ServerVersionLogDao> {
    @Autowired
    private ServerVersionLogDao baseServerVersionLogDao;
    @Autowired
    private JdbcTemplate jdbcTemplate;
    /*@Transactional
    public BaseServerVersionLog createBaseServerVersionLog(BaseServerVersionLog baseServerVersionLog) throws ApiException {
        if (StringUtils.isEmpty(baseServerVersionLog.getName())) {
            throw new ApiException(BaseVersionContants.BaseServerVersion.message_fail_name_is_null, CommonContants.common_error_params_code);
        }
        BaseServerVersionLog BaseServerVersionTmp = baseServerVersionLogDao.findByName(baseServerVersionLog.getName());
        if (BaseServerVersionTmp != null) {
            throw new ApiException(BaseVersionContants.BaseServerVersion.message_fail_name_exist, CommonContants.common_error_params_code);
        }
        return baseServerVersionLogDao.save(baseServerVersionLog);
    }
    public BaseServerVersionLog findByCode(String code) {
        BaseServerVersionLog serverVersion = baseServerVersionLogDao.findByCode(code);
        if (serverVersion == null) {
            throw new ApiException(BaseVersionContants.BaseServerVersion.message_fail_code_no_exist, CommonContants.common_error_params_code);
        }
        return serverVersion;
    }
    @Transactional
    public void deleteBaseServerVersionLog(String code) {
        BaseServerVersionLog baseServerVersion = baseServerVersionLogDao.findByCode(code);
        if (baseServerVersion == null) {
            throw new ApiException(BaseVersionContants.BaseServerVersion.message_fail_code_no_exist, CommonContants.common_error_params_code);
        }
        baseServerVersion.setStatus(-1);
    }*/
}

+ 50 - 17
svr/svr-base/src/main/java/com/yihu/jw/version/service/ServerVersionService.java

@ -13,8 +13,9 @@ import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.StringUtils;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
 * Created by chenweida on 2017/5/19.
@ -22,23 +23,25 @@ import java.util.List;
@Service
public class ServerVersionService extends BaseJpaService<BaseServerVersion, ServerVersionDao> {
    @Autowired
    private ServerVersionDao BaseServerVersionDao;
    private ServerVersionDao baseServerVersionDao;
    @Autowired
    private JdbcTemplate jdbcTemplate;
    @Autowired
    private ServerUrlVersionService serverUrlVersionService;
    @Transactional
    public BaseServerVersion createBaseServerVersion(BaseServerVersion BaseServerVersion) throws ApiException {
        if (StringUtils.isEmpty(BaseServerVersion.getCode())) {
    public BaseServerVersion createBaseServerVersion(BaseServerVersion baseServerVersion) throws ApiException {
        if (StringUtils.isEmpty(baseServerVersion.getCode())) {
            throw new ApiException(BaseVersionContants.BaseServerVersion.message_fail_code_is_null, CommonContants.common_error_params_code);
        }
        if (StringUtils.isEmpty(BaseServerVersion.getName())) {
        if (StringUtils.isEmpty(baseServerVersion.getName())) {
            throw new ApiException(BaseVersionContants.BaseServerVersion.message_fail_name_is_null, CommonContants.common_error_params_code);
        }
        BaseServerVersion BaseServerVersionTmp = BaseServerVersionDao.findByName(BaseServerVersion.getName());
        BaseServerVersion BaseServerVersionTmp = baseServerVersionDao.findByName(baseServerVersion.getName());
        if (BaseServerVersionTmp != null) {
            throw new ApiException(BaseVersionContants.BaseServerVersion.message_fail_name_exist, CommonContants.common_error_params_code);
        }
        return BaseServerVersionDao.save(BaseServerVersion);
        return baseServerVersionDao.save(baseServerVersion);
    }
    @Transactional
@ -52,28 +55,40 @@ public class ServerVersionService extends BaseJpaService<BaseServerVersion, Serv
        if (StringUtils.isEmpty(BaseServerVersion.getId())) {
            throw new ApiException(BaseVersionContants.BaseServerVersion.message_fail_id_is_null, CommonContants.common_error_params_code);
        }
        BaseServerVersion BaseServerVersionTmp = BaseServerVersionDao.findByNameExcludeCode(BaseServerVersion.getName(), BaseServerVersion.getCode());
        BaseServerVersion BaseServerVersionTmp = baseServerVersionDao.findByNameExcludeCode(BaseServerVersion.getName(), BaseServerVersion.getCode());
        if (BaseServerVersionTmp != null) {
            throw new ApiException(BaseVersionContants.BaseServerVersion.message_fail_name_exist, CommonContants.common_error_params_code);
        }
        return BaseServerVersionDao.save(BaseServerVersion);
        return baseServerVersionDao.save(BaseServerVersion);
    }
    public BaseServerVersion findByCode(String code) {
        BaseServerVersion BaseServerVersion = BaseServerVersionDao.findByCode(code);
        if (BaseServerVersion == null) {
        BaseServerVersion baseServerVersion = baseServerVersionDao.findByCode(code);
        if (baseServerVersion == null) {
            throw new ApiException(BaseVersionContants.BaseServerVersion.message_fail_code_no_exist, CommonContants.common_error_params_code);
        }
        return BaseServerVersion;
        return baseServerVersion;
    }
    @Transactional
    public void deleteBaseServerVersion(String code) {
        BaseServerVersion BaseServerVersion = BaseServerVersionDao.findByCode(code);
        if (BaseServerVersion == null) {
            throw new ApiException(BaseVersionContants.BaseServerVersion.message_fail_code_no_exist, CommonContants.common_error_params_code);
    public void deleteBaseServerVersion(String codes,String userCode,String userName) {
        if(StringUtils.isEmpty(codes)){
            throw new ApiException(BaseVersionContants.BaseServerVersion.message_fail_code_is_null, CommonContants.common_error_params_code);
        }
        for(String code:codes.split(",")){
            BaseServerVersion baseServerVersion = baseServerVersionDao.findByCode(code);
            if (baseServerVersion == null) {
                continue;
            }
            baseServerVersion.setStatus(-1);
            baseServerVersion.setUpdateUserName(userName);
            baseServerVersion.setUpdateUser(userCode);
            baseServerVersionDao.save(baseServerVersion);
            //同时删除后台url版本
            serverUrlVersionService.deleteByServer(code, userName,userCode);
        }
        BaseServerVersion.setStatus(-1);
    }
    public List<MBaseServerVersion> getModuleBaseServerVersions(String saasCode) {
@ -81,4 +96,22 @@ public class ServerVersionService extends BaseJpaService<BaseServerVersion, Serv
        return jdbcTemplate.queryForList(sql,MBaseServerVersion.class,saasCode);
    }
    public List<BaseServerVersion> findAll(){
        return baseServerVersionDao.findAll();
    }
    /**
     * key为code ,value为版本名字
     * @return
     */
    public Map<String,String> getName(){
        List<BaseServerVersion> baseServerVersion = findAll();
        Map<String, String> map = new HashMap<>();
        if(null!=baseServerVersion){
            for(BaseServerVersion version: baseServerVersion){
                map.put(version.getCode(),version.getName());
            }
        }
        return map;
    }
}

+ 22 - 15
svr/svr-base/src/main/java/com/yihu/jw/version/service/WlyyVersionService.java

@ -2,19 +2,16 @@ package com.yihu.jw.version.service;
import com.yihu.jw.mysql.query.BaseJpaService;
import com.yihu.jw.restmodel.base.version.BaseVersionContants;
import com.yihu.jw.restmodel.base.version.MWlyyVersion;
import com.yihu.jw.restmodel.common.CommonContants;
import com.yihu.jw.restmodel.exception.ApiException;
import com.yihu.jw.version.dao.ServerVersionDao;
import com.yihu.jw.version.dao.WlyyVersionDao;
import com.yihu.jw.version.model.WlyyVersion;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.StringUtils;
import java.util.List;
import java.util.UUID;
/**
 * Created by chenweida on 2017/5/19.
@ -26,6 +23,9 @@ public class WlyyVersionService extends BaseJpaService<WlyyVersion, WlyyVersionD
    @Transactional
    public WlyyVersion createWlyyVersion(WlyyVersion wlyyVersion) throws ApiException {
        if (StringUtils.isEmpty(wlyyVersion.getCode())) {
            wlyyVersion.setCode(UUID.randomUUID().toString().replaceAll("-",""));
        }
        if (StringUtils.isEmpty(wlyyVersion.getName())) {
            throw new ApiException(BaseVersionContants.WlyyVersion.message_fail_name_is_null, CommonContants.common_error_params_code);
        }
@ -37,21 +37,21 @@ public class WlyyVersionService extends BaseJpaService<WlyyVersion, WlyyVersionD
    }
    @Transactional
    public WlyyVersion updateWlyyVersion(WlyyVersion WlyyVersion) {
        if (StringUtils.isEmpty(WlyyVersion.getCode())) {
    public WlyyVersion updateWlyyVersion(WlyyVersion wlyyVersion) {
        if (StringUtils.isEmpty(wlyyVersion.getCode())) {
            throw new ApiException(BaseVersionContants.WlyyVersion.message_fail_code_is_null, CommonContants.common_error_params_code);
        }
        if (StringUtils.isEmpty(WlyyVersion.getName())) {
        if (StringUtils.isEmpty(wlyyVersion.getName())) {
            throw new ApiException(BaseVersionContants.WlyyVersion.message_fail_name_is_null, CommonContants.common_error_params_code);
        }
        if (StringUtils.isEmpty(WlyyVersion.getId())) {
        if (StringUtils.isEmpty(wlyyVersion.getId())) {
            throw new ApiException(BaseVersionContants.WlyyVersion.message_fail_id_is_null, CommonContants.common_error_params_code);
        }
        WlyyVersion wlyyVersionTmp = wlyyVersionDao.findByNameExcludeCode(WlyyVersion.getName(), WlyyVersion.getCode());
        WlyyVersion wlyyVersionTmp = wlyyVersionDao.findByNameExcludeCode(wlyyVersion.getName(), wlyyVersion.getCode());
        if (wlyyVersionTmp != null) {
            throw new ApiException(BaseVersionContants.WlyyVersion.message_fail_name_exist, CommonContants.common_error_params_code);
        }
        return wlyyVersionDao.save(WlyyVersion);
        return wlyyVersionDao.save(wlyyVersion);
    }
    public WlyyVersion findByCode(String code) {
@ -63,11 +63,18 @@ public class WlyyVersionService extends BaseJpaService<WlyyVersion, WlyyVersionD
    }
    @Transactional
    public void deleteWlyyVersion(String code) {
        WlyyVersion WlyyVersion = wlyyVersionDao.findByCode(code);
        if (WlyyVersion == null) {
            throw new ApiException(BaseVersionContants.WlyyVersion.message_fail_code_no_exist, CommonContants.common_error_params_code);
    public void deleteWlyyVersion(String codes, String userCode, String userName) {
        if(!StringUtils.isEmpty(codes)){
            for (String code: codes.split(",")){
                WlyyVersion wlyyVersion = wlyyVersionDao.findByCode(code);
                if (wlyyVersion == null) {
                    continue;
                }
                wlyyVersion.setStatus(-1);
                wlyyVersion.setUpdateUserName(userName);
                wlyyVersion.setUpdateUser(userCode);
                wlyyVersionDao.save(wlyyVersion);
            }
        }
        WlyyVersion.setStatus(-1);
    }
}

+ 14 - 5
svr/svr-base/src/main/java/com/yihu/jw/wx/controller/WxMenuController.java

@ -121,10 +121,10 @@ public class WxMenuController extends EnvelopRestController {
        List<WxWechat> wechats = wechatService.search(fields, filters, sorts, page, size);
        for(WxWechat wechat:wechats){
            List<WxMenu> parentMenus = wxMenuService.findParentMenuByWechatCode(wechat.getCode());
            wechat.setChildren(parentMenus);
            for(WxMenu parentMenu:parentMenus){
                List<WxMenu> childMenus = wxMenuService.findChildMenus(parentMenu.getCode());
                parentMenu.setChildren(childMenus);
            if (parentMenus.size()>0){
                wechat.setState("closed");
            }else{
                wechat.setState("open");
            }
        }
        //获取总数
@ -199,7 +199,16 @@ public class WxMenuController extends EnvelopRestController {
            @PathVariable(value = "wechatCode", required = true) String wechatCode
    ) {
        try {
            return Envelop.getSuccess(WechatContants.WxMenu.message_success_find, wxMenuService.findParentMenuByWechatCode(wechatCode));
            List<WxMenu> parentMenus = wxMenuService.findParentMenuByWechatCode(wechatCode);
            for(WxMenu parentMenu:parentMenus){
                List<WxMenu> childMenus = wxMenuService.findChildMenus(parentMenu.getCode());
                if (childMenus.size()>0){
                    parentMenu.setState("closed");
                }else{
                    parentMenu.setState("open");
                }
            }
            return Envelop.getSuccess(WechatContants.WxMenu.message_success_find, parentMenus);
        } catch (ApiException e) {
            return Envelop.getError(e.getMessage(), e.getErrorCode());
        }

+ 17 - 15
svr/svr-base/src/main/java/com/yihu/jw/wx/controller/WxTemplateController.java

@ -4,10 +4,12 @@ import com.yihu.jw.restmodel.common.Envelop;
import com.yihu.jw.restmodel.common.EnvelopRestController;
import com.yihu.jw.restmodel.exception.ApiException;
import com.yihu.jw.restmodel.wx.MWxTemplate;
import com.yihu.jw.restmodel.wx.MWxWechat;
import com.yihu.jw.restmodel.wx.WechatContants;
import com.yihu.jw.wx.WechatResponse;
import com.yihu.jw.wx.model.Miniprogram;
import com.yihu.jw.wx.model.WxTemplate;
import com.yihu.jw.wx.model.WxWechat;
import com.yihu.jw.wx.service.WechatService;
import com.yihu.jw.wx.service.WxTemplateService;
import io.swagger.annotations.Api;
@ -23,7 +25,6 @@ import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
/**
 * Created by Administrator on 2017/5/19 0019.
@ -113,26 +114,31 @@ public class WxTemplateController extends EnvelopRestController {
        if(StringUtils.isBlank(sorts)){
            sorts = "-updateTime";
        }
        //得到list数据
        List<WxTemplate> list = wxTemplateService.search(fields, filters, sorts, page, size);
        //得到微信列表数据
        List<WxWechat> wechats = wechatService.search(fields, filters, sorts, page, size);
        for(WxWechat wechat:wechats){
            List<WxTemplate> wxTemplates = wxTemplateService.findByWxCode(wechat.getCode());
            if (wxTemplates.size()>0){
                wechat.setState("closed");
            }else{
                wechat.setState("open");
            }
        }
        //获取总数
        long count=wxTemplateService.getCount(filters);
        long count=wechatService.getCount(filters);
        //封装头信息
        pagedResponse(request, response, count, page, size);
        //封装返回格式
        List<MWxTemplate> templates = convertToModels(list, new ArrayList<>(list.size()), MWxTemplate.class, fields);
        Map<String, String> map = wechatService.getAllWechatConfig();
        for(MWxTemplate template:templates){
            template.setWechatName(map.get(template.getWechatCode()));
        }
        List<MWxWechat> mwechats = convertToModels(wechats, new ArrayList<>(wechats.size()), MWxWechat.class, fields);
        return Envelop.getSuccessListWithPage(WechatContants.WxMenu.message_success_find_functions,mwechats, page, size,count);
        return Envelop.getSuccessListWithPage(WechatContants.WxTemplate.message_success_find_functions,templates, page, size,count);
    }
    @GetMapping(value = WechatContants.WxTemplate.api_getWxTemplatesNoPage)
    @ApiOperation(value = "获取微信模版列表(不分页)")
    public Envelop getWechatNoPage(
    public Envelop getList(
            @ApiParam(name = "fields", value = "返回的字段,为空返回全部字段", defaultValue = "id,code,title,wechatCode,templateId,content,remark,status")
            @RequestParam(value = "fields", required = false) String fields,
            @ApiParam(name = "filters", value = "过滤器,为空检索所有条件")
@ -143,10 +149,6 @@ public class WxTemplateController extends EnvelopRestController {
        List<WxTemplate> list = wxTemplateService.search(fields,filters,sorts);
        //封装返回格式
        List<MWxTemplate> mMWxTemplates = convertToModels(list, new ArrayList<>(list.size()), MWxTemplate.class, fields);
        Map<String, String> map = wechatService.getAllWechatConfig();
        for(MWxTemplate template:mMWxTemplates){
            template.setWechatName(map.get(template.getWechatCode()));
        }
        return Envelop.getSuccessList(WechatContants.WxTemplate.message_success_find_functions,mMWxTemplates);
    }

+ 5 - 0
svr/svr-base/src/main/java/com/yihu/jw/wx/dao/WxTemplateDao.java

@ -1,10 +1,13 @@
package com.yihu.jw.wx.dao;
import com.yihu.jw.wx.model.WxMenu;
import com.yihu.jw.wx.model.WxTemplate;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
import org.springframework.data.jpa.repository.Query;
import org.springframework.data.repository.PagingAndSortingRepository;
import java.util.List;
/**
 * Created by Administrator on 2017/5/20 0020.
 */
@ -16,4 +19,6 @@ public interface WxTemplateDao extends PagingAndSortingRepository<WxTemplate, Lo
    @Query("from WxTemplate w where w.id = ?1 and w.status =1")
    WxTemplate findById(Long id);
    @Query("from WxTemplate w where w.wechatCode = ?1 and w.status =1")
    List<WxTemplate> findByWxCode(String code);
}

+ 10 - 0
svr/svr-base/src/main/java/com/yihu/jw/wx/model/WxGraphicMessage.java

@ -12,6 +12,7 @@ import java.util.Date;
@Table(name = "wx_graphic_message")
public class WxGraphicMessage extends IdEntity implements java.io.Serializable {
    private String saasId;
    private String title;//标题
    private String description;//描述
    private String url;//图文消息url值
@ -97,4 +98,13 @@ public class WxGraphicMessage extends IdEntity implements java.io.Serializable {
    public void setStatus(Integer status) {
        this.status = status;
    }
    @Column(name = "saas_id", length = 50)
    public String getSaasId() {
        return saasId;
    }
    public void setSaasId(String saasId) {
        this.saasId = saasId;
    }
}

+ 22 - 1
svr/svr-base/src/main/java/com/yihu/jw/wx/model/WxMenu.java

@ -6,6 +6,7 @@ import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Table;
import javax.persistence.Transient;
import java.util.ArrayList;
import java.util.List;
/**
@ -16,6 +17,8 @@ import java.util.List;
public class WxMenu extends IdEntity implements java.io.Serializable {
    private String wechatCode;//关联的微信code 关联表 Wx_Wechat
    @Transient
    private String wechatName;
    private String supMenucode;//父菜单id 如果是一级菜单 此字段为空
    private String type;//菜单类型
    private String name;//菜单名称
@ -29,7 +32,10 @@ public class WxMenu extends IdEntity implements java.io.Serializable {
    private Integer status; //状态 -1删除 0 冻结 1可用
    @Transient
    private List<WxMenu> children;
    private String state;                //children长度为0时    state  “open”表示是子节点,“closed”表示为父节点;
                                         // children长度>0时,    state   “open,closed”表示是节点的打开关闭
    @Transient
    private List<WxMenu> children = new ArrayList<>();
@ -153,4 +159,19 @@ public class WxMenu extends IdEntity implements java.io.Serializable {
        this.remark = remark;
    }
    public String getState() {
        return state;
    }
    public void setState(String state) {
        this.state = state;
    }
    public String getWechatName() {
        return wechatName;
    }
    public void setWechatName(String wechatName) {
        this.wechatName = wechatName;
    }
}

+ 9 - 0
svr/svr-base/src/main/java/com/yihu/jw/wx/model/WxTemplate.java

@ -15,6 +15,8 @@ public class WxTemplate extends IdEntity implements java.io.Serializable {
    // Fields
    private String title;//模板标题
    private String wechatCode;//关联的微信code 关联表 Wx_Wechat
    @Transient
    private String wechatName;
    private String templateId;//微信模板id
    private String content;//模板内容
    private String remark;
@ -97,4 +99,11 @@ public class WxTemplate extends IdEntity implements java.io.Serializable {
        this.remark = remark;
    }
    public String getWechatName() {
        return wechatName;
    }
    public void setWechatName(String wechatName) {
        this.wechatName = wechatName;
    }
}

+ 16 - 3
svr/svr-base/src/main/java/com/yihu/jw/wx/model/WxWechat.java

@ -6,8 +6,10 @@ import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Table;
import javax.persistence.Transient;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.Map;
/**
 * WxWechat entity. @author MyEclipse Persistence Tools
@ -29,8 +31,12 @@ public class WxWechat extends IdEntity implements java.io.Serializable {
    private String baseUrl;//'微信base_url'
    private String remark;//'备注'
    @Transient
    private List<Map<String,Object>> children = new ArrayList<>();
    @Transient
    private List<WxMenu> children;
    private String state;
    public WxWechat(String code, String saasId, String name, String token, String encodingAesKey, Integer encType, Integer status, String type, String appId, String appSecret, String baseUrl, String createUser, String createUserName, Date createTime, String updateUser, String updateUserName, Date updateTime, String remark) {
        this.code = code;
        this.saasId = saasId;
@ -57,11 +63,11 @@ public class WxWechat extends IdEntity implements java.io.Serializable {
    public WxWechat() {
    }
    public List<WxMenu> getChildren() {
    public List<Map<String, Object>> getChildren() {
        return children;
    }
    public void setChildren(List<WxMenu> children) {
    public void setChildren(List<Map<String, Object>> children) {
        this.children = children;
    }
@ -164,4 +170,11 @@ public class WxWechat extends IdEntity implements java.io.Serializable {
        this.remark = remark;
    }
    public String getState() {
        return state;
    }
    public void setState(String state) {
        this.state = state;
    }
}

+ 2 - 1
svr/svr-base/src/main/java/com/yihu/jw/wx/service/WxMenuService.java

@ -153,7 +153,8 @@ public class WxMenuService extends BaseJpaService<WxMenu, WxMenuDao> {
     * @return
     */
    public List<WxMenu> findParentMenuByWechatCode(String wechatCode){
        return wxMenuDao.findParentMenuByWechatCode(wechatCode);
        List<WxMenu> parentMenus = wxMenuDao.findParentMenuByWechatCode(wechatCode);
        return parentMenus;
    }
    /**

+ 6 - 0
svr/svr-base/src/main/java/com/yihu/jw/wx/service/WxTemplateService.java

@ -107,6 +107,8 @@ public class WxTemplateService extends BaseJpaService<WxTemplate, WxTemplateDao>
    public WxTemplate findByCode(String code) {
        WxTemplate wxTemplate = wxTemplateDao.findByCode(code);
        WxWechat wechat = wechatService.findByCode(wxTemplate.getWechatCode());
        wxTemplate.setWechatName(wechat.getName());
        return wxTemplate;
    }
@ -170,4 +172,8 @@ public class WxTemplateService extends BaseJpaService<WxTemplate, WxTemplateDao>
            return jsonResult;
        }
    }
    public List<WxTemplate> findByWxCode(String code) {
        return wxTemplateDao.findByWxCode(code);
    }
}

+ 3 - 3
svr/svr-base/src/main/resources/application.yml

@ -8,14 +8,14 @@ spring:
---
spring:
  profiles: dev
  profiles: jwdev
---
spring:
  profiles: test
  profiles: jwtest
---
spring:
  profiles: prod
  profiles: jwprod

+ 5 - 5
svr/svr-base/src/main/resources/bootstrap.yml

@ -13,30 +13,30 @@ spring:
---
spring:
  profiles: dev
  profiles: jwdev
##发现服务的地址
eureka:
  client:
    serviceUrl:
      #http://账号:密码@127.0.0.1:8761/eureka/
      defaultZone: http://jw:jkzl@127.0.0.1:8761/eureka/
      defaultZone: http://jw:jkzl@172.19.103.33:8761/eureka/
---
spring:
  profiles: test
  profiles: jwtest
eureka:
  client:
    serviceUrl:
      #http://账号:密码@127.0.0.1:8761/eureka/
      defaultZone: http://jw:jkzl@127.0.0.1:8761/eureka/
      defaultZone: http://jw:jkzl@172.19.103.33:8761/eureka/
---
spring:
  profiles: prod
  profiles: jwprod
eureka:

+ 5 - 22
svr/svr-manage/pom.xml

@ -109,39 +109,22 @@
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-redis</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-tomcat</artifactId>
            <scope>provided</scope>
        </dependency>
    </dependencies>
    <build>
    <!--<build>
        <finalName>svr-manage</finalName>
        <plugins>
            &lt;!&ndash;打成war包需要的配置&ndash;&gt;
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
            <plugin>
                <artifactId>maven-compiler-plugin</artifactId>
                <configuration>
                    <source>1.8</source>
                    <target>1.8</target>
                </configuration>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <artifactId>maven-war-plugin</artifactId>
                <configuration>
                    <source>1.8</source>
                    <target>1.8</target>
                    <failOnMissingWebXml>false</failOnMissingWebXml>
                </configuration>
                <version>3.1</version>
            </plugin>
        </plugins>
    </build>
    </build>-->
</project>

+ 14 - 1
svr/svr-manage/src/main/java/com/yihu/jw/manage/controller/login/LoginController.java

@ -6,6 +6,7 @@ import com.yihu.jw.manage.aop.annotation.ManageLog;
import com.yihu.jw.manage.model.system.ManageUser;
import com.yihu.jw.manage.service.login.LoginService;
import com.yihu.jw.manage.service.system.MenuRoleService;
import com.yihu.jw.manage.service.system.UserRoleService;
import com.yihu.jw.restmodel.common.Envelop;
import com.yihu.jw.restmodel.common.EnvelopRestController;
import com.yihu.jw.restmodel.exception.business.ManageException;
@ -32,6 +33,8 @@ public class LoginController extends EnvelopRestController {
    private MenuRoleService menuRoleService;
    @Autowired
    private CacheAdapter cacheAdapter;
    @Autowired
    private UserRoleService userRoleService;
    @GetMapping("/login")
@ -43,6 +46,11 @@ public class LoginController extends EnvelopRestController {
        ManageUser data = loginService.login(username, password);
        String userCode = data.getCode();
        //查找saas
        List<String> saases = userRoleService.getSaasIdByUserCode(userCode);
        //根据userCode查找用户拥有的权限,放入缓存中
        List<Map<String, Object>> maps = menuRoleService.findByUserCode(userCode);
        cacheAdapter.setData(CacheAdapter.ROLE,userCode,maps);
@ -50,8 +58,13 @@ public class LoginController extends EnvelopRestController {
        //登陆用户放入缓存
        LoginCacheModel loginCacheModel = new LoginCacheModel();
        loginCacheModel.setCode(userCode);
        //saas有多个时,取出第一个放入缓存
        if(saases!=null&&saases.size()>0){
            loginCacheModel.setSaasId(saases.get(0));
        }
        cacheAdapter.setData(CacheAdapter.LOGIN,userCode,loginCacheModel);
        return Envelop.getSuccess("登陆成功", data);
        return Envelop.getSuccess("登陆成功", loginCacheModel);
    }
    @GetMapping("/loginout")

+ 19 - 20
svr/svr-manage/src/main/java/com/yihu/jw/manage/controller/system/MenuController.java

@ -13,7 +13,6 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import javax.validation.Valid;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@ -31,29 +30,24 @@ public class MenuController {
    private MenuService menuService;
    @GetMapping("menu/list")
    @ApiOperation(value = "用户列表")
    public Map<String,Object> list() {
        //查询结果
        List<ManageMenu> menus = menuService.list();
        //添加基卫
        ArrayList<ManageMenu> manageMenus = new ArrayList<ManageMenu>();
        ManageMenu manageMenu = new ManageMenu();
        manageMenu.setChildren(menus);
        manageMenu.setName("基卫后台管理系统");
        manageMenu.setParentCode("-1");
        manageMenu.setId(new Long(0));
        manageMenu.setCode("0");
        manageMenu.setType(0);
        manageMenus.add(manageMenu);
    @ApiOperation(value = "分页获取菜单列表")
    public Map<String,Object> list(
            @ApiParam(name = "name", value = "菜单名", required = false) @RequestParam(required = false, name = "name") String name,
            @ApiParam(name = "page", value = "当前页", required = false) @RequestParam(required = false, name = "page", defaultValue = "1") Integer page,
            @ApiParam(name = "rows", value = "每页显示条数", required = false) @RequestParam(required = false, name = "rows", defaultValue = "10") Integer rows
    ) {
        page = page/rows;
        Map<String, String> map = new HashMap<>();
        map.put("name",name);
        List list = menuService.list(rows, page,map);
        //数据返回
        Map<String, Object> map = new HashMap<String, Object>();
        map.put("rows",manageMenus);
        return map;
        Map<String, Object> req = new HashMap<String, Object>();
        req.put("rows",list);
        req.put("total",list.size());
        return req;
    }
    @GetMapping(value = "menu/{code}")
    @ApiOperation(value = "根据code查找用户", notes = "根据code查找用户")
    public Envelop findByCode(
@ -106,6 +100,11 @@ public class MenuController {
        return Envelop.getSuccess("成功");
    }
    /**
     * 权限配置   jstree列表
     * @return
     * @throws ManageException
     */
    @GetMapping("menu/menuTree")
    public List<ManageMenu> getMenus() throws ManageException {
        List<ManageMenu> menus = menuService.list();

+ 6 - 7
svr/svr-manage/src/main/java/com/yihu/jw/manage/controller/system/RoleController.java

@ -15,7 +15,7 @@ import org.springframework.data.domain.Page;
import org.springframework.web.bind.annotation.*;
import javax.validation.Valid;
import java.util.List;
import java.util.HashMap;
import java.util.Map;
@ -33,17 +33,16 @@ public class RoleController {
    @ApiOperation(value = "用户列表")
    public Envelop list(
            @ApiParam(name = "name", value = "用户名称", required = false) @RequestParam(required = false, name = "name") String name,
            @ApiParam(name = "saasId", required = false) @RequestParam(required = false, name = "saasId") String saasId,
            @ApiParam(name = "start", value = "当前页(0开始)", required = false) @RequestParam(required = false, name = "start", defaultValue = "0") Integer page,
            @ApiParam(name = "length", value = "每页显示条数", required = false) @RequestParam(required = false, name = "length", defaultValue = "10") Integer pageSize
    ) {
        try {
            page=page/pageSize;
            Page<ManageRole> roles = roleService.list(name, page, pageSize);
            List<ManageRole> list = roles.getContent();
            Map<String, String> saasMap = saasService.getSaasMap();
            for(ManageRole manageRole:list){
                manageRole.setSaasName(saasMap.get(manageRole.getSaasId()));
            }
            Map<String, String> map = new HashMap<>();
            map.put("name",name);
            map.put("saasId",saasId);
            Page<ManageRole> roles = roleService.list(page, pageSize,map);
            return Envelop.getSuccessListWithPage(
                    "获取信息成功",
                    roles.getContent(),//数据内容

+ 12 - 5
svr/svr-manage/src/main/java/com/yihu/jw/manage/controller/system/UserController.java

@ -15,7 +15,9 @@ import org.springframework.data.domain.Page;
import org.springframework.web.bind.annotation.*;
import javax.validation.Valid;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
 * Created by chenweida on 2017/6/12.
@ -31,7 +33,7 @@ public class UserController {
    @Autowired
    private UserRoleService userRoleService;
    @GetMapping("user/list")
    @GetMapping("/user/list")
    @ApiOperation(value = "用户列表")
    public Envelop userList(
            @ApiParam(name = "name", value = "用户名称", required = false) @RequestParam(required = false, name = "name") String name,
@ -41,11 +43,16 @@ public class UserController {
    ) {
        try {
            page=page/pageSize;
            Page<ManageUser> users = userService.userList(name, mobile, page, pageSize);
            Map<String, String> map = new HashMap<>();
            map.put("name",name);
            map.put("mobile",mobile);
            Page<ManageUser> users = userService.userList(page, pageSize,map);
            List<ManageUser> content = users.getContent();
            if(content!=null){//查找
                content = userRoleService.findByManageUser(content);
            }
            return Envelop.getSuccessListWithPage("获取信息成功", users.getContent(), page, pageSize, users.getTotalElements());
        } catch (Exception e) {
@ -53,7 +60,7 @@ public class UserController {
        }
    }
    @DeleteMapping(value = "user/{codes}")
    @DeleteMapping(value = "/user/{codes}")
    @ApiOperation(value = "删除用户", notes = "删除用户")
    public Envelop delete(
            @ApiParam(name = "codes", value = "codes")
@ -68,7 +75,7 @@ public class UserController {
        }
    }
    @GetMapping(value = "user/{code}")
    @GetMapping(value = "/user/{code}")
    @ApiOperation(value = "根据code查找用户", notes = "根据code查找用户")
    public Envelop findByCode(
            @ApiParam(name = "code", value = "code")
@ -81,7 +88,7 @@ public class UserController {
        }
    }
    @PostMapping(value = "user")
    @PostMapping(value = "/user")
    @ApiOperation(value = "保存或者修改用户", notes = "保存或者修改用户")
    public Envelop saveOrUpdate(@ModelAttribute @Valid ManageUser user,@RequestParam(value="oldPsd" ,required = false)String oldPsd ,@RequestParam(value = "userCode" ,required = true)String userCode) throws JsonProcessingException, ManageException {
        return userService.saveOrUpdate(user,oldPsd,userCode);

+ 16 - 8
svr/svr-manage/src/main/java/com/yihu/jw/manage/controller/wechat/GraphicMessageController.java

@ -1,9 +1,10 @@
package com.yihu.jw.manage.controller.wechat;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.yihu.jw.manage.model.wechat.GraphicMessage;
import com.yihu.jw.manage.service.wechat.GraphicMessageService;
import com.yihu.jw.restmodel.common.Envelop;
import com.yihu.jw.restmodel.wx.MWxGraphicMessage;
import com.yihu.jw.restmodel.wx.WechatContants;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
@ -11,29 +12,36 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import javax.validation.Valid;
import java.util.HashMap;
import java.util.Map;
/**
 * Created by Administrator on 2017/6/13 0013.
 */
@RestController
@RequestMapping("/wechat")
@RequestMapping(WechatContants.api_common)
@Api(description = "微信图文消息管理")
public class GraphicMessageController {
    @Autowired
    private GraphicMessageService graphicMessageService;
    @GetMapping("graphicMessage/list")
    @GetMapping(WechatContants.WxGraphicMessage.api_getWxGraphicMessages)
    @ApiOperation(value = "分页获取微信图文列表")
    public Envelop list(
            @ApiParam(name = "title", value = "标题", required = false) @RequestParam(required = false, name = "title") String title,
            @ApiParam(name = "saasId", required = false) @RequestParam(required = false, name = "saasId") String saasId,
            @ApiParam(name = "sorts", value = "排序", required = false) @RequestParam(required = false, name = "sorts") String sorts,
            @ApiParam(name = "start", value = "当前页", required = false) @RequestParam(required = false, name = "start", defaultValue = "1") Integer start,
            @ApiParam(name = "length", value = "每页显示条数", required = false) @RequestParam(required = false, name = "length", defaultValue = "10") Integer length
    ) {
        try {
            start=start/length+1;
            Envelop envelop = graphicMessageService.list(title, sorts,length, start);
            Map<String, String> map = new HashMap<>();
            map.put("title",title);
            map.put("saasId",saasId);
            map.put("sorts",sorts);
            Envelop envelop = graphicMessageService.list(length, start,map);
            return envelop;
        } catch (Exception e) {
            return Envelop.getError("获取信息失败:" + e.getMessage(), -1);
@ -41,7 +49,7 @@ public class GraphicMessageController {
    }
    @DeleteMapping(value = "/graphicMessage/{codes}")
    @DeleteMapping(value = WechatContants.WxGraphicMessage.api_delete)
    @ApiOperation(value = "通过codes删除,多个code用,分割", notes = "通过codes删除")
    public Envelop deleteByCodes(
            @ApiParam(name = "codes", value = "codes")
@ -53,7 +61,7 @@ public class GraphicMessageController {
        return envelop;
    }
    @GetMapping(value = "/graphicMessage/{code}")
    @GetMapping(value = WechatContants.WxGraphicMessage.api_getByCode)
    @ApiOperation(value = "根据code查找图文消息", notes = "根据code查找图文消息")
    public Envelop findByCode(
            @ApiParam(name = "code", value = "code")
@ -63,9 +71,9 @@ public class GraphicMessageController {
        return envelop;
    }
    @PostMapping(value = "/graphicMessage")
    @PostMapping(value = WechatContants.WxGraphicMessage.api_create)
    @ApiOperation(value = "保存或者修改微信图文消息", notes = "保存或者修改微信图文消息")
    public Envelop saveOrUpdate(@ModelAttribute @Valid GraphicMessage graphicMessage,@RequestParam String userCode) throws JsonProcessingException {
    public Envelop saveOrUpdate(@ModelAttribute @Valid MWxGraphicMessage graphicMessage,@RequestParam String userCode) throws JsonProcessingException {
        return graphicMessageService.saveOrUpdate(graphicMessage,userCode);
    }
}

+ 17 - 9
svr/svr-manage/src/main/java/com/yihu/jw/manage/controller/wechat/WechatConfigController.java

@ -1,9 +1,10 @@
package com.yihu.jw.manage.controller.wechat;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.yihu.jw.manage.model.wechat.WechatConfig;
import com.yihu.jw.manage.service.wechat.WechatConfigService;
import com.yihu.jw.restmodel.common.Envelop;
import com.yihu.jw.restmodel.wx.MWxWechat;
import com.yihu.jw.restmodel.wx.WechatContants;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
@ -11,29 +12,36 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import javax.validation.Valid;
import java.util.HashMap;
import java.util.Map;
/**
 * Created by Administrator on 2017/6/13 0013.
 */
@RestController
@RequestMapping("/wechat")
@RequestMapping(WechatContants.api_common)
@Api(description = "微信配置管理")
public class WechatConfigController {
    @Autowired
    private WechatConfigService wechatConfigService;
    @GetMapping("wechatConfig/list")
    @GetMapping(WechatContants.WxConfig.api_getWechats)
    @ApiOperation(value = "分页获取微信配置列表")
    public Envelop list(
            @ApiParam(name = "name", value = "微信名", required = false) @RequestParam(required = false, name = "name") String name,
            @ApiParam(name = "saasId", required = false) @RequestParam(required = false, name = "saasId") String saasId,
            @ApiParam(name = "sorts", value = "排序", required = false) @RequestParam(required = false, name = "sorts") String sorts,
            @ApiParam(name = "start", value = "当前页", required = false) @RequestParam(required = false, name = "start", defaultValue = "1") Integer start,
            @ApiParam(name = "length", value = "每页显示条数", required = false) @RequestParam(required = false, name = "length", defaultValue = "10") Integer length
    ) {
        try {
            start=start/length+1;
            Envelop envelop = wechatConfigService.list(name, sorts,length, start);
            Map<String,String> map = new HashMap<String,String>();
            map.put("name",name);
            map.put("saasId",saasId);
            map.put("sorts",sorts);
            Envelop envelop = wechatConfigService.list(length, start,map);
            return envelop;
        } catch (Exception e) {
            return Envelop.getError("获取信息失败:" + e.getMessage(), -1);
@ -41,7 +49,7 @@ public class WechatConfigController {
    }
    @DeleteMapping(value = "/wechatConfig/{codes}")
    @DeleteMapping(value = WechatContants.WxConfig.api_delete)
    @ApiOperation(value = "通过codes删除,多个code用,分割", notes = "通过codes删除")
    public Envelop deleteByCodes(
            @ApiParam(name = "codes", value = "codes")
@ -54,7 +62,7 @@ public class WechatConfigController {
        return envelop;
    }
    @GetMapping(value = "/wechatConfig/{code}")
    @GetMapping(value = WechatContants.WxConfig.api_getByCode)
    @ApiOperation(value = "根据code查找微信配置", notes = "根据code查找微信配置")
    public Envelop findByCode(
            @ApiParam(name = "code", value = "code")
@ -64,13 +72,13 @@ public class WechatConfigController {
        return envelop;
    }
    @PostMapping(value = "/wechatConfig")
    @PostMapping(value = WechatContants.WxConfig.api_create)
    @ApiOperation(value = "保存微信配置", notes = "保存微信配置")
    public Envelop save(@ModelAttribute @Valid WechatConfig wechatConfig,@RequestParam String userCode) throws JsonProcessingException {
    public Envelop save(@ModelAttribute @Valid MWxWechat wechatConfig,@RequestParam String userCode) throws JsonProcessingException {
        return wechatConfigService.saveOrUpdate(wechatConfig, userCode);
    }
    @GetMapping("wechatConfig/listNoPage")
    @GetMapping(WechatContants.WxConfig.api_getWechatNoPage)
    @ApiOperation(value = "获取微信配置列表")
    public Envelop listNoPage(
            @ApiParam(name = "fields", value = "返回的字段,为空返回全部字段", defaultValue = "id,code,name,saasId,appId,appSecret,baseUrl,remark")

+ 2 - 0
svr/svr-manage/src/main/java/com/yihu/jw/manage/dao/system/UserDao.java

@ -6,6 +6,7 @@ import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
import org.springframework.data.jpa.repository.Modifying;
import org.springframework.data.jpa.repository.Query;
import org.springframework.data.repository.PagingAndSortingRepository;
import org.springframework.transaction.annotation.Transactional;
/**
 * Created by chenweida on 2017/6/9.
@ -17,6 +18,7 @@ public interface UserDao extends PagingAndSortingRepository<ManageUser, Long>, J
    @Query("from ManageUser u where u.code=?1 and u.status=1 ")
    ManageUser findByCode(String usercode);
    @Transactional
    @Modifying
    @Query("update ManageUser u set u.status = -1 where u.code = ?1 ")
    void delete(String code);

+ 47 - 10
svr/svr-manage/src/main/java/com/yihu/jw/manage/interceptors/UserInterceptor.java

@ -1,11 +1,15 @@
package com.yihu.jw.manage.interceptors;
import com.yihu.jw.manage.adapter.CacheAdapter;
import com.yihu.jw.manage.adapter.cache.model.LoginCacheModel;
import com.yihu.jw.manage.adapter.cache.model.RoleCacheModel;
import com.yihu.jw.manage.model.system.ManageUser;
import com.yihu.jw.manage.service.system.MenuRoleService;
import com.yihu.jw.manage.service.system.UserRoleService;
import com.yihu.jw.manage.service.system.UserService;
import com.yihu.jw.restmodel.common.Envelop;
import net.sf.json.JSONObject;
import org.apache.commons.lang.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import org.springframework.web.servlet.HandlerInterceptor;
@ -16,6 +20,7 @@ import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
/**
 * Created by chenweida on 2017/6/9.
@ -29,6 +34,10 @@ public class UserInterceptor implements HandlerInterceptor {
    private UserService userService;
    @Autowired
    private CacheAdapter cacheAdapter;
    @Autowired
    private MenuRoleService menuRoleService;
    @Autowired
    private UserRoleService userRoleService;
    @PostConstruct
    public void addUnFilterURI(){
        //添加不需要过滤的路径
@ -40,40 +49,68 @@ public class UserInterceptor implements HandlerInterceptor {
        unFilters.add("");
    }
    @Override
    public boolean preHandle(HttpServletRequest requset, HttpServletResponse response, Object o) throws Exception {
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object o) throws Exception {
        boolean flag = false;
        try {
            //判断路径是否要过滤
            String uri=requset.getRequestURI();
            if (unFilters.contains(uri)){
            String serverPath = request.getServletPath();
            if (unFilters.contains(serverPath)){
                return true;
            }
            String obj= requset.getParameter("userCode");
            if(org.springframework.util.StringUtils.isEmpty(obj)){
            String userCode= request.getParameter("userCode");
            if(org.springframework.util.StringUtils.isEmpty(userCode)){
                // 未登录
                response.getOutputStream().write(JSONObject.fromObject(Envelop.getError("请登录后再操作!",NOT_LOGIN)).toString().getBytes());
                return false;
            }
            //判断usercode是否存在
            ManageUser manageUser= userService.findByCode(obj);
            ManageUser manageUser= userService.findByCode(userCode);
            if(manageUser==null){
                // 未登录
                response.getOutputStream().write(JSONObject.fromObject(Envelop.getError("请登录后再操作!",NOT_LOGIN)).toString().getBytes());
                return false;
            }
            String method = requset.getMethod();
            //判断权限
            List<RoleCacheModel> privilege = (List<RoleCacheModel>) cacheAdapter.getData(CacheAdapter.ROLE, obj);
            //从缓存中获取
            Object data = cacheAdapter.getData(CacheAdapter.LOGIN, userCode);
            if(data==null){  //缓存丢失---->>重新放入缓存中
                String saasId= request.getParameter("saasId");
                //根据userCode查找用户拥有的权限,放入缓存中
                List<Map<String, Object>> maps = menuRoleService.findByUserCode(userCode);
                cacheAdapter.setData(CacheAdapter.ROLE,userCode,maps);
                //登陆用户放入缓存
                LoginCacheModel loginCacheModel = new LoginCacheModel();
                loginCacheModel.setCode(userCode);
                if(StringUtils.isNotBlank(saasId)){
                    loginCacheModel.setSaasId(saasId);
                }else{
                    //查找saas
                    List<String> saases = userRoleService.getSaasIdByUserCode(userCode);
                    //saas有多个时,取出第一个放入缓存
                    if(saases!=null&&saases.size()>0){
                        loginCacheModel.setSaasId(saases.get(0));
                    }
                }
                cacheAdapter.setData(CacheAdapter.LOGIN,userCode,loginCacheModel);
            }
            String method = request.getMethod();
            List<RoleCacheModel> privilege = (List<RoleCacheModel>) cacheAdapter.getData(CacheAdapter.ROLE, userCode);
            for(RoleCacheModel roleCacheModel:privilege){
                String url = roleCacheModel.getUrl();
                if(url==null)
                    continue;
                String pri_method = roleCacheModel.getMethod();
                if(uri.contains(url) && method.equalsIgnoreCase(pri_method)){//url以及请求方式相同才有权限
                if(serverPath.contains(url) && method.equalsIgnoreCase(pri_method)){//url以及请求方式相同才有权限
                    return true;
                }
            }
            response.getOutputStream().write(JSONObject.fromObject(Envelop.getError("该用户没有权限!", NO_PRIVILEGE)).toString().getBytes());
            return flag;
        } catch (Exception e) {
            e.printStackTrace();
        }

+ 10 - 0
svr/svr-manage/src/main/java/com/yihu/jw/manage/model/system/ManageMenu.java

@ -31,6 +31,8 @@ public class ManageMenu extends IdEntity implements java.io.Serializable {
    private List<String> url;
    @Transient
    private List<String> method;
    @Transient
    private String state;
    @Transient
    private List<Map<String,Object>> req;//用于取值
@ -134,4 +136,12 @@ public class ManageMenu extends IdEntity implements java.io.Serializable {
    public void setSort(Integer sort) {
        this.sort = sort;
    }
    public String getState() {
        return state;
    }
    public void setState(String state) {
        this.state = state;
    }
}

+ 1 - 1
svr/svr-manage/src/main/java/com/yihu/jw/manage/service/base/SaasService.java

@ -33,7 +33,7 @@ public class SaasService {
    }
    public List getListNoPage() {
        Envelop envelop = template.getForObject(url +"/"+ BaseContants.Saas.api_common+"/"+BaseContants.Saas.api_getSaassNoPage,Envelop.class);
        Envelop envelop = template.getForObject(url +"/"+ BaseContants.Saas.api_common+BaseContants.Saas.api_getSaassNoPage,Envelop.class);
        List list = envelop.getDetailModelList();
        return list;
    }

+ 43 - 33
svr/svr-manage/src/main/java/com/yihu/jw/manage/service/system/MenuService.java

@ -60,7 +60,7 @@ public class MenuService {
    }
    public List<ManageMenu> findParentMenus(String usercode) {
        String sql = "SELECT * FROM (SELECT DISTINCT  m.* FROM manage_menu m,manage_role_menu rm WHERE m.code = rm.menu_code and m.status=1 AND rm.role_code IN (SELECT r.CODE FROM manage_role r, manage_user_role ur WHERE r.code = ur.role_code AND ur.user_code = ?   AND r.status = 1 ) ORDER BY m.sort asc ) A WHERE A.parent_code = 0";
        String sql = "SELECT * FROM (SELECT DISTINCT  m.* FROM manage_menu m,manage_role_menu rm WHERE m.code = rm.menu_code and m.status=1 AND rm.role_code IN (SELECT r.CODE FROM manage_role r, manage_user_role ur WHERE r.code = ur.role_code AND ur.user_code = ?   AND r.status = 1 ) ORDER BY m.sort asc ) A WHERE A.parent_code = '0'";
        List<ManageMenu> mr = jdbcTemplate.query(sql, new BeanPropertyRowMapper(ManageMenu.class), usercode);
        return mr;
    }
@ -71,15 +71,34 @@ public class MenuService {
        return mr;
    }
    public Page<ManageMenu> list(String name, Integer page, Integer pageSize) {
    public Map<String, List> getMenuTree() throws ManageException {
        List<MenuItems> menuItemses = new ArrayList<>();
        Map<String, List> data = new HashMap<>();
        //查询所有模块
        List<ManageMenu> parentMenus = getParentMenus();
        if(parentMenus!=null){
            for(ManageMenu parentMenu:parentMenus){
                //查询所有菜单
                List<ManageMenu> childMenus = getChildMenus(parentMenu.getCode());
                MenuItems menuItem = new MenuItems();
                menuItem.setParentMenu(parentMenu);
                menuItem.setChildMenus(childMenus);
                menuItemses.add(menuItem);
            }
        }
        data.put("menus", menuItemses);
        return data;
    }
    public List<ManageMenu> list(Integer size, Integer page,Map<String,String> map) {
        // 排序
        Sort sort = new Sort(Sort.Direction.DESC, "createTime");
        // 分页信息
        PageRequest pageRequest = new PageRequest(page, pageSize, sort);
        PageRequest pageRequest = new PageRequest(page, size, sort);
        // 设置查询条件
        Map<String, SearchFilter> filters = new HashMap<String, SearchFilter>();
        // 用户名称
        if (!StringUtils.isEmpty(name)&&!("null".equals(name))) {
        String name = map.get("name");
        if (!StringUtils.isEmpty(name)) {
            filters.put("name", new SearchFilter("name", SearchFilter.Operator.LIKE, name));
        }
        //首先查找父菜单
@ -92,22 +111,18 @@ public class MenuService {
        List<ManageMenu> parentMenus = manageMenus.getContent();
        for(ManageMenu parentMenu: parentMenus){
            List<ManageMenu> childMenus = getChildMenus(parentMenu.getCode());//查找子菜单
            for(ManageMenu childMenu:childMenus){
                List<ManageMenu> funcMenus = getChildMenus(childMenu.getCode());//查找功能
                childMenu.setChildren(funcMenus);
            if(childMenus.size()>0){
                parentMenu.setState("closed");
            }else{
                parentMenu.setState("open");
            }
            parentMenu.setChildren(childMenus);
        }
        return manageMenus;
    }
    public List<ManageMenu> list(){
        List<ManageMenu> parentMenus = getParentMenus();//查找模块/父菜单
        for(ManageMenu parentMenu: parentMenus){
            List<ManageMenu> childMenus = getChildMenus(parentMenu.getCode());//查找子菜单
            for(ManageMenu childMenu:childMenus){
                List<ManageMenu> funcMenus = getChildMenus(childMenu.getCode());//查找功能
                if(funcMenus.size()>0){
                    childMenu.setState("closed");
                }else{
                    childMenu.setState("open");
                }
                childMenu.setChildren(funcMenus);
            }
            parentMenu.setChildren(childMenus);
@ -175,24 +190,19 @@ public class MenuService {
        menuUrlService.saveOrUpdate(menuCode,urls,methods);
    }
    public Map<String, List> getMenuTree() throws ManageException {
        List<MenuItems> menuItemses = new ArrayList<>();
        Map<String, List> data = new HashMap<>();
        //查询所有模块
        List<ManageMenu> parentMenus = getParentMenus();
        if(parentMenus!=null){
            for(ManageMenu parentMenu:parentMenus){
                //查询所有菜单
                List<ManageMenu> childMenus = getChildMenus(parentMenu.getCode());
                MenuItems menuItem = new MenuItems();
                menuItem.setParentMenu(parentMenu);
                menuItem.setChildMenus(childMenus);
                menuItemses.add(menuItem);
    public List<ManageMenu> list(){
        List<ManageMenu> parentMenus = getParentMenus();//查找模块/父菜单
        for(ManageMenu parentMenu: parentMenus){
            List<ManageMenu> childMenus = getChildMenus(parentMenu.getCode());//查找子菜单
            for(ManageMenu childMenu:childMenus){
                List<ManageMenu> funcMenus = getChildMenus(childMenu.getCode());//查找功能
                childMenu.setChildren(funcMenus);
            }
            parentMenu.setChildren(childMenus);
        }
        data.put("menus", menuItemses);
        return data;
        return parentMenus;
    }
}

+ 25 - 3
svr/svr-manage/src/main/java/com/yihu/jw/manage/service/system/RoleService.java

@ -36,23 +36,44 @@ public class RoleService {
    @Autowired
    private UserService userService;
    /**
     * 通过后台用户code查找权限
     * @param code
     * @return
     */
    public List<ManageRole> findByUserCode(String code) {
        String sql = " select r.* from manage_role r,manage_user_role ur where r.`code`=ur.role_code and ur.user_code=? ";
        String sql = " select r.* from manage_role r,manage_user_role ur where r.code=ur.role_code and ur.user_code=? ";
        List<ManageRole> mr = jdbcTemplate.query(sql, new BeanPropertyRowMapper(ManageRole.class), code);
        return mr;
    }
    public Page<ManageRole> list(String name, Integer page, Integer pageSize) {
    /**
     * 分页列表展示
     * @param page
     * @param pageSize
     * @param map
     * @return
     */
    public Page<ManageRole> list(Integer page, Integer pageSize,Map<String,String> map) {
        // 排序
        Sort sort = new Sort(Sort.Direction.DESC, "updateTime");
        // 分页信息
        PageRequest pageRequest = new PageRequest(page, pageSize, sort);
        // 设置查询条件
        Map<String, SearchFilter> filters = new HashMap<String, SearchFilter>();
        // 用户名称
        if (!StringUtils.isEmpty(name)&&!("null".equals(name))) {
        String name = map.get("name");
        if (!StringUtils.isEmpty(name)) {
            filters.put("name", new SearchFilter("name", SearchFilter.Operator.LIKE, name));
        }
        // saasId
        String saasId = map.get("saasId");
        if (!StringUtils.isEmpty(saasId)) {
            filters.put("saasId", new SearchFilter("saasId", SearchFilter.Operator.EQ, saasId));
        }
        // 未作废
        filters.put("status", new SearchFilter("status", SearchFilter.Operator.EQ, WlyyContant.status_normal));
        Specification<ManageRole> spec = DynamicSpecifications.bySearchFilter(filters.values(), ManageRole.class);
@ -73,6 +94,7 @@ public class RoleService {
        }
    }
    @Transactional
    public Envelop saveOrUpdate(ManageRole role, String userCode) throws ManageException {
        ManageUser user = userService.findByCode(userCode);
        String userName = user.getName();

+ 6 - 5
svr/svr-manage/src/main/java/com/yihu/jw/manage/service/system/UserService.java

@ -44,7 +44,7 @@ public class UserService {
        return userDao.findByCode(usercode);
    }
    public Page<ManageUser> userList(String name,String mobile,Integer page, Integer pageSize)throws ManageException {
    public Page<ManageUser> userList(Integer page, Integer pageSize,Map<String,String> map)throws ManageException {
        // 排序
        Sort sort = new Sort(Sort.Direction.DESC, "updateTime");
        // 分页信息
@ -52,15 +52,15 @@ public class UserService {
        // 设置查询条件
        Map<String, SearchFilter> filters = new HashMap<String, SearchFilter>();
        // 用户名称
        if (!StringUtils.isEmpty(name)&&!("null".equals(name))) {
        String name = map.get("name");
        if (!StringUtils.isEmpty(name)) {
            filters.put("name", new SearchFilter("name", SearchFilter.Operator.LIKE, name));
        }
        // 电话号码
        if (!StringUtils.isEmpty(mobile)&&!("null".equals(mobile))) {
        String mobile = map.get("mobile");
        if (!StringUtils.isEmpty(mobile)) {
            filters.put("mobile", new SearchFilter("mobile", SearchFilter.Operator.LIKE, mobile));
        }
//        filters.put("recordDate1", new SearchFilter("recordDate", Operator.GTE, begin));
//        filters.put("recordDate2", new SearchFilter("recordDate", Operator.LTE, end));
        // 未作废
        filters.put("status", new SearchFilter("status", SearchFilter.Operator.EQ, WlyyContant.status_normal));
        Specification<ManageUser> spec = DynamicSpecifications.bySearchFilter(filters.values(), ManageUser.class);
@ -68,6 +68,7 @@ public class UserService {
        return userDao.findAll(spec, pageRequest);
    }
    @Transactional
    public void delete(String codes, String userCode) {
        ManageUser user = userService.findByCode(userCode);

+ 19 - 14
svr/svr-manage/src/main/java/com/yihu/jw/manage/service/wechat/GraphicMessageService.java

@ -2,10 +2,10 @@ package com.yihu.jw.manage.service.wechat;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.yihu.jw.manage.model.system.ManageUser;
import com.yihu.jw.manage.model.wechat.GraphicMessage;
import com.yihu.jw.manage.service.system.UserService;
import com.yihu.jw.manage.util.RestTemplateUtil;
import com.yihu.jw.restmodel.common.Envelop;
import com.yihu.jw.restmodel.wx.MWxGraphicMessage;
import com.yihu.jw.restmodel.wx.WechatContants;
import net.sf.json.JSONObject;
import org.apache.commons.lang3.StringUtils;
@ -26,7 +26,7 @@ import java.util.Map;
@Service
public class GraphicMessageService {
    @Value("${spring.gateway}"+"/"+ WechatContants.api_common+"/")
    @Value("${spring.gateway}"+ WechatContants.api_common)
    private String url;
    @Autowired
@ -35,19 +35,24 @@ public class GraphicMessageService {
    @Autowired
    private UserService userService;
    public Envelop list(String title, String sorts ,Integer size, Integer page) {
        Map<String, Object> map = new HashMap<>();
    public Envelop list(Integer size, Integer page,Map<String,String> map) {
        Map<String, Object> req = new HashMap<>();
        Map<String, Object> filters = new HashMap<>();
        map.put("size",size);
        map.put("page",page);
        map.put("sorts",sorts);
        map.put("filters","");
        req.put("size",size);
        req.put("page",page);
        req.put("sorts",map.get("sorts"));
        String title = map.get("title");
        if(StringUtils.isNotBlank(title)){
            filters.put("title",title);
            map.put("filters",filters);
        }
        Envelop forObject = template.getForObject(url +WechatContants.WxGraphicMessage.api_getWxGraphicMessages+ "?size={size}&page={page}&sorts={sorts}&filters={filters}", Envelop.class,map);
        String saasId = map.get("saasId");
        if(StringUtils.isNotBlank(saasId)){
            filters.put("saasId",saasId);
        }
        String filterStr = JSONObject.fromObject(filters).toString();
        req.put("filters",filterStr);
        Envelop forObject = template.getForObject(url +WechatContants.WxGraphicMessage.api_getWxGraphicMessages+ "?size={size}&page={page}&sorts={sorts}&filters={filters}", Envelop.class,req);
        return forObject;
    }
@ -61,18 +66,18 @@ public class GraphicMessageService {
        Map<String, String> par = new HashMap<>();
        par.put("userCode", userCode);
        par.put("userName", userName);
        String urlRequest = url + "graphicMessage/"+codes+"?userCode={userCode}&userName={userName}";
        String urlRequest = url + "/graphicMessage/"+codes+"?userCode={userCode}&userName={userName}";
        RestTemplateUtil restTemplateUtil = new RestTemplateUtil(urlRequest,map);
        Envelop envelop = restTemplateUtil.exchange(urlRequest, HttpMethod.DELETE, Envelop.class,par);
        return envelop;
    }
    public Envelop findByCode(String code) {
        Envelop envelop = template.getForObject(url + "graphicMessage/"+code, Envelop.class);
        Envelop envelop = template.getForObject(url + "/graphicMessage/"+code, Envelop.class);
        return envelop;
    }
    public Envelop saveOrUpdate(GraphicMessage graphicMessage, String userCode) throws JsonProcessingException {
    public Envelop saveOrUpdate(MWxGraphicMessage graphicMessage, String userCode) throws JsonProcessingException {
        ManageUser user = userService.findByCode(userCode);
        String userName = user.getName();

+ 22 - 17
svr/svr-manage/src/main/java/com/yihu/jw/manage/service/wechat/WechatConfigService.java

@ -2,10 +2,10 @@ package com.yihu.jw.manage.service.wechat;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.yihu.jw.manage.model.system.ManageUser;
import com.yihu.jw.manage.model.wechat.WechatConfig;
import com.yihu.jw.manage.service.system.UserService;
import com.yihu.jw.manage.util.RestTemplateUtil;
import com.yihu.jw.restmodel.common.Envelop;
import com.yihu.jw.restmodel.wx.MWxWechat;
import com.yihu.jw.restmodel.wx.WechatContants;
import net.sf.json.JSONObject;
import org.apache.commons.lang3.StringUtils;
@ -26,7 +26,7 @@ import java.util.Map;
@Service
public class WechatConfigService {
    @Value("${spring.gateway}"+"/"+ WechatContants.api_common+"/")
    @Value("${spring.gateway}"+ WechatContants.api_common)
    private String url;
    @Autowired
@ -35,18 +35,23 @@ public class WechatConfigService {
    @Autowired
    private UserService userService;
   public Envelop list(String name, String sorts ,Integer size, Integer page) {
       Map<String, Object> map = new HashMap<>();
       Map<String, Object> filters = new HashMap<>();
       map.put("size",size);
       map.put("page",page);
       map.put("sorts",sorts);
       map.put("filters","");
       if(StringUtils.isNotBlank(name)){
           filters.put("name",name);
           map.put("filters",filters);
       }
       return template.getForObject(url +WechatContants.WxConfig.api_getWechats+"?size={size}&page={page}&sorts={sorts}&filters={filters}", Envelop.class,map);
    public Envelop list(Integer size, Integer page,Map<String,String> map) {
        Map<String, Object> req = new HashMap<>();
        Map<String, Object> filters = new HashMap<>();
        req.put("size", size);
        req.put("page", page);
        req.put("sorts", map.get("sorts"));
        String name = map.get("name");
        String saasId = map.get("saasId");
        if (StringUtils.isNotBlank(name)) {
            filters.put("name", name);
        }
        if (StringUtils.isNotBlank(saasId)) {
            filters.put("saasId", saasId);
        }
        String filterStr = JSONObject.fromObject(filters).toString();
        req.put("filters",filterStr);
        return template.getForObject(url +WechatContants.WxConfig.api_getWechats+"?size={size}&page={page}&sorts={sorts}&filters={filters}", Envelop.class,req);
    }
@ -58,7 +63,7 @@ public class WechatConfigService {
        Map<String, String> map = new HashMap<>();
        map.put("userCode", userCode);
        map.put("userName", userName);
        String urlRequest = url +"wechatConfig/"+codes+"?userCode={userCode}&userName={userName}";
        String urlRequest = url +"/wechatConfig/"+codes+"?userCode={userCode}&userName={userName}";
        MultiValueMap<String, String> multiValueMap = new LinkedMultiValueMap<>();
        RestTemplateUtil restTemplateUtil = new RestTemplateUtil(urlRequest,multiValueMap);
        Envelop envelop = restTemplateUtil.exchange(urlRequest, HttpMethod.DELETE, Envelop.class,map);
@ -66,11 +71,11 @@ public class WechatConfigService {
    }
    public Envelop findByCode(String code) {
        Envelop envelop = template.getForObject(url +"wechatConfig/"+code, Envelop.class);
        Envelop envelop = template.getForObject(url +"/wechatConfig/"+code, Envelop.class);
        return envelop;
    }
    public Envelop saveOrUpdate(WechatConfig wechatConfig,String userCode) throws JsonProcessingException {
    public Envelop saveOrUpdate(MWxWechat wechatConfig,String userCode) throws JsonProcessingException {
        ManageUser user = userService.findByCode(userCode);
        String userName = user.getName();

+ 18 - 3
svr/svr-manage/src/main/resources/application.yml

@ -1,6 +1,5 @@
server:
  port: 8081
spring:
  datasource:
    driver-class-name: com.mysql.jdbc.Driver
@ -39,11 +38,27 @@ spring:
      max-wait: -1 # Maximum amount of time (in milliseconds) a connection allocation should block before throwing an exception when the pool is exhausted. Use a negative value to block indefinitely.
      min-idle: 1 # Target for the minimum number of idle connections to maintain in the pool. This setting only has an effect if it is positive.
cache: 1
cache: 2
---
spring:
  profiles: jwdev
  gateway: http://localhost:8088/v1
  datasource:
    url: jdbc:mysql://172.19.103.77/jw2?useUnicode:true&characterEncoding=utf-8&autoReconnect=true
    username: root
    password: 123456
  redis:
    host: 192.168.1.220
    port: 6379
    password:    #redis服务器连接密码(默认为空)
---
spring:
  profiles: dev
  profiles: jwtest
  gateway: http://localhost:8088/v1
  datasource:

+ 1 - 1
svr/svr-manage/src/main/resources/webapp/common/js/common.js

@ -1,2 +1,2 @@
var server="localhost:8081/";
var server="http://localhost:8081/manage";
var not_login=-1000;

+ 61 - 18
svr/svr-manage/src/main/resources/webapp/common/js/util/util.js

@ -59,28 +59,40 @@ UrlParm = function () { // url参数
}();
//get方法
function do_get(url, data, success,error) {
function do_get(url, data, success,error,bool) {
    if(bool==undefined){
        bool=true;
    }
    //获取用户的code
    var usercode = getUserCode();
    data.userCode = usercode;
    data.saasId = getSaasId();
    $.ajax({
        type: 'GET',
        url: url,
        data: data,
        success: success,
        error:error,
        dataType: "json"
        dataType: "json",
        async:bool
    });
}
//post方法
function do_post(url, data, success ,error) {
function do_post(url, data, success ,error,bool) {
    if(bool==undefined){
        bool=true;
    }
    //获取用户的code
    var usercode = getUserCode();
    //data.userCode = usercode;
    if(data==''){
        data="userCode="+usercode;
    if(typeof (data)=="string"){
        if(data==''){
            data="userCode="+getUserCode()+"&saasId="+ getSaasId();
        }else{
            data+="&userCode="+getUserCode()+"&saasId="+ getSaasId();
        }
    }else{
        data+="&userCode="+usercode;
        data.userCode =  getUserCode();
        data.saasId = getSaasId();
    }
    $.ajax({
        type: 'POST',
@ -88,31 +100,48 @@ function do_post(url, data, success ,error) {
        data: data,
        success: success,
        error:error,
        dataType: "json"
        dataType: "json",
        async:bool
    });
}
//put方法
function do_put(url, data, success ,error) {
function do_put(url, data, success ,error,bool) {
    if(bool==undefined){
        bool=true;
    }
    //获取用户的code
    var usercode = getUserCode();
    data.userCode = usercode;
    data._method="PUT";
    if(typeof (data)=="string"){
        if(data==''){
            data="userCode="+usercode+"&saasId="+ getSaasId()+"&_method=PUT";
        }else{
            data+="&userCode="+usercode+"&saasId="+ getSaasId()+"&_method=PUT";
        }
    }else{
        data.userCode =  getUserCode();
        data.saasId = getSaasId();
        data._method="PUT";
    }
    $.ajax({
        type: 'POST',
        url: url,
        data: data,
        success: success,
        error:error,
        dataType: "json"
        dataType: "json",
        async:bool
    });
}
//delete方法
function do_delete(url, data, success,error) {
function do_delete(url, data, success,error,bool) {
    if(bool==undefined){
        bool=true;
    }
    //获取用户的code
    var usercode = getUserCode();
    data.userCode = usercode;
    data.saasId = getSaasId();
    data._method="DELETE";
    $.ajax({
        type: 'POST',
@ -120,7 +149,8 @@ function do_delete(url, data, success,error) {
        data: data,
        success: success,
        error:error,
        dataType: "json"
        dataType: "json",
        async:bool
    });
}
@ -128,7 +158,7 @@ function getUserCode() {
    var code = window.localStorage.getItem("userCode");
    if (!code) {
        alert("请重新登陆")
        window.location.href = '/login/login.html';
        window.location.href = server+ '/login/login.html';
    }
    return code
}
@ -141,6 +171,19 @@ function cleanUserCode(){
    window.localStorage.setItem("userCode", null);
}
function getSaasId() {
    var code = window.localStorage.getItem("saasId");
    return code
}
function setSaasId(code) {
    window.localStorage.setItem("saasId", code);
}
function cleanSaasId(){
    window.localStorage.setItem("saasId", null);
}
/**
 * 判断是否有登陆
 * @param data

+ 18 - 18
svr/svr-manage/src/main/resources/webapp/html/index/index.html

@ -8,11 +8,11 @@
    <title>基卫后台管理系统</title>
    <link href="/common/css/bootstrap/bootstrap.min.css?v=3.4.0" rel="stylesheet">
    <link href="/common/css/bootstrap/font-awesome.min.css?v=4.3.0" rel="stylesheet">
    <link href="../common/css/bootstrap/bootstrap.min.css?v=3.4.0" rel="stylesheet">
    <link href="../common/css/bootstrap/font-awesome.min.css?v=4.3.0" rel="stylesheet">
    <link href="/common/css/bootstrap/animate.min.css" rel="stylesheet">
    <link href="/common/css/bootstrap/style.min.css?v=3.0.0" rel="stylesheet">
    <link href="../common/css/bootstrap/animate.min.css" rel="stylesheet">
    <link href="../common/css/bootstrap/style.min.css?v=3.0.0" rel="stylesheet">
</head>
<body class="fixed-sidebar full-height-layout gray-bg">
@ -105,8 +105,8 @@
            <a href="javascript:void(0)" onclick="loginout()" class="roll-nav roll-right J_tabExit"><i class="fa fa fa-sign-out"></i> 退出</a>
        </div>
        <div class="row J_mainContent" id="content-main">
            <iframe class="J_iframe" name="iframe0" width="100%" height="100%" src="/index/index_v1.html" frameborder="0"
                    data-id="/index/index_v1.html" ></iframe>
            <iframe class="J_iframe" name="iframe0" width="100%" height="100%" src="index_v1.html" frameborder="0"
                    data-id="index_v1.html" ></iframe>
        </div>
        <div class="footer">
@ -122,22 +122,22 @@
</div>
<!-- 全局js -->
<script type="text/javascript" src="/common/js/jquery/jquery-2.1.1.min.js"></script>
<script type="text/javascript" src="/common/js/bootstrap/bootstrap.min.js"></script>
<script type="text/javascript" src="/common/js/jquery/jquery.metisMenu.js"></script><!--菜单插件-->
<script type="text/javascript" src="/common/js/jquery/jquery.slimscroll.min.js"></script>
<script type="text/javascript"src="/common/js/layer/layer.min.js"></script>
<script type="text/javascript" src="/common/js/util/util.js"></script>
<script type="text/javascript" src="/common/js/vue/vue.min.js"></script>
<script type="text/javascript" src="../common/js/jquery/jquery-2.1.1.min.js"></script>
<script type="text/javascript" src="../common/js/bootstrap/bootstrap.min.js"></script>
<script type="text/javascript" src="../common/js/jquery/jquery.metisMenu.js"></script><!--菜单插件-->
<script type="text/javascript" src="../common/js/jquery/jquery.slimscroll.min.js"></script>
<script type="text/javascript"src="../common/js/layer/layer.min.js"></script>
<script type="text/javascript" src="../common/js/util/util.js"></script>
<script type="text/javascript" src="../common/js/vue/vue.min.js"></script>
<!-- 自定义js -->
<script type="text/javascript" src="/common/js/common.js"></script>
<script type="text/javascript" src="/index/hplus.min.js?v=3.0.0"></script>
<script type="text/javascript" src="/index/contabs.min.js"></script>
<script type="text/javascript" src="/index/index.js"></script>
<script type="text/javascript" src="../common/js/common.js"></script>
<script type="text/javascript" src="../index/hplus.min.js?v=3.0.0"></script>
<script type="text/javascript" src="../index/contabs.min.js"></script>
<script type="text/javascript" src="../index/index.js"></script>
<!-- 第三方插件 -->
<script type="text/javascript" src="/common/js/pace/pace.min.js"></script>
<script type="text/javascript" src="../common/js/pace/pace.min.js"></script>
<div class="theme-config">
    <div class="theme-config-box">
        <div class="spin-icon">

+ 3 - 3
svr/svr-manage/src/main/resources/webapp/html/index/index.js

@ -1,7 +1,7 @@
//获取用户的菜单和角色
var contentVM;
do_get(
    "/index",
    server+"/index",
    {},
    function (data) {
        contentVM = new Vue({
@ -31,13 +31,13 @@ do_get(
 */
function loginout() {
    do_get(
        "/loginout",
        server+"/loginout",
        {},
        function (data) {
            //清空用户缓存
            cleanUserCode();
            alert("退出成功")
            window.location.href = '/login/login.html';
            window.location.href = server+'/login/login.html';
        }
    )
}

+ 14 - 11
svr/svr-manage/src/main/resources/webapp/html/login/login.html

@ -8,11 +8,11 @@
    <meta name="renderer" content="webkit">
    <title>登录</title>
    <link href="/common/css/bootstrap/bootstrap.min.css?v=3.4.0" rel="stylesheet">
    <link href="/common/css/bootstrap/font-awesome.min.css?v=4.3.0" rel="stylesheet">
    <link href="../common/css/bootstrap/bootstrap.min.css?v=3.4.0" rel="stylesheet">
    <link href="../common/css/bootstrap/font-awesome.min.css?v=4.3.0" rel="stylesheet">
    <link href="/common/css/bootstrap/animate.min.css" rel="stylesheet">
    <link href="/common/css/bootstrap/style.min.css?v=3.0.0" rel="stylesheet">
    <link href="../common/css/bootstrap/animate.min.css" rel="stylesheet">
    <link href="../common/css/bootstrap/style.min.css?v=3.0.0" rel="stylesheet">
</head>
@ -48,17 +48,17 @@
</div>
<!-- 全局js -->
<script src="/common/js/jquery/jquery-2.1.1.min.js"></script>
<script src="/common/js/bootstrap/bootstrap.min.js"></script>
<script src="/common/js/common.js"></script>
<script src="/common/js/util/util.js"></script>
<script src="../common/js/jquery/jquery-2.1.1.min.js"></script>
<script src="../common/js/bootstrap/bootstrap.min.js"></script>
<script src="../common/js/common.js"></script>
<script src="../common/js/util/util.js"></script>
<script type="text/javascript">
    function login() {
        var username = $("#username").val();
        var password = $("#password").val();
        $.ajax({
            type: "GET",
            url: "/login",
            url: server+"/login",
            data: {
                "username": username,
                "password": password
@ -66,8 +66,11 @@
            dataType: "json",
            success: function (data) {
                //保存用户信息到缓存中
                setUserCode(data.obj.code)
                window.location.href = '/index/index.html?u=' + data.obj.id;
                setUserCode(data.obj.code);
                if(data.obj.saasId!=undefined){
                    setSaasId(data.obj.saasId)
                }
                window.location.href = server+'/index/index.html';
            },
            error:function(data){
                alert("账号或密码错误")

+ 35 - 25
svr/svr-manage/src/main/resources/webapp/html/system/menu/html/menuList.html

@ -4,14 +4,15 @@
    <meta charset="UTF-8">
    <title>菜单管理页面</title>
    <link href="/common/css/bootstrap/bootstrap.min.css?v=3.4.0" rel="stylesheet">
    <link href="/common/css/bootstrap/font-awesome.min.css?v=4.3.0" rel="stylesheet">
    <link href="../../../common/css/bootstrap/bootstrap.min.css?v=3.4.0" rel="stylesheet">
    <link href="../../../common/css/bootstrap/font-awesome.min.css?v=4.3.0" rel="stylesheet">
    <link href="/common/css/bootstrap/animate.min.css" rel="stylesheet">
    <link href="/common/css/bootstrap/style.min.css?v=3.0.0" rel="stylesheet">
    <link href="../../../common/css/bootstrap/animate.min.css" rel="stylesheet">
    <link href="../../../common/css/bootstrap/style.min.css?v=3.0.0" rel="stylesheet">
    <!-- Data Tables -->
    <link href="/common/css/bootstrap/plugins/dataTables/dataTables.bootstrap.css" rel="stylesheet">
    <link href="../../../common/css/bootstrap/plugins/dataTables/dataTables.bootstrap.css" rel="stylesheet">
    <link href="../../../common/css/jw.css" rel="stylesheet">
    <style>
        .m-form-group:after { display: table; content: " "; clear: both; }
        .m-form-group{
@ -23,17 +24,28 @@
    </style>
</head>
<body class="gray-bg">
<div class="wrapper wrapper-content animated fadeInRight">
    <div class="row">
        <div class="col-sm-12">
            <div class="ibox float-e-margins">
<div class="wrapper wrapper-content animated fadeInRight" style="height: 96%">
    <div class="row" style="height: 100%">
        <div class="col-sm-12" style="height: 100%">
            <div class="ibox float-e-margins" style="height: 100%">
                <div class="ibox-title">
                    <h5>
                        <small>菜单列表</small>
                    </h5>
                </div>
                <div class="ibox-content">
                    <table id="list" style="width:100%"></table>
                <div class="searchToolBar" >
                    <div class="m-form-group">
                        <label class="col-sm-1 control-label no-padding-right" style="margin-top: 6px;margin-right: -77px;">菜单名称</label>
                        <div class="col-sm-2">
                            <input type="text"  class="form-control"  name="name" id="name" />
                        </div>
                        <button class="btn btn-success" onclick="search()">查询</button>
                        <button class="btn btn-success" style="margin-left: 10px;" onclick="clearSearch()">清除条件</button>
                        <button class="btn btn-success" style="margin-left: 10px;" onclick="add('0','0')">添加</button>
                    </div>
                </div>
                <div class="ibox-content" style="height: 90%;">
                    <div id="list" style="width:100%"></div>
                </div>
            </div>
        </div>
@ -50,25 +62,23 @@
</div>
<!-- 全局js -->
<script type="text/javascript" src="/common/js/jquery/jquery-2.1.1.min.js"></script>
<script type="text/javascript" src="/common/js/util/util.js"></script>
<script type="text/javascript" src="../../../common/js/jquery/jquery-2.1.1.min.js"></script>
<script type="text/javascript" src="../../../common/js/util/util.js"></script>
<!--<script type="text/javascript" src="/common/js/vue/vue.js"></script>--><!--2.0-->
<script type="text/javascript" src="/common/js/vue.js"></script><!--1.0-->
<script type="text/javascript" src="/common/js/layer/layer.min.js"></script>
<script type="text/javascript" src="../../../common/js/vue.js"></script><!--1.0-->
<script type="text/javascript" src="/common/js/plugins/jeditable/jquery.jeditable.js"></script>
<script type="text/javascript" src="/common/js/jquery-easyui-1.5.2/easyloader.js"></script>
<script type="text/javascript" src="/common/js/jquery-easyui-1.5.2/jquery.min.js"></script>
<script type="text/javascript" src="../../../common/js/layer/layer.min.js"></script>
<script type="text/javascript" src="/common/js/bootstrap/bootstrap.min.js"></script>
<script type="text/javascript" src="/common/js/plugins/moment/moment.js"></script>
<!-- Data Tables -->
<script type="text/javascript" src="/common/js/plugins/dataTables/jquery.dataTables.js"></script>
<script type="text/javascript" src="/common/js/plugins/dataTables/dataTables.bootstrap.js"></script>
<script type="text/javascript" src="../../../common/js/plugins/jeditable/jquery.jeditable.js"></script>
<script type="text/javascript" src="/system/menu/js/menuList.js"></script>
<script type="text/javascript" src="../../../common/js/plugins/moment/moment.js"></script>
<script type="text/javascript" src="../../../common/js/plugins/jeditable/jquery.jeditable.js"></script>
<script type="text/javascript" src="../../../common/js/jquery-easyui-1.5.2/easyloader.js"></script>
<script type="text/javascript" src="../../../common/js/jquery-easyui-1.5.2/jquery.min.js"></script>
<script type="text/javascript" src="../../../common/js/bootstrap/bootstrap.min.js"></script>
<script type="text/javascript" src="../../../common/js/common.js"></script>
<script type="text/javascript" src="../js/menuList.js"></script>
</body>
</html>

+ 20 - 33
svr/svr-manage/src/main/resources/webapp/html/system/role/html/roleList.html

@ -4,14 +4,15 @@
    <meta charset="UTF-8">
    <title>角色管理页面</title>
    <link href="/common/css/bootstrap/bootstrap.min.css?v=3.4.0" rel="stylesheet">
    <link href="/common/css/bootstrap/font-awesome.min.css?v=4.3.0" rel="stylesheet">
    <link href="../../../common/css/bootstrap/bootstrap.min.css?v=3.4.0" rel="stylesheet">
    <link href="../../../common/css/bootstrap/font-awesome.min.css?v=4.3.0" rel="stylesheet">
    <link href="/common/css/bootstrap/animate.min.css" rel="stylesheet">
    <link href="/common/css/bootstrap/style.min.css?v=3.0.0" rel="stylesheet">
    <link href="../../../common/css/bootstrap/animate.min.css" rel="stylesheet">
    <link href="../../../common/css/bootstrap/style.min.css?v=3.0.0" rel="stylesheet">
    <!-- Data Tables -->
    <link href="/common/css/bootstrap/plugins/dataTables/dataTables.bootstrap.css" rel="stylesheet">
    <link href="../../../common/css/bootstrap/plugins/dataTables/dataTables.bootstrap.css" rel="stylesheet">
    <link href="../../../common/css/jw.css" rel="stylesheet">
    <style>
        .m-form-group:after { display: table; content: " "; clear: both; }
        .m-form-group{
@ -30,7 +31,7 @@
                <div class="form-group">
                    <label class="col-sm-2 control-label">角色名称:</label>
                    <div class="col-sm-3">
                        <input type="text" class="form-control" id="name" name="name" style="width: 250px">
                        <input type="text" class="form-control" id="name" name="name" >
                    </div>
                    <div class="col-sm-2">
                        <button type="button" class="btn btn-success search" style="float: right;">查 询</button>
@ -56,7 +57,6 @@
                        <tr>
                            <th><input type="checkbox" name="checkAll" /></th>
                            <th>角色名称</th>
                            <th>saasId</th>
                            <th>描述</th>
                            <th>创建时间</th>
                            <th>操作</th>
@ -91,18 +91,7 @@
                <div class="m-form-group">
                    <label class="col-sm-4 control-label no-padding-right" >角色名称: </label>
                    <div class="col-sm-6">
                        <input type="text"  class="form-control"  name="name" style="width: 250px"  required="true"  :value="detail.name"/>
                    </div>
                </div>
                <div style="margin-top:15px;margin-bottom: 15px;" >
                    <label class="col-sm-4 control-label no-padding-right" > saasId:</label>
                    <div class="col-sm-6">
                        <select name="saasId" class="form-control m-b" required="true" :value="detail.saasId">
                            <option value="">--请选择--</option>
                            <template v-for="saas in saasList">
                                <option :value="saas.code">{{saas.name}}</option>
                            </template>
                        </select>
                        <input type="text"  class="form-control"  name="name"  required="true"  :value="detail.name"/>
                    </div>
                </div>
                <div class="m-form-group">
@ -111,10 +100,6 @@
                     <textarea style="width:115%;height:150px;" :value="detail.remark" name="remark"></textarea>
                    </div>
                </div>
                <!--<div style="margin:0 auto; text-align: center;margin-top: 15px">
                </div>-->
                <div class="modal-footer">
                    <button type="button" class="btn btn-default"
                            data-dismiss="modal">关闭
@ -138,22 +123,24 @@
</div>
<!-- 全局js -->
<script type="text/javascript" src="/common/js/jquery/jquery-2.1.1.min.js"></script>
<script type="text/javascript" src="/common/js/bootstrap/bootstrap.min.js"></script>
<script type="text/javascript" src="/common/js/util/util.js"></script>
<script type="text/javascript" src="../../../common/js/jquery/jquery-2.1.1.min.js"></script>
<script type="text/javascript" src="../../../common/js/bootstrap/bootstrap.min.js"></script>
<script type="text/javascript" src="../../../common/js/util/util.js"></script>
<!--<script type="text/javascript" src="/common/js/vue/vue.js"></script>--><!--2.0-->
<script type="text/javascript" src="/common/js/vue.js"></script><!--1.0-->
<script type="text/javascript" src="../../../common/js/vue.js"></script><!--1.0-->
<script type="text/javascript" src="/common/js/layer/layer.min.js"></script>
<script type="text/javascript" src="../../../common/js/layer/layer.min.js"></script>
<script type="text/javascript" src="/common/js/plugins/jeditable/jquery.jeditable.js"></script>
<script type="text/javascript" src="../../../common/js/plugins/jeditable/jquery.jeditable.js"></script>
<script type="text/javascript" src="/common/js/plugins/moment/moment.js"></script>
<script type="text/javascript" src="../../../common/js/plugins/moment/moment.js"></script>
<!-- Data Tables -->
<script type="text/javascript" src="/common/js/plugins/dataTables/jquery.dataTables.js"></script>
<script type="text/javascript" src="/common/js/plugins/dataTables/dataTables.bootstrap.js"></script>
<script type="text/javascript" src="/system/role/js/roleList.js"></script>
<script type="text/javascript" src="../../../common/js/plugins/dataTables/jquery.dataTables.js"></script>
<script type="text/javascript" src="../../../common/js/plugins/dataTables/dataTables.bootstrap.js"></script>
<script type="text/javascript" src="../../../common/js/common.js"></script>
<script type="text/javascript" src="../js/roleList.js"></script>
</body>
</html>

+ 28 - 33
svr/svr-manage/src/main/resources/webapp/html/system/user/html/userList.html

@ -2,16 +2,17 @@
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>微信配置管理页面</title>
    <title>后台用户列表页面</title>
    <link href="/common/css/bootstrap/bootstrap.min.css?v=3.4.0" rel="stylesheet">
    <link href="/common/css/bootstrap/font-awesome.min.css?v=4.3.0" rel="stylesheet">
    <link href="../../../common/css/bootstrap/bootstrap.min.css?v=3.4.0" rel="stylesheet">
    <link href="../../../common/css/bootstrap/font-awesome.min.css?v=4.3.0" rel="stylesheet">
    <link href="/common/css/bootstrap/animate.min.css" rel="stylesheet">
    <link href="/common/css/bootstrap/style.min.css?v=3.0.0" rel="stylesheet">
    <link href="../../../common/css/bootstrap/animate.min.css" rel="stylesheet">
    <link href="../../../common/css/bootstrap/style.min.css?v=3.0.0" rel="stylesheet">
    <!-- Data Tables -->
    <link href="/common/css/bootstrap/plugins/dataTables/dataTables.bootstrap.css" rel="stylesheet">
    <link href="../../../common/css/bootstrap/plugins/dataTables/dataTables.bootstrap.css" rel="stylesheet">
    <link href="../../../common/css/jw.css" rel="stylesheet">
    <style>
        .m-form-group:after { display: table; content: " "; clear: both; }
        .m-form-group{
@ -28,13 +29,13 @@
        <div class="col-md-12">
            <div class="form-horizontal">
                <div class="form-group">
                    <label class="col-sm-1 control-label">名称:</label>
                    <label class="col-sm-1 control-label">用户名:</label>
                    <div class="col-sm-2">
                        <input type="text" class="form-control" id="name" name="name" style="width: 250px">
                        <input type="text" class="form-control" id="name" name="name">
                    </div>
                    <label class="col-sm-1 control-label">电话号码:</label>
                    <div class="col-sm-2">
                        <input type="text" class="form-control" id="mobile" name="mobile" style="width: 250px">
                        <input type="text" class="form-control" id="mobile" name="mobile" >
                    </div>
                    <div class="col-sm-1">
                        <button type="button" class="btn btn-success search" style="float: right;">查 询</button>
@ -93,51 +94,45 @@
            <form class="form-horizontal" role="form" action="" method="post"  id="category_add" >
                <input  id="id" type="hidden" name="id" :value="user.id" />
                <input  type="hidden" name="code" :value="user.code" />
                <input  type="hidden" name="createUser" :value="user.createUser" />
                <input  type="hidden" name="createUserName" :value="user.createUserName" />
                <input type="hidden" name="salt" :value="user.salt"/>
                <input type="hidden" name="status" :value="user.status"/>
                <!--<input  type="hidden" name="createTime" :value="user.createTime" />-->
                <!--<input  type="hidden" name="updateUser" :value="user.updateUser" />
                <input  type="hidden" name="updateUserName" :value="user.updateUserName" />
                <input  type="hidden" name="updateTime" :value="user.updateTime" />-->
                <div class="m-form-group">
                    <label class="col-sm-3 control-label no-padding-right" >用户名:</label>
                    <div class="col-sm-2">
                        <input type="text"  class="form-control"  name="name" style="width: 250px"   :value="user.name" required="true"/>
                        <input type="text"  class="form-control"  name="name"   :value="user.name" required="true"/>
                    </div>
                    <label class="col-sm-2 control-label no-padding-right" >登陆账号:</label>
                    <div class="col-sm-5">
                        <input type="text"  class="form-control"  name="loginAccount" style="width: 250px" required="true" :value="user.loginAccount"  />
                        <input type="text"  class="form-control"  name="loginAccount" required="true" :value="user.loginAccount"  />
                    </div>
                </div>
                <div class="m-form-group" style="display: none" id="oldPsdDiv">
                    <label class="col-sm-3 control-label no-padding-right" >原密码:</label>
                    <div class="col-sm-2">
                        <input type="password"  class="form-control" id="oldPsd"  name="oldPsd" style="width: 250px"  required="true" />
                        <input type="password"  class="form-control" id="oldPsd"  name="oldPsd"   required="true" />
                    </div>
                </div>
                <div class="m-form-group">
                    <label class="col-sm-3 control-label no-padding-right" >密码:</label>
                    <div class="col-sm-2">
                        <input type="password"  class="form-control" id="password"  name="password" style="width: 250px"  required="true" />
                        <input type="password"  class="form-control" id="password"  name="password"   required="true" />
                    </div>
                    <label class="col-sm-2 control-label no-padding-right" >请重新输入密码:</label>
                    <div class="col-sm-5">
                        <input type="password"  class="form-control"  id="rePassword"  style="width: 250px" required="true" />
                        <input type="password"  class="form-control"  id="rePassword"  required="true" />
                    </div>
                </div>
                <div class="m-form-group">
                    <label class="col-sm-3 control-label no-padding-right" >手机号:</label>
                    <div class="col-sm-2">
                        <input type="text"  class="form-control" name="mobile" style="width: 250px"   :value="user.mobile" pattern="^1[3-9]\d{9}$" />
                        <input type="text"  class="form-control" name="mobile"   :value="user.mobile" pattern="^1[3-9]\d{9}$" />
                    </div>
                    <label class="col-sm-2 control-label no-padding-right" >备注</label>
                    <div class="col-sm-5">
                        <input type="text"  class="form-control"  name="remark" style="width: 250px"  :value="user.remark"/>
                        <input type="text"  class="form-control"  name="remark"  :value="user.remark"/>
                    </div>
                </div>
@ -155,24 +150,24 @@
</div>
<!-- 全局js -->
<script type="text/javascript" src="/common/js/jquery/jquery-2.1.1.min.js"></script>
<script type="text/javascript" src="/common/js/bootstrap/bootstrap.min.js"></script>
<script type="text/javascript" src="/common/js/util/util.js"></script>
<script type="text/javascript" src="../../../common/js/jquery/jquery-2.1.1.min.js"></script>
<script type="text/javascript" src="../../../common/js/bootstrap/bootstrap.min.js"></script>
<script type="text/javascript" src="../../../common/js/util/util.js"></script>
<!--<script type="text/javascript" src="/common/js/vue/vue.js"></script>--><!--2.0-->
<script type="text/javascript" src="/common/js/vue.js"></script><!--1.0-->
<script type="text/javascript" src="../../../common/js/vue.js"></script><!--1.0-->
<script type="text/javascript" src="/common/js/layer/layer.min.js"></script>
<script type="text/javascript" src="../../../common/js/layer/layer.min.js"></script>
<script type="text/javascript" src="/common/js/plugins/jeditable/jquery.jeditable.js"></script>
<script type="text/javascript" src="../../../common/js/plugins/jeditable/jquery.jeditable.js"></script>
<script type="text/javascript" src="/common/js/plugins/moment/moment.js"></script>
<script type="text/javascript" src="../../../common/js/plugins/moment/moment.js"></script>
<!-- Data Tables -->
<script type="text/javascript" src="/common/js/plugins/dataTables/jquery.dataTables.js"></script>
<script type="text/javascript" src="/common/js/plugins/dataTables/dataTables.bootstrap.js"></script>
<script type="text/javascript" src="../../../common/js/plugins/dataTables/jquery.dataTables.js"></script>
<script type="text/javascript" src="../../../common/js/plugins/dataTables/dataTables.bootstrap.js"></script>
<script type="text/javascript" src="/system/user/js/userList.js"></script>
<script type="text/javascript" src="../../../common/js/common.js"></script>
<script type="text/javascript" src="../js/userList.js"></script>
</body>

+ 11 - 9
svr/svr-manage/src/main/resources/webapp/html/system/user/js/userList.js

@ -1,8 +1,9 @@
var table;
var usercode = window.localStorage.getItem("userCode");
var userCode = getUserCode();
var saasId = getSaasId();
$(function () {
    table = $("#list").DataTable({
            "aLengthMenu": [1, 2, 3, 4],
            "aLengthMenu": [10, 15,20],
            "searching": false,//禁用搜索
            "lengthChange": true,
            "paging": true,//开启表格分页
@ -17,11 +18,12 @@ $(function () {
            "dom": '<l<\'#topPlugin\'>f>rt<ip><"clear">',
            "ordering": false,//全局禁用排序
            "ajax": {
                "url": '/manage/user/list',
                "url": server+'/manage/user/list',
                "type": 'GET',
                "dataSrc": "detailModelList",
                "data": function (d) {
                    d.userCode = window.parent.getUserCode();
                    d.userCode = userCode;
                    d.saasId = saasId;
                    d.name =$("#name").val();
                    d.mobile=$("#mobile").val();
                }
@ -71,7 +73,7 @@ $(function () {
                    "sDefaultContent": '',
                    "sWidth": "10%",
                    "render": function (data, type, full, meta) {
                        return data = '<button id="findOne" class="btn btn-primary  btn-sm" data-id=' + data + ' onclick="show(\''+data+'\')">查 看</button>';/*<button id="deleteOne" class="btn btn-danger btn-sm" style="margin-left: 7px;" data-id=' + data + '>删 除</button>*/
                        return data = '<button class="btn btn-primary  btn-sm" data-id=' + data + ' onclick="show(\''+data+'\')">查 看</button>';/*<button id="deleteOne" class="btn btn-danger btn-sm" style="margin-left: 7px;" data-id=' + data + '>删 除</button>*/
                    }
                }],
@ -254,17 +256,17 @@ function show(code){
    $("#password").val("");
    $("#rePassword").val("");
    var data={};
    do_get("/manage/user/"+code,data,function(data){
    do_get(server+"/manage/user/"+code,data,function(data){
        contentVM.user = data.obj;
        $('#myModal-add-info').modal('show');
        $("#myModalLabel").html("查看");
    },function(data){
        debugger
    });
}
function del(codes){
    var url = "/manage/user/"+codes+"?userCode="+usercode;
    var url = server+"/manage/user/"+codes;
    do_delete(url,{},function(data){
        if(data.errorMsg!=undefined){
            alert(data.errorMsg);
@ -285,7 +287,7 @@ $("#category_add").submit(function(){
    var id = $("#id").val();
    var data = $("#category_add").serialize();
    var url = "/manage/user"
    var url =server + "/manage/user";
    do_post(url,data,function(data){
        if(id==''){
            alert("保存成功");

+ 18 - 15
svr/svr-manage/src/main/resources/webapp/html/wechat/graphicMessage/html/graphicMessageList.html

@ -4,14 +4,15 @@
    <meta charset="UTF-8">
    <title>微信图文消息管理页面</title>
    <link href="/common/css/bootstrap/bootstrap.min.css?v=3.4.0" rel="stylesheet">
    <link href="/common/css/bootstrap/font-awesome.min.css?v=4.3.0" rel="stylesheet">
    <link href="../../../common/css/bootstrap/bootstrap.min.css?v=3.4.0" rel="stylesheet">
    <link href="../../../common/css/bootstrap/font-awesome.min.css?v=4.3.0" rel="stylesheet">
    <link href="/common/css/bootstrap/animate.min.css" rel="stylesheet">
    <link href="/common/css/bootstrap/style.min.css?v=3.0.0" rel="stylesheet">
    <link href="../../../common/css/bootstrap/animate.min.css" rel="stylesheet">
    <link href="../../../common/css/bootstrap/style.min.css?v=3.0.0" rel="stylesheet">
    <!-- Data Tables -->
    <link href="/common/css/bootstrap/plugins/dataTables/dataTables.bootstrap.css" rel="stylesheet">
    <link href="../../../common/css/bootstrap/plugins/dataTables/dataTables.bootstrap.css" rel="stylesheet">
    <link href="../../../common/css/jw.css" rel="stylesheet">
    <style>
        .m-form-group:after { display: table; content: " "; clear: both; }
        .m-form-group{
@ -129,23 +130,25 @@
</div>
<!-- 全局js -->
<script type="text/javascript" src="/common/js/jquery/jquery-2.1.1.min.js"></script>
<script type="text/javascript" src="/common/js/bootstrap/bootstrap.min.js"></script>
<script type="text/javascript" src="/common/js/util/util.js"></script>
<script type="text/javascript" src="../../../common/js/jquery/jquery-2.1.1.min.js"></script>
<script type="text/javascript" src="../../../common/js/bootstrap/bootstrap.min.js"></script>
<script type="text/javascript" src="../../../common/js/util/util.js"></script>
<!--<script type="text/javascript" src="/common/js/vue/vue.js"></script>--><!--2.0-->
<script type="text/javascript" src="/common/js/vue.js"></script><!--1.0-->
<script type="text/javascript" src="../../../common/js/vue.js"></script><!--1.0-->
<script type="text/javascript" src="/common/js/layer/layer.min.js"></script>
<script type="text/javascript" src="../../../common/js/layer/layer.min.js"></script>
<script type="text/javascript" src="/common/js/plugins/jeditable/jquery.jeditable.js"></script>
<script type="text/javascript" src="../../../common/js/plugins/jeditable/jquery.jeditable.js"></script>
<script type="text/javascript" src="/common/js/plugins/moment/moment.js"></script>
<script type="text/javascript" src="../../../common/js/plugins/moment/moment.js"></script>
<!-- Data Tables -->
<script type="text/javascript" src="/common/js/plugins/dataTables/jquery.dataTables.js"></script>
<script type="text/javascript" src="/common/js/plugins/dataTables/dataTables.bootstrap.js"></script>
<script type="text/javascript" src="../../../common/js/plugins/dataTables/jquery.dataTables.js"></script>
<script type="text/javascript" src="../../../common/js/plugins/dataTables/dataTables.bootstrap.js"></script>
<script type="text/javascript" src="/wechat/graphicMessage/js/graphicMessageList.js"></script>
<script type="text/javascript" src="../../../common/js/common.js"></script>
<script type="text/javascript" src="../js/graphicMessageList.js"></script>
</body>
</html>

+ 10 - 17
svr/svr-manage/src/main/resources/webapp/html/wechat/graphicMessage/js/graphicMessageList.js

@ -1,8 +1,9 @@
var table;
var usercode = window.localStorage.getItem("userCode");
var userCode = getUserCode();
var saasId = getSaasId();
$(function () {
    table = $("#list").DataTable({
            "aLengthMenu": [1, 2, 30, 40],
            "aLengthMenu": [10, 15, 20],
            "searching": false,//禁用搜索
            "lengthChange": true,
            "paging": true,//开启表格分页
@ -17,10 +18,11 @@ $(function () {
            "dom": '<l<\'#topPlugin\'>f>rt<ip><"clear">',
            "ordering": false,//全局禁用排序
            "ajax": {
                url: '/wechat/graphicMessage/list',
                url: server+'/wechat/graphicMessage/list',
                data: function (d) {
                    d.title = $("#title").val();
                    d.userCode = usercode;
                    d.userCode = userCode;
                    d.saasId = saasId;
                },
                type: 'GET',
                dataSrc: "detailModelList"
@ -229,18 +231,12 @@ var contentVM = new Vue({
    replace:false
});
do_get("/base/saases",{},function(data){
    contentVM.saasList = data.detailModelList;
    console.log( data.detailModelList);
},function(data){
})
//查看配置
function show(code){
    $("#myModal-add-info").removeData("modal");
    var data={};
    do_get("/wechat/graphicMessage/"+code,data,function(data){
    do_get(server+"/wechat/graphicMessage/"+code,data,function(data){
        contentVM.graphicMessage = data.obj;
        $('#myModal-add-info').modal('show');
        $("#myModalLabel").html("查看");
@ -250,7 +246,7 @@ function show(code){
}
function del(codes){
    var url = "/wechat/graphicMessage/"+codes;
    var url = server+"/wechat/graphicMessage/"+codes;
    do_delete(url,{},function(data){
        alert("删除成功");
        table.ajax.reload();
@ -258,20 +254,17 @@ function del(codes){
}
$("#category_add").submit(function(){
    debugger
    var url = "";
    var id = $("#id").val();
    var data = $("#category_add").serialize();
    url = "/wechat/graphicMessage"
    var url =server+ "/wechat/graphicMessage"
    do_post(url,data,function(data){
        debugger
        if(id==''){
            alert("保存成功");
        }else{
            alert("修改成功");
        }
        $('#myModal-add-info').modal('hide');
        table.ajax.reload();
        $('#myModal-add-info').modal('hide');
    })
    return false;
})

+ 41 - 73
svr/svr-manage/src/main/resources/webapp/html/wechat/template/html/templateList.html

@ -4,14 +4,15 @@
    <meta charset="UTF-8">
    <title>微信模板消息管理页面</title>
    <link href="/common/css/bootstrap/bootstrap.min.css?v=3.4.0" rel="stylesheet">
    <link href="/common/css/bootstrap/font-awesome.min.css?v=4.3.0" rel="stylesheet">
    <link href="../../../common/css/bootstrap/bootstrap.min.css?v=3.4.0" rel="stylesheet">
    <link href="../../../common/css/bootstrap/font-awesome.min.css?v=4.3.0" rel="stylesheet">
    <link href="/common/css/bootstrap/animate.min.css" rel="stylesheet">
    <link href="/common/css/bootstrap/style.min.css?v=3.0.0" rel="stylesheet">
    <link href="../../../common/css/bootstrap/animate.min.css" rel="stylesheet">
    <link href="../../../common/css/bootstrap/style.min.css?v=3.0.0" rel="stylesheet">
    <!-- Data Tables -->
    <link href="/common/css/bootstrap/plugins/dataTables/dataTables.bootstrap.css" rel="stylesheet">
    <link href="../../../common/css/bootstrap/plugins/dataTables/dataTables.bootstrap.css" rel="stylesheet">
    <link href="../../../common/css/jw.css" rel="stylesheet">
    <style>
        .m-form-group:after { display: table; content: " "; clear: both; }
        .m-form-group{
@ -23,48 +24,27 @@
    </style>
</head>
<body class="gray-bg">
<div class="panel panel-default">
    <div class="panel-body">
        <div class="col-md-12">
            <div class="form-horizontal">
                <div class="form-group">
                    <label class="col-sm-2 control-label">标题:</label>
                    <div class="col-sm-3">
                        <input type="text" class="form-control" id="title" name="title" style="width: 250px">
                    </div>
                    <div class="col-sm-2">
                        <button type="button" class="btn btn-success search" style="float: right;">查 询</button>
                    </div>
                </div>
            </div>
        </div>
    </div>
</div>
<div class="wrapper wrapper-content animated fadeInRight">
    <div class="row">
        <div class="col-sm-12">
            <div class="ibox float-e-margins">
<div class="wrapper wrapper-content animated fadeInRight" style="height: 96%">
    <div class="row" style="height: 100%">
        <div class="col-sm-12" style="height: 100%">
            <div class="ibox float-e-margins" style="height: 100%">
                <div class="ibox-title">
                    <h5>
                        <small>模板消息列表</small>
                    </h5>
                </div>
                <div class="ibox-content">
                    <table id="list" class="table table-striped table-bordered table-hover dataTables-example">
                        <thead>
                        <tr>
                            <th><input type="checkbox" name="checkAll" /></th>
                            <th>标题</th>
                            <th>微信名</th>
                            <th>创建时间</th>
                            <th>操作</th>
                        </tr>
                        </thead>
                        <tbody>
                        </tbody>
                    </table>
                <div class="searchToolBar">
                    <div class="m-form-group">
                        <label class="col-sm-1 control-label no-padding-right" style="margin-top: 6px;margin-right: -77px;">微信名</label>
                        <div class="col-sm-2">
                            <input type="text"  class="form-control"  name="name" id="name" />
                        </div>
                        <button class="btn btn-success" onclick="search()">查询</button>
                        <button class="btn btn-success" style="margin-left: 10px;" onclick="clearSearch()">清除条件</button>
                    </div>
                </div>
                <div class="ibox-content" style="height: 90%">
                    <table id="list" style="width:100%"></table>
                </div>
            </div>
        </div>
@ -81,7 +61,7 @@
                    &times;
                </button>
                <h4 class="modal-title" id="myModalLabel">
                    新 增
                    查 看
                </h4>
            </div>
            <form class="form-horizontal" role="form" action="" method="post"  id="category_add" >
@ -91,35 +71,27 @@
                <input  type="hidden" name="createUserName" :value="template.createUserName" />
                <input type="hidden" name="status" value="1"/>
                <div class="m-form-group">
                    <label class="col-sm-3 control-label no-padding-right" >标题: </label>
                    <label class="col-sm-3 control-label no-padding-right" >微信名</label>
                    <div class="col-sm-2">
                        <input type="text"  class="form-control"  name="title" style="width: 250px"   :value="template.title"/>
                        <input type="text"  class="form-control"  name="wechatName"  disabled="disabled"   :value="template.wechatName"/>
                    </div>
                    <label class="col-sm-2 control-label no-padding-right" >微信名:</label>
                    <label class="col-sm-2 control-label no-padding-right" >模板消息标题</label>
                    <div class="col-sm-5">
                        <select class="form-control m-b" name="wechatCode" id="wechatCode" required="true">
                        <!--<select class="form-control m-b" name="wechatCode" id="wechatCode" required="true">
                            <option v-for="wechatConfig in wechatConfigs"  :value="wechatConfig.code" :selected="wechatConfig.code==template.wechatCode ">{{wechatConfig.name}}</option>
                        </select>
                        </select>-->
                        <input type="text"  class="form-control"  name="title"  disabled="disabled"   :value="template.title"/>
                    </div>
                </div>
                <div class="m-form-group">
                    <label class="col-sm-3 control-label no-padding-right" >模板id:</label>
                    <div class="col-sm-2">
                        <input type="text"  class="form-control"  name="templateId" style="width: 250px"  required="true"  :value="template.templateId"/>
                    </div>
                </div>
                <div style="margin:0 auto; text-align: center;margin-top: 15px">
                    <label class="col-sm-3 control-label no-padding-right" >模板格式:</label>
                    <textarea style="width:54%;height:150px;margin-left: -211px;" :value="template.content" name="content" required="true"></textarea>
                    <textarea style="width:54%;height:150px;margin-left: -211px;" :value="template.content" name="content" required="true" disabled="disabled"></textarea>
                </div>
                <div class="modal-footer">
                    <button type="button" class="btn btn-default"
                            data-dismiss="modal">关闭
                    </button>
                    <button type="submit" class="btn btn-primary" id="btnsubmit">
                        提交
                    </button>
                </div>
            </form>
        </div><!-- /.modal-content -->
@ -127,23 +99,19 @@
</div>
<!-- 全局js -->
<script type="text/javascript" src="/common/js/jquery/jquery-2.1.1.min.js"></script>
<script type="text/javascript" src="/common/js/bootstrap/bootstrap.min.js"></script>
<script type="text/javascript" src="/common/js/util/util.js"></script>
<script type="text/javascript" src="../../../common/js/jquery/jquery-2.1.1.min.js"></script>
<script type="text/javascript" src="../../../common/js/util/util.js"></script>
<!--<script type="text/javascript" src="/common/js/vue/vue.js"></script>--><!--2.0-->
<script type="text/javascript" src="/common/js/vue.js"></script><!--1.0-->
<script type="text/javascript" src="/common/js/layer/layer.min.js"></script>
<script type="text/javascript" src="/common/js/plugins/jeditable/jquery.jeditable.js"></script>
<script type="text/javascript" src="/common/js/plugins/moment/moment.js"></script>
<!-- Data Tables -->
<script type="text/javascript" src="/common/js/plugins/dataTables/jquery.dataTables.js"></script>
<script type="text/javascript" src="/common/js/plugins/dataTables/dataTables.bootstrap.js"></script>
<script type="text/javascript" src="../../../common/js/vue.js"></script><!--1.0-->
<script type="text/javascript" src="../../../common/js/layer/layer.min.js"></script>
<script type="text/javascript" src="../../../common/js/plugins/jeditable/jquery.jeditable.js"></script>
<script type="text/javascript" src="../../../common/js/plugins/moment/moment.js"></script>
<script type="text/javascript" src="../../../common/js/jquery-easyui-1.5.2/easyloader.js"></script>
<script type="text/javascript" src="../../../common/js/jquery-easyui-1.5.2/jquery.easyui.min.js"></script>
<script type="text/javascript" src="../../../common/js/bootstrap/bootstrap.min.js"></script>
<script type="text/javascript" src="../../../common/js/common.js"></script>
<script type="text/javascript" src="/wechat/template/js/templateList.js"></script>
<script type="text/javascript" src="../js/templateList.js"></script>
</body>
</html>

+ 58 - 223
svr/svr-manage/src/main/resources/webapp/html/wechat/template/js/templateList.js

@ -1,223 +1,58 @@
var table;
var usercode = window.localStorage.getItem("userCode");
var userCode = getUserCode();
var saasId = getSaasId();
$(function () {
    table = $("#list").DataTable({
            "aLengthMenu": [1, 2, 30, 40],
            "searching": false,//禁用搜索
            "lengthChange": true,
            "paging": true,//开启表格分页
            "bProcessing": true,
            "bServerSide": true,
            "bAutoWidth": false,
            "sort": "position",
            "deferRender": true,//延迟渲染
            "bStateSave": false, //在第三页刷新页面,会自动到第一页
            "iDisplayLength": 10,//每页显示条数
            "iDisplayStart": 0, //当前页
            "dom": '<l<\'#topPlugin\'>f>rt<ip><"clear">',
            "ordering": false,//全局禁用排序
            "ajax": {
                url: '/wechat/template/list',
                data: function (d) {
                    d.title = $("#title").val();
                    d.userCode = usercode;
                },
                type: 'GET',
                dataSrc: "detailModelList"
            },
            "aoColumns": [
                {
                    "mData": "code",
                    "orderable": false, // 禁用排序
                    "sDefaultContent": "",
                    "sWidth": "2%"
                },
                {
                    "mData": 'title',
                    "sWidth": "10%",
                    "orderable": false // 禁用排序
                },
                {
                    "mData": 'wechatName',
                    "sWidth": "10%",
                    "orderable": false // 禁用排序
                },
                {
                    "mData": 'createTime',
                    "sWidth": "10%",
                    "orderable": false, // 禁用排序
                    "render": function (data, type, full, meta) {
                        //时间格式化
                        return moment(data).format("YYYY-MM-DD HH:mm:ss");
    var treeGridUrl;
    easyloader.load('treegrid',function(){
        $('#list').treegrid({
            idField:'code',
            striped:true,
            method:"get",
            treeField:'name',
            initialState:"collapsed",
            pagination: true,
            fit:true,
            pageSize: 10,
            pageList: [10,15,20],
            fitColumns:true,
            columns:[[
                {title:'微信名/模板标题',field:'name',width:"15%"},
                {title:'类型',field:'type',width:"15%",formatter:function(val,row,index){
                    if(row.wechatCode==undefined){
                        return "微信号";
                    }
                },
                {
                    "mData": "code",
                    "orderable": false, // 禁用排序
                    "sDefaultContent": '',
                    "sWidth": "10%",
                    "render": function (data, type, full, meta) {
                        return data = '<button id="findOne" class="btn btn-primary  btn-sm" data-id=' + data + ' onclick="show(\''+data+'\')">查 看</button>';/*<button id="deleteOne" class="btn btn-danger btn-sm" style="margin-left: 7px;" data-id=' + data + '>删 除</button>*/
                    return "模板消息";
                }},
                {title:'创建时间',field:'createTime',width:"15%",formatter:function(val,row,index){
                    var time = row.createTime;
                    if(time!=null&&time!=undefined){
                        return  moment(row.createTime).format("YYYY-MM-DD HH:mm:ss");
                    }
                }
            ],
            "columnDefs": [{
                "orderable": false, // 禁用排序
                "targets": [0], // 指定的列
                "data": "code",
                "render": function (data, type, full, meta) {
                    return '<input type="checkbox" value="' + data + '" name="code"/>';
                }
            }],
            "oLanguage": { // 国际化配置
                "sProcessing": "正在获取数据,请稍后...",
                "sLengthMenu": "显示 _MENU_ 条",
                "sZeroRecords": "没有找到数据",
                "sInfo": "从 _START_ 到  _END_ 条记录 总记录数为 _TOTAL_ 条",
                "sInfoEmpty": "记录数为0",
                "sInfoFiltered": "(全部记录数 _MAX_ 条)",
                "sInfoPostFix": "",
                "sSearch": "搜索",
                "sUrl": "",
                "oPaginate": {
                    "sFirst": "第一页",
                    "sPrevious": "上一页",
                    "sNext": "下一页",
                    "sLast": "最后一页"
                }
            },
            initComplete: initComplete,
            drawCallback: function (settings) {
                $('input[name=checkAll]')[0].checked = false;//取消全选状态
            }
        }
    );
    /**
     * 表格加载渲染完毕后执行的方法
     * @param data
     */
    function initComplete(data){
        //删除用户按钮的HTMLDOM
        var topPlugin='<button   class="btn btn-danger btn-sm" id="deleteAll">批量删除</button> <button   class="btn btn-primary btn-sm addBtn" >新 增</button>       <button  class="btn btn-warning btn-sm" id="reset">重置搜索条件</button>' ;
        $("#topPlugin").append(topPlugin);//在表格上方topPlugin DIV中追加HTML
    }
    /**
     * 多选选中和取消选中,同时选中第一个单元格单选框,并联动全选单选框
     */
    $('#list tbody').on('click', 'tr', function(event) {
        var checkAll=$('input[name=checkAll]')[0];//关联全选单选框
        $($(this).children()[0]).children().each(function(){
            if(this.type=="checkbox" && (!$(event.target).is(":checkbox") && $(":checkbox",this).trigger("click"))){
                if(!this.checked){
                    this.checked = true;
                    addValue(this);
                    var selected=table.rows('.selected').data().length;//被选中的行数
                    //全选单选框的状态处理
                    var recordsDisplay=table.page.info().recordsDisplay;//搜索条件过滤后的总行数
                    var iDisplayStart=table.page.info().start;// 起始行数
                    if(selected === table.page.len()||selected === recordsDisplay||selected === (recordsDisplay - iDisplayStart)){
                        checkAll.checked = true;
                    return "";
                }},
                {title:'操作',field:'aaaaa',width:"20%",formatter:function(val,row,index){
                    if(row.wechatCode==undefined){
                        return "";
                    }
                    return '<button class="btn btn-success" onclick="show(\''+row.code+'\')">查 看</button><button type="button" class="btn btn-success" style="margin-left: 15px;" onclick="del(\''+row.code+'\')">删 除</button>';
                }}
            ]],
            loader:function(param,success,error){
                var id = param.id;
                if(id!=undefined){
                    treeGridUrl =server+ '/wechat/template/listNoPage?wechatCode='+ id;
                }else{
                    this.checked = false;
                    cancelValue(this);
                    checkAll.checked = false;
                    treeGridUrl = server+'/wechat/template/list';
                    param.name=$("#name").val();
                }
            }
        });
        $(this).toggleClass('selected');//放在最后处理,以便给checkbox做检测
    });
    /**
     * 全选按钮被点击事件
     */
    $('input[name=checkAll]').click(function(){
        if(this.checked){
            $('#list tbody tr').each(function(){
                if(!$(this).hasClass('selected')){
                    $(this).click();
                }
            });
        }else{
            $('#list tbody tr').click();
        }
    });
    /**
     * 单选框被选中时将它的value放入隐藏域
     */
    function addValue(para) {
        var codes = $("input[name=codes]");
        if(codes.val() === ""){
            codes.val($(para).val());
        }else{
            codes.val(codes.val()+","+$(para).val());
        }
    }
                do_get(treeGridUrl,param,function(data){
                    success(data);
    /**
     * 单选框取消选中时将它的value移除隐藏域
     */
    function cancelValue(para){
        //取消选中checkbox要做的操作
        var codes = $("input[name=checkAll]");
        var array = codes.val().split(",");
        codes.val("");
        for (var i = 0; i < array.length; i++) {
            if (array[i] === $(para).val()) {
                continue;
            }
            if (codes.val() === "") {
                codes.val(array[i]);
            } else {
                codes.val(codes.val() + "," + array[i]);
                });
            }
        }
    }
    $(document).delegate('.addBtn','click',function() {
        contentVM.template='';
        $('#myModal-add-info').modal('show');
        setTimeout(function(){
            $(':input','#myModal-add-info')
                .not(':button, :submit, :reset, :hidden')
                .val('')
                .removeAttr('checked');
        },200);
    });
    //批量删除
    $(document).delegate('#deleteAll','click',function() {
        var theArray=[];
        $("input[name=code]:checked").each(function() {
            theArray.push($(this).val());
        });
        if(theArray.length<1){
            alert("请至少选择一个");
        }else{
            var codes = theArray.join(",");
            del(codes);
        }
    });
    //清空查询条件
    $(document).delegate('#reset','click',function() {
        $("#title").val("");
    });
    //重新查询
    $(document).delegate('.search', 'click', function () {
        table.ajax.reload();
    });
    easyloader.locale = "zh_CN";
});
var contentVM = new Vue({
@ -229,18 +64,12 @@ var contentVM = new Vue({
    replace:false
});
do_get("/wechat/wechatConfig/listNoPage",{},function(data){
    contentVM.wechatConfigs = data.detailModelList;
    console.log( data.detailModelList);
},function(data){
})
//查看
function show(code){
    $("#myModal-add-info").removeData("modal");
    var data={};
    do_get("/wechat/template/"+code,data,function(data){
    do_get(server+"/wechat/template/"+code,data,function(data){
        contentVM.template = data.obj;
        $('#myModal-add-info').modal('show');
        $("#myModalLabel").html("查看");
@ -250,18 +79,24 @@ function show(code){
}
function del(codes){
    var url = "/wechat/template/"+codes;
    var url =server+ "/wechat/template/"+codes;
    do_delete(url,{},function(data){
        alert("删除成功");
        table.ajax.reload();
        $('#list').treegrid('reload');
    })
}
$("#category_add").submit(function(){
    var url = "";
function search(){
    $('#list').treegrid('reload');
}
function clearSearch(){
    $("#name").val("");
}
/*$("#category_add").submit(function(){
    var url =server+ "/wechat/template";
    var id = $("#id").val();
    var data = $("#category_add").serialize();
    url = "/wechat/template"
    do_post(url,data,function(data){
        if(data.errorMsg!=undefined){
            alert(data.errorMsg);
@ -273,8 +108,8 @@ $("#category_add").submit(function(){
            alert("修改成功");
        }
        $('#myModal-add-info').modal('hide');
        table.ajax.reload();
        $('#list').treegrid('reload');
        return;
    })
    return false;
})
})*/

+ 38 - 36
svr/svr-manage/src/main/resources/webapp/html/wechat/wechatConfig/html/wechatConfigList.html

@ -4,14 +4,15 @@
    <meta charset="UTF-8">
    <title>微信配置管理页面</title>
    <link href="/common/css/bootstrap/bootstrap.min.css?v=3.4.0" rel="stylesheet">
    <link href="/common/css/bootstrap/font-awesome.min.css?v=4.3.0" rel="stylesheet">
    <link href="../../../common/css/bootstrap/bootstrap.min.css?v=3.4.0" rel="stylesheet">
    <link href="../../../common/css/bootstrap/font-awesome.min.css?v=4.3.0" rel="stylesheet">
    <link href="/common/css/bootstrap/animate.min.css" rel="stylesheet">
    <link href="/common/css/bootstrap/style.min.css?v=3.0.0" rel="stylesheet">
    <link href="../../../common/css/bootstrap/animate.min.css" rel="stylesheet">
    <link href="../../../common/css/bootstrap/style.min.css?v=3.0.0" rel="stylesheet">
    <!-- Data Tables -->
    <link href="/common/css/bootstrap/plugins/dataTables/dataTables.bootstrap.css" rel="stylesheet">
    <link href="../../../common/css/bootstrap/plugins/dataTables/dataTables.bootstrap.css" rel="stylesheet">
    <link href="../../../common/css/jw.css" rel="stylesheet">
    <style>
        .m-form-group:after { display: table; content: " "; clear: both; }
        .m-form-group{
@ -47,15 +48,15 @@
                <div class="ibox float-e-margins">
                    <div class="ibox-title">
                        <h5>
                            <small>用户列表</small>
                            <small>微信列表</small>
                        </h5>
                    </div>
                    <div class="ibox-content">
                        <table id="wechatList" class="table table-striped table-bordered table-hover dataTables-example">
                        <table id="list" class="table table-striped table-bordered table-hover dataTables-example">
                            <thead>
                            <tr>
                                <th><input type="checkbox" name="checkAllWechat" /></th>
                                <th><input type="checkbox" name="checkAll" /></th>
                                <th>微信名</th>
                                <th>appid</th>
                                <th>公众号类型</th>
@ -91,11 +92,10 @@
                    <input  type="hidden" name="code" :value="wechatConfig.code" />
                    <input  type="hidden" name="createUser" :value="wechatConfig.createUser" />
                    <input  type="hidden" name="createUserName" :value="wechatConfig.createUserName" />
                    <input  type="hidden" name="saasId" value="1" />
                    <div class="m-form-group">
                        <label class="col-sm-3 control-label no-padding-right" >微信名: </label>
                        <div class="col-sm-2">
                            <input type="text"  class="form-control"  name="name" style="width: 250px" required="true" :value="wechatConfig.name" />
                            <input type="text"  class="form-control"  name="name" required="true" :value="wechatConfig.name" />
                        </div>
                        <label class="col-sm-2 control-label no-padding-right" >公众号类型: </label>
                        <div class="col-sm-5">
@ -106,21 +106,32 @@
                        </div>
                    </div>
                    <div class="m-form-group">
                        <label class="col-sm-3 control-label no-padding-right" >appId:</label>
                        <div class="col-sm-2">
                            <input type="text"  class="form-control"  name="appId" required="true" :value="wechatConfig.appId"/>
                        </div>
                        <label class="col-sm-2 control-label no-padding-right" >appSecret:</label>
                        <div class="col-sm-5">
                            <input type="text"  class="form-control"  name="appSecret" required="true"  :value="wechatConfig.appSecret"/>
                        </div>
                    </div>
                    <div class="m-form-group">
                        <label class="col-sm-3 control-label no-padding-right" >token: </label>
                        <div class="col-sm-2">
                            <input type="text"  class="form-control"  name="token" style="width: 250px"   :value="wechatConfig.token"/>
                            <input type="text"  class="form-control"  name="token"   :value="wechatConfig.token"/>
                        </div>
                        <label class="col-sm-2 control-label no-padding-right" >加密密钥: </label>
                        <div class="col-sm-5">
                            <input type="text"  class="form-control"  name="encodingAesKey" style="width: 250px"  :value="wechatConfig.encodingAesKey"/>
                            <input type="text"  class="form-control"  name="encodingAesKey"  :value="wechatConfig.encodingAesKey"/>
                        </div>
                    </div>
                    <div class="m-form-group">
                        <label class="col-sm-3 control-label no-padding-right" >加密类型: </label>
                        <div class="col-sm-2">
                            <input type="text"  class="form-control"  name="encType" style="width: 250px"   :value="wechatConfig.encType"/>
                            <input type="text"  class="form-control"  name="encType"   :value="wechatConfig.encType"/>
                        </div>
                        <label class="col-sm-2 control-label no-padding-right" >状态: </label>
                        <div class="col-sm-5">
@ -133,25 +144,14 @@
                        </div>
                    </div>
                    <div class="m-form-group">
                        <label class="col-sm-3 control-label no-padding-right" >appId:</label>
                        <div class="col-sm-2">
                            <input type="text"  class="form-control"  name="appId" style="width: 250px" :value="wechatConfig.appId"/>
                        </div>
                        <label class="col-sm-2 control-label no-padding-right" >appSecret:</label>
                        <div class="col-sm-5">
                            <input type="text"  class="form-control"  name="appSecret" style="width: 250px"  :value="wechatConfig.appSecret"/>
                        </div>
                    </div>
                    <div class="m-form-group">
                        <label class="col-sm-3 control-label no-padding-right" >服务器地址:</label>
                        <div class="col-sm-2">
                            <input type="text"  class="form-control"  name="baseUrl" style="width: 250px" :value="wechatConfig.baseUrl"/>
                            <input type="text"  class="form-control"  name="baseUrl"  :value="wechatConfig.baseUrl"/>
                        </div>
                        <label class="col-sm-2 control-label no-padding-right" >备注:</label>
                        <div class="col-sm-5">
                            <input type="text"  class="form-control"  name="remark" style="width: 250px"  :value="wechatConfig.remark"/>
                            <input type="text"  class="form-control"  name="remark"  :value="wechatConfig.remark"/>
                        </div>
                    </div>
@ -169,23 +169,25 @@
    </div>
<!-- 全局js -->
<script type="text/javascript" src="/common/js/jquery/jquery-2.1.1.min.js"></script>
<script type="text/javascript" src="/common/js/bootstrap/bootstrap.min.js"></script>
<script type="text/javascript" src="/common/js/util/util.js"></script>
<script type="text/javascript" src="../../../common/js/jquery/jquery-2.1.1.min.js"></script>
<script type="text/javascript" src="../../../common/js/bootstrap/bootstrap.min.js"></script>
<script type="text/javascript" src="../../../common/js/util/util.js"></script>
<!--<script type="text/javascript" src="/common/js/vue/vue.js"></script>--><!--2.0-->
<script type="text/javascript" src="/common/js/vue.js"></script><!--1.0-->
<script type="text/javascript" src="../../../common/js/vue.js"></script><!--1.0-->
<script type="text/javascript" src="/common/js/layer/layer.min.js"></script>
<script type="text/javascript" src="../../../common/js/layer/layer.min.js"></script>
<script type="text/javascript" src="/common/js/plugins/jeditable/jquery.jeditable.js"></script>
<script type="text/javascript" src="../../../common/js/plugins/jeditable/jquery.jeditable.js"></script>
<script type="text/javascript" src="/common/js/plugins/moment/moment.js"></script>
<script type="text/javascript" src="../../../common/js/plugins/moment/moment.js"></script>
<!-- Data Tables -->
<script type="text/javascript" src="/common/js/plugins/dataTables/jquery.dataTables.js"></script>
<script type="text/javascript" src="/common/js/plugins/dataTables/dataTables.bootstrap.js"></script>
<script type="text/javascript" src="../../../common/js/plugins/dataTables/jquery.dataTables.js"></script>
<script type="text/javascript" src="../../../common/js/plugins/dataTables/dataTables.bootstrap.js"></script>
<script type="text/javascript" src="../../../common/js/common.js"></script>
<script type="text/javascript" src="/wechat/wechatConfig/js/wechatConfigList.js"></script>
<script type="text/javascript" src="../js/wechatConfigList.js"></script>
</body>

+ 35 - 51
svr/svr-manage/src/main/resources/webapp/html/wechat/wechatConfig/js/wechatConfigList.js

@ -1,8 +1,9 @@
var table;
var usercode = window.localStorage.getItem("userCode");
var userCode = getUserCode();
var saasId = getSaasId();
$(function () {
    table = $("#wechatList").DataTable({
            "aLengthMenu": [1, 2, 3, 40],
    table = $("#list").DataTable({
            "aLengthMenu": [10,15,20],
            "searching": false,//禁用搜索
            "lengthChange": true,
            "paging": true,//开启表格分页
@ -12,15 +13,16 @@ $(function () {
            "sort": "position",
            "deferRender": true,//延迟渲染
            "bStateSave": false, //在第三页刷新页面,会自动到第一页
            "iDisplayLength": 1,//每页显示条数
            "iDisplayLength": 10,//每页显示条数
            "iDisplayStart": 0, //当前页
            "dom": '<l<\'#topPlugin\'>f>rt<ip><"clear">',
            "ordering": false,//全局禁用排序
            "ajax": {
                url: '/wechat/wechatConfig/list',
                url: server+'/wechat/wechatConfig/list',
                data: function (d) {
                    d.name = $("#name").val();
                    d.userCode = usercode;
                    d.userCode = userCode;
                    d.saasId = saasId;
                },
                type: 'GET',
                dataSrc: "detailModelList"
@ -87,7 +89,7 @@ $(function () {
                    "sDefaultContent": '',
                    "sWidth": "10%",
                    "render": function (data, type, full, meta) {
                        return data = '<button id="findOne" class="btn btn-primary  btn-sm" data-id=' + data + ' onclick="show(\''+data+'\')">查 看</button>';/*<button id="deleteOne" class="btn btn-danger btn-sm" style="margin-left: 7px;" data-id=' + data + '>删 除</button>*/
                        return data = '<button class="btn btn-primary  btn-sm" data-id=' + data + ' onclick="show(\''+data+'\')">查 看</button>';/*<button class="btn btn-danger btn-sm" style="margin-left: 7px;" data-id=' + data + '>删 除</button>*/
                    }
                }
@ -119,7 +121,7 @@ $(function () {
            },
            initComplete: initComplete,
            drawCallback: function (settings) {
                $('input[name=checkAllWechat]')[0].checked = false;//取消全选状态
                $('input[name=checkAll]')[0].checked = false;//取消全选状态
            }
        }
    );
@ -129,24 +131,17 @@ $(function () {
     * @param data
     */
    function initComplete(data){
        //上方topPlugin DIV中追加HTML
        //var topPlugin='<button id="addButton" class="btn btn-success btn-sm" data-toggle="modal" data-target="#addUser" style="display:block;">' +
        // '<span class="glyphicon glyphicon-plus" aria-hidden="true"></span>添加用户</button>';
        //删除用户按钮的HTMLDOM
        var topPlugin='<button   class="btn btn-danger btn-sm" id="deleteAll">批量删除</button> <button   class="btn btn-primary btn-sm addBtn" >新 增</button>       <button  class="btn btn-warning btn-sm" id="reset">重置搜索条件</button>' ;
        $("#topPlugin").append(topPlugin);//在表格上方topPlugin DIV中追加HTML
        //$("#expCsv").on("click", exp1);//给下方按钮绑定事件
    }
    /**
     * 多选选中和取消选中,同时选中第一个单元格单选框,并联动全选单选框
     */
    $('#wechatList tbody').on('click', 'tr', function(event) {
        var checkAllWechat=$('input[name=checkAllWechat]')[0];//关联全选单选框
    $('#list tbody').on('click', 'tr', function(event) {
        var checkAll=$('input[name=checkAll]')[0];//关联全选单选框
        $($(this).children()[0]).children().each(function(){
            if(this.type=="checkbox" && (!$(event.target).is(":checkbox") && $(":checkbox",this).trigger("click"))){
                if(!this.checked){
@ -157,12 +152,12 @@ $(function () {
                    var recordsDisplay=table.page.info().recordsDisplay;//搜索条件过滤后的总行数
                    var iDisplayStart=table.page.info().start;// 起始行数
                    if(selected === table.page.len()||selected === recordsDisplay||selected === (recordsDisplay - iDisplayStart)){
                        checkAllWechat.checked = true;
                        checkAll.checked = true;
                    }
                }else{
                    this.checked = false;
                    cancelValue(this);
                    checkAllWechat.checked = false;
                    checkAll.checked = false;
                }
            }
        });
@ -173,15 +168,15 @@ $(function () {
    /**
     * 全选按钮被点击事件
     */
    $('input[name=checkAllWechat]').click(function(){
    $('input[name=checkAll]').click(function(){
        if(this.checked){
            $('#wechatList tbody tr').each(function(){
            $('#list tbody tr').each(function(){
                if(!$(this).hasClass('selected')){
                    $(this).click();
                }
            });
        }else{
            $('#wechatList tbody tr').click();
            $('#list tbody tr').click();
        }
    });
@ -202,7 +197,7 @@ $(function () {
     */
    function cancelValue(para){
        //取消选中checkbox要做的操作
        var wechatCodes = $("input[name=checkAllWechat]");
        var wechatCodes = $("input[name=checkAll]");
        var array = wechatCodes.val().split(",");
        wechatCodes.val("");
        for (var i = 0; i < array.length; i++) {
@ -261,24 +256,16 @@ $(function () {
var contentVM = new Vue({
    el: '#category_add',
    data: {
        wechatConfig: '',//记录详情信息
        saasList:''//记录saas列表
        wechatConfig: ''//记录详情信息
    },
    replace:false
});
do_get("/base/saases",{},function(data){
    contentVM.saasList = data.detailModelList;
    console.log( data.detailModelList);
},function(data){
})
//查看配置
function show(code){
    $("#myModal-add-info").removeData("modal");
    var data={};
    do_get("/wechat/wechatConfig/"+code,data,function(data){
    do_get(server+"/wechat/wechatConfig/"+code,data,function(data){
        contentVM.wechatConfig = data.obj;
        $('#myModal-add-info').modal('show');
        $("#myModalLabel").html("查看");
@ -288,7 +275,7 @@ function show(code){
}
function del(codes){
    var url = "/wechat/wechatConfig/"+codes;
    var url = server+"/wechat/wechatConfig/"+codes;
    do_delete(url,{},function(data){
        alert("删除成功");
        table.ajax.reload();
@ -296,27 +283,24 @@ function del(codes){
}
$("#category_add").submit(function(){
    var url = "";
    var  url = server+"/wechat/wechatConfig";
    var id = $("#id").val();
    var data = $("#category_add").serialize();
    if(id==''){//说明是保存
        url = "/wechat/wechatConfig"
        do_post(url,data,function(data){
            alert("保存成功");
            $('#myModal-add-info').modal('hide');
            table.ajax.reload();
    do_post(url,data,function(data){
        if(data.errorMsg!=undefined){
            alert(data.errorMsg);
            return;
        })
    }else{//说明是修改
        url="/wechat/wechatConfig?userCode="+usercode;
        do_put(url,data,function(data){
        }
        if(id==''){
            alert("保存成功");
        }else{
            alert("修改成功");
            $('#myModal-add-info').modal('hide');
            table.ajax.reload();
            return;
        })
    }
        }
        $('#myModal-add-info').modal('hide');
        table.ajax.reload();
        return;
    })
    return false;
})

+ 4 - 4
svr/svr-quota/src/main/resources/bootstrap.yml

@ -13,7 +13,7 @@ spring:
---
spring:
  profiles: dev
  profiles: jwdev
##发现服务的地址
eureka:
@ -24,19 +24,19 @@ eureka:
---
spring:
  profiles: test
  profiles: jwtest
eureka:
  client:
    serviceUrl:
      #http://账号:密码@127.0.0.1:8761/eureka/
      defaultZone: http://jw:jkzl@127.0.0.1:8761/eureka/
      defaultZone: http://jw:jkzl@172.19.103.33:8761/eureka/
---
spring:
  profiles: prod
  profiles: jwprod
eureka:

+ 4 - 4
svr/svr-wlyy/src/main/resources/bootstrap.yml

@ -13,7 +13,7 @@ spring:
---
spring:
  profiles: dev
  profiles: jwdev
##发现服务的地址
eureka:
@ -24,19 +24,19 @@ eureka:
---
spring:
  profiles: test
  profiles: jwtest
eureka:
  client:
    serviceUrl:
      #http://账号:密码@127.0.0.1:8761/eureka/
      defaultZone: http://jw:jkzl@127.0.0.1:8761/eureka/
      defaultZone: http://jw:jkzl@172.19.103.33:8761/eureka/
---
spring:
  profiles: prod
  profiles: jwprod
eureka:

+ 18 - 17
web-gateway/pom.xml

@ -80,22 +80,6 @@
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-sleuth-zipkin</artifactId>
        </dependency>
        <!--动态刷新配置服务的配置-->
        <!--<dependency>-->
            <!--<groupId>org.springframework.cloud</groupId>-->
            <!--<artifactId>spring-cloud-starter-bus-kafka</artifactId>-->
            <!--<exclusions>-->
                <!--<exclusion>-->
                    <!--<groupId>org.apache.kafka</groupId>-->
                    <!--<artifactId>*</artifactId>-->
                <!--</exclusion>-->
            <!--</exclusions>-->
        <!--</dependency>-->
        <!--<dependency>-->
            <!--<groupId>org.apache.kafka</groupId>-->
            <!--<artifactId>kafka_2.10</artifactId>-->
            <!--<version>0.10.2.0</version>-->
        <!--</dependency>-->
        <dependency>
            <groupId>com.fasterxml.jackson.core</groupId>
            <artifactId>jackson-annotations</artifactId>
@ -112,6 +96,23 @@
            <groupId>org.json</groupId>
            <artifactId>json</artifactId>
        </dependency>
    </dependencies>
    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <executions>
                    <execution>
                        <goals>
                            <goal>repackage</goal>
                        </goals>
                    </execution>
                </executions>
                <configuration>
                    <mainClass>com.yihu.jw.WebGateWayAppliaction</mainClass>
                </configuration>
            </plugin>
        </plugins>
    </build>
</project>

+ 1 - 1
web-gateway/src/main/java/com/yihu/jw/controller/base/wx/WechatAccessTokenController.java

@ -21,7 +21,7 @@ import org.springframework.web.bind.annotation.RestController;
 * Created by Administrator on 2017/5/31 0031.
 */
@RestController
@RequestMapping("{version}/"+ WechatContants.WxAccessToken.api_common)
@RequestMapping("{version}"+ WechatContants.WxAccessToken.api_common)
@Api(description = "微信token相关")
public class WechatAccessTokenController {

+ 4 - 2
web-gateway/src/main/java/com/yihu/jw/controller/base/wx/WechatConfigController.java

@ -21,7 +21,7 @@ import org.springframework.web.bind.annotation.*;
@RestController
@RequestMapping("{version}/"+ WechatContants.api_common)
@RequestMapping("{version}"+ WechatContants.api_common)
@Api(description = "微信配置")
public class WechatConfigController {
@ -110,11 +110,13 @@ public class WechatConfigController {
            @RequestParam(value = "page", required = false) int page) throws Exception {
        String filterStr = "";
        if(StringUtils.isNotBlank(filters)){
            filters = filters.replaceAll("=", ":");
            JSONObject jsonResult = new JSONObject(filters);
            if(jsonResult.has("name")){
                filterStr+="name?"+jsonResult.get("name")+";";
            }
            if(jsonResult.has("saasId")){
                filterStr+="saasId="+jsonResult.get("saasId")+";";
            }
        }
        Envelop envelop = wechatFegin.getWechats(fields,filterStr,sorts,size,page);
        return envelop;

+ 8 - 8
web-gateway/src/main/java/com/yihu/jw/controller/base/wx/WechatGraphicMessageController.java

@ -19,14 +19,11 @@ import org.springframework.cloud.sleuth.Tracer;
import org.springframework.http.MediaType;
import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
/**
 * Created by Administrator on 2017/5/31 0031.
 */
@RestController
@RequestMapping("{version}/"+ WechatContants.api_common)
@RequestMapping("{version}"+ WechatContants.api_common)
@Api(description = "微信图文相关")
public class WechatGraphicMessageController {
    private Logger logger= LoggerFactory.getLogger(WechatGraphicMessageController.class);
@ -97,6 +94,9 @@ public class WechatGraphicMessageController {
    @ApiVersion(1)
    @RequestMapping(value = WechatContants.WxGraphicMessage.api_getWxGraphicMessages, method = RequestMethod.GET)
    @ApiOperation(value = "获取微信图文消息列表(分页)")
    @HystrixCommand(commandProperties = {
            @HystrixProperty(name = "execution.isolation.thread.timeoutInMilliseconds", value = "-1"),//超时时间
            @HystrixProperty(name = "execution.timeout.enabled", value = "false") })
    public Envelop getWxGraphicMessages(
            @ApiParam(name = "fields", value = "返回的字段,为空返回全部字段", defaultValue = "id,code,title,description,url,pic_url,remark,status")
            @RequestParam(value = "fields", required = false) String fields,
@ -107,17 +107,17 @@ public class WechatGraphicMessageController {
            @ApiParam(name = "size", value = "分页大小", defaultValue = "15")
            @RequestParam(value = "size", required = false) int size,
            @ApiParam(name = "page", value = "页码", defaultValue = "1")
            @RequestParam(value = "page", required = false) int page,
            HttpServletRequest request,
            HttpServletResponse response) throws Exception {
            @RequestParam(value = "page", required = false) int page) throws Exception {
        String filterStr = "";
        if(StringUtils.isNotBlank(filters)){
            filters = filters.replaceAll("=", ":");
            JSONObject jsonResult = new JSONObject(filters);
            if(jsonResult.has("title")){
                filterStr+="title?"+jsonResult.get("title")+";";
            }
            if(jsonResult.has("saasId")){
                filterStr+="saasId="+jsonResult.get("saasId")+";";
            }
        }
        tracer.getCurrentSpan().logEvent("过滤:"+filterStr);
        return graphicMessageFegin.getWxGraphicMessages(fields,filterStr,sorts,size,page);

+ 8 - 3
web-gateway/src/main/java/com/yihu/jw/controller/base/wx/WechatMenuController.java

@ -23,7 +23,7 @@ import org.springframework.web.bind.annotation.*;
 * Created by Administrator on 2017/5/31 0031.
 */
@RestController
@RequestMapping("{version}/"+ WechatContants.api_common)
@RequestMapping("{version}"+ WechatContants.api_common)
@Api(description = "微信菜单配置")
public class WechatMenuController {
@ -92,6 +92,9 @@ public class WechatMenuController {
    @RequestMapping(value = WechatContants.WxMenu.api_getWxMenus, method = RequestMethod.GET)
    @ApiOperation(value = "获取微信菜单列表(分页)")
    @HystrixCommand(commandProperties = {
            @HystrixProperty(name = "execution.isolation.thread.timeoutInMilliseconds", value = "-1"),//超时时间
            @HystrixProperty(name = "execution.timeout.enabled", value = "false") })
    public Envelop getWxMenus(
            @ApiParam(name = "fields", value = "返回的字段,为空返回全部字段", defaultValue = "id,code,name,saasId,appId,appSecret,baseUrl,remark")
            @RequestParam(value = "fields", required = false) String fields,
@ -105,11 +108,13 @@ public class WechatMenuController {
            @RequestParam(value = "page", required = false) int page) throws Exception {
        String filterStr = "";
        if(StringUtils.isNotBlank(filters)){
            filters = filters.replaceAll("=", ":");
            JSONObject jsonResult = new JSONObject(filters);
            if(jsonResult.has("name")){
                filterStr+="name?"+jsonResult.get("name")+";";
            }
            if(jsonResult.has("saasId")){
                filterStr+="saasId="+jsonResult.get("saasId")+";";
            }
        }
        return wechatMenuFegin.getWxMenus(fields,filterStr,sorts,size,page);
    }
@ -159,7 +164,7 @@ public class WechatMenuController {
    }
    @GetMapping(value = WechatContants.WxMenu.api_getChildMenus)
    @ApiOperation(value = "根据微信code查找父菜单", notes = "根据微信code查找父菜单")
    @ApiOperation(value = "根据parentCode查找子菜单", notes = "根据parentCode查找子菜单")
    @HystrixCommand(commandProperties = {
            @HystrixProperty(name = "execution.isolation.thread.timeoutInMilliseconds", value = "-1"),//超时时间
            @HystrixProperty(name = "execution.timeout.enabled", value = "false") })

+ 12 - 3
web-gateway/src/main/java/com/yihu/jw/controller/base/wx/WechatTemplateControlle.java

@ -23,7 +23,7 @@ import org.springframework.web.bind.annotation.*;
 * Created by Administrator on 2017/5/31 0031.
 */
@RestController
@RequestMapping("{version}/"+ WechatContants.api_common)
@RequestMapping("{version}"+ WechatContants.api_common)
@Api(description = "微信模板消息相关")
public class WechatTemplateControlle {
@ -111,11 +111,13 @@ public class WechatTemplateControlle {
            @RequestParam(value = "page", required = false) int page) throws Exception {
        String filterStr = "";
        if(StringUtils.isNotBlank(filters)){
            filters = filters.replaceAll("=", ":");
            JSONObject jsonResult = new JSONObject(filters);
            if(jsonResult.has("name")){
                filterStr+="name?"+jsonResult.get("name")+";";
            }
            if(jsonResult.has("saasId")){
                filterStr+="saasId="+jsonResult.get("saasId")+";";
            }
        }
        return wechatTemplateFegin.getWechats(fields,filterStr,sorts,size,page);
    }
@ -133,7 +135,14 @@ public class WechatTemplateControlle {
            @RequestParam(value = "filters", required = false) String filters,
            @ApiParam(name = "sorts", value = "排序,规则参见说明文档", defaultValue = "+title,+createTime")
            @RequestParam(value = "sorts", required = false) String sorts) throws Exception {
        return wechatTemplateFegin.getWechatNoPage(fields,filters,sorts);
        String filterStr = "";
        if(StringUtils.isNotBlank(filters)){
            JSONObject jsonResult = new JSONObject(filters);
            if(jsonResult.has("wechatCode")){
                filterStr+="wechatCode="+jsonResult.get("wechatCode")+";";
            }
        }
        return wechatTemplateFegin.getWechatNoPage(fields,filterStr,sorts);
    }
    @ApiVersion(1)

+ 1 - 1
web-gateway/src/main/java/com/yihu/jw/fegin/PatientFegin.java

@ -16,7 +16,7 @@ import org.springframework.web.bind.annotation.RequestParam;
 */
@FeignClient(
        name = CommonContants.svr_base // name值是eurika的实例名字
       // ,fallback = PatientFeginFallback.class// fallback是请求超时或者错误的回调函数
        // ,fallback = PatientFeginFallback.class// fallback是请求超时或者错误的回调函数
        ,fallbackFactory  =PatientFeginFallbackFactory.class
//        ,configuration =   //可以配置当个fegin的配置 例如禁用单个feign的hystrix
)

+ 2 - 2
web-gateway/src/main/resources/bootstrap.yml

@ -20,7 +20,7 @@ eureka:
  client:
    serviceUrl:
      #http://账号:密码@127.0.0.1:8761/eureka/
      defaultZone: http://jw:jkzl@127.0.0.1:8761/eureka/
      defaultZone: http://jw:jkzl@172.19.103.33:8761/eureka/
---
spring:
@ -31,7 +31,7 @@ eureka:
  client:
    serviceUrl:
      #http://账号:密码@127.0.0.1:8761/eureka/
      defaultZone: http://jw:jkzl@127.0.0.1:8761/eureka/
      defaultZone: http://jw:jkzl@172.19.103.33:8761/eureka/
---