zhuth 7 years ago
parent
commit
5aeceeb10a
100 changed files with 1716 additions and 125 deletions
  1. 24 11
      README.md
  2. 33 7
      base-servers/account/account-dto/src/main/java/com/usoftchina/saas/account/dto/AccountDTO.java
  3. 3 3
      base-servers/account/account-dto/src/main/java/com/usoftchina/saas/account/dto/AccountRegDTO.java
  4. 111 0
      base-servers/account/account-dto/src/main/java/com/usoftchina/saas/account/dto/AuthedAccountDTO.java
  5. 48 0
      base-servers/account/account-dto/src/main/java/com/usoftchina/saas/account/dto/CompanyBaseDTO.java
  6. 6 9
      base-servers/account/account-dto/src/main/java/com/usoftchina/saas/account/dto/CompanyDTO.java
  7. 10 0
      base-servers/account/account-dto/src/main/java/com/usoftchina/saas/account/dto/ResourcesDTO.java
  8. 67 0
      base-servers/account/account-dto/src/main/java/com/usoftchina/saas/account/dto/RoleBaseDTO.java
  9. 70 1
      base-servers/account/account-server/src/main/java/com/usoftchina/saas/account/controller/AccountController.java
  10. 0 20
      base-servers/account/account-server/src/main/java/com/usoftchina/saas/account/controller/CompanyController.java
  11. 27 0
      base-servers/account/account-server/src/main/java/com/usoftchina/saas/account/mapper/AccountCompanyMapper.java
  12. 17 2
      base-servers/account/account-server/src/main/java/com/usoftchina/saas/account/mapper/AccountMapper.java
  13. 18 3
      base-servers/account/account-server/src/main/java/com/usoftchina/saas/account/mapper/AccountRoleMapper.java
  14. 12 0
      base-servers/account/account-server/src/main/java/com/usoftchina/saas/account/mapper/CompanyMapper.java
  15. 47 3
      base-servers/account/account-server/src/main/java/com/usoftchina/saas/account/po/Account.java
  16. 30 0
      base-servers/account/account-server/src/main/java/com/usoftchina/saas/account/po/AccountCompany.java
  17. 1 3
      base-servers/account/account-server/src/main/java/com/usoftchina/saas/account/po/AccountRole.java
  18. 7 7
      base-servers/account/account-server/src/main/java/com/usoftchina/saas/account/po/Company.java
  19. 41 3
      base-servers/account/account-server/src/main/java/com/usoftchina/saas/account/service/AccountService.java
  20. 11 0
      base-servers/account/account-server/src/main/java/com/usoftchina/saas/account/service/CompanyService.java
  21. 42 5
      base-servers/account/account-server/src/main/java/com/usoftchina/saas/account/service/impl/AccountServiceImpl.java
  22. 7 0
      base-servers/account/account-server/src/main/java/com/usoftchina/saas/account/service/impl/CompanyServiceImpl.java
  23. 44 0
      base-servers/account/account-server/src/main/java/com/usoftchina/saas/account/vo/CompanyBaseVO.java
  24. 11 6
      base-servers/account/account-server/src/main/resources/application.yml
  25. 7 0
      base-servers/account/account-server/src/main/resources/config/application-docker.yml
  26. 10 0
      base-servers/account/account-server/src/main/resources/mapper/AccountCompanyMapper.xml
  27. 6 0
      base-servers/account/account-server/src/main/resources/mapper/AccountRoleMapper.xml
  28. 13 5
      base-servers/account/account-server/src/main/resources/mapper/CompanyMapper.xml
  29. 1 0
      base-servers/account/account-server/src/main/resources/mapper/RoleMapper.xml
  30. 2 1
      base-servers/auth/auth-server/src/main/java/com/usoftchina/saas/auth/controller/AuthController.java
  31. 2 0
      base-servers/gateway-server/src/main/java/com/usoftchina/saas/gateway/GatewayApplication.java
  32. 3 5
      base-servers/gateway-server/src/main/java/com/usoftchina/saas/gateway/config/AuthConfig.java
  33. 18 0
      base-servers/gateway-server/src/main/java/com/usoftchina/saas/gateway/config/SecurityConfig.java
  34. 2 5
      base-servers/gateway-server/src/main/java/com/usoftchina/saas/gateway/config/ZuulConfig.java
  35. 54 6
      base-servers/gateway-server/src/main/resources/application.yml
  36. 4 0
      base-servers/gateway-server/src/main/resources/config/application-docker.yml
  37. 1 1
      base-servers/ui-server/src/main/java/com/usoftchina/saas/ui/controller/ViewController.java
  38. 1 1
      base-servers/ui-server/src/main/java/com/usoftchina/saas/ui/controller/co/CoViewController.java
  39. 3 0
      base-servers/ui-server/src/main/resources/config/application-docker.yml
  40. 24 0
      framework/core/src/main/java/com/usoftchina/saas/utils/BeanMapper.java
  41. 37 0
      framework/core/src/main/java/com/usoftchina/saas/utils/ListUtils.java
  42. 3 1
      frontend/saas-web/app.json
  43. 3 3
      frontend/saas-web/app/view/core/dbfind/DbfindGridPanel.js
  44. 2 2
      frontend/saas-web/app/view/core/dbfind/DbfindTrigger.js
  45. 12 11
      frontend/saas-web/app/view/purchase/panel/FormPanelController.js
  46. 13 1
      frontend/saas-web/app/view/test/order/FormController.js
  47. 1 0
      frontend/saas-web/ext/packages/modern-locale/.gitignore
  48. 32 0
      frontend/saas-web/ext/packages/modern-locale/README.md
  49. 141 0
      frontend/saas-web/ext/packages/modern-locale/build.xml
  50. 2 0
      frontend/saas-web/ext/packages/modern-locale/index.js
  51. 4 0
      frontend/saas-web/ext/packages/modern-locale/overrides/de_DE/Component.js
  52. 49 0
      frontend/saas-web/ext/packages/modern-locale/overrides/de_DE/Panel.js
  53. 14 0
      frontend/saas-web/ext/packages/modern-locale/overrides/de_DE/data/validator/Bound.js
  54. 9 0
      frontend/saas-web/ext/packages/modern-locale/overrides/de_DE/data/validator/CIDRv4.js
  55. 9 0
      frontend/saas-web/ext/packages/modern-locale/overrides/de_DE/data/validator/CIDRv6.js
  56. 10 0
      frontend/saas-web/ext/packages/modern-locale/overrides/de_DE/data/validator/Currency.js
  57. 9 0
      frontend/saas-web/ext/packages/modern-locale/overrides/de_DE/data/validator/DateTime.js
  58. 9 0
      frontend/saas-web/ext/packages/modern-locale/overrides/de_DE/data/validator/Email.js
  59. 9 0
      frontend/saas-web/ext/packages/modern-locale/overrides/de_DE/data/validator/Exclusion.js
  60. 11 0
      frontend/saas-web/ext/packages/modern-locale/overrides/de_DE/data/validator/Format.js
  61. 9 0
      frontend/saas-web/ext/packages/modern-locale/overrides/de_DE/data/validator/IPAddress.js
  62. 9 0
      frontend/saas-web/ext/packages/modern-locale/overrides/de_DE/data/validator/Inclusion.js
  63. 11 0
      frontend/saas-web/ext/packages/modern-locale/overrides/de_DE/data/validator/Length.js
  64. 11 0
      frontend/saas-web/ext/packages/modern-locale/overrides/de_DE/data/validator/Number.js
  65. 9 0
      frontend/saas-web/ext/packages/modern-locale/overrides/de_DE/data/validator/Phone.js
  66. 11 0
      frontend/saas-web/ext/packages/modern-locale/overrides/de_DE/data/validator/Presence.js
  67. 14 0
      frontend/saas-web/ext/packages/modern-locale/overrides/de_DE/data/validator/Range.js
  68. 9 0
      frontend/saas-web/ext/packages/modern-locale/overrides/de_DE/data/validator/Time.js
  69. 9 0
      frontend/saas-web/ext/packages/modern-locale/overrides/de_DE/data/validator/Url.js
  70. 11 0
      frontend/saas-web/ext/packages/modern-locale/overrides/de_DE/dataview/Abstract.js
  71. 11 0
      frontend/saas-web/ext/packages/modern-locale/overrides/de_DE/dataview/EmptyText.js
  72. 11 0
      frontend/saas-web/ext/packages/modern-locale/overrides/de_DE/dataview/List.js
  73. 12 0
      frontend/saas-web/ext/packages/modern-locale/overrides/de_DE/dataview/plugin/ListPaging.js
  74. 47 0
      frontend/saas-web/ext/packages/modern-locale/overrides/de_DE/ext-locale-de_DE.js
  75. 10 0
      frontend/saas-web/ext/packages/modern-locale/overrides/de_DE/field/Date.js
  76. 12 0
      frontend/saas-web/ext/packages/modern-locale/overrides/de_DE/field/Field.js
  77. 14 0
      frontend/saas-web/ext/packages/modern-locale/overrides/de_DE/field/Number.js
  78. 13 0
      frontend/saas-web/ext/packages/modern-locale/overrides/de_DE/field/Text.js
  79. 12 0
      frontend/saas-web/ext/packages/modern-locale/overrides/de_DE/panel/Collapser.js
  80. 12 0
      frontend/saas-web/ext/packages/modern-locale/overrides/de_DE/panel/Date.js
  81. 14 0
      frontend/saas-web/ext/packages/modern-locale/overrides/de_DE/picker/Date.js
  82. 12 0
      frontend/saas-web/ext/packages/modern-locale/overrides/de_DE/picker/Picker.js
  83. 4 0
      frontend/saas-web/ext/packages/modern-locale/overrides/es_AR/Component.js
  84. 49 0
      frontend/saas-web/ext/packages/modern-locale/overrides/es_AR/Panel.js
  85. 14 0
      frontend/saas-web/ext/packages/modern-locale/overrides/es_AR/data/validator/Bound.js
  86. 9 0
      frontend/saas-web/ext/packages/modern-locale/overrides/es_AR/data/validator/CIDRv4.js
  87. 9 0
      frontend/saas-web/ext/packages/modern-locale/overrides/es_AR/data/validator/CIDRv6.js
  88. 10 0
      frontend/saas-web/ext/packages/modern-locale/overrides/es_AR/data/validator/Currency.js
  89. 9 0
      frontend/saas-web/ext/packages/modern-locale/overrides/es_AR/data/validator/DateTime.js
  90. 9 0
      frontend/saas-web/ext/packages/modern-locale/overrides/es_AR/data/validator/Email.js
  91. 9 0
      frontend/saas-web/ext/packages/modern-locale/overrides/es_AR/data/validator/Exclusion.js
  92. 11 0
      frontend/saas-web/ext/packages/modern-locale/overrides/es_AR/data/validator/Format.js
  93. 9 0
      frontend/saas-web/ext/packages/modern-locale/overrides/es_AR/data/validator/IPAddress.js
  94. 9 0
      frontend/saas-web/ext/packages/modern-locale/overrides/es_AR/data/validator/Inclusion.js
  95. 11 0
      frontend/saas-web/ext/packages/modern-locale/overrides/es_AR/data/validator/Length.js
  96. 11 0
      frontend/saas-web/ext/packages/modern-locale/overrides/es_AR/data/validator/Number.js
  97. 9 0
      frontend/saas-web/ext/packages/modern-locale/overrides/es_AR/data/validator/Phone.js
  98. 11 0
      frontend/saas-web/ext/packages/modern-locale/overrides/es_AR/data/validator/Presence.js
  99. 14 0
      frontend/saas-web/ext/packages/modern-locale/overrides/es_AR/data/validator/Range.js
  100. 9 0
      frontend/saas-web/ext/packages/modern-locale/overrides/es_AR/data/validator/Time.js

+ 24 - 11
README.md

