Browse Source

commit

master
luoweijian 4 weeks ago
parent
commit
a542e48f86
  1. 2
      crm-app/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst
  2. BIN
      crm-auth/target/classes/com/crm/auth/config/AuthProperties$DingTalk.class
  3. BIN
      crm-auth/target/classes/com/crm/auth/config/AuthProperties$Jwt.class
  4. BIN
      crm-auth/target/classes/com/crm/auth/config/AuthProperties.class
  5. BIN
      crm-auth/target/classes/com/crm/auth/config/DataInitializer.class
  6. BIN
      crm-auth/target/classes/com/crm/auth/config/SecurityConfig.class
  7. BIN
      crm-auth/target/classes/com/crm/auth/controller/SystemController.class
  8. BIN
      crm-auth/target/classes/com/crm/auth/domain/dto/LoginResultDTO.class
  9. BIN
      crm-auth/target/classes/com/crm/auth/domain/dto/UserInfoDTO.class
  10. BIN
      crm-auth/target/classes/com/crm/auth/domain/dto/UserListDTO$DeptRef.class
  11. BIN
      crm-auth/target/classes/com/crm/auth/domain/dto/UserListDTO$RoleRef.class
  12. BIN
      crm-auth/target/classes/com/crm/auth/domain/dto/UserListDTO.class
  13. BIN
      crm-auth/target/classes/com/crm/auth/domain/dto/UserStatsVO.class
  14. BIN
      crm-auth/target/classes/com/crm/auth/domain/entity/AuthIdentity.class
  15. BIN
      crm-auth/target/classes/com/crm/auth/domain/entity/AuthUser.class
  16. BIN
      crm-auth/target/classes/com/crm/auth/domain/entity/SysDept.class
  17. BIN
      crm-auth/target/classes/com/crm/auth/domain/entity/SysMenu.class
  18. BIN
      crm-auth/target/classes/com/crm/auth/domain/entity/SysRole.class
  19. BIN
      crm-auth/target/classes/com/crm/auth/domain/entity/SysRoleMenu.class
  20. BIN
      crm-auth/target/classes/com/crm/auth/domain/entity/SysUserDept.class
  21. BIN
      crm-auth/target/classes/com/crm/auth/domain/entity/SysUserRole.class
  22. BIN
      crm-auth/target/classes/com/crm/auth/domain/param/UserPageParam.class
  23. BIN
      crm-auth/target/classes/com/crm/auth/security/AuthLoginUser.class
  24. BIN
      crm-auth/target/classes/com/crm/auth/security/DataScopeInterceptor.class
  25. BIN
      crm-auth/target/classes/com/crm/auth/security/TokenService.class
  26. BIN
      crm-auth/target/classes/com/crm/auth/service/DeptTreeCache.class
  27. BIN
      crm-auth/target/classes/com/crm/auth/service/client/DingTalkAuthClient.class
  28. BIN
      crm-auth/target/classes/com/crm/auth/service/client/ThirdPartyUserInfo.class
  29. BIN
      crm-auth/target/classes/com/crm/auth/service/impl/AuthIdentityServiceImpl.class
  30. BIN
      crm-auth/target/classes/com/crm/auth/service/impl/AuthServiceImpl.class
  31. BIN
      crm-auth/target/classes/com/crm/auth/service/impl/AuthUserServiceImpl.class
  32. BIN
      crm-auth/target/classes/com/crm/auth/service/impl/SysDeptServiceImpl.class
  33. BIN
      crm-auth/target/classes/com/crm/auth/service/impl/SysMenuServiceImpl.class
  34. BIN
      crm-auth/target/classes/com/crm/auth/service/impl/SysRoleServiceImpl.class
  35. 1
      crm-auth/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst
  36. 144
      crm-auth/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst
  37. 17
      crm-auth/target/maven-status/maven-compiler-plugin/testCompile/default-testCompile/createdFiles.lst
  38. 14
      crm-auth/target/maven-status/maven-compiler-plugin/testCompile/default-testCompile/inputFiles.lst
  39. 88
      crm-auth/target/surefire-reports/TEST-com.crm.auth.security.scope.DataScopeIntegrationTest.xml
  40. 103
      crm-auth/target/surefire-reports/TEST-com.crm.auth.service.client.DingTalkAuthClientTest.xml
  41. 62
      crm-auth/target/surefire-reports/TEST-com.crm.auth.service.client.ThirdPartyAuthClientFactoryTest.xml
  42. 84
      crm-auth/target/surefire-reports/TEST-com.crm.auth.service.impl.AuthServiceImplTest.xml
  43. 67
      crm-auth/target/surefire-reports/TEST-com.crm.auth.service.impl.AuthUserServiceImplTest.xml
  44. 69
      crm-auth/target/surefire-reports/TEST-com.crm.auth.service.impl.SysDeptServiceImplTest.xml
  45. 74
      crm-auth/target/surefire-reports/TEST-com.crm.auth.service.impl.UserListIntegrationTest.xml
  46. 4
      crm-auth/target/surefire-reports/com.crm.auth.security.scope.DataScopeIntegrationTest.txt
  47. 4
      crm-auth/target/surefire-reports/com.crm.auth.service.client.DingTalkAuthClientTest.txt
  48. 4
      crm-auth/target/surefire-reports/com.crm.auth.service.client.ThirdPartyAuthClientFactoryTest.txt
  49. 4
      crm-auth/target/surefire-reports/com.crm.auth.service.impl.AuthServiceImplTest.txt
  50. 4
      crm-auth/target/surefire-reports/com.crm.auth.service.impl.AuthUserServiceImplTest.txt
  51. 4
      crm-auth/target/surefire-reports/com.crm.auth.service.impl.SysDeptServiceImplTest.txt
  52. 4
      crm-auth/target/surefire-reports/com.crm.auth.service.impl.UserListIntegrationTest.txt
  53. BIN
      crm-auth/target/test-classes/com/crm/auth/security/scope/DataScopeIntegrationTest$DeptQueryCounter.class
  54. BIN
      crm-auth/target/test-classes/com/crm/auth/security/scope/DataScopeIntegrationTest.class
  55. BIN
      crm-auth/target/test-classes/com/crm/auth/security/scope/TestOwnedData.class
  56. BIN
      crm-auth/target/test-classes/com/crm/auth/security/scope/TestOwnedDataMapper.class
  57. BIN
      crm-auth/target/test-classes/com/crm/auth/service/client/DingTalkAuthClientTest$StubbedClient.class
  58. BIN
      crm-auth/target/test-classes/com/crm/auth/service/client/DingTalkAuthClientTest.class
  59. BIN
      crm-auth/target/test-classes/com/crm/auth/service/client/ThirdPartyAuthClientFactoryTest$StubClient.class
  60. BIN
      crm-auth/target/test-classes/com/crm/auth/service/client/ThirdPartyAuthClientFactoryTest.class
  61. BIN
      crm-auth/target/test-classes/com/crm/auth/service/impl/AuthServiceImplTest.class
  62. BIN
      crm-auth/target/test-classes/com/crm/auth/service/impl/AuthUserServiceImplTest.class
  63. BIN
      crm-auth/target/test-classes/com/crm/auth/service/impl/SysDeptServiceImplTest.class
  64. BIN
      crm-auth/target/test-classes/com/crm/auth/service/impl/UserListIntegrationTest.class
  65. 32
      crm-base/src/main/java/com/crm/base/advice/GlobalDataBindingAdvice.java
  66. 107
      crm-base/src/test/java/com/crm/base/advice/GlobalDataBindingAdviceTest.java
  67. BIN
      crm-base/target/classes/com/crm/base/advice/GlobalExceptionHandlerAdvice.class
  68. BIN
      crm-base/target/classes/com/crm/base/config/InsertBatchOnDuplicateKeyUpdate.class
  69. BIN
      crm-base/target/classes/com/crm/base/config/JacksonConfig.class
  70. BIN
      crm-base/target/classes/com/crm/base/config/MetaObjectFillHandler.class
  71. BIN
      crm-base/target/classes/com/crm/base/config/MybatisPlusConfig.class
  72. BIN
      crm-base/target/classes/com/crm/base/config/ScheduledTaskProperties.class
  73. BIN
      crm-base/target/classes/com/crm/base/config/SnowflakeProperties.class
  74. BIN
      crm-base/target/classes/com/crm/base/domain/dto/BaseDTO.class
  75. BIN
      crm-base/target/classes/com/crm/base/domain/entity/BaseEntity.class
  76. BIN
      crm-base/target/classes/com/crm/base/domain/entity/OwnedEntity.class
  77. BIN
      crm-base/target/classes/com/crm/base/domain/param/BaseParam.class
  78. BIN
      crm-base/target/classes/com/crm/base/domain/result/PageResult.class
  79. BIN
      crm-base/target/classes/com/crm/base/security/DataOwnership.class
  80. BIN
      crm-base/target/classes/com/crm/base/security/DataScopeHelper.class
  81. BIN
      crm-base/target/classes/com/crm/base/security/DataScopeLevel.class
  82. BIN
      crm-base/target/classes/com/crm/base/security/DataVisibility.class
  83. BIN
      crm-base/target/classes/com/crm/base/utils/BeanCopyUtils.class
  84. BIN
      crm-base/target/classes/com/crm/base/utils/ExcelUtil.class
  85. BIN
      crm-base/target/classes/com/crm/base/utils/TreeUtils.class
  86. 1
      crm-base/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst
  87. 101
      crm-base/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst
  88. 2
      crm-base/target/maven-status/maven-compiler-plugin/testCompile/default-testCompile/createdFiles.lst
  89. 3
      crm-base/target/maven-status/maven-compiler-plugin/testCompile/default-testCompile/inputFiles.lst
  90. 92
      crm-base/target/surefire-reports/TEST-com.crm.base.security.DataVisibilityTest.xml
  91. 2
      crm-base/target/surefire-reports/com.crm.base.security.DataVisibilityTest.txt
  92. BIN
      crm-base/target/test-classes/com/crm/base/security/DataVisibilityTest.class
  93. 11
      crm-dict/src/main/java/com/crm/dict/controller/DictGroupController.java
  94. 11
      crm-dict/src/main/java/com/crm/dict/controller/DictItemController.java
  95. 50
      crm-dict/src/main/java/com/crm/dict/domain/dto/DictGroupDTO.java
  96. 34
      crm-dict/src/main/java/com/crm/dict/domain/dto/DictGroupVO.java
  97. 65
      crm-dict/src/main/java/com/crm/dict/domain/dto/DictItemDTO.java
  98. 49
      crm-dict/src/main/java/com/crm/dict/domain/dto/DictItemVO.java
  99. 5
      crm-dict/src/main/java/com/crm/dict/service/DictQueryService.java
  100. 8
      crm-dict/src/main/java/com/crm/dict/service/IDictGroupService.java

