132 changed files with 580 additions and 1266 deletions
@ -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 |
||||
|
|||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@ -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 |
||||
|
|||||
@ -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 |
|
||||
@ -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 |
|
||||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@ -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 |
|
||||
@ -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 |
|
||||
@ -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 |
|
||||
@ -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 |
|
||||
@ -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 |
|
||||
@ -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 |
|
||||
@ -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 |
|
||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@ -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 / builtin(ADR-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); |
||||
|
} |
||||
|
} |
||||
@ -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"); |
||||
|
} |
||||
|
} |
||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@ -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 |
||||
|
|||||
@ -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 |
||||
|
|||||
@ -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 |
||||
|
|||||
File diff suppressed because one or more lines are too long
@ -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 |
||||
|
|||||
Binary file not shown.
@ -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; |
||||
|
} |
||||
|
} |
||||
@ -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; |
|
||||
} |
|
||||
@ -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; |
||||
|
} |
||||
|
} |
||||
@ -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; |
|
||||
} |
|
||||
Some files were not shown because too many files changed in this diff
Loading…
Reference in new issue