Przeglądaj źródła

1、增加企业权限控制

rayson 1 rok temu
rodzic
commit
12ab1999bb
100 zmienionych plików z 3950 dodań i 456 usunięć
  1. 4 4
      citu-framework/citu-spring-boot-starter-biz-data-permission/src/main/java/com/citu/framework/datapermission/core/rule/dept/DeptDataPermissionRule.java
  2. 16 16
      citu-framework/citu-spring-boot-starter-biz-data-permission/src/test/java/com/citu/framework/datapermission/core/rule/dept/DeptDataPermissionRuleTest.java
  3. 2 2
      citu-module-system/citu-module-system-api/src/main/java/com/citu/module/system/api/permission/PermissionApi.java
  4. 28 0
      citu-module-system/citu-module-system-api/src/main/java/com/citu/module/system/api/permission/dto/DataPermissionRespDTO.java
  5. 2 2
      citu-module-system/citu-module-system-api/src/main/java/com/citu/module/system/api/permission/dto/DeptDataPermissionRespDTO2.java
  6. 2 2
      citu-module-system/citu-module-system-biz/src/main/java/com/citu/module/system/api/permission/PermissionApiImpl.java
  7. 2 2
      citu-module-system/citu-module-system-biz/src/main/java/com/citu/module/system/service/permission/PermissionService.java
  8. 8 8
      citu-module-system/citu-module-system-biz/src/main/java/com/citu/module/system/service/permission/PermissionServiceImpl.java
  9. 16 16
      citu-module-system/citu-module-system-biz/src/test/java/com/citu/module/system/service/permission/PermissionServiceTest.java
  10. 28 0
      menduner/menduner-system-api/pom.xml
  11. 52 0
      menduner/menduner-system-api/src/main/java/com/citu/module/menduner/system/api/permission/MendunerPermissionApi.java
  12. 23 0
      menduner/menduner-system-api/src/main/java/com/citu/module/menduner/system/enums/ApiConstants.java
  13. 35 7
      menduner/menduner-system-api/src/main/java/com/citu/module/menduner/system/enums/ErrorCodeConstants.java
  14. 33 0
      menduner/menduner-system-api/src/main/java/com/citu/module/menduner/system/enums/MdeLogRecordConstants.java
  15. 32 0
      menduner/menduner-system-api/src/main/java/com/citu/module/menduner/system/enums/permission/MdeRoleCodeEnum.java
  16. 21 0
      menduner/menduner-system-api/src/main/java/com/citu/module/menduner/system/enums/permission/MdeRoleTypeEnum.java
  17. 15 0
      menduner/menduner-system-api/src/main/java/com/citu/module/menduner/system/enums/school/SchoolStatusEnum.java
  18. 0 16
      menduner/menduner-system-biz/Dockerfile2
  19. 41 0
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/api/permission/MendunerPermissionApiImpl.java
  20. 43 0
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/config/CustomDataPermissionAutoConfiguration.java
  21. 186 0
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/config/CustomDataPermissionRule.java
  22. 20 0
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/config/CustomDataPermissionRuleCustomizer.java
  23. 6 0
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/config/package-info.java
  24. 93 0
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/admin/enterprise/EnterpriseAddressController.java
  25. 94 0
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/admin/enterprise/EnterpriseBusinessController.java
  26. 95 0
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/admin/enterprise/EnterpriseController.java
  27. 93 0
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/admin/enterprise/EnterpriseRegisterController.java
  28. 93 0
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/admin/enterprise/EnterpriseUserBindController.java
  29. 31 0
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/admin/enterprise/address/EnterpriseAddressPageReqVO.java
  30. 39 0
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/admin/enterprise/address/EnterpriseAddressRespVO.java
  31. 26 0
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/admin/enterprise/address/EnterpriseAddressSaveReqVO.java
  32. 34 0
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/admin/enterprise/bind/EnterpriseUserBindPageReqVO.java
  33. 50 0
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/admin/enterprise/bind/EnterpriseUserBindRespVO.java
  34. 38 0
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/admin/enterprise/bind/EnterpriseUserBindSaveReqVO.java
  35. 62 0
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/admin/enterprise/business/EnterpriseBusinessPageReqVO.java
  36. 90 0
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/admin/enterprise/business/EnterpriseBusinessRespVO.java
  37. 63 0
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/admin/enterprise/business/EnterpriseBusinessSaveReqVO.java
  38. 37 0
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/admin/enterprise/register/EnterpriseRegisterPageReqVO.java
  39. 58 0
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/admin/enterprise/register/EnterpriseRegisterRespVO.java
  40. 41 0
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/admin/enterprise/register/EnterpriseRegisterSaveReqVO.java
  41. 48 0
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/admin/enterprise/vo/EnterprisePageReqVO.java
  42. 91 0
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/admin/enterprise/vo/EnterpriseRespVO.java
  43. 61 0
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/admin/enterprise/vo/EnterpriseSaveReqVO.java
  44. 94 0
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/admin/job/JobAdvertisedController.java
  45. 23 24
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/admin/job/JobInterestedController.java
  46. 56 0
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/admin/job/vo/JobAdvertisedPageReqVO.java
  47. 97 0
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/admin/job/vo/JobAdvertisedRespVO.java
  48. 75 0
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/admin/job/vo/JobAdvertisedSaveReqVO.java
  49. 1 1
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/admin/job/vo/JobInterestedPageReqVO.java
  50. 1 1
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/admin/job/vo/JobInterestedRespVO.java
  51. 1 1
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/admin/job/vo/JobInterestedSaveReqVO.java
  52. 96 0
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/admin/people/PeopleCertificateController.java
  53. 93 0
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/admin/people/PeopleInfoController.java
  54. 96 0
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/admin/people/PeopleSkillController.java
  55. 3 4
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/admin/people/vo/PeopleCertificatePageReqVO.java
  56. 4 6
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/admin/people/vo/PeopleCertificateRespVO.java
  57. 4 4
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/admin/people/vo/PeopleCertificateSaveReqVO.java
  58. 3 4
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/admin/people/vo/PeopleInfoPageReqVO.java
  59. 3 4
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/admin/people/vo/PeopleInfoRespVO.java
  60. 3 5
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/admin/people/vo/PeopleInfoSaveReqVO.java
  61. 3 4
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/admin/people/vo/PeopleSkillPageReqVO.java
  62. 4 6
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/admin/people/vo/PeopleSkillRespVO.java
  63. 4 4
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/admin/people/vo/PeopleSkillSaveReqVO.java
  64. 58 0
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/admin/permission/MdePermissionController.java
  65. 102 0
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/admin/permission/MdeRoleController.java
  66. 28 0
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/admin/permission/permission/MdePermissionAssignRoleDataScopeReqVO.java
  67. 21 0
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/admin/permission/permission/MdePermissionAssignRoleMenuReqVO.java
  68. 21 0
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/admin/permission/permission/MdePermissionAssignUserRoleReqVO.java
  69. 31 0
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/admin/permission/role/MdeRolePageReqVO.java
  70. 58 0
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/admin/permission/role/MdeRoleRespVO.java
  71. 39 0
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/admin/permission/role/MdeRoleSaveReqVO.java
  72. 16 0
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/admin/permission/role/MdeRoleSimpleRespVO.java
  73. 6 0
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/admin/school/SchoolController.java
  74. 14 2
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/admin/school/vo/SchoolPageReqVO.java
  75. 16 0
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/admin/school/vo/SchoolRespVO.java
  76. 12 0
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/admin/school/vo/SchoolSaveReqVO.java
  77. 94 0
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/admin/user/MdeUserController.java
  78. 39 0
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/admin/user/vo/MdeUserPageReqVO.java
  79. 67 0
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/admin/user/vo/MdeUserRespVO.java
  80. 51 0
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/admin/user/vo/MdeUserSaveReqVO.java
  81. 0 94
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/admin/usercertificate/UserCertificateController.java
  82. 0 93
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/admin/userinfo/UserInfoController.java
  83. 0 94
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/admin/userskill/UserSkillController.java
  84. 46 0
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/dal/dataobject/enterprise/EnterpriseAddressDO.java
  85. 100 0
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/dal/dataobject/enterprise/EnterpriseBusinessDO.java
  86. 99 0
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/dal/dataobject/enterprise/EnterpriseDO.java
  87. 64 0
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/dal/dataobject/enterprise/EnterpriseRegisterDO.java
  88. 61 0
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/dal/dataobject/enterprise/EnterpriseUserBindDO.java
  89. 103 0
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/dal/dataobject/job/JobAdvertisedDO.java
  90. 3 5
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/dal/dataobject/job/JobInterestedDO.java
  91. 5 8
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/dal/dataobject/people/PeopleCertificateDO.java
  92. 5 7
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/dal/dataobject/people/PeopleInfoDO.java
  93. 5 8
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/dal/dataobject/people/PeopleSkillDO.java
  94. 78 0
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/dal/dataobject/permission/MdeRoleDO.java
  95. 35 0
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/dal/dataobject/permission/MdeUserRoleDO.java
  96. 17 1
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/dal/dataobject/school/SchoolDO.java
  97. 75 0
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/dal/dataobject/user/MdeUserDO.java
  98. 1 1
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/dal/mysql/certificate/CertificateMapper.java
  99. 27 0
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/dal/mysql/enterprise/EnterpriseAddressMapper.java
  100. 37 0
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/dal/mysql/enterprise/EnterpriseBusinessMapper.java

+ 4 - 4
citu-framework/citu-spring-boot-starter-biz-data-permission/src/main/java/com/citu/framework/datapermission/core/rule/dept/DeptDataPermissionRule.java

@@ -12,7 +12,7 @@ import com.citu.framework.mybatis.core.util.MyBatisUtils;
 import com.citu.framework.security.core.LoginUser;
 import com.citu.framework.security.core.util.SecurityFrameworkUtils;
 import com.citu.module.system.api.permission.PermissionApi;
-import com.citu.module.system.api.permission.dto.DeptDataPermissionRespDTO;
+import com.citu.module.system.api.permission.dto.DataPermissionRespDTO;
 import com.baomidou.mybatisplus.core.metadata.TableInfoHelper;
 import lombok.AllArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
@@ -99,7 +99,7 @@ public class DeptDataPermissionRule implements DataPermissionRule {
         }
 
         // 获得数据权限
-        DeptDataPermissionRespDTO deptDataPermission = loginUser.getContext(CONTEXT_KEY, DeptDataPermissionRespDTO.class);
+        DataPermissionRespDTO deptDataPermission = loginUser.getContext(CONTEXT_KEY, DataPermissionRespDTO.class);
         // 从上下文中拿不到,则调用逻辑进行获取
         if (deptDataPermission == null) {
             deptDataPermission = permissionApi.getDeptDataPermission(loginUser.getId()).getCheckedData();
@@ -118,13 +118,13 @@ public class DeptDataPermissionRule implements DataPermissionRule {
         }
 
         // 情况二,即不能查看部门,又不能查看自己,则说明 100% 无权限
-        if (CollUtil.isEmpty(deptDataPermission.getDeptIds())
+        if (CollUtil.isEmpty(deptDataPermission.getDataIds())
             && Boolean.FALSE.equals(deptDataPermission.getSelf())) {
             return new EqualsTo(null, null); // WHERE null = null,可以保证返回的数据为空
         }
 
         // 情况三,拼接 Dept 和 User 的条件,最后组合
-        Expression deptExpression = buildDeptExpression(tableName,tableAlias, deptDataPermission.getDeptIds());
+        Expression deptExpression = buildDeptExpression(tableName,tableAlias, deptDataPermission.getDataIds());
         Expression userExpression = buildUserExpression(tableName, tableAlias, deptDataPermission.getSelf(), loginUser.getId());
         if (deptExpression == null && userExpression == null) {
             // TODO 芋艿:获得不到条件的时候,暂时不抛出异常,而是不返回数据

+ 16 - 16
citu-framework/citu-spring-boot-starter-biz-data-permission/src/test/java/com/citu/framework/datapermission/core/rule/dept/DeptDataPermissionRuleTest.java

@@ -8,7 +8,7 @@ import com.citu.framework.security.core.LoginUser;
 import com.citu.framework.security.core.util.SecurityFrameworkUtils;
 import com.citu.framework.test.core.ut.BaseMockitoUnitTest;
 import com.citu.module.system.api.permission.PermissionApi;
-import com.citu.module.system.api.permission.dto.DeptDataPermissionRespDTO;
+import com.citu.module.system.api.permission.dto.DataPermissionRespDTO;
 import net.sf.jsqlparser.expression.Alias;
 import net.sf.jsqlparser.expression.Expression;
 import org.junit.jupiter.api.BeforeEach;
@@ -98,14 +98,14 @@ class DeptDataPermissionRuleTest extends BaseMockitoUnitTest {
                     .setUserType(UserTypeEnum.ADMIN.getValue()));
             securityFrameworkUtilsMock.when(SecurityFrameworkUtils::getLoginUser).thenReturn(loginUser);
             // mock 方法(DeptDataPermissionRespDTO)
-            DeptDataPermissionRespDTO deptDataPermission = new DeptDataPermissionRespDTO().setAll(true);
+            DataPermissionRespDTO deptDataPermission = new DataPermissionRespDTO().setAll(true);
             when(permissionApi.getDeptDataPermission(same(1L))).thenReturn(success(deptDataPermission));
 
             // 调用
             Expression expression = rule.getExpression(tableName, tableAlias);
             // 断言
             assertNull(expression);
-            assertSame(deptDataPermission, loginUser.getContext(DeptDataPermissionRule.CONTEXT_KEY, DeptDataPermissionRespDTO.class));
+            assertSame(deptDataPermission, loginUser.getContext(DeptDataPermissionRule.CONTEXT_KEY, DataPermissionRespDTO.class));
         }
     }
 
@@ -121,14 +121,14 @@ class DeptDataPermissionRuleTest extends BaseMockitoUnitTest {
                     .setUserType(UserTypeEnum.ADMIN.getValue()));
             securityFrameworkUtilsMock.when(SecurityFrameworkUtils::getLoginUser).thenReturn(loginUser);
             // mock 方法(DeptDataPermissionRespDTO)
-            DeptDataPermissionRespDTO deptDataPermission = new DeptDataPermissionRespDTO();
+            DataPermissionRespDTO deptDataPermission = new DataPermissionRespDTO();
             when(permissionApi.getDeptDataPermission(same(1L))).thenReturn(success(deptDataPermission));
 
             // 调用
             Expression expression = rule.getExpression(tableName, tableAlias);
             // 断言
             assertEquals("null = null", expression.toString());
-            assertSame(deptDataPermission, loginUser.getContext(DeptDataPermissionRule.CONTEXT_KEY, DeptDataPermissionRespDTO.class));
+            assertSame(deptDataPermission, loginUser.getContext(DeptDataPermissionRule.CONTEXT_KEY, DataPermissionRespDTO.class));
         }
     }
 
@@ -144,15 +144,15 @@ class DeptDataPermissionRuleTest extends BaseMockitoUnitTest {
                     .setUserType(UserTypeEnum.ADMIN.getValue()));
             securityFrameworkUtilsMock.when(SecurityFrameworkUtils::getLoginUser).thenReturn(loginUser);
             // mock 方法(DeptDataPermissionRespDTO)
-            DeptDataPermissionRespDTO deptDataPermission = new DeptDataPermissionRespDTO()
-                    .setDeptIds(SetUtils.asSet(10L, 20L)).setSelf(true);
+            DataPermissionRespDTO deptDataPermission = new DataPermissionRespDTO()
+                    .setDataIds(SetUtils.asSet(10L, 20L)).setSelf(true);
             when(permissionApi.getDeptDataPermission(same(1L))).thenReturn(success(deptDataPermission));
 
             // 调用
             Expression expression = rule.getExpression(tableName, tableAlias);
             // 断言
             assertSame(EXPRESSION_NULL, expression);
-            assertSame(deptDataPermission, loginUser.getContext(DeptDataPermissionRule.CONTEXT_KEY, DeptDataPermissionRespDTO.class));
+            assertSame(deptDataPermission, loginUser.getContext(DeptDataPermissionRule.CONTEXT_KEY, DataPermissionRespDTO.class));
         }
     }
 
@@ -168,7 +168,7 @@ class DeptDataPermissionRuleTest extends BaseMockitoUnitTest {
                     .setUserType(UserTypeEnum.ADMIN.getValue()));
             securityFrameworkUtilsMock.when(SecurityFrameworkUtils::getLoginUser).thenReturn(loginUser);
             // mock 方法(DeptDataPermissionRespDTO)
-            DeptDataPermissionRespDTO deptDataPermission = new DeptDataPermissionRespDTO()
+            DataPermissionRespDTO deptDataPermission = new DataPermissionRespDTO()
                     .setSelf(true);
             when(permissionApi.getDeptDataPermission(same(1L))).thenReturn(success(deptDataPermission));
             // 添加 user 字段配置
@@ -178,7 +178,7 @@ class DeptDataPermissionRuleTest extends BaseMockitoUnitTest {
             Expression expression = rule.getExpression(tableName, tableAlias);
             // 断言
             assertEquals("u.id = 1", expression.toString());
-            assertSame(deptDataPermission, loginUser.getContext(DeptDataPermissionRule.CONTEXT_KEY, DeptDataPermissionRespDTO.class));
+            assertSame(deptDataPermission, loginUser.getContext(DeptDataPermissionRule.CONTEXT_KEY, DataPermissionRespDTO.class));
         }
     }
 
@@ -194,8 +194,8 @@ class DeptDataPermissionRuleTest extends BaseMockitoUnitTest {
                     .setUserType(UserTypeEnum.ADMIN.getValue()));
             securityFrameworkUtilsMock.when(SecurityFrameworkUtils::getLoginUser).thenReturn(loginUser);
             // mock 方法(DeptDataPermissionRespDTO)
-            DeptDataPermissionRespDTO deptDataPermission = new DeptDataPermissionRespDTO()
-                    .setDeptIds(CollUtil.newLinkedHashSet(10L, 20L));
+            DataPermissionRespDTO deptDataPermission = new DataPermissionRespDTO()
+                    .setDataIds(CollUtil.newLinkedHashSet(10L, 20L));
             when(permissionApi.getDeptDataPermission(same(1L))).thenReturn(success(deptDataPermission));
             // 添加 dept 字段配置
             rule.addDeptColumn("t_user", "dept_id");
@@ -204,7 +204,7 @@ class DeptDataPermissionRuleTest extends BaseMockitoUnitTest {
             Expression expression = rule.getExpression(tableName, tableAlias);
             // 断言
             assertEquals("u.dept_id IN (10, 20)", expression.toString());
-            assertSame(deptDataPermission, loginUser.getContext(DeptDataPermissionRule.CONTEXT_KEY, DeptDataPermissionRespDTO.class));
+            assertSame(deptDataPermission, loginUser.getContext(DeptDataPermissionRule.CONTEXT_KEY, DataPermissionRespDTO.class));
         }
     }
 
@@ -220,8 +220,8 @@ class DeptDataPermissionRuleTest extends BaseMockitoUnitTest {
                     .setUserType(UserTypeEnum.ADMIN.getValue()));
             securityFrameworkUtilsMock.when(SecurityFrameworkUtils::getLoginUser).thenReturn(loginUser);
             // mock 方法(DeptDataPermissionRespDTO)
-            DeptDataPermissionRespDTO deptDataPermission = new DeptDataPermissionRespDTO()
-                    .setDeptIds(CollUtil.newLinkedHashSet(10L, 20L)).setSelf(true);
+            DataPermissionRespDTO deptDataPermission = new DataPermissionRespDTO()
+                    .setDataIds(CollUtil.newLinkedHashSet(10L, 20L)).setSelf(true);
             when(permissionApi.getDeptDataPermission(same(1L))).thenReturn(success(deptDataPermission));
             // 添加 user 字段配置
             rule.addUserColumn("t_user", "id");
@@ -232,7 +232,7 @@ class DeptDataPermissionRuleTest extends BaseMockitoUnitTest {
             Expression expression = rule.getExpression(tableName, tableAlias);
             // 断言
             assertEquals("(u.dept_id IN (10, 20) OR u.id = 1)", expression.toString());
-            assertSame(deptDataPermission, loginUser.getContext(DeptDataPermissionRule.CONTEXT_KEY, DeptDataPermissionRespDTO.class));
+            assertSame(deptDataPermission, loginUser.getContext(DeptDataPermissionRule.CONTEXT_KEY, DataPermissionRespDTO.class));
         }
     }
 

+ 2 - 2
citu-module-system/citu-module-system-api/src/main/java/com/citu/module/system/api/permission/PermissionApi.java

@@ -1,7 +1,7 @@
 package com.citu.module.system.api.permission;
 
 import com.citu.framework.common.pojo.CommonResult;
-import com.citu.module.system.api.permission.dto.DeptDataPermissionRespDTO;
+import com.citu.module.system.api.permission.dto.DataPermissionRespDTO;
 import com.citu.module.system.enums.ApiConstants;
 import io.swagger.v3.oas.annotations.tags.Tag;
 import io.swagger.v3.oas.annotations.Parameter;
@@ -46,6 +46,6 @@ public interface PermissionApi {
     @GetMapping(PREFIX + "/get-dept-data-permission")
     @Operation(summary = "获得登陆用户的部门数据权限")
     @Parameter(name = "userId", description = "用户编号", example = "2", required = true)
-    CommonResult<DeptDataPermissionRespDTO> getDeptDataPermission(@RequestParam("userId") Long userId);
+    CommonResult<DataPermissionRespDTO> getDeptDataPermission(@RequestParam("userId") Long userId);
 
 }

+ 28 - 0
citu-module-system/citu-module-system-api/src/main/java/com/citu/module/system/api/permission/dto/DataPermissionRespDTO.java

@@ -0,0 +1,28 @@
+package com.citu.module.system.api.permission.dto;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+import java.util.HashSet;
+import java.util.Set;
+
+@Schema(description = "RPC 服务 - 数据权限 Response DTO")
+@Data
+public class DataPermissionRespDTO {
+
+    @Schema(description = "是否可查看全部数据", requiredMode = Schema.RequiredMode.REQUIRED, example = "true")
+    private Boolean all;
+
+    @Schema(description = "是否可查看自己的数据", requiredMode = Schema.RequiredMode.REQUIRED, example = "true")
+    private Boolean self;
+
+    @Schema(description = "可查看的编号数组", requiredMode = Schema.RequiredMode.REQUIRED, example = "[1, 3]")
+    private Set<Long> dataIds;
+
+    public DataPermissionRespDTO() {
+        this.all = false;
+        this.self = false;
+        this.dataIds = new HashSet<>();
+    }
+
+}

+ 2 - 2
citu-module-system/citu-module-system-api/src/main/java/com/citu/module/system/api/permission/dto/DeptDataPermissionRespDTO.java → citu-module-system/citu-module-system-api/src/main/java/com/citu/module/system/api/permission/dto/DeptDataPermissionRespDTO2.java

@@ -8,7 +8,7 @@ import java.util.Set;
 
 @Schema(description = "RPC 服务 - 部门的数据权限 Response DTO")
 @Data