2
crm-app/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst

@ -1 +1 @@
D:\code\crm-backend-matt\crm-app\src\main\java\com\crm\app\CrmAppApplication.java E:\code\crm-backend-matt\crm-app\src\main\java\com\crm\app\CrmAppApplication.java

BIN
crm-auth/target/classes/com/crm/auth/config/AuthProperties$DingTalk.class

Binary file not shown.

BIN
crm-auth/target/classes/com/crm/auth/config/AuthProperties$Jwt.class

Binary file not shown.

BIN
crm-auth/target/classes/com/crm/auth/config/AuthProperties.class

Binary file not shown.

BIN
crm-auth/target/classes/com/crm/auth/config/DataInitializer.class

Binary file not shown.

BIN
crm-auth/target/classes/com/crm/auth/config/SecurityConfig.class

Binary file not shown.

BIN
crm-auth/target/classes/com/crm/auth/controller/SystemController.class

Binary file not shown.

BIN
crm-auth/target/classes/com/crm/auth/domain/dto/LoginResultDTO.class

Binary file not shown.

BIN
crm-auth/target/classes/com/crm/auth/domain/dto/UserInfoDTO.class

Binary file not shown.

BIN
crm-auth/target/classes/com/crm/auth/domain/dto/UserListDTO$DeptRef.class

Binary file not shown.

BIN
crm-auth/target/classes/com/crm/auth/domain/dto/UserListDTO$RoleRef.class

Binary file not shown.

BIN
crm-auth/target/classes/com/crm/auth/domain/dto/UserListDTO.class

Binary file not shown.

BIN
crm-auth/target/classes/com/crm/auth/domain/dto/UserStatsVO.class

Binary file not shown.

BIN
crm-auth/target/classes/com/crm/auth/domain/entity/AuthIdentity.class

Binary file not shown.

BIN
crm-auth/target/classes/com/crm/auth/domain/entity/AuthUser.class

Binary file not shown.

BIN
crm-auth/target/classes/com/crm/auth/domain/entity/SysDept.class

Binary file not shown.

BIN
crm-auth/target/classes/com/crm/auth/domain/entity/SysMenu.class

Binary file not shown.

BIN
crm-auth/target/classes/com/crm/auth/domain/entity/SysRole.class

Binary file not shown.

BIN
crm-auth/target/classes/com/crm/auth/domain/entity/SysRoleMenu.class

Binary file not shown.

BIN
crm-auth/target/classes/com/crm/auth/domain/entity/SysUserDept.class

Binary file not shown.

BIN
crm-auth/target/classes/com/crm/auth/domain/entity/SysUserRole.class

Binary file not shown.

BIN
crm-auth/target/classes/com/crm/auth/domain/param/UserPageParam.class

Binary file not shown.

BIN
crm-auth/target/classes/com/crm/auth/security/AuthLoginUser.class

Binary file not shown.

BIN
crm-auth/target/classes/com/crm/auth/security/DataScopeInterceptor.class

Binary file not shown.

BIN
crm-auth/target/classes/com/crm/auth/security/TokenService.class

Binary file not shown.

BIN
crm-auth/target/classes/com/crm/auth/service/DeptTreeCache.class

Binary file not shown.

BIN
crm-auth/target/classes/com/crm/auth/service/client/DingTalkAuthClient.class

Binary file not shown.

BIN
crm-auth/target/classes/com/crm/auth/service/client/ThirdPartyUserInfo.class

Binary file not shown.

BIN
crm-auth/target/classes/com/crm/auth/service/impl/AuthIdentityServiceImpl.class

Binary file not shown.

BIN
crm-auth/target/classes/com/crm/auth/service/impl/AuthServiceImpl.class

Binary file not shown.

BIN
crm-auth/target/classes/com/crm/auth/service/impl/AuthUserServiceImpl.class

Binary file not shown.

BIN
crm-auth/target/classes/com/crm/auth/service/impl/SysDeptServiceImpl.class

Binary file not shown.

BIN
crm-auth/target/classes/com/crm/auth/service/impl/SysMenuServiceImpl.class

Binary file not shown.

BIN
crm-auth/target/classes/com/crm/auth/service/impl/SysRoleServiceImpl.class

Binary file not shown.

1
crm-auth/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst

@ -69,7 +69,6 @@ com\crm\auth\security\PermissionResolverImpl.class
com\crm\auth\mapper\SysUserDeptMapper.class com\crm\auth\mapper\SysUserDeptMapper.class
com\crm\auth\security\SecurityExceptionHandlers.class com\crm\auth\security\SecurityExceptionHandlers.class
com\crm\auth\AuthApplication.class com\crm\auth\AuthApplication.class
com\crm\auth\domain\enums\MenuType$1.class
com\crm\auth\mapper\SysUserRoleMapper.class com\crm\auth\mapper\SysUserRoleMapper.class
com\crm\auth\domain\entity\SysRole.class com\crm\auth\domain\entity\SysRole.class
com\crm\auth\mapper\SysDeptMapper.class com\crm\auth\mapper\SysDeptMapper.class

144
crm-auth/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst

@ -1,72 +1,72 @@
D:\code\crm-backend-matt\crm-auth\src\main\java\com\crm\auth\AuthApplication.java E:\code\crm-backend-matt\crm-auth\src\main\java\com\crm\auth\AuthApplication.java
D:\code\crm-backend-matt\crm-auth\src\main\java\com\crm\auth\config\AuthProperties.java E:\code\crm-backend-matt\crm-auth\src\main\java\com\crm\auth\config\AuthProperties.java
D:\code\crm-backend-matt\crm-auth\src\main\java\com\crm\auth\config\DataInitializer.java E:\code\crm-backend-matt\crm-auth\src\main\java\com\crm\auth\config\DataInitializer.java
D:\code\crm-backend-matt\crm-auth\src\main\java\com\crm\auth\config\PermissionConfig.java E:\code\crm-backend-matt\crm-auth\src\main\java\com\crm\auth\config\PermissionConfig.java
D:\code\crm-backend-matt\crm-auth\src\main\java\com\crm\auth\config\SecurityConfig.java E:\code\crm-backend-matt\crm-auth\src\main\java\com\crm\auth\config\SecurityConfig.java
D:\code\crm-backend-matt\crm-auth\src\main\java\com\crm\auth\config\WebMvcConfig.java E:\code\crm-backend-matt\crm-auth\src\main\java\com\crm\auth\config\WebMvcConfig.java
D:\code\crm-backend-matt\crm-auth\src\main\java\com\crm\auth\constant\AuthConstants.java E:\code\crm-backend-matt\crm-auth\src\main\java\com\crm\auth\constant\AuthConstants.java
D:\code\crm-backend-matt\crm-auth\src\main\java\com\crm\auth\controller\AuthController.java E:\code\crm-backend-matt\crm-auth\src\main\java\com\crm\auth\controller\AuthController.java
D:\code\crm-backend-matt\crm-auth\src\main\java\com\crm\auth\controller\DebugTokenController.java E:\code\crm-backend-matt\crm-auth\src\main\java\com\crm\auth\controller\DebugTokenController.java
D:\code\crm-backend-matt\crm-auth\src\main\java\com\crm\auth\controller\ResourceController.java E:\code\crm-backend-matt\crm-auth\src\main\java\com\crm\auth\controller\ResourceController.java
D:\code\crm-backend-matt\crm-auth\src\main\java\com\crm\auth\controller\RoleController.java E:\code\crm-backend-matt\crm-auth\src\main\java\com\crm\auth\controller\RoleController.java
D:\code\crm-backend-matt\crm-auth\src\main\java\com\crm\auth\controller\SystemController.java E:\code\crm-backend-matt\crm-auth\src\main\java\com\crm\auth\controller\SystemController.java
D:\code\crm-backend-matt\crm-auth\src\main\java\com\crm\auth\domain\dto\LoginResultDTO.java E:\code\crm-backend-matt\crm-auth\src\main\java\com\crm\auth\domain\dto\LoginResultDTO.java
D:\code\crm-backend-matt\crm-auth\src\main\java\com\crm\auth\domain\dto\ResourceNode.java E:\code\crm-backend-matt\crm-auth\src\main\java\com\crm\auth\domain\dto\ResourceNode.java
D:\code\crm-backend-matt\crm-auth\src\main\java\com\crm\auth\domain\dto\RoleDetailVO.java E:\code\crm-backend-matt\crm-auth\src\main\java\com\crm\auth\domain\dto\RoleDetailVO.java
D:\code\crm-backend-matt\crm-auth\src\main\java\com\crm\auth\domain\dto\UserInfoDTO.java E:\code\crm-backend-matt\crm-auth\src\main\java\com\crm\auth\domain\dto\UserInfoDTO.java
D:\code\crm-backend-matt\crm-auth\src\main\java\com\crm\auth\domain\dto\UserListDTO.java E:\code\crm-backend-matt\crm-auth\src\main\java\com\crm\auth\domain\dto\UserListDTO.java
D:\code\crm-backend-matt\crm-auth\src\main\java\com\crm\auth\domain\dto\UserStatsVO.java E:\code\crm-backend-matt\crm-auth\src\main\java\com\crm\auth\domain\dto\UserStatsVO.java
D:\code\crm-backend-matt\crm-auth\src\main\java\com\crm\auth\domain\entity\AuthIdentity.java E:\code\crm-backend-matt\crm-auth\src\main\java\com\crm\auth\domain\entity\AuthIdentity.java
D:\code\crm-backend-matt\crm-auth\src\main\java\com\crm\auth\domain\entity\AuthUser.java E:\code\crm-backend-matt\crm-auth\src\main\java\com\crm\auth\domain\entity\AuthUser.java
D:\code\crm-backend-matt\crm-auth\src\main\java\com\crm\auth\domain\entity\SysDept.java E:\code\crm-backend-matt\crm-auth\src\main\java\com\crm\auth\domain\entity\SysDept.java
D:\code\crm-backend-matt\crm-auth\src\main\java\com\crm\auth\domain\entity\SysMenu.java E:\code\crm-backend-matt\crm-auth\src\main\java\com\crm\auth\domain\entity\SysMenu.java
D:\code\crm-backend-matt\crm-auth\src\main\java\com\crm\auth\domain\entity\SysRole.java E:\code\crm-backend-matt\crm-auth\src\main\java\com\crm\auth\domain\entity\SysRole.java
D:\code\crm-backend-matt\crm-auth\src\main\java\com\crm\auth\domain\entity\SysRoleMenu.java E:\code\crm-backend-matt\crm-auth\src\main\java\com\crm\auth\domain\entity\SysRoleMenu.java
D:\code\crm-backend-matt\crm-auth\src\main\java\com\crm\auth\domain\entity\SysUserDept.java E:\code\crm-backend-matt\crm-auth\src\main\java\com\crm\auth\domain\entity\SysUserDept.java
D:\code\crm-backend-matt\crm-auth\src\main\java\com\crm\auth\domain\entity\SysUserRole.java E:\code\crm-backend-matt\crm-auth\src\main\java\com\crm\auth\domain\entity\SysUserRole.java
D:\code\crm-backend-matt\crm-auth\src\main\java\com\crm\auth\domain\enums\DataScopeEnum.java E:\code\crm-backend-matt\crm-auth\src\main\java\com\crm\auth\domain\enums\DataScopeEnum.java
D:\code\crm-backend-matt\crm-auth\src\main\java\com\crm\auth\domain\enums\IdentityTypeEnum.java E:\code\crm-backend-matt\crm-auth\src\main\java\com\crm\auth\domain\enums\IdentityTypeEnum.java
D:\code\crm-backend-matt\crm-auth\src\main\java\com\crm\auth\domain\enums\MenuType.java E:\code\crm-backend-matt\crm-auth\src\main\java\com\crm\auth\domain\enums\MenuType.java
D:\code\crm-backend-matt\crm-auth\src\main\java\com\crm\auth\domain\param\UserPageParam.java E:\code\crm-backend-matt\crm-auth\src\main\java\com\crm\auth\domain\param\UserPageParam.java
D:\code\crm-backend-matt\crm-auth\src\main\java\com\crm\auth\mapper\AuthIdentityMapper.java E:\code\crm-backend-matt\crm-auth\src\main\java\com\crm\auth\mapper\AuthIdentityMapper.java
D:\code\crm-backend-matt\crm-auth\src\main\java\com\crm\auth\mapper\AuthUserMapper.java E:\code\crm-backend-matt\crm-auth\src\main\java\com\crm\auth\mapper\AuthUserMapper.java
D:\code\crm-backend-matt\crm-auth\src\main\java\com\crm\auth\mapper\SysDeptMapper.java E:\code\crm-backend-matt\crm-auth\src\main\java\com\crm\auth\mapper\SysDeptMapper.java
D:\code\crm-backend-matt\crm-auth\src\main\java\com\crm\auth\mapper\SysMenuMapper.java E:\code\crm-backend-matt\crm-auth\src\main\java\com\crm\auth\mapper\SysMenuMapper.java
D:\code\crm-backend-matt\crm-auth\src\main\java\com\crm\auth\mapper\SysRoleMapper.java E:\code\crm-backend-matt\crm-auth\src\main\java\com\crm\auth\mapper\SysRoleMapper.java
D:\code\crm-backend-matt\crm-auth\src\main\java\com\crm\auth\mapper\SysRoleMenuMapper.java E:\code\crm-backend-matt\crm-auth\src\main\java\com\crm\auth\mapper\SysRoleMenuMapper.java
D:\code\crm-backend-matt\crm-auth\src\main\java\com\crm\auth\mapper\SysUserDeptMapper.java E:\code\crm-backend-matt\crm-auth\src\main\java\com\crm\auth\mapper\SysUserDeptMapper.java
D:\code\crm-backend-matt\crm-auth\src\main\java\com\crm\auth\mapper\SysUserRoleMapper.java E:\code\crm-backend-matt\crm-auth\src\main\java\com\crm\auth\mapper\SysUserRoleMapper.java
D:\code\crm-backend-matt\crm-auth\src\main\java\com\crm\auth\security\ApiPermissionCache.java E:\code\crm-backend-matt\crm-auth\src\main\java\com\crm\auth\security\ApiPermissionCache.java
D:\code\crm-backend-matt\crm-auth\src\main\java\com\crm\auth\security\ApiPermissionInterceptor.java E:\code\crm-backend-matt\crm-auth\src\main\java\com\crm\auth\security\ApiPermissionInterceptor.java
D:\code\crm-backend-matt\crm-auth\src\main\java\com\crm\auth\security\ApiPermissionRule.java E:\code\crm-backend-matt\crm-auth\src\main\java\com\crm\auth\security\ApiPermissionRule.java
D:\code\crm-backend-matt\crm-auth\src\main\java\com\crm\auth\security\AuthLoginUser.java E:\code\crm-backend-matt\crm-auth\src\main\java\com\crm\auth\security\AuthLoginUser.java
D:\code\crm-backend-matt\crm-auth\src\main\java\com\crm\auth\security\DataScopeInterceptor.java E:\code\crm-backend-matt\crm-auth\src\main\java\com\crm\auth\security\DataScopeInterceptor.java
D:\code\crm-backend-matt\crm-auth\src\main\java\com\crm\auth\security\DataScopeTables.java E:\code\crm-backend-matt\crm-auth\src\main\java\com\crm\auth\security\DataScopeTables.java
D:\code\crm-backend-matt\crm-auth\src\main\java\com\crm\auth\security\JwtAuthenticationFilter.java E:\code\crm-backend-matt\crm-auth\src\main\java\com\crm\auth\security\JwtAuthenticationFilter.java
D:\code\crm-backend-matt\crm-auth\src\main\java\com\crm\auth\security\PermissionGrant.java E:\code\crm-backend-matt\crm-auth\src\main\java\com\crm\auth\security\PermissionGrant.java
D:\code\crm-backend-matt\crm-auth\src\main\java\com\crm\auth\security\PermissionResolver.java E:\code\crm-backend-matt\crm-auth\src\main\java\com\crm\auth\security\PermissionResolver.java
D:\code\crm-backend-matt\crm-auth\src\main\java\com\crm\auth\security\PermissionResolverImpl.java E:\code\crm-backend-matt\crm-auth\src\main\java\com\crm\auth\security\PermissionResolverImpl.java
D:\code\crm-backend-matt\crm-auth\src\main\java\com\crm\auth\security\SecurityExceptionHandlers.java E:\code\crm-backend-matt\crm-auth\src\main\java\com\crm\auth\security\SecurityExceptionHandlers.java
D:\code\crm-backend-matt\crm-auth\src\main\java\com\crm\auth\security\TokenService.java E:\code\crm-backend-matt\crm-auth\src\main\java\com\crm\auth\security\TokenService.java
D:\code\crm-backend-matt\crm-auth\src\main\java\com\crm\auth\service\client\DingTalkAuthClient.java E:\code\crm-backend-matt\crm-auth\src\main\java\com\crm\auth\service\client\DingTalkAuthClient.java
D:\code\crm-backend-matt\crm-auth\src\main\java\com\crm\auth\service\client\ThirdPartyAuthClient.java E:\code\crm-backend-matt\crm-auth\src\main\java\com\crm\auth\service\client\ThirdPartyAuthClient.java
D:\code\crm-backend-matt\crm-auth\src\main\java\com\crm\auth\service\client\ThirdPartyAuthClientFactory.java E:\code\crm-backend-matt\crm-auth\src\main\java\com\crm\auth\service\client\ThirdPartyAuthClientFactory.java
D:\code\crm-backend-matt\crm-auth\src\main\java\com\crm\auth\service\client\ThirdPartyUserInfo.java E:\code\crm-backend-matt\crm-auth\src\main\java\com\crm\auth\service\client\ThirdPartyUserInfo.java
D:\code\crm-backend-matt\crm-auth\src\main\java\com\crm\auth\service\DeptTreeCache.java E:\code\crm-backend-matt\crm-auth\src\main\java\com\crm\auth\service\DeptTreeCache.java
D:\code\crm-backend-matt\crm-auth\src\main\java\com\crm\auth\service\IAuthIdentityService.java E:\code\crm-backend-matt\crm-auth\src\main\java\com\crm\auth\service\IAuthIdentityService.java
D:\code\crm-backend-matt\crm-auth\src\main\java\com\crm\auth\service\IAuthService.java E:\code\crm-backend-matt\crm-auth\src\main\java\com\crm\auth\service\IAuthService.java
D:\code\crm-backend-matt\crm-auth\src\main\java\com\crm\auth\service\IAuthUserService.java E:\code\crm-backend-matt\crm-auth\src\main\java\com\crm\auth\service\IAuthUserService.java
D:\code\crm-backend-matt\crm-auth\src\main\java\com\crm\auth\service\impl\AuthIdentityServiceImpl.java E:\code\crm-backend-matt\crm-auth\src\main\java\com\crm\auth\service\impl\AuthIdentityServiceImpl.java
D:\code\crm-backend-matt\crm-auth\src\main\java\com\crm\auth\service\impl\AuthServiceImpl.java E:\code\crm-backend-matt\crm-auth\src\main\java\com\crm\auth\service\impl\AuthServiceImpl.java
D:\code\crm-backend-matt\crm-auth\src\main\java\com\crm\auth\service\impl\AuthUserServiceImpl.java E:\code\crm-backend-matt\crm-auth\src\main\java\com\crm\auth\service\impl\AuthUserServiceImpl.java
D:\code\crm-backend-matt\crm-auth\src\main\java\com\crm\auth\service\impl\PermissionSeederImpl.java E:\code\crm-backend-matt\crm-auth\src\main\java\com\crm\auth\service\impl\PermissionSeederImpl.java
D:\code\crm-backend-matt\crm-auth\src\main\java\com\crm\auth\service\impl\ResourceServiceImpl.java E:\code\crm-backend-matt\crm-auth\src\main\java\com\crm\auth\service\impl\ResourceServiceImpl.java
D:\code\crm-backend-matt\crm-auth\src\main\java\com\crm\auth\service\impl\SysDeptServiceImpl.java E:\code\crm-backend-matt\crm-auth\src\main\java\com\crm\auth\service\impl\SysDeptServiceImpl.java
D:\code\crm-backend-matt\crm-auth\src\main\java\com\crm\auth\service\impl\SysMenuServiceImpl.java E:\code\crm-backend-matt\crm-auth\src\main\java\com\crm\auth\service\impl\SysMenuServiceImpl.java
D:\code\crm-backend-matt\crm-auth\src\main\java\com\crm\auth\service\impl\SysRoleServiceImpl.java E:\code\crm-backend-matt\crm-auth\src\main\java\com\crm\auth\service\impl\SysRoleServiceImpl.java
D:\code\crm-backend-matt\crm-auth\src\main\java\com\crm\auth\service\impl\UserQueryServiceImpl.java E:\code\crm-backend-matt\crm-auth\src\main\java\com\crm\auth\service\impl\UserQueryServiceImpl.java
D:\code\crm-backend-matt\crm-auth\src\main\java\com\crm\auth\service\IResourceService.java E:\code\crm-backend-matt\crm-auth\src\main\java\com\crm\auth\service\IResourceService.java
D:\code\crm-backend-matt\crm-auth\src\main\java\com\crm\auth\service\ISysDeptService.java E:\code\crm-backend-matt\crm-auth\src\main\java\com\crm\auth\service\ISysDeptService.java
D:\code\crm-backend-matt\crm-auth\src\main\java\com\crm\auth\service\ISysMenuService.java E:\code\crm-backend-matt\crm-auth\src\main\java\com\crm\auth\service\ISysMenuService.java
D:\code\crm-backend-matt\crm-auth\src\main\java\com\crm\auth\service\ISysRoleService.java E:\code\crm-backend-matt\crm-auth\src\main\java\com\crm\auth\service\ISysRoleService.java
D:\code\crm-backend-matt\crm-auth\src\main\java\com\crm\auth\service\IUserQueryService.java E:\code\crm-backend-matt\crm-auth\src\main\java\com\crm\auth\service\IUserQueryService.java