@@ -58,17 +58,30 @@
 │  │
 ```
 
-# 数据库
+# 开发环境
 
-> 开发环境
+> 数据库
 
-| 数据库      | 地址   |  账号  |  密码  |  说明  |
-| --------   | :-----:  | :----:  | :----: | :------  |
-| saas_account | 192.168.253.12:3306 |  root  | select111*** |  账户中心  |
-| saas_auth | 192.168.253.12:3306 |  root  | select111*** |  鉴权系统  |
-| saas_biz | 192.168.253.12:3306 |  root  | select111*** |  业务系统  |
-| saas_ui | 192.168.253.12:3306 |  root  | select111*** |  UI配置  |
-| saas_zipkin | 192.168.253.12:3306 |  root  | select111*** |  服务监控  |
+| 数据库      | 类型   | 地址   |  账号  |  密码  |  说明  |
+| --------   | :-----: | :-----:  | :----:  | :----: | :------  |
+| saas_account | mysql | 192.168.253.12:3306 |  root  | select111*** |  账户中心  |
+| saas_auth | mysql | 192.168.253.12:3306 |  root  | select111*** |  鉴权系统  |
+| saas_biz | mysql | 192.168.253.12:3306 |  root  | select111*** |  业务系统  |
+| saas_ui | mongo | 192.168.253.12:27017 |    |  |  UI配置  |
+| saas_zipkin | mysql | 192.168.253.12:3306 |  root  | select111*** |  服务监控  |
+
+> 中间件
+
+| 类型 | 地址 | 账号 | 密码 | 说明 |
+| ---- | :----: | :----: | :----: | ---- |
+| rabbit | 192.168.0.176:5672 | guest | guest | 消息中间件 |
+
+
+> 服务器
+
+
+
+> 构建
+
+[jenkins](http://192.168.0.181:8080/job/saas) **账号** admin **密码** select123***
 
-# 构建:
-[jenkins](http://192.168.0.181:8080/job/saas) **账号** admin **密码** select123***

+ 33 - 7
base-servers/account/account-dto/src/main/java/com/usoftchina/saas/account/dto/AccountDTO.java

@@ -3,6 +3,8 @@ package com.usoftchina.saas.account.dto;
 import io.swagger.annotations.ApiModel;
 
 import java.io.Serializable;
+import java.util.List;
+import java.util.Map;
 
 /**
  * @author yingp
@@ -19,7 +21,21 @@ public class AccountDTO implements Serializable {
      * 账号类型 0 - 管理员
      */
     private Integer type;
-    private long companyId;
+    /**
+     * 所有绑定的公司
+     */
+    private List<CompanyBaseDTO> companies;
+    /**
+     * 所绑定的角色(按绑定的公司ID分组成Map)
+     */
+    private Map<Long, List<RoleBaseDTO>> rolesMap;
+
+    /**
+     * 所拥有的资源
+     *
+     * @return
+     */
+
 
     public Long getId() {
         return id;
@@ -69,23 +85,33 @@ public class AccountDTO implements Serializable {
         this.type = type;
     }
 
-    public long getCompanyId() {
-        return companyId;
+    public List<CompanyBaseDTO> getCompanies() {
+        return companies;
+    }
+
+    public void setCompanies(List<CompanyBaseDTO> companies) {
+        this.companies = companies;
+    }
+
+    public Map<Long, List<RoleBaseDTO>> getRolesMap() {
+        return rolesMap;
     }
 
-    public void setCompanyId(long companyId) {
-        this.companyId = companyId;
+    public void setRolesMap(Map<Long, List<RoleBaseDTO>> rolesMap) {
+        this.rolesMap = rolesMap;
     }
 
     @Override
     public String toString() {
         return "AccountDTO{" +
-                "username='" + username + '\'' +
+                "id=" + id +
+                ", username='" + username + '\'' +
                 ", realname='" + realname + '\'' +
                 ", email='" + email + '\'' +
                 ", mobile='" + mobile + '\'' +
                 ", type=" + type +
-                ", companyId=" + companyId +
+                ", companies=" + companies +
+                ", rolesMap=" + rolesMap +
                 '}';
     }
 }

+ 3 - 3
base-servers/account/account-dto/src/main/java/com/usoftchina/saas/account/dto/AccountRegDTO.java

@@ -19,7 +19,7 @@ public class AccountRegDTO implements Serializable {
      * 账号类型 0 - 管理员
      */
     private Integer type;
-    private long companyId;
+    private Long companyId;
 
     public String getUsername() {
         return username;
@@ -69,11 +69,11 @@ public class AccountRegDTO implements Serializable {
         this.type = type;
     }
 
-    public long getCompanyId() {
+    public Long getCompanyId() {
         return companyId;
     }
 
-    public void setCompanyId(long companyId) {
+    public void setCompanyId(Long companyId) {
         this.companyId = companyId;
     }
 

+ 111 - 0
base-servers/account/account-dto/src/main/java/com/usoftchina/saas/account/dto/AuthedAccountDTO.java

@@ -0,0 +1,111 @@
+package com.usoftchina.saas.account.dto;
+
+import io.swagger.annotations.ApiModel;
+
+import java.io.Serializable;
+import java.util.List;
+
+/**
+ * 登录账户信息
+ *
+ * @author yingp
+ * @date 2018/10/10
+ */
+@ApiModel(value = "AuthedAccount", description = "账户信息")
+public class AuthedAccountDTO implements Serializable {
+    private Long id;
+    private String username;
+    private String realname;
+    private String email;
+    private String mobile;
+    /**
+     * 账号类型 0 - 管理员
+     */
+    private Integer type;
+    /**
+     * 当前登录的公司
+     */
+    private Long companyId;
+    /**
+     * 所有绑定的公司
+     */
+    private List<CompanyBaseDTO> companies;
+
+    public Long getId() {
+        return id;
+    }
+
+    public void setId(Long id) {
+        this.id = id;
+    }
+
+    public String getUsername() {
+        return username;
+    }
+
+    public void setUsername(String username) {
+        this.username = username;
+    }
+
+    public String getRealname() {
+        return realname;
+    }
+
+    public void setRealname(String realname) {
+        this.realname = realname;
+    }
+
+    public String getEmail() {
+        return email;
+    }
+
+    public void setEmail(String email) {
+        this.email = email;
+    }
+
+    public String getMobile() {
+        return mobile;
+    }
+
+    public void setMobile(String mobile) {
+        this.mobile = mobile;
+    }
+
+    public Integer getType() {
+        return type;
+    }
+
+    public void setType(Integer type) {
+        this.type = type;
+    }
+
+    public Long getCompanyId() {
+        return companyId;
+    }
+
+    public void setCompanyId(Long companyId) {
+        this.companyId = companyId;
+    }
+
+    public List<CompanyBaseDTO> getCompanies() {
+        return companies;
+    }
+
+    public void setCompanies(List<CompanyBaseDTO> companies) {
+        this.companies = companies;
+    }
+
+    @Override
+    public String toString() {
+        return "AuthedAccountDTO{" +
+                "id=" + id +
+                ", username='" + username + '\'' +
+                ", realname='" + realname + '\'' +
+                ", email='" + email + '\'' +
+                ", mobile='" + mobile + '\'' +
+                ", type=" + type +
+                ", companyId=" + companyId +
+                ", companies=" + companies +
+                '}';
+    }
+}

+ 48 - 0
base-servers/account/account-dto/src/main/java/com/usoftchina/saas/account/dto/CompanyBaseDTO.java

@@ -0,0 +1,48 @@
+package com.usoftchina.saas.account.dto;
+
+import java.io.Serializable;
+
+/**
+ * 公司基础信息
+ *
+ * @author yingp
+ * @date 2018/10/10
+ */
+public class CompanyBaseDTO implements Serializable{
+    private Long id;
+    private String name;
+    private String logoUrl;
+
+    public Long getId() {
+        return id;
+    }
+
+    public void setId(Long id) {
+        this.id = id;
+    }
+
+    public String getName() {
+        return name;
+    }
+
+    public void setName(String name) {
+        this.name = name;
+    }
+
+    public String getLogoUrl() {
+        return logoUrl;
+    }
+
+    public void setLogoUrl(String logoUrl) {
+        this.logoUrl = logoUrl;
+    }
+
+    @Override
+    public String toString() {
+        return "CompanyBaseDTO{" +
+                "id=" + id +
+                ", name='" + name + '\'' +
+                ", logoUrl='" + logoUrl + '\'' +
+                '}';
+    }
+}

+ 6 - 9
base-servers/account/account-dto/src/main/java/com/usoftchina/saas/account/dto/CompanyDTO.java

@@ -19,10 +19,7 @@ public class CompanyDTO implements Serializable{
      */
     private String businessCode;
     private String address;
-    /**
-     * 二级域名
-     */
-    private String domain;
+    private String logoUrl;
 
     public String getName() {
         return name;
@@ -48,12 +45,12 @@ public class CompanyDTO implements Serializable{
         this.address = address;
     }
 
-    public String getDomain() {
-        return domain;
+    public String getLogoUrl() {
+        return logoUrl;
     }
 
-    public void setDomain(String domain) {
-        this.domain = domain;
+    public void setLogoUrl(String logoUrl) {
+        this.logoUrl = logoUrl;
     }
 
     @Override
@@ -62,7 +59,7 @@ public class CompanyDTO implements Serializable{
                 "name='" + name + '\'' +
                 ", businessCode='" + businessCode + '\'' +
                 ", address='" + address + '\'' +
-                ", domain='" + domain + '\'' +
+                ", logoUrl='" + logoUrl + '\'' +
                 '}';
     }
 }

+ 10 - 0
base-servers/account/account-dto/src/main/java/com/usoftchina/saas/account/dto/ResourcesDTO.java

@@ -0,0 +1,10 @@
+package com.usoftchina.saas.account.dto;
+
+import java.io.Serializable;
+
+/**
+ * @author yingp
+ * @date 2018/10/10
+ */
+public class ResourcesDTO implements Serializable{
+}

+ 67 - 0
base-servers/account/account-dto/src/main/java/com/usoftchina/saas/account/dto/RoleBaseDTO.java

@@ -0,0 +1,67 @@
+package com.usoftchina.saas.account.dto;
+
+import java.io.Serializable;
+
+/**
+ * 角色基本信息
+ *
+ * @author yingp
+ * @date 2018/10/10
+ */
+public class RoleBaseDTO implements Serializable{
+    private Long id;
+    /**
+     * 公司
+     */
+    private Long companyId;
+    /**
+     * 角色编码
+     */
+    private String code;
+    /**
+     * 角色名称
+     */
+    private String name;
+
+    public Long getId() {
+        return id;
+    }
+
+    public void setId(Long id) {
+        this.id = id;
+    }
+
+    public Long getCompanyId() {
+        return companyId;
+    }
+
+    public void setCompanyId(Long companyId) {
+        this.companyId = companyId;
+    }
+
+    public String getCode() {
+        return code;
+    }
+
+    public void setCode(String code) {
+        this.code = code;
+    }
+
+    public String getName() {
+        return name;
+    }
+
+    public void setName(String name) {
+        this.name = name;
+    }
+
+    @Override
+    public String toString() {
+        return "RoleBaseDTO{" +
+                "id=" + id +
+                ", companyId=" + companyId +
+                ", code='" + code + '\'' +
+                ", name='" + name + '\'' +
+                '}';
+    }
+}

+ 70 - 1
base-servers/account/account-server/src/main/java/com/usoftchina/saas/account/controller/AccountController.java

@@ -2,8 +2,11 @@ package com.usoftchina.saas.account.controller;
 
 import com.usoftchina.saas.account.dto.AccountDTO;
 import com.usoftchina.saas.account.dto.AccountRegDTO;
+import com.usoftchina.saas.account.dto.CompanyBaseDTO;
 import com.usoftchina.saas.account.po.Account;
 import com.usoftchina.saas.account.service.AccountService;
+import com.usoftchina.saas.account.service.CompanyService;
+import com.usoftchina.saas.account.vo.CompanyBaseVO;
 import com.usoftchina.saas.base.Result;
 import com.usoftchina.saas.exception.ExceptionCode;
 import com.usoftchina.saas.utils.BeanMapper;
@@ -11,6 +14,8 @@ import com.usoftchina.saas.utils.RegexpUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.*;
 
+import java.util.List;
+
 /**
  * @author yingp
  * @date 2018/10/2
@@ -22,6 +27,9 @@ public class AccountController {
     @Autowired
     private AccountService accountService;
 
+    @Autowired
+    private CompanyService companyService;
+
     /**
      * 注册
      *
@@ -71,7 +79,12 @@ public class AccountController {
             return Result.error(ExceptionCode.USER_PWD_ERROR);
         }
 
-        return Result.success();
+        AccountDTO accountDTO = BeanMapper.map(account, AccountDTO.class);
+        // 绑定的公司
+        List<CompanyBaseVO> companyBaseVOS = companyService.findBaseByAccountId(account.getId());
+        accountDTO.setCompanies(BeanMapper.mapList(companyBaseVOS, CompanyBaseDTO.class));
+
+        return Result.success(accountDTO);
     }
 
     private Account getAccountByUsername(String username) {
@@ -100,6 +113,62 @@ public class AccountController {
         }
 
         AccountDTO accountDTO = BeanMapper.map(account, AccountDTO.class);
+        // 绑定的公司
+        List<CompanyBaseVO> companyBaseVOS = companyService.findBaseByAccountId(account.getId());
+        accountDTO.setCompanies(BeanMapper.mapList(companyBaseVOS, CompanyBaseDTO.class));
+
         return Result.success(accountDTO);
     }
+
+    /**
+     * 个人账户绑定公司
+     *
+     * @param accountId
+     * @param companyId
+     * @return
+     */
+    @PostMapping("/bind/company")
+    public Result bindCompany(@RequestParam long accountId, @RequestParam long companyId) {
+        accountService.bindCompany(accountId, companyId);
+        return Result.success();
+    }
+
+    /**
+     * 解除个人账户绑定公司
+     *
+     * @param accountId
+     * @param companyId
+     * @return
+     */
+    @PostMapping("/unbind/company")
+    public Result unbindCompany(@RequestParam long accountId, @RequestParam long companyId) {
+        accountService.unbindCompany(accountId, companyId);
+        return Result.success();
+    }
+
+    /**
+     * 个人账户绑定角色
+     *
+     * @param accountId
+     * @param roleId
+     * @return
+     */
+    @PostMapping("/bind/role")
+    public Result bindRole(@RequestParam long accountId, @RequestParam long roleId) {
+        accountService.bindRole(accountId, roleId);
+        return Result.success();
+    }
+
+    /**
+     * 解除个人账户绑定角色
+     *
+     * @param accountId
+     * @param roleId
+     * @return
+     */
+    @PostMapping("/unbind/role")
+    public Result unbindRole(@RequestParam long accountId, @RequestParam long roleId) {
+        accountService.unbindRole(accountId, roleId);
+        return Result.success();
+    }
 }

+ 0 - 20
base-servers/account/account-server/src/main/java/com/usoftchina/saas/account/controller/CompanyController.java

@@ -37,10 +37,6 @@ public class CompanyController {
         if (null != company) {
             return Result.error(ExceptionCode.COMPANY_CODE_EXIST);
         }
-        company = companyService.findByDomain(companyDTO.getDomain());
-        if (null != company) {
-            return Result.error(ExceptionCode.COMPANY_DOMAIN_EXIST);
-        }
 
         company = BeanMapper.map(companyDTO, Company.class);
         companyService.save(company);
@@ -79,20 +75,4 @@ public class CompanyController {
         }
         return Result.error(ExceptionCode.COMPANY_NOT_EXIST);
     }
-
-    /**
-     * 按二级域名查找
-     *
-     * @param domain
-     * @return
-     */
-    @GetMapping(params = "domain")
-    public Result<CompanyDTO> getByDomain(@RequestParam String domain) {
-        Company company = companyService.findByDomain(domain);
-        if (null != company) {
-            CompanyDTO companyDTO = BeanMapper.map(company, CompanyDTO.class);
-            return Result.success(companyDTO);
-        }
-        return Result.error(ExceptionCode.COMPANY_NOT_EXIST);
-    }
 }

+ 27 - 0
base-servers/account/account-server/src/main/java/com/usoftchina/saas/account/mapper/AccountCompanyMapper.java

@@ -0,0 +1,27 @@
+package com.usoftchina.saas.account.mapper;
+
+import org.apache.ibatis.annotations.Param;
+
+/**
+ * @author yingp
+ * @date 2018/10/10
+ */
+public interface AccountCompanyMapper {
+
+    /**
+     * 新增
+     *
+     * @param accountId
+     * @param companyId
+     * @return
+     */
+    int insert(@Param("accountId") Long accountId, @Param("companyId") Long companyId);
+
+    /**
+     * 删除
+     *
+     * @param accountId
+     * @param companyId
+     */
+    void delete(@Param("accountId") Long accountId, @Param("companyId") Long companyId);
+}

+ 17 - 2
base-servers/account/account-server/src/main/java/com/usoftchina/saas/account/mapper/AccountMapper.java

@@ -1,14 +1,29 @@
 package com.usoftchina.saas.account.mapper;
 
 import com.usoftchina.saas.account.po.Account;
-import com.usoftchina.saas.base.mapper.CommonBaseMapper;
 import org.apache.ibatis.annotations.Param;
 
 /**
  * @author yingp
  * @date 2018/10/2
  */
-public interface AccountMapper extends CommonBaseMapper<Account> {
+public interface AccountMapper {
+    /**
+     * 新增
+     *
+     * @param account
+     * @return
+     */
+    int insert(Account account);
+
+    /**
+     * 保存非空数据
+     *
+     * @param account
+     * @return
+     */
+    int insertSelective(Account account);
+
     /**
      * 按用户名查找
      *

+ 18 - 3
base-servers/account/account-server/src/main/java/com/usoftchina/saas/account/mapper/AccountRoleMapper.java

@@ -1,11 +1,26 @@
 package com.usoftchina.saas.account.mapper;
 
-import com.usoftchina.saas.account.po.AccountRole;
-import com.usoftchina.saas.base.mapper.CommonBaseMapper;
+import org.apache.ibatis.annotations.Param;
 
 /**
  * @author yingp
  * @date 2018/10/2
  */
-public interface AccountRoleMapper extends CommonBaseMapper<AccountRole> {
+public interface AccountRoleMapper {
+    /**
+     * 新增
+     *
+     * @param accountId
+     * @param roleId
+     * @return
+     */
+    int insert(@Param("accountId") Long accountId, @Param("roleId") Long roleId);
+
+    /**
+     * 删除
+     *
+     * @param accountId
+     * @param roleId
+     */
+    void delete(@Param("accountId") Long accountId, @Param("roleId") Long roleId);
 }

+ 12 - 0
base-servers/account/account-server/src/main/java/com/usoftchina/saas/account/mapper/CompanyMapper.java

@@ -1,8 +1,11 @@
 package com.usoftchina.saas.account.mapper;
 
 import com.usoftchina.saas.account.po.Company;
+import com.usoftchina.saas.account.vo.CompanyBaseVO;
 import org.apache.ibatis.annotations.Param;
 
+import java.util.List;
+
 /**
  * @author yingp
  * @date 2018/10/2
@@ -23,6 +26,7 @@ public interface CompanyMapper {
      * @return
      */
     int insertSelective(Company record);
+
     /**
      * 按名称查询
      *
@@ -46,4 +50,12 @@ public interface CompanyMapper {
      * @return
      */
     Company selectByDomain(@Param("domain") String domain);
+
+    /**
+     * 按个人账户ID查找全部绑定企业基础信息
+     *
+     * @param accountId
+     * @return
+     */
+    List<CompanyBaseVO> selectBaseByAccountId(@Param("accountId") Long accountId);
 }

+ 47 - 3
base-servers/account/account-server/src/main/java/com/usoftchina/saas/account/po/Account.java

@@ -1,8 +1,7 @@
 package com.usoftchina.saas.account.po;
 
-import com.usoftchina.saas.base.entity.CommonBaseEntity;
-
 import java.io.Serializable;
+import java.util.Date;
 
 /**
  * 账号
@@ -10,7 +9,8 @@ import java.io.Serializable;
  * @author yingp
  * @date 2018/10/2
  */
-public class Account extends CommonBaseEntity implements Serializable {
+public class Account implements Serializable {
+    private Long id;
     private String username;
     private String password;
     private String salt;
@@ -21,6 +21,10 @@ public class Account extends CommonBaseEntity implements Serializable {
      * 账号类型 0 - 管理员
      */
     private Integer type;
+    protected Date createTime;
+    protected long creatorId;
+    protected Date updateTime;
+    protected long updaterId;
 
     public String getUsername() {
         return username;
@@ -77,4 +81,44 @@ public class Account extends CommonBaseEntity implements Serializable {
     public void setType(Integer type) {
         this.type = type;
     }
+
+    public Long getId() {
+        return id;
+    }
+
+    public void setId(Long id) {
+        this.id = id;
+    }
+
+    public Date getCreateTime() {
+        return createTime;
+    }
+
+    public void setCreateTime(Date createTime) {
+        this.createTime = createTime;
+    }
+
+    public long getCreatorId() {
+        return creatorId;
+    }
+
+    public void setCreatorId(long creatorId) {
+        this.creatorId = creatorId;
+    }
+
+    public Date getUpdateTime() {
+        return updateTime;
+    }
+
+    public void setUpdateTime(Date updateTime) {
+        this.updateTime = updateTime;
+    }
+
+    public long getUpdaterId() {
+        return updaterId;
+    }
+
+    public void setUpdaterId(long updaterId) {
+        this.updaterId = updaterId;
+    }
 }

+ 30 - 0
base-servers/account/account-server/src/main/java/com/usoftchina/saas/account/po/AccountCompany.java

@@ -0,0 +1,30 @@
+package com.usoftchina.saas.account.po;
+
+import java.io.Serializable;
+
+/**
+ * 企业、个人 多对多关系
+ *
+ * @author yingp
+ * @date 2018/10/10
+ */
+public class AccountCompany implements Serializable {
+    private Long accountId;
+    private Long companyId;
+
+    public Long getAccountId() {
+        return accountId;
+    }
+
+    public void setAccountId(Long accountId) {
+        this.accountId = accountId;
+    }
+
+    public Long getCompanyId() {
+        return companyId;
+    }
+
+    public void setCompanyId(Long companyId) {
+        this.companyId = companyId;
+    }
+}

+ 1 - 3
base-servers/account/account-server/src/main/java/com/usoftchina/saas/account/po/AccountRole.java

@@ -1,7 +1,5 @@
 package com.usoftchina.saas.account.po;
 
-import com.usoftchina.saas.base.entity.CommonBaseEntity;
-
 import java.io.Serializable;
 
 /**
@@ -10,7 +8,7 @@ import java.io.Serializable;
  * @author yingp
  * @date 2018/10/2
  */
-public class AccountRole extends CommonBaseEntity implements Serializable {
+public class AccountRole implements Serializable {
     private long accountId;
     private long roleId;
 

+ 7 - 7
base-servers/account/account-server/src/main/java/com/usoftchina/saas/account/po/Company.java

@@ -10,7 +10,7 @@ import java.util.Date;
  * @date 2018/10/2
  */
 public class Company implements Serializable {
-    protected Long id;
+    private Long id;
     /**
      * 唯一名称
      */
@@ -21,9 +21,9 @@ public class Company implements Serializable {
     private String businessCode;
     private String address;
     /**
-     * 二级域名
+     * 企业logo
      */
-    private String domain;
+    private String logoUrl;
     protected Date createTime;
     protected long creatorId;
     protected Date updateTime;
@@ -53,12 +53,12 @@ public class Company implements Serializable {
         this.address = address;
     }
 
-    public String getDomain() {
-        return domain;
+    public String getLogoUrl() {
+        return logoUrl;
     }
 
-    public void setDomain(String domain) {
-        this.domain = domain;
+    public void setLogoUrl(String logoUrl) {
+        this.logoUrl = logoUrl;
     }
 
     public Long getId() {

+ 41 - 3
base-servers/account/account-server/src/main/java/com/usoftchina/saas/account/service/AccountService.java

@@ -1,14 +1,20 @@
 package com.usoftchina.saas.account.service;
 
-import com.usoftchina.saas.account.mapper.AccountMapper;
 import com.usoftchina.saas.account.po.Account;
-import com.usoftchina.saas.base.service.CommonBaseService;
 
 /**
  * @author yingp
  * @date 2018/10/2
  */
-public interface AccountService extends CommonBaseService<AccountMapper, Account> {
+public interface AccountService {
+    /**
+     * 保存
+     *
+     * @param account
+     * @return
+     */
+    boolean save(Account account);
+
     /**
      * 按用户名查找
      *
@@ -51,4 +57,36 @@ public interface AccountService extends CommonBaseService<AccountMapper, Account
      */
     String getEncryptedPassword(String plainPassword, String salt);
 
+    /**
+     * 绑定个人账号与公司
+     *
+     * @param accountId
+     * @param companyId
+     */
+    void bindCompany(Long accountId, Long companyId);
+
+    /**
+     * 解除个人账号与公司的绑定
+     *
+     * @param accountId
+     * @param companyId
+     */
+    void unbindCompany(Long accountId, Long companyId);
+
+    /**
+     * 绑定个人账号与角色
+     *
+     * @param accountId
+     * @param roleId
+     */
+    void bindRole(Long accountId, Long roleId);
+
+    /**
+     * 解除个人账号与角色的绑定
+     *
+     * @param accountId
+     * @param roleId
+     */
+    void unbindRole(Long accountId, Long roleId);
+
 }

+ 11 - 0
base-servers/account/account-server/src/main/java/com/usoftchina/saas/account/service/CompanyService.java

@@ -1,6 +1,9 @@
 package com.usoftchina.saas.account.service;
 
 import com.usoftchina.saas.account.po.Company;
+import com.usoftchina.saas.account.vo.CompanyBaseVO;
+
+import java.util.List;
 
 /**
  * @author yingp
@@ -38,4 +41,12 @@ public interface CompanyService {
      * @return
      */
     Company findByDomain(String domain);
+
+    /**
+     * 按个人账户查找全部绑定企业
+     *
+     * @param accountId
+     * @return
+     */
+    List<CompanyBaseVO> findBaseByAccountId(Long accountId);
 }

+ 42 - 5
base-servers/account/account-server/src/main/java/com/usoftchina/saas/account/service/impl/AccountServiceImpl.java

@@ -1,9 +1,11 @@
 package com.usoftchina.saas.account.service.impl;
 
+import com.usoftchina.saas.account.mapper.AccountCompanyMapper;
 import com.usoftchina.saas.account.mapper.AccountMapper;
+import com.usoftchina.saas.account.mapper.AccountRoleMapper;
 import com.usoftchina.saas.account.po.Account;
 import com.usoftchina.saas.account.service.AccountService;
-import com.usoftchina.saas.base.service.CommonBaseServiceImpl;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.util.DigestUtils;
 
@@ -12,20 +14,35 @@ import org.springframework.util.DigestUtils;
  * @date 2018/10/2
  */
 @Service
-public class AccountServiceImpl extends CommonBaseServiceImpl<AccountMapper, Account> implements AccountService {
+public class AccountServiceImpl implements AccountService {
+
+    @Autowired
+    private AccountMapper accountMapper;
+
+    @Autowired
+    private AccountCompanyMapper accountCompanyMapper;
+
+    @Autowired
+    private AccountRoleMapper accountRoleMapper;
+
+    @Override
+    public boolean save(Account account) {
+        return accountMapper.insert(account) > 0;
+    }
+
     @Override
     public Account findByUsername(String username) {
-        return getMapper().selectByUsername(username);
+        return accountMapper.selectByUsername(username);
     }
 
     @Override
     public Account findByMobile(String mobile) {
-        return getMapper().selectByMobile(mobile);
+        return accountMapper.selectByMobile(mobile);
     }
 
     @Override
     public Account findByEmail(String email) {
-        return getMapper().selectByEmail(email);
+        return accountMapper.selectByEmail(email);
     }
 
     @Override
@@ -44,4 +61,24 @@ public class AccountServiceImpl extends CommonBaseServiceImpl<AccountMapper, Acc
     public String getEncryptedPassword(String plainPassword, String salt) {
         return DigestUtils.md5DigestAsHex(String.format("%s{%s}", plainPassword, salt).getBytes());
     }
+
+    @Override
+    public void bindCompany(Long accountId, Long companyId) {
+        accountCompanyMapper.insert(accountId, companyId);
+    }
+
+    @Override
+    public void unbindCompany(Long accountId, Long companyId) {
+        accountCompanyMapper.delete(accountId, companyId);
+    }
+
+    @Override
+    public void bindRole(Long accountId, Long roleId) {
+        accountRoleMapper.insert(accountId, roleId);
+    }
+
+    @Override
+    public void unbindRole(Long accountId, Long roleId) {
+        accountRoleMapper.delete(accountId, roleId);
+    }
 }

+ 7 - 0
base-servers/account/account-server/src/main/java/com/usoftchina/saas/account/service/impl/CompanyServiceImpl.java

@@ -3,11 +3,13 @@ package com.usoftchina.saas.account.service.impl;
 import com.usoftchina.saas.account.mapper.CompanyMapper;
 import com.usoftchina.saas.account.po.Company;
 import com.usoftchina.saas.account.service.CompanyService;
+import com.usoftchina.saas.account.vo.CompanyBaseVO;
 import com.usoftchina.saas.context.BaseContextHolder;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
 import java.util.Date;
+import java.util.List;
 
 /**
  * @author yingp
@@ -44,4 +46,9 @@ public class CompanyServiceImpl implements CompanyService{
     public Company findByDomain(String domain) {
         return companyMapper.selectByDomain(domain);
     }
+
+    @Override
+    public List<CompanyBaseVO> findBaseByAccountId(Long accountId) {
+        return companyMapper.selectBaseByAccountId(accountId);
+    }
 }

+ 44 - 0
base-servers/account/account-server/src/main/java/com/usoftchina/saas/account/vo/CompanyBaseVO.java

@@ -0,0 +1,44 @@
+package com.usoftchina.saas.account.vo;
+
+/**
+ * @author yingp
+ * @date 2018/10/10
+ */
+public class CompanyBaseVO {
+    private Long id;
+    private String name;
+    private String logoUrl;
+
+    public Long getId() {
+        return id;
+    }
+
+    public void setId(Long id) {
+        this.id = id;
+    }
+
+    public String getName() {
+        return name;
+    }
+
+    public void setName(String name) {
+        this.name = name;
+    }
+
+    public String getLogoUrl() {
+        return logoUrl;
+    }
+
+    public void setLogoUrl(String logoUrl) {
+        this.logoUrl = logoUrl;
+    }
+
+    @Override
+    public String toString() {
+        return "CompanyBaseVO{" +
+                "id=" + id +
+                ", name='" + name + '\'' +
+                ", logoUrl='" + logoUrl + '\'' +
+                '}';
+    }
+}

+ 11 - 6
base-servers/account/account-server/src/main/resources/application.yml

@@ -6,11 +6,16 @@ spring:
       name: admin
       password: select111***
   datasource:
+    driver-class-name: com.mysql.jdbc.Driver
+    url: jdbc:mysql://192.168.253.12:3306/saas_account?characterEncoding=utf-8&useSSL=false
+    username: root
+    password: select111***
     hikari:
-      driver-class-name: com.mysql.cj.jdbc.Driver
-      jdbc-url: jdbc:mysql://192.168.253.12:3306/saas_account?characterEncoding=utf-8&useSSL=false
-      username: root
-      password: select111***
+      minimum-idle: 5
+      maximum-pool-size: 50
+      idle-timeout: 30000
+      max-lifetime: 1800000
+      connection-timeout: 30000
   messages:
     basename: i18n/messages
 eureka:
@@ -24,7 +29,7 @@ eureka:
   client:
     registryFetchIntervalSeconds: 5
     serviceUrl:
-      defaultZone: http://${spring.security.user.name}:${spring.security.user.password}@127.0.0.1:8500/eureka/
+      defaultZone: http://${spring.security.user.name}:${spring.security.user.password}@192.168.0.181:8500/eureka/
 server:
   port: 8580
   tomcat:
@@ -36,5 +41,5 @@ info:
   spring-boot-version: '@spring.boot.version@'
   spring-cloud-version: '@spring.cloud.version@'
 mybatis:
-  type-aliases-package: com.usoftchina.saas.account.po
+  type-aliases-package: com.usoftchina.saas.account.po,com.usoftchina.saas.account.vo
   mapper-locations: classpath:mapper/*.xml

+ 7 - 0
base-servers/account/account-server/src/main/resources/config/application-docker.yml

@@ -0,0 +1,7 @@
+eureka:
+  instance:
+    hostname: saas-account-server
+    prefer-ip-address: false
+  client:
+    serviceUrl:
+      defaultZone: http://${spring.security.user.name}:${spring.security.user.password}@saas-eureka-server:8500/eureka/

+ 10 - 0
base-servers/account/account-server/src/main/resources/mapper/AccountCompanyMapper.xml

@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
+<mapper namespace="com.usoftchina.saas.account.mapper.AccountCompanyMapper">
+    <insert id="insert">
+        insert into ac_account_company(account_id,company_id) values (#{accountId}, #{companyId})
+    </insert>
+    <delete id="delete">
+        delete from ac_account_company where account_id=#{accountId} and companyId=#{companyId}
+    </delete>
+</mapper>

+ 6 - 0
base-servers/account/account-server/src/main/resources/mapper/AccountRoleMapper.xml

@@ -1,4 +1,10 @@
 <?xml version="1.0" encoding="UTF-8" ?>
 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
 <mapper namespace="com.usoftchina.saas.account.mapper.AccountRoleMapper">
+    <insert id="insert">
+        insert into ac_account_role(account_id,role_id) values (#{accountId}, #{roleId})
+    </insert>
+    <delete id="delete">
+        delete from ac_account_role where account_id=#{accountId} and role_id=#{roleId}
+    </delete>
 </mapper>

+ 13 - 5
base-servers/account/account-server/src/main/resources/mapper/CompanyMapper.xml

@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="UTF-8" ?>
 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
 <mapper namespace="com.usoftchina.saas.account.mapper.CompanyMapper">
-    <resultMap id="BaseResultMap" type="com.usoftchina.saas.account.po.Company">
+    <resultMap id="FullResultMap" type="com.usoftchina.saas.account.po.Company">
         <id column="id" jdbcType="BIGINT" property="id"/>
         <result column="name" jdbcType="VARCHAR" property="name"/>
         <result column="business_code" jdbcType="VARCHAR" property="businessCode"/>
@@ -12,6 +12,11 @@
         <result column="updater_id" jdbcType="BIGINT" property="updaterId"/>
         <result column="update_time" jdbcType="TIMESTAMP" property="updateTime"/>
     </resultMap>
+    <resultMap id="BaseResultMap" type="com.usoftchina.saas.account.vo.CompanyBaseVO">
+        <id column="id" jdbcType="BIGINT" property="id"/>
+        <result column="name" jdbcType="VARCHAR" property="name"/>
+        <result column="logo_url" jdbcType="VARCHAR" property="logoUrl"/>
+    </resultMap>
     <sql id="baseColumns">
         id,name,business_code,address,domain,creator_id,create_time,updater_id,update_time
     </sql>
@@ -76,14 +81,17 @@
             </if>
         </trim>
     </insert>
-    <select id="selectByName" parameterType="java.lang.String" resultMap="BaseResultMap">
+    <select id="selectByName" parameterType="java.lang.String" resultMap="FullResultMap">
         select <include refid="baseColumns"/> from ac_company where name=#{name}
     </select>
-    <select id="selectByBusinessCode" parameterType="java.lang.String" resultMap="BaseResultMap">
+    <select id="selectByBusinessCode" parameterType="java.lang.String" resultMap="FullResultMap">
         select <include refid="baseColumns"/> from ac_company where business_code=#{businessCode}
     </select>
-    <select id="selectByDomain" parameterType="java.lang.String" resultMap="BaseResultMap">
+    <select id="selectByDomain" parameterType="java.lang.String" resultMap="FullResultMap">
         select <include refid="baseColumns"/> from ac_company where domain=#{domain}
     </select>
-
+    <select id="selectBaseByAccountId" parameterType="java.lang.Long" resultMap="BaseResultMap">
+        select ac_company.id,ac_company.name,ac_company.logo_url from ac_account_company,ac_company
+        where ac_account_company.company_id=ac_company.id and ac_account_company.account_id=#{accountId}
+    </select>
 </mapper>

+ 1 - 0
base-servers/account/account-server/src/main/resources/mapper/RoleMapper.xml

@@ -1,4 +1,5 @@
 <?xml version="1.0" encoding="UTF-8" ?>
 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
 <mapper namespace="com.usoftchina.saas.account.mapper.RoleMapper">
+
 </mapper>

+ 2 - 1
base-servers/auth/auth-server/src/main/java/com/usoftchina/saas/auth/controller/AuthController.java

@@ -41,7 +41,8 @@ public class AuthController {
         Result<AccountDTO> result = accountApi.validByUsernameAndPwd(username, password);
         if (result.isSuccess()) {
             AccountDTO accountDTO = result.getData();
-            JwtInfo info = new JwtInfo(accountDTO.getCompanyId(), accountDTO.getId(), accountDTO.getUsername());
+            // TODO
+            JwtInfo info = new JwtInfo(null, accountDTO.getId(), accountDTO.getUsername());
             TokenVO tokenVO = JwtHelper.generateToken(info, privateKeyPath, expire);
             TokenDTO tokenDTO = BeanMapper.map(tokenVO, TokenDTO.class);
             return Result.success(tokenDTO);

+ 2 - 0
base-servers/gateway-server/src/main/java/com/usoftchina/saas/gateway/GatewayApplication.java

@@ -4,6 +4,7 @@ import org.springframework.boot.SpringApplication;
 import org.springframework.boot.autoconfigure.SpringBootApplication;
 import org.springframework.cloud.netflix.eureka.EnableEurekaClient;
 import org.springframework.cloud.netflix.zuul.EnableZuulProxy;
+import org.springframework.cloud.openfeign.EnableFeignClients;
 
 /**
  * @author yingp
@@ -12,6 +13,7 @@ import org.springframework.cloud.netflix.zuul.EnableZuulProxy;
 @SpringBootApplication
 @EnableZuulProxy
 @EnableEurekaClient
+@EnableFeignClients(basePackages = "com.usoftchina.saas.auth.api")
 public class GatewayApplication {
     public static void main(String[] args) {
         SpringApplication.run(GatewayApplication.class, args);

+ 3 - 5
base-servers/gateway-server/src/main/java/com/usoftchina/saas/gateway/config/AuthConfig.java

@@ -1,6 +1,6 @@
 package com.usoftchina.saas.gateway.config;
 
-import org.springframework.beans.factory.annotation.Value;
+import org.springframework.boot.context.properties.ConfigurationProperties;
 
 import java.util.List;
 
@@ -8,12 +8,10 @@ import java.util.List;
  * @author yingp
  * @date 2018/10/2
  */
+@ConfigurationProperties("auth")
 public class AuthConfig {
-    @Value("${auth.public-key}")
     private String publicKey;
-    @Value("${auth.header:Authorization}")
-    private String authHeader;
-    @Value("${auth.ignore}")
+    private String authHeader = "Authorization";
     private List<String> ignores;
 
     public String getPublicKey() {

+ 18 - 0
base-servers/gateway-server/src/main/java/com/usoftchina/saas/gateway/config/SecurityConfig.java

@@ -0,0 +1,18 @@
+package com.usoftchina.saas.gateway.config;
+
+import org.springframework.security.config.annotation.web.builders.WebSecurity;
+import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity;
+import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter;
+
+/**
+ * @author yingp
+ * @date 2018/10/10
+ */
+@EnableWebSecurity
+public class SecurityConfig extends WebSecurityConfigurerAdapter {
+
+    @Override
+    public void configure(WebSecurity web) throws Exception {
+        web.ignoring().antMatchers("/api/**");
+    }
+}

+ 2 - 5
base-servers/gateway-server/src/main/java/com/usoftchina/saas/gateway/config/ZuulConfig.java

@@ -1,5 +1,6 @@
 package com.usoftchina.saas.gateway.config;
 
+import org.springframework.boot.context.properties.EnableConfigurationProperties;
 import org.springframework.context.annotation.Bean;
 import org.springframework.context.annotation.Configuration;
 import org.springframework.web.cors.CorsConfiguration;
@@ -11,6 +12,7 @@ import org.springframework.web.filter.CorsFilter;
  * @date 2018/9/30
  */
 @Configuration
+@EnableConfigurationProperties(AuthConfig.class)
 public class ZuulConfig {
 
     @Bean
@@ -38,11 +40,6 @@ public class ZuulConfig {
         return new CorsFilter(source);
     }
 
-    @Bean
-    public AuthConfig authConfig() {
-        return new AuthConfig();
-    }
-
     @Bean
     public AccessFilter accessFilter() {
         return new AccessFilter();

+ 54 - 6
base-servers/gateway-server/src/main/resources/application.yml

@@ -1,14 +1,14 @@
 spring:
   application:
     name: gateway-server
-  security:
-    user:
-      name: admin
-      password: select111***
   servlet:
     multipart:
       max-file-size: 2000Mb
       max-request-size: 2500Mb
+  security:
+    user:
+      name: admin
+      password: select111***
   rabbitmq:
     host: 192.168.0.176
     port: 5672
@@ -36,7 +36,53 @@ eureka:
   client:
     registryFetchIntervalSeconds: 5
     serviceUrl:
-      defaultZone: http://${spring.security.user.name}:${spring.security.user.password}@127.0.0.1:8500/eureka/
+      defaultZone: http://${spring.security.user.name}:${spring.security.user.password}@192.168.0.181:8500/eureka/
+feign:
+  compression:
+    request:
+      enabled: true
+      mime-types: text/xml,application/xml,application/json
+      min-request-size: 2048
+    response:
+      enabled: true
+zuul:
+  ignored-services: "*"   # 忽略eureka上的所有服务
+  sensitive-headers:      # 一些比较敏感的请求头,不想通过zuul传递过去, 可以通过该属性进行设置
+  prefix: /api            # 公共的前缀
+  routes:  # 路由配置
+    ui:
+      path: /ui/**
+      serviceId: ui-server
+    account:
+      path: /account/**
+      serviceId: account-server
+    auth:
+      path: /auth/**
+      serviceId: auth-server
+    file:
+      path: /file/**
+      serviceId: file-server
+    mail:
+      path: /mail/**
+      serviceId: mail-server
+    sms:
+      path: /sms/**
+      serviceId: sms-server
+    purchase:
+      path: /purchase/**
+      serviceId: purchase-server
+    sale:
+      path: /sale/**
+      serviceId: sale-server
+    storage:
+      path: /storage/**
+      serviceId: storage-server
+    document:
+      path: /document/**
+      serviceId: document-server
+    money:
+      path: /money/**
+      serviceId: money-server                       
 info:
   name: '@project.artifactId@'
   description: '@project.description@'
@@ -45,5 +91,7 @@ info:
   spring-cloud-version: '@spring.cloud.version@'
 auth:
   public-key: auth/pub.key
-  ignore:
+  ignores:
     - /api/auth
+    # 忽略全部
+    - /

+ 4 - 0
base-servers/gateway-server/src/main/resources/config/application-docker.yml

@@ -0,0 +1,4 @@
+eureka:
+  client:
+    serviceUrl:
+      defaultZone: http://${spring.security.user.name}:${spring.security.user.password}@saas-eureka-server:8500/eureka/

+ 1 - 1
base-servers/ui-server/src/main/java/com/usoftchina/saas/ui/controller/ViewController.java

@@ -13,7 +13,7 @@ import org.springframework.web.bind.annotation.RestController;
  * @date 2018/10/10
  */
 @RestController
-@RequestMapping("/api/ui/view")
+@RequestMapping("/view")
 public class ViewController {
 
     @Autowired

+ 1 - 1
base-servers/ui-server/src/main/java/com/usoftchina/saas/ui/controller/co/CoViewController.java

@@ -14,7 +14,7 @@ import org.springframework.web.bind.annotation.RestController;
  * @date 2018/10/10
  */
 @RestController
-@RequestMapping("/api/ui/co_view")
+@RequestMapping("/co_view")
 public class CoViewController {
     @Autowired
     private CoViewService coViewService;

+ 3 - 0
base-servers/ui-server/src/main/resources/config/application-docker.yml

@@ -1,4 +1,7 @@
 eureka:
+  instance:
+    hostname: saas-ui-server
+    prefer-ip-address: false
   client:
     serviceUrl:
       defaultZone: http://${spring.security.user.name}:${spring.security.user.password}@saas-eureka-server:8500/eureka/

+ 24 - 0
framework/core/src/main/java/com/usoftchina/saas/utils/BeanMapper.java

@@ -1,6 +1,11 @@
 package com.usoftchina.saas.utils;
 
 import org.springframework.beans.BeanUtils;
+import org.springframework.util.CollectionUtils;
+
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.List;
 
 /**
  * @author yingp
@@ -26,4 +31,23 @@ public class BeanMapper {
             return null;
         }
     }
+
+    /**
+     * 集合对象属性复制
+     *
+     * @param source
+     * @param targetCls
+     * @param <T>
+     * @return
+     */
+    public static <T> List<T> mapList(Collection source, Class<T> targetCls) {
+        if (!CollectionUtils.isEmpty(source)) {
+            List<T> targets = new ArrayList<>(source.size());
+            source.forEach(s -> {
+                targets.add(map(s, targetCls));
+            });
+            return targets;
+        }
+        return null;
+    }
 }

+ 37 - 0
framework/core/src/main/java/com/usoftchina/saas/utils/ListUtils.java

@@ -0,0 +1,37 @@
+package com.usoftchina.saas.utils;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.function.Function;
+
+/**
+ * @author yingp
+ * @date 2018/10/10
+ */
+public class ListUtils {
+    /**
+     * 按指定方法,将list分组返回map
+     *
+     * @param sources
+     * @param keyGetter
+     * @param <K>
+     * @param <V>
+     * @return
+     */
+    public static <K, V> Map<K, List<V>> groupBy(List<V> sources, Function<V, K> keyGetter) {
+        Map<K, List<V>> map = new HashMap<>(1);
+        sources.forEach(source -> {
+            K key = keyGetter.apply(source);
+            if (map.containsKey(key)) {
+                map.get(key).add(source);
+            } else {
+                List<V> childList = new ArrayList<>();
+                childList.add(source);
+                map.put(key, childList);
+            }
+        });
+        return map;
+    }
+}

+ 3 - 1
frontend/saas-web/app.json

@@ -17,8 +17,10 @@
      */
     "requires": [
         "font-awesome",
-        "ux"
+        "ux",
+        "modern-locale"
     ],
+    "locale":"zh_CN",
 
     /**
      * The relative path to the application's markup file (html, jsp, asp, etc.).

+ 3 - 3
frontend/saas-web/app/view/core/grid/DbfindGridPanel.js → frontend/saas-web/app/view/core/dbfind/DbfindGridPanel.js

@@ -1,6 +1,6 @@
-Ext.define('saas.view.core.grid.DbfindGridPanel', {
+Ext.define('saas.view.core.dbfind.DbfindGridPanel', {
     extend: 'saas.view.core.grid.GridPanel',
-    xtype: 'core-dbfindgridpanel',
+    xtype: 'dbfindgridpanel',
 
     GridUtil: Ext.create('saas.util.GridUtil'),
 
@@ -17,7 +17,7 @@ Ext.define('saas.view.core.grid.DbfindGridPanel', {
         itemClick: function(view,record) {
             var me = this;
             var dbfinds = me.dbfinds;
-            if(dbfinds.length>0){
+            if(dbfinds&&dbfinds.length>0){
                 for (let index = 0; index < dbfinds.length; index++) {
                     var item = dbfinds[index];
                     var field = me.ownerCt.belong.down('[name='+item.to+']');

+ 2 - 2
frontend/saas-web/app/view/core/form/DbfindTrigger.js → frontend/saas-web/app/view/core/dbfind/DbfindTrigger.js

@@ -1,4 +1,4 @@
-Ext.define('saas.view.core.form.DbfindTrigger', {
+Ext.define('saas.view.core.dbfind.DbfindTrigger', {
     extend: 'Ext.form.ComboBox',
     xtype: 'dbfindtrigger',
     queryMode: 'local',
@@ -39,7 +39,7 @@ Ext.define('saas.view.core.form.DbfindTrigger', {
             layout:'fit',
             renderTo:f.ownerCt.getEl(),
             items:[{
-                xtype:'core-dbfindgridpanel',
+                xtype:'dbfindgridpanel',
                 configUrl: f.configUrl,
                 dataUrl: f.dataUrl,
                 dbfinds: f.dbfinds

+ 12 - 11
frontend/saas-web/app/view/purchase/panel/FormPanelController.js

@@ -3,17 +3,18 @@ Ext.define('saas.view.purchase.panel.FormPanelController', {
     alias: 'controller.purchase-panel-FormPanelController',
 
     control: {
-        // '#pu_code':{
-        //     beforerender:function(f){
-        //         Ext.configIf(f,{
-        //             dbfinds:[
-        //                 {from:'ve_code',to:'pu_vendcode'},
-        //                 {from:'ve_name',to:'pu_vendname'}],
-        //             fields:[],
-        //             url:
-        //         }) ;   
+        //放大镜赋值关系
+        'dbfindtrigger[name=pu_vendorcode]':{
+            beforerender:function(f){
+                Ext.apply(f,{
+                    dbfinds:[{
+                        from:'pu_vendorcode',to:'pu_vendorcode'
+                    },{
+                        from:'pu_vendorname',to:'pu_vendorname'
+                    }]
+                }) ;   
 
-        //     }
-        // }
+            }
+        }
     },
 });

+ 13 - 1
frontend/saas-web/app/view/test/order/FormController.js

@@ -10,8 +10,20 @@ Ext.define('saas.view.test.order.FormController', {
                     f.addHandler=me.addCombo;
 
                 }
-            }
+            },
+            //放大镜赋值关系
+            'dbfindtrigger[name=pu_vendorcode]':{
+                beforerender:function(f){
+                    Ext.apply(f,{
+                        dbfinds:[{
+                            from:'pu_vendorcode',to:'pu_vendorcode'
+                        },{
+                            from:'pu_vendorname',to:'pu_vendorname'
+                        }]
+                    }) ;   
 
+                }
+            }
         });
 
     },

+ 1 - 0
frontend/saas-web/ext/packages/modern-locale/.gitignore

@@ -0,0 +1 @@
+/.idea

+ 32 - 0
frontend/saas-web/ext/packages/modern-locale/README.md

@@ -0,0 +1,32 @@
+# modern-locale
+
+The missing locale package for Ext JS modern toolkit
+
+
+## Getting started
+
+- Put the modern-locale package dir inside the packages/local folder
+- add it in your app.json  requires config option and especify the app locale
+
+        "requires": [
+            "font-awesome",
+            "modern-locale"
+          ],
+        "locale": "pt_BR",
+
+- Refresh your app running this command
+
+        sencha app refresh
+
+### Authors and contributors
+
+* Wemerson Januario (wemerson.januario@gmail.com) (pt_BR)
+* Zoltan Lippai (zoli@lippai.net) (hu_HU)
+* Martín Panizzo (martin17@gmail.com) (es_AR)
+* lovelyelfpop (479858761@qq.com) (zh_CN)
+* Jens Pliester (de_DE)
+
+
+### Contribute
+
+Feel free and contribute to this project by adding more localization and improvements

+ 141 - 0
frontend/saas-web/ext/packages/modern-locale/build.xml

@@ -0,0 +1,141 @@
+<?xml version="1.0" encoding="utf-8"?>
+<project name="modern-locale" default=".help">
+    <!--
+    The build-impl.xml file imported here contains the guts of the build process. It is
+    a great idea to read that file to understand how the process works, but it is best to
+    limit your changes to this file.
+    -->
+    <script language="javascript">
+        <![CDATA[
+            var dir = project.getProperty("basedir"),
+                cmdDir = project.getProperty("cmd.dir"),
+                cmdLoaded = project.getReference("senchaloader");
+            
+            if (!cmdLoaded) {
+                function echo(message, file) {
+                    var e = project.createTask("echo");
+                    e.setMessage(message);
+                    if (file) {
+                        e.setFile(file);
+                    }
+                    e.execute();
+                };
+
+                if (!cmdDir) {
+                    
+                    function exec(args) {
+                        var process = java.lang.Runtime.getRuntime().exec(args),
+                            input = new java.io.BufferedReader(new java.io.InputStreamReader(process.getInputStream())),
+                            headerFound = false,
+                            line;
+
+                        while (line = input.readLine()) {
+                            line = line + '';
+                            java.lang.System.out.println(line);
+                            if (line.indexOf("Sencha Cmd") > -1) {
+                                headerFound = true;
+                            }
+                            else if (headerFound && !cmdDir) {
+                                cmdDir = line;
+                                project.setProperty("cmd.dir", cmdDir);
+                            }
+                        }
+                        process.waitFor();
+                        return !!cmdDir;
+                    }
+                    
+                    if (!exec(["sencha", "which"])) {
+                        var tmpFile = "tmp.sh";
+                        echo("source ~/.bash_profile; sencha " + whichArgs.join(" "), tmpFile);
+                        exec(["/bin/sh", tmpFile]);
+                        new java.io.File(tmpFile)['delete'](); 
+                    }
+                }
+            }
+            
+            if (cmdDir && !project.getTargets().containsKey("init-cmd")) {
+                var importTask = project.createTask("import");
+                importTask.setOwningTarget(self.getOwningTarget());
+                importTask.setLocation(self.getLocation());
+                importTask.setFile(cmdDir + "/ant/build/package/build-impl.xml");
+                importTask.execute();
+            }
+        ]]>
+    </script>
+    <import file="${basedir}/.sencha/test/test-impl.xml"/>
+
+    <!--
+    The following targets can be provided to inject logic before and/or after key steps
+    of the build process:
+
+        The "init-local" target is used to initialize properties that may be personalized
+        for the local machine.
+
+            <target name="-before-init-local"/>
+            <target name="-after-init-local"/>
+
+        The "clean" target is used to clean build output from the build.dir.
+
+            <target name="-before-clean"/>
+            <target name="-after-clean"/>
+
+        The general "init" target is used to initialize all other properties, including
+        those provided by Sencha Cmd.
+
+            <target name="-before-init"/>
+            <target name="-after-init"/>
+        
+        The "build" target performs the call to Sencha Cmd to build the application.
+
+            <target name="-before-build"/>
+            <target name="-after-build"/>
+    -->
+
+    <target name="build" depends="init,build-all"/>
+
+    <target name="build-all" depends="init,-build-all,pkg"/>
+    
+    <target name="-build-all">
+        
+        <for param="build.locale.dir">
+            <dirset dir="${package.dir}/overrides" includes="*"/>
+            <sequential>
+                <local name="build.locale"/>
+                
+                <basename file="@{build.locale.dir}" 
+                          property="build.locale"/>
+                
+                <echo>Building locale ${build.locale}</echo>
+
+                <concat encoding="UTF-8" outputencoding="UTF-8" destfile="${build.dir}/${package.name}-${build.locale}-debug.js">
+                    <fileset dir="@{build.locale.dir}" includes="**/*.js"/>
+                    <filterchain>
+                        <deletecharacters chars="&#xFEFF;" />
+                    </filterchain>
+                </concat>
+
+                <x-compress-js srcfile="${build.dir}/${package.name}-${build.locale}-debug.js"
+                               outfile="${build.dir}/${package.name}-${build.locale}.js"/>
+
+                <!--
+                <ant antfile="${package.dir}/build.xml"
+                     inheritall="false"
+                     target="js"
+                     useNativeBasedir="true"
+                     inheritrefs="true">
+                    <property name="package.framework" value="ext"/>
+                    <property name="cmd.dir" value="${cmd.dir}"/>
+                    <property name="compiler.ref.id" 
+                              value="${compiler.ref.id}-${build.locale}"/>
+                    <property name="package.locale" value="${build.locale}"/>
+                    <property name="build.name.prefix" value="${package.name}-${build.locale}"/>
+                    <property name="build.name.css.prefix" value="${package.name}-${build.locale}"/>
+                </ant>
+                -->
+
+            </sequential>
+        </for>
+
+    </target>
+
+</project>

+ 2 - 0
frontend/saas-web/ext/packages/modern-locale/index.js

@@ -0,0 +1,2 @@
+// This file was intentionally left blank.
+// This file is used by require.resolve to property locate this module.

+ 4 - 0
frontend/saas-web/ext/packages/modern-locale/overrides/de_DE/Component.js

@@ -0,0 +1,4 @@
+// This is needed until we can refactor all of the locales into individual files
+Ext.define("Ext.locale.de_DE.Component", {
+    override: "Ext.Component"
+});

+ 49 - 0
frontend/saas-web/ext/packages/modern-locale/overrides/de_DE/Panel.js

@@ -0,0 +1,49 @@
+/**
+ * German/Germany Translation by Jens Pliester <jens.pliester@eyeworkers.de>
+ * 19 December 2017
+ */
+Ext.define('Ext.locale.de_DE.Panel', {
+    override: 'Ext.Panel',
+
+    config: {
+        standardButtons: {
+            ok: {
+                text: 'OK'
+            },
+            abort: {
+                text: 'Abbrechen'
+            },
+            retry: {
+                text: 'Wiederholen'
+            },
+            ignore: {
+                text: 'Ignorieren'
+            },
+            yes: {
+                text: 'Ja'
+            },
+            no: {
+                text: 'Nein'
+            },
+            cancel: {
+                text: 'Abbrechen'
+            },
+            apply: {
+                text: 'Anwenden'
+            },
+            save: {
+                text: 'Speichern'
+            },
+            submit: {
+                text: 'Absenden'
+            },
+            help: {
+                text: 'Hilfe'
+            },
+            close: {
+                text: 'Schließen'
+            }
+        },
+        closeToolText: 'Schließen'
+    }
+});

+ 14 - 0
frontend/saas-web/ext/packages/modern-locale/overrides/de_DE/data/validator/Bound.js

@@ -0,0 +1,14 @@
+/**
+ * German/Germany Translation by Jens Pliester <jens.pliester@eyeworkers.de>
+ * 19 December 2017
+ */
+Ext.define('Ext.locale.de_DE.data.validator.Bound', {
+    override: 'Ext.data.validator.Bound',
+
+    config: {
+        emptyMessage: 'Muss vorhanden sein',
+        minOnlyMessage: 'Wert muss größer sein als {0}',
+        maxOnlyMessage: 'Wert muss kleiner sein als {0}',
+        bothMessage: 'Wert muss zwischen {0} und {1} sein'
+    }
+});

+ 9 - 0
frontend/saas-web/ext/packages/modern-locale/overrides/de_DE/data/validator/CIDRv4.js

@@ -0,0 +1,9 @@
+/**
+ * German/Germany Translation by Jens Pliester <jens.pliester@eyeworkers.de>
+ * 19 December 2017
+ */
+Ext.define('Ext.locale.de_DE.data.validator.CIDRv4', {
+    override: 'Ext.data.validator.CIDRv4',
+
+    message: 'Ist keine gültige CIDR Angabe'
+});

+ 9 - 0
frontend/saas-web/ext/packages/modern-locale/overrides/de_DE/data/validator/CIDRv6.js

@@ -0,0 +1,9 @@
+/**
+ * German/Germany Translation by Jens Pliester <jens.pliester@eyeworkers.de>
+ * 19 December 2017
+ */
+Ext.define('Ext.locale.de_DE.data.validator.CIDRv6', {
+    override: 'Ext.data.validator.CIDRv6',
+
+    message: 'Ist keine gültige CIDR Angabe'
+});

+ 10 - 0
frontend/saas-web/ext/packages/modern-locale/overrides/de_DE/data/validator/Currency.js

@@ -0,0 +1,10 @@
+/**
+ * German/Germany Translation by Jens Pliester <jens.pliester@eyeworkers.de>
+ * 19 December 2017
+ */
+Ext.define('Ext.locale.de_DE.data.validator.Currency', {
+    override: 'Ext.data.validator.Currency',
+
+    message: 'Ist keine gültiger Währungsbetrag'
+
+});

+ 9 - 0
frontend/saas-web/ext/packages/modern-locale/overrides/de_DE/data/validator/DateTime.js

@@ -0,0 +1,9 @@
+/**
+ * German/Germany Translation by Jens Pliester <jens.pliester@eyeworkers.de>
+ * 19 December 2017
+ */
+Ext.define('Ext.locale.de_DE.data.validator.DateTime', {
+    override: 'Ext.data.validator.DateTime',
+
+    message: 'Ist keine gültige Datum und Zeitangabe'
+});

+ 9 - 0
frontend/saas-web/ext/packages/modern-locale/overrides/de_DE/data/validator/Email.js

@@ -0,0 +1,9 @@
+/**
+ * German/Germany Translation by Jens Pliester <jens.pliester@eyeworkers.de>
+ * 19 December 2017
+ */
+Ext.define('Ext.locale.de_DE.data.validator.Email', {
+    override: 'Ext.data.validator.Email',
+
+    message: 'Ist keine gültige E-Mail Adresse'
+});

+ 9 - 0
frontend/saas-web/ext/packages/modern-locale/overrides/de_DE/data/validator/Exclusion.js

@@ -0,0 +1,9 @@
+/**
+ * German/Germany Translation by Jens Pliester <jens.pliester@eyeworkers.de>
+ * 19 December 2017
+ */
+Ext.define('Ext.locale.de_DE.data.validator.Exclusion', {
+    override: 'Ext.data.validator.Exclusion',
+
+    message: 'Ist ein Wert, der ausgeschlossen wurde'
+});

+ 11 - 0
frontend/saas-web/ext/packages/modern-locale/overrides/de_DE/data/validator/Format.js

@@ -0,0 +1,11 @@
+/**
+ * German/Germany Translation by Jens Pliester <jens.pliester@eyeworkers.de>
+ * 19 December 2017
+ */
+Ext.define('Ext.locale.de_DE.data.validator.Format', {
+    override: 'Ext.data.validator.Format',
+
+    config:{
+        message: 'Ist in einem ungültigen Format'
+    }
+});

+ 9 - 0
frontend/saas-web/ext/packages/modern-locale/overrides/de_DE/data/validator/IPAddress.js

@@ -0,0 +1,9 @@
+/**
+ * German/Germany Translation by Jens Pliester <jens.pliester@eyeworkers.de>
+ * 19 December 2017
+ */
+Ext.define('Ext.locale.de_DE.data.validator.IPAddress', {
+    override: 'Ext.data.validator.IPAddress',
+
+    message: 'Ist keine gültige IP Adresse'
+});

+ 9 - 0
frontend/saas-web/ext/packages/modern-locale/overrides/de_DE/data/validator/Inclusion.js

@@ -0,0 +1,9 @@
+/**
+ * German/Germany Translation by Jens Pliester <jens.pliester@eyeworkers.de>
+ * 19 December 2017
+ */
+Ext.define('Ext.locale.de_DE.data.validator.Inclusion', {
+    override: 'Ext.data.validator.Inclusion',
+
+    message: 'Ist nicht in der Liste aktzeptierter Werte'
+});

+ 11 - 0
frontend/saas-web/ext/packages/modern-locale/overrides/de_DE/data/validator/Length.js

@@ -0,0 +1,11 @@
+/**
+ * German/Germany Translation by Jens Pliester <jens.pliester@eyeworkers.de>
+ * 19 December 2017
+ */
+Ext.define('Ext.locale.de_DE.data.validator.Length', {
+    override: 'Ext.data.validator.Length',
+
+    minOnlyMessage: 'Länge muss mindestens {0} sein',
+    maxOnlyMessage: 'Länge darf nicht größer als {0} sein',
+    bothMessage: 'Länge muss zwischen {0} und {1} sein'
+});

+ 11 - 0
frontend/saas-web/ext/packages/modern-locale/overrides/de_DE/data/validator/Number.js

@@ -0,0 +1,11 @@
+/**
+ * German/Germany Translation by Jens Pliester <jens.pliester@eyeworkers.de>
+ * 19 December 2017
+ */
+Ext.define('Ext.locale.de_DE.data.validator.Number', {
+    override: 'Ext.data.validator.Number',
+
+    config:{
+        message: 'Ist keine gültige Zahl'
+    }
+});

+ 9 - 0
frontend/saas-web/ext/packages/modern-locale/overrides/de_DE/data/validator/Phone.js

@@ -0,0 +1,9 @@
+/**
+ * German/Germany Translation by Jens Pliester <jens.pliester@eyeworkers.de>
+ * 19 December 2017
+ */
+Ext.define('Ext.locale.de_DE.data.validator.Phone', {
+    override: 'Ext.data.validator.Phone',
+
+    message: 'Ist keine gültige Telefonnummer'
+});

+ 11 - 0
frontend/saas-web/ext/packages/modern-locale/overrides/de_DE/data/validator/Presence.js

@@ -0,0 +1,11 @@
+/**
+ * German/Germany Translation by Jens Pliester <jens.pliester@eyeworkers.de>
+ * 19 December 2017
+ */
+Ext.define('Ext.locale.de_DE.data.validator.Presence', {
+    override: 'Ext.data.validator.Presence',
+
+    config: {
+        message: 'Muss vorhanden sein'
+    }
+});

+ 14 - 0
frontend/saas-web/ext/packages/modern-locale/overrides/de_DE/data/validator/Range.js

@@ -0,0 +1,14 @@
+/**
+ * German/Germany Translation by Jens Pliester <jens.pliester@eyeworkers.de>
+ * 19 December 2017
+ */
+Ext.define('Ext.locale.de_DE.data.validator.Range', {
+    override: 'Ext.data.validator.Range',
+
+    minOnlyMessage: 'Muss mindestens {0} sein',
+    maxOnlyMessage: 'Darf nicht größer als {0} sein',
+    bothMessage: 'Muss zwischen {0} und {1} sein',
+    config: {
+        nanMessage: 'Muss numerisch sein'
+    }
+});

+ 9 - 0
frontend/saas-web/ext/packages/modern-locale/overrides/de_DE/data/validator/Time.js

@@ -0,0 +1,9 @@
+/**
+ * German/Germany Translation by Jens Pliester <jens.pliester@eyeworkers.de>
+ * 19 December 2017
+ */
+Ext.define('Ext.locale.de_DE.data.validator.Time', {
+    override: 'Ext.data.validator.Time',
+
+    message: 'Ist keine gültige Zeitangabe'
+});

+ 9 - 0
frontend/saas-web/ext/packages/modern-locale/overrides/de_DE/data/validator/Url.js

@@ -0,0 +1,9 @@
+/**
+ * German/Germany Translation by Jens Pliester <jens.pliester@eyeworkers.de>
+ * 19 December 2017
+ */
+Ext.define('Ext.locale.de_DE.data.validator.Url', {
+    override: 'Ext.data.validator.Url',
+
+    message: 'Ist keine gültige URL'
+});

+ 11 - 0
frontend/saas-web/ext/packages/modern-locale/overrides/de_DE/dataview/Abstract.js

@@ -0,0 +1,11 @@
+/**
+ * German/Germany Translation by Jens Pliester <jens.pliester@eyeworkers.de>
+ * 19 December 2017
+ */
+Ext.define('Ext.locale.de_DE.dataview.Abstract', {
+    override: 'Ext.dataview.Abstract',
+
+    config: {
+        loadingText: 'Wird geladen...'
+    }
+});

+ 11 - 0
frontend/saas-web/ext/packages/modern-locale/overrides/de_DE/dataview/EmptyText.js

@@ -0,0 +1,11 @@
+/**
+ * German/Germany Translation by Jens Pliester <jens.pliester@eyeworkers.de>
+ * 19 December 2017
+ */
+Ext.define('Ext.locale.de_DE.dataview.EmptyText', {
+    override: 'Ext.dataview.EmptyText',
+
+    config: {
+        html: 'Keine Daten zum Anzeigen'
+    }
+});

+ 11 - 0
frontend/saas-web/ext/packages/modern-locale/overrides/de_DE/dataview/List.js

@@ -0,0 +1,11 @@
+/**
+ * German/Germany Translation by Jens Pliester <jens.pliester@eyeworkers.de>
+ * 19 December 2017
+ */
+Ext.define('Ext.locale.de_DE.dataview.List', {
+    override: 'Ext.dataview.List',
+
+    config: {
+        loadingText: 'Wird geladen...'
+    }
+});

+ 12 - 0
frontend/saas-web/ext/packages/modern-locale/overrides/de_DE/dataview/plugin/ListPaging.js

@@ -0,0 +1,12 @@
+/**
+ * German/Germany Translation by Jens Pliester <jens.pliester@eyeworkers.de>
+ * 19 December 2017
+ */
+Ext.define('Ext.locale.de_DE.dataview.plugin.ListPaging', {
+    override: 'Ext.dataview.plugin.ListPaging',
+
+    config: {
+        loadMoreText: 'Mehr laden...',
+        noMoreRecordsText: 'Keine weiteren Datensätze'
+    }
+});

+ 47 - 0
frontend/saas-web/ext/packages/modern-locale/overrides/de_DE/ext-locale-de_DE.js

@@ -0,0 +1,47 @@
+/**
+ * German/Germany Translation by Jens Pliester <jens.pliester@eyeworkers.de>
+ * 19 December 2017
+ */
+Ext.onReady(function() {
+
+    if (Ext.Date) {
+        Ext.Date.monthNames = ["Januar", "Februar", "März", "April", "Mai", "Juni", "Juli", "August", "September", "Oktober", "November", "Dezember"];
+
+        Ext.Date.getShortMonthName = function(month) {
+            return Ext.Date.monthNames[month].substring(0, 3);
+        };
+
+        Ext.Date.monthNumbers = {
+            "Jan": 0,
+            "Feb": 1,
+            "Mär": 2,
+            "Apr": 3,
+            "Mai": 4,
+            "Jun": 5,
+            "Jul": 6,
+            "Aug": 7,
+            "Sep": 8,
+            "Okt": 9,
+            "Nov": 10,
+            "Dez": 11
+        };
+
+        Ext.Date.getMonthNumber = function(name) {
+            return Ext.Date.monthNumbers[name.substring(0, 1).toUpperCase() + name.substring(1, 3).toLowerCase()];
+        };
+
+        Ext.Date.dayNames = ["Sonntag", "Montag", "Dienstag", "Mittwoch", "Donnerstag", "Freitag", "Samstag"];
+    }
+
+    if (Ext.util && Ext.util.Format) {
+        Ext.apply(Ext.util.Format, {
+            thousandSeparator: '.',
+            decimalSeparator: ',',
+            currencySign: '€', // euro
+            currencySpacer: ' ',
+            currentcyAtEnd: true,
+            dateFormat: 'd. m. Y'
+        });
+        Ext.util.Format.deMoney = Ext.util.Format.currency;
+    }
+});

+ 10 - 0
frontend/saas-web/ext/packages/modern-locale/overrides/de_DE/field/Date.js

@@ -0,0 +1,10 @@
+/**
+ * German/Germany Translation by Jens Pliester <jens.pliester@eyeworkers.de>
+ * 19 December 2017
+ */
+Ext.define('Ext.locale.de_DE.field.Date', {
+    override: 'Ext.field.Date',
+
+    minDateMessage: 'Das Datum in diesem Feld muss gleich oder nach {0} sein',
+    maxDateMessage: 'Das Datum in diesem Feld muss gleich oder vor {0} sein'
+});

+ 12 - 0
frontend/saas-web/ext/packages/modern-locale/overrides/de_DE/field/Field.js

@@ -0,0 +1,12 @@
+/**
+ * German/Germany Translation by Jens Pliester <jens.pliester@eyeworkers.de>
+ * 19 December 2017
+ */
+Ext.define('Ext.locale.de_DE.field.Field', {
+    override: 'Ext.field.Field',
+
+    config: {
+        requiredMessage: 'Dieses Feld ist eine Pflichtangabe',
+        validationMessage: 'Ist im falschen Format'
+    }
+});

+ 14 - 0
frontend/saas-web/ext/packages/modern-locale/overrides/de_DE/field/Number.js

@@ -0,0 +1,14 @@
+/**
+ * German/Germany Translation by Jens Pliester <jens.pliester@eyeworkers.de>
+ * 19 December 2017
+ */
+Ext.define('Ext.locale.de_DE.field.Number', {
+    override: 'Ext.field.Number',
+
+    config: {
+        decimalsText: 'Die maximalen Nachkommastellen sind {0}'
+    },
+    minValueText: 'Der Minimalwert für dieses Feld ist {0}',
+    maxValueText: 'Der Maximalwert für dieses Feld ist {0}',
+    badFormatMessage: 'Wert passt nicht zum benötigten Format'
+});

+ 13 - 0
frontend/saas-web/ext/packages/modern-locale/overrides/de_DE/field/Text.js

@@ -0,0 +1,13 @@
+/**
+ * German/Germany Translation by Jens Pliester <jens.pliester@eyeworkers.de>
+ * 19 December 2017
+ */
+Ext.define('Ext.locale.de_DE.field.Text', {
+    override: 'Ext.field.Text',
+
+    config: {
+        badFormatMessage: 'Wert passt nicht zum benötigten Format',
+        requiredMessage: 'Dieses Feld ist eine Pflichtangabe',
+        validationMessage: 'Ist im falschen Format'
+    }
+});

+ 12 - 0
frontend/saas-web/ext/packages/modern-locale/overrides/de_DE/panel/Collapser.js

@@ -0,0 +1,12 @@
+/**
+ * German/Germany Translation by Jens Pliester <jens.pliester@eyeworkers.de>
+ * 19 December 2017
+ */
+Ext.define('Ext.locale.de_DE.panel.Collapser', {
+    override: 'Ext.panel.Collapser',
+
+    config:{
+        collapseToolText: "Ansicht einklappen",
+        expandToolText: "Ansicht ausklappen"
+    }
+});

+ 12 - 0
frontend/saas-web/ext/packages/modern-locale/overrides/de_DE/panel/Date.js

@@ -0,0 +1,12 @@
+/**
+ * German/Germany Translation by Jens Pliester <jens.pliester@eyeworkers.de>
+ * 19 December 2017
+ */
+Ext.define('Ext.locale.de_DE.panel.Date', {
+    override: 'Ext.panel.Date',
+
+    config: {
+        nextText: 'Nächster Monat (STRG+Rechts)',
+        prevText: 'Vorheriger Monat (STRG+Links)'
+    }
+});

+ 14 - 0
frontend/saas-web/ext/packages/modern-locale/overrides/de_DE/picker/Date.js

@@ -0,0 +1,14 @@
+/**
+ * German/Germany Translation by Jens Pliester <jens.pliester@eyeworkers.de>
+ * 19 December 2017
+ */
+Ext.define('Ext.locale.de_DE.picker.Date', {
+    override: 'Ext.picker.Date',
+
+    config: {
+        doneButton: 'Fertig',
+        monthText: 'Monat',
+        dayText: 'Tag',
+        yearText: 'Jahr'
+    }
+});

+ 12 - 0
frontend/saas-web/ext/packages/modern-locale/overrides/de_DE/picker/Picker.js

@@ -0,0 +1,12 @@
+/**
+ * German/Germany Translation by Jens Pliester <jens.pliester@eyeworkers.de>
+ * 19 December 2017
+ */
+Ext.define('Ext.locale.de_DE.picker.Picker', {
+    override: 'Ext.picker.Picker',
+
+    config: {
+        doneButton: 'Fertig',
+        cancelButton: 'Abbrechen'
+    }
+});

+ 4 - 0
frontend/saas-web/ext/packages/modern-locale/overrides/es_AR/Component.js

@@ -0,0 +1,4 @@
+// This is needed until we can refactor all of the locales into individual files
+Ext.define("Ext.locale.es_AR.Component", {
+    override: "Ext.Component"
+});

+ 49 - 0
frontend/saas-web/ext/packages/modern-locale/overrides/es_AR/Panel.js

@@ -0,0 +1,49 @@
+/**
+ * Español/Argentina Translation by Martín Panizzo <martin17@gmail.com>
+ * 11 October 2017
+ */
+Ext.define('Ext.locale.es_AR.Panel', {
+    override: 'Ext.Panel',
+
+    config: {
+        standardButtons: {
+            ok: {
+                text: 'OK'
+            },
+            abort: {
+                text: 'Abortar'
+            },
+            retry: {
+                text: 'Repetir'
+            },
+            ignore: {
+                text: 'Ignorar'
+            },
+            yes: {
+                text: 'Si'
+            },
+            no: {
+                text: 'No'
+            },
+            cancel: {
+                text: 'Cancelar'
+            },
+            apply: {
+                text: 'Aplicar'
+            },
+            save: {
+                text: 'Guardar'
+            },
+            submit: {
+                text: 'Enviar'
+            },
+            help: {
+                text: 'Ayuda'
+            },
+            close: {
+                text: 'Cerrar'
+            }
+        },
+        closeToolText: 'Cerrar panel'
+    }
+});

+ 14 - 0
frontend/saas-web/ext/packages/modern-locale/overrides/es_AR/data/validator/Bound.js

@@ -0,0 +1,14 @@
+/**
+ * Español/Argentina Translation by Martín Panizzo <martin17@gmail.com>
+ * 11 October 2017
+ */
+Ext.define('Ext.locale.es_AR.data.validator.Bound', {
+    override: 'Ext.data.validator.Bound',
+
+    config: {
+        emptyMessage: 'Debe estar presente',
+        minOnlyMessage: 'El valor debe ser mayor a {0}',
+        maxOnlyMessage: 'El valor debe ser menor a {0}',
+        bothMessage: 'El valor debe estar entre {0} y {1}'
+    }
+});

+ 9 - 0
frontend/saas-web/ext/packages/modern-locale/overrides/es_AR/data/validator/CIDRv4.js

@@ -0,0 +1,9 @@
+/**
+ * Español/Argentina Translation by Martín Panizzo <martin17@gmail.com>
+ * 11 October 2017
+ */
+Ext.define('Ext.locale.es_AR.data.validator.CIDRv4', {
+    override: 'Ext.data.validator.CIDRv4',
+
+    message: 'No es un bloque CIDR válido'
+});

+ 9 - 0
frontend/saas-web/ext/packages/modern-locale/overrides/es_AR/data/validator/CIDRv6.js

@@ -0,0 +1,9 @@
+/**
+ * Español/Argentina Translation by Martín Panizzo <martin17@gmail.com>
+ * 11 October 2017
+ */
+Ext.define('Ext.locale.es_AR.data.validator.CIDRv6', {
+    override: 'Ext.data.validator.CIDRv6',
+
+    message: 'No es un bloque CIDR válido'
+});

+ 10 - 0
frontend/saas-web/ext/packages/modern-locale/overrides/es_AR/data/validator/Currency.js

@@ -0,0 +1,10 @@
+/**
+ * Español/Argentina Translation by Martín Panizzo <martin17@gmail.com>
+ * 11 October 2017
+ */
+Ext.define('Ext.locale.es_AR.data.validator.Currency', {
+    override: 'Ext.data.validator.Currency',
+
+    message: 'No es un valor de moneda válido'
+
+});

+ 9 - 0
frontend/saas-web/ext/packages/modern-locale/overrides/es_AR/data/validator/DateTime.js

@@ -0,0 +1,9 @@
+/**
+ * Español/Argentina Translation by Martín Panizzo <martin17@gmail.com>
+ * 11 October 2017
+ */
+Ext.define('Ext.locale.es_AR.data.validator.DateTime', {
+    override: 'Ext.data.validator.DateTime',
+
+    message: 'No es una fecha y hora válida'
+});

+ 9 - 0
frontend/saas-web/ext/packages/modern-locale/overrides/es_AR/data/validator/Email.js

@@ -0,0 +1,9 @@
+/**
+ * Español/Argentina Translation by Martín Panizzo <martin17@gmail.com>
+ * 11 October 2017
+ */
+Ext.define('Ext.locale.es_AR.data.validator.Email', {
+    override: 'Ext.data.validator.Email',
+
+    message: 'No es una dirección de e-mail válida'
+});

+ 9 - 0
frontend/saas-web/ext/packages/modern-locale/overrides/es_AR/data/validator/Exclusion.js

@@ -0,0 +1,9 @@
+/**
+ * Español/Argentina Translation by Martín Panizzo <martin17@gmail.com>
+ * 11 October 2017
+ */
+Ext.define('Ext.locale.es_AR.data.validator.Exclusion', {
+    override: 'Ext.data.validator.Exclusion',
+
+    message: 'Es un valor que ha sido excluido'
+});

+ 11 - 0
frontend/saas-web/ext/packages/modern-locale/overrides/es_AR/data/validator/Format.js

@@ -0,0 +1,11 @@
+/**
+ * Español/Argentina Translation by Martín Panizzo <martin17@gmail.com>
+ * 11 October 2017
+ */
+Ext.define('Ext.locale.es_AR.data.validator.Format', {
+    override: 'Ext.data.validator.Format',
+
+    config:{
+        message: 'Está en el formato incorrecto'
+    }
+});

+ 9 - 0
frontend/saas-web/ext/packages/modern-locale/overrides/es_AR/data/validator/IPAddress.js

@@ -0,0 +1,9 @@
+/**
+ * Español/Argentina Translation by Martín Panizzo <martin17@gmail.com>
+ * 11 October 2017
+ */
+Ext.define('Ext.locale.es_AR.data.validator.IPAddress', {
+    override: 'Ext.data.validator.IPAddress',
+
+    message: 'No es una dirección IP válida'
+});

+ 9 - 0
frontend/saas-web/ext/packages/modern-locale/overrides/es_AR/data/validator/Inclusion.js

@@ -0,0 +1,9 @@
+/**
+ * Español/Argentina Translation by Martín Panizzo <martin17@gmail.com>
+ * 11 October 2017
+ */
+Ext.define('Ext.locale.es_AR.data.validator.Inclusion', {
+    override: 'Ext.data.validator.Inclusion',
+
+    message: 'No está en ka lista de valores aceptables'
+});

+ 11 - 0
frontend/saas-web/ext/packages/modern-locale/overrides/es_AR/data/validator/Length.js

@@ -0,0 +1,11 @@
+/**
+ * Español/Argentina Translation by Martín Panizzo <martin17@gmail.com>
+ * 11 October 2017
+ */
+Ext.define('Ext.locale.es_AR.data.validator.Length', {
+    override: 'Ext.data.validator.Length',
+
+    minOnlyMessage: 'La longitud debe ser al menos {0}',
+    maxOnlyMessage: 'La longitud no debe ser mayor que {0}',
+    bothMessage: 'La longitud no debe estar entre {0} y {1}'
+});

+ 11 - 0
frontend/saas-web/ext/packages/modern-locale/overrides/es_AR/data/validator/Number.js

@@ -0,0 +1,11 @@
+/**
+ * Español/Argentina Translation by Martín Panizzo <martin17@gmail.com>
+ * 11 October 2017
+ */
+Ext.define('Ext.locale.es_AR.data.validator.Number', {
+    override: 'Ext.data.validator.Number',
+
+    config:{
+        message: 'No es un número válido'
+    }
+});

+ 9 - 0
frontend/saas-web/ext/packages/modern-locale/overrides/es_AR/data/validator/Phone.js

@@ -0,0 +1,9 @@
+/**
+ * Español/Argentina Translation by Martín Panizzo <martin17@gmail.com>
+ * 11 October 2017
+ */
+Ext.define('Ext.locale.es_AR.data.validator.Phone', {
+    override: 'Ext.data.validator.Phone',
+
+    message: 'No es un número de teléfono válido'
+});

+ 11 - 0
frontend/saas-web/ext/packages/modern-locale/overrides/es_AR/data/validator/Presence.js

@@ -0,0 +1,11 @@
+/**
+ * Español/Argentina Translation by Martín Panizzo <martin17@gmail.com>
+ * 11 October 2017
+ */
+Ext.define('Ext.locale.es_AR.data.validator.Presence', {
+    override: 'Ext.data.validator.Presence',
+
+    config: {
+        message: 'Debe estar presente'
+    }
+});

+ 14 - 0
frontend/saas-web/ext/packages/modern-locale/overrides/es_AR/data/validator/Range.js

@@ -0,0 +1,14 @@
+/**
+ * Español/Argentina Translation by Martín Panizzo <martin17@gmail.com>
+ * 11 October 2017
+ */
+Ext.define('Ext.locale.es_AR.data.validator.Range', {
+    override: 'Ext.data.validator.Range',
+
+    minOnlyMessage: 'El valor debe ser mayor a {0}',
+    maxOnlyMessage: 'El valor debe ser menor a {0}',
+    bothMessage: 'El valor debe estar entre {0} y {1}',
+    config: {
+        nanMessage: 'Debe ser numérico'
+    }
+});

+ 9 - 0
frontend/saas-web/ext/packages/modern-locale/overrides/es_AR/data/validator/Time.js

@@ -0,0 +1,9 @@
+/**
+ * Español/Argentina Translation by Martín Panizzo <martin17@gmail.com>
+ * 11 October 2017
+ */
+Ext.define('Ext.locale.es_AR.data.validator.Time', {
+    override: 'Ext.data.validator.Time',
+
+    message: 'No es una hora válida'
+});

Some files were not shown because too many files changed in this diff