-public class DeptDataPermissionRespDTO {
+public class DeptDataPermissionRespDTO2 {
 
     @Schema(description = "是否可查看全部数据", requiredMode = Schema.RequiredMode.REQUIRED, example = "true")
     private Boolean all;
@@ -19,7 +19,7 @@ public class DeptDataPermissionRespDTO {
     @Schema(description = "可查看的部门编号数组", requiredMode = Schema.RequiredMode.REQUIRED, example = "[1, 3]")
     private Set<Long> deptIds;
 
-    public DeptDataPermissionRespDTO() {
+    public DeptDataPermissionRespDTO2() {
         this.all = false;
         this.self = false;
         this.deptIds = new HashSet<>();

+ 2 - 2
citu-module-system/citu-module-system-biz/src/main/java/com/citu/module/system/api/permission/PermissionApiImpl.java

@@ -1,7 +1,7 @@
 package com.citu.module.system.api.permission;
 
 import com.citu.framework.common.pojo.CommonResult;
-import com.citu.module.system.api.permission.dto.DeptDataPermissionRespDTO;
+import com.citu.module.system.api.permission.dto.DataPermissionRespDTO;
 import com.citu.module.system.service.permission.PermissionService;
 import org.springframework.validation.annotation.Validated;
 import org.springframework.web.bind.annotation.RestController;
@@ -35,7 +35,7 @@ public class PermissionApiImpl implements PermissionApi {
     }
 
     @Override
-    public CommonResult<DeptDataPermissionRespDTO> getDeptDataPermission(Long userId) {
+    public CommonResult<DataPermissionRespDTO> getDeptDataPermission(Long userId) {
         return success(permissionService.getDeptDataPermission(userId));
     }
 

+ 2 - 2
citu-module-system/citu-module-system-biz/src/main/java/com/citu/module/system/service/permission/PermissionService.java

@@ -1,6 +1,6 @@
 package com.citu.module.system.service.permission;
 
-import com.citu.module.system.api.permission.dto.DeptDataPermissionRespDTO;
+import com.citu.module.system.api.permission.dto.DataPermissionRespDTO;
 
 import java.util.Collection;
 import java.util.Set;
@@ -141,6 +141,6 @@ public interface PermissionService {
      * @param userId 用户编号
      * @return 部门数据权限
      */
-    DeptDataPermissionRespDTO getDeptDataPermission(Long userId);
+    DataPermissionRespDTO getDeptDataPermission(Long userId);
 
 }

+ 8 - 8
citu-module-system/citu-module-system-biz/src/main/java/com/citu/module/system/service/permission/PermissionServiceImpl.java

@@ -7,7 +7,7 @@ import cn.hutool.extra.spring.SpringUtil;
 import com.citu.framework.common.enums.CommonStatusEnum;
 import com.citu.framework.common.util.collection.CollectionUtils;
 import com.citu.framework.datapermission.core.annotation.DataPermission;
-import com.citu.module.system.api.permission.dto.DeptDataPermissionRespDTO;
+import com.citu.module.system.api.permission.dto.DataPermissionRespDTO;
 import com.citu.module.system.dal.dataobject.permission.MenuDO;
 import com.citu.module.system.dal.dataobject.permission.RoleDO;
 import com.citu.module.system.dal.dataobject.permission.RoleMenuDO;
@@ -270,12 +270,12 @@ public class PermissionServiceImpl implements PermissionService {
 
     @Override
     @DataPermission(enable = false) // 关闭数据权限,不然就会出现递归获取数据权限的问题
-    public DeptDataPermissionRespDTO getDeptDataPermission(Long userId) {
+    public DataPermissionRespDTO getDeptDataPermission(Long userId) {
         // 获得用户的角色
         List<RoleDO> roles = getEnableUserRoleListByUserIdFromCache(userId);
 
         // 如果角色为空,则只能查看自己
-        DeptDataPermissionRespDTO result = new DeptDataPermissionRespDTO();
+        DataPermissionRespDTO result = new DataPermissionRespDTO();
         if (CollUtil.isEmpty(roles)) {
             result.setSelf(true);
             return result;
@@ -296,22 +296,22 @@ public class PermissionServiceImpl implements PermissionService {
             }
             // 情况二,DEPT_CUSTOM
             if (Objects.equals(role.getDataScope(), DataScopeEnum.DEPT_CUSTOM.getScope())) {
-                CollUtil.addAll(result.getDeptIds(), role.getDataScopeDeptIds());
+                CollUtil.addAll(result.getDataIds(), role.getDataScopeDeptIds());
                 // 自定义可见部门时,保证可以看到自己所在的部门。否则,一些场景下可能会有问题。
                 // 例如说,登录时,基于 t_user 的 username 查询会可能被 dept_id 过滤掉
-                CollUtil.addAll(result.getDeptIds(), userDeptId.get());
+                CollUtil.addAll(result.getDataIds(), userDeptId.get());
                 continue;
             }
             // 情况三,DEPT_ONLY
             if (Objects.equals(role.getDataScope(), DataScopeEnum.DEPT_ONLY.getScope())) {
-                CollectionUtils.addIfNotNull(result.getDeptIds(), userDeptId.get());
+                CollectionUtils.addIfNotNull(result.getDataIds(), userDeptId.get());
                 continue;
             }
             // 情况四,DEPT_DEPT_AND_CHILD
             if (Objects.equals(role.getDataScope(), DataScopeEnum.DEPT_AND_CHILD.getScope())) {
-                CollUtil.addAll(result.getDeptIds(), deptService.getChildDeptIdListFromCache(userDeptId.get()));
+                CollUtil.addAll(result.getDataIds(), deptService.getChildDeptIdListFromCache(userDeptId.get()));
                 // 添加本身部门编号
-                CollUtil.addAll(result.getDeptIds(), userDeptId.get());
+                CollUtil.addAll(result.getDataIds(), userDeptId.get());
                 continue;
             }
             // 情况五,SELF

+ 16 - 16
citu-module-system/citu-module-system-biz/src/test/java/com/citu/module/system/service/permission/PermissionServiceTest.java

@@ -4,7 +4,7 @@ import cn.hutool.core.collection.CollUtil;
 import cn.hutool.extra.spring.SpringUtil;
 import com.citu.framework.common.enums.CommonStatusEnum;
 import com.citu.framework.test.core.ut.BaseDbUnitTest;
-import com.citu.module.system.api.permission.dto.DeptDataPermissionRespDTO;
+import com.citu.module.system.api.permission.dto.DataPermissionRespDTO;
 import com.citu.module.system.dal.dataobject.dept.DeptDO;
 import com.citu.module.system.dal.dataobject.permission.MenuDO;
 import com.citu.module.system.dal.dataobject.permission.RoleDO;
@@ -403,11 +403,11 @@ public class PermissionServiceTest extends BaseDbUnitTest {
             when(roleService.getRoleListFromCache(eq(singleton(2L)))).thenReturn(toList(roleDO));
 
             // 调用
-            DeptDataPermissionRespDTO result = permissionService.getDeptDataPermission(userId);
+            DataPermissionRespDTO result = permissionService.getDeptDataPermission(userId);
             // 断言
             assertTrue(result.getAll());
             assertFalse(result.getSelf());
-            assertTrue(CollUtil.isEmpty(result.getDeptIds()));
+            assertTrue(CollUtil.isEmpty(result.getDataIds()));
         }
     }
 
@@ -430,13 +430,13 @@ public class PermissionServiceTest extends BaseDbUnitTest {
                     null, null); // 最后返回 null 的目的,看看会不会重复调用
 
             // 调用
-            DeptDataPermissionRespDTO result = permissionService.getDeptDataPermission(userId);
+            DataPermissionRespDTO result = permissionService.getDeptDataPermission(userId);
             // 断言
             assertFalse(result.getAll());
             assertFalse(result.getSelf());
-            assertEquals(roleDO.getDataScopeDeptIds().size() + 1, result.getDeptIds().size());
-            assertTrue(CollUtil.containsAll(result.getDeptIds(), roleDO.getDataScopeDeptIds()));
-            assertTrue(CollUtil.contains(result.getDeptIds(), 3L));
+            assertEquals(roleDO.getDataScopeDeptIds().size() + 1, result.getDataIds().size());
+            assertTrue(CollUtil.containsAll(result.getDataIds(), roleDO.getDataScopeDeptIds()));
+            assertTrue(CollUtil.contains(result.getDataIds(), 3L));
         }
     }
 
@@ -459,12 +459,12 @@ public class PermissionServiceTest extends BaseDbUnitTest {
                     null, null); // 最后返回 null 的目的,看看会不会重复调用
 
             // 调用
-            DeptDataPermissionRespDTO result = permissionService.getDeptDataPermission(userId);
+            DataPermissionRespDTO result = permissionService.getDeptDataPermission(userId);
             // 断言
             assertFalse(result.getAll());
             assertFalse(result.getSelf());
-            assertEquals(1, result.getDeptIds().size());
-            assertTrue(CollUtil.contains(result.getDeptIds(), 3L));
+            assertEquals(1, result.getDataIds().size());
+            assertTrue(CollUtil.contains(result.getDataIds(), 3L));
         }
     }
 
@@ -490,13 +490,13 @@ public class PermissionServiceTest extends BaseDbUnitTest {
             when(deptService.getChildDeptIdListFromCache(eq(3L))).thenReturn(singleton(deptDO.getId()));
 
             // 调用
-            DeptDataPermissionRespDTO result = permissionService.getDeptDataPermission(userId);
+            DataPermissionRespDTO result = permissionService.getDeptDataPermission(userId);
             // 断言
             assertFalse(result.getAll());
             assertFalse(result.getSelf());
-            assertEquals(2, result.getDeptIds().size());
-            assertTrue(CollUtil.contains(result.getDeptIds(), deptDO.getId()));
-            assertTrue(CollUtil.contains(result.getDeptIds(), 3L));
+            assertEquals(2, result.getDataIds().size());
+            assertTrue(CollUtil.contains(result.getDataIds(), deptDO.getId()));
+            assertTrue(CollUtil.contains(result.getDataIds(), 3L));
         }
     }
 
@@ -516,11 +516,11 @@ public class PermissionServiceTest extends BaseDbUnitTest {
             when(roleService.getRoleListFromCache(eq(singleton(2L)))).thenReturn(toList(roleDO));
 
             // 调用
-            DeptDataPermissionRespDTO result = permissionService.getDeptDataPermission(userId);
+            DataPermissionRespDTO result = permissionService.getDeptDataPermission(userId);
             // 断言
             assertFalse(result.getAll());
             assertTrue(result.getSelf());
-            assertTrue(CollUtil.isEmpty(result.getDeptIds()));
+            assertTrue(CollUtil.isEmpty(result.getDataIds()));
         }
     }
 

+ 28 - 0
menduner/menduner-system-api/pom.xml

@@ -20,5 +20,33 @@
             <groupId>com.citu</groupId>
             <artifactId>citu-common</artifactId>
         </dependency>
+
+        <dependency>
+            <groupId>com.citu</groupId>
+            <artifactId>citu-module-system-api</artifactId>
+            <version>${revision}</version>
+        </dependency>
+
+        <!-- Web 相关 -->
+        <dependency>
+            <groupId>org.springdoc</groupId>
+            <artifactId>springdoc-openapi-ui</artifactId>
+            <scope>provided</scope> <!-- 设置为 provided,主要是 PageParam 使用到 -->
+        </dependency>
+
+        <!-- 参数校验 -->
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-starter-validation</artifactId>
+            <optional>true</optional>
+        </dependency>
+
+        <!-- RPC 远程调用相关 -->
+        <dependency>
+            <groupId>org.springframework.cloud</groupId>
+            <artifactId>spring-cloud-starter-openfeign</artifactId>
+            <optional>true</optional>
+        </dependency>
+
     </dependencies>
 </project>

+ 52 - 0
menduner/menduner-system-api/src/main/java/com/citu/module/menduner/system/api/permission/MendunerPermissionApi.java

@@ -0,0 +1,52 @@
+package com.citu.module.menduner.system.api.permission;
+
+import com.citu.framework.common.pojo.CommonResult;
+import com.citu.module.menduner.system.enums.ApiConstants;
+import com.citu.module.system.api.permission.dto.DataPermissionRespDTO;
+
+import io.swagger.v3.oas.annotations.Operation;
+import io.swagger.v3.oas.annotations.Parameter;
+import io.swagger.v3.oas.annotations.Parameters;
+import io.swagger.v3.oas.annotations.tags.Tag;
+import org.springframework.cloud.openfeign.FeignClient;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestParam;
+
+import java.util.Collection;
+import java.util.Set;
+
+@FeignClient(name = ApiConstants.NAME)
+@Tag(name = "RPC 服务 - 门墩儿权限")
+public interface MendunerPermissionApi {
+
+    String PREFIX = ApiConstants.PREFIX + "permission";
+
+    @GetMapping(PREFIX + "/user-role-id-list-by-role-id")
+    @Operation(summary = "获得拥有多个角色的用户编号集合")
+    @Parameter(name = "roleIds", description = "角色编号集合", example = "1,2", required = true)
+    CommonResult<Set<Long>> getUserRoleIdListByRoleIds(@RequestParam("roleIds") Collection<Long> roleIds);
+
+    @GetMapping(PREFIX + "/has-any-permissions")
+    @Operation(summary = "判断是否有权限,任一一个即可")
+    @Parameters({
+            @Parameter(name = "userId", description = "用户编号", example = "1", required = true),
+            @Parameter(name = "permissions", description = "权限", example = "read,write", required = true)
+    })
+    CommonResult<Boolean> hasAnyPermissions(@RequestParam("userId") Long userId,
+                                            @RequestParam("permissions") String... permissions);
+
+    @GetMapping(PREFIX + "/has-any-roles")
+    @Operation(summary = "判断是否有角色,任一一个即可")
+    @Parameters({
+            @Parameter(name = "userId", description = "用户编号", example = "1", required = true),
+            @Parameter(name = "roles", description = "角色数组", example = "2", required = true)
+    })
+    CommonResult<Boolean> hasAnyRoles(@RequestParam("userId") Long userId,
+                                      @RequestParam("roles") String... roles);
+
+    @GetMapping(PREFIX + "/get-data-permission")
+    @Operation(summary = "获得登陆用户的数据权限")
+    @Parameter(name = "userId", description = "用户编号", example = "2", required = true)
+    CommonResult<DataPermissionRespDTO> getDataPermission(@RequestParam("userId") Long userId);
+
+}

+ 23 - 0
menduner/menduner-system-api/src/main/java/com/citu/module/menduner/system/enums/ApiConstants.java

@@ -0,0 +1,23 @@
+package com.citu.module.menduner.system.enums;
+
+import com.citu.framework.common.enums.RpcConstants;
+
+/**
+ * API 相关的枚举
+ *
+ * @author rayson
+ */
+public class ApiConstants {
+
+    /**
+     * 服务名
+     *
+     * 注意,需要保证和 spring.application.name 保持一致
+     */
+    public static final String NAME = "menduner-system-server";
+
+    public static final String PREFIX = RpcConstants.RPC_API_PREFIX +  "/menduner/system";
+
+    public static final String VERSION = "1.0.0";
+
+}

+ 35 - 7
menduner/menduner-system-api/src/main/java/com/citu/module/menduner/system/enums/ErrorCodeConstants.java

@@ -10,9 +10,8 @@ import com.citu.framework.common.exception.enums.ServiceErrorCodeRange;
 public interface ErrorCodeConstants {
 
 
-
-    // ========== 用户信息-个人档案 1_100_001_000 ==========
-    ErrorCode USER_INFO_NOT_EXISTS = new ErrorCode(1_100_001_001, "用户信息-个人档案不存在");
+    // ========== 人员信息-个人档案 1_100_001_000 ==========
+    ErrorCode USER_INFO_NOT_EXISTS = new ErrorCode(1_100_001_001, "人员信息-个人档案不存在");
 
     // ========== 行业信息 1_100_002_000 ==========
     ErrorCode INDUSTRY_NOT_EXISTS = new ErrorCode(1_100_002_001, "行业信息不存在");
@@ -41,15 +40,44 @@ public interface ErrorCodeConstants {
     // ========== 学校 1_100_010_000 ==========
     ErrorCode SCHOOL_NOT_EXISTS = new ErrorCode(1_100_010_001, "学校不存在");
 
-    // ========== 用户证书 1_100_011_000 ==========
-    ErrorCode USER_CERTIFICATE_NOT_EXISTS = new ErrorCode(1_100_011_001, "用户证书不存在");
+    // ========== 人员证书 1_100_011_000 ==========
+    ErrorCode USER_CERTIFICATE_NOT_EXISTS = new ErrorCode(1_100_011_001, "人员证书不存在");
 
     // ========== 工作经历 1_100_012_000 ==========
     ErrorCode WORK_EXP_NOT_EXISTS = new ErrorCode(1_100_012_001, "工作经历不存在");
 
-    // ========== 用户技能 1_100_013_000 ==========
-    ErrorCode USER_SKILL_NOT_EXISTS = new ErrorCode(1_100_013_001, "用户技能不存在");
+    // ========== 人员技能 1_100_013_000 ==========
+    ErrorCode USER_SKILL_NOT_EXISTS = new ErrorCode(1_100_013_001, "人员技能不存在");
 
     // ========== 证书 1_100_014_000 ==========
     ErrorCode CERTIFICATE_NOT_EXISTS = new ErrorCode(1_100_014_000, "证书不存在");
+
+    // ========== 门墩儿-用户登录 1_200_001_000 ==========
+    ErrorCode MDE_USER_NOT_EXISTS = new ErrorCode(1_200_001_001, "门墩儿-用户登录不存在");
+
+    // ========== 角色模块 1_200_003_000 ==========
+    ErrorCode MDE_ROLE_NOT_EXISTS = new ErrorCode(1_200_003_001, "角色不存在");
+    ErrorCode MDE_ROLE_NAME_DUPLICATE = new ErrorCode(1_200_003_001, "已经存在名为【{}】的角色");
+    ErrorCode MDE_ROLE_CODE_DUPLICATE = new ErrorCode(1_200_003_002, "已经存在编码为【{}】的角色");
+    ErrorCode MDE_ROLE_CAN_NOT_UPDATE_SYSTEM_TYPE_ROLE = new ErrorCode(1_200_003_003, "不能操作类型为系统内置的角色");
+    ErrorCode MDE_ROLE_IS_DISABLE = new ErrorCode(1_200_003_004, "名字为【{}】的角色已被禁用");
+    ErrorCode MDE_ROLE_ADMIN_CODE_ERROR = new ErrorCode(1_200_003_005, "编码【{}】不能使用");
+
+    // ========== 门墩儿-企业信息 1_200_004_000 ==========
+    ErrorCode ENTERPRISE_NOT_EXISTS = new ErrorCode(1_200_004_001, "门墩儿-企业信息不存在");
+
+    // ========== 门墩儿-企业工商信息  1_200_005_001 ==========
+    ErrorCode ENTERPRISE_BUSINESS_NOT_EXISTS = new ErrorCode(1_200_005_001, "门墩儿-企业工商信息不存在");
+
+    // ========== 门墩儿-企业注册申请 1_200_006_000 ==========
+    ErrorCode ENTERPRISE_REGISTER_NOT_EXISTS = new ErrorCode(1_200_006_001, "门墩儿-企业注册申请不存在");
+
+    // ========== 门墩儿-企业地址 1_200_007_001 ==========
+    ErrorCode ENTERPRISE_ADDRESS_NOT_EXISTS = new ErrorCode(1_200_007_001, "门墩儿-企业地址不存在");
+
+    // ========== 门墩儿-企业登录用户 1_200_008_000 ==========
+    ErrorCode ENTERPRISE_USER_BIND_NOT_EXISTS = new ErrorCode(1_200_008_001, "门墩儿-企业登录用户不存在");
+
+    // ========== 门墩儿-招聘职位 1_200_010_000 ==========
+    ErrorCode JOB_ADVERTISED_NOT_EXISTS = new ErrorCode(1_200_010_001, "门墩儿-招聘职位不存在");
 }

+ 33 - 0
menduner/menduner-system-api/src/main/java/com/citu/module/menduner/system/enums/MdeLogRecordConstants.java

@@ -0,0 +1,33 @@
+package com.citu.module.menduner.system.enums;
+
+/**
+ * MDE 操作日志枚举
+ * 目的:统一管理,也减少 Service 里各种“复杂”字符串
+ *
+ * @author rayson
+ */
+public interface MdeLogRecordConstants {
+
+    // ======================= MDE_USER 用户 =======================
+
+    String MDE_USER_TYPE = "MDE 用户";
+    String MDE_USER_CREATE_SUB_TYPE = "创建用户";
+    String MDE_USER_CREATE_SUCCESS = "创建了用户【{{#user.username}}】";
+    String MDE_USER_UPDATE_SUB_TYPE = "更新用户";
+    String MDE_USER_UPDATE_SUCCESS = "更新了用户【{{#user.username}}】: {_DIFF{#updateReqVO}}";
+    String MDE_USER_DELETE_SUB_TYPE = "删除用户";
+    String MDE_USER_DELETE_SUCCESS = "删除了用户【{{#user.username}}】";
+    String MDE_USER_UPDATE_PASSWORD_SUB_TYPE = "重置用户密码";
+    String MDE_USER_UPDATE_PASSWORD_SUCCESS = "将用户【{{#user.username}}】的密码从【{{#user.password}}】重置为【{{#newPassword}}】";
+
+    // ======================= MDE_ROLE 角色 =======================
+
+    String MDE_ROLE_TYPE = "MDE 角色";
+    String MDE_ROLE_CREATE_SUB_TYPE = "创建角色";
+    String MDE_ROLE_CREATE_SUCCESS = "创建了角色【{{#role.name}}】";
+    String MDE_ROLE_UPDATE_SUB_TYPE = "更新角色";
+    String MDE_ROLE_UPDATE_SUCCESS = "更新了角色【{{#role.name}}】: {_DIFF{#updateReqVO}}";
+    String MDE_ROLE_DELETE_SUB_TYPE = "删除角色";
+    String MDE_ROLE_DELETE_SUCCESS = "删除了角色【{{#role.name}}】";
+
+}

+ 32 - 0
menduner/menduner-system-api/src/main/java/com/citu/module/menduner/system/enums/permission/MdeRoleCodeEnum.java

@@ -0,0 +1,32 @@
+package com.citu.module.menduner.system.enums.permission;
+
+import com.citu.framework.common.util.object.ObjectUtils;
+import lombok.AllArgsConstructor;
+import lombok.Getter;
+
+/**
+ * 角色标识枚举
+ */
+@Getter
+@AllArgsConstructor
+public enum MdeRoleCodeEnum {
+
+    SUPER_ADMIN("super_admin", "超级管理员"),
+    TENANT_ADMIN("tenant_admin", "租户管理员"),
+    MDE_ADMIN("mde_admin", "menduner 管理员"),
+    ;
+
+    /**
+     * 角色编码
+     */
+    private final String code;
+    /**
+     * 名字
+     */
+    private final String name;
+
+    public static boolean isSuperAdmin(String code) {
+        return ObjectUtils.equalsAny(code, SUPER_ADMIN.getCode());
+    }
+
+}

+ 21 - 0
menduner/menduner-system-api/src/main/java/com/citu/module/menduner/system/enums/permission/MdeRoleTypeEnum.java

@@ -0,0 +1,21 @@
+package com.citu.module.menduner.system.enums.permission;
+
+import lombok.AllArgsConstructor;
+import lombok.Getter;
+
+@Getter
+@AllArgsConstructor
+public enum MdeRoleTypeEnum {
+
+    /**
+     * 内置角色
+     */
+    SYSTEM(1),
+    /**
+     * 自定义角色
+     */
+    CUSTOM(2);
+
+    private final Integer type;
+
+}

+ 15 - 0
menduner/menduner-system-api/src/main/java/com/citu/module/menduner/system/enums/school/SchoolStatusEnum.java

@@ -0,0 +1,15 @@
+package com.citu.module.menduner.system.enums.school;
+
+import lombok.AllArgsConstructor;
+import lombok.Getter;
+
+/**
+ * 帐号状态(0正常 1停用)
+ **/
+@Getter
+@AllArgsConstructor
+public enum SchoolStatusEnum {
+    NORMAL(0),
+    DISABLE(1);
+    private final Integer type;
+}

+ 0 - 16
menduner/menduner-system-biz/Dockerfile2

@@ -1,16 +0,0 @@
-## AdoptOpenJDK 停止发布 OpenJDK 二进制,而 Eclipse Temurin 是它的延伸,提供更好的稳定性
-## 感谢复旦核博士的建议!灰子哥,牛皮!
-FROM adoptopenjdk/openjdk11
-
-## 将后端项目的 Jar 文件,复制到镜像中
-COPY ./target/citu-module-crm-biz.jar app.jar
-
-## 设置 TZ 时区
-## 设置 JAVA_OPTS 环境变量,可通过 docker run -e "JAVA_OPTS=" 进行覆盖
-ENV TZ=Asia/Shanghai JAVA_OPTS="-Xms512m -Xmx512m"
-
-## 暴露后端项目的 48089 端口
-EXPOSE 48089
-
-## 启动后端项目
-CMD java ${JAVA_OPTS} -Djava.security.egd=file:/dev/./urandom -jar app.jar

+ 41 - 0
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/api/permission/MendunerPermissionApiImpl.java

@@ -0,0 +1,41 @@
+package com.citu.module.menduner.system.api.permission;
+
+import com.citu.framework.common.pojo.CommonResult;
+import com.citu.module.menduner.system.service.permission.MdePermissionService;
+import com.citu.module.system.api.permission.dto.DataPermissionRespDTO;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.RestController;
+
+import javax.annotation.Resource;
+import java.util.Collection;
+import java.util.Set;
+
+import static com.citu.framework.common.pojo.CommonResult.success;
+
+@RestController // 提供 RESTful API 接口,给 Feign 调用
+@Validated
+public class MendunerPermissionApiImpl implements MendunerPermissionApi {
+
+    @Resource
+    private MdePermissionService service;
+
+    @Override
+    public CommonResult<Set<Long>> getUserRoleIdListByRoleIds(Collection<Long> roleIds) {
+        return success(service.getUserRoleIdListByRoleId(roleIds));
+    }
+
+    @Override
+    public CommonResult<Boolean> hasAnyPermissions(Long userId, String... permissions) {
+        return success(service.hasAnyPermissions(userId, permissions));
+    }
+
+    @Override
+    public CommonResult<Boolean> hasAnyRoles(Long userId, String... roles) {
+        return success(service.hasAnyRoles(userId, roles));
+    }
+
+    @Override
+    public CommonResult<DataPermissionRespDTO> getDataPermission(Long userId) {
+        return success(service.getDataPermission(userId));
+    }
+}

+ 43 - 0
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/config/CustomDataPermissionAutoConfiguration.java

@@ -0,0 +1,43 @@
+package com.citu.module.menduner.system.config;
+
+import cn.hutool.extra.spring.SpringUtil;
+import com.citu.framework.security.core.LoginUser;
+import com.citu.module.menduner.system.api.permission.MendunerPermissionApi;
+import org.springframework.boot.autoconfigure.AutoConfiguration;
+import org.springframework.boot.autoconfigure.condition.ConditionalOnBean;
+import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
+import org.springframework.context.annotation.Bean;
+
+import java.util.List;
+
+/**
+ * 自定义的数据权限 AutoConfiguration
+ *
+ * @author Rayson
+ */
+@AutoConfiguration
+@ConditionalOnClass(LoginUser.class)
+@ConditionalOnBean(value = CustomDataPermissionRuleCustomizer.class)
+public class CustomDataPermissionAutoConfiguration {
+
+    @Bean
+    public CustomDataPermissionRule customDataPermissionRule(MendunerPermissionApi permissionApi,
+                                                 List<CustomDataPermissionRuleCustomizer> customizers) {
+        // Cloud 专属逻辑:优先使用本地的 MendunerPermissionApi 实现类,而不是 Feign 调用
+        // 原因:在创建租户时,租户还没创建好,导致 Feign 调用获取数据权限时,报“租户不存在”的错误
+        try {
+            MendunerPermissionApi permissionApiImpl = SpringUtil.getBean("mendunerPermissionApi", MendunerPermissionApi.class);
+            if (permissionApiImpl != null) {
+                permissionApi = permissionApiImpl;
+            }
+        } catch (Exception ignored) {
+        }
+
+        // 创建 CustomDataPermissionRule 对象
+        CustomDataPermissionRule rule = new CustomDataPermissionRule(permissionApi);
+        // 补全表配置
+        customizers.forEach(customizer -> customizer.customize(rule));
+        return rule;
+    }
+
+}

+ 186 - 0
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/config/CustomDataPermissionRule.java

@@ -0,0 +1,186 @@
+package com.citu.module.menduner.system.config;
+
+import cn.hutool.core.collection.CollUtil;
+import cn.hutool.core.text.CharSequenceUtil;
+import cn.hutool.core.util.ObjectUtil;
+import cn.hutool.core.util.StrUtil;
+import com.baomidou.mybatisplus.core.metadata.TableInfoHelper;
+import com.citu.framework.common.enums.UserTypeEnum;
+import com.citu.framework.common.util.collection.CollectionUtils;
+import com.citu.framework.common.util.json.JsonUtils;
+import com.citu.framework.datapermission.core.rule.DataPermissionRule;
+import com.citu.framework.mybatis.core.dataobject.BaseDO;
+import com.citu.framework.mybatis.core.util.MyBatisUtils;
+import com.citu.framework.security.core.LoginUser;
+import com.citu.framework.security.core.util.SecurityFrameworkUtils;
+import com.citu.module.menduner.system.api.permission.MendunerPermissionApi;
+import com.citu.module.system.api.permission.dto.DataPermissionRespDTO;
+import lombok.AllArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
+import net.sf.jsqlparser.expression.*;
+import net.sf.jsqlparser.expression.operators.conditional.OrExpression;
+import net.sf.jsqlparser.expression.operators.relational.EqualsTo;
+import net.sf.jsqlparser.expression.operators.relational.ExpressionList;
+import net.sf.jsqlparser.expression.operators.relational.InExpression;
+
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.Map;
+import java.util.Set;
+
+/**
+ * @author rayson
+ * @description CustomDataPermissionRule
+ * 基于自定义的 {@link DataPermissionRule} 数据权限规则实现
+ * @create 2024/5/8 下午7:41
+ **/
+@AllArgsConstructor
+@Slf4j
+public class CustomDataPermissionRule implements DataPermissionRule {
+
+    /**
+     * LoginUser 的 Context 缓存 Key
+     */
+    protected static final String CONTEXT_KEY = CustomDataPermissionRule.class.getSimpleName();
+
+    static final Expression EXPRESSION_NULL = new NullValue();
+    /**
+     * 基于数据的表字段配置 TODO 目前只支持一个数据权限字段,xx_id 和 user_id 不能同时配置。
+     * 如基于部门的数据编号字段是 自定义xx_id,基于店铺的数据编号字段是 shop_id,通过该配置自定义,如 group_id。
+     * <p>
+     * key:表名
+     * value:字段名
+     */
+    private final static Map<String, String> DATA_COLUMNS = new HashMap<>();
+    /**
+     * 基于用户的表字段配置
+     * 一般情况下,每个表的数据编号字段是 user_id,通过该配置自定义,如 admin_user_id。
+     * <p>
+     * key:表名
+     * value:字段名
+     */
+    private final static Map<String, String> USER_COLUMNS = new HashMap<>();
+    /**
+     * 所有表名,是 {@link #DATA_COLUMNS} 和 {@link #USER_COLUMNS} 的合集
+     */
+    private final static Set<String> TABLE_NAMES = new HashSet<>();
+
+    private final MendunerPermissionApi permissionApi;
+
+    @Override
+    public Set<String> getTableNames() {
+        return TABLE_NAMES;
+    }
+
+    @Override
+    public Expression getExpression(String tableName, Alias tableAlias) {
+        // 只有有登陆用户的情况下,才进行数据权限的处理
+        LoginUser loginUser = SecurityFrameworkUtils.getLoginUser();
+        if (loginUser == null) {
+            return null;
+        }
+        // 只有管理员类型的用户,才进行数据权限的处理
+        if (ObjectUtil.notEqual(loginUser.getUserType(), UserTypeEnum.ADMIN.getValue())) {
+            return null;
+        }
+        // 获得数据权限
+        DataPermissionRespDTO dataPermission = loginUser.getContext(CONTEXT_KEY, DataPermissionRespDTO.class);
+        // 从上下文中拿不到,则调用逻辑进行获取
+        if (dataPermission == null) {
+            dataPermission = permissionApi.getDataPermission(loginUser.getId()).getCheckedData();
+            if (dataPermission == null) {
+                log.error("[getExpression][LoginUser({}) 获取数据权限为 null]", JsonUtils.toJsonString(loginUser));
+                throw new NullPointerException(String.format("LoginUser(%d) Table(%s/%s) 未返回数据权限",
+                        loginUser.getId(), tableName, tableAlias.getName()));
+            }
+            // 添加到上下文中,避免重复计算
+            loginUser.setContext(CONTEXT_KEY, dataPermission);
+        }
+
+        // 情况一,如果是 ALL 可查看全部,则无需拼接条件
+        if (dataPermission.getAll()) {
+            return null;
+        }
+
+        // 情况二,即不能查看部门,又不能查看自己,则说明 100% 无权限
+        if (CollUtil.isEmpty(dataPermission.getDataIds())
+                && Boolean.FALSE.equals(dataPermission.getSelf())) {
+            return new EqualsTo(null, null); // WHERE null = null,可以保证返回的数据为空
+        }
+
+        // 情况三,拼接 Dept 和 User 的条件,最后组合
+        Expression dataExpression = buildDeptExpression(tableName, tableAlias, dataPermission.getDataIds());
+        Expression userExpression = buildUserExpression(tableName, tableAlias, dataPermission.getSelf(), loginUser.getId());
+        if (dataExpression == null && userExpression == null) {
+            // TODO 芋艿:获得不到条件的时候,暂时不抛出异常,而是不返回数据
+            log.warn("[getExpression][LoginUser({}) Table({}/{}) DeptDataPermission({}) 构建的条件为空]",
+                    JsonUtils.toJsonString(loginUser), tableName, tableAlias, JsonUtils.toJsonString(dataPermission));
+            return EXPRESSION_NULL; // AND NULL
+        }
+
+        if (dataExpression == null) {
+            return userExpression;
+        }
+        if (userExpression == null) {
+            return dataExpression;
+        }
+        // 目前,如果有指定数据 + 可查看自己,采用 OR 条件。即,WHERE (shop_id IN ? OR user_id = ?)
+        return new Parenthesis(new OrExpression(dataExpression, userExpression));
+    }
+
+    private Expression buildDeptExpression(String tableName, Alias tableAlias, Set<Long> dataIds) {
+        // 如果不存在配置,则无需作为条件
+        String columnName = DATA_COLUMNS.get(tableName);
+        if (StrUtil.isEmpty(columnName)) {
+            return null;
+        }
+        // 如果为空,则无条件
+        if (CollUtil.isEmpty(dataIds)) {
+            return null;
+        }
+        // 拼接条件
+        return new InExpression(MyBatisUtils.buildColumn(tableName, tableAlias, columnName),
+                new ExpressionList(CollectionUtils.convertList(dataIds, LongValue::new)));
+    }
+
+    private Expression buildUserExpression(String tableName, Alias tableAlias, Boolean self, Long userId) {
+        // 如果不查看自己,则无需作为条件
+        if (Boolean.FALSE.equals(self)) {
+            return null;
+        }
+        String columnName = USER_COLUMNS.get(tableName);
+        if (StrUtil.isEmpty(columnName)) {
+            return null;
+        }
+        // 拼接条件
+        return new EqualsTo(MyBatisUtils.buildColumn(tableName, tableAlias, columnName), new LongValue(userId));
+    }
+
+    // ==================== 添加配置 ====================
+    public void addDataColumn(Class<? extends BaseDO> entityClass, String columnName) {
+        String tableName = TableInfoHelper.getTableInfo(entityClass).getTableName();
+        addDataColumn(tableName, columnName);
+    }
+
+
+    public void addDataColumn(String tableName, String columnName) {
+        if (CharSequenceUtil.isEmpty(tableName)) {
+            return;
+        }
+        DATA_COLUMNS.put(tableName, columnName);
+        TABLE_NAMES.add(tableName);
+    }
+
+    public void addUserColumn(Class<? extends BaseDO> entityClass, String columnName) {
+        String tableName = TableInfoHelper.getTableInfo(entityClass).getTableName();
+        addDataColumn(tableName, columnName);
+    }
+
+    public void addUserColumn(String tableName, String columnName) {
+        if (CharSequenceUtil.isEmpty(tableName)) {
+            return;
+        }
+        USER_COLUMNS.put(tableName, columnName);
+        TABLE_NAMES.add(tableName);
+    }
+}

+ 20 - 0
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/config/CustomDataPermissionRuleCustomizer.java

@@ -0,0 +1,20 @@
+package com.citu.module.menduner.system.config;
+
+import com.citu.framework.datapermission.core.rule.DataPermissionRule;
+
+/**
+ * @author rayson
+ * @description CustomDataPermissionRuleCustomizer {@link CustomDataPermissionRule} 的自定义配置接口
+ **/
+@FunctionalInterface
+public interface CustomDataPermissionRuleCustomizer {
+
+    /**
+     * 自定义该权限规则
+     * 1. 调用 {@link CustomDataPermissionRule#addDataColumn(Class, String)} 方法,配置基于数据编号的过滤规则
+     * 2. 调用 {@link CustomDataPermissionRule#addUserColumn(Class, String)} 方法,配置基于用户编号的过滤规则
+     *
+     * @param rule 权限规则
+     */
+    void customize(CustomDataPermissionRule rule);
+}

+ 6 - 0
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/config/package-info.java

@@ -0,0 +1,6 @@
+/**
+ * 基于部门的数据权限规则
+ *
+ * @author 芋道源码
+ */
+package com.citu.module.menduner.system.config;

+ 93 - 0
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/admin/enterprise/EnterpriseAddressController.java

@@ -0,0 +1,93 @@
+package com.citu.module.menduner.system.controller.admin.enterprise;
+
+import com.citu.framework.apilog.core.annotation.ApiAccessLog;
+import com.citu.framework.common.pojo.CommonResult;
+import com.citu.framework.common.pojo.PageParam;
+import com.citu.framework.common.pojo.PageResult;
+import com.citu.framework.common.util.object.BeanUtils;
+import com.citu.framework.excel.core.util.ExcelUtils;
+import com.citu.module.menduner.system.controller.admin.enterprise.address.EnterpriseAddressPageReqVO;
+import com.citu.module.menduner.system.controller.admin.enterprise.address.EnterpriseAddressRespVO;
+import com.citu.module.menduner.system.controller.admin.enterprise.address.EnterpriseAddressSaveReqVO;
+import com.citu.module.menduner.system.dal.dataobject.enterprise.EnterpriseAddressDO;
+import com.citu.module.menduner.system.service.enterprise.EnterpriseAddressService;
+import io.swagger.v3.oas.annotations.Operation;
+import io.swagger.v3.oas.annotations.Parameter;
+import io.swagger.v3.oas.annotations.tags.Tag;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.*;
+
+import javax.annotation.Resource;
+import javax.servlet.http.HttpServletResponse;
+import javax.validation.Valid;
+import java.io.IOException;
+import java.util.List;
+
+import static com.citu.framework.apilog.core.enums.OperateTypeEnum.EXPORT;
+import static com.citu.framework.common.pojo.CommonResult.success;
+
+@Tag(name = "管理后台 - 门墩儿-企业地址")
+@RestController
+@RequestMapping("/menduner/system/enterprise-address")
+@Validated
+public class EnterpriseAddressController {
+
+    @Resource
+    private EnterpriseAddressService enterpriseAddressService;
+
+    @PostMapping("/create")
+    @Operation(summary = "创建门墩儿-企业地址")
+    @PreAuthorize("@ss.hasPermission('menduner:system:enterprise-address:create')")
+    public CommonResult<Long> createEnterpriseAddress(@Valid @RequestBody EnterpriseAddressSaveReqVO createReqVO) {
+        return success(enterpriseAddressService.createEnterpriseAddress(createReqVO));
+    }
+
+    @PutMapping("/update")
+    @Operation(summary = "更新门墩儿-企业地址")
+    @PreAuthorize("@ss.hasPermission('menduner:system:enterprise-address:update')")
+    public CommonResult<Boolean> updateEnterpriseAddress(@Valid @RequestBody EnterpriseAddressSaveReqVO updateReqVO) {
+        enterpriseAddressService.updateEnterpriseAddress(updateReqVO);
+        return success(true);
+    }
+
+    @DeleteMapping("/delete")
+    @Operation(summary = "删除门墩儿-企业地址")
+    @Parameter(name = "id", description = "编号", required = true)
+    @PreAuthorize("@ss.hasPermission('menduner:system:enterprise-address:delete')")
+    public CommonResult<Boolean> deleteEnterpriseAddress(@RequestParam("id") Long id) {
+        enterpriseAddressService.deleteEnterpriseAddress(id);
+        return success(true);
+    }
+
+    @GetMapping("/get")
+    @Operation(summary = "获得门墩儿-企业地址")
+    @Parameter(name = "id", description = "编号", required = true, example = "1024")
+    @PreAuthorize("@ss.hasPermission('menduner:system:enterprise-address:query')")
+    public CommonResult<EnterpriseAddressRespVO> getEnterpriseAddress(@RequestParam("id") Long id) {
+        EnterpriseAddressDO enterpriseAddress = enterpriseAddressService.getEnterpriseAddress(id);
+        return success(BeanUtils.toBean(enterpriseAddress, EnterpriseAddressRespVO.class));
+    }
+
+    @GetMapping("/page")
+    @Operation(summary = "获得门墩儿-企业地址分页")
+    @PreAuthorize("@ss.hasPermission('menduner:system:enterprise-address:query')")
+    public CommonResult<PageResult<EnterpriseAddressRespVO>> getEnterpriseAddressPage(@Valid EnterpriseAddressPageReqVO pageReqVO) {
+        PageResult<EnterpriseAddressDO> pageResult = enterpriseAddressService.getEnterpriseAddressPage(pageReqVO);
+        return success(BeanUtils.toBean(pageResult, EnterpriseAddressRespVO.class));
+    }
+
+    @GetMapping("/export-excel")
+    @Operation(summary = "导出门墩儿-企业地址 Excel")
+    @PreAuthorize("@ss.hasPermission('menduner:system:enterprise-address:export')")
+    @ApiAccessLog(operateType = EXPORT)
+    public void exportEnterpriseAddressExcel(@Valid EnterpriseAddressPageReqVO pageReqVO,
+                                             HttpServletResponse response) throws IOException {
+        pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE);
+        List<EnterpriseAddressDO> list = enterpriseAddressService.getEnterpriseAddressPage(pageReqVO).getList();
+        // 导出 Excel
+        ExcelUtils.write(response, "门墩儿-企业地址.xls", "数据", EnterpriseAddressRespVO.class,
+                BeanUtils.toBean(list, EnterpriseAddressRespVO.class));
+    }
+
+}

+ 94 - 0
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/admin/enterprise/EnterpriseBusinessController.java

@@ -0,0 +1,94 @@
+package com.citu.module.menduner.system.controller.admin.enterprise;
+
+
+import com.citu.framework.apilog.core.annotation.ApiAccessLog;
+import com.citu.framework.common.pojo.CommonResult;
+import com.citu.framework.common.pojo.PageParam;
+import com.citu.framework.common.pojo.PageResult;
+import com.citu.framework.common.util.object.BeanUtils;
+import com.citu.framework.excel.core.util.ExcelUtils;
+import com.citu.module.menduner.system.controller.admin.enterprise.business.EnterpriseBusinessPageReqVO;
+import com.citu.module.menduner.system.controller.admin.enterprise.business.EnterpriseBusinessRespVO;
+import com.citu.module.menduner.system.controller.admin.enterprise.business.EnterpriseBusinessSaveReqVO;
+import com.citu.module.menduner.system.dal.dataobject.enterprise.EnterpriseBusinessDO;
+import com.citu.module.menduner.system.service.enterprise.EnterpriseBusinessService;
+import io.swagger.v3.oas.annotations.Operation;
+import io.swagger.v3.oas.annotations.Parameter;
+import io.swagger.v3.oas.annotations.tags.Tag;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.*;
+
+import javax.annotation.Resource;
+import javax.servlet.http.HttpServletResponse;
+import javax.validation.Valid;
+import java.io.IOException;
+import java.util.List;
+
+import static com.citu.framework.apilog.core.enums.OperateTypeEnum.EXPORT;
+import static com.citu.framework.common.pojo.CommonResult.success;
+
+@Tag(name = "管理后台 - 门墩儿-企业工商信息")
+@RestController
+@RequestMapping("/menduner/system/enterprise-business")
+@Validated
+public class EnterpriseBusinessController {
+
+    @Resource
+    private EnterpriseBusinessService enterpriseBusinessService;
+
+    @PostMapping("/create")
+    @Operation(summary = "创建门墩儿-企业工商信息")
+    @PreAuthorize("@ss.hasPermission('menduner:system:enterprise-business:create')")
+    public CommonResult<Long> createEnterpriseBusiness(@Valid @RequestBody EnterpriseBusinessSaveReqVO createReqVO) {
+        return success(enterpriseBusinessService.createEnterpriseBusiness(createReqVO));
+    }
+
+    @PutMapping("/update")
+    @Operation(summary = "更新门墩儿-企业工商信息")
+    @PreAuthorize("@ss.hasPermission('menduner:system:enterprise-business:update')")
+    public CommonResult<Boolean> updateEnterpriseBusiness(@Valid @RequestBody EnterpriseBusinessSaveReqVO updateReqVO) {
+        enterpriseBusinessService.updateEnterpriseBusiness(updateReqVO);
+        return success(true);
+    }
+
+    @DeleteMapping("/delete")
+    @Operation(summary = "删除门墩儿-企业工商信息")
+    @Parameter(name = "id", description = "编号", required = true)
+    @PreAuthorize("@ss.hasPermission('menduner:system:enterprise-business:delete')")
+    public CommonResult<Boolean> deleteEnterpriseBusiness(@RequestParam("id") Long id) {
+        enterpriseBusinessService.deleteEnterpriseBusiness(id);
+        return success(true);
+    }
+
+    @GetMapping("/get")
+    @Operation(summary = "获得门墩儿-企业工商信息")
+    @Parameter(name = "id", description = "编号", required = true, example = "1024")
+    @PreAuthorize("@ss.hasPermission('menduner:system:enterprise-business:query')")
+    public CommonResult<EnterpriseBusinessRespVO> getEnterpriseBusiness(@RequestParam("id") Long id) {
+        EnterpriseBusinessDO enterpriseBusiness = enterpriseBusinessService.getEnterpriseBusiness(id);
+        return success(BeanUtils.toBean(enterpriseBusiness, EnterpriseBusinessRespVO.class));
+    }
+
+    @GetMapping("/page")
+    @Operation(summary = "获得门墩儿-企业工商信息分页")
+    @PreAuthorize("@ss.hasPermission('menduner:system:enterprise-business:query')")
+    public CommonResult<PageResult<EnterpriseBusinessRespVO>> getEnterpriseBusinessPage(@Valid EnterpriseBusinessPageReqVO pageReqVO) {
+        PageResult<EnterpriseBusinessDO> pageResult = enterpriseBusinessService.getEnterpriseBusinessPage(pageReqVO);
+        return success(BeanUtils.toBean(pageResult, EnterpriseBusinessRespVO.class));
+    }
+
+    @GetMapping("/export-excel")
+    @Operation(summary = "导出门墩儿-企业工商信息 Excel")
+    @PreAuthorize("@ss.hasPermission('menduner:system:enterprise-business:export')")
+    @ApiAccessLog(operateType = EXPORT)
+    public void exportEnterpriseBusinessExcel(@Valid EnterpriseBusinessPageReqVO pageReqVO,
+                                              HttpServletResponse response) throws IOException {
+        pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE);
+        List<EnterpriseBusinessDO> list = enterpriseBusinessService.getEnterpriseBusinessPage(pageReqVO).getList();
+        // 导出 Excel
+        ExcelUtils.write(response, "门墩儿-企业工商信息.xls", "数据", EnterpriseBusinessRespVO.class,
+                BeanUtils.toBean(list, EnterpriseBusinessRespVO.class));
+    }
+
+}

+ 95 - 0
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/admin/enterprise/EnterpriseController.java

@@ -0,0 +1,95 @@
+package com.citu.module.menduner.system.controller.admin.enterprise;
+
+import org.springframework.web.bind.annotation.*;
+import javax.annotation.Resource;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.security.access.prepost.PreAuthorize;
+import io.swagger.v3.oas.annotations.tags.Tag;
+import io.swagger.v3.oas.annotations.Parameter;
+import io.swagger.v3.oas.annotations.Operation;
+
+import javax.validation.constraints.*;
+import javax.validation.*;
+import javax.servlet.http.*;
+import java.util.*;
+import java.io.IOException;
+
+import com.citu.framework.common.pojo.PageParam;
+import com.citu.framework.common.pojo.PageResult;
+import com.citu.framework.common.pojo.CommonResult;
+import com.citu.framework.common.util.object.BeanUtils;
+import static com.citu.framework.common.pojo.CommonResult.success;
+
+import com.citu.framework.excel.core.util.ExcelUtils;
+
+import com.citu.framework.apilog.core.annotation.ApiAccessLog;
+import static com.citu.framework.apilog.core.enums.OperateTypeEnum.*;
+
+import com.citu.module.menduner.system.controller.admin.enterprise.vo.*;
+import com.citu.module.menduner.system.dal.dataobject.enterprise.EnterpriseDO;
+import com.citu.module.menduner.system.service.enterprise.EnterpriseService;
+
+@Tag(name = "管理后台 - 门墩儿-企业信息")
+@RestController
+@RequestMapping("/menduner/system/enterprise")
+@Validated
+public class EnterpriseController {
+
+    @Resource
+    private EnterpriseService enterpriseService;
+
+    @PostMapping("/create")
+    @Operation(summary = "创建门墩儿-企业信息")
+    @PreAuthorize("@ss.hasPermission('menduner:system:enterprise:create')")
+    public CommonResult<Long> createEnterprise(@Valid @RequestBody EnterpriseSaveReqVO createReqVO) {
+        return success(enterpriseService.createEnterprise(createReqVO));
+    }
+
+    @PutMapping("/update")
+    @Operation(summary = "更新门墩儿-企业信息")
+    @PreAuthorize("@ss.hasPermission('menduner:system:enterprise:update')")
+    public CommonResult<Boolean> updateEnterprise(@Valid @RequestBody EnterpriseSaveReqVO updateReqVO) {
+        enterpriseService.updateEnterprise(updateReqVO);
+        return success(true);
+    }
+
+    @DeleteMapping("/delete")
+    @Operation(summary = "删除门墩儿-企业信息")
+    @Parameter(name = "id", description = "编号", required = true)
+    @PreAuthorize("@ss.hasPermission('menduner:system:enterprise:delete')")
+    public CommonResult<Boolean> deleteEnterprise(@RequestParam("id") Long id) {
+        enterpriseService.deleteEnterprise(id);
+        return success(true);
+    }
+
+    @GetMapping("/get")
+    @Operation(summary = "获得门墩儿-企业信息")
+    @Parameter(name = "id", description = "编号", required = true, example = "1024")
+    @PreAuthorize("@ss.hasPermission('menduner:system:enterprise:query')")
+    public CommonResult<EnterpriseRespVO> getEnterprise(@RequestParam("id") Long id) {
+        EnterpriseDO enterprise = enterpriseService.getEnterprise(id);
+        return success(BeanUtils.toBean(enterprise, EnterpriseRespVO.class));
+    }
+
+    @GetMapping("/page")
+    @Operation(summary = "获得门墩儿-企业信息分页")
+    @PreAuthorize("@ss.hasPermission('menduner:system:enterprise:query')")
+    public CommonResult<PageResult<EnterpriseRespVO>> getEnterprisePage(@Valid EnterprisePageReqVO pageReqVO) {
+        PageResult<EnterpriseDO> pageResult = enterpriseService.getEnterprisePage(pageReqVO);
+        return success(BeanUtils.toBean(pageResult, EnterpriseRespVO.class));
+    }
+
+    @GetMapping("/export-excel")
+    @Operation(summary = "导出门墩儿-企业信息 Excel")
+    @PreAuthorize("@ss.hasPermission('menduner:system:enterprise:export')")
+    @ApiAccessLog(operateType = EXPORT)
+    public void exportEnterpriseExcel(@Valid EnterprisePageReqVO pageReqVO,
+                                      HttpServletResponse response) throws IOException {
+        pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE);
+        List<EnterpriseDO> list = enterpriseService.getEnterprisePage(pageReqVO).getList();
+        // 导出 Excel
+        ExcelUtils.write(response, "门墩儿-企业信息.xls", "数据", EnterpriseRespVO.class,
+                BeanUtils.toBean(list, EnterpriseRespVO.class));
+    }
+
+}

+ 93 - 0
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/admin/enterprise/EnterpriseRegisterController.java

@@ -0,0 +1,93 @@
+package com.citu.module.menduner.system.controller.admin.enterprise;
+
+import com.citu.framework.apilog.core.annotation.ApiAccessLog;
+import com.citu.framework.common.pojo.CommonResult;
+import com.citu.framework.common.pojo.PageParam;
+import com.citu.framework.common.pojo.PageResult;
+import com.citu.framework.common.util.object.BeanUtils;
+import com.citu.framework.excel.core.util.ExcelUtils;
+import com.citu.module.menduner.system.controller.admin.enterprise.register.EnterpriseRegisterPageReqVO;
+import com.citu.module.menduner.system.controller.admin.enterprise.register.EnterpriseRegisterRespVO;
+import com.citu.module.menduner.system.controller.admin.enterprise.register.EnterpriseRegisterSaveReqVO;
+import com.citu.module.menduner.system.dal.dataobject.enterprise.EnterpriseRegisterDO;
+import com.citu.module.menduner.system.service.enterprise.EnterpriseRegisterService;
+import io.swagger.v3.oas.annotations.Operation;
+import io.swagger.v3.oas.annotations.Parameter;
+import io.swagger.v3.oas.annotations.tags.Tag;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.*;
+
+import javax.annotation.Resource;
+import javax.servlet.http.HttpServletResponse;
+import javax.validation.Valid;
+import java.io.IOException;
+import java.util.List;
+
+import static com.citu.framework.apilog.core.enums.OperateTypeEnum.EXPORT;
+import static com.citu.framework.common.pojo.CommonResult.success;
+
+@Tag(name = "管理后台 - 门墩儿-企业注册申请")
+@RestController
+@RequestMapping("/menduner/system/enterprise-register")
+@Validated
+public class EnterpriseRegisterController {
+
+    @Resource
+    private EnterpriseRegisterService enterpriseRegisterService;
+
+    @PostMapping("/create")
+    @Operation(summary = "创建门墩儿-企业注册申请")
+    @PreAuthorize("@ss.hasPermission('menduner:system:enterprise-register:create')")
+    public CommonResult<Long> createEnterpriseRegister(@Valid @RequestBody EnterpriseRegisterSaveReqVO createReqVO) {
+        return success(enterpriseRegisterService.createEnterpriseRegister(createReqVO));
+    }
+
+    @PutMapping("/update")
+    @Operation(summary = "更新门墩儿-企业注册申请")
+    @PreAuthorize("@ss.hasPermission('menduner:system:enterprise-register:update')")
+    public CommonResult<Boolean> updateEnterpriseRegister(@Valid @RequestBody EnterpriseRegisterSaveReqVO updateReqVO) {
+        enterpriseRegisterService.updateEnterpriseRegister(updateReqVO);
+        return success(true);
+    }
+
+    @DeleteMapping("/delete")
+    @Operation(summary = "删除门墩儿-企业注册申请")
+    @Parameter(name = "id", description = "编号", required = true)
+    @PreAuthorize("@ss.hasPermission('menduner:system:enterprise-register:delete')")
+    public CommonResult<Boolean> deleteEnterpriseRegister(@RequestParam("id") Long id) {
+        enterpriseRegisterService.deleteEnterpriseRegister(id);
+        return success(true);
+    }
+
+    @GetMapping("/get")
+    @Operation(summary = "获得门墩儿-企业注册申请")
+    @Parameter(name = "id", description = "编号", required = true, example = "1024")
+    @PreAuthorize("@ss.hasPermission('menduner:system:enterprise-register:query')")
+    public CommonResult<EnterpriseRegisterRespVO> getEnterpriseRegister(@RequestParam("id") Long id) {
+        EnterpriseRegisterDO enterpriseRegister = enterpriseRegisterService.getEnterpriseRegister(id);
+        return success(BeanUtils.toBean(enterpriseRegister, EnterpriseRegisterRespVO.class));
+    }
+
+    @GetMapping("/page")
+    @Operation(summary = "获得门墩儿-企业注册申请分页")
+    @PreAuthorize("@ss.hasPermission('menduner:system:enterprise-register:query')")
+    public CommonResult<PageResult<EnterpriseRegisterRespVO>> getEnterpriseRegisterPage(@Valid EnterpriseRegisterPageReqVO pageReqVO) {
+        PageResult<EnterpriseRegisterDO> pageResult = enterpriseRegisterService.getEnterpriseRegisterPage(pageReqVO);
+        return success(BeanUtils.toBean(pageResult, EnterpriseRegisterRespVO.class));
+    }
+
+    @GetMapping("/export-excel")
+    @Operation(summary = "导出门墩儿-企业注册申请 Excel")
+    @PreAuthorize("@ss.hasPermission('menduner:system:enterprise-register:export')")
+    @ApiAccessLog(operateType = EXPORT)
+    public void exportEnterpriseRegisterExcel(@Valid EnterpriseRegisterPageReqVO pageReqVO,
+                                              HttpServletResponse response) throws IOException {
+        pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE);
+        List<EnterpriseRegisterDO> list = enterpriseRegisterService.getEnterpriseRegisterPage(pageReqVO).getList();
+        // 导出 Excel
+        ExcelUtils.write(response, "门墩儿-企业注册申请.xls", "数据", EnterpriseRegisterRespVO.class,
+                BeanUtils.toBean(list, EnterpriseRegisterRespVO.class));
+    }
+
+}