17
crm-auth/target/maven-status/maven-compiler-plugin/testCompile/default-testCompile/createdFiles.lst

@ -1,17 +0,0 @@
com\crm\auth\service\client\DingTalkAuthClientTest.class
com\crm\auth\service\client\ThirdPartyAuthClientFactoryTest.class
com\crm\auth\service\impl\SysDeptServiceImplTest.class
com\crm\auth\security\scope\TestOwnedDataMapper.class
com\crm\auth\security\scope\TestOwnedData.class
com\crm\auth\service\impl\UserListIntegrationTest.class
com\crm\auth\service\client\DingTalkAuthClientTest$StubbedClient.class
com\crm\auth\service\impl\SysMenuServiceImplTest.class
com\crm\auth\security\ApiPermissionInterceptorTest.class
com\crm\auth\service\impl\PermissionSeederImplTest.class
com\crm\auth\security\scope\DataScopeIntegrationTest.class
com\crm\auth\service\impl\AuthServiceImplTest.class
com\crm\auth\service\client\ThirdPartyAuthClientFactoryTest$StubClient.class
com\crm\auth\service\impl\ResourceServiceImplTest.class
com\crm\auth\service\impl\SysRoleServiceImplTest.class
com\crm\auth\security\scope\DataScopeIntegrationTest$DeptQueryCounter.class
com\crm\auth\service\impl\AuthUserServiceImplTest.class

14
crm-auth/target/maven-status/maven-compiler-plugin/testCompile/default-testCompile/inputFiles.lst

@ -1,14 +0,0 @@
D:\code\crm-backend-matt\crm-auth\src\test\java\com\crm\auth\security\ApiPermissionInterceptorTest.java
D:\code\crm-backend-matt\crm-auth\src\test\java\com\crm\auth\security\scope\DataScopeIntegrationTest.java
D:\code\crm-backend-matt\crm-auth\src\test\java\com\crm\auth\security\scope\TestOwnedData.java
D:\code\crm-backend-matt\crm-auth\src\test\java\com\crm\auth\security\scope\TestOwnedDataMapper.java
D:\code\crm-backend-matt\crm-auth\src\test\java\com\crm\auth\service\client\DingTalkAuthClientTest.java
D:\code\crm-backend-matt\crm-auth\src\test\java\com\crm\auth\service\client\ThirdPartyAuthClientFactoryTest.java
D:\code\crm-backend-matt\crm-auth\src\test\java\com\crm\auth\service\impl\AuthServiceImplTest.java
D:\code\crm-backend-matt\crm-auth\src\test\java\com\crm\auth\service\impl\AuthUserServiceImplTest.java
D:\code\crm-backend-matt\crm-auth\src\test\java\com\crm\auth\service\impl\PermissionSeederImplTest.java
D:\code\crm-backend-matt\crm-auth\src\test\java\com\crm\auth\service\impl\ResourceServiceImplTest.java
D:\code\crm-backend-matt\crm-auth\src\test\java\com\crm\auth\service\impl\SysDeptServiceImplTest.java
D:\code\crm-backend-matt\crm-auth\src\test\java\com\crm\auth\service\impl\SysMenuServiceImplTest.java
D:\code\crm-backend-matt\crm-auth\src\test\java\com\crm\auth\service\impl\SysRoleServiceImplTest.java
D:\code\crm-backend-matt\crm-auth\src\test\java\com\crm\auth\service\impl\UserListIntegrationTest.java

88
crm-auth/target/surefire-reports/TEST-com.crm.auth.security.scope.DataScopeIntegrationTest.xml

File diff suppressed because one or more lines are too long

103
crm-auth/target/surefire-reports/TEST-com.crm.auth.service.client.DingTalkAuthClientTest.xml

File diff suppressed because one or more lines are too long

62
crm-auth/target/surefire-reports/TEST-com.crm.auth.service.client.ThirdPartyAuthClientFactoryTest.xml

File diff suppressed because one or more lines are too long

84
crm-auth/target/surefire-reports/TEST-com.crm.auth.service.impl.AuthServiceImplTest.xml

File diff suppressed because one or more lines are too long

67
crm-auth/target/surefire-reports/TEST-com.crm.auth.service.impl.AuthUserServiceImplTest.xml

File diff suppressed because one or more lines are too long

69
crm-auth/target/surefire-reports/TEST-com.crm.auth.service.impl.SysDeptServiceImplTest.xml

File diff suppressed because one or more lines are too long

74
crm-auth/target/surefire-reports/TEST-com.crm.auth.service.impl.UserListIntegrationTest.xml

File diff suppressed because one or more lines are too long

4
crm-auth/target/surefire-reports/com.crm.auth.security.scope.DataScopeIntegrationTest.txt

@ -1,4 +0,0 @@
-------------------------------------------------------------------------------
Test set: com.crm.auth.security.scope.DataScopeIntegrationTest
-------------------------------------------------------------------------------
Tests run: 28, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 3.906 s -- in com.crm.auth.security.scope.DataScopeIntegrationTest

4
crm-auth/target/surefire-reports/com.crm.auth.service.client.DingTalkAuthClientTest.txt

@ -1,4 +0,0 @@
-------------------------------------------------------------------------------
Test set: com.crm.auth.service.client.DingTalkAuthClientTest
-------------------------------------------------------------------------------
Tests run: 15, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 1.749 s -- in com.crm.auth.service.client.DingTalkAuthClientTest

4
crm-auth/target/surefire-reports/com.crm.auth.service.client.ThirdPartyAuthClientFactoryTest.txt

@ -1,4 +0,0 @@
-------------------------------------------------------------------------------
Test set: com.crm.auth.service.client.ThirdPartyAuthClientFactoryTest
-------------------------------------------------------------------------------
Tests run: 2, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.029 s -- in com.crm.auth.service.client.ThirdPartyAuthClientFactoryTest

4
crm-auth/target/surefire-reports/com.crm.auth.service.impl.AuthServiceImplTest.txt

@ -1,4 +0,0 @@
-------------------------------------------------------------------------------
Test set: com.crm.auth.service.impl.AuthServiceImplTest
-------------------------------------------------------------------------------
Tests run: 9, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 1.025 s -- in com.crm.auth.service.impl.AuthServiceImplTest

4
crm-auth/target/surefire-reports/com.crm.auth.service.impl.AuthUserServiceImplTest.txt

@ -1,4 +0,0 @@
-------------------------------------------------------------------------------
Test set: com.crm.auth.service.impl.AuthUserServiceImplTest
-------------------------------------------------------------------------------
Tests run: 7, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.336 s -- in com.crm.auth.service.impl.AuthUserServiceImplTest