+ 93 - 0
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/admin/enterprise/EnterpriseUserBindController.java

@@ -0,0 +1,93 @@
+package com.citu.module.menduner.system.controller.admin.enterprise;
+
+import com.citu.framework.apilog.core.annotation.ApiAccessLog;
+import com.citu.framework.common.pojo.CommonResult;
+import com.citu.framework.common.pojo.PageParam;
+import com.citu.framework.common.pojo.PageResult;
+import com.citu.framework.common.util.object.BeanUtils;
+import com.citu.framework.excel.core.util.ExcelUtils;
+import com.citu.module.menduner.system.controller.admin.enterprise.bind.EnterpriseUserBindPageReqVO;
+import com.citu.module.menduner.system.controller.admin.enterprise.bind.EnterpriseUserBindRespVO;
+import com.citu.module.menduner.system.controller.admin.enterprise.bind.EnterpriseUserBindSaveReqVO;
+import com.citu.module.menduner.system.dal.dataobject.enterprise.EnterpriseUserBindDO;
+import com.citu.module.menduner.system.service.enterprise.EnterpriseUserBindService;
+import io.swagger.v3.oas.annotations.Operation;
+import io.swagger.v3.oas.annotations.Parameter;
+import io.swagger.v3.oas.annotations.tags.Tag;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.*;
+
+import javax.annotation.Resource;
+import javax.servlet.http.HttpServletResponse;
+import javax.validation.Valid;
+import java.io.IOException;
+import java.util.List;
+
+import static com.citu.framework.apilog.core.enums.OperateTypeEnum.EXPORT;
+import static com.citu.framework.common.pojo.CommonResult.success;
+
+@Tag(name = "管理后台 - 门墩儿-企业登录用户")
+@RestController
+@RequestMapping("/menduner/system/enterprise-user-bind")
+@Validated
+public class EnterpriseUserBindController {
+
+    @Resource
+    private EnterpriseUserBindService enterpriseUserBindService;
+
+    @PostMapping("/create")
+    @Operation(summary = "创建门墩儿-企业登录用户")
+    @PreAuthorize("@ss.hasPermission('menduner:system:enterprise-user-bind:create')")
+    public CommonResult<Long> createEnterpriseUserBind(@Valid @RequestBody EnterpriseUserBindSaveReqVO createReqVO) {
+        return success(enterpriseUserBindService.createEnterpriseUserBind(createReqVO));
+    }
+
+    @PutMapping("/update")
+    @Operation(summary = "更新门墩儿-企业登录用户")
+    @PreAuthorize("@ss.hasPermission('menduner:system:enterprise-user-bind:update')")
+    public CommonResult<Boolean> updateEnterpriseUserBind(@Valid @RequestBody EnterpriseUserBindSaveReqVO updateReqVO) {
+        enterpriseUserBindService.updateEnterpriseUserBind(updateReqVO);
+        return success(true);
+    }
+
+    @DeleteMapping("/delete")
+    @Operation(summary = "删除门墩儿-企业登录用户")
+    @Parameter(name = "id", description = "编号", required = true)
+    @PreAuthorize("@ss.hasPermission('menduner:system:enterprise-user-bind:delete')")
+    public CommonResult<Boolean> deleteEnterpriseUserBind(@RequestParam("id") Long id) {
+        enterpriseUserBindService.deleteEnterpriseUserBind(id);
+        return success(true);
+    }
+
+    @GetMapping("/get")
+    @Operation(summary = "获得门墩儿-企业登录用户")
+    @Parameter(name = "id", description = "编号", required = true, example = "1024")
+    @PreAuthorize("@ss.hasPermission('menduner:system:enterprise-user-bind:query')")
+    public CommonResult<EnterpriseUserBindRespVO> getEnterpriseUserBind(@RequestParam("id") Long id) {
+        EnterpriseUserBindDO enterpriseUserBind = enterpriseUserBindService.getEnterpriseUserBind(id);
+        return success(BeanUtils.toBean(enterpriseUserBind, EnterpriseUserBindRespVO.class));
+    }
+
+    @GetMapping("/page")
+    @Operation(summary = "获得门墩儿-企业登录用户分页")
+    @PreAuthorize("@ss.hasPermission('menduner:system:enterprise-user-bind:query')")
+    public CommonResult<PageResult<EnterpriseUserBindRespVO>> getEnterpriseUserBindPage(@Valid EnterpriseUserBindPageReqVO pageReqVO) {
+        PageResult<EnterpriseUserBindDO> pageResult = enterpriseUserBindService.getEnterpriseUserBindPage(pageReqVO);
+        return success(BeanUtils.toBean(pageResult, EnterpriseUserBindRespVO.class));
+    }
+
+    @GetMapping("/export-excel")
+    @Operation(summary = "导出门墩儿-企业登录用户 Excel")
+    @PreAuthorize("@ss.hasPermission('menduner:system:enterprise-user-bind:export')")
+    @ApiAccessLog(operateType = EXPORT)
+    public void exportEnterpriseUserBindExcel(@Valid EnterpriseUserBindPageReqVO pageReqVO,
+                                              HttpServletResponse response) throws IOException {
+        pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE);
+        List<EnterpriseUserBindDO> list = enterpriseUserBindService.getEnterpriseUserBindPage(pageReqVO).getList();
+        // 导出 Excel
+        ExcelUtils.write(response, "门墩儿-企业登录用户.xls", "数据", EnterpriseUserBindRespVO.class,
+                BeanUtils.toBean(list, EnterpriseUserBindRespVO.class));
+    }
+
+}

+ 31 - 0
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/admin/enterprise/address/EnterpriseAddressPageReqVO.java

@@ -0,0 +1,31 @@
+package com.citu.module.menduner.system.controller.admin.enterprise.address;
+
+
+import com.citu.framework.common.pojo.PageParam;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.ToString;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import java.time.LocalDateTime;
+
+import static com.citu.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
+
+@Schema(description = "管理后台 - 门墩儿-企业地址分页 Request VO")
+@Data
+@EqualsAndHashCode(callSuper = true)
+@ToString(callSuper = true)
+public class EnterpriseAddressPageReqVO extends PageParam {
+
+    @Schema(description = "企业id", example = "27902")
+    private Long enterpriseId;
+
+    @Schema(description = "公司地址")
+    private String address;
+
+    @Schema(description = "创建时间")
+    @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
+    private LocalDateTime[] createTime;
+
+}

+ 39 - 0
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/admin/enterprise/address/EnterpriseAddressRespVO.java

@@ -0,0 +1,39 @@
+package com.citu.module.menduner.system.controller.admin.enterprise.address;
+
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.*;
+
+import java.time.LocalDateTime;
+import com.alibaba.excel.annotation.*;
+
+@Schema(description = "管理后台 - 门墩儿-企业地址 Response VO")
+@Data
+@ExcelIgnoreUnannotated
+public class EnterpriseAddressRespVO {
+
+    @Schema(description = "id", requiredMode = Schema.RequiredMode.REQUIRED, example = "5274")
+    @ExcelProperty("id")
+    private Long id;
+
+    @Schema(description = "企业id", example = "27902")
+    @ExcelProperty("企业id")
+    private Long enterpriseId;
+
+    @Schema(description = "公司地址")
+    @ExcelProperty("公司地址")
+    private String address;
+
+    @Schema(description = "经度")
+    @ExcelProperty("经度")
+    private String longitude;
+
+    @Schema(description = "维度")
+    @ExcelProperty("维度")
+    private String latitude;
+
+    @Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED)
+    @ExcelProperty("创建时间")
+    private LocalDateTime createTime;
+
+}

+ 26 - 0
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/admin/enterprise/address/EnterpriseAddressSaveReqVO.java

@@ -0,0 +1,26 @@
+package com.citu.module.menduner.system.controller.admin.enterprise.address;
+
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+@Schema(description = "管理后台 - 门墩儿-企业地址新增/修改 Request VO")
+@Data
+public class EnterpriseAddressSaveReqVO {
+
+    @Schema(description = "id", requiredMode = Schema.RequiredMode.REQUIRED, example = "5274")
+    private Long id;
+
+    @Schema(description = "企业id", example = "27902")
+    private Long enterpriseId;
+
+    @Schema(description = "公司地址")
+    private String address;
+
+    @Schema(description = "经度")
+    private String longitude;
+
+    @Schema(description = "维度")
+    private String latitude;
+
+}

+ 34 - 0
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/admin/enterprise/bind/EnterpriseUserBindPageReqVO.java

@@ -0,0 +1,34 @@
+package com.citu.module.menduner.system.controller.admin.enterprise.bind;
+
+
+import lombok.*;
+import io.swagger.v3.oas.annotations.media.Schema;
+import com.citu.framework.common.pojo.PageParam;
+import org.springframework.format.annotation.DateTimeFormat;
+import java.time.LocalDateTime;
+
+import static com.citu.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
+
+@Schema(description = "管理后台 - 门墩儿-企业登录用户分页 Request VO")
+@Data
+@EqualsAndHashCode(callSuper = true)
+@ToString(callSuper = true)
+public class EnterpriseUserBindPageReqVO extends PageParam {
+
+    @Schema(description = "企业id", example = "616")
+    private Long enterpriseId;
+
+    @Schema(description = "用户id", example = "23317")
+    private String userId;
+
+    @Schema(description = "帐号状态(0正常 1停用 2 等待审核 3不通过)", example = "2")
+    private Integer status;
+
+    @Schema(description = "最后登录IP")
+    private String loginIp;
+
+    @Schema(description = "创建时间")
+    @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
+    private LocalDateTime[] createTime;
+
+}

+ 50 - 0
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/admin/enterprise/bind/EnterpriseUserBindRespVO.java

@@ -0,0 +1,50 @@
+package com.citu.module.menduner.system.controller.admin.enterprise.bind;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.*;
+
+import java.time.LocalDateTime;
+import com.alibaba.excel.annotation.*;
+import com.citu.framework.excel.core.annotations.DictFormat;
+import com.citu.framework.excel.core.convert.DictConvert;
+
+@Schema(description = "管理后台 - 门墩儿-企业登录用户 Response VO")
+@Data
+@ExcelIgnoreUnannotated
+public class EnterpriseUserBindRespVO {
+
+    @Schema(description = "id", requiredMode = Schema.RequiredMode.REQUIRED, example = "23697")
+    @ExcelProperty("id")
+    private Long id;
+
+    @Schema(description = "企业id", requiredMode = Schema.RequiredMode.REQUIRED, example = "616")
+    @ExcelProperty("企业id")
+    private Long enterpriseId;
+
+    @Schema(description = "用户id", requiredMode = Schema.RequiredMode.REQUIRED, example = "23317")
+    @ExcelProperty("用户id")
+    private String userId;
+
+    @Schema(description = "帐号状态(0正常 1停用 2 等待审核 3不通过)", requiredMode = Schema.RequiredMode.REQUIRED, example = "2")
+    @ExcelProperty(value = "帐号状态(0正常 1停用 2 等待审核 3不通过)", converter = DictConvert.class)
+    @DictFormat("menduner_status") // TODO 代码优化:建议设置到对应的 DictTypeConstants 枚举类中
+    private Integer status;
+
+    @Schema(description = "最后登录IP")
+    @ExcelProperty("最后登录IP")
+    private String loginIp;
+
+    @Schema(description = "最后登录时间")
+    @ExcelProperty("最后登录时间")
+    private LocalDateTime loginDate;
+
+    @Schema(description = "用户类型(0普通企业用户 1 企业管理员)", example = "2")
+    @ExcelProperty(value = "用户类型(0普通企业用户 1 企业管理员)", converter = DictConvert.class)
+    @DictFormat("user_type") // TODO 代码优化:建议设置到对应的 DictTypeConstants 枚举类中
+    private Integer userType;
+
+    @Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED)
+    @ExcelProperty("创建时间")
+    private LocalDateTime createTime;
+
+}

+ 38 - 0
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/admin/enterprise/bind/EnterpriseUserBindSaveReqVO.java

@@ -0,0 +1,38 @@
+package com.citu.module.menduner.system.controller.admin.enterprise.bind;
+
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.*;
+
+import javax.validation.constraints.*;
+import java.time.LocalDateTime;
+
+@Schema(description = "管理后台 - 门墩儿-企业登录用户新增/修改 Request VO")
+@Data
+public class EnterpriseUserBindSaveReqVO {
+
+    @Schema(description = "id", requiredMode = Schema.RequiredMode.REQUIRED, example = "23697")
+    private Long id;
+
+    @Schema(description = "企业id", requiredMode = Schema.RequiredMode.REQUIRED, example = "616")
+    @NotNull(message = "企业id不能为空")
+    private Long enterpriseId;
+
+    @Schema(description = "用户id", requiredMode = Schema.RequiredMode.REQUIRED, example = "23317")
+    @NotEmpty(message = "用户id不能为空")
+    private String userId;
+
+    @Schema(description = "帐号状态(0正常 1停用 2 等待审核 3不通过)", requiredMode = Schema.RequiredMode.REQUIRED, example = "2")
+    @NotNull(message = "帐号状态(0正常 1停用 2 等待审核 3不通过)不能为空")
+    private Integer status;
+
+    @Schema(description = "最后登录IP")
+    private String loginIp;
+
+    @Schema(description = "最后登录时间")
+    private LocalDateTime loginDate;
+
+    @Schema(description = "用户类型(0普通企业用户 1 企业管理员)", example = "2")
+    private Integer userType;
+
+}

+ 62 - 0
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/admin/enterprise/business/EnterpriseBusinessPageReqVO.java

@@ -0,0 +1,62 @@
+package com.citu.module.menduner.system.controller.admin.enterprise.business;
+
+import lombok.*;
+import io.swagger.v3.oas.annotations.media.Schema;
+import com.citu.framework.common.pojo.PageParam;
+import org.springframework.format.annotation.DateTimeFormat;
+import java.time.LocalDateTime;
+
+import static com.citu.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
+
+@Schema(description = "管理后台 - 门墩儿-企业工商信息分页 Request VO")
+@Data
+@EqualsAndHashCode(callSuper = true)
+@ToString(callSuper = true)
+public class EnterpriseBusinessPageReqVO extends PageParam {
+
+    @Schema(description = "企业id", example = "15967")
+    private Long enterpriseId;
+
+    @Schema(description = "统一社会信用代码")
+    private String code;
+
+    @Schema(description = "企业名称", example = "李四")
+    private String name;
+
+    @Schema(description = "企业类型", example = "2")
+    private String type;
+
+    @Schema(description = "所属地区")
+    private String area;
+
+    @Schema(description = "注册地址")
+    private String address;
+
+    @Schema(description = "法定代表人")
+    private String representative;
+
+    @Schema(description = "成立时间")
+    @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
+    private LocalDateTime[] establishmentTime;
+
+    @Schema(description = "核准日期")
+    @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
+    private String[] approvalTime;
+
+    @Schema(description = "曾用名", example = "芋艿")
+    private String formerName;
+
+    @Schema(description = "所属行业")
+    private String industry;
+
+    @Schema(description = "注册机关")
+    private String registrationAuthority;
+
+    @Schema(description = "经营状态", example = "1")
+    private String businessStatus;
+
+    @Schema(description = "创建时间")
+    @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
+    private LocalDateTime[] createTime;
+
+}

+ 90 - 0
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/admin/enterprise/business/EnterpriseBusinessRespVO.java

@@ -0,0 +1,90 @@
+package com.citu.module.menduner.system.controller.admin.enterprise.business;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.*;
+
+import java.time.LocalDateTime;
+import com.alibaba.excel.annotation.*;
+import com.citu.framework.excel.core.annotations.DictFormat;
+import com.citu.framework.excel.core.convert.DictConvert;
+
+@Schema(description = "管理后台 - 门墩儿-企业工商信息 Response VO")
+@Data
+@ExcelIgnoreUnannotated
+public class EnterpriseBusinessRespVO {
+
+    @Schema(description = "id", requiredMode = Schema.RequiredMode.REQUIRED, example = "8156")
+    @ExcelProperty("id")
+    private Long id;
+
+    @Schema(description = "企业id", example = "15967")
+    @ExcelProperty("企业id")
+    private Long enterpriseId;
+
+    @Schema(description = "统一社会信用代码")
+    @ExcelProperty("统一社会信用代码")
+    private String code;
+
+    @Schema(description = "企业名称", example = "李四")
+    @ExcelProperty("企业名称")
+    private String name;
+
+    @Schema(description = "企业类型", example = "2")
+    @ExcelProperty(value = "企业类型", converter = DictConvert.class)
+    @DictFormat("menduner_enterprise_type") // TODO 代码优化:建议设置到对应的 DictTypeConstants 枚举类中
+    private String type;
+
+    @Schema(description = "所属地区")
+    @ExcelProperty("所属地区")
+    private String area;
+
+    @Schema(description = "注册地址")
+    @ExcelProperty("注册地址")
+    private String address;
+
+    @Schema(description = "法定代表人")
+    @ExcelProperty("法定代表人")
+    private String representative;
+
+    @Schema(description = "成立时间")
+    @ExcelProperty("成立时间")
+    private LocalDateTime establishmentTime;
+
+    @Schema(description = "注册资金")
+    @ExcelProperty("注册资金")
+    private String registeredCapital;
+
+    @Schema(description = "核准日期")
+    @ExcelProperty("核准日期")
+    private String approvalTime;
+
+    @Schema(description = "曾用名", example = "芋艿")
+    @ExcelProperty("曾用名")
+    private String formerName;
+
+    @Schema(description = "所属行业")
+    @ExcelProperty("所属行业")
+    private String industry;
+
+    @Schema(description = "注册机关")
+    @ExcelProperty("注册机关")
+    private String registrationAuthority;
+
+    @Schema(description = "经营状态", example = "1")
+    @ExcelProperty(value = "经营状态", converter = DictConvert.class)
+    @DictFormat("menduner_business_status") // TODO 代码优化:建议设置到对应的 DictTypeConstants 枚举类中
+    private String businessStatus;
+
+    @Schema(description = "营业期限")
+    @ExcelProperty("营业期限")
+    private String businessTerm;
+
+    @Schema(description = "经营范围")
+    @ExcelProperty("经营范围")
+    private String businessScope;
+
+    @Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED)
+    @ExcelProperty("创建时间")
+    private LocalDateTime createTime;
+
+}

+ 63 - 0
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/admin/enterprise/business/EnterpriseBusinessSaveReqVO.java

@@ -0,0 +1,63 @@
+package com.citu.module.menduner.system.controller.admin.enterprise.business;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.*;
+
+import java.time.LocalDateTime;
+
+@Schema(description = "管理后台 - 门墩儿-企业工商信息新增/修改 Request VO")
+@Data
+public class EnterpriseBusinessSaveReqVO {
+
+    @Schema(description = "id", requiredMode = Schema.RequiredMode.REQUIRED, example = "8156")
+    private Long id;
+
+    @Schema(description = "企业id", example = "15967")
+    private Long enterpriseId;
+
+    @Schema(description = "统一社会信用代码")
+    private String code;
+
+    @Schema(description = "企业名称", example = "李四")
+    private String name;
+
+    @Schema(description = "企业类型", example = "2")
+    private String type;
+
+    @Schema(description = "所属地区")
+    private String area;
+
+    @Schema(description = "注册地址")
+    private String address;
+
+    @Schema(description = "法定代表人")
+    private String representative;
+
+    @Schema(description = "成立时间")
+    private LocalDateTime establishmentTime;
+
+    @Schema(description = "注册资金")
+    private String registeredCapital;
+
+    @Schema(description = "核准日期")
+    private String approvalTime;
+
+    @Schema(description = "曾用名", example = "芋艿")
+    private String formerName;
+
+    @Schema(description = "所属行业")
+    private String industry;
+
+    @Schema(description = "注册机关")
+    private String registrationAuthority;
+
+    @Schema(description = "经营状态", example = "1")
+    private String businessStatus;
+
+    @Schema(description = "营业期限")
+    private String businessTerm;
+
+    @Schema(description = "经营范围")
+    private String businessScope;
+
+}

+ 37 - 0
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/admin/enterprise/register/EnterpriseRegisterPageReqVO.java

@@ -0,0 +1,37 @@
+package com.citu.module.menduner.system.controller.admin.enterprise.register;
+
+
+import lombok.*;
+import io.swagger.v3.oas.annotations.media.Schema;
+import com.citu.framework.common.pojo.PageParam;
+import org.springframework.format.annotation.DateTimeFormat;
+import java.time.LocalDateTime;
+
+import static com.citu.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
+
+@Schema(description = "管理后台 - 门墩儿-企业注册申请分页 Request VO")
+@Data
+@EqualsAndHashCode(callSuper = true)
+@ToString(callSuper = true)
+public class EnterpriseRegisterPageReqVO extends PageParam {
+
+    @Schema(description = "用户id", example = "952")
+    private Long userId;
+
+    @Schema(description = "企业名称", example = "芋艿")
+    private String name;
+
+    @Schema(description = "联系电话")
+    private String phone;
+
+    @Schema(description = "联系邮箱")
+    private String email;
+
+    @Schema(description = "帐号状态(0正常 1停用 2 等待审核 3不通过)", example = "2")
+    private Integer status;
+
+    @Schema(description = "创建时间")
+    @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
+    private LocalDateTime[] createTime;
+
+}

+ 58 - 0
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/admin/enterprise/register/EnterpriseRegisterRespVO.java

@@ -0,0 +1,58 @@
+package com.citu.module.menduner.system.controller.admin.enterprise.register;
+
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.*;
+
+import java.time.LocalDateTime;
+import com.alibaba.excel.annotation.*;
+import com.citu.framework.excel.core.annotations.DictFormat;
+import com.citu.framework.excel.core.convert.DictConvert;
+
+@Schema(description = "管理后台 - 门墩儿-企业注册申请 Response VO")
+@Data
+@ExcelIgnoreUnannotated
+public class EnterpriseRegisterRespVO {
+
+    @Schema(description = "id", requiredMode = Schema.RequiredMode.REQUIRED, example = "9045")
+    @ExcelProperty("id")
+    private Long id;
+
+    @Schema(description = "用户id", example = "952")
+    @ExcelProperty("用户id")
+    private Long userId;
+
+    @Schema(description = "企业名称", example = "芋艿")
+    @ExcelProperty("企业名称")
+    private String name;
+
+    @Schema(description = "联系电话")
+    @ExcelProperty("联系电话")
+    private String phone;
+
+    @Schema(description = "联系邮箱")
+    @ExcelProperty("联系邮箱")
+    private String email;
+
+    @Schema(description = "营业执照图片", example = "https://www.iocoder.cn")
+    @ExcelProperty("营业执照图片")
+    private String businessLicenseUrl;
+
+    @Schema(description = "帐号状态(0正常 1停用 2 等待审核 3不通过)", requiredMode = Schema.RequiredMode.REQUIRED, example = "2")
+    @ExcelProperty(value = "帐号状态(0正常 1停用 2 等待审核 3不通过)", converter = DictConvert.class)
+    @DictFormat("menduner_status") // TODO 代码优化:建议设置到对应的 DictTypeConstants 枚举类中
+    private Integer status;
+
+    @Schema(description = "审核原因", example = "不喜欢")
+    @ExcelProperty("审核原因")
+    private String reason;
+
+    @Schema(description = "备注", example = "你猜")
+    @ExcelProperty("备注")
+    private String remark;
+
+    @Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED)
+    @ExcelProperty("创建时间")
+    private LocalDateTime createTime;
+
+}

+ 41 - 0
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/admin/enterprise/register/EnterpriseRegisterSaveReqVO.java

@@ -0,0 +1,41 @@
+package com.citu.module.menduner.system.controller.admin.enterprise.register;
+
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.*;
+
+import javax.validation.constraints.*;
+
+@Schema(description = "管理后台 - 门墩儿-企业注册申请新增/修改 Request VO")
+@Data
+public class EnterpriseRegisterSaveReqVO {
+
+    @Schema(description = "id", requiredMode = Schema.RequiredMode.REQUIRED, example = "9045")
+    private Long id;
+
+    @Schema(description = "用户id", example = "952")
+    private Long userId;
+
+    @Schema(description = "企业名称", example = "芋艿")
+    private String name;
+
+    @Schema(description = "联系电话")
+    private String phone;
+
+    @Schema(description = "联系邮箱")
+    private String email;
+
+    @Schema(description = "营业执照图片", example = "https://www.iocoder.cn")
+    private String businessLicenseUrl;
+
+    @Schema(description = "帐号状态(0正常 1停用 2 等待审核 3不通过)", requiredMode = Schema.RequiredMode.REQUIRED, example = "2")
+    @NotNull(message = "帐号状态(0正常 1停用 2 等待审核 3不通过)不能为空")
+    private Integer status;
+
+    @Schema(description = "审核原因", example = "不喜欢")
+    private String reason;
+
+    @Schema(description = "备注", example = "你猜")
+    private String remark;
+
+}

+ 48 - 0
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/admin/enterprise/vo/EnterprisePageReqVO.java

@@ -0,0 +1,48 @@
+package com.citu.module.menduner.system.controller.admin.enterprise.vo;
+
+
+import lombok.*;
+import java.util.*;
+import io.swagger.v3.oas.annotations.media.Schema;
+import com.citu.framework.common.pojo.PageParam;
+import org.springframework.format.annotation.DateTimeFormat;
+import java.time.LocalDateTime;
+
+import static com.citu.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
+
+@Schema(description = "管理后台 - 门墩儿-企业信息分页 Request VO")
+@Data
+@EqualsAndHashCode(callSuper = true)
+@ToString(callSuper = true)
+public class EnterprisePageReqVO extends PageParam {
+
+
+    @Schema(description = "上级id", example = "123")
+    private Long parentId;
+
+    @Schema(description = "企业全称", example = "广州xx科技")
+    private String name;
+
+    @Schema(description = "企业别称", example = "xx科技")
+    private String anotherName;
+
+    @Schema(description = "联系人")
+    private String contacts;
+
+    @Schema(description = "联系电话")
+    private String phone;
+
+    @Schema(description = "所在行业", example = "16657")
+    private Long industryId;
+
+    @Schema(description = "融资阶段(未融资,天使轮,A轮,B轮,C轮,D轮以上,已上市,不需要融资)", example = "2")
+    private Integer financingStatus;
+
+    @Schema(description = "人员规模(0-20人,20-99人,100-499人,500-999人,1000-9999人,9999人以上)")
+    private Integer scale;
+
+    @Schema(description = "创建时间")
+    @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
+    private LocalDateTime[] createTime;
+
+}

+ 91 - 0
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/admin/enterprise/vo/EnterpriseRespVO.java

@@ -0,0 +1,91 @@
+package com.citu.module.menduner.system.controller.admin.enterprise.vo;
+
+import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
+import com.alibaba.excel.annotation.ExcelProperty;
+import com.citu.framework.excel.core.annotations.DictFormat;
+import com.citu.framework.excel.core.convert.DictConvert;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+import java.time.LocalDateTime;
+
+@Schema(description = "管理后台 - 门墩儿-企业信息 Response VO")
+@Data
+@ExcelIgnoreUnannotated
+public class EnterpriseRespVO {
+
+    @Schema(description = "id", requiredMode = Schema.RequiredMode.REQUIRED, example = "20137")
+    @ExcelProperty("id")
+    private Long id;
+
+    @Schema(description = "上级id", example = "20136")
+    @ExcelProperty("上级id")
+    private Long parentId;
+
+    @Schema(description = "企业全称", example = "广州xx科技")
+    @ExcelProperty("企业全称")
+    private String name;
+
+    @Schema(description = "企业别称", example = "xx科技")
+    @ExcelProperty("企业别称")
+    private String anotherName;
+
+    @Schema(description = "企业官网")
+    @ExcelProperty("企业官网")
+    private String website;
+
+    @Schema(description = "公司简介")
+    @ExcelProperty("公司简介")
+    private String introduce;
+
+    @Schema(description = "联系人")
+    @ExcelProperty("联系人")
+    private String contacts;
+
+    @Schema(description = "联系电话")
+    @ExcelProperty("联系电话")
+    private String phone;
+
+    @Schema(description = "logo图片地址", example = "https://www.iocoder.cn")
+    @ExcelProperty("logo图片地址")
+    private String logoUrl;
+
+    @Schema(description = "所在行业", example = "16657")
+    @ExcelProperty("所在行业")
+    private Long industryId;
+
+    @Schema(description = "融资阶段(未融资,天使轮,A轮,B轮,C轮,D轮以上,已上市,不需要融资)", example = "2")
+    @ExcelProperty(value = "融资阶段(未融资,天使轮,A轮,B轮,C轮,D轮以上,已上市,不需要融资)", converter = DictConvert.class)
+    @DictFormat("menduner_financing_status") // TODO 代码优化:建议设置到对应的 DictTypeConstants 枚举类中
+    private Integer financingStatus;
+
+    @Schema(description = "人员规模(0-20人,20-99人,100-499人,500-999人,1000-9999人,9999人以上)")
+    @ExcelProperty(value = "人员规模(0-20人,20-99人,100-499人,500-999人,1000-9999人,9999人以上)", converter = DictConvert.class)
+    @DictFormat("menduner_scale") // TODO 代码优化:建议设置到对应的 DictTypeConstants 枚举类中
+    private Integer scale;
+
+    @Schema(description = "公司福利")
+    @ExcelProperty("公司福利")
+    private String welfareList;
+
+    @Schema(description = "公司相册")
+    @ExcelProperty("公司相册")
+    private String albumList;
+
+    @Schema(description = "上班时间")
+    @ExcelProperty("上班时间")
+    private String workTime;
+
+    @Schema(description = "发展历程")
+    @ExcelProperty("发展历程")
+    private String developHistory;
+
+    @Schema(description = "获得荣誉")
+    @ExcelProperty("获得荣誉")
+    private String receivedHonors;
+
+    @Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED)
+    @ExcelProperty("创建时间")
+    private LocalDateTime createTime;
+
+}