4
crm-auth/target/surefire-reports/com.crm.auth.service.impl.SysDeptServiceImplTest.txt

@ -1,4 +0,0 @@
-------------------------------------------------------------------------------
Test set: com.crm.auth.service.impl.SysDeptServiceImplTest
-------------------------------------------------------------------------------
Tests run: 9, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.119 s -- in com.crm.auth.service.impl.SysDeptServiceImplTest

4
crm-auth/target/surefire-reports/com.crm.auth.service.impl.UserListIntegrationTest.txt

@ -1,4 +0,0 @@
-------------------------------------------------------------------------------
Test set: com.crm.auth.service.impl.UserListIntegrationTest
-------------------------------------------------------------------------------
Tests run: 14, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.532 s -- in com.crm.auth.service.impl.UserListIntegrationTest

BIN
crm-auth/target/test-classes/com/crm/auth/security/scope/DataScopeIntegrationTest$DeptQueryCounter.class

Binary file not shown.

BIN
crm-auth/target/test-classes/com/crm/auth/security/scope/DataScopeIntegrationTest.class

Binary file not shown.

BIN
crm-auth/target/test-classes/com/crm/auth/security/scope/TestOwnedData.class

Binary file not shown.

BIN
crm-auth/target/test-classes/com/crm/auth/security/scope/TestOwnedDataMapper.class

Binary file not shown.

BIN
crm-auth/target/test-classes/com/crm/auth/service/client/DingTalkAuthClientTest$StubbedClient.class

Binary file not shown.

BIN
crm-auth/target/test-classes/com/crm/auth/service/client/DingTalkAuthClientTest.class

Binary file not shown.

BIN
crm-auth/target/test-classes/com/crm/auth/service/client/ThirdPartyAuthClientFactoryTest$StubClient.class

Binary file not shown.

BIN
crm-auth/target/test-classes/com/crm/auth/service/client/ThirdPartyAuthClientFactoryTest.class

Binary file not shown.

BIN
crm-auth/target/test-classes/com/crm/auth/service/impl/AuthServiceImplTest.class

Binary file not shown.

BIN
crm-auth/target/test-classes/com/crm/auth/service/impl/AuthUserServiceImplTest.class

Binary file not shown.

BIN
crm-auth/target/test-classes/com/crm/auth/service/impl/SysDeptServiceImplTest.class

Binary file not shown.

BIN
crm-auth/target/test-classes/com/crm/auth/service/impl/UserListIntegrationTest.class

Binary file not shown.

32
crm-base/src/main/java/com/crm/base/advice/GlobalDataBindingAdvice.java

@ -0,0 +1,32 @@
package com.crm.base.advice;
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.WebDataBinder;
import org.springframework.web.bind.annotation.ControllerAdvice;
import org.springframework.web.bind.annotation.InitBinder;
/**
* 全局数据绑定防护mass assignment 防御
* <p>通过 {@link WebDataBinder#setDisallowedFields(String...)} 在入参侧全局 strip
* 服务端裁定字段防止客户端通过表单伪造 createTime / updateTime / creatorId / updaterId /
* deleted / builtinADR-0017 Route A 安全替代</p>
* <p>DTO 上有 createTime / updateTime出参展示用但绑定器拒绝从表单填入
* Spring 对目标类上不存在的字段会静默跳过所以全局列表不会引发绑定错误</p>
* <p>新增服务端裁定字段时必须同步更新 {@link #DISALLOWED_FIELDS} 列表</p>
*
* @see com.crm.base.domain.dto.BaseDTO
*/
@Slf4j
@ControllerAdvice
public class GlobalDataBindingAdvice {
/** 服务端裁定字段,禁止客户端通过表单写入 */
private static final String[] DISALLOWED_FIELDS = {
"createTime", "updateTime", "creatorId", "updaterId", "deleted", "builtin"
};
@InitBinder
public void disallowServerManagedFields(WebDataBinder binder) {
binder.setDisallowedFields(DISALLOWED_FIELDS);
}
}

107
crm-base/src/test/java/com/crm/base/advice/GlobalDataBindingAdviceTest.java

@ -0,0 +1,107 @@
package com.crm.base.advice;
import org.junit.jupiter.api.DisplayName;
import org.junit.jupiter.api.Test;
import org.springframework.web.bind.WebDataBinder;
import java.time.LocalDateTime;
import java.util.HashMap;
import java.util.Map;
import static org.junit.jupiter.api.Assertions.*;
/**
* 全局 mass assignment 防护测试ADR-0017 ticket 02
*
* <p>验证 {@link GlobalDataBindingAdvice#disallowServerManagedFields(WebDataBinder)}
* 配置的 {@code setDisallowedFields} 列表能正确 strip 服务端裁定字段
* 同时不影响正常字段的绑定</p>
*/
class GlobalDataBindingAdviceTest {
/** 测试用 DTO,含一个服务端裁定字段(createTime)和一个正常字段(builtin)和一个普通字段(name) */
static class TestDTO {
private Long id;
private String name;
private LocalDateTime createTime;
private Boolean builtin;
public Long getId() { return id; }
public void setId(Long id) { this.id = id; }
public String getName() { return name; }
public void setName(String name) { this.name = name; }
public LocalDateTime getCreateTime() { return createTime; }
public void setCreateTime(LocalDateTime createTime) { this.createTime = createTime; }
public Boolean getBuiltin() { return builtin; }
public void setBuiltin(Boolean builtin) { this.builtin = builtin; }
}
private TestDTO bind(Map<String, String> form) {
TestDTO target = new TestDTO();
WebDataBinder binder = new WebDataBinder(target);
// 模拟 @ControllerAdvice 的 @InitBinder 行为
new GlobalDataBindingAdvice().disallowServerManagedFields(binder);
binder.bind(new org.springframework.beans.MutablePropertyValues(form));
return target;
}
@Test
@DisplayName("提交 createTime 被 strip,DTO 上为 null")
void createTimeStripped() {
Map<String, String> form = new HashMap<>();
form.put("name", "测试角色");
form.put("createTime", "2026-01-01T00:00:00");
TestDTO dto = bind(form);
assertEquals("测试角色", dto.getName());
assertNull(dto.getCreateTime(), "createTime 应被 InitBinder strip");
}
@Test
@DisplayName("提交 builtin=true 被 strip,DTO 上为 null")
void builtinStripped() {
Map<String, String> form = new HashMap<>();
form.put("name", "测试角色");
form.put("builtin", "true");
TestDTO dto = bind(form);
assertEquals("测试角色", dto.getName());
assertNull(dto.getBuiltin(), "builtin 应被 InitBinder strip");
}
@Test
@DisplayName("不包含服务端裁定字段的正常表单提交不受影响")
void normalSubmissionUnaffected() {
Map<String, String> form = new HashMap<>();
form.put("id", "123");
form.put("name", "正常角色");
TestDTO dto = bind(form);
assertEquals(123L, dto.getId());
assertEquals("正常角色", dto.getName());
assertNull(dto.getCreateTime());
assertNull(dto.getBuiltin());
}
@Test
@DisplayName("全部 6 个服务端裁定字段同时提交均被 strip")
void allDisallowedFieldsStripped() {
Map<String, String> form = new HashMap<>();
form.put("name", "测试");
form.put("createTime", "2026-01-01T00:00:00");
form.put("updateTime", "2026-01-02T00:00:00");
form.put("creatorId", "fake-user");
form.put("updaterId", "fake-user");
form.put("deleted", "true");
form.put("builtin", "true");
TestDTO dto = bind(form);
assertEquals("测试", dto.getName(), "普通字段应正常绑定");
assertNull(dto.getCreateTime(), "createTime 应被 strip");
assertNull(dto.getBuiltin(), "builtin 应被 strip");
}
}

BIN
crm-base/target/classes/com/crm/base/advice/GlobalExceptionHandlerAdvice.class

Binary file not shown.

BIN
crm-base/target/classes/com/crm/base/config/InsertBatchOnDuplicateKeyUpdate.class

Binary file not shown.

BIN
crm-base/target/classes/com/crm/base/config/JacksonConfig.class

Binary file not shown.

BIN
crm-base/target/classes/com/crm/base/config/MetaObjectFillHandler.class

Binary file not shown.

BIN
crm-base/target/classes/com/crm/base/config/MybatisPlusConfig.class

Binary file not shown.

BIN
crm-base/target/classes/com/crm/base/config/ScheduledTaskProperties.class

Binary file not shown.

BIN
crm-base/target/classes/com/crm/base/config/SnowflakeProperties.class

Binary file not shown.

BIN
crm-base/target/classes/com/crm/base/domain/dto/BaseDTO.class

Binary file not shown.

BIN
crm-base/target/classes/com/crm/base/domain/entity/BaseEntity.class

Binary file not shown.

BIN
crm-base/target/classes/com/crm/base/domain/entity/OwnedEntity.class

Binary file not shown.

BIN
crm-base/target/classes/com/crm/base/domain/param/BaseParam.class

Binary file not shown.

BIN
crm-base/target/classes/com/crm/base/domain/result/PageResult.class

Binary file not shown.

BIN
crm-base/target/classes/com/crm/base/security/DataOwnership.class

Binary file not shown.

BIN
crm-base/target/classes/com/crm/base/security/DataScopeHelper.class

Binary file not shown.

BIN
crm-base/target/classes/com/crm/base/security/DataScopeLevel.class

Binary file not shown.

BIN
crm-base/target/classes/com/crm/base/security/DataVisibility.class

Binary file not shown.

BIN
crm-base/target/classes/com/crm/base/utils/BeanCopyUtils.class

Binary file not shown.

BIN
crm-base/target/classes/com/crm/base/utils/ExcelUtil.class

Binary file not shown.

BIN
crm-base/target/classes/com/crm/base/utils/TreeUtils.class