+ 61 - 0
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/admin/enterprise/vo/EnterpriseSaveReqVO.java

@@ -0,0 +1,61 @@
+package com.citu.module.menduner.system.controller.admin.enterprise.vo;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+@Schema(description = "管理后台 - 门墩儿-企业信息新增/修改 Request VO")
+@Data
+public class EnterpriseSaveReqVO {
+
+    @Schema(description = "id", requiredMode = Schema.RequiredMode.REQUIRED, example = "20137")
+    private Long id;
+
+    @Schema(description = "上级id", example = "20136")
+    private Long parentId;
+
+    @Schema(description = "企业全称", example = "广州xx科技")
+    private String name;
+
+    @Schema(description = "企业别称", example = "xx科技")
+    private String anotherName;
+
+    @Schema(description = "企业官网")
+    private String website;
+
+    @Schema(description = "公司简介")
+    private String introduce;
+
+    @Schema(description = "联系人")
+    private String contacts;
+
+    @Schema(description = "联系电话")
+    private String phone;
+
+    @Schema(description = "logo图片地址", example = "https://www.iocoder.cn")
+    private String logoUrl;
+
+    @Schema(description = "所在行业", example = "16657")
+    private Long industryId;
+
+    @Schema(description = "融资阶段(未融资,天使轮,A轮,B轮,C轮,D轮以上,已上市,不需要融资)", example = "2")
+    private Integer financingStatus;
+
+    @Schema(description = "人员规模(0-20人,20-99人,100-499人,500-999人,1000-9999人,9999人以上)")
+    private Integer scale;
+
+    @Schema(description = "公司福利")
+    private String welfareList;
+
+    @Schema(description = "公司相册")
+    private String albumList;
+
+    @Schema(description = "上班时间")
+    private String workTime;
+
+    @Schema(description = "发展历程")
+    private String developHistory;
+
+    @Schema(description = "获得荣誉")
+    private String receivedHonors;
+
+}

+ 94 - 0
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/admin/job/JobAdvertisedController.java

@@ -0,0 +1,94 @@
+package com.citu.module.menduner.system.controller.admin.job;
+
+
+import com.citu.framework.apilog.core.annotation.ApiAccessLog;
+import com.citu.framework.common.pojo.CommonResult;
+import com.citu.framework.common.pojo.PageParam;
+import com.citu.framework.common.pojo.PageResult;
+import com.citu.framework.common.util.object.BeanUtils;
+import com.citu.framework.excel.core.util.ExcelUtils;
+import com.citu.module.menduner.system.controller.admin.job.vo.JobAdvertisedPageReqVO;
+import com.citu.module.menduner.system.controller.admin.job.vo.JobAdvertisedRespVO;
+import com.citu.module.menduner.system.controller.admin.job.vo.JobAdvertisedSaveReqVO;
+import com.citu.module.menduner.system.dal.dataobject.job.JobAdvertisedDO;
+import com.citu.module.menduner.system.service.job.JobAdvertisedService;
+import io.swagger.v3.oas.annotations.Operation;
+import io.swagger.v3.oas.annotations.Parameter;
+import io.swagger.v3.oas.annotations.tags.Tag;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.*;
+
+import javax.annotation.Resource;
+import javax.servlet.http.HttpServletResponse;
+import javax.validation.Valid;
+import java.io.IOException;
+import java.util.List;
+
+import static com.citu.framework.apilog.core.enums.OperateTypeEnum.EXPORT;
+import static com.citu.framework.common.pojo.CommonResult.success;
+
+@Tag(name = "管理后台 - 门墩儿-招聘职位")
+@RestController
+@RequestMapping("/menduner/system/job-advertised")
+@Validated
+public class JobAdvertisedController {
+
+    @Resource
+    private JobAdvertisedService jobAdvertisedService;
+
+    @PostMapping("/create")
+    @Operation(summary = "创建门墩儿-招聘职位")
+    @PreAuthorize("@ss.hasPermission('menduner:system:job-advertised:create')")
+    public CommonResult<Long> createJobAdvertised(@Valid @RequestBody JobAdvertisedSaveReqVO createReqVO) {
+        return success(jobAdvertisedService.createJobAdvertised(createReqVO));
+    }
+
+    @PutMapping("/update")
+    @Operation(summary = "更新门墩儿-招聘职位")
+    @PreAuthorize("@ss.hasPermission('menduner:system:job-advertised:update')")
+    public CommonResult<Boolean> updateJobAdvertised(@Valid @RequestBody JobAdvertisedSaveReqVO updateReqVO) {
+        jobAdvertisedService.updateJobAdvertised(updateReqVO);
+        return success(true);
+    }
+
+    @DeleteMapping("/delete")
+    @Operation(summary = "删除门墩儿-招聘职位")
+    @Parameter(name = "id", description = "编号", required = true)
+    @PreAuthorize("@ss.hasPermission('menduner:system:job-advertised:delete')")
+    public CommonResult<Boolean> deleteJobAdvertised(@RequestParam("id") Long id) {
+        jobAdvertisedService.deleteJobAdvertised(id);
+        return success(true);
+    }
+
+    @GetMapping("/get")
+    @Operation(summary = "获得门墩儿-招聘职位")
+    @Parameter(name = "id", description = "编号", required = true, example = "1024")
+    @PreAuthorize("@ss.hasPermission('menduner:system:job-advertised:query')")
+    public CommonResult<JobAdvertisedRespVO> getJobAdvertised(@RequestParam("id") Long id) {
+        JobAdvertisedDO jobAdvertised = jobAdvertisedService.getJobAdvertised(id);
+        return success(BeanUtils.toBean(jobAdvertised, JobAdvertisedRespVO.class));
+    }
+
+    @GetMapping("/page")
+    @Operation(summary = "获得门墩儿-招聘职位分页")
+    @PreAuthorize("@ss.hasPermission('menduner:system:job-advertised:query')")
+    public CommonResult<PageResult<JobAdvertisedRespVO>> getJobAdvertisedPage(@Valid JobAdvertisedPageReqVO pageReqVO) {
+        PageResult<JobAdvertisedDO> pageResult = jobAdvertisedService.getJobAdvertisedPage(pageReqVO);
+        return success(BeanUtils.toBean(pageResult, JobAdvertisedRespVO.class));
+    }
+
+    @GetMapping("/export-excel")
+    @Operation(summary = "导出门墩儿-招聘职位 Excel")
+    @PreAuthorize("@ss.hasPermission('menduner:system:job-advertised:export')")
+    @ApiAccessLog(operateType = EXPORT)
+    public void exportJobAdvertisedExcel(@Valid JobAdvertisedPageReqVO pageReqVO,
+                                         HttpServletResponse response) throws IOException {
+        pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE);
+        List<JobAdvertisedDO> list = jobAdvertisedService.getJobAdvertisedPage(pageReqVO).getList();
+        // 导出 Excel
+        ExcelUtils.write(response, "门墩儿-招聘职位.xls", "数据", JobAdvertisedRespVO.class,
+                BeanUtils.toBean(list, JobAdvertisedRespVO.class));
+    }
+
+}

+ 23 - 24
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/admin/jobinterested/JobInterestedController.java → menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/admin/job/JobInterestedController.java

@@ -1,32 +1,31 @@
-package com.citu.module.menduner.system.controller.admin.jobinterested;
-
-import org.springframework.web.bind.annotation.*;
-import javax.annotation.Resource;
-import org.springframework.validation.annotation.Validated;
-import org.springframework.security.access.prepost.PreAuthorize;
-import io.swagger.v3.oas.annotations.tags.Tag;
-import io.swagger.v3.oas.annotations.Parameter;
-import io.swagger.v3.oas.annotations.Operation;
-
-import javax.validation.*;
-import javax.servlet.http.*;
-import java.util.*;
-import java.io.IOException;
+package com.citu.module.menduner.system.controller.admin.job;
 
+import com.citu.framework.apilog.core.annotation.ApiAccessLog;
+import com.citu.framework.common.pojo.CommonResult;
 import com.citu.framework.common.pojo.PageParam;
 import com.citu.framework.common.pojo.PageResult;
-import com.citu.framework.common.pojo.CommonResult;
 import com.citu.framework.common.util.object.BeanUtils;
-import static com.citu.framework.common.pojo.CommonResult.success;
-
 import com.citu.framework.excel.core.util.ExcelUtils;
+import com.citu.module.menduner.system.controller.admin.job.vo.JobInterestedPageReqVO;
+import com.citu.module.menduner.system.controller.admin.job.vo.JobInterestedRespVO;
+import com.citu.module.menduner.system.controller.admin.job.vo.JobInterestedSaveReqVO;
+import com.citu.module.menduner.system.dal.dataobject.job.JobInterestedDO;
+import com.citu.module.menduner.system.service.job.JobInterestedService;
+import io.swagger.v3.oas.annotations.Operation;
+import io.swagger.v3.oas.annotations.Parameter;
+import io.swagger.v3.oas.annotations.tags.Tag;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.*;
 
-import com.citu.framework.apilog.core.annotation.ApiAccessLog;
-import static com.citu.framework.apilog.core.enums.OperateTypeEnum.*;
+import javax.annotation.Resource;
+import javax.servlet.http.HttpServletResponse;
+import javax.validation.Valid;
+import java.io.IOException;
+import java.util.List;
 
-import com.citu.module.menduner.system.controller.admin.jobinterested.vo.*;
-import com.citu.module.menduner.system.dal.dataobject.jobinterested.JobInterestedDO;
-import com.citu.module.menduner.system.service.jobinterested.JobInterestedService;
+import static com.citu.framework.apilog.core.enums.OperateTypeEnum.EXPORT;
+import static com.citu.framework.common.pojo.CommonResult.success;
 
 @Tag(name = "管理后台 - 求职意向")
 @RestController
@@ -83,12 +82,12 @@ public class JobInterestedController {
     @PreAuthorize("@ss.hasPermission('menduner:system:job-interested:export')")
     @ApiAccessLog(operateType = EXPORT)
     public void exportJobInterestedExcel(@Valid JobInterestedPageReqVO pageReqVO,
-              HttpServletResponse response) throws IOException {
+                                         HttpServletResponse response) throws IOException {
         pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE);
         List<JobInterestedDO> list = jobInterestedService.getJobInterestedPage(pageReqVO).getList();
         // 导出 Excel
         ExcelUtils.write(response, "求职意向.xls", "数据", JobInterestedRespVO.class,
-                        BeanUtils.toBean(list, JobInterestedRespVO.class));
+                BeanUtils.toBean(list, JobInterestedRespVO.class));
     }
 
 }

+ 56 - 0
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/admin/job/vo/JobAdvertisedPageReqVO.java

@@ -0,0 +1,56 @@
+package com.citu.module.menduner.system.controller.admin.job.vo;
+
+
+import lombok.*;
+import java.util.*;
+import io.swagger.v3.oas.annotations.media.Schema;
+import com.citu.framework.common.pojo.PageParam;
+import org.springframework.format.annotation.DateTimeFormat;
+import java.time.LocalDateTime;
+
+import static com.citu.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
+
+@Schema(description = "管理后台 - 门墩儿-招聘职位分页 Request VO")
+@Data
+@EqualsAndHashCode(callSuper = true)
+@ToString(callSuper = true)
+public class JobAdvertisedPageReqVO extends PageParam {
+
+    @Schema(description = "企业id", example = "29465")
+    private Long enterpriseId;
+
+    @Schema(description = "发布用户id", example = "9592")
+    private Long userId;
+
+    @Schema(description = "工作地区", example = "25976")
+    private Long areaId;
+
+    @Schema(description = "职位名称", example = "张三")
+    private String name;
+
+    @Schema(description = "职位类型id", example = "31707")
+    private Long positionId;
+
+    @Schema(description = "招聘类型", example = "2")
+    private Integer type;
+
+    @Schema(description = "工作经验", example = "1")
+    private Integer expType;
+
+    @Schema(description = "学历要求", example = "1")
+    private Integer eduType;
+
+    @Schema(description = "职位内容")
+    private String content;
+
+    @Schema(description = "职位要求")
+    private String requirement;
+
+    @Schema(description = "职位状态", example = "2")
+    private Integer status;
+
+    @Schema(description = "创建时间")
+    @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
+    private LocalDateTime[] createTime;
+
+}

+ 97 - 0
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/admin/job/vo/JobAdvertisedRespVO.java