Binary file not shown.

1
crm-base/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst

@ -14,6 +14,7 @@ com\crm\base\security\DataScopeHelper.class
com\crm\base\mapper\CrmBaseMapper.class com\crm\base\mapper\CrmBaseMapper.class
com\crm\base\utils\BeanCopyUtils.class com\crm\base\utils\BeanCopyUtils.class
com\crm\base\domain\enums\StatusEnum.class com\crm\base\domain\enums\StatusEnum.class
com\crm\base\advice\GlobalDataBindingAdvice.class
com\crm\base\config\MybatisPlusConfig.class com\crm\base\config\MybatisPlusConfig.class
com\crm\base\domain\entity\BaseEntity.class com\crm\base\domain\entity\BaseEntity.class
com\crm\base\config\CrmSqlInjector.class com\crm\base\config\CrmSqlInjector.class

101
crm-base/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst

@ -1,50 +1,51 @@
D:\code\crm-backend-matt\crm-base\src\main\java\com\crm\base\advice\GlobalExceptionHandlerAdvice.java E:\code\crm-backend-matt\crm-base\src\main\java\com\crm\base\advice\GlobalDataBindingAdvice.java
D:\code\crm-backend-matt\crm-base\src\main\java\com\crm\base\annotation\DataScope.java E:\code\crm-backend-matt\crm-base\src\main\java\com\crm\base\advice\GlobalExceptionHandlerAdvice.java
D:\code\crm-backend-matt\crm-base\src\main\java\com\crm\base\config\CorsConfig.java E:\code\crm-backend-matt\crm-base\src\main\java\com\crm\base\annotation\DataScope.java
D:\code\crm-backend-matt\crm-base\src\main\java\com\crm\base\config\CrmSqlInjector.java E:\code\crm-backend-matt\crm-base\src\main\java\com\crm\base\config\CorsConfig.java
D:\code\crm-backend-matt\crm-base\src\main\java\com\crm\base\config\CustomIdGenerator.java E:\code\crm-backend-matt\crm-base\src\main\java\com\crm\base\config\CrmSqlInjector.java
D:\code\crm-backend-matt\crm-base\src\main\java\com\crm\base\config\InsertBatchOnDuplicateKeyUpdate.java E:\code\crm-backend-matt\crm-base\src\main\java\com\crm\base\config\CustomIdGenerator.java
D:\code\crm-backend-matt\crm-base\src\main\java\com\crm\base\config\JacksonConfig.java E:\code\crm-backend-matt\crm-base\src\main\java\com\crm\base\config\InsertBatchOnDuplicateKeyUpdate.java
D:\code\crm-backend-matt\crm-base\src\main\java\com\crm\base\config\Knife4jConfig.java E:\code\crm-backend-matt\crm-base\src\main\java\com\crm\base\config\JacksonConfig.java
D:\code\crm-backend-matt\crm-base\src\main\java\com\crm\base\config\MetaObjectFillHandler.java E:\code\crm-backend-matt\crm-base\src\main\java\com\crm\base\config\Knife4jConfig.java
D:\code\crm-backend-matt\crm-base\src\main\java\com\crm\base\config\MybatisPlusConfig.java E:\code\crm-backend-matt\crm-base\src\main\java\com\crm\base\config\MetaObjectFillHandler.java
D:\code\crm-backend-matt\crm-base\src\main\java\com\crm\base\config\RedisConfig.java E:\code\crm-backend-matt\crm-base\src\main\java\com\crm\base\config\MybatisPlusConfig.java
D:\code\crm-backend-matt\crm-base\src\main\java\com\crm\base\config\ScheduledTaskProperties.java E:\code\crm-backend-matt\crm-base\src\main\java\com\crm\base\config\RedisConfig.java
D:\code\crm-backend-matt\crm-base\src\main\java\com\crm\base\config\SnowflakeIdWorker.java E:\code\crm-backend-matt\crm-base\src\main\java\com\crm\base\config\ScheduledTaskProperties.java
D:\code\crm-backend-matt\crm-base\src\main\java\com\crm\base\config\SnowflakeProperties.java E:\code\crm-backend-matt\crm-base\src\main\java\com\crm\base\config\SnowflakeIdWorker.java
D:\code\crm-backend-matt\crm-base\src\main\java\com\crm\base\constant\CommonConstants.java E:\code\crm-backend-matt\crm-base\src\main\java\com\crm\base\config\SnowflakeProperties.java
D:\code\crm-backend-matt\crm-base\src\main\java\com\crm\base\domain\dto\BaseDTO.java E:\code\crm-backend-matt\crm-base\src\main\java\com\crm\base\constant\CommonConstants.java
D:\code\crm-backend-matt\crm-base\src\main\java\com\crm\base\domain\dto\ButtonSeed.java E:\code\crm-backend-matt\crm-base\src\main\java\com\crm\base\domain\dto\BaseDTO.java
D:\code\crm-backend-matt\crm-base\src\main\java\com\crm\base\domain\dto\PermissionModuleDescriptor.java E:\code\crm-backend-matt\crm-base\src\main\java\com\crm\base\domain\dto\ButtonSeed.java
D:\code\crm-backend-matt\crm-base\src\main\java\com\crm\base\domain\entity\BaseEntity.java E:\code\crm-backend-matt\crm-base\src\main\java\com\crm\base\domain\dto\PermissionModuleDescriptor.java
D:\code\crm-backend-matt\crm-base\src\main\java\com\crm\base\domain\entity\OwnedEntity.java E:\code\crm-backend-matt\crm-base\src\main\java\com\crm\base\domain\entity\BaseEntity.java
D:\code\crm-backend-matt\crm-base\src\main\java\com\crm\base\domain\enums\HasValueEnum.java E:\code\crm-backend-matt\crm-base\src\main\java\com\crm\base\domain\entity\OwnedEntity.java
D:\code\crm-backend-matt\crm-base\src\main\java\com\crm\base\domain\enums\StatusEnum.java E:\code\crm-backend-matt\crm-base\src\main\java\com\crm\base\domain\enums\HasValueEnum.java
D:\code\crm-backend-matt\crm-base\src\main\java\com\crm\base\domain\exception\BusinessErrorException.java E:\code\crm-backend-matt\crm-base\src\main\java\com\crm\base\domain\enums\StatusEnum.java
D:\code\crm-backend-matt\crm-base\src\main\java\com\crm\base\domain\exception\MissingParameterException.java E:\code\crm-backend-matt\crm-base\src\main\java\com\crm\base\domain\exception\BusinessErrorException.java
D:\code\crm-backend-matt\crm-base\src\main\java\com\crm\base\domain\exception\PermissionErrorException.java E:\code\crm-backend-matt\crm-base\src\main\java\com\crm\base\domain\exception\MissingParameterException.java
D:\code\crm-backend-matt\crm-base\src\main\java\com\crm\base\domain\exception\ResourceNotExistException.java E:\code\crm-backend-matt\crm-base\src\main\java\com\crm\base\domain\exception\PermissionErrorException.java
D:\code\crm-backend-matt\crm-base\src\main\java\com\crm\base\domain\param\BaseParam.java E:\code\crm-backend-matt\crm-base\src\main\java\com\crm\base\domain\exception\ResourceNotExistException.java
D:\code\crm-backend-matt\crm-base\src\main\java\com\crm\base\domain\result\PageResult.java E:\code\crm-backend-matt\crm-base\src\main\java\com\crm\base\domain\param\BaseParam.java
D:\code\crm-backend-matt\crm-base\src\main\java\com\crm\base\domain\result\Result.java E:\code\crm-backend-matt\crm-base\src\main\java\com\crm\base\domain\result\PageResult.java
D:\code\crm-backend-matt\crm-base\src\main\java\com\crm\base\domain\result\ResultCodeEnum.java E:\code\crm-backend-matt\crm-base\src\main\java\com\crm\base\domain\result\Result.java
D:\code\crm-backend-matt\crm-base\src\main\java\com\crm\base\filter\TraceIdFilter.java E:\code\crm-backend-matt\crm-base\src\main\java\com\crm\base\domain\result\ResultCodeEnum.java
D:\code\crm-backend-matt\crm-base\src\main\java\com\crm\base\mapper\CrmBaseMapper.java E:\code\crm-backend-matt\crm-base\src\main\java\com\crm\base\filter\TraceIdFilter.java
D:\code\crm-backend-matt\crm-base\src\main\java\com\crm\base\security\DataOwnership.java E:\code\crm-backend-matt\crm-base\src\main\java\com\crm\base\mapper\CrmBaseMapper.java
D:\code\crm-backend-matt\crm-base\src\main\java\com\crm\base\security\DataScopeHelper.java E:\code\crm-backend-matt\crm-base\src\main\java\com\crm\base\security\DataOwnership.java
D:\code\crm-backend-matt\crm-base\src\main\java\com\crm\base\security\DataScopeLevel.java E:\code\crm-backend-matt\crm-base\src\main\java\com\crm\base\security\DataScopeHelper.java
D:\code\crm-backend-matt\crm-base\src\main\java\com\crm\base\security\DataVisibility.java E:\code\crm-backend-matt\crm-base\src\main\java\com\crm\base\security\DataScopeLevel.java
D:\code\crm-backend-matt\crm-base\src\main\java\com\crm\base\security\DataVisibilityContext.java E:\code\crm-backend-matt\crm-base\src\main\java\com\crm\base\security\DataVisibility.java
D:\code\crm-backend-matt\crm-base\src\main\java\com\crm\base\security\LoginUser.java E:\code\crm-backend-matt\crm-base\src\main\java\com\crm\base\security\DataVisibilityContext.java
D:\code\crm-backend-matt\crm-base\src\main\java\com\crm\base\security\SecurityUtils.java E:\code\crm-backend-matt\crm-base\src\main\java\com\crm\base\security\LoginUser.java
D:\code\crm-backend-matt\crm-base\src\main\java\com\crm\base\security\VisibilityScope.java E:\code\crm-backend-matt\crm-base\src\main\java\com\crm\base\security\SecurityUtils.java
D:\code\crm-backend-matt\crm-base\src\main\java\com\crm\base\service\IBaseService.java E:\code\crm-backend-matt\crm-base\src\main\java\com\crm\base\security\VisibilityScope.java
D:\code\crm-backend-matt\crm-base\src\main\java\com\crm\base\service\impl\BaseServiceImpl.java E:\code\crm-backend-matt\crm-base\src\main\java\com\crm\base\service\IBaseService.java
D:\code\crm-backend-matt\crm-base\src\main\java\com\crm\base\service\PermissionSeeder.java E:\code\crm-backend-matt\crm-base\src\main\java\com\crm\base\service\impl\BaseServiceImpl.java
D:\code\crm-backend-matt\crm-base\src\main\java\com\crm\base\utils\AssertUtils.java E:\code\crm-backend-matt\crm-base\src\main\java\com\crm\base\service\PermissionSeeder.java
D:\code\crm-backend-matt\crm-base\src\main\java\com\crm\base\utils\BeanCopyUtils.java E:\code\crm-backend-matt\crm-base\src\main\java\com\crm\base\utils\AssertUtils.java
D:\code\crm-backend-matt\crm-base\src\main\java\com\crm\base\utils\EnumUtils.java E:\code\crm-backend-matt\crm-base\src\main\java\com\crm\base\utils\BeanCopyUtils.java
D:\code\crm-backend-matt\crm-base\src\main\java\com\crm\base\utils\ExcelUtil.java E:\code\crm-backend-matt\crm-base\src\main\java\com\crm\base\utils\EnumUtils.java
D:\code\crm-backend-matt\crm-base\src\main\java\com\crm\base\utils\PageConverter.java E:\code\crm-backend-matt\crm-base\src\main\java\com\crm\base\utils\ExcelUtil.java
D:\code\crm-backend-matt\crm-base\src\main\java\com\crm\base\utils\ServletUtils.java E:\code\crm-backend-matt\crm-base\src\main\java\com\crm\base\utils\PageConverter.java
D:\code\crm-backend-matt\crm-base\src\main\java\com\crm\base\utils\TreeUtils.java E:\code\crm-backend-matt\crm-base\src\main\java\com\crm\base\utils\ServletUtils.java
E:\code\crm-backend-matt\crm-base\src\main\java\com\crm\base\utils\TreeUtils.java

2
crm-base/target/maven-status/maven-compiler-plugin/testCompile/default-testCompile/createdFiles.lst

@ -1 +1,3 @@
com\crm\base\advice\GlobalDataBindingAdviceTest$TestDTO.class
com\crm\base\advice\GlobalDataBindingAdviceTest.class
com\crm\base\security\DataVisibilityTest.class com\crm\base\security\DataVisibilityTest.class

3
crm-base/target/maven-status/maven-compiler-plugin/testCompile/default-testCompile/inputFiles.lst

@ -1 +1,2 @@
D:\code\crm-backend-matt\crm-base\src\test\java\com\crm\base\security\DataVisibilityTest.java E:\code\crm-backend-matt\crm-base\src\test\java\com\crm\base\advice\GlobalDataBindingAdviceTest.java
E:\code\crm-backend-matt\crm-base\src\test\java\com\crm\base\security\DataVisibilityTest.java

92
crm-base/target/surefire-reports/TEST-com.crm.base.security.DataVisibilityTest.xml

File diff suppressed because one or more lines are too long

2
crm-base/target/surefire-reports/com.crm.base.security.DataVisibilityTest.txt

@ -1,4 +1,4 @@
------------------------------------------------------------------------------- -------------------------------------------------------------------------------
Test set: com.crm.base.security.DataVisibilityTest Test set: com.crm.base.security.DataVisibilityTest
------------------------------------------------------------------------------- -------------------------------------------------------------------------------
Tests run: 17, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.198 s -- in com.crm.base.security.DataVisibilityTest Tests run: 17, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.060 s -- in com.crm.base.security.DataVisibilityTest

BIN
crm-base/target/test-classes/com/crm/base/security/DataVisibilityTest.class

Binary file not shown.

11
crm-dict/src/main/java/com/crm/dict/controller/DictGroupController.java

@ -3,8 +3,7 @@ package com.crm.dict.controller;
import com.crm.base.domain.result.PageResult; import com.crm.base.domain.result.PageResult;
import com.crm.base.domain.result.Result; import com.crm.base.domain.result.Result;
import com.crm.dict.constant.DictConstants; import com.crm.dict.constant.DictConstants;
import com.crm.dict.domain.dto.DictGroupVO; import com.crm.dict.domain.dto.DictGroupDTO;
import com.crm.dict.domain.entity.DictGroup;
import com.crm.dict.domain.param.GroupPageParam; import com.crm.dict.domain.param.GroupPageParam;
import com.crm.dict.service.IDictGroupService; import com.crm.dict.service.IDictGroupService;
import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.Operation;
@ -33,15 +32,15 @@ public class DictGroupController {
@Operation(summary = "分组分页(keyword 匹配名称/编码,status 筛选)") @Operation(summary = "分组分页(keyword 匹配名称/编码,status 筛选)")
@PreAuthorize("hasAuthority('" + DictConstants.PERM_GROUP_LIST + "')") @PreAuthorize("hasAuthority('" + DictConstants.PERM_GROUP_LIST + "')")
@PostMapping("/page") @PostMapping("/page")
public Result<PageResult<DictGroupVO>> page(GroupPageParam param) { public Result<PageResult<DictGroupDTO>> page(GroupPageParam param) {
return Result.success(dictGroupService.pageGroups(param)); return Result.success(dictGroupService.pageGroups(param));
} }
@Operation(summary = "新建/编辑分组(新建编码必填;编辑时编码/内置标记/状态只读)") @Operation(summary = "新建/编辑分组(新建编码必填;编辑时编码/内置标记/状态只读)")
@PreAuthorize("hasAuthority('" + DictConstants.PERM_GROUP_SAVE + "')") @PreAuthorize("hasAuthority('" + DictConstants.PERM_GROUP_SAVE + "')")
@PostMapping("/saveOrUpdate") @PostMapping("/saveOrUpdate")
public Result<Void> saveOrUpdate(DictGroup group) { public Result<Void> saveOrUpdate(DictGroupDTO dto) {
dictGroupService.saveGroup(group); dictGroupService.saveGroup(dto);
return Result.success(); return Result.success();
} }
@ -64,7 +63,7 @@ public class DictGroupController {
@Operation(summary = "启用分组列表(新建字典项选分组用)") @Operation(summary = "启用分组列表(新建字典项选分组用)")
@PreAuthorize("hasAuthority('" + DictConstants.PERM_GROUP_LIST + "')") @PreAuthorize("hasAuthority('" + DictConstants.PERM_GROUP_LIST + "')")
@GetMapping("/enabled-list") @GetMapping("/enabled-list")
public Result<List<DictGroup>> enabledList() { public Result<List<DictGroupDTO>> enabledList() {
return Result.success(dictGroupService.listEnabled()); return Result.success(dictGroupService.listEnabled());
} }
} }

11
crm-dict/src/main/java/com/crm/dict/controller/DictItemController.java

@ -3,8 +3,7 @@ package com.crm.dict.controller;
import com.crm.base.domain.result.PageResult; import com.crm.base.domain.result.PageResult;
import com.crm.base.domain.result.Result; import com.crm.base.domain.result.Result;
import com.crm.dict.constant.DictConstants; import com.crm.dict.constant.DictConstants;
import com.crm.dict.domain.dto.DictItemVO; import com.crm.dict.domain.dto.DictItemDTO;
import com.crm.dict.domain.entity.DictItem;
import com.crm.dict.domain.param.ItemPageParam; import com.crm.dict.domain.param.ItemPageParam;
import com.crm.dict.service.DictQueryService; import com.crm.dict.service.DictQueryService;
import com.crm.dict.service.IDictItemService; import com.crm.dict.service.IDictItemService;
@ -35,15 +34,15 @@ public class DictItemController {
@Operation(summary = "字典项分页(groupId/keyword/status 筛选,附带默认/引用/有效可选标记)") @Operation(summary = "字典项分页(groupId/keyword/status 筛选,附带默认/引用/有效可选标记)")
@PreAuthorize("hasAuthority('" + DictConstants.PERM_ITEM_LIST + "')") @PreAuthorize("hasAuthority('" + DictConstants.PERM_ITEM_LIST + "')")
@PostMapping("/page") @PostMapping("/page")
public Result<PageResult<DictItemVO>> page(ItemPageParam param) { public Result<PageResult<DictItemDTO>> page(ItemPageParam param) {
return Result.success(dictItemService.pageItems(param)); return Result.success(dictItemService.pageItems(param));
} }
@Operation(summary = "新建/编辑字典项(新建编码空自动生成;分组/编码创建后只读;值被引用后只读)") @Operation(summary = "新建/编辑字典项(新建编码空自动生成;分组/编码创建后只读;值被引用后只读)")
@PreAuthorize("hasAuthority('" + DictConstants.PERM_ITEM_SAVE + "')") @PreAuthorize("hasAuthority('" + DictConstants.PERM_ITEM_SAVE + "')")
@PostMapping("/saveOrUpdate") @PostMapping("/saveOrUpdate")
public Result<Void> saveOrUpdate(DictItem item) { public Result<Void> saveOrUpdate(DictItemDTO dto) {
dictItemService.saveItem(item); dictItemService.saveItem(dto);
return Result.success(); return Result.success();
} }
@ -83,7 +82,7 @@ public class DictItemController {
@Operation(summary = "某分组启用项列表(业务选择器渲染用,走 10s 本地缓存)") @Operation(summary = "某分组启用项列表(业务选择器渲染用,走 10s 本地缓存)")
@PreAuthorize("hasAuthority('" + DictConstants.PERM_ITEM_LIST + "')") @PreAuthorize("hasAuthority('" + DictConstants.PERM_ITEM_LIST + "')")
@GetMapping("/enabled-list") @GetMapping("/enabled-list")
public Result<List<DictItem>> enabledList(@RequestParam("groupCode") String groupCode) { public Result<List<DictItemDTO>> enabledList(@RequestParam("groupCode") String groupCode) {
return Result.success(dictQueryService.listEnabledItems(groupCode)); return Result.success(dictQueryService.listEnabledItems(groupCode));
} }
} }