@@ -0,0 +1,97 @@
+package com.citu.module.menduner.system.controller.admin.job.vo;
+
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.*;
+import java.util.*;
+import java.util.*;
+import org.springframework.format.annotation.DateTimeFormat;
+import java.time.LocalDateTime;
+import com.alibaba.excel.annotation.*;
+import com.citu.framework.excel.core.annotations.DictFormat;
+import com.citu.framework.excel.core.convert.DictConvert;
+
+@Schema(description = "管理后台 - 门墩儿-招聘职位 Response VO")
+@Data
+@ExcelIgnoreUnannotated
+public class JobAdvertisedRespVO {
+
+    @Schema(description = "id", requiredMode = Schema.RequiredMode.REQUIRED, example = "4770")
+    @ExcelProperty("id")
+    private Long id;
+
+    @Schema(description = "企业id", requiredMode = Schema.RequiredMode.REQUIRED, example = "29465")
+    @ExcelProperty("企业id")
+    private Long enterpriseId;
+
+    @Schema(description = "发布用户id", requiredMode = Schema.RequiredMode.REQUIRED, example = "9592")
+    @ExcelProperty("发布用户id")
+    private Long userId;
+
+    @Schema(description = "工作地区", requiredMode = Schema.RequiredMode.REQUIRED, example = "25976")
+    @ExcelProperty("工作地区")
+    private Long areaId;
+
+    @Schema(description = "职位名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "张三")
+    @ExcelProperty("职位名称")
+    private String name;
+
+    @Schema(description = "职位类型id", requiredMode = Schema.RequiredMode.REQUIRED, example = "31707")
+    @ExcelProperty("职位类型id")
+    private Long positionId;
+
+    @Schema(description = "招聘类型", requiredMode = Schema.RequiredMode.REQUIRED, example = "2")
+    @ExcelProperty(value = "招聘类型", converter = DictConvert.class)
+    @DictFormat("menduner_job_type") // TODO 代码优化:建议设置到对应的 DictTypeConstants 枚举类中
+    private Integer type;
+
+    @Schema(description = "工作经验", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
+    @ExcelProperty("工作经验")
+    private Integer expType;
+
+    @Schema(description = "学历要求", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
+    @ExcelProperty("学历要求")
+    private Integer eduType;
+
+    @Schema(description = "薪酬from")
+    @ExcelProperty("薪酬from")
+    private Integer payFrom;
+
+    @Schema(description = "薪酬to")
+    @ExcelProperty("薪酬to")
+    private Integer payTo;
+
+    @Schema(description = "职位标签")
+    @ExcelProperty("职位标签")
+    private String tagList;
+
+    @Schema(description = "职位内容")
+    @ExcelProperty("职位内容")
+    private String content;
+
+    @Schema(description = "职位要求")
+    @ExcelProperty("职位要求")
+    private String requirement;
+
+    @Schema(description = "工作地址")
+    @ExcelProperty("工作地址")
+    private String address;
+
+    @Schema(description = "经度")
+    @ExcelProperty("经度")
+    private String longitude;
+
+    @Schema(description = "维度")
+    @ExcelProperty("维度")
+    private String latitude;
+
+    @Schema(description = "职位状态", example = "2")
+    @ExcelProperty(value = "职位状态", converter = DictConvert.class)
+    @DictFormat("menduner_status") // TODO 代码优化:建议设置到对应的 DictTypeConstants 枚举类中
+    private Integer status;
+
+    @Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED)
+    @ExcelProperty("创建时间")
+    private LocalDateTime createTime;
+
+}

+ 75 - 0
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/admin/job/vo/JobAdvertisedSaveReqVO.java

@@ -0,0 +1,75 @@
+package com.citu.module.menduner.system.controller.admin.job.vo;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+import javax.validation.constraints.NotEmpty;
+import javax.validation.constraints.NotNull;
+
+@Schema(description = "管理后台 - 门墩儿-招聘职位新增/修改 Request VO")
+@Data
+public class JobAdvertisedSaveReqVO {
+
+    @Schema(description = "id", requiredMode = Schema.RequiredMode.REQUIRED, example = "4770")
+    private Long id;
+
+    @Schema(description = "企业id", requiredMode = Schema.RequiredMode.REQUIRED, example = "29465")
+    @NotNull(message = "企业id不能为空")
+    private Long enterpriseId;
+
+    @Schema(description = "发布用户id", requiredMode = Schema.RequiredMode.REQUIRED, example = "9592")
+    @NotNull(message = "发布用户id不能为空")
+    private Long userId;
+
+    @Schema(description = "工作地区", requiredMode = Schema.RequiredMode.REQUIRED, example = "25976")
+    @NotNull(message = "工作地区不能为空")
+    private Long areaId;
+
+    @Schema(description = "职位名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "张三")
+    @NotEmpty(message = "职位名称不能为空")
+    private String name;
+
+    @Schema(description = "职位类型id", requiredMode = Schema.RequiredMode.REQUIRED, example = "31707")
+    @NotNull(message = "职位类型id不能为空")
+    private Long positionId;
+
+    @Schema(description = "招聘类型", requiredMode = Schema.RequiredMode.REQUIRED, example = "2")
+    @NotNull(message = "招聘类型不能为空")
+    private Integer type;
+
+    @Schema(description = "工作经验", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
+    @NotNull(message = "工作经验不能为空")
+    private Integer expType;
+
+    @Schema(description = "学历要求", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
+    @NotNull(message = "学历要求不能为空")
+    private Integer eduType;
+
+    @Schema(description = "薪酬from")
+    private Integer payFrom;
+
+    @Schema(description = "薪酬to")
+    private Integer payTo;
+
+    @Schema(description = "职位标签")
+    private String tagList;
+
+    @Schema(description = "职位内容")
+    private String content;
+
+    @Schema(description = "职位要求")
+    private String requirement;
+
+    @Schema(description = "工作地址")
+    private String address;
+
+    @Schema(description = "经度")
+    private String longitude;
+
+    @Schema(description = "维度")
+    private String latitude;
+
+    @Schema(description = "职位状态", example = "2")
+    private Integer status;
+
+}

+ 1 - 1
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/admin/jobinterested/vo/JobInterestedPageReqVO.java → menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/admin/job/vo/JobInterestedPageReqVO.java

@@ -1,4 +1,4 @@
-package com.citu.module.menduner.system.controller.admin.jobinterested.vo;
+package com.citu.module.menduner.system.controller.admin.job.vo;
 
 import lombok.*;
 import java.util.*;

+ 1 - 1
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/admin/jobinterested/vo/JobInterestedRespVO.java → menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/admin/job/vo/JobInterestedRespVO.java

@@ -1,4 +1,4 @@
-package com.citu.module.menduner.system.controller.admin.jobinterested.vo;
+package com.citu.module.menduner.system.controller.admin.job.vo;
 
 import io.swagger.v3.oas.annotations.media.Schema;
 import lombok.*;

+ 1 - 1
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/admin/jobinterested/vo/JobInterestedSaveReqVO.java → menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/admin/job/vo/JobInterestedSaveReqVO.java

@@ -1,4 +1,4 @@
-package com.citu.module.menduner.system.controller.admin.jobinterested.vo;
+package com.citu.module.menduner.system.controller.admin.job.vo;
 
 import io.swagger.v3.oas.annotations.media.Schema;
 import lombok.*;

+ 96 - 0
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/admin/people/PeopleCertificateController.java

@@ -0,0 +1,96 @@
+package com.citu.module.menduner.system.controller.admin.people;
+
+import com.citu.module.menduner.system.controller.admin.people.vo.PeopleCertificatePageReqVO;
+import com.citu.module.menduner.system.controller.admin.people.vo.PeopleCertificateRespVO;
+import com.citu.module.menduner.system.controller.admin.people.vo.PeopleCertificateSaveReqVO;
+import org.springframework.web.bind.annotation.*;
+import javax.annotation.Resource;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.security.access.prepost.PreAuthorize;
+import io.swagger.v3.oas.annotations.tags.Tag;
+import io.swagger.v3.oas.annotations.Parameter;
+import io.swagger.v3.oas.annotations.Operation;
+
+import javax.validation.*;
+import javax.servlet.http.*;
+import java.util.*;
+import java.io.IOException;
+
+import com.citu.framework.common.pojo.PageParam;
+import com.citu.framework.common.pojo.PageResult;
+import com.citu.framework.common.pojo.CommonResult;
+import com.citu.framework.common.util.object.BeanUtils;
+import static com.citu.framework.common.pojo.CommonResult.success;
+
+import com.citu.framework.excel.core.util.ExcelUtils;
+
+import com.citu.framework.apilog.core.annotation.ApiAccessLog;
+import static com.citu.framework.apilog.core.enums.OperateTypeEnum.*;
+
+import com.citu.module.menduner.system.dal.dataobject.people.PeopleCertificateDO;
+import com.citu.module.menduner.system.service.people.PeopleCertificateService;
+
+@Tag(name = "管理后台 - 人员证书")
+@RestController
+@RequestMapping("/menduner/system/people-certificate")
+@Validated
+public class PeopleCertificateController {
+
+    @Resource
+    private PeopleCertificateService peopleCertificateService;
+
+    @PostMapping("/create")
+    @Operation(summary = "创建人员证书")
+    @PreAuthorize("@ss.hasPermission('menduner:system:people-certificate:create')")
+    public CommonResult<Long> createUserCertificate(@Valid @RequestBody PeopleCertificateSaveReqVO createReqVO) {
+        return success(peopleCertificateService.createUserCertificate(createReqVO));
+    }
+
+    @PutMapping("/update")
+    @Operation(summary = "更新人员证书")
+    @PreAuthorize("@ss.hasPermission('menduner:system:people-certificate:update')")
+    public CommonResult<Boolean> updateUserCertificate(@Valid @RequestBody PeopleCertificateSaveReqVO updateReqVO) {
+        peopleCertificateService.updateUserCertificate(updateReqVO);
+        return success(true);
+    }
+
+    @DeleteMapping("/delete")
+    @Operation(summary = "删除人员证书")
+    @Parameter(name = "id", description = "编号", required = true)
+    @PreAuthorize("@ss.hasPermission('menduner:system:people-certificate:delete')")
+    public CommonResult<Boolean> deleteUserCertificate(@RequestParam("id") Long id) {
+        peopleCertificateService.deleteUserCertificate(id);
+        return success(true);
+    }
+
+    @GetMapping("/get")
+    @Operation(summary = "获得人员证书")
+    @Parameter(name = "id", description = "编号", required = true, example = "1024")
+    @PreAuthorize("@ss.hasPermission('menduner:system:people-certificate:query')")
+    public CommonResult<PeopleCertificateRespVO> getUserCertificate(@RequestParam("id") Long id) {
+        PeopleCertificateDO userCertificate = peopleCertificateService.getUserCertificate(id);
+        return success(BeanUtils.toBean(userCertificate, PeopleCertificateRespVO.class));
+    }
+
+    @GetMapping("/page")
+    @Operation(summary = "获得人员证书分页")
+    @PreAuthorize("@ss.hasPermission('menduner:system:people-certificate:query')")
+    public CommonResult<PageResult<PeopleCertificateRespVO>> getUserCertificatePage(@Valid PeopleCertificatePageReqVO pageReqVO) {
+        PageResult<PeopleCertificateDO> pageResult = peopleCertificateService.getUserCertificatePage(pageReqVO);
+        return success(BeanUtils.toBean(pageResult, PeopleCertificateRespVO.class));
+    }
+
+    @GetMapping("/export-excel")
+    @Operation(summary = "导出人员证书 Excel")
+    @PreAuthorize("@ss.hasPermission('menduner:system:people-certificate:export')")
+    @ApiAccessLog(operateType = EXPORT)
+    public void exportUserCertificateExcel(@Valid PeopleCertificatePageReqVO pageReqVO,
+              HttpServletResponse response) throws IOException {
+        pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE);
+        List<PeopleCertificateDO> list = peopleCertificateService.getUserCertificatePage(pageReqVO).getList();
+        // 导出 Excel
+        ExcelUtils.write(response, "人员证书.xls", "数据", PeopleCertificateRespVO.class,
+                        BeanUtils.toBean(list, PeopleCertificateRespVO.class));
+    }
+
+}

+ 93 - 0
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/admin/people/PeopleInfoController.java

@@ -0,0 +1,93 @@
+package com.citu.module.menduner.system.controller.admin.people;
+
+import com.citu.framework.apilog.core.annotation.ApiAccessLog;
+import com.citu.framework.common.pojo.CommonResult;
+import com.citu.framework.common.pojo.PageParam;
+import com.citu.framework.common.pojo.PageResult;
+import com.citu.framework.common.util.object.BeanUtils;
+import com.citu.framework.excel.core.util.ExcelUtils;
+import com.citu.module.menduner.system.dal.dataobject.people.PeopleInfoDO;
+import com.citu.module.menduner.system.service.people.PeopleInfoService;
+import com.citu.module.menduner.system.controller.admin.people.vo.PeopleInfoPageReqVO;
+import com.citu.module.menduner.system.controller.admin.people.vo.PeopleInfoRespVO;
+import com.citu.module.menduner.system.controller.admin.people.vo.PeopleInfoSaveReqVO;
+import io.swagger.v3.oas.annotations.Operation;
+import io.swagger.v3.oas.annotations.Parameter;
+import io.swagger.v3.oas.annotations.tags.Tag;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.*;
+
+import javax.annotation.Resource;
+import javax.servlet.http.HttpServletResponse;
+import javax.validation.Valid;
+import java.io.IOException;
+import java.util.List;
+
+import static com.citu.framework.apilog.core.enums.OperateTypeEnum.EXPORT;
+import static com.citu.framework.common.pojo.CommonResult.success;
+
+@Tag(name = "管理后台 - 人员信息-个人档案")
+@RestController
+@RequestMapping("/menduner/system/people-info")
+@Validated
+public class PeopleInfoController {
+
+    @Resource
+    private PeopleInfoService peopleInfoService;
+
+    @PostMapping("/create")
+    @Operation(summary = "创建人员信息-个人档案")
+    @PreAuthorize("@ss.hasPermission('menduner:system:people-info:create')")
+    public CommonResult<Long> createUserInfo(@Valid @RequestBody PeopleInfoSaveReqVO createReqVO) {
+        return success(peopleInfoService.createUserInfo(createReqVO));
+    }
+
+    @PutMapping("/update")
+    @Operation(summary = "更新人员信息-个人档案")
+    @PreAuthorize("@ss.hasPermission('menduner:system:people-info:update')")
+    public CommonResult<Boolean> updateUserInfo(@Valid @RequestBody PeopleInfoSaveReqVO updateReqVO) {
+        peopleInfoService.updateUserInfo(updateReqVO);
+        return success(true);
+    }
+
+    @DeleteMapping("/delete")
+    @Operation(summary = "删除人员信息-个人档案")
+    @Parameter(name = "id", description = "编号", required = true)
+    @PreAuthorize("@ss.hasPermission('menduner:system:people-info:delete')")
+    public CommonResult<Boolean> deleteUserInfo(@RequestParam("id") Long id) {
+        peopleInfoService.deleteUserInfo(id);
+        return success(true);
+    }
+
+    @GetMapping("/get")
+    @Operation(summary = "获得人员信息-个人档案")
+    @Parameter(name = "id", description = "编号", required = true, example = "1024")
+    @PreAuthorize("@ss.hasPermission('menduner:system:people-info:query')")
+    public CommonResult<PeopleInfoRespVO> getUserInfo(@RequestParam("id") Long id) {
+        PeopleInfoDO userInfo = peopleInfoService.getUserInfo(id);
+        return success(BeanUtils.toBean(userInfo, PeopleInfoRespVO.class));
+    }
+
+    @GetMapping("/page")
+    @Operation(summary = "获得人员信息-个人档案分页")
+    @PreAuthorize("@ss.hasPermission('menduner:system:people-info:query')")
+    public CommonResult<PageResult<PeopleInfoRespVO>> getUserInfoPage(@Valid PeopleInfoPageReqVO pageReqVO) {
+        PageResult<PeopleInfoDO> pageResult = peopleInfoService.getUserInfoPage(pageReqVO);
+        return success(BeanUtils.toBean(pageResult, PeopleInfoRespVO.class));
+    }
+
+    @GetMapping("/export-excel")
+    @Operation(summary = "导出人员信息-个人档案 Excel")
+    @PreAuthorize("@ss.hasPermission('menduner:system:people-info:export')")
+    @ApiAccessLog(operateType = EXPORT)
+    public void exportUserInfoExcel(@Valid PeopleInfoPageReqVO pageReqVO,
+                                    HttpServletResponse response) throws IOException {
+        pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE);
+        List<PeopleInfoDO> list = peopleInfoService.getUserInfoPage(pageReqVO).getList();
+        // 导出 Excel
+        ExcelUtils.write(response, "人员信息-个人档案.xls", "数据", PeopleInfoRespVO.class,
+                BeanUtils.toBean(list, PeopleInfoRespVO.class));
+    }
+
+}

+ 96 - 0
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/admin/people/PeopleSkillController.java

@@ -0,0 +1,96 @@
+package com.citu.module.menduner.system.controller.admin.people;
+
+import com.citu.module.menduner.system.controller.admin.people.vo.PeopleSkillPageReqVO;
+import com.citu.module.menduner.system.controller.admin.people.vo.PeopleSkillRespVO;
+import com.citu.module.menduner.system.controller.admin.people.vo.PeopleSkillSaveReqVO;
+import org.springframework.web.bind.annotation.*;
+import javax.annotation.Resource;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.security.access.prepost.PreAuthorize;
+import io.swagger.v3.oas.annotations.tags.Tag;
+import io.swagger.v3.oas.annotations.Parameter;
+import io.swagger.v3.oas.annotations.Operation;
+
+import javax.validation.*;
+import javax.servlet.http.*;
+import java.util.*;
+import java.io.IOException;
+
+import com.citu.framework.common.pojo.PageParam;
+import com.citu.framework.common.pojo.PageResult;
+import com.citu.framework.common.pojo.CommonResult;
+import com.citu.framework.common.util.object.BeanUtils;
+import static com.citu.framework.common.pojo.CommonResult.success;
+
+import com.citu.framework.excel.core.util.ExcelUtils;
+
+import com.citu.framework.apilog.core.annotation.ApiAccessLog;
+import static com.citu.framework.apilog.core.enums.OperateTypeEnum.*;
+
+import com.citu.module.menduner.system.dal.dataobject.people.PeopleSkillDO;
+import com.citu.module.menduner.system.service.people.PeopleSkillService;
+
+@Tag(name = "管理后台 - 人员技能")
+@RestController
+@RequestMapping("/menduner/system/people-skill")
+@Validated
+public class PeopleSkillController {
+
+    @Resource
+    private PeopleSkillService peopleSkillService;
+
+    @PostMapping("/create")
+    @Operation(summary = "创建人员技能")
+    @PreAuthorize("@ss.hasPermission('menduner:system:people-skill:create')")
+    public CommonResult<Long> createUserSkill(@Valid @RequestBody PeopleSkillSaveReqVO createReqVO) {
+        return success(peopleSkillService.createUserSkill(createReqVO));
+    }
+
+    @PutMapping("/update")
+    @Operation(summary = "更新人员技能")
+    @PreAuthorize("@ss.hasPermission('menduner:system:people-skill:update')")
+    public CommonResult<Boolean> updateUserSkill(@Valid @RequestBody PeopleSkillSaveReqVO updateReqVO) {
+        peopleSkillService.updateUserSkill(updateReqVO);
+        return success(true);
+    }
+
+    @DeleteMapping("/delete")
+    @Operation(summary = "删除人员技能")
+    @Parameter(name = "id", description = "编号", required = true)
+    @PreAuthorize("@ss.hasPermission('menduner:system:people-skill:delete')")
+    public CommonResult<Boolean> deleteUserSkill(@RequestParam("id") Long id) {
+        peopleSkillService.deleteUserSkill(id);
+        return success(true);
+    }
+
+    @GetMapping("/get")
+    @Operation(summary = "获得人员技能")
+    @Parameter(name = "id", description = "编号", required = true, example = "1024")
+    @PreAuthorize("@ss.hasPermission('menduner:system:people-skill:query')")
+    public CommonResult<PeopleSkillRespVO> getUserSkill(@RequestParam("id") Long id) {
+        PeopleSkillDO userSkill = peopleSkillService.getUserSkill(id);
+        return success(BeanUtils.toBean(userSkill, PeopleSkillRespVO.class));
+    }
+
+    @GetMapping("/page")
+    @Operation(summary = "获得人员技能分页")
+    @PreAuthorize("@ss.hasPermission('menduner:system:people-skill:query')")
+    public CommonResult<PageResult<PeopleSkillRespVO>> getUserSkillPage(@Valid PeopleSkillPageReqVO pageReqVO) {
+        PageResult<PeopleSkillDO> pageResult = peopleSkillService.getUserSkillPage(pageReqVO);
+        return success(BeanUtils.toBean(pageResult, PeopleSkillRespVO.class));
+    }
+
+    @GetMapping("/export-excel")
+    @Operation(summary = "导出人员技能 Excel")
+    @PreAuthorize("@ss.hasPermission('menduner:system:people-skill:export')")
+    @ApiAccessLog(operateType = EXPORT)
+    public void exportUserSkillExcel(@Valid PeopleSkillPageReqVO pageReqVO,
+              HttpServletResponse response) throws IOException {
+        pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE);
+        List<PeopleSkillDO> list = peopleSkillService.getUserSkillPage(pageReqVO).getList();
+        // 导出 Excel
+        ExcelUtils.write(response, "人员技能.xls", "数据", PeopleSkillRespVO.class,
+                        BeanUtils.toBean(list, PeopleSkillRespVO.class));
+    }
+
+}

+ 3 - 4
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/admin/usercertificate/vo/UserCertificatePageReqVO.java → menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/admin/people/vo/PeopleCertificatePageReqVO.java

@@ -1,7 +1,6 @@
-package com.citu.module.menduner.system.controller.admin.usercertificate.vo;
+package com.citu.module.menduner.system.controller.admin.people.vo;
 
 import lombok.*;
-import java.util.*;
 import io.swagger.v3.oas.annotations.media.Schema;
 import com.citu.framework.common.pojo.PageParam;
 import org.springframework.format.annotation.DateTimeFormat;
@@ -9,11 +8,11 @@ import java.time.LocalDateTime;
 
 import static com.citu.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
 
-@Schema(description = "管理后台 - 用户证书分页 Request VO")
+@Schema(description = "管理后台 - 人员证书分页 Request VO")
 @Data
 @EqualsAndHashCode(callSuper = true)
 @ToString(callSuper = true)
-public class UserCertificatePageReqVO extends PageParam {
+public class PeopleCertificatePageReqVO extends PageParam {
 
     @Schema(description = "用户id", example = "16810")
     private Long userId;

+ 4 - 6
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/admin/usercertificate/vo/UserCertificateRespVO.java → menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/admin/people/vo/PeopleCertificateRespVO.java

@@ -1,17 +1,15 @@
-package com.citu.module.menduner.system.controller.admin.usercertificate.vo;
+package com.citu.module.menduner.system.controller.admin.people.vo;
 
 import io.swagger.v3.oas.annotations.media.Schema;
 import lombok.*;
-import java.util.*;
-import java.util.*;
-import org.springframework.format.annotation.DateTimeFormat;
+
 import java.time.LocalDateTime;
 import com.alibaba.excel.annotation.*;
 
-@Schema(description = "管理后台 - 用户证书 Response VO")
+@Schema(description = "管理后台 - 人员证书 Response VO")
 @Data
 @ExcelIgnoreUnannotated
-public class UserCertificateRespVO {
+public class PeopleCertificateRespVO {
 
     @Schema(description = "id", requiredMode = Schema.RequiredMode.REQUIRED, example = "25497")
     @ExcelProperty("id")

+ 4 - 4
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/admin/usercertificate/vo/UserCertificateSaveReqVO.java → menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/admin/people/vo/PeopleCertificateSaveReqVO.java

@@ -1,13 +1,13 @@
-package com.citu.module.menduner.system.controller.admin.usercertificate.vo;
+package com.citu.module.menduner.system.controller.admin.people.vo;
 
 import io.swagger.v3.oas.annotations.media.Schema;
 import lombok.*;
-import java.util.*;
+
 import javax.validation.constraints.*;
 
-@Schema(description = "管理后台 - 用户证书新增/修改 Request VO")
+@Schema(description = "管理后台 - 人员证书新增/修改 Request VO")
 @Data
-public class UserCertificateSaveReqVO {
+public class PeopleCertificateSaveReqVO {
 
     @Schema(description = "id", requiredMode = Schema.RequiredMode.REQUIRED, example = "25497")
     private Long id;

+ 3 - 4
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/admin/userinfo/vo/UserInfoPageReqVO.java → menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/admin/people/vo/PeopleInfoPageReqVO.java

@@ -1,4 +1,4 @@
-package com.citu.module.menduner.system.controller.admin.userinfo.vo;
+package com.citu.module.menduner.system.controller.admin.people.vo;
 
 import com.citu.framework.common.pojo.PageParam;
 import io.swagger.v3.oas.annotations.media.Schema;
@@ -7,16 +7,15 @@ import lombok.EqualsAndHashCode;
 import lombok.ToString;
 import org.springframework.format.annotation.DateTimeFormat;
 
-import java.time.LocalDate;
 import java.time.LocalDateTime;
 
 import static com.citu.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
 
-@Schema(description = "管理后台 - 用户信息-个人档案分页 Request VO")
+@Schema(description = "管理后台 - 人员信息-个人档案分页 Request VO")
 @Data
 @EqualsAndHashCode(callSuper = true)
 @ToString(callSuper = true)
-public class UserInfoPageReqVO extends PageParam {
+public class PeopleInfoPageReqVO extends PageParam {
 
     @Schema(description = "用户id", example = "18804")
     private Long userId;

+ 3 - 4
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/admin/userinfo/vo/UserInfoRespVO.java → menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/admin/people/vo/PeopleInfoRespVO.java

@@ -1,17 +1,16 @@
-package com.citu.module.menduner.system.controller.admin.userinfo.vo;
+package com.citu.module.menduner.system.controller.admin.people.vo;
 
 import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
 import com.alibaba.excel.annotation.ExcelProperty;
 import io.swagger.v3.oas.annotations.media.Schema;
 import lombok.Data;
 
-import java.time.LocalDate;
 import java.time.LocalDateTime;
 
-@Schema(description = "管理后台 - 用户信息-个人档案 Response VO")
+@Schema(description = "管理后台 - 人员信息-个人档案 Response VO")
 @Data
 @ExcelIgnoreUnannotated
-public class UserInfoRespVO {
+public class PeopleInfoRespVO {
 
     @Schema(description = "id", requiredMode = Schema.RequiredMode.REQUIRED, example = "25036")
     @ExcelProperty("id")

+ 3 - 5
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/admin/userinfo/vo/UserInfoSaveReqVO.java → menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/admin/people/vo/PeopleInfoSaveReqVO.java

@@ -1,15 +1,13 @@
-package com.citu.module.menduner.system.controller.admin.userinfo.vo;
+package com.citu.module.menduner.system.controller.admin.people.vo;
 
-import com.alibaba.excel.annotation.ExcelProperty;
 import io.swagger.v3.oas.annotations.media.Schema;
 import lombok.Data;
 
-import java.time.LocalDate;
 import java.time.LocalDateTime;
 
-@Schema(description = "管理后台 - 用户信息-个人档案新增/修改 Request VO")
+@Schema(description = "管理后台 - 人员信息-个人档案新增/修改 Request VO")
 @Data
-public class UserInfoSaveReqVO {
+public class PeopleInfoSaveReqVO {
 
     @Schema(description = "id", requiredMode = Schema.RequiredMode.REQUIRED, example = "25036")
     private Long id;

+ 3 - 4
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/admin/userskill/vo/UserSkillPageReqVO.java → menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/admin/people/vo/PeopleSkillPageReqVO.java

@@ -1,7 +1,6 @@
-package com.citu.module.menduner.system.controller.admin.userskill.vo;
+package com.citu.module.menduner.system.controller.admin.people.vo;
 
 import lombok.*;
-import java.util.*;
 import io.swagger.v3.oas.annotations.media.Schema;
 import com.citu.framework.common.pojo.PageParam;
 import org.springframework.format.annotation.DateTimeFormat;
@@ -9,11 +8,11 @@ import java.time.LocalDateTime;
 
 import static com.citu.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
 
-@Schema(description = "管理后台 - 用户技能分页 Request VO")
+@Schema(description = "管理后台 - 人员技能分页 Request VO")
 @Data
 @EqualsAndHashCode(callSuper = true)
 @ToString(callSuper = true)
-public class UserSkillPageReqVO extends PageParam {
+public class PeopleSkillPageReqVO extends PageParam {
 
     @Schema(description = "用户id", example = "7946")
     private Long userId;

+ 4 - 6
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/admin/userskill/vo/UserSkillRespVO.java → menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/admin/people/vo/PeopleSkillRespVO.java

@@ -1,19 +1,17 @@
-package com.citu.module.menduner.system.controller.admin.userskill.vo;
+package com.citu.module.menduner.system.controller.admin.people.vo;
 
 import io.swagger.v3.oas.annotations.media.Schema;
 import lombok.*;
-import java.util.*;
-import java.util.*;
-import org.springframework.format.annotation.DateTimeFormat;
+
 import java.time.LocalDateTime;
 import com.alibaba.excel.annotation.*;
 import com.citu.framework.excel.core.annotations.DictFormat;
 import com.citu.framework.excel.core.convert.DictConvert;
 
-@Schema(description = "管理后台 - 用户技能 Response VO")
+@Schema(description = "管理后台 - 人员技能 Response VO")
 @Data
 @ExcelIgnoreUnannotated
-public class UserSkillRespVO {
+public class PeopleSkillRespVO {
 
     @Schema(description = "id", requiredMode = Schema.RequiredMode.REQUIRED, example = "24591")
     @ExcelProperty("id")

+ 4 - 4
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/admin/userskill/vo/UserSkillSaveReqVO.java → menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/admin/people/vo/PeopleSkillSaveReqVO.java

@@ -1,13 +1,13 @@
-package com.citu.module.menduner.system.controller.admin.userskill.vo;
+package com.citu.module.menduner.system.controller.admin.people.vo;
 
 import io.swagger.v3.oas.annotations.media.Schema;
 import lombok.*;
-import java.util.*;
+
 import javax.validation.constraints.*;
 
-@Schema(description = "管理后台 - 用户技能新增/修改 Request VO")
+@Schema(description = "管理后台 - 人员技能新增/修改 Request VO")
 @Data
-public class UserSkillSaveReqVO {
+public class PeopleSkillSaveReqVO {
 
     @Schema(description = "id", requiredMode = Schema.RequiredMode.REQUIRED, example = "24591")
     private Long id;

+ 58 - 0
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/admin/permission/MdePermissionController.java

@@ -0,0 +1,58 @@
+package com.citu.module.menduner.system.controller.admin.permission;
+
+import com.citu.framework.common.pojo.CommonResult;
+import com.citu.module.menduner.system.controller.admin.permission.permission.MdePermissionAssignRoleDataScopeReqVO;
+import com.citu.module.menduner.system.controller.admin.permission.permission.MdePermissionAssignUserRoleReqVO;
+import com.citu.module.menduner.system.service.permission.MdePermissionService;
+import io.swagger.v3.oas.annotations.Operation;
+import io.swagger.v3.oas.annotations.Parameter;
+import io.swagger.v3.oas.annotations.tags.Tag;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.*;
+
+import javax.annotation.Resource;
+import javax.validation.Valid;
+import java.util.Set;
+
+import static com.citu.framework.common.pojo.CommonResult.success;
+
+/**
+ * 权限 Controller,提供赋予用户、角色的权限的 API 接口
+ *
+ * @author 芋道源码
+ */
+@Tag(name = "管理后台 - 权限")
+@RestController
+@RequestMapping("/menduner/system/permission")
+public class MdePermissionController {
+
+    @Resource
+    private MdePermissionService permissionService;
+
+
+    @PostMapping("/assign-role-data-scope")
+    @Operation(summary = "赋予角色数据权限")
+    @PreAuthorize("@ss.hasPermission('system:permission:assign-role-data-scope')")
+    public CommonResult<Boolean> assignRoleDataScope(@Valid @RequestBody MdePermissionAssignRoleDataScopeReqVO reqVO) {
+        permissionService.assignRoleDataScope(reqVO.getRoleId(), reqVO.getDataScope(), reqVO.getDataScopeDeptIds());
+        return success(true);
+    }
+
+    @Operation(summary = "获得管理员拥有的角色编号列表")
+    @Parameter(name = "userId", description = "用户编号", required = true)
+    @GetMapping("/list-user-roles")
+    @PreAuthorize("@ss.hasPermission('system:permission:assign-user-role')")
+    public CommonResult<Set<Long>> listAdminRoles(@RequestParam("userId") Long userId) {
+        return success(permissionService.getUserRoleIdListByUserId(userId));
+    }
+
+    @Operation(summary = "赋予用户角色")
+    @PostMapping("/assign-user-role")
+    @PreAuthorize("@ss.hasPermission('system:permission:assign-user-role')")
+    public CommonResult<Boolean> assignUserRole(@Validated @RequestBody MdePermissionAssignUserRoleReqVO reqVO) {
+        permissionService.assignUserRole(reqVO.getUserId(), reqVO.getRoleIds());
+        return success(true);
+    }
+
+}

+ 102 - 0
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/admin/permission/MdeRoleController.java

@@ -0,0 +1,102 @@
+package com.citu.module.menduner.system.controller.admin.permission;
+
+import com.citu.framework.apilog.core.annotation.ApiAccessLog;
+import com.citu.framework.common.enums.CommonStatusEnum;
+import com.citu.framework.common.pojo.CommonResult;
+import com.citu.framework.common.pojo.PageParam;
+import com.citu.framework.common.pojo.PageResult;
+import com.citu.framework.common.util.object.BeanUtils;
+import com.citu.framework.excel.core.util.ExcelUtils;
+import com.citu.module.menduner.system.controller.admin.permission.role.MdeRolePageReqVO;
+import com.citu.module.menduner.system.controller.admin.permission.role.MdeRoleRespVO;
+import com.citu.module.menduner.system.controller.admin.permission.role.MdeRoleSaveReqVO;
+import com.citu.module.menduner.system.dal.dataobject.permission.MdeRoleDO;
+import com.citu.module.menduner.system.service.permission.MdeRoleService;
+import io.swagger.v3.oas.annotations.Operation;
+import io.swagger.v3.oas.annotations.Parameter;
+import io.swagger.v3.oas.annotations.tags.Tag;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.*;
+
+import javax.annotation.Resource;
+import javax.servlet.http.HttpServletResponse;
+import javax.validation.Valid;
+import java.io.IOException;
+import java.util.Comparator;
+import java.util.List;
+
+import static com.citu.framework.apilog.core.enums.OperateTypeEnum.EXPORT;
+import static com.citu.framework.common.pojo.CommonResult.success;
+import static java.util.Collections.singleton;
+
+@Tag(name = "管理后台 - 角色")
+@RestController
+@RequestMapping("/menduner/system/role")
+@Validated
+public class MdeRoleController {
+
+    @Resource
+    private MdeRoleService roleService;
+
+    @PostMapping("/create")
+    @Operation(summary = "创建角色")
+    @PreAuthorize("@ss.hasPermission('system:role:create')")
+    public CommonResult<Long> createRole(@Valid @RequestBody MdeRoleSaveReqVO createReqVO) {
+        return success(roleService.createRole(createReqVO, null));
+    }
+
+    @PutMapping("/update")
+    @Operation(summary = "修改角色")
+    @PreAuthorize("@ss.hasPermission('system:role:update')")
+    public CommonResult<Boolean> updateRole(@Valid @RequestBody MdeRoleSaveReqVO updateReqVO) {
+        roleService.updateRole(updateReqVO);
+        return success(true);
+    }
+
+    @DeleteMapping("/delete")
+    @Operation(summary = "删除角色")
+    @Parameter(name = "id", description = "角色编号", required = true, example = "1024")
+    @PreAuthorize("@ss.hasPermission('system:role:delete')")
+    public CommonResult<Boolean> deleteRole(@RequestParam("id") Long id) {
+        roleService.deleteRole(id);
+        return success(true);
+    }
+
+    @GetMapping("/get")
+    @Operation(summary = "获得角色信息")
+    @PreAuthorize("@ss.hasPermission('system:role:query')")
+    public CommonResult<MdeRoleRespVO> getRole(@RequestParam("id") Long id) {
+        MdeRoleDO role = roleService.getRole(id);
+        return success(BeanUtils.toBean(role, MdeRoleRespVO.class));
+    }
+
+    @GetMapping("/page")
+    @Operation(summary = "获得角色分页")
+    @PreAuthorize("@ss.hasPermission('system:role:query')")
+    public CommonResult<PageResult<MdeRoleRespVO>> getRolePage(MdeRolePageReqVO pageReqVO) {
+        PageResult<MdeRoleDO> pageResult = roleService.getRolePage(pageReqVO);
+        return success(BeanUtils.toBean(pageResult, MdeRoleRespVO.class));
+    }
+
+    @GetMapping({"/list-all-simple", "/simple-list"})
+    @Operation(summary = "获取角色精简信息列表", description = "只包含被开启的角色,主要用于前端的下拉选项")
+    public CommonResult<List<MdeRoleRespVO>> getSimpleRoleList() {
+        List<MdeRoleDO> list = roleService.getRoleListByStatus(singleton(CommonStatusEnum.ENABLE.getStatus()));
+        list.sort(Comparator.comparing(MdeRoleDO::getSort));
+        return success(BeanUtils.toBean(list, MdeRoleRespVO.class));
+    }
+
+    @GetMapping("/export-excel")
+    @Operation(summary = "导出角色 Excel")
+    @ApiAccessLog(operateType = EXPORT)
+    @PreAuthorize("@ss.hasPermission('system:role:export')")
+    public void export(HttpServletResponse response, @Validated MdeRolePageReqVO exportReqVO) throws IOException {
+        exportReqVO.setPageSize(PageParam.PAGE_SIZE_NONE);
+        List<MdeRoleDO> list = roleService.getRolePage(exportReqVO).getList();
+        // 输出
+        ExcelUtils.write(response, "角色数据.xls", "数据", MdeRoleRespVO.class,
+                BeanUtils.toBean(list, MdeRoleRespVO.class));
+    }
+
+}

+ 28 - 0
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/admin/permission/permission/MdePermissionAssignRoleDataScopeReqVO.java

@@ -0,0 +1,28 @@
+package com.citu.module.menduner.system.controller.admin.permission.permission;
+
+import com.citu.framework.common.validation.InEnum;
+import com.citu.module.system.enums.permission.DataScopeEnum;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+import javax.validation.constraints.NotNull;
+import java.util.Collections;
+import java.util.Set;
+
+@Schema(description = "管理后台 - 赋予角色数据权限 Request VO")
+@Data
+public class MdePermissionAssignRoleDataScopeReqVO {
+
+    @Schema(description = "角色编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
+    @NotNull(message = "角色编号不能为空")
+    private Long roleId;
+
+    @Schema(description = "数据范围,参见 DataScopeEnum 枚举类", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
+    @NotNull(message = "数据范围不能为空")
+    @InEnum(value = DataScopeEnum.class, message = "数据范围必须是 {value}")
+    private Integer dataScope;
+
+    @Schema(description = "数据编号列表,只有范围类型为 DEPT_CUSTOM 时,该字段才需要", example = "1,3,5")
+    private Set<Long> dataScopeDeptIds = Collections.emptySet(); // 兜底
+
+}

+ 21 - 0
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/admin/permission/permission/MdePermissionAssignRoleMenuReqVO.java

@@ -0,0 +1,21 @@
+package com.citu.module.menduner.system.controller.admin.permission.permission;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+import javax.validation.constraints.NotNull;
+import java.util.Collections;
+import java.util.Set;
+
+@Schema(description = "管理后台 - 赋予角色菜单 Request VO")
+@Data
+public class MdePermissionAssignRoleMenuReqVO {
+
+    @Schema(description = "角色编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
+    @NotNull(message = "角色编号不能为空")
+    private Long roleId;
+
+    @Schema(description = "菜单编号列表", example = "1,3,5")
+    private Set<Long> menuIds = Collections.emptySet(); // 兜底
+
+}

+ 21 - 0
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/admin/permission/permission/MdePermissionAssignUserRoleReqVO.java

@@ -0,0 +1,21 @@
+package com.citu.module.menduner.system.controller.admin.permission.permission;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+import javax.validation.constraints.NotNull;
+import java.util.Collections;
+import java.util.Set;
+
+@Schema(description = "管理后台 - 赋予用户角色 Request VO")
+@Data
+public class MdePermissionAssignUserRoleReqVO {
+
+    @Schema(description = "用户编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
+    @NotNull(message = "用户编号不能为空")
+    private Long userId;
+
+    @Schema(description = "角色编号列表", example = "1,3,5")
+    private Set<Long> roleIds = Collections.emptySet(); // 兜底
+
+}

+ 31 - 0
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/admin/permission/role/MdeRolePageReqVO.java

@@ -0,0 +1,31 @@
+package com.citu.module.menduner.system.controller.admin.permission.role;
+
+import com.citu.framework.common.pojo.PageParam;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import java.time.LocalDateTime;
+
+import static com.citu.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
+
+@Schema(description = "管理后台 - 角色分页 Request VO")
+@Data
+@EqualsAndHashCode(callSuper = true)
+public class MdeRolePageReqVO extends PageParam {
+
+    @Schema(description = "角色名称,模糊匹配", example = "芋道")
+    private String name;
+
+    @Schema(description = "角色标识,模糊匹配", example = "citu")
+    private String code;
+
+    @Schema(description = "展示状态,参见 CommonStatusEnum 枚举类", example = "1")
+    private Integer status;
+
+    @Schema(description = "创建时间", example = "[2022-07-01 00:00:00,2022-07-01 23:59:59]")
+    @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
+    private LocalDateTime[] createTime;
+
+}

+ 58 - 0
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/admin/permission/role/MdeRoleRespVO.java

@@ -0,0 +1,58 @@
+package com.citu.module.menduner.system.controller.admin.permission.role;
+
+import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
+import com.alibaba.excel.annotation.ExcelProperty;
+import com.citu.framework.excel.core.annotations.DictFormat;
+import com.citu.framework.excel.core.convert.DictConvert;
+import com.citu.module.system.enums.DictTypeConstants;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+import javax.validation.constraints.NotBlank;
+import java.time.LocalDateTime;
+import java.util.Set;
+
+@Schema(description = "管理后台 - 角色信息 Response VO")
+@Data
+@ExcelIgnoreUnannotated
+public class MdeRoleRespVO {
+
+    @Schema(description = "角色编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
+    @ExcelProperty("角色序号")
+    private Long id;
+
+    @Schema(description = "角色名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "管理员")
+    @ExcelProperty("角色名称")
+    private String name;
+
+    @Schema(description = "角色标志", requiredMode = Schema.RequiredMode.REQUIRED, example = "admin")
+    @NotBlank(message = "角色标志不能为空")
+    @ExcelProperty("角色标志")
+    private String code;
+
+    @Schema(description = "显示顺序", requiredMode = Schema.RequiredMode.REQUIRED, example = "1024")
+    @ExcelProperty("角色排序")
+    private Integer sort;
+
+    @Schema(description = "状态,参见 CommonStatusEnum 枚举类", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
+    @ExcelProperty(value = "角色状态", converter = DictConvert.class)
+    @DictFormat(DictTypeConstants.COMMON_STATUS)
+    private Integer status;
+
+    @Schema(description = "角色类型,参见 RoleTypeEnum 枚举类", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
+    private Integer type;
+
+    @Schema(description = "备注", example = "我是一个角色")
+    private String remark;
+
+    @Schema(description = "数据范围,参见 DataScopeEnum 枚举类", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
+    @ExcelProperty("数据范围")
+    private Integer dataScope;
+
+    @Schema(description = "数据范围(指定部门数组)", example = "1")
+    private Set<Long> dataScopeDeptIds;
+
+    @Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED, example = "时间戳格式")
+    private LocalDateTime createTime;
+
+}

+ 39 - 0
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/admin/permission/role/MdeRoleSaveReqVO.java

@@ -0,0 +1,39 @@
+package com.citu.module.menduner.system.controller.admin.permission.role;
+
+import com.mzt.logapi.starter.annotation.DiffLogField;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+import javax.validation.constraints.NotBlank;
+import javax.validation.constraints.NotNull;
+import javax.validation.constraints.Size;
+
+@Schema(description = "管理后台 - 角色创建/更新 Request VO")
+@Data
+public class MdeRoleSaveReqVO {
+
+    @Schema(description = "角色编号", example = "1")
+    private Long id;
+
+    @Schema(description = "角色名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "管理员")
+    @NotBlank(message = "角色名称不能为空")
+    @Size(max = 30, message = "角色名称长度不能超过 30 个字符")
+    @DiffLogField(name = "角色名称")
+    private String name;
+
+    @NotBlank(message = "角色标志不能为空")
+    @Size(max = 100, message = "角色标志长度不能超过 100 个字符")
+    @Schema(description = "角色编码", requiredMode = Schema.RequiredMode.REQUIRED, example = "ADMIN")
+    @DiffLogField(name = "角色标志")
+    private String code;
+
+    @Schema(description = "显示顺序", requiredMode = Schema.RequiredMode.REQUIRED, example = "1024")
+    @NotNull(message = "显示顺序不能为空")
+    @DiffLogField(name = "显示顺序")
+    private Integer sort;
+
+    @Schema(description = "备注", example = "我是一个角色")
+    @DiffLogField(name = "备注")
+    private String remark;
+
+}

+ 16 - 0
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/admin/permission/role/MdeRoleSimpleRespVO.java

@@ -0,0 +1,16 @@
+package com.citu.module.menduner.system.controller.admin.permission.role;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+@Schema(description = "管理后台 - 角色精简信息 Response VO")
+@Data
+public class MdeRoleSimpleRespVO {
+
+    @Schema(description = "角色编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "1024")
+    private Long id;
+
+    @Schema(description = "角色名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "芋道")
+    private String name;
+
+}

+ 6 - 0
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/admin/school/SchoolController.java

@@ -91,4 +91,10 @@ public class SchoolController {
                         BeanUtils.toBean(list, SchoolRespVO.class));
     }
 
+    @GetMapping("/sync")
+    @Operation(summary = "同步学校数据")
+    public void syncBossPosition() {
+        schoolService.syncSchool();
+    }
+
 }

+ 14 - 2
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/admin/school/vo/SchoolPageReqVO.java

@@ -15,10 +15,22 @@ import static com.citu.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DA
 @ToString(callSuper = true)
 public class SchoolPageReqVO extends PageParam {
 
-    @Schema(description = "学校名称", example = "王五")
+    @Schema(description = "学校编码", example = "4111010001")
+    private Long code;
+
+    @Schema(description = "学校等级(本科|专科)", example = "本科")
+    private String level;
+
+    @Schema(description = "学校类型 (公办|民办)", example = "公办")
+    private String type;
+
+    @Schema(description = "监督人", example = "教育部")
+    private String supervisor;
+
+    @Schema(description = "学校名称", example = "北京大学")
     private String name;
 
-    @Schema(description = "学校所在区域", example = "9857")
+    @Schema(description = "学校所在地区", example = "110000")
     private Long areaId;
 
     @Schema(description = "学校所在地址")

+ 16 - 0
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/admin/school/vo/SchoolRespVO.java

@@ -17,6 +17,22 @@ public class SchoolRespVO {
     @ExcelProperty("id")
     private Long id;
 
+    @Schema(description = "学校编码", example = "4111010001")
+    @ExcelProperty("学校编码")
+    private Long code;
+
+    @Schema(description = "学校等级(本科|专科)", example = "本科")
+    @ExcelProperty("学校等级")
+    private String level;
+
+    @Schema(description = "学校类型(公办|民办)", example = "公办")
+    @ExcelProperty("学校类型")
+    private String type;
+
+    @Schema(description = "监督人", example = "教育部")
+    @ExcelProperty("监督人")
+    private String supervisor;
+
     @Schema(description = "学校名称", example = "王五")
     @ExcelProperty("学校名称")
     private String name;

+ 12 - 0
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/admin/school/vo/SchoolSaveReqVO.java

@@ -12,6 +12,18 @@ public class SchoolSaveReqVO {
     @Schema(description = "id", requiredMode = Schema.RequiredMode.REQUIRED, example = "32163")
     private Long id;
 
+    @Schema(description = "学校编码", example = "4111010001")
+    private Long code;
+
+    @Schema(description = "学校等级(本科|专科)", example = "本科")
+    private String level;
+
+    @Schema(description = "学校类型 (公办|民办)", example = "公办")
+    private String type;
+
+    @Schema(description = "监督人", example = "教育部")
+    private String supervisor;
+
     @Schema(description = "学校名称", example = "王五")
     private String name;
 

+ 94 - 0
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/admin/user/MdeUserController.java

@@ -0,0 +1,94 @@
+package com.citu.module.menduner.system.controller.admin.user;
+
+
+import com.citu.framework.apilog.core.annotation.ApiAccessLog;
+import com.citu.framework.common.pojo.CommonResult;
+import com.citu.framework.common.pojo.PageParam;
+import com.citu.framework.common.pojo.PageResult;
+import com.citu.framework.common.util.object.BeanUtils;
+import com.citu.framework.excel.core.util.ExcelUtils;
+import com.citu.module.menduner.system.controller.admin.user.vo.MdeUserPageReqVO;
+import com.citu.module.menduner.system.controller.admin.user.vo.MdeUserRespVO;
+import com.citu.module.menduner.system.controller.admin.user.vo.MdeUserSaveReqVO;
+import com.citu.module.menduner.system.dal.dataobject.user.MdeUserDO;
+import com.citu.module.menduner.system.service.user.MdeUserService;
+import io.swagger.v3.oas.annotations.Operation;
+import io.swagger.v3.oas.annotations.Parameter;
+import io.swagger.v3.oas.annotations.tags.Tag;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.*;
+
+import javax.annotation.Resource;
+import javax.servlet.http.HttpServletResponse;
+import javax.validation.Valid;
+import java.io.IOException;
+import java.util.List;
+
+import static com.citu.framework.apilog.core.enums.OperateTypeEnum.EXPORT;
+import static com.citu.framework.common.pojo.CommonResult.success;
+
+@Tag(name = "管理后台 - 门墩儿-用户登录")
+@RestController
+@RequestMapping("/menduner/system/mde-user")
+@Validated
+public class MdeUserController {
+
+    @Resource
+    private MdeUserService mdeUserService;
+
+    @PostMapping("/create")
+    @Operation(summary = "创建门墩儿-用户登录")
+    @PreAuthorize("@ss.hasPermission('menduner:system:mde-user:create')")
+    public CommonResult<Long> createMdeUser(@Valid @RequestBody MdeUserSaveReqVO createReqVO) {
+        return success(mdeUserService.createMdeUser(createReqVO));
+    }
+
+    @PutMapping("/update")
+    @Operation(summary = "更新门墩儿-用户登录")
+    @PreAuthorize("@ss.hasPermission('menduner:system:mde-user:update')")
+    public CommonResult<Boolean> updateMdeUser(@Valid @RequestBody MdeUserSaveReqVO updateReqVO) {
+        mdeUserService.updateMdeUser(updateReqVO);
+        return success(true);
+    }
+
+    @DeleteMapping("/delete")
+    @Operation(summary = "删除门墩儿-用户登录")
+    @Parameter(name = "id", description = "编号", required = true)
+    @PreAuthorize("@ss.hasPermission('menduner:system:mde-user:delete')")
+    public CommonResult<Boolean> deleteMdeUser(@RequestParam("id") Long id) {
+        mdeUserService.deleteMdeUser(id);
+        return success(true);
+    }
+
+    @GetMapping("/get")
+    @Operation(summary = "获得门墩儿-用户登录")
+    @Parameter(name = "id", description = "编号", required = true, example = "1024")
+    @PreAuthorize("@ss.hasPermission('menduner:system:mde-user:query')")
+    public CommonResult<MdeUserRespVO> getMdeUser(@RequestParam("id") Long id) {
+        MdeUserDO mdeUser = mdeUserService.getMdeUser(id);
+        return success(BeanUtils.toBean(mdeUser, MdeUserRespVO.class));
+    }
+
+    @GetMapping("/page")
+    @Operation(summary = "获得门墩儿-用户登录分页")
+    @PreAuthorize("@ss.hasPermission('menduner:system:mde-user:query')")
+    public CommonResult<PageResult<MdeUserRespVO>> getMdeUserPage(@Valid MdeUserPageReqVO pageReqVO) {
+        PageResult<MdeUserDO> pageResult = mdeUserService.getMdeUserPage(pageReqVO);
+        return success(BeanUtils.toBean(pageResult, MdeUserRespVO.class));
+    }
+
+    @GetMapping("/export-excel")
+    @Operation(summary = "导出门墩儿-用户登录 Excel")
+    @PreAuthorize("@ss.hasPermission('menduner:system:mde-user:export')")
+    @ApiAccessLog(operateType = EXPORT)
+    public void exportMdeUserExcel(@Valid MdeUserPageReqVO pageReqVO,
+                                   HttpServletResponse response) throws IOException {
+        pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE);
+        List<MdeUserDO> list = mdeUserService.getMdeUserPage(pageReqVO).getList();
+        // 导出 Excel
+        ExcelUtils.write(response, "门墩儿-用户登录.xls", "数据", MdeUserRespVO.class,
+                BeanUtils.toBean(list, MdeUserRespVO.class));
+    }
+
+}

+ 39 - 0
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/admin/user/vo/MdeUserPageReqVO.java

@@ -0,0 +1,39 @@
+package com.citu.module.menduner.system.controller.admin.user.vo;
+
+import com.citu.framework.common.pojo.PageParam;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.ToString;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import java.time.LocalDateTime;
+
+import static com.citu.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
+
+@Schema(description = "管理后台 - 门墩儿-用户登录分页 Request VO")
+@Data
+@EqualsAndHashCode(callSuper = true)
+@ToString(callSuper = true)
+public class MdeUserPageReqVO extends PageParam {
+
+    @Schema(description = "用户账号", example = "李四")
+    private String username;
+
+    @Schema(description = "用户邮箱")
+    private String email;
+
+    @Schema(description = "手机号码")
+    private String phone;
+
+    @Schema(description = "帐号状态(0正常 1停用)", example = "2")
+    private Integer status;
+
+    @Schema(description = "最后登录IP")
+    private String loginIp;
+
+    @Schema(description = "创建时间")
+    @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
+    private LocalDateTime[] createTime;
+
+}

+ 67 - 0
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/admin/user/vo/MdeUserRespVO.java

@@ -0,0 +1,67 @@
+package com.citu.module.menduner.system.controller.admin.user.vo;
+
+
+import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
+import com.alibaba.excel.annotation.ExcelProperty;
+import com.citu.framework.excel.core.annotations.DictFormat;
+import com.citu.framework.excel.core.convert.DictConvert;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+import java.time.LocalDateTime;
+
+@Schema(description = "管理后台 - 门墩儿-用户登录 Response VO")
+@Data
+@ExcelIgnoreUnannotated
+public class MdeUserRespVO {
+
+    @Schema(description = "用户ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "2684")
+    @ExcelProperty("用户ID")
+    private Long id;
+
+    @Schema(description = "用户账号", requiredMode = Schema.RequiredMode.REQUIRED, example = "李四")
+    @ExcelProperty("用户账号")
+    private String username;
+
+    @Schema(description = "密码", requiredMode = Schema.RequiredMode.REQUIRED)
+    @ExcelProperty("密码")
+    private String password;
+
+    @Schema(description = "用户邮箱")
+    @ExcelProperty("用户邮箱")
+    private String email;
+
+    @Schema(description = "手机号码")
+    @ExcelProperty("手机号码")
+    private String phone;
+
+    @Schema(description = "头像地址")
+    @ExcelProperty("头像地址")
+    private String avatar;
+
+    @Schema(description = "帐号状态(0正常 1停用)", requiredMode = Schema.RequiredMode.REQUIRED, example = "2")
+    @ExcelProperty(value = "帐号状态(0正常 1停用)", converter = DictConvert.class)
+    @DictFormat("menduner_status") // TODO 代码优化:建议设置到对应的 DictTypeConstants 枚举类中
+    private Integer status;
+
+    @Schema(description = "注册 IP")
+    @ExcelProperty("注册 IP")
+    private String registerIp;
+
+    @Schema(description = "注册终端")
+    @ExcelProperty("注册终端")
+    private String registerTerminal;
+
+    @Schema(description = "最后登录IP")
+    @ExcelProperty("最后登录IP")
+    private String loginIp;
+
+    @Schema(description = "最后登录时间")
+    @ExcelProperty("最后登录时间")
+    private LocalDateTime loginDate;
+
+    @Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED)
+    @ExcelProperty("创建时间")
+    private LocalDateTime createTime;
+
+}

+ 51 - 0
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/admin/user/vo/MdeUserSaveReqVO.java

@@ -0,0 +1,51 @@
+package com.citu.module.menduner.system.controller.admin.user.vo;
+
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.*;
+import java.util.*;
+import javax.validation.constraints.*;
+import org.springframework.format.annotation.DateTimeFormat;
+import java.time.LocalDateTime;
+
+@Schema(description = "管理后台 - 门墩儿-用户登录新增/修改 Request VO")
+@Data
+public class MdeUserSaveReqVO {
+
+    @Schema(description = "用户ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "2684")
+    private Long id;
+
+    @Schema(description = "用户账号", requiredMode = Schema.RequiredMode.REQUIRED, example = "李四")
+    @NotEmpty(message = "用户账号不能为空")
+    private String username;
+
+    @Schema(description = "密码", requiredMode = Schema.RequiredMode.REQUIRED)
+    @NotEmpty(message = "密码不能为空")
+    private String password;
+
+    @Schema(description = "用户邮箱")
+    private String email;
+
+    @Schema(description = "手机号码")
+    private String phone;
+
+    @Schema(description = "头像地址")
+    private String avatar;
+
+    @Schema(description = "帐号状态(0正常 1停用)", requiredMode = Schema.RequiredMode.REQUIRED, example = "2")
+    @NotNull(message = "帐号状态(0正常 1停用)不能为空")
+    private Integer status;
+
+    @Schema(description = "注册 IP")
+    private String registerIp;
+
+    @Schema(description = "注册终端")
+    private String registerTerminal;
+
+    @Schema(description = "最后登录IP")
+    private String loginIp;
+
+    @Schema(description = "最后登录时间")
+    private LocalDateTime loginDate;
+
+}

+ 0 - 94
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/admin/usercertificate/UserCertificateController.java

@@ -1,94 +0,0 @@
-package com.citu.module.menduner.system.controller.admin.usercertificate;
-
-import org.springframework.web.bind.annotation.*;
-import javax.annotation.Resource;
-import org.springframework.validation.annotation.Validated;
-import org.springframework.security.access.prepost.PreAuthorize;
-import io.swagger.v3.oas.annotations.tags.Tag;
-import io.swagger.v3.oas.annotations.Parameter;
-import io.swagger.v3.oas.annotations.Operation;
-
-import javax.validation.*;
-import javax.servlet.http.*;
-import java.util.*;
-import java.io.IOException;
-
-import com.citu.framework.common.pojo.PageParam;
-import com.citu.framework.common.pojo.PageResult;
-import com.citu.framework.common.pojo.CommonResult;
-import com.citu.framework.common.util.object.BeanUtils;
-import static com.citu.framework.common.pojo.CommonResult.success;
-
-import com.citu.framework.excel.core.util.ExcelUtils;
-
-import com.citu.framework.apilog.core.annotation.ApiAccessLog;
-import static com.citu.framework.apilog.core.enums.OperateTypeEnum.*;
-
-import com.citu.module.menduner.system.controller.admin.usercertificate.vo.*;
-import com.citu.module.menduner.system.dal.dataobject.usercertificate.UserCertificateDO;
-import com.citu.module.menduner.system.service.usercertificate.UserCertificateService;
-
-@Tag(name = "管理后台 - 用户证书")
-@RestController
-@RequestMapping("/menduner/system/user-certificate")
-@Validated
-public class UserCertificateController {
-
-    @Resource
-    private UserCertificateService userCertificateService;
-
-    @PostMapping("/create")
-    @Operation(summary = "创建用户证书")
-    @PreAuthorize("@ss.hasPermission('menduner:system:user-certificate:create')")
-    public CommonResult<Long> createUserCertificate(@Valid @RequestBody UserCertificateSaveReqVO createReqVO) {
-        return success(userCertificateService.createUserCertificate(createReqVO));
-    }
-
-    @PutMapping("/update")
-    @Operation(summary = "更新用户证书")
-    @PreAuthorize("@ss.hasPermission('menduner:system:user-certificate:update')")
-    public CommonResult<Boolean> updateUserCertificate(@Valid @RequestBody UserCertificateSaveReqVO updateReqVO) {
-        userCertificateService.updateUserCertificate(updateReqVO);
-        return success(true);
-    }
-
-    @DeleteMapping("/delete")
-    @Operation(summary = "删除用户证书")
-    @Parameter(name = "id", description = "编号", required = true)
-    @PreAuthorize("@ss.hasPermission('menduner:system:user-certificate:delete')")
-    public CommonResult<Boolean> deleteUserCertificate(@RequestParam("id") Long id) {
-        userCertificateService.deleteUserCertificate(id);
-        return success(true);
-    }
-
-    @GetMapping("/get")
-    @Operation(summary = "获得用户证书")
-    @Parameter(name = "id", description = "编号", required = true, example = "1024")
-    @PreAuthorize("@ss.hasPermission('menduner:system:user-certificate:query')")
-    public CommonResult<UserCertificateRespVO> getUserCertificate(@RequestParam("id") Long id) {
-        UserCertificateDO userCertificate = userCertificateService.getUserCertificate(id);
-        return success(BeanUtils.toBean(userCertificate, UserCertificateRespVO.class));
-    }
-
-    @GetMapping("/page")
-    @Operation(summary = "获得用户证书分页")
-    @PreAuthorize("@ss.hasPermission('menduner:system:user-certificate:query')")
-    public CommonResult<PageResult<UserCertificateRespVO>> getUserCertificatePage(@Valid UserCertificatePageReqVO pageReqVO) {
-        PageResult<UserCertificateDO> pageResult = userCertificateService.getUserCertificatePage(pageReqVO);
-        return success(BeanUtils.toBean(pageResult, UserCertificateRespVO.class));
-    }
-
-    @GetMapping("/export-excel")
-    @Operation(summary = "导出用户证书 Excel")
-    @PreAuthorize("@ss.hasPermission('menduner:system:user-certificate:export')")
-    @ApiAccessLog(operateType = EXPORT)
-    public void exportUserCertificateExcel(@Valid UserCertificatePageReqVO pageReqVO,
-              HttpServletResponse response) throws IOException {
-        pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE);
-        List<UserCertificateDO> list = userCertificateService.getUserCertificatePage(pageReqVO).getList();
-        // 导出 Excel
-        ExcelUtils.write(response, "用户证书.xls", "数据", UserCertificateRespVO.class,
-                        BeanUtils.toBean(list, UserCertificateRespVO.class));
-    }
-
-}

+ 0 - 93
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/admin/userinfo/UserInfoController.java

@@ -1,93 +0,0 @@
-package com.citu.module.menduner.system.controller.admin.userinfo;
-
-import com.citu.framework.apilog.core.annotation.ApiAccessLog;
-import com.citu.framework.common.pojo.CommonResult;
-import com.citu.framework.common.pojo.PageParam;
-import com.citu.framework.common.pojo.PageResult;
-import com.citu.framework.common.util.object.BeanUtils;
-import com.citu.framework.excel.core.util.ExcelUtils;
-import com.citu.module.menduner.system.dal.dataobject.userinfo.UserInfoDO;
-import com.citu.module.menduner.system.service.userinfo.UserInfoService;
-import com.citu.module.menduner.system.controller.admin.userinfo.vo.UserInfoPageReqVO;
-import com.citu.module.menduner.system.controller.admin.userinfo.vo.UserInfoRespVO;
-import com.citu.module.menduner.system.controller.admin.userinfo.vo.UserInfoSaveReqVO;
-import io.swagger.v3.oas.annotations.Operation;
-import io.swagger.v3.oas.annotations.Parameter;
-import io.swagger.v3.oas.annotations.tags.Tag;
-import org.springframework.security.access.prepost.PreAuthorize;
-import org.springframework.validation.annotation.Validated;
-import org.springframework.web.bind.annotation.*;
-
-import javax.annotation.Resource;
-import javax.servlet.http.HttpServletResponse;
-import javax.validation.Valid;
-import java.io.IOException;
-import java.util.List;
-
-import static com.citu.framework.apilog.core.enums.OperateTypeEnum.EXPORT;
-import static com.citu.framework.common.pojo.CommonResult.success;
-
-@Tag(name = "管理后台 - 用户信息-个人档案")
-@RestController
-@RequestMapping("/menduner/system/user-info")
-@Validated
-public class UserInfoController {
-
-    @Resource
-    private UserInfoService userInfoService;
-
-    @PostMapping("/create")
-    @Operation(summary = "创建用户信息-个人档案")
-    @PreAuthorize("@ss.hasPermission('menduner:system:user-info:create')")
-    public CommonResult<Long> createUserInfo(@Valid @RequestBody UserInfoSaveReqVO createReqVO) {
-        return success(userInfoService.createUserInfo(createReqVO));
-    }
-
-    @PutMapping("/update")
-    @Operation(summary = "更新用户信息-个人档案")
-    @PreAuthorize("@ss.hasPermission('menduner:system:user-info:update')")
-    public CommonResult<Boolean> updateUserInfo(@Valid @RequestBody UserInfoSaveReqVO updateReqVO) {
-        userInfoService.updateUserInfo(updateReqVO);
-        return success(true);
-    }
-
-    @DeleteMapping("/delete")
-    @Operation(summary = "删除用户信息-个人档案")
-    @Parameter(name = "id", description = "编号", required = true)
-    @PreAuthorize("@ss.hasPermission('menduner:system:user-info:delete')")
-    public CommonResult<Boolean> deleteUserInfo(@RequestParam("id") Long id) {
-        userInfoService.deleteUserInfo(id);
-        return success(true);
-    }
-
-    @GetMapping("/get")
-    @Operation(summary = "获得用户信息-个人档案")
-    @Parameter(name = "id", description = "编号", required = true, example = "1024")
-    @PreAuthorize("@ss.hasPermission('menduner:system:user-info:query')")
-    public CommonResult<UserInfoRespVO> getUserInfo(@RequestParam("id") Long id) {
-        UserInfoDO userInfo = userInfoService.getUserInfo(id);
-        return success(BeanUtils.toBean(userInfo, UserInfoRespVO.class));
-    }
-
-    @GetMapping("/page")
-    @Operation(summary = "获得用户信息-个人档案分页")
-    @PreAuthorize("@ss.hasPermission('menduner:system:user-info:query')")
-    public CommonResult<PageResult<UserInfoRespVO>> getUserInfoPage(@Valid UserInfoPageReqVO pageReqVO) {
-        PageResult<UserInfoDO> pageResult = userInfoService.getUserInfoPage(pageReqVO);
-        return success(BeanUtils.toBean(pageResult, UserInfoRespVO.class));
-    }
-
-    @GetMapping("/export-excel")
-    @Operation(summary = "导出用户信息-个人档案 Excel")
-    @PreAuthorize("@ss.hasPermission('menduner:system:user-info:export')")
-    @ApiAccessLog(operateType = EXPORT)
-    public void exportUserInfoExcel(@Valid UserInfoPageReqVO pageReqVO,
-                                    HttpServletResponse response) throws IOException {
-        pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE);
-        List<UserInfoDO> list = userInfoService.getUserInfoPage(pageReqVO).getList();
-        // 导出 Excel
-        ExcelUtils.write(response, "用户信息-个人档案.xls", "数据", UserInfoRespVO.class,
-                BeanUtils.toBean(list, UserInfoRespVO.class));
-    }
-
-}

+ 0 - 94
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/admin/userskill/UserSkillController.java

@@ -1,94 +0,0 @@
-package com.citu.module.menduner.system.controller.admin.userskill;
-
-import org.springframework.web.bind.annotation.*;
-import javax.annotation.Resource;
-import org.springframework.validation.annotation.Validated;
-import org.springframework.security.access.prepost.PreAuthorize;
-import io.swagger.v3.oas.annotations.tags.Tag;
-import io.swagger.v3.oas.annotations.Parameter;
-import io.swagger.v3.oas.annotations.Operation;
-
-import javax.validation.*;
-import javax.servlet.http.*;
-import java.util.*;
-import java.io.IOException;
-
-import com.citu.framework.common.pojo.PageParam;
-import com.citu.framework.common.pojo.PageResult;
-import com.citu.framework.common.pojo.CommonResult;
-import com.citu.framework.common.util.object.BeanUtils;
-import static com.citu.framework.common.pojo.CommonResult.success;
-
-import com.citu.framework.excel.core.util.ExcelUtils;
-
-import com.citu.framework.apilog.core.annotation.ApiAccessLog;
-import static com.citu.framework.apilog.core.enums.OperateTypeEnum.*;
-
-import com.citu.module.menduner.system.controller.admin.userskill.vo.*;
-import com.citu.module.menduner.system.dal.dataobject.userskill.UserSkillDO;
-import com.citu.module.menduner.system.service.userskill.UserSkillService;
-
-@Tag(name = "管理后台 - 用户技能")
-@RestController
-@RequestMapping("/menduner/system/user-skill")
-@Validated
-public class UserSkillController {
-
-    @Resource
-    private UserSkillService userSkillService;
-
-    @PostMapping("/create")
-    @Operation(summary = "创建用户技能")
-    @PreAuthorize("@ss.hasPermission('menduner:system:user-skill:create')")
-    public CommonResult<Long> createUserSkill(@Valid @RequestBody UserSkillSaveReqVO createReqVO) {
-        return success(userSkillService.createUserSkill(createReqVO));
-    }
-
-    @PutMapping("/update")
-    @Operation(summary = "更新用户技能")
-    @PreAuthorize("@ss.hasPermission('menduner:system:user-skill:update')")
-    public CommonResult<Boolean> updateUserSkill(@Valid @RequestBody UserSkillSaveReqVO updateReqVO) {
-        userSkillService.updateUserSkill(updateReqVO);
-        return success(true);
-    }
-
-    @DeleteMapping("/delete")
-    @Operation(summary = "删除用户技能")
-    @Parameter(name = "id", description = "编号", required = true)
-    @PreAuthorize("@ss.hasPermission('menduner:system:user-skill:delete')")
-    public CommonResult<Boolean> deleteUserSkill(@RequestParam("id") Long id) {
-        userSkillService.deleteUserSkill(id);
-        return success(true);
-    }
-
-    @GetMapping("/get")
-    @Operation(summary = "获得用户技能")
-    @Parameter(name = "id", description = "编号", required = true, example = "1024")
-    @PreAuthorize("@ss.hasPermission('menduner:system:user-skill:query')")
-    public CommonResult<UserSkillRespVO> getUserSkill(@RequestParam("id") Long id) {
-        UserSkillDO userSkill = userSkillService.getUserSkill(id);
-        return success(BeanUtils.toBean(userSkill, UserSkillRespVO.class));
-    }
-
-    @GetMapping("/page")
-    @Operation(summary = "获得用户技能分页")
-    @PreAuthorize("@ss.hasPermission('menduner:system:user-skill:query')")
-    public CommonResult<PageResult<UserSkillRespVO>> getUserSkillPage(@Valid UserSkillPageReqVO pageReqVO) {
-        PageResult<UserSkillDO> pageResult = userSkillService.getUserSkillPage(pageReqVO);
-        return success(BeanUtils.toBean(pageResult, UserSkillRespVO.class));
-    }
-
-    @GetMapping("/export-excel")
-    @Operation(summary = "导出用户技能 Excel")
-    @PreAuthorize("@ss.hasPermission('menduner:system:user-skill:export')")
-    @ApiAccessLog(operateType = EXPORT)
-    public void exportUserSkillExcel(@Valid UserSkillPageReqVO pageReqVO,
-              HttpServletResponse response) throws IOException {
-        pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE);
-        List<UserSkillDO> list = userSkillService.getUserSkillPage(pageReqVO).getList();
-        // 导出 Excel
-        ExcelUtils.write(response, "用户技能.xls", "数据", UserSkillRespVO.class,
-                        BeanUtils.toBean(list, UserSkillRespVO.class));
-    }
-
-}

+ 46 - 0
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/dal/dataobject/enterprise/EnterpriseAddressDO.java

@@ -0,0 +1,46 @@
+package com.citu.module.menduner.system.dal.dataobject.enterprise;
+
+import com.baomidou.mybatisplus.annotation.KeySequence;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.citu.framework.mybatis.core.dataobject.BaseDO;
+import lombok.*;
+
+/**
+ * 门墩儿-企业地址 DO
+ *
+ * @author rayson
+ */
+@TableName("mde_enterprise_address")
+@KeySequence("mde_enterprise_address_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。
+@Data
+@EqualsAndHashCode(callSuper = true)
+@ToString(callSuper = true)
+@Builder
+@NoArgsConstructor
+@AllArgsConstructor
+public class EnterpriseAddressDO extends BaseDO {
+
+    /**
+     * id
+     */
+    @TableId
+    private Long id;
+    /**
+     * 企业id
+     */
+    private Long enterpriseId;
+    /**
+     * 公司地址
+     */
+    private String address;
+    /**
+     * 经度
+     */
+    private String longitude;
+    /**
+     * 维度
+     */
+    private String latitude;
+
+}

+ 100 - 0
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/dal/dataobject/enterprise/EnterpriseBusinessDO.java

@@ -0,0 +1,100 @@
+package com.citu.module.menduner.system.dal.dataobject.enterprise;
+
+import com.baomidou.mybatisplus.annotation.KeySequence;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.citu.framework.mybatis.core.dataobject.BaseDO;
+import lombok.*;
+
+import java.time.LocalDateTime;
+
+/**
+ * 门墩儿-企业工商信息 DO
+ *
+ * @author rayson
+ */
+@TableName("mde_enterprise_business")
+@KeySequence("mde_enterprise_business_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。
+@Data
+@EqualsAndHashCode(callSuper = true)
+@ToString(callSuper = true)
+@Builder
+@NoArgsConstructor
+@AllArgsConstructor
+public class EnterpriseBusinessDO extends BaseDO {
+
+    /**
+     * id
+     */
+    @TableId
+    private Long id;
+    /**
+     * 企业id
+     */
+    private Long enterpriseId;
+    /**
+     * 统一社会信用代码
+     */
+    private String code;
+    /**
+     * 企业名称
+     */
+    private String name;
+    /**
+     * 企业类型
+     * <p>
+     * 枚举 {@link TODO menduner_enterprise_type 对应的类}
+     */
+    private String type;
+    /**
+     * 所属地区
+     */
+    private String area;
+    /**
+     * 注册地址
+     */
+    private String address;
+    /**
+     * 法定代表人
+     */
+    private String representative;
+    /**
+     * 成立时间
+     */
+    private LocalDateTime establishmentTime;
+    /**
+     * 注册资金
+     */
+    private String registeredCapital;
+    /**
+     * 核准日期
+     */
+    private String approvalTime;
+    /**
+     * 曾用名
+     */
+    private String formerName;
+    /**
+     * 所属行业
+     */
+    private String industry;
+    /**
+     * 注册机关
+     */
+    private String registrationAuthority;
+    /**
+     * 经营状态
+     * <p>
+     * 枚举 {@link TODO menduner_business_status 对应的类}
+     */
+    private String businessStatus;
+    /**
+     * 营业期限
+     */
+    private String businessTerm;
+    /**
+     * 经营范围
+     */
+    private String businessScope;
+
+}

+ 99 - 0
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/dal/dataobject/enterprise/EnterpriseDO.java

@@ -0,0 +1,99 @@
+package com.citu.module.menduner.system.dal.dataobject.enterprise;
+
+import com.alibaba.excel.annotation.ExcelProperty;
+import com.baomidou.mybatisplus.annotation.KeySequence;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.citu.framework.mybatis.core.dataobject.BaseDO;
+import lombok.*;
+
+/**
+ * 门墩儿-企业信息 DO
+ *
+ * @author rayson
+ */
+@TableName("mde_enterprise")
+@KeySequence("mde_enterprise_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。
+@Data
+@EqualsAndHashCode(callSuper = true)
+@ToString(callSuper = true)
+@Builder
+@NoArgsConstructor
+@AllArgsConstructor
+public class EnterpriseDO extends BaseDO {
+
+    /**
+     * id
+     */
+    @TableId
+    private Long id;
+    /**
+     * 上级id
+     **/
+    private Long parentId;
+    /**
+     * 企业全称
+     */
+    private String name;
+    /**
+     * 企业别称
+     */
+    private String anotherName;
+    /**
+     * 企业官网
+     */
+    private String website;
+    /**
+     * 公司简介
+     */
+    private String introduce;
+    /**
+     * 联系人
+     */
+    private String contacts;
+    /**
+     * 联系电话
+     */
+    private String phone;
+    /**
+     * logo图片地址
+     */
+    private String logoUrl;
+    /**
+     * 所在行业
+     */
+    private Long industryId;
+    /**
+     * 融资阶段(未融资,天使轮,A轮,B轮,C轮,D轮以上,已上市,不需要融资)
+     * <p>
+     * 枚举 {@link TODO menduner_financing_status 对应的类}
+     */
+    private Integer financingStatus;
+    /**
+     * 人员规模(0-20人,20-99人,100-499人,500-999人,1000-9999人,9999人以上)
+     * <p>
+     * 枚举 {@link TODO menduner_scale 对应的类}
+     */
+    private Integer scale;
+    /**
+     * 公司福利
+     */
+    private String welfareList;
+    /**
+     * 公司相册
+     */
+    private String albumList;
+    /**
+     * 上班时间
+     */
+    private String workTime;
+    /**
+     * 发展历程
+     */
+    private String developHistory;
+    /**
+     * 获得荣誉
+     */
+    private String receivedHonors;
+
+}

+ 64 - 0
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/dal/dataobject/enterprise/EnterpriseRegisterDO.java

@@ -0,0 +1,64 @@
+package com.citu.module.menduner.system.dal.dataobject.enterprise;
+
+import com.baomidou.mybatisplus.annotation.KeySequence;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.citu.framework.mybatis.core.dataobject.BaseDO;
+import lombok.*;
+
+/**
+ * 门墩儿-企业注册申请 DO
+ *
+ * @author rayson
+ */
+@TableName("mde_enterprise_register")
+@KeySequence("mde_enterprise_register_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。
+@Data
+@EqualsAndHashCode(callSuper = true)
+@ToString(callSuper = true)
+@Builder
+@NoArgsConstructor
+@AllArgsConstructor
+public class EnterpriseRegisterDO extends BaseDO {
+
+    /**
+     * id
+     */
+    @TableId
+    private Long id;
+    /**
+     * 用户id
+     */
+    private Long userId;
+    /**
+     * 企业名称
+     */
+    private String name;
+    /**
+     * 联系电话
+     */
+    private String phone;
+    /**
+     * 联系邮箱
+     */
+    private String email;
+    /**
+     * 营业执照图片
+     */
+    private String businessLicenseUrl;
+    /**
+     * 帐号状态(0正常 1停用 2 等待审核 3不通过)
+     * <p>
+     * 枚举 {@link TODO menduner_status 对应的类}
+     */
+    private Integer status;
+    /**
+     * 审核原因
+     */
+    private String reason;
+    /**
+     * 备注
+     */
+    private String remark;
+
+}

+ 61 - 0
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/dal/dataobject/enterprise/EnterpriseUserBindDO.java

@@ -0,0 +1,61 @@
+package com.citu.module.menduner.system.dal.dataobject.enterprise;
+
+
+import com.baomidou.mybatisplus.annotation.KeySequence;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.citu.framework.mybatis.core.dataobject.BaseDO;
+import lombok.*;
+
+import java.time.LocalDateTime;
+
+/**
+ * 门墩儿-企业登录用户 DO
+ *
+ * @author rayson
+ */
+@TableName("mde_enterprise_user_bind")
+@KeySequence("mde_enterprise_user_bind_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。
+@Data
+@EqualsAndHashCode(callSuper = true)
+@ToString(callSuper = true)
+@Builder
+@NoArgsConstructor
+@AllArgsConstructor
+public class EnterpriseUserBindDO extends BaseDO {
+
+    /**
+     * id
+     */
+    @TableId
+    private Long id;
+    /**
+     * 企业id
+     */
+    private Long enterpriseId;
+    /**
+     * 用户id
+     */
+    private String userId;
+    /**
+     * 帐号状态(0正常 1停用 2 等待审核 3不通过)
+     * <p>
+     * 枚举 {@link TODO menduner_status 对应的类}
+     */
+    private Integer status;
+    /**
+     * 最后登录IP
+     */
+    private String loginIp;
+    /**
+     * 最后登录时间
+     */
+    private LocalDateTime loginDate;
+    /**
+     * 用户类型(0普通企业用户 1 企业管理员)
+     * <p>
+     * 枚举 {@link TODO user_type 对应的类}
+     */
+    private Integer userType;
+
+}

+ 103 - 0
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/dal/dataobject/job/JobAdvertisedDO.java

@@ -0,0 +1,103 @@
+package com.citu.module.menduner.system.dal.dataobject.job;
+
+
+import com.baomidou.mybatisplus.annotation.KeySequence;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.citu.framework.mybatis.core.dataobject.BaseDO;
+import lombok.*;
+
+/**
+ * 门墩儿-招聘职位 DO
+ *
+ * @author rayson
+ */
+@TableName("mde_job_advertised")
+@KeySequence("mde_job_advertised_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。
+@Data
+@EqualsAndHashCode(callSuper = true)
+@ToString(callSuper = true)
+@Builder
+@NoArgsConstructor
+@AllArgsConstructor
+public class JobAdvertisedDO extends BaseDO {
+
+    /**
+     * id
+     */
+    @TableId
+    private Long id;
+    /**
+     * 企业id
+     */
+    private Long enterpriseId;
+    /**
+     * 发布用户id
+     */
+    private Long userId;
+    /**
+     * 工作地区
+     */
+    private Long areaId;
+    /**
+     * 职位名称
+     */
+    private String name;
+    /**
+     * 职位类型id
+     */
+    private Long positionId;
+    /**
+     * 招聘类型
+     * <p>
+     * 枚举 {@link TODO menduner_job_type 对应的类}
+     */
+    private Integer type;
+    /**
+     * 工作经验
+     */
+    private Integer expType;
+    /**
+     * 学历要求
+     */
+    private Integer eduType;
+    /**
+     * 薪酬from
+     */
+    private Integer payFrom;
+    /**
+     * 薪酬to
+     */
+    private Integer payTo;
+    /**
+     * 职位标签
+     */
+    private String tagList;
+    /**
+     * 职位内容
+     */
+    private String content;
+    /**
+     * 职位要求
+     */
+    private String requirement;
+    /**
+     * 工作地址
+     */
+    private String address;
+    /**
+     * 经度
+     */
+    private String longitude;
+    /**
+     * 维度
+     */
+    private String latitude;
+    /**
+     * 职位状态
+     * <p>
+     * 枚举 {@link TODO menduner_status 对应的类}
+     */
+    private Integer status;
+
+}

+ 3 - 5
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/dal/dataobject/jobinterested/JobInterestedDO.java → menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/dal/dataobject/job/JobInterestedDO.java

@@ -1,11 +1,9 @@
-package com.citu.module.menduner.system.dal.dataobject.jobinterested;
+package com.citu.module.menduner.system.dal.dataobject.job;
 
 import lombok.*;
-import java.util.*;
-import java.math.BigDecimal;
+
 import java.math.BigDecimal;
-import java.time.LocalDateTime;
-import java.time.LocalDateTime;
+
 import com.baomidou.mybatisplus.annotation.*;
 import com.citu.framework.mybatis.core.dataobject.BaseDO;
 

+ 5 - 8
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/dal/dataobject/usercertificate/UserCertificateDO.java → menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/dal/dataobject/people/PeopleCertificateDO.java

@@ -1,26 +1,23 @@
-package com.citu.module.menduner.system.dal.dataobject.usercertificate;
+package com.citu.module.menduner.system.dal.dataobject.people;
 
 import lombok.*;
-import java.util.*;
-import java.time.LocalDateTime;
-import java.time.LocalDateTime;
 import com.baomidou.mybatisplus.annotation.*;
 import com.citu.framework.mybatis.core.dataobject.BaseDO;
 
 /**
- * 用户证书 DO
+ * 人员证书 DO
  *
  * @author Rayson
  */
-@TableName("mde_user_certificate")
-@KeySequence("mde_user_certificate_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。
+@TableName("mde_people_certificate")
+@KeySequence("mde_people_certificate_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。
 @Data
 @EqualsAndHashCode(callSuper = true)
 @ToString(callSuper = true)
 @Builder
 @NoArgsConstructor
 @AllArgsConstructor
-public class UserCertificateDO extends BaseDO {
+public class PeopleCertificateDO extends BaseDO {
 
     /**
      * id

+ 5 - 7
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/dal/dataobject/userinfo/UserInfoDO.java → menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/dal/dataobject/people/PeopleInfoDO.java

@@ -1,29 +1,27 @@
-package com.citu.module.menduner.system.dal.dataobject.userinfo;
+package com.citu.module.menduner.system.dal.dataobject.people;
 
 import com.baomidou.mybatisplus.annotation.KeySequence;
 import com.baomidou.mybatisplus.annotation.TableId;
 import com.baomidou.mybatisplus.annotation.TableName;
 import com.citu.framework.mybatis.core.dataobject.BaseDO;
-import io.swagger.v3.oas.annotations.media.Schema;
 import lombok.*;
 
-import java.time.LocalDate;
 import java.time.LocalDateTime;
 
 /**
- * 用户信息-个人档案 DO
+ * 人员信息-个人档案 DO
  *
  * @author Rayson
  */
-@TableName("mde_user_info")
-@KeySequence("mde_user_info_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。
+@TableName("mde_people_info")
+@KeySequence("mde_people_info_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。
 @Data
 @EqualsAndHashCode(callSuper = true)
 @ToString(callSuper = true)
 @Builder
 @NoArgsConstructor
 @AllArgsConstructor
-public class UserInfoDO extends BaseDO {
+public class PeopleInfoDO extends BaseDO {
 
     /**
      * id

+ 5 - 8
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/dal/dataobject/userskill/UserSkillDO.java → menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/dal/dataobject/people/PeopleSkillDO.java

@@ -1,27 +1,24 @@
-package com.citu.module.menduner.system.dal.dataobject.userskill;
+package com.citu.module.menduner.system.dal.dataobject.people;
 
 import com.citu.module.menduner.system.enums.userskill.SkillLevelEnum;
 import lombok.*;
-import java.util.*;
-import java.time.LocalDateTime;
-import java.time.LocalDateTime;
 import com.baomidou.mybatisplus.annotation.*;
 import com.citu.framework.mybatis.core.dataobject.BaseDO;
 
 /**
- * 用户技能 DO
+ * 人员技能 DO
  *
  * @author Rayson
  */
-@TableName("mde_user_skill")
-@KeySequence("mde_user_skill_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。
+@TableName("mde_people_skill")
+@KeySequence("mde_people_skill_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。
 @Data
 @EqualsAndHashCode(callSuper = true)
 @ToString(callSuper = true)
 @Builder
 @NoArgsConstructor
 @AllArgsConstructor
-public class UserSkillDO extends BaseDO {
+public class PeopleSkillDO extends BaseDO {
 
     /**
      * id

+ 78 - 0
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/dal/dataobject/permission/MdeRoleDO.java

@@ -0,0 +1,78 @@
+package com.citu.module.menduner.system.dal.dataobject.permission;
+
+import com.baomidou.mybatisplus.annotation.KeySequence;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.citu.framework.common.enums.CommonStatusEnum;
+import com.citu.framework.mybatis.core.type.JsonLongSetTypeHandler;
+import com.citu.framework.tenant.core.db.TenantBaseDO;
+import com.citu.module.system.enums.permission.DataScopeEnum;
+import com.citu.module.system.enums.permission.RoleTypeEnum;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+import java.util.Set;
+
+/**
+ * Menduner 角色 DO
+ *
+ * @author rayson
+ */
+@TableName(value = "mde_role", autoResultMap = true)
+@KeySequence("mde_role_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。
+@Data
+@EqualsAndHashCode(callSuper = true)
+public class MdeRoleDO extends TenantBaseDO {
+
+    /**
+     * 角色ID
+     */
+    @TableId
+    private Long id;
+    /**
+     * 角色名称
+     */
+    private String name;
+    /**
+     * 角色标识
+     *
+     * 枚举
+     */
+    private String code;
+    /**
+     * 角色排序
+     */
+    private Integer sort;
+    /**
+     * 角色状态
+     *
+     * 枚举 {@link CommonStatusEnum}
+     */
+    private Integer status;
+    /**
+     * 角色类型
+     *
+     * 枚举 {@link RoleTypeEnum}
+     */
+    private Integer type;
+    /**
+     * 备注
+     */
+    private String remark;
+
+    /**
+     * 数据范围
+     *
+     * 枚举 {@link DataScopeEnum}
+     */
+    private Integer dataScope;
+    /**
+     * 数据范围(指定部门数组)
+     *
+     * 适用于 {@link #dataScope} 的值为 {@link DataScopeEnum#DEPT_CUSTOM} 时
+     */
+    @TableField(typeHandler = JsonLongSetTypeHandler.class)
+    private Set<Long> dataScopeDeptIds;
+
+}

+ 35 - 0
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/dal/dataobject/permission/MdeUserRoleDO.java

@@ -0,0 +1,35 @@
+package com.citu.module.menduner.system.dal.dataobject.permission;
+
+import com.baomidou.mybatisplus.annotation.KeySequence;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.citu.framework.mybatis.core.dataobject.BaseDO;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+/**
+ * menduner 用户和角色关联
+ *
+ * @author ruoyi
+ */
+@TableName("mde_user_role")
+@KeySequence("mde_user_role_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。
+@Data
+@EqualsAndHashCode(callSuper = true)
+public class MdeUserRoleDO extends BaseDO {
+
+    /**
+     * 自增主键
+     */
+    @TableId
+    private Long id;
+    /**
+     * 用户 ID
+     */
+    private Long userId;
+    /**
+     * 角色 ID
+     */
+    private Long roleId;
+
+}

+ 17 - 1
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/dal/dataobject/school/SchoolDO.java

@@ -32,7 +32,23 @@ public class SchoolDO extends BaseDO {
      */
     private String name;
     /**
-     * 学校所在区域
+     * 学校编码
+     */
+    private Long code;
+    /**
+     * 学校等级(本科|专科)
+     */
+    private String level;
+    /**
+     * 学校类型 (公办|民办)
+     */
+    private String type;
+    /**
+     * 监督人
+     */
+    private String supervisor;
+    /**
+     * 学校所在地区
      */
     private Long areaId;
     /**

+ 75 - 0
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/dal/dataobject/user/MdeUserDO.java

@@ -0,0 +1,75 @@
+package com.citu.module.menduner.system.dal.dataobject.user;
+
+
+import lombok.*;
+import java.util.*;
+import java.time.LocalDateTime;
+import java.time.LocalDateTime;
+import java.time.LocalDateTime;
+import com.baomidou.mybatisplus.annotation.*;
+import com.citu.framework.mybatis.core.dataobject.BaseDO;
+
+/**
+ * 门墩儿-用户登录 DO
+ *
+ * @author rayson
+ */
+@TableName("mde_user")
+@KeySequence("mde_user_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。
+@Data
+@EqualsAndHashCode(callSuper = true)
+@ToString(callSuper = true)
+@Builder
+@NoArgsConstructor
+@AllArgsConstructor
+public class MdeUserDO extends BaseDO {
+
+    /**
+     * 用户ID
+     */
+    @TableId
+    private Long id;
+    /**
+     * 用户账号
+     */
+    private String username;
+    /**
+     * 密码
+     */
+    private String password;
+    /**
+     * 用户邮箱
+     */
+    private String email;
+    /**
+     * 手机号码
+     */
+    private String phone;
+    /**
+     * 头像地址
+     */
+    private String avatar;
+    /**
+     * 帐号状态(0正常 1停用)
+     *
+     * 枚举 {@link TODO menduner_status 对应的类}
+     */
+    private Integer status;
+    /**
+     * 注册 IP
+     */
+    private String registerIp;
+    /**
+     * 注册终端
+     */
+    private String registerTerminal;
+    /**
+     * 最后登录IP
+     */
+    private String loginIp;
+    /**
+     * 最后登录时间
+     */
+    private LocalDateTime loginDate;
+
+}

+ 1 - 1
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/dal/mysql/certificate/CertificateMapper.java

@@ -22,7 +22,7 @@ public interface CertificateMapper extends BaseMapperX<CertificateDO> {
                 .eqIfPresent(CertificateDO::getParentId, reqVO.getParentId())
                 .eqIfPresent(CertificateDO::getLevel, reqVO.getLevel())
                 .betweenIfPresent(CertificateDO::getCreateTime, reqVO.getCreateTime())
-                .orderByDesc(CertificateDO::getId));
+                .orderByAsc(CertificateDO::getId));
     }
 
 }

+ 27 - 0
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/dal/mysql/enterprise/EnterpriseAddressMapper.java

@@ -0,0 +1,27 @@
+package com.citu.module.menduner.system.dal.mysql.enterprise;
+
+
+import com.citu.framework.common.pojo.PageResult;
+import com.citu.framework.mybatis.core.mapper.BaseMapperX;
+import com.citu.framework.mybatis.core.query.LambdaQueryWrapperX;
+import com.citu.module.menduner.system.controller.admin.enterprise.address.EnterpriseAddressPageReqVO;
+import com.citu.module.menduner.system.dal.dataobject.enterprise.EnterpriseAddressDO;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+ * 门墩儿-企业地址 Mapper
+ *
+ * @author rayson
+ */
+@Mapper
+public interface EnterpriseAddressMapper extends BaseMapperX<EnterpriseAddressDO> {
+
+    default PageResult<EnterpriseAddressDO> selectPage(EnterpriseAddressPageReqVO reqVO) {
+        return selectPage(reqVO, new LambdaQueryWrapperX<EnterpriseAddressDO>()
+                .eqIfPresent(EnterpriseAddressDO::getEnterpriseId, reqVO.getEnterpriseId())
+                .likeIfPresent(EnterpriseAddressDO::getAddress, reqVO.getAddress())
+                .betweenIfPresent(EnterpriseAddressDO::getCreateTime, reqVO.getCreateTime())
+                .orderByDesc(EnterpriseAddressDO::getId));
+    }
+
+}

+ 37 - 0
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/dal/mysql/enterprise/EnterpriseBusinessMapper.java

@@ -0,0 +1,37 @@
+package com.citu.module.menduner.system.dal.mysql.enterprise;
+
+import com.citu.framework.common.pojo.PageResult;
+import com.citu.framework.mybatis.core.query.LambdaQueryWrapperX;
+import com.citu.framework.mybatis.core.mapper.BaseMapperX;
+import com.citu.module.menduner.system.controller.admin.enterprise.business.EnterpriseBusinessPageReqVO;
+import com.citu.module.menduner.system.dal.dataobject.enterprise.EnterpriseBusinessDO;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+ * 门墩儿-企业工商信息 Mapper
+ *
+ * @author rayson
+ */
+@Mapper
+public interface EnterpriseBusinessMapper extends BaseMapperX<EnterpriseBusinessDO> {
+
+    default PageResult<EnterpriseBusinessDO> selectPage(EnterpriseBusinessPageReqVO reqVO) {
+        return selectPage(reqVO, new LambdaQueryWrapperX<EnterpriseBusinessDO>()
+                .eqIfPresent(EnterpriseBusinessDO::getEnterpriseId, reqVO.getEnterpriseId())
+                .eqIfPresent(EnterpriseBusinessDO::getCode, reqVO.getCode())
+                .likeIfPresent(EnterpriseBusinessDO::getName, reqVO.getName())
+                .eqIfPresent(EnterpriseBusinessDO::getType, reqVO.getType())
+                .eqIfPresent(EnterpriseBusinessDO::getArea, reqVO.getArea())
+                .likeIfPresent(EnterpriseBusinessDO::getAddress, reqVO.getAddress())
+                .eqIfPresent(EnterpriseBusinessDO::getRepresentative, reqVO.getRepresentative())
+                .betweenIfPresent(EnterpriseBusinessDO::getEstablishmentTime, reqVO.getEstablishmentTime())
+                .betweenIfPresent(EnterpriseBusinessDO::getApprovalTime, reqVO.getApprovalTime())
+                .likeIfPresent(EnterpriseBusinessDO::getFormerName, reqVO.getFormerName())
+                .eqIfPresent(EnterpriseBusinessDO::getIndustry, reqVO.getIndustry())
+                .likeIfPresent(EnterpriseBusinessDO::getRegistrationAuthority, reqVO.getRegistrationAuthority())
+                .eqIfPresent(EnterpriseBusinessDO::getBusinessStatus, reqVO.getBusinessStatus())
+                .betweenIfPresent(EnterpriseBusinessDO::getCreateTime, reqVO.getCreateTime())
+                .orderByDesc(EnterpriseBusinessDO::getId));
+    }
+
+}

Niektóre pliki nie zostały wyświetlone z powodu dużej ilości zmienionych plików