50
crm-dict/src/main/java/com/crm/dict/domain/dto/DictGroupDTO.java

@ -0,0 +1,50 @@
package com.crm.dict.domain.dto;
import com.crm.base.domain.dto.BaseDTO;
import com.crm.dict.domain.entity.DictGroup;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import lombok.EqualsAndHashCode;
/**
* 字典分组传输对象写入参 + 出参双向ADR-0017 Route A
* <p>继承 {@link BaseDTO} 白拿 id/createTime/updateTime
* builtin 由全局 @InitBinder 在入参侧 strip出参侧展示原值</p>
*/
@Data
@EqualsAndHashCode(callSuper = true)
public class DictGroupDTO extends BaseDTO {
private String name;
private String code;
private Integer sortNo;
private Integer status;
private String description;
private Boolean builtin;
@Schema(description = "分组下未删除的字典项数量(含启用+停用)")
private Long itemCount;
/**
* Entity DTO出参转换Service 层调用
*/
public static DictGroupDTO fromEntity(DictGroup entity) {
DictGroupDTO dto = new DictGroupDTO();
org.springframework.beans.BeanUtils.copyProperties(entity, dto);
return dto;
}
/**
* DTO Entity入参转换Service 层调用
*/
public DictGroup toEntity() {
DictGroup entity = new DictGroup();
org.springframework.beans.BeanUtils.copyProperties(this, entity);
return entity;
}
}

34
crm-dict/src/main/java/com/crm/dict/domain/dto/DictGroupVO.java

@ -1,34 +0,0 @@
package com.crm.dict.domain.dto;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import java.time.LocalDateTime;
/**
* 字典分组视图对象分页列表展示用
* <p>独立字段不继承实体只暴露前端需要的业务字段 + createTime
* 排除审计字段creatorId/updaterId/updateTime/deleted和软删内部字段deleteKey</p>
*/
@Data
public class DictGroupVO {
private Long id;
private String name;
private String code;
private Integer sortNo;
private Integer status;
private String description;
private Boolean builtin;
private LocalDateTime createTime;
@Schema(description = "分组下未删除的字典项数量(含启用+停用)")
private Long itemCount;
}

65
crm-dict/src/main/java/com/crm/dict/domain/dto/DictItemDTO.java

@ -0,0 +1,65 @@
package com.crm.dict.domain.dto;
import com.crm.base.domain.dto.BaseDTO;
import com.crm.dict.domain.entity.DictItem;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import lombok.EqualsAndHashCode;
/**
* 字典项传输对象写入参 + 出参双向ADR-0017 Route A
* <p>继承 {@link BaseDTO} 白拿 id/createTime/updateTime
* builtin 由全局 @InitBinder 在入参侧 strip出参侧展示原值</p>
* <p>referenced 读实时引用计数绝不进缓存effectiveSelectable 供前端对
* "自身启用但所属分组已停用"的失活项做视觉标记</p>
*/
@Data
@EqualsAndHashCode(callSuper = true)
public class DictItemDTO extends BaseDTO {
private Long groupId;
private String name;
private String code;
private String value;
private Integer sortNo;
private Integer status;
private String description;
private Boolean builtin;
@Schema(description = "所属分组名称")
private String groupName;
@Schema(description = "是否为分组默认项")
private Boolean isDefault;
@Schema(description = "是否被业务引用(实时计数)")
private Boolean referenced;
@Schema(description = "是否有效可选(分组与项均启用)")
private Boolean effectiveSelectable;
/**
* Entity DTO出参转换Service 层调用
*/
public static DictItemDTO fromEntity(DictItem entity) {
DictItemDTO dto = new DictItemDTO();
org.springframework.beans.BeanUtils.copyProperties(entity, dto);
return dto;
}
/**
* DTO Entity入参转换Service 层调用
*/
public DictItem toEntity() {
DictItem entity = new DictItem();
org.springframework.beans.BeanUtils.copyProperties(this, entity);
return entity;
}
}

49
crm-dict/src/main/java/com/crm/dict/domain/dto/DictItemVO.java

@ -1,49 +0,0 @@
package com.crm.dict.domain.dto;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import java.time.LocalDateTime;
/**
* 字典项视图对象分页列表展示用
* <p>referenced 读实时引用计数绝不进缓存effectiveSelectable 供前端对
* "自身启用但所属分组已停用"的失活项做视觉标记
* 独立字段不继承实体只暴露前端需要的业务字段 + createTime
* 排除审计字段creatorId/updaterId/updateTime/deleted和软删内部字段deleteKey</p>
*/
@Data
public class DictItemVO {
private Long id;
private Long groupId;
private String name;
private String code;
private String value;
private Integer sortNo;
private Integer status;
private String description;
private Boolean builtin;
private LocalDateTime createTime;
@Schema(description = "所属分组名称")
private String groupName;
@Schema(description = "是否为分组默认项")
private Boolean isDefault;
@Schema(description = "是否被业务引用(实时计数)")
private Boolean referenced;
@Schema(description = "是否有效可选(分组与项均启用)")
private Boolean effectiveSelectable;
}

5
crm-dict/src/main/java/com/crm/dict/service/DictQueryService.java

@ -1,5 +1,6 @@
package com.crm.dict.service; package com.crm.dict.service;
import com.crm.dict.domain.dto.DictItemDTO;
import com.crm.dict.domain.entity.DictItem; import com.crm.dict.domain.entity.DictItem;
import java.util.List; import java.util.List;
@ -8,7 +9,7 @@ import java.util.List;
* 字典读路径服务业务模块读契约ADR-0015 * 字典读路径服务业务模块读契约ADR-0015
* <p><b> Caffeine 本地缓存</b>10s TTL 正结果 + 2s 空结果防穿透扛高频读 * <p><b> Caffeine 本地缓存</b>10s TTL 正结果 + 2s 空结果防穿透扛高频读
* 变更写入不主动 evict接受多副本 10 秒最终一致不含任何写方法</p> * 变更写入不主动 evict接受多副本 10 秒最终一致不含任何写方法</p>
* <p>注意本服务返回的实体是缓存快照可能滞后 10s只可用于渲染/校验 * <p>注意本服务返回的对象是缓存快照可能滞后 10s只可用于渲染/校验
* 需要实时数据如删除判定请走 {@link DictReferenceService}</p> * 需要实时数据如删除判定请走 {@link DictReferenceService}</p>
*/ */
public interface DictQueryService { public interface DictQueryService {
@ -22,7 +23,7 @@ public interface DictQueryService {
* 某分组下的启用字典项列表业务选择器渲染用只返回分组与项均启用的项 * 某分组下的启用字典项列表业务选择器渲染用只返回分组与项均启用的项
* 分组不存在或分组停用时返回空列表 sort_no 排序空排最后 * 分组不存在或分组停用时返回空列表 sort_no 排序空排最后
*/ */
List<DictItem> listEnabledItems(String groupCode); List<DictItemDTO> listEnabledItems(String groupCode);
/** /**
* 分组当前默认项联查 group.status分组停用休眠或未设默认时返回 null * 分组当前默认项联查 group.status分组停用休眠或未设默认时返回 null

8
crm-dict/src/main/java/com/crm/dict/service/IDictGroupService.java

@ -2,7 +2,7 @@ package com.crm.dict.service;
import com.crm.base.domain.result.PageResult; import com.crm.base.domain.result.PageResult;
import com.crm.base.service.IBaseService; import com.crm.base.service.IBaseService;
import com.crm.dict.domain.dto.DictGroupVO; import com.crm.dict.domain.dto.DictGroupDTO;
import com.crm.dict.domain.entity.DictGroup; import com.crm.dict.domain.entity.DictGroup;
import com.crm.dict.domain.param.GroupPageParam; import com.crm.dict.domain.param.GroupPageParam;
@ -16,13 +16,13 @@ public interface IDictGroupService extends IBaseService<DictGroup> {
/** /**
* 分组分页keyword 匹配名称/编码status 筛选itemCount 一次聚合查询 * 分组分页keyword 匹配名称/编码status 筛选itemCount 一次聚合查询
*/ */
PageResult<DictGroupVO> pageGroups(GroupPageParam param); PageResult<DictGroupDTO> pageGroups(GroupPageParam param);
/** /**
* 新建/编辑分组新建编码必填且全局唯一builtin 强制 falsestatus 默认启用 * 新建/编辑分组新建编码必填且全局唯一builtin 强制 falsestatus 默认启用
* 编辑时编码/builtin/status 保留原值编码创建后不可改启停走独立端点 * 编辑时编码/builtin/status 保留原值编码创建后不可改启停走独立端点
*/ */
void saveGroup(DictGroup group); void saveGroup(DictGroupDTO dto);
/** /**
* 删除分组builtin 阻断分组下仍有未删除字典项则阻断软删除 + 复用键 * 删除分组builtin 阻断分组下仍有未删除字典项则阻断软删除 + 复用键
@ -37,5 +37,5 @@ public interface IDictGroupService extends IBaseService<DictGroup> {
/** /**
* 启用分组列表新建字典项选分组用 sort_no 排序 * 启用分组列表新建字典项选分组用 sort_no 排序
*/ */
List<DictGroup> listEnabled(); List<DictGroupDTO> listEnabled();
} }

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

Loading…
Cancel
Save