From d4e2595b286c596ee941e8129cda463ab6eb1067 Mon Sep 17 00:00:00 2001 From: wangpengfei <1928057482@qq.com> Date: Sun, 28 Apr 2024 14:51:39 +0800 Subject: [PATCH] user --- pom.xml | 6 + .../java/com/yxt/user/UserApplication.java | 6 +- .../java/com/yxt/user/apiadmin/SmsRest.java | 45 + .../yxt/user/apiadmin/SysFunctionRest.java | 218 +++ .../com/yxt/user/apiadmin/SysMenuRest.java | 265 +++ .../user/apiadmin/SysOrganizationRest.java | 415 +++++ .../com/yxt/user/apiadmin/SysRoleRest.java | 153 ++ .../com/yxt/user/apiadmin/SysSourceRest.java | 131 ++ .../yxt/user/apiadmin/SysStaffOrgRest.java | 162 ++ .../yxt/user/apiadmin/SysStaffPostRest.java | 124 ++ .../yxt/user/apiadmin/SysStaffinfoRest.java | 235 +++ .../user/apiadmin/SysUserDefaultOrgRest.java | 34 + .../com/yxt/user/apiadmin/SysUserRest.java | 619 +++++++ .../yxt/user/apiadmin/SysUserRoleRest.java | 118 ++ .../java/com/yxt/user/biz/sms/SmsDto.java | 28 + .../java/com/yxt/user/biz/sms/SmsFeign.java | 47 + .../yxt/user/biz/sms/SmsFeignFallback.java | 11 + .../sysfunction/ButtonPermissionQuery.java | 19 + .../biz/sysfunction/ButtonPermissionVo.java | 12 + .../yxt/user/biz/sysfunction/SysFunction.java | 54 + .../user/biz/sysfunction/SysFunctionDto.java | 54 + .../biz/sysfunction/SysFunctionMapper.java | 74 + .../biz/sysfunction/SysFunctionMapper.xml | 103 ++ .../biz/sysfunction/SysFunctionQuery.java | 53 + .../biz/sysfunction/SysFunctionService.java | 344 ++++ .../biz/sysfunction/SysFunctionTreeVo.java | 50 + .../user/biz/sysfunction/SysFunctionVo.java | 59 + .../com/yxt/user/biz/sysmenu/SysMenu.java | 64 + .../com/yxt/user/biz/sysmenu/SysMenuDto.java | 72 + .../biz/sysmenu/SysMenuFunctionQuery.java | 30 + .../yxt/user/biz/sysmenu/SysMenuMapper.java | 82 + .../yxt/user/biz/sysmenu/SysMenuMapper.xml | 88 + .../yxt/user/biz/sysmenu/SysMenuQuery.java | 66 + .../yxt/user/biz/sysmenu/SysMenuService.java | 424 +++++ .../yxt/user/biz/sysmenu/SysMenuTreeVo.java | 59 + .../com/yxt/user/biz/sysmenu/SysMenuVo.java | 74 + .../AppContactSysOrganizationVo.java | 40 + .../user/biz/sysorganization/QrCodeVo.java | 23 + .../biz/sysorganization/SysOrgListVo.java | 29 + .../biz/sysorganization/SysOrgStaffVo.java | 17 + .../user/biz/sysorganization/SysOrgVo.java | 31 + .../biz/sysorganization/SysOrganization.java | 87 + .../sysorganization/SysOrganizationDto.java | 91 + .../SysOrganizationListQuery.java | 16 + .../SysOrganizationListVo.java | 23 + .../SysOrganizationListsVo.java | 17 + .../SysOrganizationMapper.java | 122 ++ .../sysorganization/SysOrganizationMapper.xml | 220 +++ .../sysorganization/SysOrganizationQuery.java | 58 + .../SysOrganizationService.java | 521 ++++++ .../sysorganization/SysOrganizationVo.java | 86 + .../com/yxt/user/biz/syspost/SysPost.java | 46 + .../com/yxt/user/biz/syspost/SysPostDto.java | 44 + .../yxt/user/biz/syspost/SysPostListVo.java | 22 + .../yxt/user/biz/syspost/SysPostMapper.java | 68 + .../yxt/user/biz/syspost/SysPostMapper.xml | 44 + .../yxt/user/biz/syspost/SysPostQuery.java | 41 + .../com/yxt/user/biz/syspost/SysPostVo.java | 52 + .../com/yxt/user/biz/sysrole/SysRole.java | 48 + .../com/yxt/user/biz/sysrole/SysRoleDto.java | 51 + .../yxt/user/biz/sysrole/SysRoleMapper.java | 69 + .../yxt/user/biz/sysrole/SysRoleMapper.xml | 134 ++ .../yxt/user/biz/sysrole/SysRoleQuery.java | 38 + .../yxt/user/biz/sysrole/SysRoleService.java | 184 ++ .../com/yxt/user/biz/sysrole/SysRoleVo.java | 47 + .../com/yxt/user/biz/syssource/SysSource.java | 76 + .../yxt/user/biz/syssource/SysSourceDto.java | 76 + .../user/biz/syssource/SysSourceFeign.java | 73 + .../biz/syssource/SysSourceFeignFallback.java | 81 + .../user/biz/syssource/SysSourceMapper.java | 54 + .../user/biz/syssource/SysSourceMapper.xml | 45 + .../user/biz/syssource/SysSourceQuery.java | 78 + .../user/biz/syssource/SysSourceService.java | 172 ++ .../yxt/user/biz/syssource/SysSourceVo.java | 85 + .../sysstaffinfo/AppContactsDetailsVo.java | 34 + .../biz/sysstaffinfo/PcSysStaffQuery.java | 18 + .../user/biz/sysstaffinfo/PcSysStaffVo.java | 19 + .../user/biz/sysstaffinfo/SysStaffQuery.java | 30 + .../user/biz/sysstaffinfo/SysStaffinfo.java | 173 ++ .../SysStaffinfoAppContactsSearchVo.java | 34 + .../SysStaffinfoAppContactsVo.java | 34 + .../sysstaffinfo/SysStaffinfoDetailsVo.java | 155 ++ .../biz/sysstaffinfo/SysStaffinfoDto.java | 186 ++ .../biz/sysstaffinfo/SysStaffinfoMapper.java | 128 ++ .../biz/sysstaffinfo/SysStaffinfoMapper.xml | 398 +++++ .../biz/sysstaffinfo/SysStaffinfoQuery.java | 42 + .../biz/sysstaffinfo/SysStaffinfoService.java | 819 +++++++++ .../user/biz/sysstaffinfo/SysStaffinfoVo.java | 47 + .../user/biz/sysstaffinfo/WxBase64Query.java | 20 + .../user/biz/sysstaffinfo/WxSysInfoQuery.java | 37 + .../sysstaffinfo/app/AppSysStaffQuery.java | 30 + .../biz/sysstaffinfo/app/AppSysStaffVo.java | 30 + .../yxt/user/biz/sysstafforg/SysStaffOrg.java | 46 + .../biz/sysstafforg/SysStaffOrgByUserVo.java | 30 + .../biz/sysstafforg/SysStaffOrgDetailsVo.java | 28 + .../user/biz/sysstafforg/SysStaffOrgDto.java | 42 + .../biz/sysstafforg/SysStaffOrgMapper.java | 117 ++ .../biz/sysstafforg/SysStaffOrgMapper.xml | 161 ++ .../biz/sysstafforg/SysStaffOrgQuery.java | 44 + .../biz/sysstafforg/SysStaffOrgService.java | 343 ++++ .../user/biz/sysstafforg/SysStaffOrgVo.java | 48 + .../user/biz/sysstaffpost/SysStaffPost.java | 47 + .../sysstaffpost/SysStaffPostDetailsVo.java | 24 + .../biz/sysstaffpost/SysStaffPostDto.java | 36 + .../biz/sysstaffpost/SysStaffPostMapper.java | 61 + .../biz/sysstaffpost/SysStaffPostMapper.xml | 60 + .../biz/sysstaffpost/SysStaffPostQuery.java | 46 + .../biz/sysstaffpost/SysStaffPostService.java | 141 ++ .../user/biz/sysstaffpost/SysStaffPostVo.java | 46 + .../yxt/user/biz/sysuser/PrivilegeQuery.java | 22 + .../yxt/user/biz/sysuser/ShareUserQuery.java | 21 + .../user/biz/sysuser/SysHaveMessageQuery.java | 20 + .../user/biz/sysuser/SysMenuRoleVoList.java | 26 + .../com/yxt/user/biz/sysuser/SysUser.java | 68 + .../com/yxt/user/biz/sysuser/SysUserDto.java | 42 + .../yxt/user/biz/sysuser/SysUserInfoVo.java | 32 + .../yxt/user/biz/sysuser/SysUserListVo.java | 19 + .../yxt/user/biz/sysuser/SysUserMapper.java | 202 +++ .../yxt/user/biz/sysuser/SysUserMapper.xml | 419 +++++ .../yxt/user/biz/sysuser/SysUserQuery.java | 51 + .../yxt/user/biz/sysuser/SysUserService.java | 1531 +++++++++++++++++ .../com/yxt/user/biz/sysuser/SysUserVo.java | 98 ++ .../biz/sysuser/UserByRolesAndOrgQuery.java | 22 + .../com/yxt/user/biz/sysuser/UserQuery.java | 21 + .../yxt/user/biz/sysuser/UserRoleQuery.java | 19 + .../com/yxt/user/biz/sysuser/UserssQuery.java | 19 + .../biz/sysuser/app/AppMySysUserInfo.java | 28 + .../biz/sysuser/app/AppUserOrgInfoVo.java | 34 + .../yxt/user/biz/sysuser/app/MyInfoQuery.java | 19 + .../com/yxt/user/biz/sysuser/app/OrgList.java | 21 + .../yxt/user/biz/sysuser/wx/WxHomePageVo.java | 27 + .../biz/sysuser/wx/WxMySysUserInfoVo.java | 23 + .../yxt/user/biz/sysuser/wx/WxSysUserDto.java | 33 + .../biz/sysuser/wx/WxSysUserLoginQuery.java | 29 + .../biz/sysuser/wx/WxSysUserRegistQuery.java | 21 + .../yxt/user/biz/sysuser/wx/WxSysUserVo.java | 38 + .../biz/sysuserdefaultorg/SysOrgPathList.java | 20 + .../sysuserdefaultorg/SysUserDefaultOrg.java | 23 + .../SysUserDefaultOrgDto.java | 22 + .../SysUserDefaultOrgMapper.java | 16 + .../SysUserDefaultOrgMapper.xml | 17 + .../SysUserDefaultOrgQuery.java | 14 + .../SysUserDefaultOrgService.java | 81 + .../yxt/user/biz/sysuserrole/SysUserRole.java | 34 + .../user/biz/sysuserrole/SysUserRoleDto.java | 32 + .../biz/sysuserrole/SysUserRoleMapper.java | 58 + .../biz/sysuserrole/SysUserRoleMapper.xml | 53 + .../biz/sysuserrole/SysUserRoleQuery.java | 32 + .../biz/sysuserrole/SysUserRoleService.java | 136 ++ .../user/biz/sysuserrole/SysUserRoleVo.java | 32 + .../com/yxt/user/config/DictCommonType.java | 267 +++ src/main/java/com/yxt/user/utils/MsgWs.java | 52 + 152 files changed, 14752 insertions(+), 3 deletions(-) create mode 100644 src/main/java/com/yxt/user/apiadmin/SmsRest.java create mode 100644 src/main/java/com/yxt/user/apiadmin/SysFunctionRest.java create mode 100644 src/main/java/com/yxt/user/apiadmin/SysMenuRest.java create mode 100644 src/main/java/com/yxt/user/apiadmin/SysOrganizationRest.java create mode 100644 src/main/java/com/yxt/user/apiadmin/SysRoleRest.java create mode 100644 src/main/java/com/yxt/user/apiadmin/SysSourceRest.java create mode 100644 src/main/java/com/yxt/user/apiadmin/SysStaffOrgRest.java create mode 100644 src/main/java/com/yxt/user/apiadmin/SysStaffPostRest.java create mode 100644 src/main/java/com/yxt/user/apiadmin/SysStaffinfoRest.java create mode 100644 src/main/java/com/yxt/user/apiadmin/SysUserDefaultOrgRest.java create mode 100644 src/main/java/com/yxt/user/apiadmin/SysUserRest.java create mode 100644 src/main/java/com/yxt/user/apiadmin/SysUserRoleRest.java create mode 100644 src/main/java/com/yxt/user/biz/sms/SmsDto.java create mode 100644 src/main/java/com/yxt/user/biz/sms/SmsFeign.java create mode 100644 src/main/java/com/yxt/user/biz/sms/SmsFeignFallback.java create mode 100644 src/main/java/com/yxt/user/biz/sysfunction/ButtonPermissionQuery.java create mode 100644 src/main/java/com/yxt/user/biz/sysfunction/ButtonPermissionVo.java create mode 100644 src/main/java/com/yxt/user/biz/sysfunction/SysFunction.java create mode 100644 src/main/java/com/yxt/user/biz/sysfunction/SysFunctionDto.java create mode 100644 src/main/java/com/yxt/user/biz/sysfunction/SysFunctionMapper.java create mode 100644 src/main/java/com/yxt/user/biz/sysfunction/SysFunctionMapper.xml create mode 100644 src/main/java/com/yxt/user/biz/sysfunction/SysFunctionQuery.java create mode 100644 src/main/java/com/yxt/user/biz/sysfunction/SysFunctionService.java create mode 100644 src/main/java/com/yxt/user/biz/sysfunction/SysFunctionTreeVo.java create mode 100644 src/main/java/com/yxt/user/biz/sysfunction/SysFunctionVo.java create mode 100644 src/main/java/com/yxt/user/biz/sysmenu/SysMenu.java create mode 100644 src/main/java/com/yxt/user/biz/sysmenu/SysMenuDto.java create mode 100644 src/main/java/com/yxt/user/biz/sysmenu/SysMenuFunctionQuery.java create mode 100644 src/main/java/com/yxt/user/biz/sysmenu/SysMenuMapper.java create mode 100644 src/main/java/com/yxt/user/biz/sysmenu/SysMenuMapper.xml create mode 100644 src/main/java/com/yxt/user/biz/sysmenu/SysMenuQuery.java create mode 100644 src/main/java/com/yxt/user/biz/sysmenu/SysMenuService.java create mode 100644 src/main/java/com/yxt/user/biz/sysmenu/SysMenuTreeVo.java create mode 100644 src/main/java/com/yxt/user/biz/sysmenu/SysMenuVo.java create mode 100644 src/main/java/com/yxt/user/biz/sysorganization/AppContactSysOrganizationVo.java create mode 100644 src/main/java/com/yxt/user/biz/sysorganization/QrCodeVo.java create mode 100644 src/main/java/com/yxt/user/biz/sysorganization/SysOrgListVo.java create mode 100644 src/main/java/com/yxt/user/biz/sysorganization/SysOrgStaffVo.java create mode 100644 src/main/java/com/yxt/user/biz/sysorganization/SysOrgVo.java create mode 100644 src/main/java/com/yxt/user/biz/sysorganization/SysOrganization.java create mode 100644 src/main/java/com/yxt/user/biz/sysorganization/SysOrganizationDto.java create mode 100644 src/main/java/com/yxt/user/biz/sysorganization/SysOrganizationListQuery.java create mode 100644 src/main/java/com/yxt/user/biz/sysorganization/SysOrganizationListVo.java create mode 100644 src/main/java/com/yxt/user/biz/sysorganization/SysOrganizationListsVo.java create mode 100644 src/main/java/com/yxt/user/biz/sysorganization/SysOrganizationMapper.java create mode 100644 src/main/java/com/yxt/user/biz/sysorganization/SysOrganizationMapper.xml create mode 100644 src/main/java/com/yxt/user/biz/sysorganization/SysOrganizationQuery.java create mode 100644 src/main/java/com/yxt/user/biz/sysorganization/SysOrganizationService.java create mode 100644 src/main/java/com/yxt/user/biz/sysorganization/SysOrganizationVo.java create mode 100644 src/main/java/com/yxt/user/biz/syspost/SysPost.java create mode 100644 src/main/java/com/yxt/user/biz/syspost/SysPostDto.java create mode 100644 src/main/java/com/yxt/user/biz/syspost/SysPostListVo.java create mode 100644 src/main/java/com/yxt/user/biz/syspost/SysPostMapper.java create mode 100644 src/main/java/com/yxt/user/biz/syspost/SysPostMapper.xml create mode 100644 src/main/java/com/yxt/user/biz/syspost/SysPostQuery.java create mode 100644 src/main/java/com/yxt/user/biz/syspost/SysPostVo.java create mode 100644 src/main/java/com/yxt/user/biz/sysrole/SysRole.java create mode 100644 src/main/java/com/yxt/user/biz/sysrole/SysRoleDto.java create mode 100644 src/main/java/com/yxt/user/biz/sysrole/SysRoleMapper.java create mode 100644 src/main/java/com/yxt/user/biz/sysrole/SysRoleMapper.xml create mode 100644 src/main/java/com/yxt/user/biz/sysrole/SysRoleQuery.java create mode 100644 src/main/java/com/yxt/user/biz/sysrole/SysRoleService.java create mode 100644 src/main/java/com/yxt/user/biz/sysrole/SysRoleVo.java create mode 100644 src/main/java/com/yxt/user/biz/syssource/SysSource.java create mode 100644 src/main/java/com/yxt/user/biz/syssource/SysSourceDto.java create mode 100644 src/main/java/com/yxt/user/biz/syssource/SysSourceFeign.java create mode 100644 src/main/java/com/yxt/user/biz/syssource/SysSourceFeignFallback.java create mode 100644 src/main/java/com/yxt/user/biz/syssource/SysSourceMapper.java create mode 100644 src/main/java/com/yxt/user/biz/syssource/SysSourceMapper.xml create mode 100644 src/main/java/com/yxt/user/biz/syssource/SysSourceQuery.java create mode 100644 src/main/java/com/yxt/user/biz/syssource/SysSourceService.java create mode 100644 src/main/java/com/yxt/user/biz/syssource/SysSourceVo.java create mode 100644 src/main/java/com/yxt/user/biz/sysstaffinfo/AppContactsDetailsVo.java create mode 100644 src/main/java/com/yxt/user/biz/sysstaffinfo/PcSysStaffQuery.java create mode 100644 src/main/java/com/yxt/user/biz/sysstaffinfo/PcSysStaffVo.java create mode 100644 src/main/java/com/yxt/user/biz/sysstaffinfo/SysStaffQuery.java create mode 100644 src/main/java/com/yxt/user/biz/sysstaffinfo/SysStaffinfo.java create mode 100644 src/main/java/com/yxt/user/biz/sysstaffinfo/SysStaffinfoAppContactsSearchVo.java create mode 100644 src/main/java/com/yxt/user/biz/sysstaffinfo/SysStaffinfoAppContactsVo.java create mode 100644 src/main/java/com/yxt/user/biz/sysstaffinfo/SysStaffinfoDetailsVo.java create mode 100644 src/main/java/com/yxt/user/biz/sysstaffinfo/SysStaffinfoDto.java create mode 100644 src/main/java/com/yxt/user/biz/sysstaffinfo/SysStaffinfoMapper.java create mode 100644 src/main/java/com/yxt/user/biz/sysstaffinfo/SysStaffinfoMapper.xml create mode 100644 src/main/java/com/yxt/user/biz/sysstaffinfo/SysStaffinfoQuery.java create mode 100644 src/main/java/com/yxt/user/biz/sysstaffinfo/SysStaffinfoService.java create mode 100644 src/main/java/com/yxt/user/biz/sysstaffinfo/SysStaffinfoVo.java create mode 100644 src/main/java/com/yxt/user/biz/sysstaffinfo/WxBase64Query.java create mode 100644 src/main/java/com/yxt/user/biz/sysstaffinfo/WxSysInfoQuery.java create mode 100644 src/main/java/com/yxt/user/biz/sysstaffinfo/app/AppSysStaffQuery.java create mode 100644 src/main/java/com/yxt/user/biz/sysstaffinfo/app/AppSysStaffVo.java create mode 100644 src/main/java/com/yxt/user/biz/sysstafforg/SysStaffOrg.java create mode 100644 src/main/java/com/yxt/user/biz/sysstafforg/SysStaffOrgByUserVo.java create mode 100644 src/main/java/com/yxt/user/biz/sysstafforg/SysStaffOrgDetailsVo.java create mode 100644 src/main/java/com/yxt/user/biz/sysstafforg/SysStaffOrgDto.java create mode 100644 src/main/java/com/yxt/user/biz/sysstafforg/SysStaffOrgMapper.java create mode 100644 src/main/java/com/yxt/user/biz/sysstafforg/SysStaffOrgMapper.xml create mode 100644 src/main/java/com/yxt/user/biz/sysstafforg/SysStaffOrgQuery.java create mode 100644 src/main/java/com/yxt/user/biz/sysstafforg/SysStaffOrgService.java create mode 100644 src/main/java/com/yxt/user/biz/sysstafforg/SysStaffOrgVo.java create mode 100644 src/main/java/com/yxt/user/biz/sysstaffpost/SysStaffPost.java create mode 100644 src/main/java/com/yxt/user/biz/sysstaffpost/SysStaffPostDetailsVo.java create mode 100644 src/main/java/com/yxt/user/biz/sysstaffpost/SysStaffPostDto.java create mode 100644 src/main/java/com/yxt/user/biz/sysstaffpost/SysStaffPostMapper.java create mode 100644 src/main/java/com/yxt/user/biz/sysstaffpost/SysStaffPostMapper.xml create mode 100644 src/main/java/com/yxt/user/biz/sysstaffpost/SysStaffPostQuery.java create mode 100644 src/main/java/com/yxt/user/biz/sysstaffpost/SysStaffPostService.java create mode 100644 src/main/java/com/yxt/user/biz/sysstaffpost/SysStaffPostVo.java create mode 100644 src/main/java/com/yxt/user/biz/sysuser/PrivilegeQuery.java create mode 100644 src/main/java/com/yxt/user/biz/sysuser/ShareUserQuery.java create mode 100644 src/main/java/com/yxt/user/biz/sysuser/SysHaveMessageQuery.java create mode 100644 src/main/java/com/yxt/user/biz/sysuser/SysMenuRoleVoList.java create mode 100644 src/main/java/com/yxt/user/biz/sysuser/SysUser.java create mode 100644 src/main/java/com/yxt/user/biz/sysuser/SysUserDto.java create mode 100644 src/main/java/com/yxt/user/biz/sysuser/SysUserInfoVo.java create mode 100644 src/main/java/com/yxt/user/biz/sysuser/SysUserListVo.java create mode 100644 src/main/java/com/yxt/user/biz/sysuser/SysUserMapper.java create mode 100644 src/main/java/com/yxt/user/biz/sysuser/SysUserMapper.xml create mode 100644 src/main/java/com/yxt/user/biz/sysuser/SysUserQuery.java create mode 100644 src/main/java/com/yxt/user/biz/sysuser/SysUserService.java create mode 100644 src/main/java/com/yxt/user/biz/sysuser/SysUserVo.java create mode 100644 src/main/java/com/yxt/user/biz/sysuser/UserByRolesAndOrgQuery.java create mode 100644 src/main/java/com/yxt/user/biz/sysuser/UserQuery.java create mode 100644 src/main/java/com/yxt/user/biz/sysuser/UserRoleQuery.java create mode 100644 src/main/java/com/yxt/user/biz/sysuser/UserssQuery.java create mode 100644 src/main/java/com/yxt/user/biz/sysuser/app/AppMySysUserInfo.java create mode 100644 src/main/java/com/yxt/user/biz/sysuser/app/AppUserOrgInfoVo.java create mode 100644 src/main/java/com/yxt/user/biz/sysuser/app/MyInfoQuery.java create mode 100644 src/main/java/com/yxt/user/biz/sysuser/app/OrgList.java create mode 100644 src/main/java/com/yxt/user/biz/sysuser/wx/WxHomePageVo.java create mode 100644 src/main/java/com/yxt/user/biz/sysuser/wx/WxMySysUserInfoVo.java create mode 100644 src/main/java/com/yxt/user/biz/sysuser/wx/WxSysUserDto.java create mode 100644 src/main/java/com/yxt/user/biz/sysuser/wx/WxSysUserLoginQuery.java create mode 100644 src/main/java/com/yxt/user/biz/sysuser/wx/WxSysUserRegistQuery.java create mode 100644 src/main/java/com/yxt/user/biz/sysuser/wx/WxSysUserVo.java create mode 100644 src/main/java/com/yxt/user/biz/sysuserdefaultorg/SysOrgPathList.java create mode 100644 src/main/java/com/yxt/user/biz/sysuserdefaultorg/SysUserDefaultOrg.java create mode 100644 src/main/java/com/yxt/user/biz/sysuserdefaultorg/SysUserDefaultOrgDto.java create mode 100644 src/main/java/com/yxt/user/biz/sysuserdefaultorg/SysUserDefaultOrgMapper.java create mode 100644 src/main/java/com/yxt/user/biz/sysuserdefaultorg/SysUserDefaultOrgMapper.xml create mode 100644 src/main/java/com/yxt/user/biz/sysuserdefaultorg/SysUserDefaultOrgQuery.java create mode 100644 src/main/java/com/yxt/user/biz/sysuserdefaultorg/SysUserDefaultOrgService.java create mode 100644 src/main/java/com/yxt/user/biz/sysuserrole/SysUserRole.java create mode 100644 src/main/java/com/yxt/user/biz/sysuserrole/SysUserRoleDto.java create mode 100644 src/main/java/com/yxt/user/biz/sysuserrole/SysUserRoleMapper.java create mode 100644 src/main/java/com/yxt/user/biz/sysuserrole/SysUserRoleMapper.xml create mode 100644 src/main/java/com/yxt/user/biz/sysuserrole/SysUserRoleQuery.java create mode 100644 src/main/java/com/yxt/user/biz/sysuserrole/SysUserRoleService.java create mode 100644 src/main/java/com/yxt/user/biz/sysuserrole/SysUserRoleVo.java create mode 100644 src/main/java/com/yxt/user/config/DictCommonType.java create mode 100644 src/main/java/com/yxt/user/utils/MsgWs.java diff --git a/pom.xml b/pom.xml index ae052fe..2305cda 100644 --- a/pom.xml +++ b/pom.xml @@ -95,6 +95,12 @@ easyexcel 3.3.2 + + org.jetbrains + annotations + 21.0.1 + compile + diff --git a/src/main/java/com/yxt/user/UserApplication.java b/src/main/java/com/yxt/user/UserApplication.java index 6e5d661..52f7e15 100644 --- a/src/main/java/com/yxt/user/UserApplication.java +++ b/src/main/java/com/yxt/user/UserApplication.java @@ -1,18 +1,18 @@ package com.yxt.user; - import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.cloud.openfeign.EnableFeignClients; import org.springframework.scheduling.annotation.EnableScheduling; /** - * @author dimengzhe + * @author wangpengfei + * @date 2024/4/28 14:43 */ @SpringBootApplication(scanBasePackages = { "com.yxt.user.config", "com.yxt.common.base.config", - "com.yxt.goods" + "com.yxt.user" }) // 启用自带定时任务 @EnableScheduling diff --git a/src/main/java/com/yxt/user/apiadmin/SmsRest.java b/src/main/java/com/yxt/user/apiadmin/SmsRest.java new file mode 100644 index 0000000..c68e2ca --- /dev/null +++ b/src/main/java/com/yxt/user/apiadmin/SmsRest.java @@ -0,0 +1,45 @@ +package com.yxt.user.apiadmin; + +import com.yxt.user.biz.sms.SmsDto; +import com.yxt.user.biz.sms.SmsFeign; +import com.yxt.user.utils.MsgWs; +import com.yxt.common.base.utils.StringUtils; +import com.yxt.common.core.result.ResultBean; +import com.yxt.user.biz.sms.SmsDto; +import com.yxt.user.utils.MsgWs; +import io.swagger.annotations.Api; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +/** + * Project: anrui_portal(门户建设)
+ * File: SysFunctionFeignFallback.java
+ * Class: com.yxt.anrui.portal.biz.sysfunction.SysFunctionRest
+ * Description: 功能.
+ * Copyright: Copyright (c) 2011
+ * Company: https://gitee.com/liuzp315
+ * Makedate: 2021-08-03 00:24:28
+ * + * @author liupopo + * @version 1.0 + * @since 1.0 + */ +@Api(tags = "短信") +@RestController +@RequestMapping("v1/sms") +public class SmsRest { + + + public ResultBean SendWaitWorkMsg(SmsDto dto) { + String mobile = dto.getMobile(); + String msg = dto.getMsg(); + if (StringUtils.isBlank(mobile)){ + return ResultBean.fireFail().setMsg("手机号不能为空!"); + } + if (StringUtils.isBlank(msg)){ + return ResultBean.fireFail().setMsg("信息不能为空!"); + } + String result = MsgWs.SendWaitWorkMsg(mobile, msg); + return ResultBean.fireSuccess(); + } +} diff --git a/src/main/java/com/yxt/user/apiadmin/SysFunctionRest.java b/src/main/java/com/yxt/user/apiadmin/SysFunctionRest.java new file mode 100644 index 0000000..b8c271c --- /dev/null +++ b/src/main/java/com/yxt/user/apiadmin/SysFunctionRest.java @@ -0,0 +1,218 @@ +package com.yxt.user.apiadmin; + +import cn.hutool.core.bean.BeanUtil; +import com.yxt.user.biz.sysfunction.*; +import com.yxt.user.biz.syssource.SysSource; +import com.yxt.user.biz.syssource.SysSourceVo; +//import com.yxt.user.biz.syssourcefunction.SysSourceFunction; +import com.yxt.user.biz.syssource.SysSourceService; +//import com.yxt.user.biz.syssourcefunction.SysSourceFunctionService; +import com.yxt.common.base.utils.StringUtils; +import com.yxt.common.core.query.PagerQuery; +import com.yxt.common.core.result.ResultBean; +import com.yxt.common.core.vo.PagerVo; +import io.swagger.annotations.Api; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import java.util.List; +import java.util.Map; + +/** + * Project: anrui_portal(门户建设)
+ * File: SysFunctionFeignFallback.java
+ * Class: com.yxt.user.biz.sysfunction.SysFunctionRest
+ * Description: 功能.
+ * Copyright: Copyright (c) 2011
+ * Company: https://gitee.com/liuzp315
+ * Makedate: 2021-08-03 00:24:28
+ * + * @author liupopo + * @version 1.0 + * @since 1.0 + */ +@Api(tags = "功能") +@RestController +@RequestMapping("v1/sysfunction") +public class SysFunctionRest { + + @Autowired + private SysFunctionService sysFunctionService; + @Autowired + private SysSourceService sysSourceService; +// @Autowired +// private SysSourceFunctionService sysSourceFunctionService; + + + public ResultBean> listPage(@RequestBody PagerQuery pq) { + ResultBean rb = ResultBean.fireFail(); + PagerVo pv = sysFunctionService.listPageVo(pq); + return rb.success().setData(pv); + } + + + public ResultBean> listAll(@RequestBody SysFunctionQuery query) { + ResultBean rb = ResultBean.fireFail(); + List list = sysFunctionService.listAllVo(query); + return rb.success().setData(list); + } + + + public ResultBean> listAllByRoleSid(SysFunctionQuery query) { + ResultBean rb = ResultBean.fireFail(); + List list = sysFunctionService.listAllByRoleSid(query); + return rb.success().setData(list); + } + + + public ResultBean> listAllVoForSource(@RequestBody SysFunctionQuery query) { + ResultBean rb = ResultBean.fireFail(); + List list = sysFunctionService.listAllVoForSource(query); + return rb.success().setData(list); + } + + + public ResultBean> list() { + ResultBean rb = ResultBean.fireFail(); + List list = sysFunctionService.listVo(); + return rb.success().setData(list); + } + + + public ResultBean save(SysFunctionDto dto) { + ResultBean rb = ResultBean.fireFail(); + String sourceSid = dto.getSourceSid(); + if (StringUtils.isBlank(sourceSid)) { + return ResultBean.fireFail().setMessage("资源不能为空"); + } else { + SysSourceVo sysSourceVo = sysSourceService.fetchBySidVo(sourceSid); + if (sysSourceVo.getSid() == null) { + return ResultBean.fireFail().setMessage("资源不存在"); + } + } + String pSid = dto.getParentSid(); + if (StringUtils.isBlank(pSid)) { + return ResultBean.fireFail().setMessage("菜单父级sid不能为空"); + } else { + if (!"0".equals(pSid)) { + SysFunction sysFunction = sysFunctionService.fetchBySid(pSid); + if (StringUtils.isBlank(sysFunction.getSid())) { + return ResultBean.fireFail().setMessage("菜单父级不存在!"); + } + } + } + sysFunctionService.saveOrUpdateDto(dto); + return rb.success(); + } + + + public ResultBean update(SysFunctionDto dto, String sid) { + SysFunction sysFunction = sysFunctionService.fetchBySid(sid); + if (sysFunction.getSid() == null) { + return ResultBean.fireFail().setMessage("功能不存在!"); + } + ResultBean rb = ResultBean.fireFail(); + sysFunctionService.updateBySid(dto.toMap(), sid); +// SysSourceFunction sysSourceFunction1 = sysSourceFunctionService.fetchByFunctionSid(sid); +// sysSourceFunctionService.delByFunctionSid(sid); +// SysSourceFunction sysSourceFunction = new SysSourceFunction(); +// sysSourceFunction.setFunctionRootSid(sysSourceFunction1.getFunctionRootSid()); +// sysSourceFunction.setFunctionSid(sid); +// sysSourceFunction.setSourceSid(dto.getSourceSid()); +// sysSourceFunctionService.insert(sysSourceFunction); + return rb.success(); + } + + + public ResultBean updateIsEnable(String sid, Integer isEnable) { + ResultBean rb = ResultBean.fireFail(); + SysFunction sysFunction = sysFunctionService.fetchBySid(sid); + if (sysFunction == null) { + //查询资源是否存在 + SysSource sysSource = sysSourceService.fetchBySid(sid); + if (sysSource == null) { + return ResultBean.fireFail().setMessage("功能不存在!"); + } else { + //将该资源下的所有功能关闭 +// List sids = sysSourceFunctionService.selectBySourceSid(sid); +// if (sids.size() != 0) { +// sysFunctionService.updateBySourceSid(isEnable, sids); +// } + + } + } else { + sysFunction.setIsEnable(isEnable); + sysFunctionService.updateById(sysFunction); + } + + return rb.success(); + } + + + public ResultBean del(String ids) { + ResultBean rb = ResultBean.fireFail(); + sysFunctionService.delByIds(ids); + return rb.success(); + } + + + public ResultBean delBySids(String sids) { + ResultBean rb = ResultBean.fireFail(); + String[] sidsArr = sids.split(","); +// for (String functionSid : sidsArr) { +// sysSourceFunctionService.delByFunctionSid(functionSid); +// } + sysFunctionService.delBySids(sidsArr); + return rb.success(); + } + + + public ResultBean fetch(String id) { + ResultBean rb = ResultBean.fireFail(); + SysFunctionVo vo = sysFunctionService.fetchByIdVo(id); + return rb.success().setData(vo); + } + + + public ResultBean fetchBySid(String sid) { + ResultBean rb = ResultBean.fireFail(); + SysFunction entity = sysFunctionService.fetchBySid(sid); + SysFunctionVo vo = new SysFunctionVo(); + BeanUtil.copyProperties(entity, vo); +// SysSourceFunction sysSourceFunction = sysSourceFunctionService.fetchByFunctionSid(sid); +// vo.setSourceSid(sysSourceFunction.getSourceSid()); + if ("0".equals(entity.getParentSid())) { + vo.setParentSid("0"); + vo.setParentName("顶级功能"); + } else { + SysFunction sysFunction = sysFunctionService.fetchBySid(entity.getParentSid()); + vo.setParentSid(sysFunction.getSid()); + vo.setParentName(sysFunction.getName()); + } + return rb.success().setData(vo); + } + + + public ResultBean>> getFunctionAuthorization(String roleSid) { + ResultBean rb = ResultBean.fireFail(); + List> list=sysFunctionService.getFunctionAuthorization(roleSid); + return rb.success().setData(list); + } + + + public ResultBean>> getFunctionAuthorizationApp(String roleSid) { + ResultBean rb = ResultBean.fireFail(); + List> list=sysFunctionService.getFunctionAuthorizationApp(roleSid); + return rb.success().setData(list); + } + + + public ResultBean> getButtonPermissions(ButtonPermissionQuery query) { + ResultBean> rb = ResultBean.fireFail(); + return rb.success().setData(sysFunctionService.getButtonPermissions(query)); + } + //getFunctionAuthorization(){ + // } +} diff --git a/src/main/java/com/yxt/user/apiadmin/SysMenuRest.java b/src/main/java/com/yxt/user/apiadmin/SysMenuRest.java new file mode 100644 index 0000000..947fbc8 --- /dev/null +++ b/src/main/java/com/yxt/user/apiadmin/SysMenuRest.java @@ -0,0 +1,265 @@ +package com.yxt.user.apiadmin; + +import com.yxt.user.biz.sysmenu.*; +//import com.yxt.user.biz.sysmenurole.SysMenuRoleQuery; +import com.yxt.user.biz.sysrole.SysRole; +import com.yxt.user.biz.syssource.SysSource; +import com.yxt.user.biz.syssource.SysSourceVo; +//import com.yxt.user.biz.syssourcemenu.SysSourceMenu; +//import com.yxt.user.biz.syssourcemenu.SysSourceMenuVo; +import com.yxt.user.biz.sysuserrole.SysUserRoleVo; +//import com.yxt.user.biz.sysmenurole.SysMenuRoleService; +import com.yxt.user.biz.sysrole.SysRoleService; +import com.yxt.user.biz.syssource.SysSourceService; +//import com.yxt.user.biz.syssourcemenu.SysSourceMenuService; +import com.yxt.user.biz.sysuser.SysUserService; +import com.yxt.user.biz.sysuserrole.SysUserRoleService; +import com.yxt.common.base.utils.StringUtils; +import com.yxt.common.core.query.PagerQuery; +import com.yxt.common.core.result.ResultBean; +import com.yxt.common.core.vo.PagerVo; +import com.yxt.user.biz.sysmenu.*; +import com.yxt.user.biz.syssource.SysSourceService; +import io.swagger.annotations.Api; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; + +/** + * Project: anrui_portal(门户建设)
+ * File: SysMenuFeignFallback.java
+ * Class: com.yxt.user.biz.sysmenu.SysMenuRest
+ * Description: 菜单表.
+ * Copyright: Copyright (c) 2011
+ * Company: https://gitee.com/liuzp315
+ * Makedate: 2021-08-03 00:24:28
+ * + * @author liupopo + * @version 1.0 + * @since 1.0 + */ +@Api(tags = "菜单表") +@RestController +@RequestMapping("v1/sysmenu") +public class SysMenuRest { +// @Autowired +// private SysSourceMenuService sysSourceMenuService; + @Autowired + private SysMenuService sysMenuService; + @Autowired + private SysSourceService sysSourceService; + @Autowired + private SysUserRoleService sysUserRoleService; +// @Autowired +// private SysMenuRoleService sysMenuRoleService; + @Autowired + private SysUserService sysUserService; + @Autowired + private SysRoleService sysRoleService; + + + public ResultBean> listPage(@RequestBody PagerQuery pq) { + ResultBean rb = ResultBean.fireFail(); + PagerVo pv = sysMenuService.listPageVo(pq); + return rb.success().setData(pv); + } + + /* @Override + public ResultBean> listAll(@RequestBody SysMenuQuery query) { + ResultBean rb = ResultBean.fireFail(); + List list = sysMenuService.listAllVo(query); + return rb.success().setData(list); + }*/ + + + public ResultBean> listAllVoForSource(@RequestBody SysMenuQuery query) { + ResultBean rb = ResultBean.fireFail(); + List list = sysMenuService.listAllVoForSource(query); + return rb.success().setData(list); + } + + + public ResultBean>> getMenusForFunction(@RequestBody SysMenuFunctionQuery sysMenuFunctionQuery) { + ResultBean rb = ResultBean.fireFail(); + SysMenuQuery smq= new SysMenuQuery(); + smq.setSourceSid(sysMenuFunctionQuery.getSourceSid()); + List list = sysMenuService.listAllVoForSource(smq); + List> l=new ArrayList<>(); + list.forEach(f->{ + if(sysMenuFunctionQuery.getSourceSid().equals(f.getSourceSid())){ + makeMenuListForChildren(f,l); + } + }); + return rb.success().setData(l); + } + private void makeMenuListForChildren(SysMenuTreeVo s, List> l){ + List children = s.getChildren(); + int size = children.size(); + for (int i=0;i m=new HashMap<>(); + m.put("name",s.getName()); + m.put("url",s.getMenuUrl()); + m.put("sid",s.getSid()); + l.add(m); + } + + } + + public ResultBean>> sourcemenutree(SysMenuQuery query) { + ResultBean>> rb = ResultBean.fireFail(); +// SysMenuRoleQuery orgRoleMenuQuery = new SysMenuRoleQuery(); + List> list = new ArrayList<>(); + if (null == query) + return rb.setData(list); + + //if业务角色存在,则查询业务角色的菜单列表,否则查询平台角色的菜单列表 + List userRole = sysUserRoleService.selectByUserSid(query.getUserSid()); + List roleSids = userRole.stream().map(s -> s.getRoleSid()).collect(Collectors.toList()); + for (String roleSid : roleSids) { + SysRole sysRole = sysRoleService.fetchBySid(roleSid); + if(sysRole == null){ + continue; + } + Integer type = sysRoleService.fetchBySid(roleSid).getType(); + if (type == 1){ +// orgRoleMenuQuery.setIsAdmin("1"); + }else { +// orgRoleMenuQuery.setIsAdmin("0"); + } + } +// orgRoleMenuQuery.setRoleSids(roleSids); +// orgRoleMenuQuery.setSourceSid(query.getSourceSid()); +// list = sysMenuRoleService.getSourceMenuTreeOfRoles(orgRoleMenuQuery, null); + return rb.success().setData(list); + } + + + public ResultBean> listAllByRoleSid(SysMenuQuery query) { + ResultBean rb = ResultBean.fireFail(); + String roleSid = query.getRoleSid(); + if (StringUtils.isBlank(roleSid)) { + ResultBean> resultBean = new ResultBean>(); + return resultBean.fail().setMessage("角色sid不能为空!"); + } + List sysSourceVos = sysSourceService.listVo(); + List list = new ArrayList<>(); + for (SysSourceVo s : sysSourceVos) { + SysMenuVo sysMenuVo = new SysMenuVo(); + sysMenuVo.setName(s.getSourceName()); + sysMenuVo.setSid(s.getSid()); + sysMenuVo.setChecked("1"); + query.setSourceSid(s.getSid()); + sysMenuVo.setChildren(sysMenuService.listAllByRoleSid(query)); + list.add(sysMenuVo); + } + return rb.success().setData(list); + } + + + public ResultBean> list() { + ResultBean rb = ResultBean.fireFail(); + List list = sysMenuService.listVo(); + return rb.success().setData(list); + } + + + public ResultBean save(SysMenuDto dto) { + ResultBean rb = ResultBean.fireFail(); + String sourceSid = dto.getSourceSid(); + SysSource sysSource = sysSourceService.fetchBySid(sourceSid); + if (sysSource == null) { + return rb.setMsg("资源不存在"); + } + sysMenuService.saveMenu(dto); + return rb.success(); + } + + + public ResultBean update(SysMenuDto dto, String sid) { + ResultBean rb = ResultBean.fireFail(); + //查询菜单是否存在 + SysMenu sysMenu = sysMenuService.fetchBySid(sid); + if (sysMenu == null) { + return rb.setMsg("菜单不存在"); + } + String sourceSid = dto.getSourceSid(); +// SysSourceMenuVo vo = sysSourceMenuService.fetchByMenuSid(sid); +// if (!sourceSid.equals(vo.getSourceSid())) { +// sysSourceMenuService.delByMenuSid(sid); +// SysSourceMenu sysSourceMenu = new SysSourceMenu(); +// sysSourceMenu.setMenuSid(sid); +// sysSourceMenu.setSourceSid(dto.getSourceSid()); +// sysSourceMenu.setMenuRootSid(vo.getMenuRootSid()); +// sysSourceMenuService.save(sysSourceMenu); +// } + sysMenuService.updateBySid(dto, sid); + return rb.success(); + } + + + public ResultBean updateIsEnable(String sid, Integer isEnable) { + ResultBean rb = ResultBean.fireFail(); + SysMenu sysMenu = sysMenuService.fetchBySid(sid); + if (sysMenu == null) { + //查询资源是否存在 + SysSource sysSource = sysSourceService.fetchBySid(sid); + if (sysSource == null) { + return ResultBean.fireFail().setMessage("菜单不存在!"); + } else { + //将该资源下的所有菜单关闭 + sysMenuService.updateBySourceSid(sid, isEnable); + } + } else { + sysMenu.setIsEnable(isEnable); + sysMenuService.updateById(sysMenu); + } + + return rb.success(); + } + + /* @Override + public ResultBean del(String ids) { + ResultBean rb = ResultBean.fireFail(); + sysMenuService.delByIds(ids); + return rb.success(); + }*/ + + + public ResultBean delBySids(String sid) { + ResultBean rb = ResultBean.fireFail(); + SysMenu sysMenu = sysMenuService.fetchBySid(sid); + if (sysMenu == null) { + return rb.setMsg("该菜单不存在"); + } +// sysSourceMenuService.delByMenuSid(sid); + sysMenuService.deleteBySid(sid); + return rb.success(); + } + + /* @Override + public ResultBean fetch(String id) { + ResultBean rb = ResultBean.fireFail(); + SysMenuVo vo = sysMenuService.fetchByIdVo(id); + return rb.success().setData(vo); + } + + + public ResultBean fetchBySid(String sid) { + ResultBean rb = ResultBean.fireFail(); + SysMenu sysMenu = sysMenuService.fetchBySid(sid); + SysMenuVo vo = new SysMenuVo(); + BeanUtil.copyProperties(sysMenu, vo); + return rb.success().setData(vo); + }*/ +} diff --git a/src/main/java/com/yxt/user/apiadmin/SysOrganizationRest.java b/src/main/java/com/yxt/user/apiadmin/SysOrganizationRest.java new file mode 100644 index 0000000..968ea1b --- /dev/null +++ b/src/main/java/com/yxt/user/apiadmin/SysOrganizationRest.java @@ -0,0 +1,415 @@ +package com.yxt.user.apiadmin; + +import cn.hutool.core.bean.BeanUtil; +import com.yxt.common.base.config.RedisUtil; +import com.yxt.common.base.config.component.FileUploadComponent; +import com.yxt.common.base.utils.QRCodeUtil; +import com.yxt.common.base.utils.StringUtils; +import com.yxt.common.core.query.PagerQuery; +import com.yxt.common.core.result.ResultBean; +import com.yxt.common.core.vo.PagerVo; +import com.yxt.user.biz.sysstaffinfo.SysStaffinfoService; +import com.yxt.user.biz.sysstafforg.SysStaffOrgService; +import com.yxt.user.biz.sysstafforg.SysStaffOrgVo; +import com.yxt.user.biz.sysuser.SysUserService; +import com.yxt.user.biz.sysorganization.*; +import io.swagger.annotations.Api; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.transaction.annotation.Transactional; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import java.io.File; +import java.util.*; + +import static java.util.stream.Collectors.toList; + +/** + * Project: anrui_portal(门户建设)
+ * File: SysOrganizationFeignFallback.java
+ * Class: SysOrganizationRest
+ * Description: 组织机构表.
+ * Copyright: Copyright (c) 2011
+ * Company: https://gitee.com/liuzp315
+ * Makedate: 2021-08-03 00:24:28
+ * + * @author liupopo + * @version 1.0 + * @since 1.0 + */ +@Api(tags = "组织机构表") +@RestController +@RequestMapping("v1/sysorganization") +public class SysOrganizationRest{ + + @Autowired + private SysOrganizationService sysOrganizationService; + @Autowired + private SysStaffOrgService sysStaffOrgService; + @Autowired + private SysStaffinfoService sysStaffinfoService; + @Autowired + private FileUploadComponent fileUploadComponent; + @Autowired + private SysUserService sysUserService; + @Autowired + private RedisUtil redisUtil; + + @PostMapping("/saveSysOrg") + public ResultBean saveOrg(@RequestBody SysOrganizationDto dto){ + return sysOrganizationService.saveOrg(dto); + } + + + public ResultBean> listPage(@RequestBody PagerQuery pq) { + ResultBean rb = ResultBean.fireFail(); + String psid = pq.getParams().getPsid(); + if (StringUtils.isBlank(psid)) { + ResultBean> r = new ResultBean<>(); + return r.setMessage("父级sid不能为空!"); + } + PagerVo pv = sysOrganizationService.listPageVo(pq); + return rb.success().setData(pv); + } + + + public ResultBean> listAll(@RequestBody SysOrganizationQuery query) { + ResultBean rb = ResultBean.fireFail(); + List list = sysOrganizationService.listAllVo(query); + return rb.success().setData(list); + } + + + public ResultBean> list() { + ResultBean rb = ResultBean.fireFail(); + List list = sysOrganizationService.listVo(); + return rb.success().setData(list); + } + + + public ResultBean save(SysOrganizationDto dto) { + ResultBean rb = ResultBean.fireFail(); + sysOrganizationService.saveOrUpdateDto(dto); + return rb.success(); + } + + + public ResultBean> selectFirstOrgList() { + return new ResultBean>().success().setData(sysOrganizationService.selectFirstOrgList()); + } + + + public ResultBean> selectChildrenListBySid(String sid) { + return new ResultBean>().success().setData(sysOrganizationService.selectChildrenListBySid(sid)); + } + + + @Transactional(rollbackFor = Exception.class) + public ResultBean update(SysOrganizationDto dto, String sid) { + ResultBean rb = ResultBean.fireFail(); + //查询该机构下的所有分管人员 + List stringList = sysStaffOrgService.selectByOrgSid(sid); + //根据组织sid查询组织信息 + SysOrganization sysOrganization = sysOrganizationService.fetchBySid(sid); + if (sysOrganization == null) { + return rb.setMsg("该组织机构不存在"); + } + BeanUtil.copyProperties(dto, sysOrganization, "sid"); + //主管人员的sid + String zgStaffSid = dto.getZgStaffSid(); + //分管人员的sid + String fgStaffSid = dto.getFgStaffSid(); + //查询分管人员中是否包含主管人员 + if (StringUtils.isNotBlank(fgStaffSid)) { + if (StringUtils.isNotBlank(zgStaffSid)) { + if (fgStaffSid.contains(zgStaffSid)) { + return rb.setMsg("同一个组织机构中主管分管的人员不能重复"); + } + } + } + //删除关联关系中的所有主管与分管的人员关系 + sysStaffOrgService.delZGAndFGByOrgSid(sid); + /*if (StringUtils.isNotBlank(zgStaffSid)) { + ResultBean resultBean = sysOrganizationService.addSysStaffOrg(zgStaffSid, "1", sysOrganization); + if (!resultBean.getSuccess()) { + return rb.setMsg(resultBean.getMsg()); + } + }*/ + if (StringUtils.isNotBlank(fgStaffSid)) { + ResultBean resultBean = sysOrganizationService.addSysStaffOrg(fgStaffSid, "2", sysOrganization); + if (!resultBean.getSuccess()) { + return rb.setMsg(resultBean.getMsg()); + } + } + sysOrganizationService.updateBySid(dto.toMap(), sid); + //修改金蝶组织信息 + //==========================添加清空变化的用户的token + //查询分管人员 + List stringList1 = new ArrayList<>(); + List reduce1 = new ArrayList<>(); + if(StringUtils.isNotBlank(fgStaffSid)){ + stringList1 = Arrays.asList(fgStaffSid.split(",")); + reduce1 = stringList1.stream().filter(item -> !stringList.contains(item)).collect(toList()); + }else{ + reduce1 = stringList; + } + String orgSid1 = sysStaffOrgService.getOrgByOrgSid(sid); + if(reduce1.size()>0){ + for (String s : reduce1){ + //查询该人员的组织机构list + List sysStaffOrgVos = sysStaffOrgService.selectByStaffS(s); + List orgList = new ArrayList<>(); + if (sysStaffOrgVos.size() > 0) { + for (SysStaffOrgVo vv : sysStaffOrgVos) { + String orgSid = sysStaffOrgService.getOrgByOrgSid(vv.getOrgSid()); + SysOrganization ss = sysOrganizationService.fetchBySid(orgSid); + if (ss != null) { + orgList.add(orgSid); + } else { + continue; + } + } + } + if(!orgList.contains(orgSid1)){ + //根据staffSid查询token + String token = sysUserService.selectByStaffsid(s).getToken(); + if(StringUtils.isNotBlank(token)){ + //清空该token + redisUtil.remove(token); + } + } + } + + } + return rb.success(); + } + + + public ResultBean del(String ids) { + ResultBean rb = ResultBean.fireFail(); + sysOrganizationService.delByIds(ids); + return rb.success(); + } + + + public ResultBean delBySid(String sid) { + ResultBean rb = ResultBean.fireFail(); + if (StringUtils.isBlank(sid)) { + return ResultBean.fireFail().setMessage("sid不能为空!"); + } + String[] sidArr = sid.split(","); + sysOrganizationService.delBySids(sidArr); + return rb.success(); + } + + + public ResultBean fetch(String id) { + ResultBean rb = ResultBean.fireFail(); + SysOrganizationVo vo = sysOrganizationService.fetchByIdVo(id); + return rb.success().setData(vo); + } + + + public ResultBean fetchBySid(String sid) { + ResultBean rb = ResultBean.fireFail(); + SysOrganization entity = sysOrganizationService.fetchBySid(sid); + List list = sysStaffOrgService.fetchByOrgSid(sid); + String fgNames = ""; + String fgSids = ""; + String zgNames = ""; + String zgSids = ""; + for (SysStaffOrgVo s : list) { + if ("1".equals(s.getManageType())) { + zgNames = zgNames + "," + s.getStaffName(); + zgSids = zgSids + "," + s.getStaffSid(); + } + if ("2".equals(s.getManageType())) { + fgNames = fgNames + "," + s.getStaffName(); + fgSids = fgSids + "," + s.getStaffSid(); + } + } + if (fgNames.length() > 1) { + fgNames = fgNames.substring(1, fgNames.length()); + fgSids = fgSids.substring(1, fgSids.length()); + } + if (zgNames.length() > 1) { + zgNames = zgNames.substring(1, zgNames.length()); + zgSids = zgSids.substring(1, zgSids.length()); + } + SysOrganizationVo vo = new SysOrganizationVo(); + BeanUtil.copyProperties(entity, vo); + vo.setFgNames(fgNames); + vo.setFgStaffSid(fgSids); + vo.setZgNames(zgNames); + vo.setZgStaffSid(zgSids); + return rb.success().setData(vo); + } + + + public ResultBean> selectAppOrganization(String sid) { + Map map = new HashMap<>(); + List> nameList = sysOrganizationService.selectOrgNameList(sid); + List staffList = new ArrayList<>(); + List list = null; + if (StringUtils.isBlank(sid)) { // 组织架构 + list = sysOrganizationService.selectAppOrganization(); + } else { // 组织架构子集 + list = sysOrganizationService.selectAppOrganizationSub(sid); + staffList = sysStaffinfoService.selectContactsByOrgsid(sid); + list.addAll(staffList); + } + map.put("nameList", nameList); + map.put("list", list); +// map.put("staffList", staffList); + return new ResultBean>().success().setData(map); + } + + + public ResultBean> selectListOrg() { + ResultBean> rb = ResultBean.fireFail(); + List menuTree2VoList = sysOrganizationService.treeList(); + return rb.success().setData(menuTree2VoList); + } + + + public ResultBean> getListOrg() { + ResultBean> rb = ResultBean.fireFail(); + List menuTree2VoList = sysOrganizationService.getListOrg(); + return rb.success().setData(menuTree2VoList); + } + + + public ResultBean> getListOrgByBrand(String orgSid) { + return null;//sysOrganizationService.getListOrgByBrand(orgSid); + } + + + public ResultBean> getListOrgByBrandSid(String orgSid, String brandSid) { + return null;//sysOrganizationService.getListOrgByBrandSid(orgSid,brandSid); + } + + + public ResultBean> getListOrgByBrandSidNo(String orgSid, String brandSid) { + return null;//sysOrganizationService.getListOrgByBrandSidNo(orgSid,brandSid); + } + + + public ResultBean> getListDeptByOrgSid(String orgSid) { + return sysOrganizationService.getListDeptByOrgSid(orgSid); + } + + + public ResultBean getUseOrgByUserSid(String userSid) { + ResultBean rb = ResultBean.fireFail(); + SysOrganizationVo vo = sysOrganizationService.getUseOrgByUserSid(userSid); + return rb.success().setData(vo); + } + + + public ResultBean selectBySid(String sid) { + SysOrganization sysOrganization = sysOrganizationService.fetchBySid(sid); + if (sysOrganization == null) { + return new ResultBean().fail().setData(new SysOrganization()); + } + return new ResultBean().success().setData(sysOrganization); + } + + + public ResultBean>> selectUseOrgSidBySid(String sid) { + ResultBean rb = ResultBean.fireFail(); + List> maps = sysOrganizationService.selectUseOrgSidBySid(sid); + return rb.success().setData(maps); + } + + /** + * 查询公司所有的部门 + * + * @return + */ + + public ResultBean> selectListOne() { + ResultBean> rb = ResultBean.fireFail(); + List sysOrgListVo = sysOrganizationService.selectTreeList(); + if (sysOrgListVo.size() == 0) { + List list = new ArrayList(); + list.add(new SysOrgListVo()); + return rb.setData(list); + } + return rb.success().setData(sysOrgListVo); + } + + + public ResultBean getQrCode(String sid) { + SysOrganization sysOrganization = sysOrganizationService.fetchBySid(sid); + if (sysOrganization == null) { + return new ResultBean().fail().setMsg("部门不存在"); + } + if (StringUtils.isBlank(sysOrganization.getQrText())) { + File file = new File(fileUploadComponent.getUploadPath() + "qrCode"); + QRCodeUtil.createCodeToFile(sysOrganization.getSid() + "#" + sysOrganization.getId() + "#" + "q", file, sysOrganization.getName() + sysOrganization.getId() + ".png"); + //将该二维码地址放进部门表中的二维码图片地址中 + String path = fileUploadComponent.getUrlPrefix() + "qrCode/" + sysOrganization.getName() + sysOrganization.getId() + ".png"; + sysOrganizationService.updateQrCodePath(sid, path); + } + QrCodeVo qrCodeVo = sysOrganizationService.getQrCodeVo(sid); + String orgSidPath = sysOrganization.getOrgSidPath(); + String[] split = orgSidPath.split("/"); + for (String s : split) { + SysOrganization sysOrganization1 = sysOrganizationService.fetchBySid(s); + Integer isDept = sysOrganization1.getIsDept(); + String psid = sysOrganization1.getPsid(); + if (isDept != null) { + if (isDept == 0 && !psid.equals(0)) { + qrCodeVo.setOrganizationName(sysOrganization1.getName()); + break; + } + } + } + return new ResultBean().success().setData(qrCodeVo); + } + + + public ResultBean getOrgSid(String sid) { + ResultBean rb = ResultBean.fireFail(); + SysOrganization sysOrganization = sysOrganizationService.fetchBySid(sid); + if (sysOrganization == null) { + return rb.setMsg("该组织不存在"); + } + String orgSid = sysOrganizationService.getOrgSid(sid); + return rb.success().setData(orgSid); + } + + + public ResultBean> selectOrgList(SysOrganizationListQuery query) { + return sysOrganizationService.selectOrgList(query); + } + + + public ResultBean> selectOrgLists(SysOrganizationListQuery query) { + return sysOrganizationService.selectOrgLists(query); + } + + + public ResultBean selectByPSid(String sid, String name) { + return sysOrganizationService.selectByPSid(sid,name); + } + + + public ResultBean> selectOrgSidList() { + ResultBean> rb = ResultBean.fireFail(); + List stringList = sysOrganizationService.selectOrgSidList(); + return rb.success().setData(stringList); + } + + + public ResultBean> selectOrgByPSid(String psid) { + return sysOrganizationService.selectOrgByPSid(psid); + } + + + public ResultBean selectByOrgSidPath(String orgSidPath) { + return sysOrganizationService.selectByOrgSidPath(orgSidPath); + } +} diff --git a/src/main/java/com/yxt/user/apiadmin/SysRoleRest.java b/src/main/java/com/yxt/user/apiadmin/SysRoleRest.java new file mode 100644 index 0000000..01c6349 --- /dev/null +++ b/src/main/java/com/yxt/user/apiadmin/SysRoleRest.java @@ -0,0 +1,153 @@ +package com.yxt.user.apiadmin; + +import com.yxt.common.base.utils.StringUtils; +import com.yxt.common.core.query.PagerQuery; +import com.yxt.common.core.result.ResultBean; +import com.yxt.common.core.vo.PagerVo; +import com.yxt.user.biz.sysrole.*; +import io.swagger.annotations.Api; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import java.util.List; + +/** + * Project: anrui_portal(门户建设)
+ * File: SysRoleFeignFallback.java
+ * Class: com.yxt.anrui.portal.biz.sysrole.SysRoleRest
+ * Description: 角色.
+ * Copyright: Copyright (c) 2011
+ * Company: https://gitee.com/liuzp315
+ * Makedate: 2021-08-03 00:24:29
+ * + * @author liupopo + * @version 1.0 + * @since 1.0 + */ +@Api(tags = "角色") +@RestController +@RequestMapping("v1/sysrole") +public class SysRoleRest { + + @Autowired + private SysRoleService sysRoleService; + + + public ResultBean> listPage(@RequestBody PagerQuery pq){ + ResultBean rb = ResultBean.fireFail(); + PagerVo pv = sysRoleService.listPageVo(pq); + return rb.success().setData(pv); + } + + + public ResultBean> listAll(@RequestBody SysRoleQuery query){ + ResultBean rb = ResultBean.fireFail(); + List list = sysRoleService.listAllVo(query); + return rb.success().setData(list); + } + + + public ResultBean> listAllByUserSid(String userSid) { + ResultBean rb = ResultBean.fireFail(); + List list = sysRoleService.listAllByUserSid(userSid); + return rb.success().setData(list); + } + + + public ResultBean> fetchByUserSid(String userSid) { + if(StringUtils.isBlank(userSid)){ + return new ResultBean>().fail().setMsg("userSid不能为空"); + } + ResultBean rb = ResultBean.fireFail(); + List list = sysRoleService.fetchByUserSid(userSid); + return rb.success().setData(list); + } + + + public ResultBean> list(){ + ResultBean rb = ResultBean.fireFail(); + List list = sysRoleService.listVo(); + return rb.success().setData(list); + } + + + public ResultBean save(SysRoleDto dto){ + String name = dto.getName(); + if(StringUtils.isBlank(name)){ + return new ResultBean>().fail().setMsg("角色名称不能为空!"); + }else{ + SysRoleVo sysRoleVo = sysRoleService.fetchByName(name); + if(sysRoleVo.getName()!=null){ + return new ResultBean>().fail().setMsg("角色名称不能重复!"); + } + } + ResultBean rb = ResultBean.fireFail(); + sysRoleService.saveOrUpdateDto(dto); + return rb.success(); + } + + + public ResultBean update(SysRoleDto dto,String sid){ + String roleName = dto.getName(); + if(StringUtils.isBlank(sid)){ + return new ResultBean>().fail().setMsg("角色sid不能为空!"); + } + if(StringUtils.isBlank(roleName)){ + return new ResultBean>().fail().setMsg("角色名称不能为空!"); + }else{ + SysRoleVo sysRoleVo = sysRoleService.fetchByName(roleName); + if(sysRoleVo.getName()!=null&&!sid.equals(sysRoleVo.getSid())){ + return new ResultBean>().fail().setMsg("角色名称不能重复!"); + } + } + ResultBean rb = ResultBean.fireFail(); + sysRoleService.updateBySid(dto.toMap(),sid); + return rb.success(); + } + + + public ResultBean del(String ids){ + ResultBean rb = ResultBean.fireFail(); + sysRoleService.delByIds(ids); + return rb.success(); + } + + + public ResultBean delBySids(String sids) { + ResultBean rb = ResultBean.fireFail(); + sysRoleService.delBySids(sids); + return rb.success(); + } + + + public ResultBean fetch(String id){ + ResultBean rb = ResultBean.fireFail(); + SysRoleVo vo = sysRoleService.fetchByIdVo(id); + return rb.success().setData(vo); + } + + + public ResultBean fetchBySid(String sid) { + ResultBean rb = ResultBean.fireFail(); + SysRoleVo vo = sysRoleService.fetchBySidVo(sid); + if (StringUtils.isBlank(vo.getSid())) { + return rb.success().setData(null); + } + return rb.success().setData(vo); + } + + + public ResultBean setIsEnable(String sid, String isEnable) { + SysRole role = sysRoleService.fetchBySid(sid); + if (role == null) { + return ResultBean.fireFail().setMsg("此角色已不存在"); + } + int i = sysRoleService.updateIsEnable(sid, isEnable); + if (i == 0) { + return ResultBean.fireFail().setMsg("设置失败"); + } + return ResultBean.fireSuccess().setMsg("设置成功"); + } +} diff --git a/src/main/java/com/yxt/user/apiadmin/SysSourceRest.java b/src/main/java/com/yxt/user/apiadmin/SysSourceRest.java new file mode 100644 index 0000000..dd70dfd --- /dev/null +++ b/src/main/java/com/yxt/user/apiadmin/SysSourceRest.java @@ -0,0 +1,131 @@ +package com.yxt.user.apiadmin; + +//import com.yxt.user.biz.systemlog.SystemLog; +import com.yxt.user.biz.sysuser.SysUser; +//import com.yxt.user.biz.systemlog.SystemLogService; +import com.yxt.user.biz.sysuser.SysUserService; +import com.yxt.common.base.config.RedisUtil; +import com.yxt.common.core.query.PagerQuery; +import com.yxt.common.core.result.ResultBean; +import com.yxt.common.core.vo.PagerVo; +import com.yxt.user.biz.syssource.*; +import io.swagger.annotations.Api; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import javax.servlet.http.HttpServletRequest; +import java.util.Date; +import java.util.List; + +/** + * Project: anrui_portal(门户建设)
+ * File: SysSourceFeignFallback.java
+ * Class: com.yxt.user.biz.syssource.SysSourceRest
+ * Description: 资源表.
+ * Copyright: Copyright (c) 2011
+ * Company: https://gitee.com/liuzp315
+ * Makedate: 2021-08-03 00:24:29
+ * + * @author liupopo + * @version 1.0 + * @since 1.0 + */ +@Api(tags = "资源表") +@RestController +@RequestMapping("v1/syssource") +public class SysSourceRest { +// @Autowired +// private SystemLogService systemLogService; + @Autowired + private SysUserService sysUserService; + @Autowired(required = false) + private HttpServletRequest httpServletRequest; + @Autowired + private SysSourceService sysSourceService; + @Autowired + private RedisUtil redisUtil; + + public ResultBean> listPage(@RequestBody PagerQuery pq){ + String token = httpServletRequest.getHeader("token"); + String s = redisUtil.get(token); + SysUser sysUser = sysUserService.fetchByUserName(s); +// SystemLog systemLog = new SystemLog(); +// systemLog.setUserSid(sysUser.getSid()); +// systemLog.setCreateTime(new Date()); +// systemLog.setEventName("人员岗位保存"); +// systemLog.setEventContent(""); +// systemLog.setEventUrl("/portal/v1/sysstaffpost/save"); +// systemLog.setUserIp("0.0.0.0"); +// systemLog.setUserName(sysUser.getUserName()); +// systemLogService.save(systemLog); + ResultBean rb = ResultBean.fireFail(); + PagerVo pv = sysSourceService.listPageVo(pq); + return rb.success().setData(pv); + } + + + public ResultBean> listAll(@RequestBody SysSourceQuery query){ + ResultBean rb = ResultBean.fireFail(); + List list = sysSourceService.listAllVo(query); + return rb.success().setData(list); + } + + + public ResultBean> listAllByRoleSid(SysSourceQuery query) { + ResultBean rb = ResultBean.fireFail(); + List list = sysSourceService.listAllByRoleSid(query); + return rb.success().setData(list); + } + + + public ResultBean> list(){ + ResultBean rb = ResultBean.fireFail(); + List list = sysSourceService.listVo(); + return rb.success().setData(list); + } + + + public ResultBean save(SysSourceDto dto){ + ResultBean rb = ResultBean.fireFail(); + sysSourceService.saveOrUpdateDto(dto); + return rb.success(); + } + + + public ResultBean update(SysSourceDto dto,String sid){ + ResultBean rb = ResultBean.fireFail(); + sysSourceService.updateBySid(dto.toMap(),sid); + return rb.success(); + } + + + public ResultBean del(String ids){ + ResultBean rb = ResultBean.fireFail(); + sysSourceService.delByIds(ids); + return rb.success(); + } + + + public ResultBean delBySids(String sids) { + ResultBean rb = ResultBean.fireFail(); + String[] sidArr = sids.split(","); + sysSourceService.delBySids(sidArr); + return rb.success(); + } + + + public ResultBean fetch(String id){ + ResultBean rb = ResultBean.fireFail(); + SysSourceVo vo = sysSourceService.fetchByIdVo(id); + return rb.success().setData(vo); + } + + + public ResultBean fetchBySid(String sid) { + ResultBean rb = ResultBean.fireFail(); + SysSourceVo vo = sysSourceService.fetchBySidVo(sid); + return rb.success().setData(vo); + } +} diff --git a/src/main/java/com/yxt/user/apiadmin/SysStaffOrgRest.java b/src/main/java/com/yxt/user/apiadmin/SysStaffOrgRest.java new file mode 100644 index 0000000..2c30e26 --- /dev/null +++ b/src/main/java/com/yxt/user/apiadmin/SysStaffOrgRest.java @@ -0,0 +1,162 @@ +package com.yxt.user.apiadmin; + +import com.yxt.user.biz.sysstafforg.*; +import com.yxt.common.base.utils.StringUtils; +import com.yxt.common.core.query.PagerQuery; +import com.yxt.common.core.result.ResultBean; +import com.yxt.common.core.vo.PagerVo; +import io.swagger.annotations.Api; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import java.util.List; + +/** + * Project: anrui_portal(门户建设)
+ * File: SysStaffOrgFeignFallback.java
+ * Class: com.yxt.user.biz.sysstafforg.SysStaffOrgRest
+ * Description: 员工部门关联表.
+ * Copyright: Copyright (c) 2011
+ * Company: https://gitee.com/liuzp315
+ * Makedate: 2021-08-03 00:24:29
+ * + * @author liupopo + * @version 1.0 + * @since 1.0 + */ +@Api(tags = "员工部门关联表") +@RestController +@RequestMapping("v1/sysstafforg") +public class SysStaffOrgRest { + + @Autowired + private SysStaffOrgService sysStaffOrgService; + + + + public ResultBean> listPage(@RequestBody PagerQuery pq) { + ResultBean rb = ResultBean.fireFail(); + PagerVo pv = sysStaffOrgService.listPageVo(pq); + return rb.success().setData(pv); + } + + + public ResultBean> listAll(@RequestBody SysStaffOrgQuery query) { + ResultBean rb = ResultBean.fireFail(); + List list = sysStaffOrgService.listAllVo(query); + return rb.success().setData(list); + } + + + public ResultBean> list() { + ResultBean rb = ResultBean.fireFail(); + List list = sysStaffOrgService.listVo(); + return rb.success().setData(list); + } + + + public ResultBean> staffinfoList(@RequestBody SysStaffOrgQuery query) { + ResultBean rb = ResultBean.fireFail(); + List list = sysStaffOrgService.staffinfoList(query); + return rb.success().setData(list); + } + + + public ResultBean save(SysStaffOrgDto dto) { + ResultBean rb = ResultBean.fireFail(); + sysStaffOrgService.saveOrUpdateDto(dto); + return rb.success(); + } + + + public ResultBean update(SysStaffOrgDto dto, String sid) { + ResultBean rb = ResultBean.fireFail(); + sysStaffOrgService.updateBySid(dto.toMap(), sid); + return rb.success(); + } + + + public ResultBean del(String ids) { + ResultBean rb = ResultBean.fireFail(); + sysStaffOrgService.delByIds(ids); + return rb.success(); + } + + + public ResultBean fetch(String id) { + ResultBean rb = ResultBean.fireFail(); + SysStaffOrgVo vo = sysStaffOrgService.fetchByIdVo(id); + return rb.success().setData(vo); + } + + + public ResultBean> getSysStaffOrgListByStaffSid(String staffSid) { + List list = sysStaffOrgService.getSysStaffOrgListByStaffSid(staffSid); + if (list.size() > 0) { + return new ResultBean>().success().setData(list); + } else { + return new ResultBean().fail().setMsg("该员工无部门").setData(list); + } + } + + + public ResultBean getSysStaffOrgSidListByStaffSid(String staffSid) { + String orgSids = sysStaffOrgService.getSysStaffOrgSidListByStaffSid(staffSid); + if (StringUtils.isNotBlank(orgSids)) { + return new ResultBean().success().setData(orgSids); + } else { + return new ResultBean().fail().setMsg("该员工无部门").setData(""); + } + } + + + public ResultBean selectSidPathByStaffSid(String applySid) { + return sysStaffOrgService.selectSidPathByStaffSid(applySid); + } + + + public ResultBean getOrgSidBySid(String orgSid) { + ResultBean rb = ResultBean.fireFail(); + String orgPathSid = sysStaffOrgService.getOrgByOrgSid(orgSid); + return rb.success().setData(orgPathSid); + } + + + public ResultBean getOrgByStaffSid(String staffSid) { + ResultBean rb = ResultBean.fireFail(); + SysStaffOrg sysStaffOrg = sysStaffOrgService.getOrgByStaffSid(staffSid); + return rb.success().setData(sysStaffOrg); + } + + + public ResultBean getOrgSidByPath(String orgPath) { + return sysStaffOrgService.getOrgSidByPath(orgPath); + } + + + public ResultBean getOrgSidByPath2(String orgPath) { + return sysStaffOrgService.getOrgSidByPath2(orgPath); + } + + + public ResultBean> selAllByOrgPath(String orgSidPath,String roleSid) { + return sysStaffOrgService.selAllByOrgPath(orgSidPath,roleSid); + } + + + public ResultBean> selAllByOrgSidPath(String orgSidPath) { + return sysStaffOrgService.selAllByOrgSidPath(orgSidPath); + } + + + public ResultBean selectAllByStaffSid(String staffSid) { + return sysStaffOrgService.selectAllByStaffSid(staffSid); + } + + + public ResultBean getPathSidByUserSid(String applySid) { + return sysStaffOrgService.getPathSidByUserSid(applySid); + } +} diff --git a/src/main/java/com/yxt/user/apiadmin/SysStaffPostRest.java b/src/main/java/com/yxt/user/apiadmin/SysStaffPostRest.java new file mode 100644 index 0000000..4b78b88 --- /dev/null +++ b/src/main/java/com/yxt/user/apiadmin/SysStaffPostRest.java @@ -0,0 +1,124 @@ +package com.yxt.user.apiadmin; + +import com.yxt.user.biz.sysstaffpost.SysStaffPostDto; +import com.yxt.user.biz.sysstaffpost.SysStaffPostQuery; +import com.yxt.user.biz.sysstaffpost.SysStaffPostVo; +//import com.yxt.user.biz.systemlog.SystemLog; +import com.yxt.user.biz.sysuser.SysUser; +//import com.yxt.user.biz.systemlog.SystemLogService; +import com.yxt.user.biz.sysuser.SysUserService; +import com.yxt.common.base.config.RedisUtil; +import com.yxt.common.base.utils.StringUtils; +import com.yxt.common.core.query.PagerQuery; +import com.yxt.common.core.result.ResultBean; +import com.yxt.common.core.vo.PagerVo; +import com.yxt.user.biz.sysstaffpost.SysStaffPostService; +import io.swagger.annotations.Api; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import javax.servlet.http.HttpServletRequest; +import java.util.Date; +import java.util.List; + +/** + * Project: anrui_portal(门户建设)
+ * File: SysStaffPostFeignFallback.java
+ * Class: com.yxt.user.biz.sysstaffpost.SysStaffPostRest
+ * Description: 员工岗位关联表.
+ * Copyright: Copyright (c) 2011
+ * Company: https://gitee.com/liuzp315
+ * Makedate: 2021-08-03 00:24:30
+ * + * @author liupopo + * @version 1.0 + * @since 1.0 + */ +@Api(tags = "员工岗位关联表") +@RestController +@RequestMapping("v1/sysstaffpost") +public class SysStaffPostRest { + @Autowired + private RedisUtil redisUtil; + @Autowired + private SysStaffPostService sysStaffPostService; +// @Autowired +// private SystemLogService systemLogService; + @Autowired + private SysUserService sysUserService; + @Autowired(required = false) + private HttpServletRequest httpServletRequest; + + + public ResultBean> listPage(@RequestBody PagerQuery pq) { + ResultBean rb = ResultBean.fireFail(); + PagerVo pv = sysStaffPostService.listPageVo(pq); + return rb.success().setData(pv); + } + + + public ResultBean> listAll(@RequestBody SysStaffPostQuery query) { + ResultBean rb = ResultBean.fireFail(); + List list = sysStaffPostService.listAllVo(query); + return rb.success().setData(list); + } + + + public ResultBean> list() { + ResultBean rb = ResultBean.fireFail(); + List list = sysStaffPostService.listVo(); + return rb.success().setData(list); + } + + + public ResultBean save(SysStaffPostDto dto) { + ResultBean rb = ResultBean.fireFail(); + sysStaffPostService.saveOrUpdateDto(dto); + String token = httpServletRequest.getHeader("token"); + String s = redisUtil.get(token); + SysUser sysUser = sysUserService.fetchByUserName(s); +// SystemLog systemLog = new SystemLog(); +// systemLog.setUserSid(sysUser.getSid()); +// systemLog.setCreateTime(new Date()); +// systemLog.setEventName("人员岗位保存"); +// systemLog.setEventContent(""); +// systemLog.setEventUrl("/portal/v1/sysstaffpost/save"); +// systemLog.setUserIp("0.0.0.0"); +// systemLog.setUserName(sysUser.getUserName()); +// systemLogService.save(systemLog); + return rb.success(); + } + + + public ResultBean update(SysStaffPostDto dto, String sid) { + ResultBean rb = ResultBean.fireFail(); + sysStaffPostService.updateBySid(dto.toMap(), sid); + return rb.success(); + } + + + public ResultBean del(String ids) { + ResultBean rb = ResultBean.fireFail(); + sysStaffPostService.delByIds(ids); + return rb.success(); + } + + + public ResultBean fetch(String id) { + ResultBean rb = ResultBean.fireFail(); + SysStaffPostVo vo = sysStaffPostService.fetchByIdVo(id); + return rb.success().setData(vo); + } + + + public ResultBean selectPost(String sid) { + ResultBean rb = ResultBean.fireFail(); + String s = sysStaffPostService.selecctPost(sid); + if(StringUtils.isBlank(s)){ + return rb.setMsg("操作失败"); + } + return rb.success().setData(s); + } +} diff --git a/src/main/java/com/yxt/user/apiadmin/SysStaffinfoRest.java b/src/main/java/com/yxt/user/apiadmin/SysStaffinfoRest.java new file mode 100644 index 0000000..c3313e8 --- /dev/null +++ b/src/main/java/com/yxt/user/apiadmin/SysStaffinfoRest.java @@ -0,0 +1,235 @@ +package com.yxt.user.apiadmin; + +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.yxt.user.biz.sysstaffinfo.*; +import com.yxt.user.biz.sysstaffinfo.app.AppSysStaffQuery; +import com.yxt.user.biz.sysstaffinfo.app.AppSysStaffVo; +import com.yxt.user.biz.sysuser.SysUserService; +import com.yxt.common.base.config.component.FileUploadComponent; +import com.yxt.common.base.utils.PagerUtil; +import com.yxt.common.core.query.PagerQuery; +import com.yxt.common.core.result.ResultBean; +import com.yxt.common.core.vo.PagerVo; +import com.yxt.user.biz.sysstaffinfo.SysStaffinfoService; +import io.swagger.annotations.Api; +import org.apache.commons.lang3.StringUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import java.text.SimpleDateFormat; +import java.util.Collections; +import java.util.List; +import java.util.Map; + +/** + * Project: anrui_portal(门户建设)
+ * File: SysStaffinfoFeignFallback.java
+ * Class: com.yxt.user.biz.sysstaffinfo.SysStaffinfoRest
+ * Description: 人员基础信息表.
+ * Copyright: Copyright (c) 2011
+ * Company: https://gitee.com/liuzp315
+ * Makedate: 2021-08-03 00:24:30
+ * + * @author liupopo + * @version 1.0 + * @since 1.0 + */ +@Api(tags = "人员基础信息表") +@RestController +@RequestMapping("v1/sysstaffinfo") +public class SysStaffinfoRest{ + + private final Long PAGECURRENT = 2L; + private final Long PAGESIZE = 2L; + SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); + + @Autowired + private SysStaffinfoService sysStaffinfoService; + + @Autowired + private SysUserService sysUserService; + @Autowired + private FileUploadComponent fileUploadComponent; + + /** + * 员工管理的分页列表 + * + * @param pq 查询条件 + * @return + */ + + public ResultBean> listPage(@RequestBody PagerQuery pq) { + ResultBean> rb = ResultBean.fireFail(); + IPage page = sysStaffinfoService.pagerList(pq); + PagerVo pv = new PagerVo<>(); + PagerVo pv1 = PagerUtil.pageToVo(page, pv); + return rb.success().setData(pv1); + } + + /** + * 员工信息的新增保存 + * + * @param dto 数据传输对象 + * @return + */ + + public ResultBean save(SysStaffinfoDto dto) { + ResultBean rb = ResultBean.fireFail(); + ResultBean resultBean = sysStaffinfoService.saveStaffInfo(dto); + if (!resultBean.getSuccess()) { + return rb.setMsg(resultBean.getMsg()); + } + return rb.success().setMsg(resultBean.getMsg()); + } + + /** + * 员工信息的修改保存 + * + * @param dto 数据传输对象 + * @param sid 员工信息sid + * @return + */ + + public ResultBean update(SysStaffinfoDto dto, String sid) { + ResultBean rb = ResultBean.fireFail(); + ResultBean resultBean = sysStaffinfoService.updateStaffInfo(dto, sid); + if (!resultBean.getSuccess()) { + return rb.setMsg(resultBean.getMsg()); + } + return rb.success().setMsg(resultBean.getMsg()); + } + + /** + * 进行删除操作,即设置员工类型为离职类型02的操作。 + * + * @param sysStaffQuery 数据传输对象 + * @return + */ + + public ResultBean del(SysStaffQuery sysStaffQuery) { + ResultBean rb = ResultBean.fireFail(); + //查询员工是否是离职 + SysStaffinfo sysStaffinfo = sysStaffinfoService.fetchBySid(sysStaffQuery.getSid()); + if (sysStaffinfo == null) { + return rb.setMsg("员工不存在"); + } + if ("01".equals(sysStaffinfo.getPersonTypeKey())) { + return rb.setMsg("此员工已是离职人员"); + + } + int i = sysStaffinfoService.del(sysStaffQuery); + if (i == 0) { + return rb.setMsg("失败"); + } + return rb.success().setMsg("成功"); + } + + + public ResultBean fetchBySid(String sid) { + ResultBean rb = ResultBean.fireFail(); + SysStaffinfoDetailsVo sysStaffinfo = sysStaffinfoService.selectDetailsBySid(sid); + if (sysStaffinfo == null) { + return rb.setData(new SysStaffinfoDetailsVo()); + } + return rb.success().setData(sysStaffinfo); + } + + + public ResultBean>> getStaffName(String staffName, String deptSid) { + ResultBean rb = ResultBean.fireFail(); + List> staffNameList = sysStaffinfoService.getStaffName(staffName, deptSid); + return rb.success().setData(staffNameList); + } + + + public ResultBean>> getStaffNameByDeptSid(String staffName, String deptSid) { + ResultBean rb = ResultBean.fireFail(); + List> staffNameList = sysStaffinfoService.getStaffNameByDeptSid(staffName, deptSid); + return rb.success().setData(staffNameList); + } + + + + public ResultBean> selectAppContactsList(String names) { + return new ResultBean>().success().setData(sysStaffinfoService.selectAppContactsList()); + } + + + public ResultBean selectAppContactsVO(String staffSid) { + if (StringUtils.isBlank(staffSid)) { + return new ResultBean().fail().setMsg("staffSid不能为空"); + } + AppContactsDetailsVo appContactsDetailsVo = sysStaffinfoService.selectAppContactsVO(staffSid); + if (appContactsDetailsVo == null) { + return new ResultBean().fail().setMsg("查无此人信息"); + } + if (StringUtils.isNotBlank(appContactsDetailsVo.getHeadImage())) { + appContactsDetailsVo.setHeadImage(fileUploadComponent.getUrlPrefix() + appContactsDetailsVo.getHeadImage()); + } + List stringList = sysUserService.getPost(staffSid); + stringList.removeAll(Collections.singleton(null)); + if (!stringList.isEmpty()) { + appContactsDetailsVo.setPosition(String.join("|", stringList)); + } + return new ResultBean().success().setData(appContactsDetailsVo); + } + + + public ResultBean> searchAppContactsList(PagerQuery pq) { + String names = pq.getParams().getName(); + if (StringUtils.isBlank(names)) + return new ResultBean>().fail().setMsg("搜索内容不能为空"); + PagerVo page1 = new PagerVo<>(); + IPage iPage = sysStaffinfoService.searchAppContactsList(pq, names); + //把Ipage转换为PageVo + PagerVo pv_result = PagerUtil.pageToVo(iPage, page1); + pv_result.setMsg("找到 " + pv_result.getTotal() + " 个联系人 "); + return new ResultBean>().success().setData(pv_result); + } + + + public ResultBean> searchAppContactsList2(PagerQuery pq) { + PagerVo page1 = new PagerVo<>(); + IPage iPage = sysStaffinfoService.searchAppContactsList2(pq); + //把Ipage转换为PageVo + PagerVo pv_result = PagerUtil.pageToVo(iPage, page1); + pv_result.setMsg("找到 " + pv_result.getTotal() + " 个联系人 "); + return new ResultBean>().success().setData(pv_result); + } + + + public ResultBean> selectStaffList(PcSysStaffQuery pcSysStaffQuery) { + return sysStaffinfoService.selectStaffList(pcSysStaffQuery); + } + + + public ResultBean> getUserList(PagerQuery pagerQuery) { + ResultBean rb = ResultBean.fireFail(); + PagerVo pv = sysStaffinfoService.getUserList(pagerQuery); + return rb.success().setData(pv); + } + + + public ResultBean> getGressionUserList(String userSid) { + return sysStaffinfoService.getGressionUserList(userSid, ""); + } + + + public ResultBean> getGressionUserList(String userSid, String orgPath) { + return sysStaffinfoService.getGressionUserList(userSid, orgPath); + } + + + public ResultBean> selectStaffLists() { + return sysStaffinfoService.selectStaffLists(); + } + + + public ResultBean> selectStaffListss() { + return sysStaffinfoService.selectStaffListss(); + } + + +} diff --git a/src/main/java/com/yxt/user/apiadmin/SysUserDefaultOrgRest.java b/src/main/java/com/yxt/user/apiadmin/SysUserDefaultOrgRest.java new file mode 100644 index 0000000..804ea25 --- /dev/null +++ b/src/main/java/com/yxt/user/apiadmin/SysUserDefaultOrgRest.java @@ -0,0 +1,34 @@ +package com.yxt.user.apiadmin; + +import com.yxt.common.core.result.ResultBean; +import com.yxt.user.biz.sysuserdefaultorg.SysUserDefaultOrgDto; +import com.yxt.user.biz.sysuserdefaultorg.SysUserDefaultOrgService; +import com.yxt.user.biz.sysuserdefaultorg.SysUserDefaultOrgVo; +import io.swagger.annotations.Api; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +/** + * @Author dimengzhe + * @Date 2023/1/11 11:26 + * @Description + */ +@Api(tags = "用户默认的组织机构") +@RestController +@RequestMapping("v1/sysuserdefaultorg") +public class SysUserDefaultOrgRest { + + @Autowired + private SysUserDefaultOrgService sysUserDefaultOrgService; + + + public ResultBean getList(String userSid) { + return sysUserDefaultOrgService.getList(userSid); + } + + + public ResultBean saveOrUpdate(SysUserDefaultOrgDto dto) { + return sysUserDefaultOrgService.saveDefaultOrg(dto); + } +} diff --git a/src/main/java/com/yxt/user/apiadmin/SysUserRest.java b/src/main/java/com/yxt/user/apiadmin/SysUserRest.java new file mode 100644 index 0000000..c0cee35 --- /dev/null +++ b/src/main/java/com/yxt/user/apiadmin/SysUserRest.java @@ -0,0 +1,619 @@ +package com.yxt.user.apiadmin; + +import cn.hutool.core.bean.BeanUtil; +import com.alibaba.fastjson.JSONObject; +import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport; +import com.yxt.common.base.config.RedisUtil; +import com.yxt.common.base.utils.*; +import com.yxt.common.core.query.PagerQuery; +import com.yxt.common.core.result.ResultBean; +import com.yxt.common.core.vo.PagerVo; +import com.yxt.user.biz.sysorganization.SysOrganization; +import com.yxt.user.biz.sysorganization.SysOrganizationService; +import com.yxt.user.biz.syspost.SysPost; +import com.yxt.user.biz.syspost.SysPostService; +import com.yxt.user.biz.sysstaffinfo.SysStaffinfo; +import com.yxt.user.biz.sysstaffinfo.SysStaffinfoService; +import com.yxt.user.biz.sysstaffinfo.SysStaffinfoVo; +import com.yxt.user.biz.sysstafforg.SysStaffOrg; +import com.yxt.user.biz.sysstafforg.SysStaffOrgService; +import com.yxt.user.biz.sysstaffpost.SysStaffPost; +import com.yxt.user.biz.sysstaffpost.SysStaffPostService; +import com.yxt.user.biz.sysuser.*; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.apache.commons.lang3.StringUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import javax.servlet.http.HttpServletRequest; +import java.util.*; + +/** + * Project: anrui_portal(门户建设)
+ * File: SysUserFeignFallback.java
+ * Class: com.yxt.anrui.portal.biz.sysuser.SysUserRest
+ * Description: 用户表.
+ * Copyright: Copyright (c) 2011
+ * Company: https://gitee.com/liuzp315
+ * Makedate: 2021-08-03 00:24:30
+ * + * @author liupopo + * @version 1.0 + * @since 1.0 + */ +@Api(tags = "用户表") +@RestController +@RequestMapping("v1/sysuser") +public class SysUserRest { + @Autowired + private RedisUtil redisUtil; + @Autowired + private SysUserService sysUserService; + @Autowired + private SysStaffinfoService sysStaffinfoService; + @Autowired + private SysStaffOrgService sysStaffOrgService; + @Autowired + private SysStaffPostService sysStaffPostService; + @Autowired + private SysOrganizationService sysOrganizationService; + @Autowired + private SysPostService sysPostService; + @Autowired + private HttpServletRequest httpServletRequest; +// @Autowired +// private SystemLogService systemLogService; + // 定义点选文字图片验证码允许的误差值 + private static final int ERROR_AMOUNT = 50;// 定义允许的误差值,单位是px + + + public ResultBean> listPage(@RequestBody PagerQuery pq) { + ResultBean rb = ResultBean.fireFail();//roleSid + PagerVo pv = sysUserService.listPageVo(pq); + return rb.success().setData(pv); + } + + + public ResultBean> listAll(@RequestBody SysUserQuery query) { + ResultBean rb = ResultBean.fireFail(); + List list = sysUserService.listAllVo(query); + return rb.success().setData(list); + } + + + public ResultBean> list() { + ResultBean rb = ResultBean.fireFail(); + List list = sysUserService.listVo(); + return rb.success().setData(list); + } + + + public ResultBean save(SysUserDto dto) { + ResultBean rb = ResultBean.fireFail(); + //手机号 + String mobile = dto.getMobile(); + //姓名 + String name = dto.getName(); + //用户类型 + int userType = dto.getUserType(); + //部门sid + String deptSid = dto.getDeptSid(); + //岗位sid + String postSid = dto.getPostSid(); + //验证码 + String verificationCode = dto.getVerificationCode(); + + if (StringUtils.isBlank(mobile)) { + return new ResultBean().fail().setMsg("手机号不能为空"); + } else { + SysUser one = sysUserService.fetchByUserName(mobile); + if (null != one) { + return new ResultBean().fail().setMsg("手机号重复!`"); + } + } + if (StringUtils.isBlank(name)) { + return new ResultBean().fail().setMsg("姓名不能为空"); + } + if (userType == 0) { + return new ResultBean().fail().setMsg("用户类型不能为空"); + } + if (StringUtils.isBlank(verificationCode)) { + return new ResultBean().fail().setMsg("验证码不能为空"); + } else { + Map stringObjectMap = sysUserService.mobileValidateRegister(mobile, verificationCode); + String code = stringObjectMap.get("code").toString(); + String details = stringObjectMap.get("details").toString(); + if (Tools.CODE_FAIL.equals(code)) { + return ResultBean.fireFail().setMessage(details).setMsg(details); + } + } + //"15097329653"; + String password = mobile.substring(5, 11); + String md5 = Encodes.md5(password); + SysStaffinfo ssi = new SysStaffinfo(); + SysUser su = new SysUser(); + dto.fillEntity(su); + su.setStaffSid(ssi.getSid()); + su.setUserName(mobile); + su.setPassword(md5); + su.setIsAdmin("1"); + sysUserService.save(su); + ssi.setName(name); + ssi.setMobile(mobile); + ssi.setPinYinName(PinYinUtils.getPinYinName(name)); + ssi.setFirstPinYinLabel(PinYinUtils.getCharDuoPinYinChar(name)); + sysStaffinfoService.save(ssi); + if (StringUtils.isNotBlank(deptSid)) { + SysOrganization sysOrganization = sysOrganizationService.fetchBySid(deptSid); + SysStaffOrg sso = new SysStaffOrg(); + sso.setOrgName(sysOrganization.getName()); + sso.setOrgSid(sysOrganization.getSid()); + sso.setStaffSid(ssi.getSid()); + sso.setOrgSidPath(sysOrganization.getOrgSidPath()); + sso.setOrgNamePath(sysOrganization.getName()); + sso.setManageType("3"); + sysStaffOrgService.save(sso); + } + if (StringUtils.isNotBlank(postSid)) { + SysPost sysPost = sysPostService.fetchBySid(postSid); + SysStaffPost ssp = new SysStaffPost(); + ssp.setStaffSid(ssi.getSid()); + ssp.setOrgSid(deptSid); + ssp.setPostSid(postSid); + ssp.setStartDate(new Date()); + ssp.setIsDepetHead(0); + sysStaffPostService.save(ssp); + } + return rb.success(); + } + + + public ResultBean delSysUserByMobile(String mobile) { + int i = sysUserService.delSysUserByMobile(mobile); + if (i == 0) { + return new ResultBean().fail().setMsg("删除失败"); + } + return new ResultBean().success().setMsg("删除成功"); + } + + + public ResultBean getSysUserByMobile(String staffSid) { + ResultBean rb = ResultBean.fireFail(); + SysStaffinfoVo user = sysUserService.getSysUserByMobile(staffSid); + return rb.success().setData(user); + } + + + public ResultBean update(SysUserDto dto, String sid) { + ResultBean rb = ResultBean.fireFail(); + sysUserService.updateBySid(dto.toMap(), sid); + //部门sid + String deptSid = dto.getDeptSid(); + //岗位sid + String postSid = dto.getPostSid(); + SysUser sysUser = sysUserService.fetchBySid(sid); + SysStaffinfo ssi = sysStaffinfoService.fetchBySid(sysUser.getStaffSid()); + ssi.setMobile(dto.getMobile()); + ssi.setName(dto.getName()); + sysStaffinfoService.updateById(ssi); + if (StringUtils.isNotBlank(deptSid)) { + SysOrganization sysOrganization = sysOrganizationService.fetchBySid(deptSid); + sysStaffOrgService.deleteByStaffSid(sysUser.getStaffSid()); + SysStaffOrg sso = new SysStaffOrg(); + sso.setOrgName(sysOrganization.getName()); + sso.setOrgSid(sysOrganization.getSid()); + sso.setStaffSid(ssi.getSid()); + sso.setOrgSidPath(sysOrganization.getOrgSidPath()); + sso.setOrgNamePath(sysOrganization.getName()); + sso.setManageType("3"); + sysStaffOrgService.save(sso); + } + if (StringUtils.isNotBlank(postSid)) { + SysPost sysPost = sysPostService.fetchBySid(postSid); + sysStaffPostService.deleteByStaffSid(sysUser.getStaffSid()); + SysStaffPost ssp = new SysStaffPost(); + ssp.setStaffSid(ssi.getSid()); + ssp.setOrgSid(deptSid); + ssp.setPostSid(postSid); + ssp.setStartDate(new Date()); + ssp.setIsDepetHead(0); + sysStaffPostService.save(ssp); + } + return rb.success(); + } + + /** + * 修改密码(★) + * + * @param original 原始密码 + * @param password 密码 + * @param confirmPassword 确认密码 + * @return + */ + + public ResultBean updatePassword(String original, String password, String confirmPassword, String userSid, HttpServletRequest httpServletRequest) { + String token = httpServletRequest.getHeader("token"); + // 根据redisToken查询用户信息 + SysUser user = sysUserService.fetchBySid(userSid); + if (user == null) { + return ResultBean.fireFail().setMsg("抱歉,用户不存在"); + } + if (!password + .matches("^(?=.*[A-Z])(?=.*[a-z])(?=.*[0-9])[a-zA-Z0-9]{8,16}$")) { + return ResultBean.fireFail().setMsg("密码格式错误,必须为8至16位大小写字母和数字的组合"); + } + String newPassword = Encodes.md5(original); + if (!newPassword.equals(user.getPassword())) { + return ResultBean.fireFail().setMsg("原始密码输入错误"); + } + if (!password.equals(confirmPassword)) { + return ResultBean.fireFail().setMsg("密码和确认密码不一致"); + } + int i = sysUserService.updatePassword(user.getSid(), Encodes.md5(password)); + if (i == 0) { + return ResultBean.fireFail().setMsg("修改失败"); + } + redisUtil.remove(token); + return ResultBean.fireSuccess().setMsg("修改成功"); + } + + + public ResultBean del(String ids) { + ResultBean rb = ResultBean.fireFail(); + sysUserService.delByIds(ids); + return rb.success(); + } + + + public ResultBean delBySid(String sid) { + ResultBean rb = ResultBean.fireFail(); + sysUserService.delBySid(sid); + return rb.success(); + } + + + public ResultBean selectByUserName(String mobile) { + SysUser user = sysUserService.selectByUserName(mobile); + SysUserVo sysUserVo = new SysUserVo(); + BeanUtil.copyProperties(user, sysUserVo); + return new ResultBean().success().setData(sysUserVo); + } + + + public ResultBean fetch(String id) { + ResultBean rb = ResultBean.fireFail(); + SysUserVo vo = sysUserService.fetchByIdVo(id); + return rb.success().setData(vo); + } + + + public ResultBean fetchBySid(String sid) { + ResultBean rb = ResultBean.fireFail(); + SysUserVo vo = sysUserService.fetchBySidVo(sid); + return rb.success().setData(vo); + } + + + public ResultBean> fetchBySids(String sids) { + ResultBean rb = ResultBean.fireFail(); + List vo = sysUserService.fetchBySidSVo(sids); + return rb.success().setData(vo); + } + + + public ResultBean reGetPwd(String userName, String userPhone) { + return sysUserService.reGetPwd(userName, userPhone); + } + + + public ResultBean initPwd(String sid) { + if (!sysUserService.initPwd(sid)) { + return ResultBean.fireFail().setMsg("初始化密码失败"); + } + return ResultBean.fireSuccess().setMsg("初始化密码成功"); + } + + @PostMapping("/login") + @ResponseBody + @ApiOperation(value = "3、登录") + @ApiOperationSupport(order = 30) + public ResultBean login(SysUserQuery userQuery) { + String userName = userQuery.getUserName(); + String password = userQuery.getPassword(); + String verifyCode = userQuery.getVerifyCode(); + String type =userQuery.getType(); + SysUser user = null; + //密码登录 + if(type.equals("1")){ + if (StringUtils.isBlank(userName)) { + return new ResultBean().fail().setMsg("用户名不能为空"); + } + if (StringUtils.isBlank(password)) { + return new ResultBean().fail().setMsg("密码不能为空"); + } + + // 验证通过之后删除redis上的验证过的该条uuid + user = sysUserService.selectByUserName(userName); + String md5 = Encodes.md5(password); + if (user == null) { + //根据手机号查询用户是否存在 + user = sysUserService.selectByMobile(userName); + if (user == null) { + return new ResultBean().fail().setMsg("用户名或密码错误"); + } else { + if (!md5.equals(user.getPassword())) { + return new ResultBean().fail().setMsg("用户名或密码错误"); + } + } + } else { + if (!(md5.equals(user.getPassword()))) { + return new ResultBean().fail().setMsg("用户名或密码错误"); + } + } + }else{ + //验证码登录 + if (StringUtils.isBlank(verifyCode)) return new ResultBean().fail().setMsg("验证码不能为空"); + String codeFromRedis = redisUtil.get("loginCode" + userName); + if (StringUtils.isBlank(codeFromRedis)) + return new ResultBean().fail().setMsg("短信验证码已失效,请重新发送"); + if (verifyCode.equals(codeFromRedis.substring(0, 4))) { + user = sysUserService.selectByUserName(userName); + if(user==null){ + return new ResultBean().fail().setMsg("用户名不存在"); + } + redisUtil.remove("loginCode" + userName); + } else { + return new ResultBean().fail().setMsg("短信验证码错误或已失效,请重新获取"); + } + } + // 根据用户信息查询用户的角色信息 + SysUserVo userInfoOneVo = sysUserService.setUserRedisSessionToken(user); + if (userInfoOneVo == null) { + return new ResultBean().fail().setMsg("该用户不是公司员工"); + } + return new ResultBean().success().setData(userInfoOneVo); + } + + + public ResultBean loginByNoVeriCode(SysUserQuery userQuery) { + + String userName = userQuery.getUserName(); + String password = userQuery.getPassword(); + if (StringUtils.isBlank(userName)) { + return new ResultBean().fail().setMsg("用户名不能为空"); + } + if (StringUtils.isBlank(password)) { + return new ResultBean().fail().setMsg("密码不能为空"); + } + SysUser user = null; + // 验证通过之后删除redis上的验证过的该条uuid + user = sysUserService.selectByUserName(userName); + String md5 = Encodes.md5(password); + if (user == null) { + //根据手机号查询用户是否存在 + user = sysUserService.selectByMobile(userName); + if (user == null) { + return new ResultBean().fail().setMsg("用户名或密码错误"); + } else { + if (!md5.equals(user.getPassword())) { + return new ResultBean().fail().setMsg("用户名或密码错误"); + } + } + } else { + if (!(md5.equals(user.getPassword()))) { + return new ResultBean().fail().setMsg("用户名或密码错误"); + } + } + // 根据用户信息查询用户的角色信息 + SysUserVo userInfoOneVo = sysUserService.setUserRedisSessionToken(user); + if (userInfoOneVo == null) { + return new ResultBean().fail().setMsg("该用户不是公司员工"); + } +// SystemLog systemLog = new SystemLog(); +// systemLog.setUserName(user.getUserName()); +// String ip = WebUtil.getIpAddr(httpServletRequest); +// systemLog.setUserIp(ip); +// systemLog.setEventUrl("portal/v1/sysuser/login"); +// systemLog.setEventContent("用户登录"); +// systemLog.setEventName("用户登录"); +// systemLogService.save(systemLog); + return new ResultBean().success().setData(userInfoOneVo); + + } + + + public ResultBean signOut(HttpServletRequest httpServletRequest) { + String token = httpServletRequest.getHeader("token"); + String redisToken = redisUtil.get(token); + if (StringUtils.isBlank(redisToken)) { + return ResultBean.fireSuccess().setMsg("您已退出,请刷新"); + } + redisUtil.remove(token); + return ResultBean.fireSuccess().setMsg("退出成功"); + } + + /** + * 获取验证码(注册)(★) + * + * @param mobile 手机号 + * @return ResultBean + */ + + public ResultBean sendMessageCode(String mobile) { + if (StringUtils.isBlank(mobile) || !RegexUtil.isMobile(mobile)) { + return new ResultBean().fail().setMsg("请输入正确的手机号"); + } + String verificationCode = ""; + return sysUserService.getVerificationCode(mobile, verificationCode); + } + + + public ResultBean selectByStaffsid(String staffsid) { + SysUserVo user = sysUserService.selectByStaffsid(staffsid); + if (user != null) { + return new ResultBean().success().setData(user); + } else { + return new ResultBean().fail().setData(new SysUserVo()).setMsg("查无此用户"); + } + + } + + + public ResultBean selectBySid(String sid) { + ResultBean rb = ResultBean.fireFail(); + SysUser vo = sysUserService.fetchBySid(sid); + if (vo == null) { + vo = new SysUser(); + return rb.fail().setData(vo).setMsg("用户不存在"); + } + return rb.success().setData(vo); + } + + + public ResultBean loginDetails(HttpServletRequest httpServletRequest) { + String token = httpServletRequest.getHeader("token"); + if (StringUtils.isBlank(token)) { + return new ResultBean().fail().setMsg("请重新登录"); + } + String userName = redisUtil.get(token); + if (StringUtils.isBlank(userName)) { + return new ResultBean().fail().setMsg("请重新登录"); + } + SysUser user = sysUserService.selectByUserName(userName); + user.setToken(token); + SysUserVo userInfoOneVo = sysUserService.selectUserOne(user); + if (userInfoOneVo == null) { + return new ResultBean().fail().setMsg("该用户不是公司员工"); + } + return new ResultBean().success().setData(userInfoOneVo); + } + + +// public ResultBean getUserOrgInfoByUserSid(String userSid) { +// AppUserOrgInfoVo vo = sysUserService.getUserOrgInfoByUserSid(userSid); +// if (vo == null) { +// return new ResultBean().fail().setMsg("查询失败"); +// } +// return new ResultBean().success().setData(vo); +// } + + /** + * 根据用户的sid查询该用户的组织信息 + * + * @param userSid 用户sid + * @return + */ + + public ResultBean selectUserInfoByUserSid(String userSid) { + ResultBean rb = ResultBean.fireFail(); + SysUserInfoVo sysUserInfoVo = sysUserService.selectUserInfoByUserSid(userSid); + if (sysUserInfoVo == null) { + return rb.setData(new SysUserInfoVo()).setMsg("该用户未设置所属部门"); + } + return rb.success().setData(sysUserInfoVo); + } + + + public ResultBean selectUserInfoByUserSid(String userSid, String orgSid) { + ResultBean rb = ResultBean.fireFail(); + SysUserInfoVo sysUserInfoVo = sysUserService.selectUserInfoByUserSid(userSid, orgSid); + if (sysUserInfoVo == null) { + return rb.setData(new SysUserInfoVo()).setMsg("该用户未设置所属部门"); + } + return rb.success().setData(sysUserInfoVo); + } + + + public ResultBean setIsEnable(String sid, String isEnable) { + SysUser sysUser = sysUserService.fetchBySid(sid); + if (sysUser == null) { + return ResultBean.fireFail().setMsg("此角色已不存在"); + } + int i = sysUserService.updateIsEnable(sid, isEnable); + if (i == 0) { + return ResultBean.fireFail().setMsg("设置失败"); + } + return ResultBean.fireSuccess().setMsg("设置成功"); + } + + + public ResultBean getUsersByRoleSid(String roleSid) { + return sysUserService.getUsersByRoleSid(roleSid); + } + + + public ResultBean> getUserByRole(UserQuery query) { + return sysUserService.getUserByRole(query); + } + + + public ResultBean> getUserSidByRole(UserQuery query) { + return sysUserService.getUserSidByRole(query); + } + + + public ResultBean> getUsersByRoles(UserssQuery usersQuery) { + return sysUserService.getUsersByRoles(usersQuery); + } + + + public ResultBean> getUserByOrgRole(UserRoleQuery query) { + return sysUserService.getUserByOrgRole(query); + } + + + public ResultBean> getOtherOrgRoleUser(UserRoleQuery query) { + return sysUserService.getOtherOrgRoleUser(query); + } + + + public ResultBean>> getUserByOrgSid(String orgSid, String userSid) { + return sysUserService.getUserByOrgSid(orgSid, userSid); + } + + + public ResultBean selectIdBySid(List stringList) { + return sysUserService.selectIdBySid(stringList); + } + + + public ResultBean> selectSysUserList(String userSid, String orgPath) { + return sysUserService.selectSysUserList(userSid, orgPath); + } + + + public ResultBean selectPasswordByUserSid(String userSid) { + return sysUserService.selectPasswordByUserSid(userSid); + } + + + public ResultBean selectHaveMessage(SysHaveMessageQuery sysHaveMessageQuery) { + return sysUserService.selectHaveMessage(sysHaveMessageQuery); + } + + +// public ResultBean> getOrgListByUserSid(String userSid) { +// return sysUserService.getOrgListByUserSid(userSid); +// } + + + public ResultBean> getUserByRoles(UserByRolesAndOrgQuery userQuery) { + return sysUserService.getUserByRoles(userQuery); + } + + + public ResultBean> shareSelectUser(ShareUserQuery shareUserQuery) { + return sysUserService.shareSelectUser(shareUserQuery); + } + + + public ResultBean selectPrivilegeLevel(PrivilegeQuery query) { + return sysUserService.selectPrivilegeLevel(query); + } + + + public ResultBean removeRedis() { + return sysUserService.removeRedis(); + } +} diff --git a/src/main/java/com/yxt/user/apiadmin/SysUserRoleRest.java b/src/main/java/com/yxt/user/apiadmin/SysUserRoleRest.java new file mode 100644 index 0000000..7200ae0 --- /dev/null +++ b/src/main/java/com/yxt/user/apiadmin/SysUserRoleRest.java @@ -0,0 +1,118 @@ +package com.yxt.user.apiadmin; + +import com.yxt.common.base.utils.StringUtils; +import com.yxt.common.core.query.PagerQuery; +import com.yxt.common.core.result.ResultBean; +import com.yxt.common.core.vo.PagerVo; +import com.yxt.user.biz.sysuserrole.*; +import io.swagger.annotations.Api; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import java.util.List; + +/** + * Project: anrui_portal(门户建设)
+ * File: SysUserRoleFeignFallback.java
+ * Class: com.yxt.anrui.portal.biz.sysuserrole.SysUserRoleRest
+ * Description: 用户与角色关联表.
+ * Copyright: Copyright (c) 2011
+ * Company: https://gitee.com/liuzp315
+ * Makedate: 2021-08-03 00:24:30
+ * + * @author liupopo + * @version 1.0 + * @since 1.0 + */ +@Api(tags = "用户与角色关联表") +@RestController +@RequestMapping("v1/sysuserrole") +public class SysUserRoleRest { + + @Autowired + private SysUserRoleService sysUserRoleService; + + + public ResultBean> listPage(@RequestBody PagerQuery pq){ + ResultBean rb = ResultBean.fireFail(); + PagerVo pv = sysUserRoleService.listPageVo(pq); + return rb.success().setData(pv); + } + + + public ResultBean> listAll(@RequestBody SysUserRoleQuery query){ + ResultBean rb = ResultBean.fireFail(); + List list = sysUserRoleService.listAllVo(query); + return rb.success().setData(list); + } + + + public ResultBean> list(){ + ResultBean rb = ResultBean.fireFail(); + List list = sysUserRoleService.listVo(); + return rb.success().setData(list); + } + + + public ResultBean save(SysUserRoleDto dto){ + ResultBean rb = ResultBean.fireFail(); + sysUserRoleService.saveOrUpdateDto(dto); + return rb.success(); + } + + + public ResultBean update(SysUserRoleDto dto){ + ResultBean rb = ResultBean.fireFail(); + sysUserRoleService.deleteByUserSid(dto.getUserSid()); + String roleSid = dto.getRoleSid(); + if(StringUtils.isBlank(roleSid)){ + return rb.success(); + } + String[] roleSids = roleSid.split(","); + for(String sid:roleSids){ + SysUserRole sysUserRole=new SysUserRole(); + sysUserRole.setRoleSid(sid); + sysUserRole.setUserSid(dto.getUserSid()); + sysUserRoleService.saveOrUpdate(sysUserRole); + } + return rb.success(); + } + + + public ResultBean del(String ids){ + ResultBean rb = ResultBean.fireFail(); + sysUserRoleService.delByIds(ids); + return rb.success(); + } + + + public ResultBean delByUserSidAndRoleSid(String userSid, String roleSid) { + ResultBean rb = ResultBean.fireFail(); + sysUserRoleService.delByUserSidAndRoleSid(userSid,roleSid); + return rb.success(); + } + + + public ResultBean fetch(String id){ + ResultBean rb = ResultBean.fireFail(); + SysUserRoleVo vo = sysUserRoleService.fetchByIdVo(id); + return rb.success().setData(vo); + } + + + public ResultBean> getUserRoleSidByUserSid(String userSid) { + return sysUserRoleService.getUserRoleSidByUserSid(userSid); + } + + + public ResultBean> getUserIdListByRoleSid(List roleList) { + return sysUserRoleService.getUserIdListByRoleSid(roleList); + } + + + public ResultBean> selectByUserSid(String userSid) { + return sysUserRoleService.selectByUserSids(userSid); + } +} diff --git a/src/main/java/com/yxt/user/biz/sms/SmsDto.java b/src/main/java/com/yxt/user/biz/sms/SmsDto.java new file mode 100644 index 0000000..79ffa54 --- /dev/null +++ b/src/main/java/com/yxt/user/biz/sms/SmsDto.java @@ -0,0 +1,28 @@ +package com.yxt.user.biz.sms; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +/** + * Project: anrui_portal(门户建设)
+ * File: SysFunctionDto.java
+ * Class: com.yxt.anrui.portal.api.sysfunction.SysFunctionDto
+ * Description: 短信 数据传输对象.
+ * Copyright: Copyright (c) 2011
+ * Company: https://gitee.com/liuzp315
+ * Makedate: 2021-08-03 00:24:28
+ * + * @author liupopo + * @version 1.0 + * @since 1.0 + */ +@ApiModel(value = "短信 数据传输对象", description = "短信 数据传输对象") +@Data +public class SmsDto { + + @ApiModelProperty("手机号码") + private String mobile; + + @ApiModelProperty("消息") + private String msg; +} diff --git a/src/main/java/com/yxt/user/biz/sms/SmsFeign.java b/src/main/java/com/yxt/user/biz/sms/SmsFeign.java new file mode 100644 index 0000000..3a6f57f --- /dev/null +++ b/src/main/java/com/yxt/user/biz/sms/SmsFeign.java @@ -0,0 +1,47 @@ +package com.yxt.user.biz.sms; + +import com.yxt.common.core.result.ResultBean; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.cloud.openfeign.FeignClient; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.ResponseBody; + +/** + * @author dimengzhe + * @date 2020/9/11 16:52 + * @description + */ +@Api(tags = "短信验证码") +@FeignClient( + contextId = "anrui-portal-SmsApi", + name = "anrui-portal", + path = "v1/sms", + fallback = SmsFeignFallback.class) +public interface SmsFeign { + static String msgSign="【安瑞集团】"; + // private static String msgtitle="河北省计量业务应用平台提醒:"; + static String MSG_NEWPWD="用户,您好!您的新密码为:"; + static String MSG_VERIFY = "用户,您好!您注册的单位已审核通过,管理员的密码为:"; + static String MSG_VERIFY_NO = "用户,您好!您注册的单位未审核通过,未通过原因:"; + static String MSG_VERIFY_ONE = "用户,您好!您所填写的基本信息未通过。请及时登录系统修改。"; + + static String MSG_USER_VERIFY = "用户,您好!您注册的个人信息已审核通过"; + static String MSG_USER_VERIFY_NO = "用户,您好!您注册的个人信息未审核通过,未通过原因:"; + static String MSG_ORG_STAFF = "尊敬的用户,您好!您绑定的单位已审核通过,可登陆系统进行查看"; + static String MSG_USING = "尊敬的用户,您好!有待确认的单位信息需确认,请及时确认信息"; + + static String MSG_OA_FILE_SEND = "用户,您好!协同办公中您收到一份文件,请查阅:"; + /** + * 发送短信验证码 + * + * @param dto 服务器响应 + * @return + * @throws Exception + */ + @GetMapping("/sendWaitWorkMsg") + @ResponseBody + @ApiOperation(value = "发送短信验证码") + public ResultBean SendWaitWorkMsg(@RequestBody SmsDto dto) ; +} diff --git a/src/main/java/com/yxt/user/biz/sms/SmsFeignFallback.java b/src/main/java/com/yxt/user/biz/sms/SmsFeignFallback.java new file mode 100644 index 0000000..86a272b --- /dev/null +++ b/src/main/java/com/yxt/user/biz/sms/SmsFeignFallback.java @@ -0,0 +1,11 @@ +package com.yxt.user.biz.sms; + +import com.yxt.common.core.result.ResultBean; +import org.springframework.stereotype.Component; +@Component +public class SmsFeignFallback implements SmsFeign{ + @Override + public ResultBean SendWaitWorkMsg(SmsDto dto) { + return null; + } +} diff --git a/src/main/java/com/yxt/user/biz/sysfunction/ButtonPermissionQuery.java b/src/main/java/com/yxt/user/biz/sysfunction/ButtonPermissionQuery.java new file mode 100644 index 0000000..5583628 --- /dev/null +++ b/src/main/java/com/yxt/user/biz/sysfunction/ButtonPermissionQuery.java @@ -0,0 +1,19 @@ +package com.yxt.user.biz.sysfunction; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * 查询按钮的权限的表单参数 + */ +@ApiModel(value = "查询按钮的权限的表单参数", description = "查询按钮的权限的表单参数") +@Data +public class ButtonPermissionQuery { + @ApiModelProperty("userSid") + private String userSid; + @ApiModelProperty("url") + private String url; + @ApiModelProperty("type") + private String type; +} diff --git a/src/main/java/com/yxt/user/biz/sysfunction/ButtonPermissionVo.java b/src/main/java/com/yxt/user/biz/sysfunction/ButtonPermissionVo.java new file mode 100644 index 0000000..f1c7229 --- /dev/null +++ b/src/main/java/com/yxt/user/biz/sysfunction/ButtonPermissionVo.java @@ -0,0 +1,12 @@ +package com.yxt.user.biz.sysfunction; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@ApiModel(value = "返回查询的按钮权限集合", description = "返回查询的按钮权限集合") +@Data +public class ButtonPermissionVo { + @ApiModelProperty("buttonId") + private String buttonId; +} diff --git a/src/main/java/com/yxt/user/biz/sysfunction/SysFunction.java b/src/main/java/com/yxt/user/biz/sysfunction/SysFunction.java new file mode 100644 index 0000000..5cb8e90 --- /dev/null +++ b/src/main/java/com/yxt/user/biz/sysfunction/SysFunction.java @@ -0,0 +1,54 @@ +package com.yxt.user.biz.sysfunction; + +import com.baomidou.mybatisplus.annotation.TableName; +import com.fasterxml.jackson.annotation.JsonProperty; +import com.yxt.common.core.domain.BaseEntity; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * Project: anrui_portal(门户建设)
+ * File: SysFunction.java
+ * Class: com.yxt.anrui.portal.api.sysfunction.SysFunction
+ * Description: 功能.
+ * Copyright: Copyright (c) 2011
+ * Company: https://gitee.com/liuzp315
+ * Makedate: 2021-08-03 00:24:28
+ * + * @author liupopo + * @version 1.0 + * @since 1.0 + */ +@ApiModel(value = "功能", description = "功能") +@TableName("sys_function") +@Data +public class SysFunction extends BaseEntity { + private static final long serialVersionUID = 1L; + + + @ApiModelProperty("功能名称") + private String name; + + @ApiModelProperty("层级") + private Integer level; + + @ApiModelProperty("父级sid") + private String parentSid; + + @ApiModelProperty("接口地址") + private String actionUrl; + + @ApiModelProperty("模块名称") + private String controllerName; + + @ApiModelProperty("移动端按钮id") + private String funId; + + @ApiModelProperty("前端控制按钮的id") + @JsonProperty("cId") + private String cId; + + @ApiModelProperty("是否手机端权限0否,1是") + private String phoneFunction; +} diff --git a/src/main/java/com/yxt/user/biz/sysfunction/SysFunctionDto.java b/src/main/java/com/yxt/user/biz/sysfunction/SysFunctionDto.java new file mode 100644 index 0000000..b0f0dc8 --- /dev/null +++ b/src/main/java/com/yxt/user/biz/sysfunction/SysFunctionDto.java @@ -0,0 +1,54 @@ +package com.yxt.user.biz.sysfunction; + + +import com.fasterxml.jackson.annotation.JsonProperty; +import com.yxt.common.core.dto.Dto; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * Project: anrui_portal(门户建设)
+ * File: SysFunctionDto.java
+ * Class: com.yxt.anrui.portal.api.sysfunction.SysFunctionDto
+ * Description: 功能 数据传输对象.
+ * Copyright: Copyright (c) 2011
+ * Company: https://gitee.com/liuzp315
+ * Makedate: 2021-08-03 00:24:28
+ * + * @author liupopo + * @version 1.0 + * @since 1.0 + */ +@ApiModel(value = "功能 数据传输对象", description = "功能 数据传输对象") +@Data +public class SysFunctionDto implements Dto { + + + @ApiModelProperty("功能名称") + private String name; + + @ApiModelProperty("层级") + private Integer level; + + @ApiModelProperty("父级sid") + private String parentSid; + + @ApiModelProperty("接口地址") + private String actionUrl; + + @ApiModelProperty("模块名称") + private String controllerName; + @ApiModelProperty("模块sid") + private String sourceSid; + + @ApiModelProperty("移动端按钮id") + private String funId; + @ApiModelProperty("前端控制按钮的id") + @JsonProperty("cId") + private String cId; + @ApiModelProperty("是否手机端权限0否,1是") + private String phoneFunction; + @ApiModelProperty("备注") + private String remarks ; +} \ No newline at end of file diff --git a/src/main/java/com/yxt/user/biz/sysfunction/SysFunctionMapper.java b/src/main/java/com/yxt/user/biz/sysfunction/SysFunctionMapper.java new file mode 100644 index 0000000..4cac2ff --- /dev/null +++ b/src/main/java/com/yxt/user/biz/sysfunction/SysFunctionMapper.java @@ -0,0 +1,74 @@ +package com.yxt.user.biz.sysfunction; + +import com.baomidou.mybatisplus.core.conditions.Wrapper; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.core.toolkit.Constants; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; + +import java.util.List; +import java.util.Map; + +/** + * Project: anrui_portal(门户建设)
+ * File: SysFunctionMapper.java
+ * Class: com.yxt.anrui.portal.biz.sysfunction.SysFunctionMapper
+ * Description: 功能.
+ * Copyright: Copyright (c) 2011
+ * Company: https://gitee.com/liuzp315
+ * Makedate: 2021-08-03 00:24:28
+ * + * @author liupopo + * @version 1.0 + * @since 1.0 + */ +@Mapper +public interface SysFunctionMapper extends BaseMapper { + + //@Update("update sys_function set name=#{msg} where id=#{id}") + //IPage voPage(IPage page, @Param(Constants.WRAPPER) QueryWrapper qw); + + IPage selectPageVo(IPage page, @Param(Constants.WRAPPER) Wrapper qw); + + List selectListAllVo(@Param(Constants.WRAPPER) Wrapper qw); + + @Select("select * from sys_function") + List selectListVo(); + + List listAllParentByRoleSid(String roleSid, String sid); + + List getChildrensForFunctionTree(@Param(Constants.WRAPPER) QueryWrapper qw); + + List selectChildernList(String sid); + + int updateBySourceSid(@Param("isEnable") Integer isEnable, @Param("list") List list); + + /** + * 该资源下的功能是否可用 状态为1的功能 + * + * @param isEnable 是否可用,1可用,0不可用 + * @param sourceSid 资源sid + * @return + */ + int selectBySourceSid(@Param("isEnable") int isEnable, @Param("sourceSid") String sourceSid); + + List getButtonPermissions(@Param("query") ButtonPermissionQuery query); + + List> getSourceAuthorization(@Param("roleSid") String roleSid); + + @Select("SELECT sm.name,sm.sid,sm.pageUrl FROM sys_menu sm LEFT JOIN sys_source_menu ssm ON sm.sid=ssm.menuSid where ssm.sourceSid=#{sourceSid}") + List> getMenuAuthorization(@Param("sourceSid") String sourceSid); + + @Select("SELECT sf.name,sf.sid FROM sys_function sf WHERE sf.actionUrl= #{pageUrl}") + List> getFunctionAuthorization(@Param("pageUrl") String pageUrl); + + @Select("SELECT sf.name,sf.sid,IF(IFNULL(srf.id,0)<=0,1,0) checked FROM sys_function sf " + + " LEFT JOIN sys_role_function srf ON srf.functionSid=sf.sid " + + " WHERE sf.actionUrl= #{pageUrl} AND srf.roleSid = #{roleSid} ") + List> getFunctionByRoleSid(@Param("pageUrl") String pageUrl, @Param("roleSid") String roleSid); + + List> getSourceAuthorizationApp(@Param("roleSid") String roleSid); +} \ No newline at end of file diff --git a/src/main/java/com/yxt/user/biz/sysfunction/SysFunctionMapper.xml b/src/main/java/com/yxt/user/biz/sysfunction/SysFunctionMapper.xml new file mode 100644 index 0000000..558eb3a --- /dev/null +++ b/src/main/java/com/yxt/user/biz/sysfunction/SysFunctionMapper.xml @@ -0,0 +1,103 @@ + + + + + + + + + + + + + + + UPDATE sys_function + SET isEnable = #{isEnable} WHERE sid IN + + #{item} + + + + + + + + + + \ No newline at end of file diff --git a/src/main/java/com/yxt/user/biz/sysfunction/SysFunctionQuery.java b/src/main/java/com/yxt/user/biz/sysfunction/SysFunctionQuery.java new file mode 100644 index 0000000..819f183 --- /dev/null +++ b/src/main/java/com/yxt/user/biz/sysfunction/SysFunctionQuery.java @@ -0,0 +1,53 @@ +package com.yxt.user.biz.sysfunction; + + +import com.fasterxml.jackson.annotation.JsonProperty; +import com.yxt.common.core.query.Query; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * Project: anrui_portal(门户建设)
+ * File: SysFunctionQuery.java
+ * Class: com.yxt.anrui.portal.api.sysfunction.SysFunctionQuery
+ * Description: 功能 查询条件.
+ * Copyright: Copyright (c) 2011
+ * Company: https://gitee.com/liuzp315
+ * Makedate: 2021-08-03 00:24:28
+ * + * @author liupopo + * @version 1.0 + * @since 1.0 + */ +@ApiModel(value = "功能 查询条件", description = "功能 查询条件") +@Data +public class SysFunctionQuery implements Query { + + + @ApiModelProperty("功能名称") + private String name; + + @ApiModelProperty("层级") + private Integer level; + + @ApiModelProperty("父级sid") + private String parentSid; + @ApiModelProperty("角色sid") + private String roleSid; + + @ApiModelProperty("接口地址") + private String actionUrl; + + @ApiModelProperty("模块名称") + private String controllerName; + + @ApiModelProperty("移动端按钮id") + private String funId; + @ApiModelProperty("前端控制按钮的id") + @JsonProperty("cId") + private String cId; + + @ApiModelProperty("是否手机端权限0否,1是") + private String phoneFunction; +} diff --git a/src/main/java/com/yxt/user/biz/sysfunction/SysFunctionService.java b/src/main/java/com/yxt/user/biz/sysfunction/SysFunctionService.java new file mode 100644 index 0000000..8748235 --- /dev/null +++ b/src/main/java/com/yxt/user/biz/sysfunction/SysFunctionService.java @@ -0,0 +1,344 @@ +package com.yxt.user.biz.sysfunction; + +import cn.hutool.core.bean.BeanUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.yxt.user.biz.syssource.SysSourceService; +import com.yxt.common.base.service.MybatisBaseService; +import com.yxt.common.base.utils.PagerUtil; +import com.yxt.common.core.query.PagerQuery; +import com.yxt.common.core.vo.PagerVo; +import org.apache.commons.lang3.StringUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +/** + * Project: anrui_portal(门户建设)
+ * File: SysFunctionService.java
+ * Class: com.yxt.user.biz.sysfunction.SysFunctionService
+ * Description: 功能 业务逻辑.
+ * Copyright: Copyright (c) 2011
+ * Company: https://gitee.com/liuzp315
+ * Makedate: 2021-08-03 00:24:28
+ * + * @author liupopo + * @version 1.0 + * @since 1.0 + */ +@Service +public class SysFunctionService extends MybatisBaseService { + @Autowired + private SysSourceService sysSourceService; + @Autowired +// private SysSourceFunctionService sysSourceFunctionService; + + public PagerVo listPage(PagerQuery pq) { + SysFunctionQuery query = pq.getParams(); + QueryWrapper qw = createQueryWrapper(query); + IPage page = PagerUtil.queryToPage(pq); + IPage pagging = baseMapper.selectPage(page, qw); + PagerVo p = PagerUtil.pageToVo(pagging, null); + return p; + } + + public List listAll(SysFunctionQuery query) { + QueryWrapper qw = createQueryWrapper(query); + return baseMapper.selectList(qw); + } + + private QueryWrapper createQueryWrapper(SysFunctionQuery query) { + // todo: 这里根据具体业务调整查询条件 + // 多字段Like示例:qw.and(wrapper -> wrapper.like("name", query.getName()).or().like("remark", query.getName())); + QueryWrapper qw = new QueryWrapper<>(); + + + if (StringUtils.isNotBlank(query.getName())) { + qw.eq("name", query.getName()); + } + + if (query.getLevel() != null) { + qw.eq("level", query.getLevel()); + } + + if (StringUtils.isNotBlank(query.getParentSid())) { + qw.eq("parentSid", query.getParentSid()); + } + + if (StringUtils.isNotBlank(query.getActionUrl())) { + qw.eq("actionUrl", query.getActionUrl()); + } + + if (StringUtils.isNotBlank(query.getControllerName())) { + qw.eq("controllerName", query.getControllerName()); + } + + if (StringUtils.isNotBlank(query.getFunId())) { + qw.eq("funId", query.getFunId()); + } + + if (query.getPhoneFunction() != null) { + qw.eq("phoneFunction", query.getPhoneFunction()); + } + return qw; + } + + public PagerVo listPageVo(PagerQuery pq) { + SysFunctionQuery query = pq.getParams(); + QueryWrapper qw = createQueryWrapper(query); + IPage page = PagerUtil.queryToPage(pq); + IPage pagging = baseMapper.selectPageVo(page, qw); + PagerVo p = PagerUtil.pageToVo(pagging, null); + return p; + } + + public List listAllVo(SysFunctionQuery query) { + QueryWrapper qw = new QueryWrapper<>(); + qw.eq("func.parentSid", "0"); + List sysFunctionVos = baseMapper.selectListAllVo(qw); + for (SysFunctionVo s : sysFunctionVos) { + getChildrens(s); + } + return sysFunctionVos; + } + + private void getChildrens(SysFunctionVo s) { + String sid = s.getSid(); + QueryWrapper qw = new QueryWrapper<>(); + if (StringUtils.isNotBlank(sid)) { + qw.eq("func.parentSid", sid); + } + List sysFunctionVos = baseMapper.selectListAllVo(qw); + if (!sysFunctionVos.isEmpty()) { + for (SysFunctionVo sfv : sysFunctionVos) { + getChildrens(sfv); + } + } + s.setChildren(sysFunctionVos); + } + + public List listVo() { + return baseMapper.selectListVo(); + } + + public void saveOrUpdateDto(SysFunctionDto dto) { + SysFunction entity = new SysFunction(); + dto.fillEntity(entity); +// SysSourceFunction sysSourceFunction = new SysSourceFunction(); +// sysSourceFunction.setFunctionSid(entity.getSid()); +// sysSourceFunction.setSourceSid(dto.getSourceSid()); +// setRootSid(entity, sysSourceFunction); +// sysSourceFunctionService.save(sysSourceFunction); + this.saveOrUpdate(entity); + } + +// private void setRootSid(SysFunction entity, SysSourceFunction sysSourceFunction) { +// String pSid = entity.getParentSid(); +// if ("0".equals(pSid)) { +// sysSourceFunction.setFunctionRootSid(entity.getSid()); +// } else { +// SysFunction sysFunction = this.fetchBySid(pSid); +// String pSid1 = sysFunction.getParentSid(); +// if ("0".equals(pSid1)) { +// sysSourceFunction.setFunctionRootSid(sysFunction.getSid()); +// } +// setRootSid(sysFunction, sysSourceFunction); +// } +// } + + public SysFunctionVo fetchByIdVo(String id) { + SysFunction entity = this.fetchById(id); + SysFunctionVo vo = new SysFunctionVo(); + BeanUtil.copyProperties(entity, vo); + return vo; + } + + public List listAllByRoleSid(SysFunctionQuery query) { + List sysFunctionVos = baseMapper.listAllParentByRoleSid(query.getRoleSid(), "0"); + for (SysFunctionVo s : sysFunctionVos) { + getChildrensByRoleSid(s, query.getRoleSid()); + } + return sysFunctionVos; + } + + private void getChildrensByRoleSid(SysFunctionVo s, String roleSid) { + List sysFunctionVos = baseMapper.listAllParentByRoleSid(roleSid, s.getSid()); + if (!sysFunctionVos.isEmpty()) { + for (SysFunctionVo sfv : sysFunctionVos) { + getChildrensByRoleSid(sfv, roleSid); + } + } + s.setChildren(sysFunctionVos); + } + + public List listAllVoForSource(SysFunctionQuery query) { + String name = query.getName(); + List sysSourceVos = sysSourceService.listFunctionTreeVo(name); + for (SysFunctionTreeVo s : sysSourceVos) { +// List sysFunctionVoList = sysSourceFunctionService.fetchRootFunctionBySourceSid(s.getSourceSid()); +// for (SysFunctionTreeVo sysFunctionTreeVo : sysFunctionVoList) { +// if (StringUtils.isNotBlank(sysFunctionTreeVo.getRemarks())){ +// sysFunctionTreeVo.setName(sysFunctionTreeVo.getName() + "(" + sysFunctionTreeVo.getRemarks() + ")"); +// } +// } +// s.setChildren(sysFunctionVoList); + s.setIsSource("1"); + //判断该资源下的功能是否有可用的状态 + int isEnable = 1; + int count = baseMapper.selectBySourceSid(isEnable, s.getSourceSid()); + if (count == 0) { + s.setIsEnable("0"); + } else { + s.setIsEnable("1"); + } +// if (!sysFunctionVoList.isEmpty()) { +//// sysFunctionVoList = getChildrensForFunctionTree(sysFunctionVoList); +// getChildList(sysFunctionVoList); +// } + } + return sysSourceVos; + } + + public void getChildList(List list) { + list.forEach(str -> { + String sid = str.getSid(); + List listChildren = baseMapper.selectChildernList(sid); + str.setChildren(listChildren); + getChildList(listChildren); + }); + } + + private List getChildrensForFunctionTree(List sysFunctionVoList) { + List list = new ArrayList<>(); + for (SysFunctionTreeVo s : sysFunctionVoList) { + SysFunction sysFunction = fetchBySid(s.getFunctionRootSid()); + SysFunctionTreeVo sysFunctionTreeVo = new SysFunctionTreeVo(); + BeanUtil.copyProperties(sysFunction, sysFunctionTreeVo); + /*sysFunctionTreeVo.setParentName("顶级功能");*/ + list.add(sysFunctionTreeVo); + } + for (SysFunctionTreeVo s : list) { + getChildrensForFunctionTree(s, s.getSid()); + } + return list; + } + + private void getChildrensForFunctionTree(SysFunctionTreeVo s, String sid) { + QueryWrapper qw = new QueryWrapper<>(); + if (StringUtils.isNotBlank(sid)) { + qw.eq("func.parentSid", sid); + } + List sysMenuVos = baseMapper.getChildrensForFunctionTree(qw); + if (!sysMenuVos.isEmpty()) { + for (SysFunctionTreeVo smv : sysMenuVos) { + /*SysFunction sysFunction = fetchBySid(sid); + smv.setParentName(sysFunction.getName());*/ + getChildrensForFunctionTree(smv, smv.getSid()); + } + } + s.setChildren(sysMenuVos); + } + + public int updateBySourceSid(Integer isEnable, List sids) { + return baseMapper.updateBySourceSid(isEnable, sids); + } + + public List getButtonPermissions(ButtonPermissionQuery query) { + List buttonPermissions = baseMapper.getButtonPermissions(query); + return buttonPermissions; + } + + public List> getFunctionAuthorization(String roleSid) { + List> list = new ArrayList<>(); + List> lsources = baseMapper.getSourceAuthorization(roleSid); + lsources.forEach(f -> { + Map map = new HashMap<>(); + map.put("name", f.get("sourceName").toString()); + map.put("sid", f.get("sid").toString()); + map.put("checked", "1"); + list.add(map); + }); + + list.forEach(f -> { + List> list2 = new ArrayList<>(); + String sid = f.get("sid").toString(); + List> lmenus = baseMapper.getMenuAuthorization(sid); + lmenus.forEach(ff -> { + Map map = new HashMap<>(); + if (ff.get("pageUrl") != null && com.yxt.common.base.utils.StringUtils.isNotBlank(ff.get("pageUrl").toString())) { + String pageUrl = ff.get("pageUrl").toString(); + List> lfuncs = baseMapper.getFunctionAuthorization(pageUrl); + List> functionByRoleSid = baseMapper.getFunctionByRoleSid(pageUrl, roleSid); + if (lfuncs.size() > 0){ + map.put("name", ff.get("name")); + String sids = ff.get("sid").toString(); + map.put("sid", sids); + map.put("checked", "1"); + map.put("children", new ArrayList<>()); + for (Map lfunc : lfuncs) { + for (Map funByRole : functionByRoleSid) { + if (lfunc.get("sid").equals(funByRole.get("sid"))) { + lfunc.put("checked", "0"); + } + } + lfunc.put("children", new ArrayList<>()); + } + map.put("children", lfuncs); + list2.add(map); + } + } + }); + f.put("children", list2); + }); + return list; + } + + public List> getFunctionAuthorizationApp(String roleSid) { + List> list = new ArrayList<>(); + List> lsources = baseMapper.getSourceAuthorizationApp(roleSid); + lsources.forEach(f -> { + Map map = new HashMap<>(); + map.put("name", f.get("sourceName").toString()); + map.put("sid", f.get("sid").toString()); + map.put("checked", "1"); + list.add(map); + }); + + list.forEach(f -> { + List> list2 = new ArrayList<>(); + String sid = f.get("sid").toString(); + List> lmenus = baseMapper.getMenuAuthorization(sid); + lmenus.forEach(ff -> { + Map map = new HashMap<>(); + if (ff.get("pageUrl") != null && com.yxt.common.base.utils.StringUtils.isNotBlank(ff.get("pageUrl").toString())) { + String pageUrl = ff.get("pageUrl").toString(); + List> lfuncs = baseMapper.getFunctionAuthorization(pageUrl); + List> functionByRoleSid = baseMapper.getFunctionByRoleSid(pageUrl, roleSid); + if (lfuncs.size() > 0){ + map.put("name", ff.get("name")); + String sids = ff.get("sid").toString(); + map.put("sid", sids); + map.put("checked", "1"); + map.put("children", new ArrayList<>()); + for (Map lfunc : lfuncs) { + for (Map funByRole : functionByRoleSid) { + if (lfunc.get("sid").equals(funByRole.get("sid"))) { + lfunc.put("checked", "0"); + } + } + lfunc.put("children", new ArrayList<>()); + } + map.put("children", lfuncs); + list2.add(map); + } + } + }); + f.put("children", list2); + }); + return list; + } +} \ No newline at end of file diff --git a/src/main/java/com/yxt/user/biz/sysfunction/SysFunctionTreeVo.java b/src/main/java/com/yxt/user/biz/sysfunction/SysFunctionTreeVo.java new file mode 100644 index 0000000..6abe445 --- /dev/null +++ b/src/main/java/com/yxt/user/biz/sysfunction/SysFunctionTreeVo.java @@ -0,0 +1,50 @@ +package com.yxt.user.biz.sysfunction; + + +import com.yxt.common.core.vo.Vo; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.List; + +/** + * Project: anrui_portal(门户建设)
+ * File: SysFunctionTreeVo.java
+ * Description: 功能表 视图数据对象.
+ * Copyright: Copyright (c) 2011
+ * Company: https://gitee.com/liuzp315
+ * Makedate: 2021-08-03 00:24:28
+ * + * @author liupopo + * @version 1.0 + * @since 1.0 + */ +@ApiModel(value = "功能表 视图数据对象", description = "功能表 视图数据对象") +@Data +public class SysFunctionTreeVo implements Vo { + @ApiModelProperty("功能名称") + private String name; + @ApiModelProperty("资源sid") + private String sourceSid; + @ApiModelProperty("上级sid") + private String parentSid; + @ApiModelProperty("sid") + private String sid; + @ApiModelProperty("资源名称") + private String sourceName; + @ApiModelProperty("url地址") + private String actionUrl; + @ApiModelProperty("功能根路径sid") + private String functionRootSid; + @ApiModelProperty("子功能") + private List children; + @ApiModelProperty("是否可用") + private String isEnable; + @ApiModelProperty("功能列表用,是否是资源层级1是,0不是") + private String isSource = "0"; + @ApiModelProperty("父级名称") + private String parentName; + @ApiModelProperty("说明") + private String remarks; +} diff --git a/src/main/java/com/yxt/user/biz/sysfunction/SysFunctionVo.java b/src/main/java/com/yxt/user/biz/sysfunction/SysFunctionVo.java new file mode 100644 index 0000000..388c901 --- /dev/null +++ b/src/main/java/com/yxt/user/biz/sysfunction/SysFunctionVo.java @@ -0,0 +1,59 @@ +package com.yxt.user.biz.sysfunction; + + +import com.fasterxml.jackson.annotation.JsonProperty; +import com.yxt.common.core.vo.Vo; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.List; + +/** + * Project: anrui_portal(门户建设)
+ * File: SysFunctionVo.java
+ * Class: com.yxt.anrui.portal.api.sysfunction.SysFunctionVo
+ * Description: 功能 视图数据对象.
+ * Copyright: Copyright (c) 2011
+ * Company: https://gitee.com/liuzp315
+ * Makedate: 2021-08-03 00:24:28
+ * + * @author liupopo + * @version 1.0 + * @since 1.0 + */ +@ApiModel(value = "功能 视图数据对象", description = "功能 视图数据对象") +@Data +public class SysFunctionVo implements Vo { + @ApiModelProperty("功能名称") + private String name; + @ApiModelProperty("父级sid") + private String parentSid; + @ApiModelProperty("父级名称") + private String parentName; + @ApiModelProperty("接口地址") + private String actionUrl; + @ApiModelProperty("模块名称") + private String controllerName; + @ApiModelProperty("是否手机端权限0否,1是") + private String phoneFunction; + @ApiModelProperty("sid") + private String sid; + @ApiModelProperty("子集数据") + private List children; + @ApiModelProperty("是否选中 1未选中,0选中") + private String checked; + @ApiModelProperty("资源名称") + private String sourceName; + @ApiModelProperty("资源SId") + private String sourceSid; + @ApiModelProperty("是否可用") + private Integer isEnable; + @ApiModelProperty("移动端按钮id") + private String funId; + @ApiModelProperty("前端控制按钮的id") + @JsonProperty("cId") + private String cId; + @ApiModelProperty("说明") + private String remarks; +} diff --git a/src/main/java/com/yxt/user/biz/sysmenu/SysMenu.java b/src/main/java/com/yxt/user/biz/sysmenu/SysMenu.java new file mode 100644 index 0000000..37e394f --- /dev/null +++ b/src/main/java/com/yxt/user/biz/sysmenu/SysMenu.java @@ -0,0 +1,64 @@ +package com.yxt.user.biz.sysmenu; + +import com.baomidou.mybatisplus.annotation.TableName; +import com.yxt.common.core.domain.BaseEntity; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * Project: anrui_portal(门户建设)
+ * File: SysMenu.java
+ * Class: com.yxt.anrui.portal.api.sysmenu.SysMenu
+ * Description: 菜单表.
+ * Copyright: Copyright (c) 2011
+ * Company: https://gitee.com/liuzp315
+ * Makedate: 2021-08-03 00:24:28
+ * + * @author liupopo + * @version 1.0 + * @since 1.0 + */ +@ApiModel(value = "菜单表", description = "菜单表") +@TableName("sys_menu") +@Data +public class SysMenu extends BaseEntity { + private static final long serialVersionUID = 1L; + + + @ApiModelProperty("菜单名称") + private String name; + + @ApiModelProperty("菜单路由路径(VUE)") + private String menuUrl; + + @ApiModelProperty("菜单对应的前端页面路径") + private String pageUrl; + + @ApiModelProperty("菜单图标地址") + private String iconUrl; + + @ApiModelProperty("资源sid") + private String sourceSid; + + @ApiModelProperty("是否显示,默认为1显示,0为不显示") + private String isShow; + + @ApiModelProperty("排序号") + private Integer sortNo; + + @ApiModelProperty("上级sid") + private String pSid; + + @ApiModelProperty("前端页面路径重定向") + private Integer pageUrlRedirect; + + @ApiModelProperty("前端页面名称(vue组件名)") + private String pageName; + + @ApiModelProperty("前端页面别名") + private String pageAliasName; + + @ApiModelProperty("菜单类型(0左侧当行菜单,1页面中功能)") + private String menuType; +} diff --git a/src/main/java/com/yxt/user/biz/sysmenu/SysMenuDto.java b/src/main/java/com/yxt/user/biz/sysmenu/SysMenuDto.java new file mode 100644 index 0000000..242b9ed --- /dev/null +++ b/src/main/java/com/yxt/user/biz/sysmenu/SysMenuDto.java @@ -0,0 +1,72 @@ +package com.yxt.user.biz.sysmenu; + + +import com.yxt.common.core.dto.Dto; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotBlank; + +/** + * Project: anrui_portal(门户建设)
+ * File: SysMenuDto.java
+ * Class: com.yxt.anrui.portal.api.sysmenu.SysMenuDto
+ * Description: 菜单表 数据传输对象.
+ * Copyright: Copyright (c) 2011
+ * Company: https://gitee.com/liuzp315
+ * Makedate: 2021-08-03 00:24:28
+ * + * @author liupopo + * @version 1.0 + * @since 1.0 + */ +@ApiModel(value = "菜单表 数据传输对象", description = "菜单表 数据传输对象") +@Data +public class SysMenuDto implements Dto { + + + private static final long serialVersionUID = -8143707488992909267L; + @ApiModelProperty(value = "菜单名称", required = true) + @NotBlank(message = "菜单名称不能为空") + private String name; + + @ApiModelProperty("菜单路由路径(VUE)") + private String menuUrl; + + @ApiModelProperty("菜单对应的前端页面路径") + private String pageUrl; + + @ApiModelProperty("菜单图标地址") + private String iconUrl; + + @ApiModelProperty(value = "资源sid", required = true) + @NotBlank(message = "资源不能为空") + private String sourceSid; + + @ApiModelProperty(value = "是否显示,默认为1显示,0为不显示", required = true) + @NotBlank(message = "是否显示不能为空") + private String isShow; + + @ApiModelProperty("排序号") + private Integer sortNo; + + @ApiModelProperty(value = "上级sid", example = "0", required = true) + @NotBlank(message = "上级菜单不能为空") + private String pSid; + + @ApiModelProperty(value = "前端页面路径重定向", required = false) + private Integer pageUrlRedirect; + + @ApiModelProperty("前端页面名称(vue组件名)") + private String pageName; + + @ApiModelProperty(value = "前端页面别名", required = false) + private String pageAliasName; + + @ApiModelProperty("菜单类型(0左侧当行菜单,1页面中功能)") + private String menuType; + + @ApiModelProperty(value = "备注") + private String remarks; +} \ No newline at end of file diff --git a/src/main/java/com/yxt/user/biz/sysmenu/SysMenuFunctionQuery.java b/src/main/java/com/yxt/user/biz/sysmenu/SysMenuFunctionQuery.java new file mode 100644 index 0000000..14488cc --- /dev/null +++ b/src/main/java/com/yxt/user/biz/sysmenu/SysMenuFunctionQuery.java @@ -0,0 +1,30 @@ +package com.yxt.user.biz.sysmenu; + + +import com.yxt.common.core.query.Query; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * Project: anrui_portal(门户建设)
+ * File: SysMenuQuery.java
+ * Class: com.yxt.anrui.portal.api.sysmenu.SysMenuQuery
+ * Description: 菜单表 查询条件.
+ * Copyright: Copyright (c) 2011
+ * Company: https://gitee.com/liuzp315
+ * Makedate: 2021-08-03 00:24:28
+ * + * @author liupopo + * @version 1.0 + * @since 1.0 + */ +@ApiModel(value = "菜单表 查询条件 功能菜单设置查询用", description = "菜单表 查询条件 功能菜单设置查询用") +@Data +public class SysMenuFunctionQuery implements Query { + + + @ApiModelProperty("资源sid") + private String sourceSid; + +} diff --git a/src/main/java/com/yxt/user/biz/sysmenu/SysMenuMapper.java b/src/main/java/com/yxt/user/biz/sysmenu/SysMenuMapper.java new file mode 100644 index 0000000..e0e1aee --- /dev/null +++ b/src/main/java/com/yxt/user/biz/sysmenu/SysMenuMapper.java @@ -0,0 +1,82 @@ +package com.yxt.user.biz.sysmenu; + +import com.baomidou.mybatisplus.core.conditions.Wrapper; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.core.toolkit.Constants; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; + +import java.util.List; + +/** + * Project: anrui_portal(门户建设)
+ * File: SysMenuMapper.java
+ * Class: com.yxt.anrui.portal.biz.sysmenu.SysMenuMapper
+ * Description: 菜单表.
+ * Copyright: Copyright (c) 2011
+ * Company: https://gitee.com/liuzp315
+ * Makedate: 2021-08-03 00:24:28
+ * + * @author liupopo + * @version 1.0 + * @since 1.0 + */ +@Mapper +public interface SysMenuMapper extends BaseMapper { + + //@Update("update sys_menu set name=#{msg} where id=#{id}") + //IPage voPage(IPage page, @Param(Constants.WRAPPER) QueryWrapper qw); + + IPage selectPageVo(IPage page, @Param(Constants.WRAPPER) Wrapper qw); + + List selectListAllVo(@Param(Constants.WRAPPER) Wrapper qw); + + @Select("select * from sys_menu") + List selectListVo(); + + List listAllParentByRoleSid(String roleSid, String sid, @Param("sourceSid") String sourceSid); + + @Select("SELECT menu.*,sourceMenu.`sourceSid` FROM sys_menu menu " + + "LEFT JOIN sys_source_menu sourceMenu ON menu.sid=sourceMenu.menuSid where menu.sid=#{sid}") + SysMenu fetchBySid(@Param("sid") String sid); + + List getChildrensForMenuTree(@Param(Constants.WRAPPER) QueryWrapper qw); + + /** + * 将该资源下的所有菜单设置是否可用 + * + * @param sid 资源sid + * @param isEnable 是否可用:1可用,0不可用 + * @return + */ + int updateBySourceSid(@Param("sid") String sid, @Param("isEnable") Integer isEnable); + + /** + * 根据上级sid查询菜单的子集菜单 + * + * @param sid 菜单sid + * @return + */ + List selectChildernList(String sid); + + /** + * 查询该资源下是否有可用的菜单 + * + * @param isEnable + * @return + */ + int selectBySourceSid(@Param("isEnable") int isEnable, @Param("sourceSid") String sourceSid); + + List selectByMenuUrl(String menuUrl); + + /** + * 查询该资源下一级菜单列表 + * + * @param sourceSid 资源sid + * @return + */ + List fetchRootMenuBySourceSid(@Param("sourceSid") String sourceSid); +} \ No newline at end of file diff --git a/src/main/java/com/yxt/user/biz/sysmenu/SysMenuMapper.xml b/src/main/java/com/yxt/user/biz/sysmenu/SysMenuMapper.xml new file mode 100644 index 0000000..e6f5d8b --- /dev/null +++ b/src/main/java/com/yxt/user/biz/sysmenu/SysMenuMapper.xml @@ -0,0 +1,88 @@ + + + + + + + + + + + + update sys_menu + set isEnable = #{isEnable} + where sourceSid = #{sid} + + + + + + + + + + \ No newline at end of file diff --git a/src/main/java/com/yxt/user/biz/sysmenu/SysMenuQuery.java b/src/main/java/com/yxt/user/biz/sysmenu/SysMenuQuery.java new file mode 100644 index 0000000..9f69aeb --- /dev/null +++ b/src/main/java/com/yxt/user/biz/sysmenu/SysMenuQuery.java @@ -0,0 +1,66 @@ +package com.yxt.user.biz.sysmenu; + + +import com.yxt.common.core.query.Query; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * Project: anrui_portal(门户建设)
+ * File: SysMenuQuery.java
+ * Class: com.yxt.anrui.portal.api.sysmenu.SysMenuQuery
+ * Description: 菜单表 查询条件.
+ * Copyright: Copyright (c) 2011
+ * Company: https://gitee.com/liuzp315
+ * Makedate: 2021-08-03 00:24:28
+ * + * @author liupopo + * @version 1.0 + * @since 1.0 + */ +@ApiModel(value = "菜单表 查询条件", description = "菜单表 查询条件") +@Data +public class SysMenuQuery implements Query { + + + @ApiModelProperty("菜单名称") + private String name; + + @ApiModelProperty("菜单路由路径(VUE)") + private String menuUrl; + + @ApiModelProperty("菜单对应的前端页面路径") + private String pageUrl; + + @ApiModelProperty("菜单图标地址") + private String iconUrl; + + @ApiModelProperty("资源sid") + private String sourceSid; + @ApiModelProperty("用户sid") + private String userSid; + @ApiModelProperty("角色sid") + private String roleSid; + + @ApiModelProperty("是否显示,默认为1显示,0为不显示") + private String isShow; + + @ApiModelProperty("排序号") + private Integer sortNo; + + @ApiModelProperty("上级sid") + private String pSid; + + @ApiModelProperty("前端页面路径重定向") + private Integer pageUrlRedirect; + + @ApiModelProperty("前端页面名称(vue组件名)") + private String pageName; + + @ApiModelProperty("前端页面别名") + private String pageAliasName; + + @ApiModelProperty("菜单类型(0左侧当行菜单,1页面中功能)") + private String menuType; +} diff --git a/src/main/java/com/yxt/user/biz/sysmenu/SysMenuService.java b/src/main/java/com/yxt/user/biz/sysmenu/SysMenuService.java new file mode 100644 index 0000000..f40b5ba --- /dev/null +++ b/src/main/java/com/yxt/user/biz/sysmenu/SysMenuService.java @@ -0,0 +1,424 @@ +package com.yxt.user.biz.sysmenu; + +import cn.hutool.core.bean.BeanUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.yxt.user.biz.sysmenu.*; +import com.yxt.user.biz.syssource.SysSourceService; +import com.yxt.common.base.service.MybatisBaseService; +import com.yxt.common.base.utils.PagerUtil; +import com.yxt.common.core.query.PagerQuery; +import com.yxt.common.core.vo.PagerVo; +import org.apache.commons.lang3.StringUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; + +/** + * Project: anrui_portal(门户建设)
+ * File: SysMenuService.java
+ * Class: com.yxt.user.biz.sysmenu.SysMenuService
+ * Description: 菜单表 业务逻辑.
+ * Copyright: Copyright (c) 2011
+ * Company: https://gitee.com/liuzp315
+ * Makedate: 2021-08-03 00:24:28
+ * + * @author liupopo + * @version 1.0 + * @since 1.0 + */ +@Service +public class SysMenuService extends MybatisBaseService { +// @Autowired +// private SysSourceMenuService sysSourceMenuService; + @Autowired + private SysMenuService sysMenuService; + @Autowired + private SysSourceService sysSourceService; + + public PagerVo listPage(PagerQuery pq) { + SysMenuQuery query = pq.getParams(); + QueryWrapper qw = createQueryWrapper(query); + IPage page = PagerUtil.queryToPage(pq); + IPage pagging = baseMapper.selectPage(page, qw); + PagerVo p = PagerUtil.pageToVo(pagging, null); + return p; + } + + @Override + public SysMenu fetchBySid(String sid) { + return baseMapper.fetchBySid(sid); + } + + public List listAll(SysMenuQuery query) { + QueryWrapper qw = createQueryWrapper(query); + return baseMapper.selectList(qw); + } + + private QueryWrapper createQueryWrapper(SysMenuQuery query) { + // 多字段Like示例:qw.and(wrapper -> wrapper.like("name", query.getName()).or().like("remark", query.getName())); + QueryWrapper qw = new QueryWrapper<>(); + if (StringUtils.isNotBlank(query.getName())) { + qw.eq("name", query.getName()); + } + if (StringUtils.isNotBlank(query.getMenuUrl())) { + qw.eq("menuUrl", query.getMenuUrl()); + } + if (StringUtils.isNotBlank(query.getPageUrl())) { + qw.eq("pageUrl", query.getPageUrl()); + } + if (StringUtils.isNotBlank(query.getIconUrl())) { + qw.eq("iconUrl", query.getIconUrl()); + } + if (query.getSourceSid() != null) { + qw.eq("sourceSid", query.getSourceSid()); + } + if (StringUtils.isNotBlank(query.getIsShow())) { + qw.eq("isShow", query.getIsShow()); + } + + if (query.getSortNo() != null) { + qw.eq("sortNo", query.getSortNo()); + } + + if (StringUtils.isNotBlank(query.getPSid())) { + qw.eq("pSid", query.getPSid()); + } + + if (query.getPageUrlRedirect() != null) { + qw.eq("pageUrlRedirect", query.getPageUrlRedirect()); + } + + if (StringUtils.isNotBlank(query.getPageName())) { + qw.eq("pageName", query.getPageName()); + } + + if (StringUtils.isNotBlank(query.getPageAliasName())) { + qw.eq("pageAliasName", query.getPageAliasName()); + } + + if (StringUtils.isNotBlank(query.getMenuType())) { + qw.eq("menuType", query.getMenuType()); + } + return qw; + } + + public PagerVo listPageVo(PagerQuery pq) { + SysMenuQuery query = pq.getParams(); + QueryWrapper qw = createQueryWrapper(query); + IPage page = PagerUtil.queryToPage(pq); + IPage pagging = baseMapper.selectPageVo(page, qw); + PagerVo p = PagerUtil.pageToVo(pagging, null); + return p; + } + + /* public List listAllVo(SysMenuQuery query) { + QueryWrapper qw = new QueryWrapper<>(); + qw.eq("menu.pSid", "0"); + List sysMenuVos = baseMapper.selectListAllVo(qw); + for(SysMenuVo s:sysMenuVos){ + getChildrens(s); + } + return sysMenuVos; + }*/ + public List listAllVoForSource(SysMenuQuery query) { + //查询所有的资源列表 + List sysSourceVos = sysSourceService.listMenuTreeVo(); + for (SysMenuTreeVo s : sysSourceVos) { + //根据资源sid查询该资源下的所有一级菜单 + //List sysMenuVoList = sysSourceMenuService.fetchRootMenuBySourceSid(s.getSourceSid()); + List sysMenuVoList = sysMenuService.fetchRootMenuBySourceSid(s.getSourceSid()); + s.setChildren(sysMenuVoList); + s.setIsSource("1"); + //判断该资源下的菜单是否有可用的状态 + int isEnable = 1; + int count = baseMapper.selectBySourceSid(isEnable, s.getSourceSid()); + if (count == 0) { + s.setIsEnable("0"); + } else { + s.setIsEnable("1"); + } + if (!sysMenuVoList.isEmpty()) { +// sysMenuVoList = getChildrensForMenuTree(sysMenuVoList); + getChildList(sysMenuVoList); + } + } + return sysSourceVos; + } + + public void getChildList(List list) { + list.forEach(str -> { + String sid = str.getSid(); + List listChildren = baseMapper.selectChildernList(sid); + str.setChildren(listChildren); + getChildList(listChildren); + }); + } + + /*暂时废弃*/ + /*private List getChildrensForMenuTree(List sysMenuVoList) { + List list = new ArrayList<>(); + for (SysMenuTreeVo s : sysMenuVoList) { + SysMenu sysMenu = sysMenuService.fetchBySid(s.getMenuRootSid()); + SysMenuTreeVo sysMenuTreeVo = new SysMenuTreeVo(); + BeanUtil.copyProperties(sysMenu, sysMenuTreeVo); + list.add(sysMenuTreeVo); + } + for (SysMenuTreeVo s : list) { + getChildrensForMenuTree(s, s.getSid()); + } + return list; + } + private void getChildrensForMenuTree(SysMenuTreeVo s,String sid){ + QueryWrapper qw = new QueryWrapper<>(); + if (StringUtils.isNotBlank(sid)) { + qw.eq("menu.pSid", sid); + } + List sysMenuVos = baseMapper.getChildrensForMenuTree(qw); + if(!sysMenuVos.isEmpty()){ + for(SysMenuTreeVo smv:sysMenuVos){ + getChildrensForMenuTree(smv,smv.getSid()); + } + } + s.setChildren(sysMenuVos); + } + private void getChildrens(SysMenuVo s){ + String sid = s.getSid(); + QueryWrapper qw = new QueryWrapper<>(); + if (StringUtils.isNotBlank(sid)) { + qw.eq("menu.pSid", sid); + } + List sysMenuVos = baseMapper.selectListAllVo(qw); + if(!sysMenuVos.isEmpty()){ + for(SysMenuVo smv:sysMenuVos){ + getChildrens(smv); + } + } + s.setChildren(sysMenuVos); + }*/ + public List listVo() { + return baseMapper.selectListVo(); + } + + /* public void saveOrUpdateDto(SysMenuDto dto) { + SysMenu entity = new SysMenu(); + dto.fillEntity(entity); + SysSourceMenu sysSourceMenu = new SysSourceMenu(); + sysSourceMenu.setMenuSid(entity.getSid()); + sysSourceMenu.setSourceSid(dto.getSourceSid()); + setRootSid(entity, sysSourceMenu); + sysSourceMenuService.save(sysSourceMenu); + this.saveOrUpdate(entity); + }*/ + +// private void setRootSid(SysMenu entity, SysSourceMenu sysSourceMenu) { +// String pSid = entity.getPSid(); +// if ("0".equals(pSid)) { +// sysSourceMenu.setMenuRootSid(entity.getSid()); +// } else { +// SysMenu sysMenu = sysMenuService.fetchBySid(pSid); +// String pSid1 = sysMenu.getPSid(); +// if ("0".equals(pSid1)) { +// sysSourceMenu.setMenuRootSid(sysMenu.getSid()); +// } +// setRootSid(sysMenu, sysSourceMenu); +// } +// } + + public SysMenuVo fetchByIdVo(String id) { + SysMenu entity = this.fetchById(id); + SysMenuVo vo = new SysMenuVo(); + BeanUtil.copyProperties(entity, vo); + return vo; + } + + public List listAllByRoleSid(SysMenuQuery query) { + + List sysMenuVos = baseMapper.listAllParentByRoleSid(query.getRoleSid(), "0", query.getSourceSid()); + for (SysMenuVo s : sysMenuVos) { + getChildrensByRoleSid(s, query.getRoleSid(), query.getSourceSid()); + } + return sysMenuVos; + } + + private void getChildrensByRoleSid(SysMenuVo s, String roleSid, String sourceSid) { + String sid = s.getSid(); + List sysMenuVos = baseMapper.listAllParentByRoleSid(roleSid, sid, sourceSid); + if (!sysMenuVos.isEmpty()) { + for (SysMenuVo smv : sysMenuVos) { + getChildrensByRoleSid(smv, roleSid, sourceSid); + } + } + s.setChildren(sysMenuVos); + } + + /*public List listAllVoBySourceSId(SysMenuQuery query) { + SysSource sysSource = sysSourceService.fetchBySid(query.getSourceSid()); + List sysSourceVos = new ArrayList<>();//sysSourceService.listAllVoBySourceSId(query.getSourceSid()); + SysMenuTreeVo smtv=new SysMenuTreeVo(); + smtv.setName(sysSource.getSourceName()); + smtv.setSid(sysSource.getSid()); + smtv.setSourceSid(sysSource.getSid()); + sysSourceVos.add(smtv); + for(SysMenuTreeVo s:sysSourceVos){ + List sysMenuVoList=sysSourceMenuService.fetchRootMenuBySourceSid(s.getSourceSid()); + if(!sysMenuVoList.isEmpty()){ + sysMenuVoList = getChildrensForMenuTree(sysMenuVoList); + } + s.setChildren(sysMenuVoList); + } + return sysSourceVos; + }*/ + + /** + * 资源菜单树形列表 + * + * @return 资源菜单树形列表(第一级一级菜单 第二级二级菜单) + */ +// public List> getSourceMenuTree(List list_menu, Map map_selectMenus) { +// +// //获取当前资源的菜单列表 +// List> list_menus_map = new ArrayList>(); +// +// +// //获取资源第一级菜单列表 +// List list_firstLevel_menu = list_menu.stream().filter(s -> s.getPSid().equals("0")).collect(Collectors.toList()); +// +// //遍历资源的第一级菜单 +// for (int i = 0; i < list_firstLevel_menu.size(); i++) { +// Map map_firstLevel_menu = getMenuTreeFromStream(list_firstLevel_menu.get(i).getSid(), list_menu, map_selectMenus); +// //把该菜单挂在当前菜单列表中 +// if (null != map_firstLevel_menu) +// list_menus_map.add(map_firstLevel_menu); +// } +// return list_menus_map; +// +// } + + /** + * 递归把list转换成菜单树形列表 + * + * @param psid + * @param list_menu + * @return + */ +// private Map getMenuTreeFromStream(String psid, List list_menu, Map map_selectMenus) { +// //获取当前菜单 +// List list_current_menu = list_menu.stream().filter(s -> s.getSid().equals(psid)).collect(Collectors.toList()); +// if (null == list_current_menu || 0 == list_current_menu.size()) +// return null; +// +// Map map_menu = getMenuMap(list_current_menu.get(0), map_selectMenus); +// +// //2.获取菜单的子菜单列表 +// //存储最终子菜单列表结果 +// List> list_child = new ArrayList>(); +// +// //获取子菜单列表 +// List list_child_menu = list_menu.stream().filter(s -> s.getPSid().equals(psid)).collect(Collectors.toList()); +// for (int i = 0; i < list_child_menu.size(); i++) { +// //获取该菜单子菜单列表 +// Map map_child_menu = getMenuTreeFromStream(list_child_menu.get(i).getSid(), list_menu, map_selectMenus); +// //把该菜单挂在当前菜单列表中 +// if (null != map_child_menu) +// list_child.add(map_child_menu); +// } +// //把该菜单列表放到父菜单的childMenus中 +// map_menu.put("children", list_child); +// +// return map_menu; +// +// } + + /** + * 构造菜单的结果map + * + * @return + */ +// private Map getMenuMap(SysMenuRoleVo menuVo, Map map_selectMenus) { +// Map map_menu = new HashMap(); +// +// if (null != map_selectMenus) { +// //角色授权时,菜单列表 +// map_menu.put("sid", menuVo.getSid()); +// map_menu.put("menuName", menuVo.getMenuName() + (StringUtils.isNotBlank(menuVo.getRemarks()) ? "(" + menuVo.getRemarks() + ")" : "")); +// map_menu.put("menuUrl", menuVo.getMenuUrl()); +// map_menu.put("pageUrl", menuVo.getPageUrl()); +// map_menu.put("iconUrl", menuVo.getIconUrl()); +// map_menu.put("isShow", menuVo.getIsShow()); +// if (menuVo.getAlwaysShow() == 0) { +// map_menu.put("alwaysShow", false); +// } else if (menuVo.getAlwaysShow() == 1) { +// map_menu.put("alwaysShow", true); +// } +// +// //如果角色已有的菜单,则设置选中,并移除map中的项;否则设置不选中 +// if (map_selectMenus.containsKey(menuVo.getSid())) { +// map_menu.put("isCheck", 1); +// map_selectMenus.remove(menuVo.getSid()); +// } else { +// map_menu.put("isCheck", 0); +// } +// } else { +// //左侧菜单列表 +// Map map_meta = new HashMap(); +// map_meta.put("title", menuVo.getMenuName()); +// map_meta.put("icon", menuVo.getIconUrl()); +// map_menu.put("meta", map_meta); +// +// map_menu.put("redirect", menuVo.getPageUrlRedirect()); +// //路径 +// map_menu.put("path", menuVo.getPageUrl() != null && !menuVo.getPageUrl().equals("") ? menuVo.getPageUrl() : "/" + menuVo.getPageName()); +// map_menu.put("name", menuVo.getPageAliasName() != null && !menuVo.getPageAliasName().equals("") ? menuVo.getPageAliasName() : menuVo.getPageUrl()); +// //组件名 +// map_menu.put("component", menuVo.getPageName()); +// if (menuVo.getAlwaysShow() == 0) { +// map_menu.put("alwaysShow", false); +// } else if (menuVo.getAlwaysShow() == 1) { +// map_menu.put("alwaysShow", true); +// } +// } +// return map_menu; +// } + + /** + * 将该资源下的所有菜单设置为是否可用 + * + * @param sid 资源sid + * @param isEnable 是否可用:1可用,0不可用 + * @return + */ + public int updateBySourceSid(String sid, Integer isEnable) { + return baseMapper.updateBySourceSid(sid, isEnable); + } + + public void saveMenu(SysMenuDto dto) { + SysMenu entity = new SysMenu(); + dto.fillEntity(entity); +// SysSourceMenu sysSourceMenu = new SysSourceMenu(); +// sysSourceMenu.setMenuSid(entity.getSid()); +// sysSourceMenu.setSourceSid(dto.getSourceSid()); +// setRootSid(entity, sysSourceMenu); +// sysSourceMenuService.save(sysSourceMenu); + save(entity); + } + + public List selectByMenuUrl(String menuUrl) { + return baseMapper.selectByMenuUrl(menuUrl); + } + + /** + * 根据资源sid查询该资源下的一级菜单列表(yxt_mtl 2024-01-31) + * + * @param sid 资源sid + * @return + */ + public List fetchRootMenuBySourceSid(String sid) { + return baseMapper.fetchRootMenuBySourceSid(sid); + } +} \ No newline at end of file diff --git a/src/main/java/com/yxt/user/biz/sysmenu/SysMenuTreeVo.java b/src/main/java/com/yxt/user/biz/sysmenu/SysMenuTreeVo.java new file mode 100644 index 0000000..6a24e7f --- /dev/null +++ b/src/main/java/com/yxt/user/biz/sysmenu/SysMenuTreeVo.java @@ -0,0 +1,59 @@ +package com.yxt.user.biz.sysmenu; + + +import com.yxt.common.core.vo.Vo; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.List; + +/** + * Project: anrui_portal(门户建设)
+ * File: SysMenuVo.java
+ * Class: com.yxt.anrui.portal.api.sysmenu.SysMenuVo
+ * Description: 菜单表 视图数据对象.
+ * Copyright: Copyright (c) 2011
+ * Company: https://gitee.com/liuzp315
+ * Makedate: 2021-08-03 00:24:28
+ * + * @author liupopo + * @version 1.0 + * @since 1.0 + */ +@ApiModel(value = "菜单表 视图数据对象", description = "菜单表 视图数据对象") +@Data +public class SysMenuTreeVo implements Vo { + @ApiModelProperty("菜单名称") + private String name; + @ApiModelProperty("资源sid") + private String sourceSid; + @ApiModelProperty("排序号") + private Integer sortNo; + @ApiModelProperty("上级sid") + private String pSid; + @ApiModelProperty("上级菜单名称") + private String pName; + @ApiModelProperty("sid") + private String sid; + @ApiModelProperty("资源名称") + private String sourceName; + @ApiModelProperty("菜单根路径sid") + private String menuRootSid; + @ApiModelProperty("pageUrl") + private String pageUrl; + @ApiModelProperty("menuUrl") + private String menuUrl; + @ApiModelProperty("menuUrl") + private String pageName; + @ApiModelProperty("iconUrl") + private String iconUrl; + @ApiModelProperty("菜单列表用,是否是资源层级1是,0不是") + private String isSource = "0"; + @ApiModelProperty("是否可用") + private String isEnable; + @ApiModelProperty(value = "备注") + private String remarks; + @ApiModelProperty("子菜单") + private List children; +} diff --git a/src/main/java/com/yxt/user/biz/sysmenu/SysMenuVo.java b/src/main/java/com/yxt/user/biz/sysmenu/SysMenuVo.java new file mode 100644 index 0000000..a6e18b0 --- /dev/null +++ b/src/main/java/com/yxt/user/biz/sysmenu/SysMenuVo.java @@ -0,0 +1,74 @@ +package com.yxt.user.biz.sysmenu; + + +import com.yxt.common.core.vo.Vo; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.List; + +/** + * Project: anrui_portal(门户建设)
+ * File: SysMenuVo.java
+ * Class: com.yxt.anrui.portal.api.sysmenu.SysMenuVo
+ * Description: 菜单表 视图数据对象.
+ * Copyright: Copyright (c) 2011
+ * Company: https://gitee.com/liuzp315
+ * Makedate: 2021-08-03 00:24:28
+ * + * @author liupopo + * @version 1.0 + * @since 1.0 + */ +@ApiModel(value = "菜单表 视图数据对象", description = "菜单表 视图数据对象") +@Data +public class SysMenuVo implements Vo { + + + @ApiModelProperty("菜单名称") + private String name; + + @ApiModelProperty("菜单路由路径(VUE)") + private String menuUrl; + + @ApiModelProperty("菜单对应的前端页面路径") + private String pageUrl; + + @ApiModelProperty("菜单图标地址") + private String iconUrl; + + @ApiModelProperty("资源sid") + private String sourceSid; + + @ApiModelProperty("是否显示,默认为1显示,0为不显示") + private String isShow; + + @ApiModelProperty("排序号") + private Integer sortNo; + + @ApiModelProperty("上级sid") + private String pSid; + @ApiModelProperty("上级名称") + private String pName; + @ApiModelProperty("sid") + private String sid; + + @ApiModelProperty("前端页面路径重定向") + private Integer pageUrlRedirect; + + @ApiModelProperty("前端页面名称(vue组件名)") + private String pageName; + + @ApiModelProperty("前端页面别名") + private String pageAliasName; + + @ApiModelProperty("菜单类型(0左侧当行菜单,1页面中功能)") + private String menuType; + @ApiModelProperty("子菜单") + private List children; + @ApiModelProperty("是否选中,1:未选中,0:选中") + private String checked; + @ApiModelProperty("资源名称") + private String sourceName; +} diff --git a/src/main/java/com/yxt/user/biz/sysorganization/AppContactSysOrganizationVo.java b/src/main/java/com/yxt/user/biz/sysorganization/AppContactSysOrganizationVo.java new file mode 100644 index 0000000..d4efdf4 --- /dev/null +++ b/src/main/java/com/yxt/user/biz/sysorganization/AppContactSysOrganizationVo.java @@ -0,0 +1,40 @@ +package com.yxt.user.biz.sysorganization; + +import com.yxt.common.core.vo.Vo; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * @Description + * @Author liuguohui + * @Date 2021/9/24 + */ +@ApiModel(value = "App通讯录组织架构") +@Data +public class AppContactSysOrganizationVo implements Vo { + + @ApiModelProperty("部门/组织sid") + private String sid; + + @ApiModelProperty("部门/组织名称|员工姓名") + private String name; + + @ApiModelProperty("员工数量") + private int staffNum; + + @ApiModelProperty("跳转类型:1、部门2、员工列表") + private Integer type; + + @ApiModelProperty("员工电话") + private String mobile; + + @ApiModelProperty("员工头像") + private String headImage; + + @ApiModelProperty("员工所在部门名称(路径)") + private String orgNamePath; + + @ApiModelProperty("员工职位") + private String position; +} diff --git a/src/main/java/com/yxt/user/biz/sysorganization/QrCodeVo.java b/src/main/java/com/yxt/user/biz/sysorganization/QrCodeVo.java new file mode 100644 index 0000000..7407c84 --- /dev/null +++ b/src/main/java/com/yxt/user/biz/sysorganization/QrCodeVo.java @@ -0,0 +1,23 @@ +package com.yxt.user.biz.sysorganization; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * @author dimengzhe + * @date 2020/11/3 16:19 + * @description + */ +@Data +public class QrCodeVo { + @ApiModelProperty("部门名称") + private String departmentName; + @ApiModelProperty("单位名称") + private String organizationName; + @ApiModelProperty("部门地址") + private String address; + @ApiModelProperty("二维码图片地址") + private String qrFilePath; + @ApiModelProperty(value = "部门sid") + private String sid; +} diff --git a/src/main/java/com/yxt/user/biz/sysorganization/SysOrgListVo.java b/src/main/java/com/yxt/user/biz/sysorganization/SysOrgListVo.java new file mode 100644 index 0000000..8b8d451 --- /dev/null +++ b/src/main/java/com/yxt/user/biz/sysorganization/SysOrgListVo.java @@ -0,0 +1,29 @@ +package com.yxt.user.biz.sysorganization; + +import com.yxt.common.core.vo.Vo; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.List; + +/** + * @Author dimengzhe + * @Date 2022/2/14 11:45 + * @Description 员工所在部门下拉列表 + */ +@Data +public class SysOrgListVo implements Vo { + private static final long serialVersionUID = -3558876605554852892L; + + @ApiModelProperty(value = "组织名称") + private String name; + @ApiModelProperty(value = "部门编码") + private String orgCode; + @ApiModelProperty(value = "sid") + private String sid; + @ApiModelProperty(value = "上级sid") + private String psid; + @ApiModelProperty(value = "orgSidPath") + private String orgSidPath; + private List children; +} diff --git a/src/main/java/com/yxt/user/biz/sysorganization/SysOrgStaffVo.java b/src/main/java/com/yxt/user/biz/sysorganization/SysOrgStaffVo.java new file mode 100644 index 0000000..8e38002 --- /dev/null +++ b/src/main/java/com/yxt/user/biz/sysorganization/SysOrgStaffVo.java @@ -0,0 +1,17 @@ +package com.yxt.user.biz.sysorganization; + +import com.yxt.common.core.vo.Vo; +import lombok.Data; + +/** + * @Author dimengzhe + * @Date 2022/9/26 11:48 + * @Description + */ +@Data +public class SysOrgStaffVo implements Vo { + private static final long serialVersionUID = -4311553944345419092L; + + private String staffName; + private String staffSid; +} diff --git a/src/main/java/com/yxt/user/biz/sysorganization/SysOrgVo.java b/src/main/java/com/yxt/user/biz/sysorganization/SysOrgVo.java new file mode 100644 index 0000000..5a0b0bf --- /dev/null +++ b/src/main/java/com/yxt/user/biz/sysorganization/SysOrgVo.java @@ -0,0 +1,31 @@ +package com.yxt.user.biz.sysorganization; + +import com.yxt.common.core.vo.Vo; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.List; + +/** + * @author dimengzhe + * @date 2021/10/12 20:55 + * @description + */ +@Data +public class SysOrgVo implements Vo { + private static final long serialVersionUID = 2983637708030419942L; + @ApiModelProperty(value = "组织名称") + private String name; + @ApiModelProperty(value = "sid") + private String sid; + @ApiModelProperty(value = "psid") + private String psid; + @ApiModelProperty(value = "id") + private String id; + @ApiModelProperty(value = "orgSidPath") + private String orgSidPath; + @ApiModelProperty(value = "部门编码") + private String orgCode; + + private List children; +} diff --git a/src/main/java/com/yxt/user/biz/sysorganization/SysOrganization.java b/src/main/java/com/yxt/user/biz/sysorganization/SysOrganization.java new file mode 100644 index 0000000..1764736 --- /dev/null +++ b/src/main/java/com/yxt/user/biz/sysorganization/SysOrganization.java @@ -0,0 +1,87 @@ +package com.yxt.user.biz.sysorganization; + +import com.baomidou.mybatisplus.annotation.TableName; +import com.yxt.common.core.domain.BaseEntity; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * Project: anrui_portal(门户建设)
+ * File: SysOrganization.java
+ * Class: SysOrganization
+ * Description: 组织机构表.
+ * Copyright: Copyright (c) 2011
+ * Company: https://gitee.com/liuzp315
+ * Makedate: 2021-08-03 00:24:28
+ * + * @author liupopo + * @version 1.0 + * @since 1.0 + */ +@ApiModel(value = "组织机构表", description = "组织机构表") +@TableName("sys_organization") +@Data +public class SysOrganization extends BaseEntity { + private static final long serialVersionUID = 1L; + + + @ApiModelProperty("部门/组织名称") + private String name; + + @ApiModelProperty("父(部门/组织) sid") + private String psid; + + @ApiModelProperty("联系电话") + private String linkPhone; + @ApiModelProperty("联系人") + private String linkPerson; + + @ApiModelProperty("部门sid全路径") + private String orgSidPath; + + @ApiModelProperty("排序") + private Integer sort; + + @ApiModelProperty("地址") + private String addrs; + + @ApiModelProperty("地理位置经纬度") + private String jwd; + + @ApiModelProperty("二维码") + private String qrText; + + @ApiModelProperty("限制本部门成员查看通讯录:限制开启后,本部门成员只能看到限定范围内的通讯录不能看到所有通讯录,仅可见自己") + private Integer limitOrgMember; + + @ApiModelProperty("部门编码") + private String orgCode; + + @ApiModelProperty("部门简称(地区简称+门店名称首字母(遇到首字母重复时用2个字母))") + private String orgShortName; + + @ApiModelProperty("销售区域划分(本店终端销售:0,门店对应业务区域划分销售:1至9,具体编号划分各门店报备确定)") + private String regionDivision; + + @ApiModelProperty("是否是部门(0否,1是)") + private Integer isDept; + + @ApiModelProperty("组织简称") + private String orgAbbre; + + @ApiModelProperty("组织属性key") + private String orgAttributeKey; + + @ApiModelProperty("组织属性value") + private String orgAttributeValue; + + @ApiModelProperty("管理层级key") + private String orgLevelKey; + + @ApiModelProperty("管理层级value") + private String orgLevelValue; + + @ApiModelProperty("其他编码") + private String otherCode; +} diff --git a/src/main/java/com/yxt/user/biz/sysorganization/SysOrganizationDto.java b/src/main/java/com/yxt/user/biz/sysorganization/SysOrganizationDto.java new file mode 100644 index 0000000..2356120 --- /dev/null +++ b/src/main/java/com/yxt/user/biz/sysorganization/SysOrganizationDto.java @@ -0,0 +1,91 @@ +package com.yxt.user.biz.sysorganization; + + +import com.yxt.common.core.dto.Dto; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * Project: anrui_portal(门户建设)
+ * File: SysOrganizationDto.java
+ * Class: SysOrganizationDto
+ * Description: 组织机构表 数据传输对象.
+ * Copyright: Copyright (c) 2011
+ * Company: https://gitee.com/liuzp315
+ * Makedate: 2021-08-03 00:24:28
+ * + * @author liupopo + * @version 1.0 + * @since 1.0 + */ +@ApiModel(value = "组织机构表 数据传输对象", description = "组织机构表 数据传输对象") +@Data +public class SysOrganizationDto implements Dto { + + + @ApiModelProperty("部门/组织名称") + private String name; + + @ApiModelProperty("父(部门/组织) sid") + private String psid; + + @ApiModelProperty("联系电话") + private String linkPhone; + @ApiModelProperty("联系人") + private String linkPerson; + + @ApiModelProperty("部门sid全路径") + private String orgSidPath; + + @ApiModelProperty("排序") + private Integer sort; + + @ApiModelProperty("地址") + private String addrs; + + @ApiModelProperty("地理位置经纬度") + private String jwd; + + @ApiModelProperty("二维码") + private String qrText; + + @ApiModelProperty("限制本部门成员查看通讯录:限制开启后,本部门成员只能看到限定范围内的通讯录不能看到所有通讯录,仅可见自己") + private Integer limitOrgMember; + + @ApiModelProperty("部门编码") + private String orgCode; + + @ApiModelProperty("部门简称(地区简称+门店名称首字母(遇到首字母重复时用2个字母))") + private String orgShortName; + + @ApiModelProperty("销售区域划分(本店终端销售:0,门店对应业务区域划分销售:1至9,具体编号划分各门店报备确定)") + private String regionDivision; + + @ApiModelProperty("主管人员sid") + private String zgStaffSid; + + @ApiModelProperty("分管人员sid") + private String fgStaffSid; + + @ApiModelProperty("组织简称") + private String orgAbbre; + + @ApiModelProperty("是否是部门(0否,1是)") + private Integer isDept; + + @ApiModelProperty("组织属性key") + private String orgAttributeKey; + + @ApiModelProperty("组织属性value") + private String orgAttributeValue; + + @ApiModelProperty("管理层级key") + private String orgLevelKey; + + @ApiModelProperty("管理层级value") + private String orgLevelValue; + + @ApiModelProperty("其他编码") + private String otherCode; +} \ No newline at end of file diff --git a/src/main/java/com/yxt/user/biz/sysorganization/SysOrganizationListQuery.java b/src/main/java/com/yxt/user/biz/sysorganization/SysOrganizationListQuery.java new file mode 100644 index 0000000..7e0ae49 --- /dev/null +++ b/src/main/java/com/yxt/user/biz/sysorganization/SysOrganizationListQuery.java @@ -0,0 +1,16 @@ +package com.yxt.user.biz.sysorganization; + +import com.yxt.common.core.query.Query; +import lombok.Data; + +/** + * @Author dimengzhe + * @Date 2022/9/26 11:49 + * @Description + */ +@Data +public class SysOrganizationListQuery implements Query { + private static final long serialVersionUID = 8657016527420117948L; + + private String userSid; +} diff --git a/src/main/java/com/yxt/user/biz/sysorganization/SysOrganizationListVo.java b/src/main/java/com/yxt/user/biz/sysorganization/SysOrganizationListVo.java new file mode 100644 index 0000000..1ae7282 --- /dev/null +++ b/src/main/java/com/yxt/user/biz/sysorganization/SysOrganizationListVo.java @@ -0,0 +1,23 @@ +package com.yxt.user.biz.sysorganization; + +import com.yxt.common.core.vo.Vo; +import lombok.Data; + +import java.util.List; + +/** + * @Author dimengzhe + * @Date 2022/9/26 11:42 + * @Description + */ +@Data +public class SysOrganizationListVo implements Vo { + private static final long serialVersionUID = -3709239161608411765L; + + private String orgDeptSid; + private String orgDeptName; + + private List staffinfoVoList; + + +} diff --git a/src/main/java/com/yxt/user/biz/sysorganization/SysOrganizationListsVo.java b/src/main/java/com/yxt/user/biz/sysorganization/SysOrganizationListsVo.java new file mode 100644 index 0000000..7c7e4a5 --- /dev/null +++ b/src/main/java/com/yxt/user/biz/sysorganization/SysOrganizationListsVo.java @@ -0,0 +1,17 @@ +package com.yxt.user.biz.sysorganization; + +import com.yxt.common.core.vo.Vo; +import lombok.Data; + +/** + * @Author dimengzhe + * @Date 2022/9/30 11:28 + * @Description + */ +@Data +public class SysOrganizationListsVo implements Vo { + private static final long serialVersionUID = -7021974833444298712L; + + private String orgDeptSid; + private String orgDeptName; +} diff --git a/src/main/java/com/yxt/user/biz/sysorganization/SysOrganizationMapper.java b/src/main/java/com/yxt/user/biz/sysorganization/SysOrganizationMapper.java new file mode 100644 index 0000000..8d84393 --- /dev/null +++ b/src/main/java/com/yxt/user/biz/sysorganization/SysOrganizationMapper.java @@ -0,0 +1,122 @@ +package com.yxt.user.biz.sysorganization; + +import com.baomidou.mybatisplus.core.conditions.Wrapper; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.core.toolkit.Constants; +import com.yxt.user.biz.sysstafforg.SysStaffOrgVo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; + +import java.util.List; +import java.util.Map; + +/** + * Project: anrui_portal(门户建设)
+ * File: SysOrganizationMapper.java
+ * Class: SysOrganizationMapper
+ * Description: 组织机构表.
+ * Copyright: Copyright (c) 2011
+ * Company: https://gitee.com/liuzp315
+ * Makedate: 2021-08-03 00:24:28
+ * + * @author liupopo + * @version 1.0 + * @since 1.0 + */ +@Mapper +public interface SysOrganizationMapper extends BaseMapper { + + //@Update("update sys_organization set name=#{msg} where id=#{id}") + //IPage voPage(IPage page, @Param(Constants.WRAPPER) QueryWrapper qw); + + IPage selectPageVo(IPage page, @Param(Constants.WRAPPER) Wrapper qw); + + List selectListAllVo(@Param(Constants.WRAPPER) Wrapper qw); + + List selectFirstOrgList(); + + List selectChildrenListByPsid(@Param("psid") String psid); + + @Select("SELECT * FROM sys_organization") + List selectListVo(); + + @Select("SELECT name FROM sys_organization WHERE sid=#{sid}") + String selectOrgnameBySid(@Param("sid") String sid); + + String selectOrgSidPath(@Param("sid") String sid); + + List selectAppOrganization(); + + List selectAppOrganizationByPsid(@Param("psid") String psid); + + List treeList(String psid); + + SysOrganization selectOrgCode(); + + List getListOrg(); + + SysOrganization selectOrgCodeByPsid(); + + /** + * 根据上级sid查询组织的部门 + * + * @param psid 上级sid + * @return + */ + List selectTreeList(String psid); + + /** + * 根据部门编码查询部门信息 + * + * @param substring 部门编码 + * @return + */ + SysOrganization selectByOrgCode(String substring); + + List selectChildernList(String sid); + + /** + * 根据业务员sid获取到分公司 + * + * @param staffSid 业务员sid + * @return + */ + SysStaffOrgVo getUseOrgByUserSid(@Param("staffSid") String staffSid); + + /** + * 根据sid判断是否是分公司并获取公司名称 + * + * @param sid + * @return + */ + SysOrganizationVo getUseOrgBySid(@Param("sid")String sid); + + int updateQrCodePath(@Param("sid") String sid, @Param("path") String path); + + QrCodeVo getQrCodeVo(@Param("sid") String sid); + + @Select("select * from sys_organization WHERE staffSid=#{sid}") + SysOrganizationVo getUseOrgByStaffSid(String sid); + + List> selectUseOrgSidBySid(String psid); + + SysOrgVo getListOrgByBrand(String sid); + + List selectOrgList(String orgSid); + List selectOrgLists(String orgSid); + + List selectByOrgDeptSid(String orgDeptSid); + + SysOrganizationVo selectByPSid(@Param("sid") String sid, @Param("name") String name); + + List selectOrgSidList(); + + @Select("select * from sys_organization where orgSidPath = #{orgSidPath}") + SysOrganizationVo selectByOrgSidPath(String orgSidPath); + + List getListDeptByOrgSid(String orgSid); + + List selectOrgByPSid(String psid); +} \ No newline at end of file diff --git a/src/main/java/com/yxt/user/biz/sysorganization/SysOrganizationMapper.xml b/src/main/java/com/yxt/user/biz/sysorganization/SysOrganizationMapper.xml new file mode 100644 index 0000000..55c9640 --- /dev/null +++ b/src/main/java/com/yxt/user/biz/sysorganization/SysOrganizationMapper.xml @@ -0,0 +1,220 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + UPDATE sys_organization + SET qrText = #{path} + WHERE sid = #{sid} + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/main/java/com/yxt/user/biz/sysorganization/SysOrganizationQuery.java b/src/main/java/com/yxt/user/biz/sysorganization/SysOrganizationQuery.java new file mode 100644 index 0000000..e662bf3 --- /dev/null +++ b/src/main/java/com/yxt/user/biz/sysorganization/SysOrganizationQuery.java @@ -0,0 +1,58 @@ +package com.yxt.user.biz.sysorganization; + + +import com.yxt.common.core.query.Query; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * Project: anrui_portal(门户建设)
+ * File: SysOrganizationQuery.java
+ * Class: SysOrganizationQuery
+ * Description: 组织机构表 查询条件.
+ * Copyright: Copyright (c) 2011
+ * Company: https://gitee.com/liuzp315
+ * Makedate: 2021-08-03 00:24:28
+ * + * @author liupopo + * @version 1.0 + * @since 1.0 + */ +@ApiModel(value = "组织机构表 查询条件", description = "组织机构表 查询条件") +@Data +public class SysOrganizationQuery implements Query { + + + @ApiModelProperty("部门/组织名称") + private String name; + + @ApiModelProperty("父(部门/组织) sid") + private String psid; + + @ApiModelProperty("联系电话") + private String linkPhone; + @ApiModelProperty("联系人") + private String linkPerson; + + @ApiModelProperty("部门sid全路径") + private String orgSidPath; + + @ApiModelProperty("排序") + private Integer sort; + + @ApiModelProperty("地址") + private String addrs; + + @ApiModelProperty("地理位置经纬度") + private String jwd; + + @ApiModelProperty("二维码") + private String qrText; + + @ApiModelProperty("限制本部门成员查看通讯录:限制开启后,本部门成员只能看到限定范围内的通讯录不能看到所有通讯录,仅可见自己") + private Integer limitOrgMember; + + @ApiModelProperty("部门编码") + private String orgCode; +} diff --git a/src/main/java/com/yxt/user/biz/sysorganization/SysOrganizationService.java b/src/main/java/com/yxt/user/biz/sysorganization/SysOrganizationService.java new file mode 100644 index 0000000..7dfe4c2 --- /dev/null +++ b/src/main/java/com/yxt/user/biz/sysorganization/SysOrganizationService.java @@ -0,0 +1,521 @@ +package com.yxt.user.biz.sysorganization; + +import cn.hutool.core.bean.BeanUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.yxt.common.base.config.RedisUtil; +import com.yxt.common.base.config.component.FileUploadComponent; +import com.yxt.common.base.service.MybatisBaseService; +import com.yxt.common.base.utils.PagerUtil; +import com.yxt.common.core.query.PagerQuery; +import com.yxt.common.core.result.ResultBean; +import com.yxt.common.core.vo.PagerVo; +import com.yxt.user.biz.sysstaffinfo.SysStaffinfo; +import com.yxt.user.biz.sysstaffinfo.SysStaffinfoService; +import com.yxt.user.biz.sysstafforg.SysStaffOrg; +import com.yxt.user.biz.sysstafforg.SysStaffOrgService; +import com.yxt.user.biz.sysstafforg.SysStaffOrgVo; +import com.yxt.user.biz.sysuser.SysUserService; +import org.apache.commons.lang3.StringUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.*; + +import static java.util.stream.Collectors.toList; + +/** + * Project: anrui_portal(门户建设)
+ * File: SysOrganizationService.java
+ * Class: SysOrganizationService
+ * Description: 组织机构表 业务逻辑.
+ * Copyright: Copyright (c) 2011
+ * Company: https://gitee.com/liuzp315
+ * Makedate: 2021-08-03 00:24:28
+ * + * @author liupopo + * @version 1.0 + * @since 1.0 + */ +@Service +public class SysOrganizationService extends MybatisBaseService { + @Autowired + private SysStaffOrgService sysStaffOrgService; + @Autowired + private SysUserService sysUserService; + @Autowired + private FileUploadComponent fileUploadComponent; + @Autowired + private SysStaffinfoService sysStaffInfoService; + @Autowired + private RedisUtil redisUtil; + + public ResultBean saveOrg(SysOrganizationDto dto){ + ResultBean rb = ResultBean.fireFail(); + SysOrganization entity = new SysOrganization(); + dto.fillEntity(entity); + String psid = dto.getPsid(); + if (psid.equals("0")){ + entity.setOrgSidPath(entity.getSid()); + entity.setSort(1); + }else { + SysOrganization sysOrganization = fetchBySid(psid); + entity.setOrgSidPath(sysOrganization.getOrgSidPath()+"/"+entity.getSid()); + String[] split = sysOrganization.getOrgSidPath().split("/"); + entity.setSort(split.length+1); + } + this.saveOrUpdate(entity); + return rb.success().setMsg("添加成功"); + } + + public PagerVo listPage(PagerQuery pq) { + SysOrganizationQuery query = pq.getParams(); + QueryWrapper qw = createQueryWrapper(query); + IPage page = PagerUtil.queryToPage(pq); + IPage pagging = baseMapper.selectPage(page, qw); + PagerVo p = PagerUtil.pageToVo(pagging, null); + return p; + } + + public List listAll(SysOrganizationQuery query) { + QueryWrapper qw = createQueryWrapper(query); + return baseMapper.selectList(qw); + } + + private QueryWrapper createQueryWrapper(SysOrganizationQuery query) { + // todo: 这里根据具体业务调整查询条件 + // 多字段Like示例:qw.and(wrapper -> wrapper.like("name", query.getName()).or().like("remark", query.getName())); + QueryWrapper qw = new QueryWrapper<>(); + + + if (StringUtils.isNotBlank(query.getName())) { + qw.eq("name", query.getName()); + } + + if (StringUtils.isNotBlank(query.getPsid())) { + qw.eq("psid", query.getPsid()); + } + + if (StringUtils.isNotBlank(query.getLinkPhone())) { + qw.eq("linkPhone", query.getLinkPhone()); + } + + if (StringUtils.isNotBlank(query.getOrgSidPath())) { + qw.eq("orgSidPath", query.getOrgSidPath()); + } + + if (query.getSort() != null) { + qw.eq("sort", query.getSort()); + } + + if (StringUtils.isNotBlank(query.getAddrs())) { + qw.eq("addrs", query.getAddrs()); + } + + if (StringUtils.isNotBlank(query.getJwd())) { + qw.eq("jwd", query.getJwd()); + } + + if (StringUtils.isNotBlank(query.getQrText())) { + qw.eq("qrText", query.getQrText()); + } + + if (query.getLimitOrgMember() != null) { + qw.eq("limitOrgMember", query.getLimitOrgMember()); + } + + if (StringUtils.isNotBlank(query.getOrgCode())) { + qw.eq("orgCode", query.getOrgCode()); + } + return qw; + } + + public PagerVo listPageVo(PagerQuery pq) { + SysOrganizationQuery query = pq.getParams(); + QueryWrapper qw = createQueryWrapper(query); + IPage page = PagerUtil.queryToPage(pq); + IPage pagging = baseMapper.selectPageVo(page, qw); + PagerVo p = PagerUtil.pageToVo(pagging, null); + return p; + } + + public List listAllVo(SysOrganizationQuery query) { + QueryWrapper qw = createQueryWrapper(query); + return baseMapper.selectListAllVo(qw); + } + + public List listVo() { + List sysOrganizations = baseMapper.selectFirstOrgList(); + getChildList(sysOrganizations); + return sysOrganizations; + } + + + public void getChildList(List list) { + list.forEach(str -> { + String sid = str.getSid(); + List listChildren = baseMapper.selectChildernList(sid); + str.setChildren(listChildren); + getChildList(listChildren); + }); + } + + public List selectFirstOrgList() { + return baseMapper.selectFirstOrgList(); + } + + public List selectChildrenListBySid(String sid) { + return baseMapper.selectChildrenListByPsid(sid); + } + + @Transactional(rollbackFor = Exception.class) + public ResultBean addSysStaffOrg(String sids, String manageType, SysOrganization entity) { + ResultBean rb = ResultBean.fireFail(); + String[] sidArr = sids.split(","); + String name = ""; + for (String sid : sidArr) { + //查询组织关系中是否已经包含分管的人员 + if ("1".equals(manageType)) { + //查询是否有员工信息,如果有的话,删除关联关系 + sysStaffOrgService.deleteByStaffSidAndType(entity.getOrgSidPath(), sid, "3"); + } else { + int count = sysStaffOrgService.selectByStaffAndOrg(entity.getOrgSidPath(), sid, "3"); + SysStaffinfo sysStaffinfo = sysStaffInfoService.fetchBySid(sid); + if (count > 0) { + return rb.setMsg(sysStaffinfo.getName() + "已在本部门,不能设置分管"); + } + + } + //查询该人员的组织机构list + List sysStaffOrgVos = sysStaffOrgService.selectByStaffS(sid); + List orgList = new ArrayList<>(); + if (sysStaffOrgVos.size() > 0) { + for (SysStaffOrgVo vv : sysStaffOrgVos) { + String orgSid = sysStaffOrgService.getOrgByOrgSid(vv.getOrgSid()); + SysOrganization sysOrganization = fetchBySid(orgSid); + if (sysOrganization != null) { + orgList.add(orgSid); + } else { + continue; + } + } + } + //添加员工与组织的关联关系 + SysStaffOrg sysStaffOrg = new SysStaffOrg(); + sysStaffOrg.setManageType(manageType); + sysStaffOrg.setOrgSid(entity.getSid()); + sysStaffOrg.setOrgName(entity.getName()); + sysStaffOrg.setStaffSid(sid); + String orgSidPath = entity.getOrgSidPath(); + if (StringUtils.isNotBlank(orgSidPath)) { + sysStaffOrg.setOrgSidPath(orgSidPath); + } else { + sysStaffOrg.setOrgSidPath(entity.getSid()); + } + String psid = entity.getPsid(); + if (StringUtils.isNotBlank(psid)) { + SysOrganization sysOrganization = this.fetchBySid(psid); + if (sysOrganization != null) { + sysStaffOrg.setOrgNamePath(sysOrganization.getName() + "/" + entity.getName()); + } else { + sysStaffOrg.setOrgNamePath(entity.getName()); + } + } + sysStaffOrgService.save(sysStaffOrg); + //==========================添加清空变化的用户的token + List sysStaffOrgVos1 = sysStaffOrgService.selectByStaffS(sid); + List orgList1 = new ArrayList<>(); + if (sysStaffOrgVos1.size() > 0) { + for (SysStaffOrgVo vv : sysStaffOrgVos1) { + String orgSid = sysStaffOrgService.getOrgByOrgSid(vv.getOrgSid()); + SysOrganization sysOrganization = fetchBySid(orgSid); + if (sysOrganization != null) { + orgList1.add(orgSid); + } else { + continue; + } + } + } + List reduce1 = orgList1.stream().filter(item -> !orgList.contains(item)).collect(toList()); + if (reduce1.size() > 0) { + //根据staffSid查询token + String token = sysUserService.selectByStaffsid(sid).getToken(); + if (StringUtils.isNotBlank(token)) { + //清空该token + redisUtil.remove(token); + } + } + + + } + + return rb.success(); + } + + public void saveOrUpdateDto(SysOrganizationDto dto) { + SysOrganization entity = new SysOrganization(); + dto.fillEntity(entity); + //主管人员sid + String zgStaffSid = dto.getZgStaffSid(); + //分管人员sid + String fgStaffSid = dto.getFgStaffSid(); + String psid = dto.getPsid(); + SysOrganization sysOrganization = this.fetchBySid(psid); + + if (StringUtils.isNotBlank(zgStaffSid)) { + this.addSysStaffOrg(zgStaffSid, "1", entity); + } + if (StringUtils.isNotBlank(fgStaffSid)) { + this.addSysStaffOrg(fgStaffSid, "2", entity); + } + entity.setOrgSidPath(sysOrganization.getOrgSidPath() + "/" + entity.getSid()); + this.saveOrUpdate(entity); + } + + public SysOrganizationVo fetchByIdVo(String id) { + SysOrganization entity = this.fetchById(id); + SysOrganizationVo vo = new SysOrganizationVo(); + BeanUtil.copyProperties(entity, vo); + return vo; + } + + public String selectOrgnameBySid(String sid) { + return baseMapper.selectOrgnameBySid(sid); + } + + public List> selectOrgNameList(String sid) { + String orgSidPath = baseMapper.selectOrgSidPath(sid); + String[] orgSidPathArr = orgSidPath.split("/"); + List> nameList = new ArrayList<>(); + for (int i = 0; i < orgSidPathArr.length; i++) { + Map m = new HashMap<>(); + m.put("sid", orgSidPathArr[i]); + m.put("name", selectOrgnameBySid(orgSidPathArr[i])); + nameList.add(m); + } + return nameList; + } + + public List selectAppOrganization() { + List list = baseMapper.selectAppOrganization(); + list.stream().forEach(vo -> { + if (StringUtils.isNotBlank(vo.getHeadImage())) { + vo.setHeadImage(fileUploadComponent.getUrlPrefix() + vo.getHeadImage()); + } + }); + return list; + } + + public List selectAppOrganizationSub(String psid) { + List list = baseMapper.selectAppOrganizationByPsid(psid); + list.stream().forEach(vo -> { + if (StringUtils.isNotBlank(vo.getHeadImage())) { + vo.setHeadImage(fileUploadComponent.getUrlPrefix() + vo.getHeadImage()); + } + }); + return list; + } + + /** + * @param + * @description: 获取组织架构即使用组织下拉框 + * @return: + * @Author: dimengzhe + * @Date: 2021/10/12 21:47 + */ + public List treeList() { + String psid = "0"; + List list = baseMapper.treeList(psid); + getChildOrgList(list); + return list; + } + + public void getChildOrgList(List list) { + list.forEach(menuTree -> { + String sid = menuTree.getSid(); + List listChildren = baseMapper.treeList(sid); + menuTree.setChildren(listChildren); + if (Arrays.asList(menuTree.getOrgSidPath().split("/")).size() <= 2) { + getChildOrgList(listChildren); + } + + }); + } + + /** + * @param + * @description: 查询部门编码 + * @return: + * @Author: dimengzhe + * @Date: 2021/10/18 15:49 + */ + public SysOrganization selectOrgCode() { + return baseMapper.selectOrgCode(); + } + + public List getListOrg() { + List list = baseMapper.getListOrg(); + return list; + } + + public SysOrganization selectOrgCodeByPsid() { + return baseMapper.selectOrgCodeByPsid(); + } + + /** + * 查询所有部门列表 + * + * @return + */ + public List selectTreeList() { + String psid = "0"; + List list = baseMapper.selectTreeList(psid); + getChildOrgListOne(list); + return list; + + } + + /** + * 查询组织子集 + * + * @param list + */ + public void getChildOrgListOne(List list) { + list.forEach(menuTree -> { + String sid = menuTree.getSid(); + List listChildren = baseMapper.treeList(sid); + menuTree.setChildren(listChildren); + }); + } + + /** + * 根据部门编码查询部门信息 + * + * @param substring 部门编码 + * @return + */ + public SysOrganization selectByOrgCode(String substring) { + return baseMapper.selectByOrgCode(substring); + } + + /** + * 根据业务员sid获取到分公司 + * + * @param userSid 业务员sid + * @return + */ + public SysOrganizationVo getUseOrgByUserSid(String userSid) { +// String staffSid = sysUserService.getUserOrgInfoByUserSid(userSid).getStaffSid(); +// SysStaffOrgVo sysOrgVo = baseMapper.getUseOrgByUserSid(staffSid); +// String orgSidPath = sysOrgVo.getOrgSidPath(); +// SysOrganizationVo vo = getUseOrgBySid(orgSidPath); + return new SysOrganizationVo(); + } + + /** + * 根据sid判断是否是分公司并获取公司名称 + * + * @param orgSidPath + * @return + */ + public SysOrganizationVo getUseOrgBySid(String orgSidPath) { + String[] split = orgSidPath.split("/"); + for (int i = 0; i < split.length; i++) { + SysOrganizationVo sysOrganizationVo = baseMapper.getUseOrgBySid(split[i]); + if (sysOrganizationVo != null) { + return sysOrganizationVo; + } + } + SysOrganization sysOrganization = fetchBySid(split[0]);// 总公司为所在公司 + SysOrganizationVo sysOrganizationVo = new SysOrganizationVo(); + BeanUtil.copyProperties(sysOrganization, sysOrganizationVo); + return sysOrganizationVo; + } + + public int updateQrCodePath(String sid, String path) { + return baseMapper.updateQrCodePath(sid, path); + } + + public QrCodeVo getQrCodeVo(String sid) { + return baseMapper.getQrCodeVo(sid); + } + + public List> selectUseOrgSidBySid(String sid) { + SysOrganization sysOrganization = fetchBySid(sid); + String psid = sysOrganization.getPsid(); + return baseMapper.selectUseOrgSidBySid(psid); + } + + public String getOrgSid(String sid) { + SysOrganization sysOrganization = fetchBySid(sid); + String orgSid = ""; + if ("0".equals(sysOrganization.getPsid())) {//总公司 + orgSid = sysOrganization.getSid(); + return orgSid; + } + if (sysOrganization.getIsDept() == 0) {//是独立法人的 + return sysOrganization.getSid(); + } + sid = sysOrganization.getPsid(); + return getOrgSid(sid); + } + + public ResultBean> selectOrgList(SysOrganizationListQuery query) { + ResultBean> rb = ResultBean.fireFail(); + //根据用户sid查询分公司sid + String orgDeptSid = sysStaffOrgService.selectByUserSid(query.getUserSid()); + String orgSid = getOrgSid(orgDeptSid); + //根据分公司名称查询销售部门的部门 + List sysOrganizationListVos = baseMapper.selectOrgList(orgSid); + sysOrganizationListVos.removeAll(Collections.singleton(null)); + if (!sysOrganizationListVos.isEmpty()) { + for (SysOrganizationListVo vo : sysOrganizationListVos) { + orgDeptSid = vo.getOrgDeptSid(); + List sysOrgStaffVoList = baseMapper.selectByOrgDeptSid(orgDeptSid); + vo.setStaffinfoVoList(sysOrgStaffVoList); + } + } + return rb.success().setData(sysOrganizationListVos); + } + + public ResultBean> selectOrgLists(SysOrganizationListQuery query) { + ResultBean> rb = ResultBean.fireFail(); + //根据用户sid查询分公司sid + String orgDeptSid = sysStaffOrgService.selectByUserSid(query.getUserSid()); + String orgSid = getOrgSid(orgDeptSid); + //根据分公司名称查询销售部门的部门 + List sysOrganizationListVos = baseMapper.selectOrgLists(orgSid); + sysOrganizationListVos.removeAll(Collections.singleton(null)); + return rb.success().setData(sysOrganizationListVos); + + } + + public ResultBean selectByPSid(String sid, String name) { + ResultBean rb = ResultBean.fireFail(); + SysOrganizationVo vo = baseMapper.selectByPSid(sid, name); + return rb.success().setData(vo); + } + + public List selectOrgSidList() { + return baseMapper.selectOrgSidList(); + } + + public ResultBean selectByOrgSidPath(String orgSidPath) { + ResultBean rb = ResultBean.fireFail(); + SysOrganizationVo sysOrganizationVo = baseMapper.selectByOrgSidPath(orgSidPath); + return rb.success().setData(sysOrganizationVo); + } + + public ResultBean> getListDeptByOrgSid(String orgSid) { + ResultBean> rb = ResultBean.fireFail(); + List sysOrgVos = baseMapper.getListDeptByOrgSid(orgSid); + return rb.success().setData(sysOrgVos); + } + + public ResultBean> selectOrgByPSid(String psid) { + ResultBean rb = ResultBean.fireFail(); + List sysOrganizationVos = baseMapper.selectOrgByPSid(psid); + return rb.success().setData(sysOrganizationVos); + } +} \ No newline at end of file diff --git a/src/main/java/com/yxt/user/biz/sysorganization/SysOrganizationVo.java b/src/main/java/com/yxt/user/biz/sysorganization/SysOrganizationVo.java new file mode 100644 index 0000000..aec8f83 --- /dev/null +++ b/src/main/java/com/yxt/user/biz/sysorganization/SysOrganizationVo.java @@ -0,0 +1,86 @@ +package com.yxt.user.biz.sysorganization; + + +import com.yxt.common.core.vo.Vo; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.ArrayList; +import java.util.List; + +/** + * Project: anrui_portal(门户建设)
+ * File: SysOrganizationVo.java
+ * Class: SysOrganizationVo
+ * Description: 组织机构表 视图数据对象.
+ * Copyright: Copyright (c) 2011
+ * Company: https://gitee.com/liuzp315
+ * Makedate: 2021-08-03 00:24:28
+ * + * @author liupopo + * @version 1.0 + * @since 1.0 + */ +@ApiModel(value = "组织机构表 视图数据对象", description = "组织机构表 视图数据对象") +@Data +public class SysOrganizationVo implements Vo { + @ApiModelProperty("部门/组织名称") + private String name; + + @ApiModelProperty("父(部门/组织) sid") + private String psid; + + @ApiModelProperty("联系电话") + private String linkPhone; + + @ApiModelProperty("联系人") + private String linkPerson; + + @ApiModelProperty("部门sid全路径") + private String orgSidPath; + + @ApiModelProperty("排序") + private Integer sort; + + @ApiModelProperty("地址") + private String addrs; + + @ApiModelProperty("地理位置经纬度") + private String jwd; + + @ApiModelProperty("二维码") + private String qrText; + + @ApiModelProperty("限制本部门成员查看通讯录:限制开启后,本部门成员只能看到限定范围内的通讯录不能看到所有通讯录,仅可见自己") + private Integer limitOrgMember; + + @ApiModelProperty("部门编码") + private String orgCode; + @ApiModelProperty("sid") + private String sid; + @ApiModelProperty("子集") + private List children = new ArrayList<>(); + @ApiModelProperty("主管人员名称") + private String zgNames; + @ApiModelProperty("分管人员名称") + private String fgNames; + @ApiModelProperty("主管人员sid") + private String zgStaffSid; + @ApiModelProperty("分管人员sid") + private String fgStaffSid; + @ApiModelProperty("组织简称") + private String orgAbbre; + @ApiModelProperty("是否是部门(0否,1是)") + private Integer isDept; + @ApiModelProperty("组织属性key") + private String orgAttributeKey; + @ApiModelProperty("组织属性value") + private String orgAttributeValue; + @ApiModelProperty("管理层级key") + private String orgLevelKey; + @ApiModelProperty("管理层级value") + private String orgLevelValue; + @ApiModelProperty("其他编码") + private String otherCode; +} diff --git a/src/main/java/com/yxt/user/biz/syspost/SysPost.java b/src/main/java/com/yxt/user/biz/syspost/SysPost.java new file mode 100644 index 0000000..a58b72c --- /dev/null +++ b/src/main/java/com/yxt/user/biz/syspost/SysPost.java @@ -0,0 +1,46 @@ +package com.yxt.user.biz.syspost; + +import com.baomidou.mybatisplus.annotation.TableName; +import com.yxt.common.core.domain.BaseEntity; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * Project: anrui_portal(门户建设)
+ * File: SysPost.java
+ * Class: com.yxt.anrui.portal.api.syspost.SysPost
+ * Description: 岗位.
+ * Copyright: Copyright (c) 2011
+ * Company: https://gitee.com/liuzp315
+ * Makedate: 2021-08-03 00:24:28
+ * + * @author liupopo + * @version 1.0 + * @since 1.0 + */ +@ApiModel(value = "岗位", description = "岗位") +@TableName("sys_post") +@Data +public class SysPost extends BaseEntity { + private static final long serialVersionUID = 1L; + + + @ApiModelProperty("岗位名称") + private String name; + + @ApiModelProperty("职级key") + private String postLevelKey; + + @ApiModelProperty("职级") + private String postLevel; + + @ApiModelProperty("岗位编码") + private String postCode; + + @ApiModelProperty("所属部门sid") + private String orgSid; + + @ApiModelProperty(value = "父级sid") + private String parentSid; +} diff --git a/src/main/java/com/yxt/user/biz/syspost/SysPostDto.java b/src/main/java/com/yxt/user/biz/syspost/SysPostDto.java new file mode 100644 index 0000000..9720481 --- /dev/null +++ b/src/main/java/com/yxt/user/biz/syspost/SysPostDto.java @@ -0,0 +1,44 @@ +package com.yxt.user.biz.syspost; + + +import com.yxt.common.core.dto.Dto; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * Project: anrui_portal(门户建设)
+ * File: SysPostDto.java
+ * Class: com.yxt.anrui.portal.api.syspost.SysPostDto
+ * Description: 岗位 数据传输对象.
+ * Copyright: Copyright (c) 2011
+ * Company: https://gitee.com/liuzp315
+ * Makedate: 2021-08-03 00:24:28
+ * + * @author liupopo + * @version 1.0 + * @since 1.0 + */ +@ApiModel(value = "岗位 数据传输对象", description = "岗位 数据传输对象") +@Data +public class SysPostDto implements Dto { + + private static final long serialVersionUID = 863876947510030464L; + @ApiModelProperty("岗位名称") + private String name; + + @ApiModelProperty("职级key") + private String postLevelKey; + + @ApiModelProperty("职级") + private String postLevel; + + @ApiModelProperty("岗位编码") + private String postCode; + + @ApiModelProperty("所属部门sid") + private String orgSid; + + @ApiModelProperty(value = "父级sid", example = "0") + private String parentSid; +} \ No newline at end of file diff --git a/src/main/java/com/yxt/user/biz/syspost/SysPostListVo.java b/src/main/java/com/yxt/user/biz/syspost/SysPostListVo.java new file mode 100644 index 0000000..1f1a013 --- /dev/null +++ b/src/main/java/com/yxt/user/biz/syspost/SysPostListVo.java @@ -0,0 +1,22 @@ +package com.yxt.user.biz.syspost; + +import com.yxt.common.core.vo.Vo; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * @Author dimengzhe + * @Date 2022/2/14 13:49 + * @Description 部门下的岗位信息 + */ +@Data +public class SysPostListVo implements Vo { + private static final long serialVersionUID = -8060032905868283959L; + + @ApiModelProperty("岗位名称") + private String name; + @ApiModelProperty("岗位编码") + private String postCode; + @ApiModelProperty("岗位sid") + private String sid; +} diff --git a/src/main/java/com/yxt/user/biz/syspost/SysPostMapper.java b/src/main/java/com/yxt/user/biz/syspost/SysPostMapper.java new file mode 100644 index 0000000..e48d3bb --- /dev/null +++ b/src/main/java/com/yxt/user/biz/syspost/SysPostMapper.java @@ -0,0 +1,68 @@ +package com.yxt.user.biz.syspost; + +import com.baomidou.mybatisplus.core.conditions.Wrapper; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.core.toolkit.Constants; +import com.yxt.user.biz.syspost.SysPost; +import com.yxt.user.biz.syspost.SysPostListVo; +import com.yxt.user.biz.syspost.SysPostVo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; + +import java.util.List; + +/** + * Project: anrui_portal(门户建设)
+ * File: SysPostMapper.java
+ * Class: com.yxt.anrui.portal.biz.syspost.SysPostMapper
+ * Description: 岗位.
+ * Copyright: Copyright (c) 2011
+ * Company: https://gitee.com/liuzp315
+ * Makedate: 2021-08-03 00:24:28
+ * + * @author liupopo + * @version 1.0 + * @since 1.0 + */ +@Mapper +public interface SysPostMapper extends BaseMapper { + + //@Update("update sys_post set name=#{msg} where id=#{id}") + //IPage voPage(IPage page, @Param(Constants.WRAPPER) QueryWrapper qw); + + IPage selectPageVo(IPage page, @Param(Constants.WRAPPER) Wrapper qw); + + List selectListAllVo(@Param(Constants.WRAPPER) Wrapper qw); + + @Select("select * from sys_post") + List selectListVo(); + + @Select("select * from sys_post where sid=#{sid} ") + SysPost fetchBySid(@Param("sid") String sid); + + @Select("select * from sys_post where orgSid=#{orgSid} ") + List fetchByOrgSid(@Param("orgSid") String orgSid); + + @Select("select postCode,`name` from sys_post") + List fetchByOrgSidPostCode(); + + /** + * 查询所有岗位列表 + * + * @return + */ + List selectListOne(); + + /** + * 根据岗位编码查询岗位信息 + * + * @param substring 岗位编码 + * @return + */ + SysPost selectByPostCode(String substring); + + @Select("select * from sys_post where staffSid = #{sid}") + SysPost getPostByStaffSid(String sid); +} \ No newline at end of file diff --git a/src/main/java/com/yxt/user/biz/syspost/SysPostMapper.xml b/src/main/java/com/yxt/user/biz/syspost/SysPostMapper.xml new file mode 100644 index 0000000..6eab28d --- /dev/null +++ b/src/main/java/com/yxt/user/biz/syspost/SysPostMapper.xml @@ -0,0 +1,44 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/main/java/com/yxt/user/biz/syspost/SysPostQuery.java b/src/main/java/com/yxt/user/biz/syspost/SysPostQuery.java new file mode 100644 index 0000000..5fc6705 --- /dev/null +++ b/src/main/java/com/yxt/user/biz/syspost/SysPostQuery.java @@ -0,0 +1,41 @@ +package com.yxt.user.biz.syspost; + + +import com.yxt.common.core.query.Query; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * Project: anrui_portal(门户建设)
+ * File: SysPostQuery.java
+ * Class: com.yxt.anrui.portal.api.syspost.SysPostQuery
+ * Description: 岗位 查询条件.
+ * Copyright: Copyright (c) 2011
+ * Company: https://gitee.com/liuzp315
+ * Makedate: 2021-08-03 00:24:28
+ * + * @author liupopo + * @version 1.0 + * @since 1.0 + */ +@ApiModel(value = "岗位 查询条件", description = "岗位 查询条件") +@Data +public class SysPostQuery implements Query { + + + @ApiModelProperty("岗位名称") + private String name; + + @ApiModelProperty("职级key") + private String postLevelKey; + + @ApiModelProperty("职级") + private String postLevel; + + @ApiModelProperty("岗位编码") + private String postCode; + + @ApiModelProperty("所属部门sid") + private String orgSid; +} diff --git a/src/main/java/com/yxt/user/biz/syspost/SysPostVo.java b/src/main/java/com/yxt/user/biz/syspost/SysPostVo.java new file mode 100644 index 0000000..8fe7977 --- /dev/null +++ b/src/main/java/com/yxt/user/biz/syspost/SysPostVo.java @@ -0,0 +1,52 @@ +package com.yxt.user.biz.syspost; + + +import com.yxt.common.core.vo.Vo; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * Project: anrui_portal(门户建设)
+ * File: SysPostVo.java
+ * Class: com.yxt.anrui.portal.api.syspost.SysPostVo
+ * Description: 岗位 视图数据对象.
+ * Copyright: Copyright (c) 2011
+ * Company: https://gitee.com/liuzp315
+ * Makedate: 2021-08-03 00:24:28
+ * + * @author liupopo + * @version 1.0 + * @since 1.0 + */ +@ApiModel(value = "岗位 视图数据对象", description = "岗位 视图数据对象") +@Data +public class SysPostVo implements Vo { + + + @ApiModelProperty("岗位名称") + private String name; + + @ApiModelProperty("职级key") + private String postLevelKey; + + @ApiModelProperty("职级") + private String postLevel; + + @ApiModelProperty("岗位编码") + private String postCode; + + @ApiModelProperty("所属部门sid") + private String orgSid; + + @ApiModelProperty("所属部门名称") + private String orgName; + + @ApiModelProperty("岗位sid") + private String sid; + + @ApiModelProperty(value = "上级岗位名称") + private String parentName; + @ApiModelProperty(value = "上级岗位sid") + private String parentSid; +} diff --git a/src/main/java/com/yxt/user/biz/sysrole/SysRole.java b/src/main/java/com/yxt/user/biz/sysrole/SysRole.java new file mode 100644 index 0000000..f861947 --- /dev/null +++ b/src/main/java/com/yxt/user/biz/sysrole/SysRole.java @@ -0,0 +1,48 @@ +package com.yxt.user.biz.sysrole; + +import com.baomidou.mybatisplus.annotation.TableName; +import com.yxt.common.core.domain.BaseEntity; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * Project: anrui_portal(门户建设)
+ * File: SysRole.java
+ * Class: com.yxt.anrui.portal.api.sysrole.SysRole
+ * Description: 角色.
+ * Copyright: Copyright (c) 2011
+ * Company: https://gitee.com/liuzp315
+ * Makedate: 2021-08-03 00:24:29
+ * + * @author liupopo + * @version 1.0 + * @since 1.0 + */ +@ApiModel(value = "角色", description = "角色") +@TableName("sys_role") +@Data +public class SysRole extends BaseEntity { + private static final long serialVersionUID = 1L; + + + @ApiModelProperty("角色名称") + private String name; + + @ApiModelProperty("排序") + private Integer sort; + + @ApiModelProperty("编码") + private String code; + + @ApiModelProperty("1、系统管理员、2、普通角色") + private Integer type; + + @ApiModelProperty("岗位sid") + private String postSid; + + @ApiModelProperty(value = "角色组织层级key") + private String roleType; + @ApiModelProperty(value = "角色组织层级value") + private String roleTypeValue; +} diff --git a/src/main/java/com/yxt/user/biz/sysrole/SysRoleDto.java b/src/main/java/com/yxt/user/biz/sysrole/SysRoleDto.java new file mode 100644 index 0000000..5dca1ca --- /dev/null +++ b/src/main/java/com/yxt/user/biz/sysrole/SysRoleDto.java @@ -0,0 +1,51 @@ +package com.yxt.user.biz.sysrole; + + +import com.yxt.common.core.dto.Dto; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * Project: anrui_portal(门户建设)
+ * File: SysRoleDto.java
+ * Class: com.yxt.anrui.portal.api.sysrole.SysRoleDto
+ * Description: 角色 数据传输对象.
+ * Copyright: Copyright (c) 2011
+ * Company: https://gitee.com/liuzp315
+ * Makedate: 2021-08-03 00:24:29
+ * + * @author liupopo + * @version 1.0 + * @since 1.0 + */ +@ApiModel(value = "角色 数据传输对象", description = "角色 数据传输对象") +@Data +public class SysRoleDto implements Dto { + + + @ApiModelProperty("角色名称") + private String name; + + @ApiModelProperty("排序") + private Integer sort; + + @ApiModelProperty("编码") + private String code; + @ApiModelProperty("备注") + private String remarks; + + @ApiModelProperty("1、系统管理员、2、普通角色") + private Integer type; + + @ApiModelProperty("岗位sid") + private String postSid; + + @ApiModelProperty("岗位名称") + private String postName; + + @ApiModelProperty(value = "角色组织层级key") + private String roleType; + @ApiModelProperty(value = "角色组织层级value") + private String roleTypeValue; +} \ No newline at end of file diff --git a/src/main/java/com/yxt/user/biz/sysrole/SysRoleMapper.java b/src/main/java/com/yxt/user/biz/sysrole/SysRoleMapper.java new file mode 100644 index 0000000..ee1295e --- /dev/null +++ b/src/main/java/com/yxt/user/biz/sysrole/SysRoleMapper.java @@ -0,0 +1,69 @@ +package com.yxt.user.biz.sysrole; + +import com.baomidou.mybatisplus.core.conditions.Wrapper; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.core.toolkit.Constants; +import com.yxt.user.biz.sysuser.SysMenuRoleVoList; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; + +import java.util.List; + +/** + * Project: anrui_portal(门户建设)
+ * File: SysRoleMapper.java
+ * Class: com.yxt.anrui.portal.biz.sysrole.SysRoleMapper
+ * Description: 角色.
+ * Copyright: Copyright (c) 2011
+ * Company: https://gitee.com/liuzp315
+ * Makedate: 2021-08-03 00:24:29
+ * + * @author liupopo + * @version 1.0 + * @since 1.0 + */ +@Mapper +public interface SysRoleMapper extends BaseMapper { + + //@Update("update sys_role set name=#{msg} where id=#{id}") + //IPage voPage(IPage page, @Param(Constants.WRAPPER) QueryWrapper qw); + + IPage selectPageVo(IPage page, @Param(Constants.WRAPPER) Wrapper qw); + + List selectListAllVo(@Param(Constants.WRAPPER) Wrapper qw); + + @Select("select * from sys_role") + List selectListVo(); + + List fetchByUserSid(String userSid); + + List listAllByUserSid(String userSid); + + SysRole fetchByName(String name); + + int deleteBatchSids(List list); + + int deleteBySid(String valueOf); + + SysRoleVo fetchBySid(String sid); + + int updateIsEnable(@Param("sid") String sid, @Param("isEnable") String isEnable); + + String getLevelType(String roleSid); + + String selectRoleSid(String userRoleSid); + + String selectByUserSid(String sid); + + List selectByUser(String userSid); + + List selectRoleList(String menuSid); + + List selectMobileRoleList(String menuSid); + + List selectByRole(@Param("list") List roleSidList, @Param("menuSid") String menuSid,@Param("userSid") String userSid); + + List selectByMobileRole(@Param("list") List roleSidList, @Param("menuSid") String menuSid,@Param("userSid") String userSid); +} \ No newline at end of file diff --git a/src/main/java/com/yxt/user/biz/sysrole/SysRoleMapper.xml b/src/main/java/com/yxt/user/biz/sysrole/SysRoleMapper.xml new file mode 100644 index 0000000..2a8a050 --- /dev/null +++ b/src/main/java/com/yxt/user/biz/sysrole/SysRoleMapper.xml @@ -0,0 +1,134 @@ + + + + + + + + + + + + + + + DELETE + FROM sys_role WHERE sid IN + + #{sid} + + + + DELETE + FROM sys_role + WHERE sid = #{sid} + + + + UPDATE sys_role + SET isEnable = #{isEnable} + WHERE sid = #{sid} + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/main/java/com/yxt/user/biz/sysrole/SysRoleQuery.java b/src/main/java/com/yxt/user/biz/sysrole/SysRoleQuery.java new file mode 100644 index 0000000..cd99d04 --- /dev/null +++ b/src/main/java/com/yxt/user/biz/sysrole/SysRoleQuery.java @@ -0,0 +1,38 @@ +package com.yxt.user.biz.sysrole; + + +import com.yxt.common.core.query.Query; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * Project: anrui_portal(门户建设)
+ * File: SysRoleQuery.java
+ * Class: com.yxt.anrui.portal.api.sysrole.SysRoleQuery
+ * Description: 角色 查询条件.
+ * Copyright: Copyright (c) 2011
+ * Company: https://gitee.com/liuzp315
+ * Makedate: 2021-08-03 00:24:29
+ * + * @author liupopo + * @version 1.0 + * @since 1.0 + */ +@ApiModel(value = "角色 查询条件", description = "角色 查询条件") +@Data +public class SysRoleQuery implements Query { + + + @ApiModelProperty("角色名称") + private String name; + + @ApiModelProperty("排序") + private Integer sort; + + @ApiModelProperty("编码") + private String code; + + @ApiModelProperty("1、系统管理员、2、普通角色") + private Integer type; +} diff --git a/src/main/java/com/yxt/user/biz/sysrole/SysRoleService.java b/src/main/java/com/yxt/user/biz/sysrole/SysRoleService.java new file mode 100644 index 0000000..f32a78e --- /dev/null +++ b/src/main/java/com/yxt/user/biz/sysrole/SysRoleService.java @@ -0,0 +1,184 @@ +package com.yxt.user.biz.sysrole; + +import cn.hutool.core.bean.BeanUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.yxt.user.biz.sysuser.SysMenuRoleVoList; +import com.yxt.user.biz.sysuserrole.SysUserRoleService; +import com.yxt.common.base.service.MybatisBaseService; +import com.yxt.common.base.utils.PagerUtil; +import com.yxt.common.core.query.PagerQuery; +import com.yxt.common.core.vo.PagerVo; +import org.apache.commons.lang3.StringUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.ArrayList; +import java.util.List; + +/** + * Project: anrui_portal(门户建设)
+ * File: SysRoleService.java
+ * Class: com.yxt.anrui.portal.biz.sysrole.SysRoleService
+ * Description: 角色 业务逻辑.
+ * Copyright: Copyright (c) 2011
+ * Company: https://gitee.com/liuzp315
+ * Makedate: 2021-08-03 00:24:29
+ * + * @author liupopo + * @version 1.0 + * @since 1.0 + */ +@Service +public class SysRoleService extends MybatisBaseService { + @Autowired + private SysUserRoleService sysUserRoleService; + public PagerVo listPage(PagerQuery pq) { + SysRoleQuery query = pq.getParams(); + QueryWrapper qw = createQueryWrapper(query); + IPage page = PagerUtil.queryToPage(pq); + IPage pagging = baseMapper.selectPage(page, qw); + PagerVo p = PagerUtil.pageToVo(pagging, null); + return p; + } + + public List listAll(SysRoleQuery query) { + QueryWrapper qw = createQueryWrapper(query); + return baseMapper.selectList(qw); + } + + private QueryWrapper createQueryWrapper(SysRoleQuery query) { + // todo: 这里根据具体业务调整查询条件 + // 多字段Like示例:qw.and(wrapper -> wrapper.like("name", query.getName()).or().like("remark", query.getName())); + QueryWrapper qw = new QueryWrapper<>(); + + + if (StringUtils.isNotBlank(query.getName())) { + qw.like("sr.name", query.getName()); + } + + if (query.getSort() != null) { + qw.eq("sr.sort", query.getSort()); + } + + if (StringUtils.isNotBlank(query.getCode())) { + qw.eq("sr.code", query.getCode()); + } + + if (query.getType() != null) { + qw.eq("sr.type", query.getType()); + } + return qw; + } + + public PagerVo listPageVo(PagerQuery pq) { + SysRoleQuery query = pq.getParams(); + QueryWrapper qw = createQueryWrapper(query); + IPage page = PagerUtil.queryToPage(pq); + IPage pagging = baseMapper.selectPageVo(page, qw); + PagerVo p = PagerUtil.pageToVo(pagging, null); + return p; + } + + public List listAllVo(SysRoleQuery query) { + QueryWrapper qw = createQueryWrapper(query); + return baseMapper.selectListAllVo(qw); + } + + public List listVo() { + return baseMapper.selectListVo(); + } + + public void saveOrUpdateDto(SysRoleDto dto) { + SysRole entity = new SysRole(); + dto.fillEntity(entity); + this.saveOrUpdate(entity); + } + + public SysRoleVo fetchByIdVo(String id) { + SysRole entity = this.fetchById(id); + SysRoleVo vo = new SysRoleVo(); + BeanUtil.copyProperties(entity, vo); + return vo; + } + + public List fetchByUserSid(String userSid) { + return baseMapper.fetchByUserSid(userSid); + } + + public List listAllByUserSid(String userSid) { + return baseMapper.listAllByUserSid(userSid); + } + + public SysRoleVo fetchByName(String name) { + SysRole entity = baseMapper.fetchByName(name); + SysRoleVo vo = new SysRoleVo(); + BeanUtil.copyProperties(entity, vo); + return vo; + } + + /** + * 描述 : <描述函数实现的功能>.
+ *

+ * + * @param sids + * @return + */ + public int delBySids(String sids) { + String[] split = sids.split(","); + if (split.length < 1) { + return 0; + } else if (split.length == 1) { + //删除该角色下的用户关联 + sysUserRoleService.deleteByRoleSid(sids); + return baseMapper.deleteBySid(sids); + } else { + List list = new ArrayList<>(); + for (String sid : split) { + list.add(sid); + } + return baseMapper.deleteBatchSids(list); + } + } + + public SysRoleVo fetchBySidVo(String sid) { + SysRoleVo vo = baseMapper.fetchBySid(sid); + return vo; + } + + public int updateIsEnable(String sid, String isEnable) { + return baseMapper.updateIsEnable(sid, isEnable); + } + + public String getLevelType(String roleSid) { + return baseMapper.getLevelType(roleSid); + } + + public String selectRoleSid(String userRoleSid) { + return baseMapper.selectRoleSid(userRoleSid); + } + + public String selectByUserSid(String sid) { + return baseMapper.selectByUserSid(sid); + } + + public List selectByUser(String userSid) { + return baseMapper.selectByUser(userSid); + } + + public List selectRoleList(String menuSid) { + return baseMapper.selectRoleList(menuSid); + } + + public List selectMobileRoleList(String menuSid) { + return baseMapper.selectMobileRoleList(menuSid); + } + + public List selectByRole(List roleSidList, String menuSid,String userSid) { + return baseMapper.selectByRole(roleSidList,menuSid,userSid); + } + + public List selectByMobileRole(List roleSidList, String menuSid, String userSid) { + return baseMapper.selectByMobileRole(roleSidList,menuSid,userSid); + } +} \ No newline at end of file diff --git a/src/main/java/com/yxt/user/biz/sysrole/SysRoleVo.java b/src/main/java/com/yxt/user/biz/sysrole/SysRoleVo.java new file mode 100644 index 0000000..07e0439 --- /dev/null +++ b/src/main/java/com/yxt/user/biz/sysrole/SysRoleVo.java @@ -0,0 +1,47 @@ +package com.yxt.user.biz.sysrole; + + +import com.yxt.common.core.vo.Vo; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * Project: anrui_portal(门户建设)
+ * File: SysRoleVo.java
+ * Class: com.yxt.anrui.portal.api.sysrole.SysRoleVo
+ * Description: 角色 视图数据对象.
+ * Copyright: Copyright (c) 2011
+ * Company: https://gitee.com/liuzp315
+ * Makedate: 2021-08-03 00:24:29
+ * + * @author liupopo + * @version 1.0 + * @since 1.0 + */ +@ApiModel(value = "角色 视图数据对象", description = "角色 视图数据对象") +@Data +public class SysRoleVo implements Vo { + @ApiModelProperty("角色名称") + private String name; + @ApiModelProperty("排序") + private Integer sort; + @ApiModelProperty("编码") + private String code; + @ApiModelProperty("1、系统管理员、2、普通角色") + private Integer type; + @ApiModelProperty("角色sid") + private String sid; + @ApiModelProperty("说明") + private String remarks; + @ApiModelProperty("是否选中,1:未选中,0:选中") + private String checked; + @ApiModelProperty("是否可用") + private String isEnable; + @ApiModelProperty("岗位sid") + private String postSid; + @ApiModelProperty("岗位名称") + private String postName; + @ApiModelProperty(value = "组织层级") + private String roleTypeValue; +} diff --git a/src/main/java/com/yxt/user/biz/syssource/SysSource.java b/src/main/java/com/yxt/user/biz/syssource/SysSource.java new file mode 100644 index 0000000..8ac8ffe --- /dev/null +++ b/src/main/java/com/yxt/user/biz/syssource/SysSource.java @@ -0,0 +1,76 @@ +package com.yxt.user.biz.syssource; + +import com.baomidou.mybatisplus.annotation.TableName; +import com.yxt.common.core.domain.BaseEntity; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * Project: anrui_portal(门户建设)
+ * File: SysSource.java
+ * Class: com.yxt.anrui.portal.api.syssource.SysSource
+ * Description: 资源表.
+ * Copyright: Copyright (c) 2011
+ * Company: https://gitee.com/liuzp315
+ * Makedate: 2021-08-03 00:24:29
+ * + * @author liupopo + * @version 1.0 + * @since 1.0 + */ +@ApiModel(value = "资源表", description = "资源表") +@TableName("sys_source") +@Data +public class SysSource extends BaseEntity { + private static final long serialVersionUID = 1L; + + + @ApiModelProperty("父资源sid") + private String pSid; + + @ApiModelProperty("资源ID(对应微服务的名称)") + private String sourceId; + + @ApiModelProperty("资源名称(业务模块名称)") + private String sourceName; + + @ApiModelProperty("web页面的url(平台中业务模块跳转地址)") + private String pageUrl; + + @ApiModelProperty("菜单图标地址") + private String iconUrl; + + @ApiModelProperty("资源图标背景颜色") + private String iconBgColor; + + @ApiModelProperty("资源url标识") + private String urlSign; + + @ApiModelProperty("排序号") + private Integer sortNo; + + @ApiModelProperty("资源类别(0.内置Activity 1.内置WebView 2.RePlugin插件 3.原生apk 4.We页面)") + private Integer sourceType; + + @ApiModelProperty("模块的版本(type = 2,3有),移动端专用") + private String ver; + + @ApiModelProperty("apk下载地址(type = 2,3有),移动端专用") + private String sourceUrl; + + @ApiModelProperty("模块的包名,移动端专用") + private String sourcePackage; + + @ApiModelProperty("启动模块的动作(0.启动Activity的包名+类名 1.html地址 2.启动Activity的包名+类名 3.intent-action ),移动端专用") + private String sourceAction; + + @ApiModelProperty("需要用到的json拼接(由目标模块 自行解析),其他参数") + private String sourceExtra; + + @ApiModelProperty("提示数量(没有返回0即可)") + private String noticeNum; + + @ApiModelProperty("RePlugin插件名称(type = 2有),移动端专用") + private String modulePluginName; +} diff --git a/src/main/java/com/yxt/user/biz/syssource/SysSourceDto.java b/src/main/java/com/yxt/user/biz/syssource/SysSourceDto.java new file mode 100644 index 0000000..b1a51ad --- /dev/null +++ b/src/main/java/com/yxt/user/biz/syssource/SysSourceDto.java @@ -0,0 +1,76 @@ +package com.yxt.user.biz.syssource; + + +import com.yxt.common.core.dto.Dto; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * Project: anrui_portal(门户建设)
+ * File: SysSourceDto.java
+ * Class: com.yxt.anrui.portal.api.syssource.SysSourceDto
+ * Description: 资源表 数据传输对象.
+ * Copyright: Copyright (c) 2011
+ * Company: https://gitee.com/liuzp315
+ * Makedate: 2021-08-03 00:24:29
+ * + * @author liupopo + * @version 1.0 + * @since 1.0 + */ +@ApiModel(value = "资源表 数据传输对象", description = "资源表 数据传输对象") +@Data +public class SysSourceDto implements Dto { + + + @ApiModelProperty("父资源sid") + private String pSid; + + @ApiModelProperty("资源ID(对应微服务的名称)") + private String sourceId; + + @ApiModelProperty("资源名称(业务模块名称)") + private String sourceName; + + @ApiModelProperty("web页面的url(平台中业务模块跳转地址)") + private String pageUrl; + + @ApiModelProperty("菜单图标地址") + private String iconUrl; + + @ApiModelProperty("资源图标背景颜色") + private String iconBgColor; + + @ApiModelProperty("资源url标识") + private String urlSign; + + @ApiModelProperty("排序号") + private Integer sortNo; + + @ApiModelProperty("资源类别(0.内置Activity 1.内置WebView 2.RePlugin插件 3.原生apk 4.We页面)") + private Integer sourceType; + + @ApiModelProperty("模块的版本(type = 2,3有),移动端专用") + private String ver; + + @ApiModelProperty("apk下载地址(type = 2,3有),移动端专用") + private String sourceUrl; + + @ApiModelProperty("模块的包名,移动端专用") + private String sourcePackage; + + @ApiModelProperty("启动模块的动作(0.启动Activity的包名+类名 1.html地址 2.启动Activity的包名+类名 3.intent-action ),移动端专用") + private String sourceAction; + + @ApiModelProperty("需要用到的json拼接(由目标模块 自行解析),其他参数") + private String sourceExtra; + + @ApiModelProperty("提示数量(没有返回0即可)") + private String noticeNum; + @ApiModelProperty("RePlugin插件名称(type = 2有),移动端专用") + private String modulePluginName; + @ApiModelProperty("描述") + private String remarks; + +} \ No newline at end of file diff --git a/src/main/java/com/yxt/user/biz/syssource/SysSourceFeign.java b/src/main/java/com/yxt/user/biz/syssource/SysSourceFeign.java new file mode 100644 index 0000000..713ea90 --- /dev/null +++ b/src/main/java/com/yxt/user/biz/syssource/SysSourceFeign.java @@ -0,0 +1,73 @@ +package com.yxt.user.biz.syssource; + +import com.yxt.common.core.query.PagerQuery; +import com.yxt.common.core.result.ResultBean; +import com.yxt.common.core.vo.PagerVo; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.cloud.openfeign.FeignClient; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; + +import java.util.List; + +/** + * Project: anrui_portal(门户建设)
+ * File: SysSourceFeign.java
+ * Class: com.yxt.anrui.portal.api.syssource.SysSourceFeign
+ * Description: 资源表.
+ * Copyright: Copyright (c) 2011
+ * Company: https://gitee.com/liuzp315
+ * Makedate: 2021-08-03 00:24:29
+ * + * @author liupopo + * @version 1.0 + * @since 1.0 + */ +@Api(tags = "资源表") +@FeignClient( + contextId = "anrui-portal-SysSource", + name = "anrui-portal", + path = "v1/syssource", + fallback = SysSourceFeignFallback.class) +public interface SysSourceFeign { + + @ApiOperation("根据条件分页查询数据的列表") + @PostMapping("/listPage") + public ResultBean> listPage(@RequestBody PagerQuery pq); + + @ApiOperation("根据条件查询所有数据列表") + @PostMapping("/listAll") + public ResultBean> listAll(@RequestBody SysSourceQuery query); + @ApiOperation("根据角色sid条件查询所有数据列表") + @PostMapping("/listAllByRoleSid") + public ResultBean> listAllByRoleSid(@RequestBody SysSourceQuery query); + + @ApiOperation("所有数据列表") + @GetMapping("/list") + public ResultBean> list(); + + @ApiOperation("新增保存") + @PostMapping("/save") + public ResultBean save(@RequestBody SysSourceDto dto); + + @ApiOperation("修改保存") + @PostMapping("/update/{sid}") + public ResultBean update(@RequestBody SysSourceDto dto,@PathVariable("sid") String sid); + + @ApiOperation("删除记录") + @GetMapping("/del/{ids}") + public ResultBean del(@PathVariable("ids") String ids); + @ApiOperation("删除记录 根据sid") + @GetMapping("/delBySids/{sids}") + public ResultBean delBySids(@PathVariable("sids") String sids); + + @ApiOperation("获取一条记录") + @GetMapping("/fetch/{id}") + public ResultBean fetch(@PathVariable("id") String id); + @ApiOperation("获取一条记录 根据sid") + @GetMapping("/fetchBySid/{sid}") + public ResultBean fetchBySid(@PathVariable("sid") String sid); +} \ No newline at end of file diff --git a/src/main/java/com/yxt/user/biz/syssource/SysSourceFeignFallback.java b/src/main/java/com/yxt/user/biz/syssource/SysSourceFeignFallback.java new file mode 100644 index 0000000..872d07f --- /dev/null +++ b/src/main/java/com/yxt/user/biz/syssource/SysSourceFeignFallback.java @@ -0,0 +1,81 @@ +package com.yxt.user.biz.syssource; + +import com.yxt.common.core.query.PagerQuery; +import com.yxt.common.core.result.ResultBean; +import com.yxt.common.core.vo.PagerVo; +import org.springframework.stereotype.Component; + +import java.util.List; + +/** + * Project: anrui_portal(门户建设)
+ * File: SysSourceFeignFallback.java
+ * Class: com.yxt.anrui.portal.api.syssource.SysSourceFeignFallback
+ * Description: 资源表.
+ * Copyright: Copyright (c) 2011
+ * Company: https://gitee.com/liuzp315
+ * Makedate: 2021-08-03 00:24:29
+ * + * @author liupopo + * @version 1.0 + * @since 1.0 + */ +@Component +public class SysSourceFeignFallback implements SysSourceFeign { + + @Override + public ResultBean> listPage(PagerQuery pq){ + ResultBean rb = ResultBean.fireFail(); + return rb.setMsg("接口anrui_portal/syssource/listPage无法访问"); + } + + @Override + public ResultBean> listAll(SysSourceQuery query){ + ResultBean rb = ResultBean.fireFail(); + return rb.setMsg("接口anrui_portal/syssource/listAll无法访问"); + } + + @Override + public ResultBean> listAllByRoleSid(SysSourceQuery query) { + ResultBean rb = ResultBean.fireFail(); + return rb.setMsg("接口anrui_portal/syssource/listAllByRoleSid无法访问"); + } + + @Override + public ResultBean> list(){ + ResultBean rb = ResultBean.fireFail(); + return rb.setMsg("接口anrui_portal/syssource/list无法访问"); + } + + @Override + public ResultBean save(SysSourceDto dto){ + return ResultBean.fireFail().setMsg("接口anrui_portal/syssource/save无法访问"); + } + + @Override + public ResultBean update(SysSourceDto dto,String sid){ + return ResultBean.fireFail().setMsg("接口anrui_portal/syssource/update无法访问"); + } + + @Override + public ResultBean del(String ids){ + return ResultBean.fireFail().setMsg("接口anrui_portal/syssource/del无法访问"); + } + + @Override + public ResultBean delBySids(String sids) { + return ResultBean.fireFail().setMsg("接口anrui_portal/syssource/delBySids无法访问"); + } + + @Override + public ResultBean fetch(String id){ + ResultBean rb = ResultBean.fireFail(); + return rb.setMsg("接口anrui_portal/syssource/fetch无法访问"); + } + + @Override + public ResultBean fetchBySid(String sid) { + ResultBean rb = ResultBean.fireFail(); + return rb.setMsg("接口anrui_portal/syssource/fetchBySid无法访问"); + } +} \ No newline at end of file diff --git a/src/main/java/com/yxt/user/biz/syssource/SysSourceMapper.java b/src/main/java/com/yxt/user/biz/syssource/SysSourceMapper.java new file mode 100644 index 0000000..cc6fe8a --- /dev/null +++ b/src/main/java/com/yxt/user/biz/syssource/SysSourceMapper.java @@ -0,0 +1,54 @@ +package com.yxt.user.biz.syssource; + +import com.baomidou.mybatisplus.core.conditions.Wrapper; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.core.toolkit.Constants; +import com.yxt.user.biz.sysfunction.SysFunctionTreeVo; +import com.yxt.user.biz.sysmenu.SysMenuTreeVo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; + +import java.util.List; + +/** + * Project: anrui_portal(门户建设)
+ * File: SysSourceMapper.java
+ * Class: com.yxt.anrui.portal.biz.syssource.SysSourceMapper
+ * Description: 资源表.
+ * Copyright: Copyright (c) 2011
+ * Company: https://gitee.com/liuzp315
+ * Makedate: 2021-08-03 00:24:29
+ * + * @author liupopo + * @version 1.0 + * @since 1.0 + */ +@Mapper +public interface SysSourceMapper extends BaseMapper { + + //@Update("update sys_source set name=#{msg} where id=#{id}") + //IPage voPage(IPage page, @Param(Constants.WRAPPER) QueryWrapper qw); + + IPage selectPageVo(IPage page, @Param(Constants.WRAPPER) Wrapper qw); + + List selectListAllVo(@Param(Constants.WRAPPER) Wrapper qw); + + @Select("select * from sys_source") + List selectListVo(); + + @Select("select * from sys_source where sid=#{sid}") + SysSource fetchBySidVo(@Param("sid") String sid); + + List listAllByRoleSid(String roleSid); + + /** + * 查询所有的资源列表 + * + * @return + */ + List listMenuTreeVo(); + + List listFunctionTreeVo(String name); +} \ No newline at end of file diff --git a/src/main/java/com/yxt/user/biz/syssource/SysSourceMapper.xml b/src/main/java/com/yxt/user/biz/syssource/SysSourceMapper.xml new file mode 100644 index 0000000..6b06f08 --- /dev/null +++ b/src/main/java/com/yxt/user/biz/syssource/SysSourceMapper.xml @@ -0,0 +1,45 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/main/java/com/yxt/user/biz/syssource/SysSourceQuery.java b/src/main/java/com/yxt/user/biz/syssource/SysSourceQuery.java new file mode 100644 index 0000000..2b7cbfd --- /dev/null +++ b/src/main/java/com/yxt/user/biz/syssource/SysSourceQuery.java @@ -0,0 +1,78 @@ +package com.yxt.user.biz.syssource; + + +import com.yxt.common.core.query.Query; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * Project: anrui_portal(门户建设)
+ * File: SysSourceQuery.java
+ * Class: com.yxt.anrui.portal.api.syssource.SysSourceQuery
+ * Description: 资源表 查询条件.
+ * Copyright: Copyright (c) 2011
+ * Company: https://gitee.com/liuzp315
+ * Makedate: 2021-08-03 00:24:29
+ * + * @author liupopo + * @version 1.0 + * @since 1.0 + */ +@ApiModel(value = "资源表 查询条件", description = "资源表 查询条件") +@Data +public class SysSourceQuery implements Query { + + + @ApiModelProperty("父资源sid") + private String pSid; + + @ApiModelProperty("资源ID(对应微服务的名称)") + private String sourceId; + + @ApiModelProperty("角色sid") + private String roleSid; + + @ApiModelProperty("资源名称(业务模块名称)") + private String sourceName; + + @ApiModelProperty("web页面的url(平台中业务模块跳转地址)") + private String pageUrl; + + @ApiModelProperty("菜单图标地址") + private String iconUrl; + + @ApiModelProperty("资源图标背景颜色") + private String iconBgColor; + + @ApiModelProperty("资源url标识") + private String urlSign; + + @ApiModelProperty("排序号") + private Integer sortNo; + + @ApiModelProperty("资源类别(0.内置Activity 1.内置WebView 2.RePlugin插件 3.原生apk 4.We页面)") + private Integer sourceType; + + @ApiModelProperty("模块的版本(type = 2,3有),移动端专用") + private String ver; + + @ApiModelProperty("apk下载地址(type = 2,3有),移动端专用") + private String sourceUrl; + + @ApiModelProperty("模块的包名,移动端专用") + private String sourcePackage; + + @ApiModelProperty("启动模块的动作(0.启动Activity的包名+类名 1.html地址 2.启动Activity的包名+类名 3.intent-action ),移动端专用") + private String sourceAction; + + @ApiModelProperty("需要用到的json拼接(由目标模块 自行解析),其他参数") + private String sourceExtra; + + @ApiModelProperty("提示数量(没有返回0即可)") + private String noticeNum; + + @ApiModelProperty("RePlugin插件名称(type = 2有),移动端专用") + private String modulePluginName; + +} diff --git a/src/main/java/com/yxt/user/biz/syssource/SysSourceService.java b/src/main/java/com/yxt/user/biz/syssource/SysSourceService.java new file mode 100644 index 0000000..acb5971 --- /dev/null +++ b/src/main/java/com/yxt/user/biz/syssource/SysSourceService.java @@ -0,0 +1,172 @@ +package com.yxt.user.biz.syssource; + +import cn.hutool.core.bean.BeanUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.yxt.user.biz.sysfunction.SysFunctionTreeVo; +import com.yxt.user.biz.sysmenu.SysMenuTreeVo; +import com.yxt.common.base.service.MybatisBaseService; +import com.yxt.common.base.utils.PagerUtil; +import com.yxt.common.core.query.PagerQuery; +import com.yxt.common.core.vo.PagerVo; +import org.apache.commons.lang3.StringUtils; +import org.springframework.stereotype.Service; + +import java.util.List; + +/** + * Project: anrui_portal(门户建设)
+ * File: SysSourceService.java
+ * Class: com.yxt.anrui.portal.biz.syssource.SysSourceService
+ * Description: 资源表 业务逻辑.
+ * Copyright: Copyright (c) 2011
+ * Company: https://gitee.com/liuzp315
+ * Makedate: 2021-08-03 00:24:29
+ * + * @author liupopo + * @version 1.0 + * @since 1.0 + */ +@Service +public class SysSourceService extends MybatisBaseService { + public PagerVo listPage(PagerQuery pq) { + SysSourceQuery query = pq.getParams(); + QueryWrapper qw = createQueryWrapper(query); + IPage page = PagerUtil.queryToPage(pq); + IPage pagging = baseMapper.selectPage(page, qw); + PagerVo p = PagerUtil.pageToVo(pagging, null); + return p; + } + public List listAll(SysSourceQuery query) { + QueryWrapper qw = createQueryWrapper(query); + return baseMapper.selectList(qw); + } + private QueryWrapper createQueryWrapper(SysSourceQuery query) { + // todo: 这里根据具体业务调整查询条件 + // 多字段Like示例:qw.and(wrapper -> wrapper.like("name", query.getName()).or().like("remark", query.getName())); + QueryWrapper qw = new QueryWrapper<>(); + + + if (StringUtils.isNotBlank(query.getPSid())) { + qw.eq("pSid", query.getPSid()); + } + + if (StringUtils.isNotBlank(query.getSourceId())) { + qw.eq("sourceId", query.getSourceId()); + } + + if (StringUtils.isNotBlank(query.getSourceName())) { + qw.like("sourceName", query.getSourceName()); + } + + if (StringUtils.isNotBlank(query.getPageUrl())) { + qw.eq("pageUrl", query.getPageUrl()); + } + + if (query.getIconUrl() != null) { + qw.eq("iconUrl", query.getIconUrl()); + } + + if (StringUtils.isNotBlank(query.getIconBgColor())) { + qw.eq("iconBgColor", query.getIconBgColor()); + } + + if (StringUtils.isNotBlank(query.getUrlSign())) { + qw.eq("urlSign", query.getUrlSign()); + } + + if (query.getSortNo() != null) { + qw.eq("sortNo", query.getSortNo()); + } + + if (query.getSourceType() != null) { + qw.eq("sourceType", query.getSourceType()); + } + + if (StringUtils.isNotBlank(query.getVer())) { + qw.eq("ver", query.getVer()); + } + + if (StringUtils.isNotBlank(query.getSourceUrl())) { + qw.eq("sourceUrl", query.getSourceUrl()); + } + + if (StringUtils.isNotBlank(query.getSourcePackage())) { + qw.eq("sourcePackage", query.getSourcePackage()); + } + + if (StringUtils.isNotBlank(query.getSourceAction())) { + qw.eq("sourceAction", query.getSourceAction()); + } + + if (StringUtils.isNotBlank(query.getSourceExtra())) { + qw.eq("sourceExtra", query.getSourceExtra()); + } + + if (StringUtils.isNotBlank(query.getNoticeNum())) { + qw.eq("noticeNum", query.getNoticeNum()); + } + + if (StringUtils.isNotBlank(query.getModulePluginName())) { + qw.eq("modulePluginName", query.getModulePluginName()); + } + return qw; + } + + public PagerVo listPageVo(PagerQuery pq) { + SysSourceQuery query = pq.getParams(); + QueryWrapper qw = createQueryWrapper(query); + IPage page = PagerUtil.queryToPage(pq); + IPage pagging = baseMapper.selectPageVo(page, qw); + PagerVo p = PagerUtil.pageToVo(pagging, null); + return p; + } + + public List listAllVo(SysSourceQuery query) { + QueryWrapper qw = createQueryWrapper(query); + return baseMapper.selectListAllVo(qw); + } + + public List listVo() { + return baseMapper.selectListVo(); + } + + public void saveOrUpdateDto(SysSourceDto dto){ + SysSource entity = new SysSource(); + dto.fillEntity(entity); + this.saveOrUpdate(entity); + } + + public SysSourceVo fetchByIdVo(String id){ + SysSource entity = this.fetchById(id); + SysSourceVo vo = new SysSourceVo(); + BeanUtil.copyProperties(entity, vo); + return vo; + } + + public SysSourceVo fetchBySidVo(String sid) { + SysSource entity = baseMapper.fetchBySidVo(sid); + SysSourceVo vo = new SysSourceVo(); + BeanUtil.copyProperties(entity, vo); + return vo; + } + + public List listAllByRoleSid(SysSourceQuery query) { + return baseMapper.listAllByRoleSid(query.getRoleSid()); + } + + /** + * 查询所有的资源列表 + * + * @return + */ + public List listMenuTreeVo() { + return baseMapper.listMenuTreeVo(); + } + + public List listFunctionTreeVo(String name) { + return baseMapper.listFunctionTreeVo(name); + } + + +} \ No newline at end of file diff --git a/src/main/java/com/yxt/user/biz/syssource/SysSourceVo.java b/src/main/java/com/yxt/user/biz/syssource/SysSourceVo.java new file mode 100644 index 0000000..a543c66 --- /dev/null +++ b/src/main/java/com/yxt/user/biz/syssource/SysSourceVo.java @@ -0,0 +1,85 @@ +package com.yxt.user.biz.syssource; + + +import com.yxt.user.biz.sysmenu.SysMenuVo; +import com.yxt.common.core.vo.Vo; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.List; + +/** + * Project: anrui_portal(门户建设)
+ * File: SysSourceVo.java
+ * Class: com.yxt.user.biz.syssource.SysSourceVo
+ * Description: 资源表 视图数据对象.
+ * Copyright: Copyright (c) 2011
+ * Company: https://gitee.com/liuzp315
+ * Makedate: 2021-08-03 00:24:29
+ * + * @author liupopo + * @version 1.0 + * @since 1.0 + */ +@ApiModel(value = "资源表 视图数据对象", description = "资源表 视图数据对象") +@Data +public class SysSourceVo implements Vo { + + + @ApiModelProperty("父资源sid") + private String pSid; + + @ApiModelProperty("资源ID(对应微服务的名称)") + private String sourceId; + + @ApiModelProperty("资源名称(业务模块名称)") + private String sourceName; + + @ApiModelProperty("web页面的url(平台中业务模块跳转地址)") + private String pageUrl; + + @ApiModelProperty("菜单图标地址") + private String iconUrl; + + @ApiModelProperty("资源图标背景颜色") + private String iconBgColor; + + @ApiModelProperty("资源url标识") + private String urlSign; + + @ApiModelProperty("排序号") + private Integer sortNo; + + @ApiModelProperty("资源类别(0.内置Activity 1.内置WebView 2.RePlugin插件 3.原生apk 4.We页面)") + private Integer sourceType; + + @ApiModelProperty("模块的版本(type = 2,3有),移动端专用") + private String ver; + + @ApiModelProperty("apk下载地址(type = 2,3有),移动端专用") + private String sourceUrl; + + @ApiModelProperty("模块的包名,移动端专用") + private String sourcePackage; + + @ApiModelProperty("启动模块的动作(0.启动Activity的包名+类名 1.html地址 2.启动Activity的包名+类名 3.intent-action ),移动端专用") + private String sourceAction; + + @ApiModelProperty("需要用到的json拼接(由目标模块 自行解析),其他参数") + private String sourceExtra; + + @ApiModelProperty("提示数量(没有返回0即可)") + private String noticeNum; + + @ApiModelProperty("RePlugin插件名称(type = 2有),移动端专用") + private String modulePluginName; + @ApiModelProperty("sid") + private String sid; + @ApiModelProperty("是否选中 1没有选中,0选中") + private String checked; + @ApiModelProperty("描述") + private String remarks; + @ApiModelProperty("菜单集合") + private List children; +} diff --git a/src/main/java/com/yxt/user/biz/sysstaffinfo/AppContactsDetailsVo.java b/src/main/java/com/yxt/user/biz/sysstaffinfo/AppContactsDetailsVo.java new file mode 100644 index 0000000..a9edb5a --- /dev/null +++ b/src/main/java/com/yxt/user/biz/sysstaffinfo/AppContactsDetailsVo.java @@ -0,0 +1,34 @@ +package com.yxt.user.biz.sysstaffinfo; + +import com.yxt.common.core.vo.Vo; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * @Description + * @Author liuguohui + * @Date 2021/9/17 + */ +@ApiModel(value = "App通讯录查看详情") +@Data +public class AppContactsDetailsVo implements Vo { + +// @ApiModelProperty("人员sid") +// private String sid; + + @ApiModelProperty("姓名") + private String name; + + @ApiModelProperty("手机号") + private String mobile; + + @ApiModelProperty("头像") + private String headImage; + + @ApiModelProperty("部门名称(路径)") + private String orgNamePath; + + @ApiModelProperty("职位") + private String position; +} diff --git a/src/main/java/com/yxt/user/biz/sysstaffinfo/PcSysStaffQuery.java b/src/main/java/com/yxt/user/biz/sysstaffinfo/PcSysStaffQuery.java new file mode 100644 index 0000000..adec731 --- /dev/null +++ b/src/main/java/com/yxt/user/biz/sysstaffinfo/PcSysStaffQuery.java @@ -0,0 +1,18 @@ +package com.yxt.user.biz.sysstaffinfo; + +import com.yxt.common.core.query.Query; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * @Author dimengzhe + * @Date 2022/5/20 15:47 + * @Description + */ +@Data +public class PcSysStaffQuery implements Query { + private static final long serialVersionUID = 1858291601540877140L; + @ApiModelProperty(value = "业务员sid",required = false) + private String staffSid; + +} diff --git a/src/main/java/com/yxt/user/biz/sysstaffinfo/PcSysStaffVo.java b/src/main/java/com/yxt/user/biz/sysstaffinfo/PcSysStaffVo.java new file mode 100644 index 0000000..1605bfd --- /dev/null +++ b/src/main/java/com/yxt/user/biz/sysstaffinfo/PcSysStaffVo.java @@ -0,0 +1,19 @@ +package com.yxt.user.biz.sysstaffinfo; + +import com.yxt.common.core.vo.Vo; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * @Author dimengzhe + * @Date 2022/5/20 15:44 + * @Description + */ +@Data +public class PcSysStaffVo implements Vo { + private static final long serialVersionUID = -9042032921079833819L; + @ApiModelProperty("用户sid") + private String userSid; + @ApiModelProperty("人员") + private String staffName; +} diff --git a/src/main/java/com/yxt/user/biz/sysstaffinfo/SysStaffQuery.java b/src/main/java/com/yxt/user/biz/sysstaffinfo/SysStaffQuery.java new file mode 100644 index 0000000..4661505 --- /dev/null +++ b/src/main/java/com/yxt/user/biz/sysstaffinfo/SysStaffQuery.java @@ -0,0 +1,30 @@ +package com.yxt.user.biz.sysstaffinfo; + +import com.fasterxml.jackson.annotation.JsonFormat; +import com.yxt.common.core.query.Query; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotBlank; +import javax.validation.constraints.NotNull; +import java.util.Date; + +/** + * @Author dimengzhe + * @Date 2022/2/15 15:22 + * @Description + */ +@Data +public class SysStaffQuery implements Query { + private static final long serialVersionUID = -7345786610678948794L; + + @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8") + @ApiModelProperty(value = "离职日期") + @NotNull(message = "离职日期不能为空") + private Date quitDate; + @ApiModelProperty(value = "离职原因") + @NotBlank(message = "离职原因不能为空") + private String quitReason; + @ApiModelProperty(value = "员工sid") + private String sid; +} diff --git a/src/main/java/com/yxt/user/biz/sysstaffinfo/SysStaffinfo.java b/src/main/java/com/yxt/user/biz/sysstaffinfo/SysStaffinfo.java new file mode 100644 index 0000000..e4d96e7 --- /dev/null +++ b/src/main/java/com/yxt/user/biz/sysstaffinfo/SysStaffinfo.java @@ -0,0 +1,173 @@ +package com.yxt.user.biz.sysstaffinfo; + +import com.baomidou.mybatisplus.annotation.TableName; +import com.yxt.common.core.domain.BaseEntity; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.Date; + +/** + * Project: anrui_portal(门户建设)
+ * File: SysStaffinfo.java
+ * Class: com.yxt.anrui.portal.api.sysstaffinfo.SysStaffinfo
+ * Description: 人员基础信息表.
+ * Copyright: Copyright (c) 2011
+ * Company: https://gitee.com/liuzp315
+ * Makedate: 2021-08-03 00:24:30
+ * + * @author liupopo + * @version 1.0 + * @since 1.0 + */ +@ApiModel(value = "人员基础信息表", description = "人员基础信息表") +@TableName("sys_staffinfo") +@Data +public class SysStaffinfo extends BaseEntity { + private static final long serialVersionUID = 1L; + + @ApiModelProperty("工号") + private String jobNumber; + @ApiModelProperty("姓名") + private String name; + @ApiModelProperty("性别key:1男,2女") + private Integer genderKey; + @ApiModelProperty(value = "性别") + private String gender; + @ApiModelProperty("身份证号") + private String idNo; + @ApiModelProperty("证件有效期") + private String idTerm; + @ApiModelProperty("生日") + private Date birthday; + @ApiModelProperty("民族") + private String national; + @ApiModelProperty(value = "民族key") + private String nationalKey; + @ApiModelProperty("籍贯") + private String nativePlace; + @ApiModelProperty(value = "省") + private String province; + @ApiModelProperty(value = "市") + private String city; + @ApiModelProperty(value = "县区") + private String county; + @ApiModelProperty(value = "省code") + private String provinceCode; + @ApiModelProperty(value = "市code") + private String cityCode; + @ApiModelProperty(value = "县区code") + private String countyCode; + @ApiModelProperty("住址") + private String address; + @ApiModelProperty("手机号") + private String mobile; + @ApiModelProperty("邮箱") + private String email; + @ApiModelProperty(value = "紧急联系人") + private String emergencyContact; + @ApiModelProperty(value = "紧急联系电话") + private String emergencyMobile; + @ApiModelProperty("政治面貌") + private String poliCode; + @ApiModelProperty(value = "政治面貌key") + private String poliCodeKey; + @ApiModelProperty("婚姻状况") + private String maritalStatus; + @ApiModelProperty("婚姻状况key") + private String maritalStatusKey; + @ApiModelProperty("员工类型(无类型、全职、兼职、实习、劳务派遣、退休返聘、劳务外包)") + private String personType; + @ApiModelProperty("员工类型key") + private String personTypeKey; + @ApiModelProperty("入职时间") + private Date joinCompnyDate; + @ApiModelProperty("试用期(无试用期、1个月、2个月、3个月、其他)") + private String probPeriod; + @ApiModelProperty("试用期key") + private String probPeriodKey; + @ApiModelProperty("计划转正日期") + private Date plannedConfirmDate; + @ApiModelProperty("实际转正日期") + private Date confirmationDate; + @ApiModelProperty("银行卡号") + private String bankCardNo; + @ApiModelProperty("开户行") + private String openBank; + @ApiModelProperty("身份证(人像面)") + private String idCardA; + @ApiModelProperty("身份证(国徽面)") + private String idCardB; + @ApiModelProperty("学历证书") + private String diploma; + @ApiModelProperty("学位证书") + private String degreeCertificate; + @ApiModelProperty("前公司离职证明") + private String leaveCertificate; + @ApiModelProperty("员工照片") + private String photo; + @ApiModelProperty("姓名的拼音(全)") + private String pinYinName; + @ApiModelProperty("姓名拼音的首字母(特殊的#表示)") + private String firstPinYinLabel; + @ApiModelProperty(value = "毕业院校") + private String graduate; + @ApiModelProperty(value = "学历/专业") + private String education; + private String educationKey; + @ApiModelProperty(value = "职称") + private String title; + @ApiModelProperty(value = "资格认证") + private String qualification; + @ApiModelProperty(value = "驾照类型") + private String licenseType; + @ApiModelProperty(value = "驾照类型key") + private String licenseTypeKey; + @ApiModelProperty(value = "意外险参保:1是,0否") + private Integer isHaveInsurance; + @ApiModelProperty(value = "意外险参保时间") + private Date insuranceStartDate; + @ApiModelProperty(value = "意外险参保终止日期") + private Date insuranceEndDate; + @ApiModelProperty(value = "意外险参保地") + private String insuranceAddr; + + @ApiModelProperty(value = "养老:1是,0否") + private Integer isHaveAged; + @ApiModelProperty(value = "医疗:1是,0否") + private Integer isHaveMedical; + @ApiModelProperty(value = "工伤:1是,0否") + private Integer isHaveInjury; + @ApiModelProperty(value = "失业:1是,0否") + private Integer isHaveUnemploy; + @ApiModelProperty(value = "社保参保地") + private String insuredPlace; + @ApiModelProperty(value = "纸质档案保管地") + private String paperPlace; + + @ApiModelProperty(value = "合同起止日期") + private Date contractStartDate; + @ApiModelProperty(value = "合同结束日期") + private Date contractEndDate; + @ApiModelProperty(value = "离职日期") + private Date quitDate; + @ApiModelProperty(value = "离职原因") + private String quitReason; + + //=====================================================================// + @ApiModelProperty("首次参加工作时间") + private Date jobDateStart; + @ApiModelProperty("户籍类型") + private String residenceType; + @ApiModelProperty("个人社保账号") + private String socialAccount; + @ApiModelProperty("个人公积金账号") + private String fundAccount; + @ApiModelProperty("职位") + private String position; + @ApiModelProperty("岗位职级") + private String postRank; + @ApiModelProperty("身份证地址") + private String idAddrs; +} diff --git a/src/main/java/com/yxt/user/biz/sysstaffinfo/SysStaffinfoAppContactsSearchVo.java b/src/main/java/com/yxt/user/biz/sysstaffinfo/SysStaffinfoAppContactsSearchVo.java new file mode 100644 index 0000000..1dc4ac4 --- /dev/null +++ b/src/main/java/com/yxt/user/biz/sysstaffinfo/SysStaffinfoAppContactsSearchVo.java @@ -0,0 +1,34 @@ +package com.yxt.user.biz.sysstaffinfo; + +import com.yxt.common.core.vo.Vo; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * @Description + * @Author liuguohui + * @Date 2021/9/24 + */ +@ApiModel(value = "App通讯录(搜索)") +@Data +public class SysStaffinfoAppContactsSearchVo implements Vo { + + @ApiModelProperty("人员sid") + private String sid; + + @ApiModelProperty("用户头像") + private String headImage; + + @ApiModelProperty("姓名") + private String name; + + @ApiModelProperty("手机号") + private String mobile; + + @ApiModelProperty("职位") + private String position; + + @ApiModelProperty("部门名称") + private String orgName; +} diff --git a/src/main/java/com/yxt/user/biz/sysstaffinfo/SysStaffinfoAppContactsVo.java b/src/main/java/com/yxt/user/biz/sysstaffinfo/SysStaffinfoAppContactsVo.java new file mode 100644 index 0000000..2d8e9e0 --- /dev/null +++ b/src/main/java/com/yxt/user/biz/sysstaffinfo/SysStaffinfoAppContactsVo.java @@ -0,0 +1,34 @@ +package com.yxt.user.biz.sysstaffinfo; + +import com.yxt.common.core.vo.Vo; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * @Description + * @Author liuguohui + * @Date 2021/9/16 + */ +@ApiModel(value = "App通讯录") +@Data +public class SysStaffinfoAppContactsVo implements Vo { + + @ApiModelProperty("人员sid") + private String sid; + + @ApiModelProperty("姓名") + private String name; + + @ApiModelProperty("手机号") + private String mobile; + + @ApiModelProperty("用户头像") + private String headImage; + + @ApiModelProperty("姓名的拼音(全)") + private String pinYinName; + + @ApiModelProperty("姓名拼音的首字母(特殊的#表示)") + private String firstPinYinLabel; +} diff --git a/src/main/java/com/yxt/user/biz/sysstaffinfo/SysStaffinfoDetailsVo.java b/src/main/java/com/yxt/user/biz/sysstaffinfo/SysStaffinfoDetailsVo.java new file mode 100644 index 0000000..5e37e0d --- /dev/null +++ b/src/main/java/com/yxt/user/biz/sysstaffinfo/SysStaffinfoDetailsVo.java @@ -0,0 +1,155 @@ +package com.yxt.user.biz.sysstaffinfo; + +import com.yxt.user.biz.sysstafforg.SysStaffOrgDetailsVo; +import com.yxt.user.biz.sysstaffpost.SysStaffPostDetailsVo; +import com.yxt.common.core.vo.Vo; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * @Author dimengzhe + * @Date 2022/2/11 16:12 + * @Description 员工信息的编辑初始化和详情返回数据 + */ +@Data +public class SysStaffinfoDetailsVo implements Vo { + private static final long serialVersionUID = 1232171677690215067L; + + @ApiModelProperty(value = "工号") + private String jobNumber; + + @ApiModelProperty(value = "姓名") + private String name; + @ApiModelProperty(value = "性别key") + private Integer genderKey; + @ApiModelProperty(value = "性别") + private String gender; + @ApiModelProperty(value = "身份证号") + private String idNo; + @ApiModelProperty(value = "证件有效期") + private String idTerm; + @ApiModelProperty("生日") + private String birthday; + @ApiModelProperty(value = "民族") + private String national; + @ApiModelProperty(value = "民族key") + private String nationalKey; + @ApiModelProperty("籍贯") + private String nativePlace; + @ApiModelProperty(value = "省") + private String province; + @ApiModelProperty(value = "市") + private String city; + @ApiModelProperty(value = "县区") + private String county; + @ApiModelProperty(value = "省code") + private String provinceCode; + @ApiModelProperty(value = "市code") + private String cityCode; + @ApiModelProperty(value = "县区code") + private String countyCode; + @ApiModelProperty("住址") + private String address; + @ApiModelProperty(value = "手机号") + private String mobile; + @ApiModelProperty("邮箱") + private String email; + @ApiModelProperty(value = "紧急联系人") + private String emergencyContact; + @ApiModelProperty(value = "紧急联系电话") + private String emergencyMobile; + @ApiModelProperty("政治面貌") + private String poliCode; + @ApiModelProperty(value = "政治面貌key") + private String poliCodeKey; + @ApiModelProperty("婚姻状况") + private String maritalStatus; + @ApiModelProperty("婚姻状况key") + private String maritalStatusKey; + @ApiModelProperty("员工类型(无类型、全职、兼职、实习、劳务派遣、退休返聘、劳务外包)") + private String personType; + @ApiModelProperty("员工类型key") + private String personTypeKey; + @ApiModelProperty("入职时间") + private String joinCompnyDate; + @ApiModelProperty("试用期(无试用期、1个月、2个月、3个月、其他)") + private String probPeriod; + @ApiModelProperty("试用期key") + private String probPeriodKey; + @ApiModelProperty("计划转正日期") + private String plannedConfirmDate; + @ApiModelProperty("实际转正日期") + private String confirmationDate; + @ApiModelProperty("银行卡号") + private String bankCardNo; + @ApiModelProperty("开户行") + private String openBank; + @ApiModelProperty("身份证(人像面)") + private String idCardA; + @ApiModelProperty("身份证(国徽面)") + private String idCardB; + @ApiModelProperty("学历证书") + private String diploma; + @ApiModelProperty("学位证书") + private String degreeCertificate; + @ApiModelProperty("前公司离职证明") + private String leaveCertificate; + @ApiModelProperty("员工照片") + private String photo; + @ApiModelProperty(value = "员工部门信息") + private SysStaffOrgDetailsVo sysStaffOrg; + @ApiModelProperty(value = "员工岗位信息") + private SysStaffPostDetailsVo sysStaffPost; + + //===========================================// + @ApiModelProperty(value = "毕业院校") + private String graduate; + @ApiModelProperty(value = "学历/专业") + private String education; + @ApiModelProperty(value = "职称") + private String title; + @ApiModelProperty(value = "资格认证") + private String qualification; + @ApiModelProperty(value = "驾照类型") + private String licenseType; + @ApiModelProperty(value = "驾照类型key") + private String licenseTypeKey; + @ApiModelProperty(value = "意外险参保:1是,0否") + private Integer isHaveInsurance; + @ApiModelProperty(value = "意外险参保:1是,0否") + private String isHaveInsuranceValue; + @ApiModelProperty(value = "意外险参保时间") + private String insuranceStartDate; + @ApiModelProperty(value = "意外险参保终止日期") + private String insuranceEndDate; + @ApiModelProperty(value = "意外险参保地") + private String insuranceAddr; + @ApiModelProperty(value = "养老:1是,0否") + private Integer isHaveAged; + @ApiModelProperty(value = "养老:1是,0否") + private String isHaveAgedValue; + @ApiModelProperty(value = "医疗:1是,0否") + private Integer isHaveMedical; + @ApiModelProperty(value = "医疗:1是,0否") + private String isHaveMedicalValue; + @ApiModelProperty(value = "工伤:1是,0否") + private Integer isHaveInjury; + @ApiModelProperty(value = "工伤:1是,0否") + private String isHaveInjuryValue; + @ApiModelProperty(value = "失业:1是,0否") + private Integer isHaveUnemploy; + @ApiModelProperty(value = "失业:1是,0否") + private String isHaveUnemployValue; + @ApiModelProperty(value = "社保参保地") + private String insuredPlace; + @ApiModelProperty(value = "纸质档案保管地") + private String paperPlace; + @ApiModelProperty(value = "合同起止日期") + private String contractStartDate; + @ApiModelProperty(value = "合同结束日期") + private String contractEndDate; + @ApiModelProperty(value = "离职日期") + private String quitDate; + @ApiModelProperty(value = "离职原因") + private String quitReason; +} diff --git a/src/main/java/com/yxt/user/biz/sysstaffinfo/SysStaffinfoDto.java b/src/main/java/com/yxt/user/biz/sysstaffinfo/SysStaffinfoDto.java new file mode 100644 index 0000000..ecf9ad3 --- /dev/null +++ b/src/main/java/com/yxt/user/biz/sysstaffinfo/SysStaffinfoDto.java @@ -0,0 +1,186 @@ +package com.yxt.user.biz.sysstaffinfo; + + +import com.fasterxml.jackson.annotation.JsonFormat; +import com.yxt.user.biz.sysstafforg.SysStaffOrgDto; +import com.yxt.user.biz.sysstaffpost.SysStaffPostDto; +import com.yxt.common.core.dto.Dto; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotBlank; +import javax.validation.constraints.Pattern; +import java.util.Date; + +/** + * Project: anrui_portal(门户建设)
+ * File: SysStaffinfoDto.java
+ * Class: com.yxt.user.biz.sysstaffinfo.SysStaffinfoDto
+ * Description: 人员基础信息表 数据传输对象.
+ * Copyright: Copyright (c) 2011
+ * Company: https://gitee.com/liuzp315
+ * Makedate: 2021-08-03 00:24:30
+ * + * @author liupopo + * @version 1.0 + * @since 1.0 + */ +@ApiModel(value = "人员基础信息表 数据传输对象", description = "人员基础信息表 数据传输对象") +@Data +public class SysStaffinfoDto implements Dto { + + private static final long serialVersionUID = 8637516813924395044L; + @ApiModelProperty(value = "姓名", required = true) + @NotBlank(message = "姓名不能为空") + private String name; + @ApiModelProperty(value = "性别key", required = true) + @NotBlank(message = "性别不能为空") + private String genderKey; + @ApiModelProperty(value = "性别", required = true) + @NotBlank(message = "性别不能为空") + private String gender; + @ApiModelProperty(value = "员工编号") + private String jobNumber; + @ApiModelProperty(value = "身份证号", required = true) + @Pattern(regexp = "^[1-9]\\d{5}(18|19|([23]\\d))\\d{2}((0[1-9])|(10|11|12))(([0-2][1-9])|10|20|30|31)\\d{3}[0-9Xx]$", message = "请输入正确的身份证号") + @NotBlank(message = "身份证号不能为空") + private String idNo; + @ApiModelProperty(value = "证件有效期", required = true) + @NotBlank(message = "证件有效期不能为空") + private String idTerm; + @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8") + @ApiModelProperty("生日") + private Date birthday; + @ApiModelProperty(value = "民族", required = true) + @NotBlank(message = "民族不能为空") + private String national; + @ApiModelProperty(value = "民族key", required = true) + @NotBlank(message = "民族不能为空") + private String nationalKey; + @ApiModelProperty(value = "籍贯", required = false) + private String nativePlace; + @ApiModelProperty(value = "省", required = false) + private String province; + @ApiModelProperty(value = "市", required = false) + private String city; + @ApiModelProperty(value = "县区", required = false) + private String county; + @ApiModelProperty(value = "省code", required = false) + private String provinceCode; + @ApiModelProperty(value = "市code", required = false) + private String cityCode; + @ApiModelProperty(value = "县区code", required = false) + private String countyCode; + @ApiModelProperty(value = "住址", required = false) + private String address; + @ApiModelProperty(value = "手机号", required = true) +// @Pattern(regexp = "^((13[0-9])|(14[5,7])|(15[0-3,5-9])|(17[0,3,5-8])|(18[0-9])|(19[1,3,5-9])|166|(147))\\d{8}$", message = "手机号码格式不正确") + @Pattern(regexp = "^[0-9]{11}$", message = "手机号码格式不正确") + @NotBlank(message = "手机号不能为空") + private String mobile; + @ApiModelProperty(value = "邮箱", required = false) + //@Pattern(regexp = "[a-zA-Z0-9]+@[a-zA-Z0-9]+\\.[a-zA-Z0-9]+", message = "邮箱格式不正确") + private String email; + @ApiModelProperty(value = "紧急联系人", required = false) + private String emergencyContact; + @ApiModelProperty(value = "紧急联系电话", required = false) + private String emergencyMobile; + @ApiModelProperty(value = "政治面貌", required = false) + private String poliCode; + @ApiModelProperty(value = "政治面貌key", required = false) + private String poliCodeKey; + @ApiModelProperty(value = "婚姻状况", required = false) + private String maritalStatus; + @ApiModelProperty(value = "婚姻状况key", required = false) + private String maritalStatusKey; + @ApiModelProperty(value = "员工类型", required = true) + @NotBlank(message = "员工类型不能为空") + private String personType; + @ApiModelProperty(value = "员工类型key", required = true) + @NotBlank(message = "员工类型不能为空") + private String personTypeKey; + @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8") + @ApiModelProperty("入职时间") + private Date joinCompnyDate; + @ApiModelProperty("试用期(无试用期、1个月、2个月、3个月、其他)") + private String probPeriod; + @ApiModelProperty("试用期key") + private String probPeriodKey; + @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8") + @ApiModelProperty("计划转正日期") + private Date plannedConfirmDate; + @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8") + @ApiModelProperty("实际转正日期") + private Date confirmationDate; + @ApiModelProperty("银行卡号") + private String bankCardNo; + @ApiModelProperty("开户行") + private String openBank; + @ApiModelProperty("身份证(人像面)") + private String idCardA; + @ApiModelProperty("身份证(国徽面)") + private String idCardB; + @ApiModelProperty("学历证书") + private String diploma; + @ApiModelProperty("学位证书") + private String degreeCertificate; + @ApiModelProperty("前公司离职证明") + private String leaveCertificate; + @ApiModelProperty("员工照片") + private String photo; + @ApiModelProperty(value = "员工部门信息") + private SysStaffOrgDto sysStaffOrg; + @ApiModelProperty(value = "员工岗位信息") + private SysStaffPostDto sysStaffPost; + + //========================================// + @ApiModelProperty(value = "毕业院校") + private String graduate; + @ApiModelProperty(value = "学历/专业") + private String education; + private String educationKey; + @ApiModelProperty(value = "职称") + private String title; + @ApiModelProperty(value = "资格认证") + private String qualification; + @ApiModelProperty(value = "驾照类型") + private String licenseType; + @ApiModelProperty(value = "驾照类型key") + private String licenseTypeKey; + @ApiModelProperty(value = "意外险参保:1是,0否") + private Integer isHaveInsurance; + @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8") + @ApiModelProperty(value = "意外险参保时间") + private Date insuranceStartDate; + @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8") + @ApiModelProperty(value = "意外险参保终止日期") + private Date insuranceEndDate; + @ApiModelProperty(value = "意外险参保地") + private String insuranceAddr; + + @ApiModelProperty(value = "养老:1是,0否") + private Integer isHaveAged; + @ApiModelProperty(value = "医疗:1是,0否") + private Integer isHaveMedical; + @ApiModelProperty(value = "工伤:1是,0否") + private Integer isHaveInjury; + @ApiModelProperty(value = "失业:1是,0否") + private Integer isHaveUnemploy; + @ApiModelProperty(value = "社保参保地") + private String insuredPlace; + @ApiModelProperty(value = "纸质档案保管地") + private String paperPlace; + @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8") + @ApiModelProperty(value = "合同起止日期") + private Date contractStartDate; + @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8") + @ApiModelProperty(value = "合同结束日期") + private Date contractEndDate; + @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8") + @ApiModelProperty(value = "离职日期") + private Date quitDate; + @ApiModelProperty(value = "离职原因") + private String quitReason; + +} \ No newline at end of file diff --git a/src/main/java/com/yxt/user/biz/sysstaffinfo/SysStaffinfoMapper.java b/src/main/java/com/yxt/user/biz/sysstaffinfo/SysStaffinfoMapper.java new file mode 100644 index 0000000..8e647ed --- /dev/null +++ b/src/main/java/com/yxt/user/biz/sysstaffinfo/SysStaffinfoMapper.java @@ -0,0 +1,128 @@ +package com.yxt.user.biz.sysstaffinfo; + +import com.baomidou.mybatisplus.core.conditions.Wrapper; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.core.toolkit.Constants; +import com.yxt.user.biz.sysorganization.AppContactSysOrganizationVo; +import com.yxt.user.biz.sysstaffinfo.*; +import com.yxt.user.biz.sysstaffinfo.app.AppSysStaffVo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.Date; +import java.util.List; +import java.util.Map; + +/** + * Project: anrui_portal(门户建设)
+ * File: SysStaffinfoMapper.java
+ * Class: com.yxt.anrui.portal.biz.sysstaffinfo.SysStaffinfoMapper
+ * Description: 人员基础信息表.
+ * Copyright: Copyright (c) 2011
+ * Company: https://gitee.com/liuzp315
+ * Makedate: 2021-08-03 00:24:30
+ * + * @author liupopo + * @version 1.0 + * @since 1.0 + */ +@Mapper +public interface SysStaffinfoMapper extends BaseMapper { + + //@Update("update sys_staffinfo set name=#{msg} where id=#{id}") + //IPage voPage(IPage page, @Param(Constants.WRAPPER) QueryWrapper qw); + + List selectAppContactsList(); + + IPage searchAppContactsPageList(IPage page, @Param("list") List list, + @Param("chnStr") String chnStr, @Param("mobileStr") String mobileStr); + + AppContactsDetailsVo selectAppContactsVO(String staffSid); + + List selectContactsByOrgsid(@Param("sid") String sid); + + SysStaffinfo selectJobNumber(); + + /** + * 查询员工的手机号是否重复 + * + * @param mobile 手机号 + * @return + */ + SysStaffinfo selectByMobile(String mobile); + + /** + * 查询是否存在该身份证号的员工 + * + * @param idNo 身份证号 + * @return + */ + SysStaffinfo selectByIdNo(String idNo); + + /** + * 员工管理分页列表 + * + * @param page 分页 + * @param qw 查询条件 + * @return + */ + IPage pagerList(IPage page, @Param(Constants.WRAPPER) Wrapper qw); + + /** + * 根据员工sid和员工手机号码查询员工信息是否已存在 + * + * @param mobile 手机号 + * @param sid 员工sid + * @return + */ + SysStaffinfo selectByMobileAndSid(@Param("mobile") String mobile, @Param("sid") String sid); + + /** + * 根据员工sid和身份证号查询员工信息是否已存在 + * + * @param idNo 身份证号 + * @param sid 员工sid + * @return + */ + SysStaffinfo selectByIdNoAndSid(@Param("idNo") String idNo, @Param("sid") String sid); + + /** + * 根据员工sid查询员工信息 + * + * @param sid 员工sid + * @return + */ + SysStaffinfoDetailsVo selectDetailsBySid(@Param("sid") String sid, @Param("path") String path); + + /** + * 根据员工sid更新信息 + * + * @param personType 员工类型 + * @param personTypeKey 员工类型key + * @param sid 员工sid + * @return + */ + int updateBySid(@Param("personType") String personType, @Param("personTypeKey") String personTypeKey, + @Param("sid") String sid, @Param("date") Date date, @Param("reason") String reason); + + /** + * 查询当前分公司下的员工信息 + * + * @param orgSid 分公司sid + * @return + */ + List selectStaffList(String orgSid); + + List> getStaffName(@Param(Constants.WRAPPER) Wrapper> qw); + + List> getStaffNameByDeptSid(@Param(Constants.WRAPPER) Wrapper> qw); + + IPage getUserList(IPage page, @Param(Constants.WRAPPER) QueryWrapper qw, @Param("orgSid") String orgSid); + + List getGressionUserList(@Param("userOrgSid")String userOrgSid); + + List selectStaffLists(); + List selectStaffListss(); +} \ No newline at end of file diff --git a/src/main/java/com/yxt/user/biz/sysstaffinfo/SysStaffinfoMapper.xml b/src/main/java/com/yxt/user/biz/sysstaffinfo/SysStaffinfoMapper.xml new file mode 100644 index 0000000..70526cf --- /dev/null +++ b/src/main/java/com/yxt/user/biz/sysstaffinfo/SysStaffinfoMapper.xml @@ -0,0 +1,398 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + update sys_staffinfo + set personType = #{personType}, + personTypeKey = #{personTypeKey}, + quitDate = #{date}, + quitReason = #{reason} + where sid = #{sid} + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/main/java/com/yxt/user/biz/sysstaffinfo/SysStaffinfoQuery.java b/src/main/java/com/yxt/user/biz/sysstaffinfo/SysStaffinfoQuery.java new file mode 100644 index 0000000..84197ef --- /dev/null +++ b/src/main/java/com/yxt/user/biz/sysstaffinfo/SysStaffinfoQuery.java @@ -0,0 +1,42 @@ +package com.yxt.user.biz.sysstaffinfo; + + +import com.yxt.common.core.query.Query; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * Project: anrui_portal(门户建设)
+ * File: SysStaffinfoQuery.java
+ * Class: com.yxt.anrui.portal.api.sysstaffinfo.SysStaffinfoQuery
+ * Description: 人员基础信息表 查询条件.
+ * Copyright: Copyright (c) 2011
+ * Company: https://gitee.com/liuzp315
+ * Makedate: 2021-08-03 00:24:30
+ * + * @author liupopo + * @version 1.0 + * @since 1.0 + */ +@ApiModel(value = "人员基础信息表 查询条件", description = "人员基础信息表 查询条件") +@Data +public class SysStaffinfoQuery implements Query { + + + private static final long serialVersionUID = 7101232842735165406L; + @ApiModelProperty("姓名") + private String name; + @ApiModelProperty("员工类型key") + private String personTypeKey; + @ApiModelProperty("手机号") + private String mobile; + @ApiModelProperty("入职开始日期") + private String joinCompnyDateStart; + @ApiModelProperty("入职结束日期") + private String joinCompnyDateEnd; + @ApiModelProperty(value = "所在部门sid") + private String orgSid; + @ApiModelProperty(value = "所在岗位sid") + private String postSid; +} diff --git a/src/main/java/com/yxt/user/biz/sysstaffinfo/SysStaffinfoService.java b/src/main/java/com/yxt/user/biz/sysstaffinfo/SysStaffinfoService.java new file mode 100644 index 0000000..50b494a --- /dev/null +++ b/src/main/java/com/yxt/user/biz/sysstaffinfo/SysStaffinfoService.java @@ -0,0 +1,819 @@ +package com.yxt.user.biz.sysstaffinfo; + +import cn.hutool.core.bean.BeanUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.yxt.user.biz.sysorganization.AppContactSysOrganizationVo; +import com.yxt.user.biz.sysorganization.SysOrganization; +import com.yxt.user.biz.sysrole.SysRoleVo; +import com.yxt.user.biz.sysstaffinfo.*; +import com.yxt.user.biz.sysstaffinfo.app.AppSysStaffQuery; +import com.yxt.user.biz.sysstaffinfo.app.AppSysStaffVo; +import com.yxt.user.biz.sysstafforg.SysStaffOrg; +import com.yxt.user.biz.sysstafforg.SysStaffOrgDetailsVo; +import com.yxt.user.biz.sysstafforg.SysStaffOrgDto; +import com.yxt.user.biz.sysstafforg.SysStaffOrgVo; +import com.yxt.user.biz.sysstaffpost.SysStaffPost; +import com.yxt.user.biz.sysstaffpost.SysStaffPostDetailsVo; +import com.yxt.user.biz.sysstaffpost.SysStaffPostDto; +import com.yxt.user.biz.sysuser.SysUser; +import com.yxt.user.biz.sysuserrole.SysUserRole; +import com.yxt.user.biz.sysorganization.SysOrganizationService; +import com.yxt.user.biz.syspost.SysPostService; +import com.yxt.user.biz.sysrole.SysRoleService; +import com.yxt.user.biz.sysstafforg.SysStaffOrgService; +import com.yxt.user.biz.sysstaffpost.SysStaffPostService; +import com.yxt.user.biz.sysuser.SysUserService; +import com.yxt.user.biz.sysuserrole.SysUserRoleService; +import com.yxt.common.base.config.RedisUtil; +import com.yxt.common.base.config.component.FileUploadComponent; +import com.yxt.common.base.service.MybatisBaseService; +import com.yxt.common.base.utils.Encodes; +import com.yxt.common.base.utils.PagerUtil; +import com.yxt.common.base.utils.PinYinUtils; +import com.yxt.common.core.query.PagerQuery; +import com.yxt.common.core.result.ResultBean; +import com.yxt.common.core.vo.PagerVo; +import com.yxt.user.biz.sysorganization.AppContactSysOrganizationVo; +import com.yxt.user.biz.sysstaffinfo.app.AppSysStaffVo; +import org.apache.commons.lang3.StringUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.text.SimpleDateFormat; +import java.util.*; + +import static java.util.stream.Collectors.toList; + +/** + * Project: anrui_portal(门户建设)
+ * File: SysStaffinfoService.java
+ * Class: com.yxt.user.biz.sysstaffinfo.SysStaffinfoService
+ * Description: 人员基础信息表 业务逻辑.
+ * Copyright: Copyright (c) 2011
+ * Company: https://gitee.com/liuzp315
+ * Makedate: 2021-08-03 00:24:30
+ * + * @author liupopo + * @version 1.0 + * @since 1.0 + */ +@Service +public class SysStaffinfoService extends MybatisBaseService { + + @Autowired + private FileUploadComponent fileUploadComponent; + @Autowired + private SysUserService sysUserService; + @Autowired + private SysStaffOrgService sysStaffOrgService; + @Autowired + private SysStaffPostService sysStaffPostService; + @Autowired + private SysPostService sysPostService; + @Autowired + private SysOrganizationService sysOrganizationService; + @Autowired + private SysUserRoleService sysUserRoleService; + @Autowired + private SysRoleService sysRoleService; + @Autowired + private RedisUtil redisUtil; + + public List selectAppContactsList() { + List list = baseMapper.selectAppContactsList(); + list.stream().forEach(vo -> { + if (StringUtils.isNotBlank(vo.getHeadImage())) { + vo.setHeadImage(fileUploadComponent.getUrlPrefix() + vo.getHeadImage()); + } + }); + return list; + } + + public IPage searchAppContactsList(PagerQuery pagerQuery, String names) { + Map map = new HashMap<>(); + List paramList = new ArrayList<>(); + String chnStr = ""; // 中文查询字符串 + String mobileStr = ""; // 中文查询字符串 + if (StringUtils.isNotBlank(names)) { + if (names.matches("^\\d*$")) { // 数字 + mobileStr = names; + } else { + String[] namesArray = names.split(""); + for (int i = 0; i < namesArray.length; i++) { + if (StringUtils.isNotBlank(namesArray[i])) { + if (namesArray[i].matches("^[\u4e00-\u9fa5]+$")) { // 中文 + chnStr = chnStr + namesArray[i]; + } + String pinYinName = PinYinUtils.getPinYinName(namesArray[i]); + if (pinYinName.equals("_") || pinYinName.equals("%")) { + pinYinName = "\\" + pinYinName; + } + paramList.add(pinYinName); + } + } + } + } + IPage page = PagerUtil.queryToPage(pagerQuery); + IPage iPage = baseMapper.searchAppContactsPageList(page, paramList, chnStr, mobileStr); + List list = iPage.getRecords(); + list.stream().forEach(vo -> { + if (StringUtils.isNotBlank(vo.getHeadImage())) { + vo.setHeadImage(fileUploadComponent.getUrlPrefix() + vo.getHeadImage()); + } + List stringList = sysUserService.getPost(vo.getSid()); + stringList.removeAll(Collections.singleton(null)); + if (!stringList.isEmpty()) { + vo.setPosition(String.join("|", stringList)); + } + }); + map.put("list", list); + map.put("info", "找到 " + iPage.getRecords().size() + " 个联系人 "); + return iPage; + } + + public IPage searchAppContactsList2(PagerQuery pagerQuery) { + String names = pagerQuery.getParams().getName(); + Map map = new HashMap<>(); + List paramList = new ArrayList<>(); + String chnStr = ""; // 中文查询字符串 + String mobileStr = ""; // 中文查询字符串 + if (StringUtils.isNotBlank(names)) { + if (names.matches("^\\d*$")) { // 数字 + mobileStr = names; + } else { + String[] namesArray = names.split(""); + for (int i = 0; i < namesArray.length; i++) { + if (StringUtils.isNotBlank(namesArray[i])) { + if (namesArray[i].matches("^[\u4e00-\u9fa5]+$")) { // 中文 + chnStr = chnStr + namesArray[i]; + } + String pinYinName = PinYinUtils.getPinYinName(namesArray[i]); + if (pinYinName.equals("_") || pinYinName.equals("%")) { + pinYinName = "\\" + pinYinName; + } + paramList.add(pinYinName); + } + } + } + } + IPage page = PagerUtil.queryToPage(pagerQuery); + IPage iPage = baseMapper.searchAppContactsPageList(page, paramList, chnStr, mobileStr); + List list = iPage.getRecords(); + list.stream().forEach(vo -> { + if (StringUtils.isNotBlank(vo.getHeadImage())) { + vo.setHeadImage(fileUploadComponent.getUrlPrefix() + vo.getHeadImage()); + } + List stringList = sysUserService.getPost(vo.getSid()); + stringList.removeAll(Collections.singleton(null)); + if (!stringList.isEmpty()) { + vo.setPosition(String.join("|", stringList)); + } + }); + map.put("list", list); + map.put("info", "找到 " + iPage.getRecords().size() + " 个联系人 "); + return iPage; + } + + + public AppContactsDetailsVo selectAppContactsVO(String staffSid) { + return baseMapper.selectAppContactsVO(staffSid); + } + + /** + * pc端员工管理分页列表查询条件封装 + * + * @param query 查询条件 + * @return + */ + private QueryWrapper createQueryWrapper(SysStaffinfoQuery query) { + // 多字段Like示例:qw.and(wrapper -> wrapper.like("name", query.getName()).or().like("remark", query.getName())); + QueryWrapper qw = new QueryWrapper<>(); + if (StringUtils.isNotBlank(query.getName())) {//姓名 + qw.like("si.name", query.getName()); + } + if (StringUtils.isNotBlank(query.getOrgSid())) { + qw.eq("so.orgSid", query.getOrgSid()); + } + if (StringUtils.isNotBlank(query.getPostSid())) { + qw.eq("ssp.postSid", query.getPostSid()); + } + if (StringUtils.isNotBlank(query.getMobile())) { + qw.like("si.mobile", query.getMobile()); + } + String joinCompnyDateStart = query.getJoinCompnyDateStart(); + String joinCompnyDateEnd = query.getJoinCompnyDateEnd(); + qw.apply(StringUtils.isNotEmpty(joinCompnyDateStart), "date_format (joinCompnyDate,'%Y-%m-%d') >= date_format('" + joinCompnyDateStart + "','%Y-%m-%d')"). + apply(StringUtils.isNotEmpty(joinCompnyDateEnd), "date_format (joinCompnyDate,'%Y-%m-%d') <= date_format('" + joinCompnyDateEnd + "','%Y-%m-%d')" + ); + //员工类型key + if (StringUtils.isNotBlank(query.getPersonTypeKey())) { + qw.eq("si.personTypeKey", query.getPersonTypeKey()); + } + qw.orderByDesc("si.id"); + return qw; + } + + /** + * 员工管理分页列表 + * + * @param pagerQuery 查询条件 + * @return + */ + public IPage pagerList(PagerQuery pagerQuery) { + // mybits所用的分页对对象 + IPage page = PagerUtil.queryToPage(pagerQuery); + // mybits所用的查询条件封装类 + QueryWrapper qw = createQueryWrapper(pagerQuery.getParams()); + IPage sysStaffinfoVoIPage = baseMapper.pagerList(page, qw); + List records = sysStaffinfoVoIPage.getRecords(); + for (SysStaffinfoVo record : records) { + String orgSid = record.getOrgSid(); + String orgName = ""; + if (StringUtils.isNotBlank(orgSid)) { + String[] split = orgSid.split(","); + for (String s : split) { + //获取本级sid获取本级部门信息 + SysOrganization sysOrganization = sysOrganizationService.fetchBySid(s); + if(sysOrganization == null){ + sysStaffOrgService.delByOrgSid(s); + }else{ + //从本级部门信息中获取上级sid + String psid = sysOrganization.getPsid(); + //从本级部门信息中获取本级部门名称 + String bjName = sysOrganization.getName(); + //获取上级sid获取上级部门信息 + SysOrganization sysOrganization1 = sysOrganizationService.fetchBySid(psid); + //从上级部门信息中获取上级部门名称 + String sjName = sysOrganization1.getName(); + orgName += sjName + "-" + bjName + ","; + } + } + orgName = orgName.substring(0, orgName.length() - 1); + record.setOrgName(orgName); + } + } + return sysStaffinfoVoIPage; + } + + public List selectContactsByOrgsid(String sid) { + List list = baseMapper.selectContactsByOrgsid(sid); + list.stream().forEach(vo -> { + if (StringUtils.isNotBlank(vo.getHeadImage())) { + vo.setHeadImage(fileUploadComponent.getUrlPrefix() + vo.getHeadImage()); + } + }); + return list; + + } + + /** + * 员工信息的新增保存 + * + * @param dto 数据传输对象 + * @return + */ + public ResultBean saveStaffInfo(SysStaffinfoDto dto) { + ResultBean rb = ResultBean.fireFail(); + SysRoleVo sysRoleVo = sysRoleService.fetchByName("试用期员工"); + if (sysRoleVo == null) { + return rb.setMsg("缺少默认试用期员工角色"); + } + //员工类型 + //String personTypeKey = dto.getPersonTypeKey(); + String jobNumber = ""; + SysStaffinfo sysStaffinfo = baseMapper.selectJobNumber(); + if (sysStaffinfo == null) { + //无此员工类型的员工 + jobNumber = addOne("0000"); + } else { + jobNumber = sysStaffinfo.getJobNumber(); + jobNumber = addOne(jobNumber); + } + //查询员工的手机号是否重复 + SysStaffinfo sysStaffinfo1 = baseMapper.selectByMobile(dto.getMobile()); + SysUser sysUser1 = sysUserService.selectByMobile(dto.getMobile()); + if (sysStaffinfo1 != null || sysUser1 != null) { + return rb.setMsg("已存在手机号为" + dto.getMobile() + "的员工"); + } + //查询是否存在该身份证号的员工 + SysStaffinfo sysStaffinfo2 = baseMapper.selectByIdNo(dto.getIdNo()); + if (sysStaffinfo2 != null) { + return rb.setMsg("已存在身份证号为" + dto.getIdNo() + "的员工"); + } + //判断身份证号出生日期和填写的出生日期是否相同 + String idNo = dto.getIdNo(); + SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyyMMdd"); + String birthday = simpleDateFormat.format(dto.getBirthday()); + String substring = idNo.substring(6, 14); + if (!birthday.equals(substring)) { + return rb.setMsg("选择的出生日期和身份证出生日期不符,请重新选择"); + } + //查询部门和岗位是否为空 + if (dto.getSysStaffOrg() == null) { + return rb.setMsg("员工部门信息不能为空"); + } + if (dto.getSysStaffPost() == null) { + return rb.setMsg("员工岗位信息不能为空"); + } + Date joinCompnyDate = dto.getJoinCompnyDate(); + if (joinCompnyDate == null) { + return rb.setMsg("员工入职日期不能为空"); + } + //添加员工基础信息 + SysStaffinfo sysStaffinfo3 = new SysStaffinfo(); + dto.fillEntity(sysStaffinfo3); + sysStaffinfo3.setJobNumber(jobNumber); + sysStaffinfo3.setPinYinName(PinYinUtils.getPinYinName(dto.getName())); + sysStaffinfo3.setFirstPinYinLabel(PinYinUtils.getCharDuoPinYinChar(dto.getName())); + //是否意外险参保 + if (dto.getIsHaveInsurance() != null) { + //意外险参保:是 + if (dto.getIsHaveInsurance() == 1) { + //意外险参保地以及意外险参保开始时间和结束时间不能为空 + if (dto.getInsuranceStartDate() == null) { + return rb.setMsg("意外险参保时间不能为空"); + } + if (dto.getInsuranceEndDate() == null) { + return rb.setMsg("意外险终止时间不能为空"); + } + if (StringUtils.isBlank(dto.getInsuranceAddr())) { + return rb.setMsg("意外险参保地不能为空"); + } + } else { + sysStaffinfo3.setIsHaveInsurance(0); + sysStaffinfo3.setInsuranceStartDate(null); + sysStaffinfo3.setInsuranceEndDate(null); + sysStaffinfo3.setInsuranceAddr(null); + } + } + if ("01".equals(dto.getPersonTypeKey())) { + if (dto.getQuitDate() == null) { + return rb.setMsg("离职日期不能为空"); + } + if (StringUtils.isBlank(dto.getQuitReason())) { + return rb.setMsg("离职原因不能为空"); + } + } + //身份证(人像面) + if (StringUtils.isNotBlank(sysStaffinfo3.getIdCardA())) { + if (sysStaffinfo3.getIdCardA().contains(fileUploadComponent.getUrlPrefix())) { + sysStaffinfo3.setIdCardA(sysStaffinfo3.getIdCardA().replace(fileUploadComponent.getUrlPrefix(), "")); + } + } + //身份证(国徽面) + if (StringUtils.isNotBlank(sysStaffinfo3.getIdCardB())) { + if (sysStaffinfo3.getIdCardB().contains(fileUploadComponent.getUrlPrefix())) { + sysStaffinfo3.setIdCardB(sysStaffinfo3.getIdCardB().replace(fileUploadComponent.getUrlPrefix(), "")); + } + } + //学历证书diploma + if (StringUtils.isNotBlank(sysStaffinfo3.getDiploma())) { + if (sysStaffinfo3.getDiploma().contains(fileUploadComponent.getUrlPrefix())) { + sysStaffinfo3.setDiploma(sysStaffinfo3.getDiploma().replace(fileUploadComponent.getUrlPrefix(), "")); + } + } + //学位证书degreeCertificate + if (StringUtils.isNotBlank(sysStaffinfo3.getDegreeCertificate())) { + if (sysStaffinfo3.getDegreeCertificate().contains(fileUploadComponent.getUrlPrefix())) { + sysStaffinfo3.setDegreeCertificate(sysStaffinfo3.getDegreeCertificate().replace(fileUploadComponent.getUrlPrefix(), "")); + } + } + //前公司离职证明leaveCertificate + if (StringUtils.isNotBlank(sysStaffinfo3.getLeaveCertificate())) { + if (sysStaffinfo3.getLeaveCertificate().contains(fileUploadComponent.getUrlPrefix())) { + sysStaffinfo3.setLeaveCertificate(sysStaffinfo3.getLeaveCertificate().replace(fileUploadComponent.getUrlPrefix(), "")); + } + } + //员工照片 + if (StringUtils.isNotBlank(sysStaffinfo3.getPhoto())) { + if (sysStaffinfo3.getPhoto().contains(fileUploadComponent.getUrlPrefix())) { + sysStaffinfo3.setPhoto(sysStaffinfo3.getPhoto().replace(fileUploadComponent.getUrlPrefix(), "")); + } + } + //增加员工的关联的部门信息 + SysStaffOrg sysStaffOrg = new SysStaffOrg(); + SysStaffOrgDto sysStaffOrgDto = dto.getSysStaffOrg(); + if (StringUtils.isBlank(sysStaffOrgDto.getOrgName())) { + return rb.setMsg("所在部门不能为空"); + } + sysStaffOrgDto.fillEntity(sysStaffOrg); + sysStaffOrg.setStaffSid(sysStaffinfo3.getSid()); + sysStaffOrg.setManageType("3"); + sysStaffOrgService.save(sysStaffOrg); + //增加员工的关联的岗位信息 + SysStaffPost sysStaffPost = new SysStaffPost(); + SysStaffPostDto sysStaffPostDto = dto.getSysStaffPost(); + if (StringUtils.isBlank(sysStaffPostDto.getPostSid())) { + return rb.setMsg("岗位不能为空"); + } + + save(sysStaffinfo3); + //添加用户信息 + SysUser sysUser = new SysUser(); + sysUser.setStaffSid(sysStaffinfo3.getSid()); + sysUser.setUserName(jobNumber); + sysUser.setMobile(sysStaffinfo3.getMobile()); + sysUser.setUserType(1); + String password = sysStaffinfo3.getMobile().substring(5, 11); + String md5 = Encodes.md5(password); + sysUser.setPassword(md5); + boolean isSave = sysUserService.save(sysUser); + sysStaffPostDto.fillEntity(sysStaffPost); + sysStaffPost.setStaffSid(sysStaffinfo3.getSid()); + sysStaffPost.setStartDate(new Date()); + sysStaffPostService.save(sysStaffPost); + if (!isSave) { + return rb.setMsg("添加员工信息失败"); + } + SysUserRole sysUserRole = new SysUserRole(); + sysUserRole.setUserSid(sysUser.getSid()); + sysUserRole.setRoleSid(sysRoleVo.getSid()); + sysUserRoleService.save(sysUserRole); + return rb.success().setMsg("添加员工信息成功"); + + } + + /** + * 字符串+1方法,该方法将其结尾的整数+1,适用于任何以整数结尾的字符串,不限格式,不限分隔符。 + * + * @param testStr 要+1的字符串 + * @return +1后的字符串 + * @throws NumberFormatException + */ + public static String addOne(String testStr) { + //根据不是数字的字符拆分字符串 + String[] strs = testStr.split("[^0-9]"); + //取出最后一组数字 + String numStr = strs[strs.length - 1]; + //如果最后一组没有数字(也就是不以数字结尾),抛NumberFormatException异常 + if (numStr != null && numStr.length() > 0) { + //取出字符串的长度 + int n = numStr.length(); + //将该数字加一 + int num = Integer.parseInt(numStr) + 1; + String added = String.valueOf(num); + n = Math.min(n, added.length()); + //拼接字符串 + return testStr.subSequence(0, testStr.length() - n) + added; + } else { + throw new NumberFormatException(); + } + } + + /** + * 员工信息修改保存 + * + * @param dto 数据传输对象 + * @param sid 员工信息sid + * @return + */ + public ResultBean updateStaffInfo(SysStaffinfoDto dto, String sid) { + ResultBean rb = ResultBean.fireFail(); + //查询该人员的组织机构list + List sysStaffOrgVos = sysStaffOrgService.selectByStaffS(sid); + List orgList = new ArrayList<>(); + if (sysStaffOrgVos.size() > 0) { + for (SysStaffOrgVo vv : sysStaffOrgVos) { +// String orgSid = sysStaffOrgService.getOrgByOrgSid(vv.getOrgSid()); + String orgSid = vv.getOrgSid(); + SysOrganization sysOrganization = sysOrganizationService.fetchBySid(orgSid); + if (sysOrganization != null) { + orgList.add(orgSid); + } else { + continue; + } + } + } + //根据员工sid查询员工的信息 + SysStaffinfo sysStaffinfo = fetchBySid(sid); + if (sysStaffinfo == null) { + return rb.setMsg("此员工信息不存在"); + } + //查询员工的手机号是否重复 + SysStaffinfo sysStaffinfo2 = baseMapper.selectByMobileAndSid(dto.getMobile(), sid); + if (sysStaffinfo2 != null) { + return rb.setMsg("已存在手机号为" + dto.getMobile() + "的员工"); + } + //查询是否存在该身份证号的员工 + SysStaffinfo sysStaffinfo3 = baseMapper.selectByIdNoAndSid(dto.getIdNo(), sid); + if (sysStaffinfo3 != null) { + return rb.setMsg("已存在身份证号为" + dto.getIdNo() + "的员工"); + } + //更新员工基础信息 + BeanUtil.copyProperties(dto, sysStaffinfo); + sysStaffinfo.setJobNumber(dto.getJobNumber()); + sysStaffinfo.setPinYinName(PinYinUtils.getPinYinName(dto.getName())); + sysStaffinfo.setFirstPinYinLabel(PinYinUtils.getCharDuoPinYinChar(dto.getName())); + //是否意外险参保 + if (dto.getIsHaveInsurance() != null) { + //意外险参保:是 + if (dto.getIsHaveInsurance() == 1) { + //意外险参保地以及意外险参保开始时间和结束时间不能为空 + if (dto.getInsuranceStartDate() == null) { + return rb.setMsg("意外险参保时间不能为空"); + } + if (dto.getInsuranceEndDate() == null) { + return rb.setMsg("意外险终止时间不能为空"); + } + if (StringUtils.isBlank(dto.getInsuranceAddr())) { + return rb.setMsg("意外险参保地不能为空"); + } + } else { + sysStaffinfo.setIsHaveInsurance(0); + sysStaffinfo.setInsuranceStartDate(null); + sysStaffinfo.setInsuranceEndDate(null); + sysStaffinfo.setInsuranceAddr(null); + } + } + if ("01".equals(dto.getPersonTypeKey())) { + if (dto.getQuitDate() == null) { + return rb.setMsg("离职日期不能为空"); + } + if (StringUtils.isBlank(dto.getQuitReason())) { + return rb.setMsg("离职原因不能为空"); + } + } + //身份证(人像面) + if (StringUtils.isNotBlank(sysStaffinfo.getIdCardA())) { + if (sysStaffinfo.getIdCardA().contains(fileUploadComponent.getUrlPrefix())) { + sysStaffinfo.setIdCardA(sysStaffinfo.getIdCardA().replace(fileUploadComponent.getUrlPrefix(), "")); + } + } + //身份证(国徽面) + if (StringUtils.isNotBlank(sysStaffinfo.getIdCardB())) { + if (sysStaffinfo.getIdCardB().contains(fileUploadComponent.getUrlPrefix())) { + sysStaffinfo.setIdCardB(sysStaffinfo.getIdCardB().replace(fileUploadComponent.getUrlPrefix(), "")); + } + } + //学历证书diploma + if (StringUtils.isNotBlank(sysStaffinfo.getDiploma())) { + if (sysStaffinfo.getDiploma().contains(fileUploadComponent.getUrlPrefix())) { + sysStaffinfo.setDiploma(sysStaffinfo.getDiploma().replace(fileUploadComponent.getUrlPrefix(), "")); + } + } + //学位证书degreeCertificate + if (StringUtils.isNotBlank(sysStaffinfo.getDegreeCertificate())) { + if (sysStaffinfo.getDegreeCertificate().contains(fileUploadComponent.getUrlPrefix())) { + sysStaffinfo.setDegreeCertificate(sysStaffinfo.getDegreeCertificate().replace(fileUploadComponent.getUrlPrefix(), "")); + } + } + //前公司离职证明leaveCertificate + if (StringUtils.isNotBlank(sysStaffinfo.getLeaveCertificate())) { + if (sysStaffinfo.getLeaveCertificate().contains(fileUploadComponent.getUrlPrefix())) { + sysStaffinfo.setLeaveCertificate(sysStaffinfo.getLeaveCertificate().replace(fileUploadComponent.getUrlPrefix(), "")); + } + } + //员工照片 + if (StringUtils.isNotBlank(sysStaffinfo.getPhoto())) { + if (sysStaffinfo.getPhoto().contains(fileUploadComponent.getUrlPrefix())) { + sysStaffinfo.setPhoto(sysStaffinfo.getPhoto().replace(fileUploadComponent.getUrlPrefix(), "")); + } + } + //更新用户信息 + sysUserService.updateByStaffSid(dto.getJobNumber(), sysStaffinfo.getMobile(), sid); + //更新员工的关联的部门信息 + SysStaffOrgDto sysStaffOrgDto = dto.getSysStaffOrg(); + int count = sysStaffOrgService.selectByStaffAndOrg(sysStaffOrgDto.getOrgSidPath(), sid, "2"); + if (count > 0) { + sysStaffOrgService.deleteByStaffSidAndType(sysStaffOrgDto.getOrgSidPath(), sid, "2"); + } + SysStaffOrg sysStaffOrg = sysStaffOrgService.getOrgByStaffSidAndPath(sid,sysStaffOrgDto.getOrgSidPath()); + if(sysStaffOrg == null){ + ResultBean staffOrgResultBean = sysStaffOrgService.selectAllByStaffSid(sid); + sysStaffOrg = staffOrgResultBean.getData(); + if(sysStaffOrg == null){ + sysStaffOrg = new SysStaffOrg(); + sysStaffOrg.setStaffSid(sid); + BeanUtil.copyProperties(sysStaffOrgDto,sysStaffOrg); + sysStaffOrg.setManageType("3"); + sysStaffOrgService.insert(sysStaffOrg); + }else{ + BeanUtil.copyProperties(sysStaffOrgDto,sysStaffOrg); + sysStaffOrg.setManageType("3"); + sysStaffOrgService.updateById(sysStaffOrg); + } + }else{ + BeanUtil.copyProperties(sysStaffOrgDto,sysStaffOrg); + sysStaffOrg.setManageType("3"); + sysStaffOrgService.updateById(sysStaffOrg); + } + + //更新员工的关联的岗位信息 + SysStaffPostDetailsVo staffPostDetailsVo = sysStaffPostService.getPostByStaffSid(sid); + SysStaffPost sysStaffPost = sysStaffPostService.selectByStaffSid(sid, staffPostDetailsVo.getPostSid()); + SysStaffPostDto sysStaffPostDto = dto.getSysStaffPost(); + sysStaffPostService.updateBySid(sysStaffPostDto, sysStaffPost.getSid()); + boolean isUpdate = updateById(sysStaffinfo); + if (!isUpdate) { + return rb.setMsg("更新员工信息失败"); + } + List sysStaffOrgVos1 = sysStaffOrgService.selectByStaffS(sid); + List orgList1 = new ArrayList<>(); + if (sysStaffOrgVos1.size() > 0) { + for (SysStaffOrgVo vv : sysStaffOrgVos1) { +// String orgSid = sysStaffOrgService.getOrgByOrgSid(vv.getOrgSid()); + String orgSid = vv.getOrgSid(); + SysOrganization sysOrganization = sysOrganizationService.fetchBySid(orgSid); + if (sysOrganization != null) { + orgList1.add(orgSid); + } else { + continue; + } + } + } + List reduce1 = orgList.stream().filter(item -> !orgList1.contains(item)).collect(toList()); + if (reduce1.size() > 0) { + //根据staffSid查询token + String token = sysUserService.selectByStaffsid(sid).getToken(); + //清空该token + redisUtil.remove(token); + } + return rb.success().setMsg("更新员工信息成功"); + } + + /** + * 根据员工sid查询员工信息 + * + * @param sid 员工sid + * @return + */ + public SysStaffinfoDetailsVo selectDetailsBySid(String sid) { + String path = fileUploadComponent.getUrlPrefix(); + SysStaffinfoDetailsVo sysStaffinfoDetailsVo = baseMapper.selectDetailsBySid(sid, path); + if (sysStaffinfoDetailsVo != null) { + List sysStaffOrgList = sysStaffOrgService.getOrgByStaffSidList(sid); + String orgSid = ""; + String type = ""; + for (SysStaffOrg s : sysStaffOrgList) { + if ("3".equals(s.getManageType())) { + orgSid = s.getOrgSid(); + type = s.getManageType(); + break; + } else if ("1".equals(s.getManageType())) { + orgSid = s.getOrgSid(); + type = s.getManageType(); + break; + } else { + orgSid = s.getOrgSid(); + type = s.getManageType(); + } + } + SysStaffPostDetailsVo staffPostDetailsVo = sysStaffPostService.getPostByStaffSid(sid); + SysStaffOrgDetailsVo sysStaffOrgDetailsVo = sysStaffOrgService.selectByStaffByType(sid, orgSid, type); + SysStaffPostDetailsVo sysStaffPostDetailsVo = sysStaffPostService.selectByStaff(sid, staffPostDetailsVo.getPostSid()); + if(sysStaffOrgDetailsVo != null){ + sysStaffinfoDetailsVo.setSysStaffOrg(sysStaffOrgDetailsVo); + }else{ + sysStaffinfoDetailsVo.setSysStaffOrg(new SysStaffOrgDetailsVo()); + } + if(sysStaffPostDetailsVo != null){ + sysStaffinfoDetailsVo.setSysStaffPost(sysStaffPostDetailsVo); + }else{ + sysStaffinfoDetailsVo.setSysStaffPost(new SysStaffPostDetailsVo()); + } + + + + } + return sysStaffinfoDetailsVo; + } + + /** + * 员工信息的删除操作,即设置员工类型为离职状态。 + * + * @param sysStaffQuery 员工sid + * @return + */ + public int del(SysStaffQuery sysStaffQuery) { + int count = 0; + //员工类型离职状态 + String personTypeKey = "01"; + String personType = "离职"; + //String jobNumber = ""; + //SysStaffinfo sysStaffinfo = baseMapper.selectJobNumber(personTypeKey); + /* if (sysStaffinfo == null) { + //无此员工类型的员工 + jobNumber = addOne("9000"); + } else { + jobNumber = sysStaffinfo.getJobNumber(); + jobNumber = addOne(jobNumber); + } + jobNumber = sysStaffinfo.getJobNumber();*/ + //更新员工的员工状态以及员工工号 + int j = baseMapper.updateBySid(personType, personTypeKey, sysStaffQuery.getSid(), sysStaffQuery.getQuitDate(), sysStaffQuery.getQuitReason()); + //根据staffSid查询token + String token = sysUserService.selectByStaffsid(sysStaffQuery.getSid()).getToken(); + if(StringUtils.isNotBlank(token)){ + //清空该token + redisUtil.remove(token); + } + //更新用户表中该员工的员工工号 + //sysUserService.updateByStaSid(jobNumber, sysStaffQuery.getSid()); + if (j > 0) { + count++; + } + return count; + } + + public ResultBean> selectStaffList(PcSysStaffQuery pcSysStaffQuery) { + ResultBean> rb = ResultBean.fireFail(); + //根据当前staffSid查询分公司sid + String orgSid = ""; + List list = new ArrayList<>(); + ResultBean stringResultBean = sysStaffOrgService.selectSidPathByStaffSid(pcSysStaffQuery.getStaffSid()); + if (stringResultBean.getSuccess()) { + orgSid = stringResultBean.getData(); + } + if (StringUtils.isNotBlank(orgSid)) { + list = baseMapper.selectStaffList(orgSid); + } + return rb.success().setData(list); + } + + public List> getStaffName(String staffName,String deptSid) { + QueryWrapper> qw = new QueryWrapper<>(); + if (StringUtils.isNotBlank(staffName)) { + qw.like("ss.name", staffName); + } + qw.eq("ss.isDelete", 0); + qw.ne("sso.orgSid", deptSid); + qw.ne("ss.personTypeKey","01"); + return baseMapper.getStaffName(qw); + } + + public List> getStaffNameByDeptSid(String staffName, String deptSid) { + QueryWrapper> qw = new QueryWrapper<>(); + if (StringUtils.isNotBlank(staffName)) { + qw.like("ss.name", staffName); + } + qw.eq("sso.orgSid", deptSid); + qw.eq("ss.isDelete", 0); + qw.ne("ss.personTypeKey","01"); + return baseMapper.getStaffNameByDeptSid(qw); + } + + public PagerVo getUserList(PagerQuery pagerQuery) { + IPage page = PagerUtil.queryToPage(pagerQuery); + AppSysStaffQuery params = pagerQuery.getParams(); + QueryWrapper qw = new QueryWrapper<>(); + String orgSid = ""; + if (params != null) { + if(StringUtils.isNotBlank(params.getOrgPath())){ + String orgPath = params.getOrgPath(); + orgSid = sysStaffOrgService.getOrgSidByPath(orgPath).getData(); + } + if (StringUtils.isNotBlank(params.getName())) { + qw.like("si.name", params.getName()); + } + if (params.getSelectSid() != null && params.getSelectSid().size() > 0){ + qw.notIn("su.sid",params.getSelectSid()); + } + if(params.getState() == 0){ + qw.eq("si.personTypeKey","02"); + } + } + IPage pagging = baseMapper.getUserList(page, qw, orgSid); + List list = pagging.getRecords(); + list.removeAll(Collections.singleton(null)); + if (!list.isEmpty()) { + for (AppSysStaffVo vo : list) { + String headImage = vo.getHeadImage(); + if (StringUtils.isNotBlank(headImage)) { + if (!headImage.contains(fileUploadComponent.getUrlPrefix())) { + headImage = fileUploadComponent.getUrlPrefix() + headImage; + } + vo.setUserImage(headImage); + } + } + } + PagerVo p = PagerUtil.pageToVo(pagging, null); + return p; + } + + public ResultBean> getGressionUserList(String userSid, String orgPath) { + ResultBean> rb = ResultBean.fireFail(); + String useOrgSid = ""; + if(StringUtils.isNotBlank(orgPath)){ + useOrgSid = sysStaffOrgService.getOrgSidByPath(orgPath).getData(); + }else{ + useOrgSid = sysStaffOrgService.getPathSidByUserSid(userSid).getData(); + } + List list = baseMapper.getGressionUserList(useOrgSid); + return rb.success().setData(list); + } + + public ResultBean> selectStaffLists() { + ResultBean> rb = ResultBean.fireFail(); + List list = baseMapper.selectStaffLists(); + list.removeAll(Collections.singleton(null)); + return rb.success().setData(list); + } + + public ResultBean> selectStaffListss() { + ResultBean> rb = ResultBean.fireFail(); + List list = baseMapper.selectStaffListss(); + list.removeAll(Collections.singleton(null)); + return rb.success().setData(list); + } +} \ No newline at end of file diff --git a/src/main/java/com/yxt/user/biz/sysstaffinfo/SysStaffinfoVo.java b/src/main/java/com/yxt/user/biz/sysstaffinfo/SysStaffinfoVo.java new file mode 100644 index 0000000..16b0395 --- /dev/null +++ b/src/main/java/com/yxt/user/biz/sysstaffinfo/SysStaffinfoVo.java @@ -0,0 +1,47 @@ +package com.yxt.user.biz.sysstaffinfo; + + +import com.yxt.common.core.vo.Vo; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * Project: anrui_portal(门户建设)
+ * File: SysStaffinfoVo.java
+ * Class: com.yxt.anrui.portal.api.sysstaffinfo.SysStaffinfoVo
+ * Description: 人员基础信息表 视图数据对象.
+ * Copyright: Copyright (c) 2011
+ * Company: https://gitee.com/liuzp315
+ * Makedate: 2021-08-03 00:24:30
+ * + * @author liupopo + * @version 1.0 + * @since 1.0 + */ +@ApiModel(value = "人员基础信息表 视图数据对象", description = "人员基础信息表 视图数据对象") +@Data +public class SysStaffinfoVo implements Vo { + + private static final long serialVersionUID = -1250862291306247261L; + @ApiModelProperty(value = "员工sid") + private String sid; + @ApiModelProperty(value = "员工编号") + private String jobNumber; + @ApiModelProperty("姓名") + private String name; + @ApiModelProperty("员工类型") + private String personType; + @ApiModelProperty("手机号") + private String mobile; + @ApiModelProperty(value = "入职日期") + private String joinCompnyDate; + @ApiModelProperty(value = "部门") + private String orgName; + @ApiModelProperty(value = "岗位") + private String postName; + @ApiModelProperty(value = "部门sid") + private String orgSid; + + +} diff --git a/src/main/java/com/yxt/user/biz/sysstaffinfo/WxBase64Query.java b/src/main/java/com/yxt/user/biz/sysstaffinfo/WxBase64Query.java new file mode 100644 index 0000000..a2addb0 --- /dev/null +++ b/src/main/java/com/yxt/user/biz/sysstaffinfo/WxBase64Query.java @@ -0,0 +1,20 @@ +package com.yxt.user.biz.sysstaffinfo; + +import com.yxt.common.core.query.Query; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * @author dimengzhe + * @date 2021/10/6 16:58 + * @description + */ +@Data +public class WxBase64Query implements Query { + private static final long serialVersionUID = 4307651151043379231L; +// @ApiModelProperty(value = "base64") +// private String base64File; + + @ApiModelProperty(value = "图片全路径") + private String imageUrl; +} diff --git a/src/main/java/com/yxt/user/biz/sysstaffinfo/WxSysInfoQuery.java b/src/main/java/com/yxt/user/biz/sysstaffinfo/WxSysInfoQuery.java new file mode 100644 index 0000000..df2aac3 --- /dev/null +++ b/src/main/java/com/yxt/user/biz/sysstaffinfo/WxSysInfoQuery.java @@ -0,0 +1,37 @@ +package com.yxt.user.biz.sysstaffinfo; + +import com.yxt.common.core.query.Query; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotBlank; + +/** + * @author dimengzhe + * @date 2021/10/6 12:08 + * @description 客户端上传身份证 + */ +@Data +public class WxSysInfoQuery implements Query { + private static final long serialVersionUID = 7273642052588903116L; + @ApiModelProperty(value = "用户sid", required = true) + @NotBlank(message = "用户sid不能为空") + private String userSid; + @ApiModelProperty(value = "身份证(人像面)", required = true) + @NotBlank(message = "身份证(人像面)不能为空") + private String idCardA; + @ApiModelProperty(value = "身份证(国徽面)", required = true) + @NotBlank(message = "身份证(国徽面)不能为空") + private String idCardB; + + @ApiModelProperty(value = "身份证地址", required = true) + @NotBlank(message = "身份证地址不能为空") + private String idAddrs; + @ApiModelProperty(value = "证件有效期", required = true) + @NotBlank(message = "证件有效期不能为空") + private String idTerm; + @ApiModelProperty(value = "生日") + private String birth; + @ApiModelProperty(value = "民族") + private String national; +} diff --git a/src/main/java/com/yxt/user/biz/sysstaffinfo/app/AppSysStaffQuery.java b/src/main/java/com/yxt/user/biz/sysstaffinfo/app/AppSysStaffQuery.java new file mode 100644 index 0000000..da16755 --- /dev/null +++ b/src/main/java/com/yxt/user/biz/sysstaffinfo/app/AppSysStaffQuery.java @@ -0,0 +1,30 @@ +package com.yxt.user.biz.sysstaffinfo.app; + +import com.yxt.common.core.query.Query; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.List; + +/** + * @Author dimengzhe + * @Date 2022/6/11 9:44 + * @Description + */ +@Data +public class AppSysStaffQuery implements Query { + private static final long serialVersionUID = 4724669786231817593L; + @ApiModelProperty(value = "用户名称") + private String name; + @ApiModelProperty(value = "用户sid") + private String userSid; + + @ApiModelProperty("组织机构sid") + private String orgPath; + + @ApiModelProperty("已选人员sid") + private List selectSid; + + @ApiModelProperty("state:1是所有,0是本分公司") + private int state; +} diff --git a/src/main/java/com/yxt/user/biz/sysstaffinfo/app/AppSysStaffVo.java b/src/main/java/com/yxt/user/biz/sysstaffinfo/app/AppSysStaffVo.java new file mode 100644 index 0000000..100145c --- /dev/null +++ b/src/main/java/com/yxt/user/biz/sysstaffinfo/app/AppSysStaffVo.java @@ -0,0 +1,30 @@ +package com.yxt.user.biz.sysstaffinfo.app; + +import com.yxt.common.core.vo.Vo; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * @Author dimengzhe + * @Date 2022/6/11 9:29 + * @Description + */ +@Data +public class AppSysStaffVo implements Vo { + private static final long serialVersionUID = -4051562700421770402L; + @ApiModelProperty(value = "用户sid") + private String userSid; + @ApiModelProperty(value = "用户名称") + private String userName; + @ApiModelProperty(value = "头像") + private String userImage; + @ApiModelProperty(value = "电话") + private String userMobile; + @ApiModelProperty(value = "部门") + private String department; + @ApiModelProperty(value = "岗位") + private String position; + + @ApiModelProperty(value = "头像:后端内部使用") + private String headImage; +} diff --git a/src/main/java/com/yxt/user/biz/sysstafforg/SysStaffOrg.java b/src/main/java/com/yxt/user/biz/sysstafforg/SysStaffOrg.java new file mode 100644 index 0000000..7fce2c4 --- /dev/null +++ b/src/main/java/com/yxt/user/biz/sysstafforg/SysStaffOrg.java @@ -0,0 +1,46 @@ +package com.yxt.user.biz.sysstafforg; + +import com.baomidou.mybatisplus.annotation.TableName; +import com.yxt.common.core.domain.BaseEntity; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * Project: anrui_portal(门户建设)
+ * File: SysStaffOrg.java
+ * Class: com.yxt.anrui.portal.api.sysstafforg.SysStaffOrg
+ * Description: 员工部门关联表.
+ * Copyright: Copyright (c) 2011
+ * Company: https://gitee.com/liuzp315
+ * Makedate: 2021-08-03 00:24:29
+ * + * @author liupopo + * @version 1.0 + * @since 1.0 + */ +@ApiModel(value = "员工部门关联表", description = "员工部门关联表") +@TableName("sys_staff_org") +@Data +public class SysStaffOrg extends BaseEntity { + private static final long serialVersionUID = 1L; + + + @ApiModelProperty("部门sid") + private String orgSid; + + @ApiModelProperty("部门名称") + private String orgName; + + @ApiModelProperty("人员sid") + private String staffSid; + + @ApiModelProperty("部门路径") + private String orgSidPath; + + @ApiModelProperty("部门名称路径") + private String orgNamePath; + + @ApiModelProperty("管理类型:1、主管。2、分管。3、员工") + private String manageType; +} diff --git a/src/main/java/com/yxt/user/biz/sysstafforg/SysStaffOrgByUserVo.java b/src/main/java/com/yxt/user/biz/sysstafforg/SysStaffOrgByUserVo.java new file mode 100644 index 0000000..502ae6c --- /dev/null +++ b/src/main/java/com/yxt/user/biz/sysstafforg/SysStaffOrgByUserVo.java @@ -0,0 +1,30 @@ +package com.yxt.user.biz.sysstafforg; + + +import com.yxt.common.core.vo.Vo; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * Project: anrui_portal(门户建设)
+ * File: SysStaffOrgVo.java
+ * Class: com.yxt.anrui.portal.api.sysstafforg.SysStaffOrgVo
+ * Description: 员工部门关联表 视图数据对象.
+ * Copyright: Copyright (c) 2011
+ * Company: https://gitee.com/liuzp315
+ * Makedate: 2021-08-03 00:24:29
+ * + * @author liupopo + * @version 1.0 + * @since 1.0 + */ +@ApiModel(value = "员工部门关联表 视图数据对象", description = "员工部门关联表 视图数据对象") +@Data +public class SysStaffOrgByUserVo implements Vo { + + @ApiModelProperty("sid") + private String sid; + @ApiModelProperty("员工姓名") + private String name; +} diff --git a/src/main/java/com/yxt/user/biz/sysstafforg/SysStaffOrgDetailsVo.java b/src/main/java/com/yxt/user/biz/sysstafforg/SysStaffOrgDetailsVo.java new file mode 100644 index 0000000..e473ccf --- /dev/null +++ b/src/main/java/com/yxt/user/biz/sysstafforg/SysStaffOrgDetailsVo.java @@ -0,0 +1,28 @@ +package com.yxt.user.biz.sysstafforg; + +import com.yxt.common.core.vo.Vo; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * @Author dimengzhe + * @Date 2022/2/11 16:15 + * @Description 员工部门详情信息 + */ +@Data +public class SysStaffOrgDetailsVo implements Vo { + private static final long serialVersionUID = 5354841525724609428L; + + @ApiModelProperty("部门sid") + private String orgSid; + @ApiModelProperty("部门名称") + private String orgName; + @ApiModelProperty("部门路径") + private String orgSidPath; + @ApiModelProperty("部门名称路径") + private String orgNamePath; + @ApiModelProperty(value = "部门编码") + private String orgCode; + @ApiModelProperty("管理类型:1、主管。2、分管。3、员工") + private String manageType; +} diff --git a/src/main/java/com/yxt/user/biz/sysstafforg/SysStaffOrgDto.java b/src/main/java/com/yxt/user/biz/sysstafforg/SysStaffOrgDto.java new file mode 100644 index 0000000..620d42e --- /dev/null +++ b/src/main/java/com/yxt/user/biz/sysstafforg/SysStaffOrgDto.java @@ -0,0 +1,42 @@ +package com.yxt.user.biz.sysstafforg; + + +import com.yxt.common.core.dto.Dto; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotBlank; + +/** + * Project: anrui_portal(门户建设)
+ * File: SysStaffOrgDto.java
+ * Class: com.yxt.anrui.portal.api.sysstafforg.SysStaffOrgDto
+ * Description: 员工部门关联表 数据传输对象.
+ * Copyright: Copyright (c) 2011
+ * Company: https://gitee.com/liuzp315
+ * Makedate: 2021-08-03 00:24:29
+ * + * @author liupopo + * @version 1.0 + * @since 1.0 + */ +@ApiModel(value = "员工部门关联表 数据传输对象", description = "员工部门关联表 数据传输对象") +@Data +public class SysStaffOrgDto implements Dto { + + private static final long serialVersionUID = 1403491378761015027L; + @ApiModelProperty("部门sid") + private String orgSid; + @ApiModelProperty("部门名称") + @NotBlank(message = "部门名称不能为空") + private String orgName; + @ApiModelProperty("部门路径") + private String orgSidPath; + @ApiModelProperty("部门名称路径") + private String orgNamePath; + @ApiModelProperty(value = "部门编码") + private String orgCode; + @ApiModelProperty(value = "管理类型:1、主管。2、分管。3、员工", example = "3") + private String manageType; +} \ No newline at end of file diff --git a/src/main/java/com/yxt/user/biz/sysstafforg/SysStaffOrgMapper.java b/src/main/java/com/yxt/user/biz/sysstafforg/SysStaffOrgMapper.java new file mode 100644 index 0000000..b59bb2d --- /dev/null +++ b/src/main/java/com/yxt/user/biz/sysstafforg/SysStaffOrgMapper.java @@ -0,0 +1,117 @@ +package com.yxt.user.biz.sysstafforg; + +import com.baomidou.mybatisplus.core.conditions.Wrapper; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.core.toolkit.Constants; +import com.yxt.user.biz.sysuserdefaultorg.SysOrgPathList; +import org.apache.ibatis.annotations.Delete; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; + +import java.util.List; + +/** + * Project: anrui_portal(门户建设)
+ * File: SysStaffOrgMapper.java
+ * Class: com.yxt.anrui.portal.biz.sysstafforg.SysStaffOrgMapper
+ * Description: 员工部门关联表.
+ * Copyright: Copyright (c) 2011
+ * Company: https://gitee.com/liuzp315
+ * Makedate: 2021-08-03 00:24:29
+ * + * @author liupopo + * @version 1.0 + * @since 1.0 + */ +@Mapper +public interface SysStaffOrgMapper extends BaseMapper { + + IPage selectPageVo(IPage page, @Param(Constants.WRAPPER) Wrapper qw); + + List selectListAllVo(@Param(Constants.WRAPPER) Wrapper qw); + + @Select("select * from sys_staff_org") + List selectListVo(); + + @Delete("delete from sys_staff_org where orgSid=#{orgSid} ") + void delByOrgSid(@Param("orgSid") String sid); + + @Select("select staffOrg.manageType as manageType,staffOrg.orgSid as orgSid,staffinfo.name as staffName,staffinfo.sid as staffSid " + + "from sys_staff_org staffOrg left join sys_staffinfo staffinfo on staffinfo.sid=staffOrg.staffSid " + + "where staffOrg.orgSid=#{orgSid} ") + List fetchByOrgSid(@Param("orgSid") String orgSid); + + @Delete("delete from sys_staff_org where staffSid=#{staffSid} ") + void deleteByStaffSid(String staffSid); + + List staffinfoList(@Param(Constants.WRAPPER) QueryWrapper queryWrapper); + + @Select("select * from sys_staff_org where staffSid=#{staffSid}") + List getSysStaffOrgListByStaffSid(@Param("staffSid") String staffSid); + + @Select("select * from sys_staff_org where staffSid=#{staffSid} and manageType = '3'") + List getSysStaffOrgListByStaff(@Param("staffSid") String staffSid); + + /** + * 根据员工sid更新员工信息 + * + * @param sid 员工sid + * @return + */ + SysStaffOrg selectByStaffSid(@Param("sid") String sid, @Param("orgSid") String orgSid); + + /** + * 员工部门信息详情 + * + * @param sid 员工sid + * @return + */ + SysStaffOrgDetailsVo selectByStaff(@Param("sid") String sid, @Param("orgSid") String orgSid); + + SysStaffOrgDetailsVo selectByStaffByType(@Param("sid") String sid, @Param("orgSid") String orgSid, @Param("type") String type); + + @Select("SELECT GROUP_CONCAT(DISTINCT(orgSid)) FROM sys_staff_org WHERE staffSid=#{staffSid}") + String getSysStaffOrgSidListByStaffSid(@Param("staffSid") String staffSid); + + String selectBySidPathByStaffSid(String applySid); + + @Select("select * from sys_staff_org where staffSid=#{staffSid} AND manageType != 2") + SysStaffOrg selectAllByStaffSid(String staffSid); + + @Select("select * from sys_staff_org where staffSid=#{sid} and manageType = '3' order by id limit 1") + SysStaffOrg getOrgByStaffSid(String sid); + + @Select("select * from sys_staff_org where staffSid=#{sid} and orgSidPath = #{path} ") + SysStaffOrg getOrgByStaffSidAndPath(@Param("sid") String sid, @Param("path") String path); + + @Select("select * from sys_staff_org where staffSid=#{sid}") + List getOrgByStaffSidList(String sid); + + @Delete("delete from sys_staff_org where orgSid=#{sid} and (manageType = 1 or manageType = 2)") + void delZGAndFGByOrgSid(String sid); + + int selectByStaffAndOrg(@Param("sid") String sid, @Param("staffSid") String zgStaffSid, @Param("type") String type); + + int deleteByStaffSidAndType(@Param("sid") String sid, @Param("staffSid") String zgStaffSid, @Param("type") String type); + + List selectByStaffS(String staffSid); + + List selectByOrgSid(String sid); + + String selectByUserSid(String userSid); + + List selectOrgBySid(@Param("orgPath") String orgPath, @Param("staffSid") String staffSid); + + List getList(String staffSid); + + List selectStaffByOrgSid(@Param("orgSid") String sid, @Param("type") String type); + + List selectStaffByOrg(String orgSid); + + List selAllByOrgPath(@Param(Constants.WRAPPER) QueryWrapper qw); + + List selAllByOrgSidPath(String orgSidPath); +} \ No newline at end of file diff --git a/src/main/java/com/yxt/user/biz/sysstafforg/SysStaffOrgMapper.xml b/src/main/java/com/yxt/user/biz/sysstafforg/SysStaffOrgMapper.xml new file mode 100644 index 0000000..50d297f --- /dev/null +++ b/src/main/java/com/yxt/user/biz/sysstafforg/SysStaffOrgMapper.xml @@ -0,0 +1,161 @@ + + + + + + + + + + + + + + + + + + + + + + + delete + from sys_staff_org + where staffSid = #{staffSid} + and manageType = #{type} + and orgSidPath = #{sid} + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/main/java/com/yxt/user/biz/sysstafforg/SysStaffOrgQuery.java b/src/main/java/com/yxt/user/biz/sysstafforg/SysStaffOrgQuery.java new file mode 100644 index 0000000..e0a0e07 --- /dev/null +++ b/src/main/java/com/yxt/user/biz/sysstafforg/SysStaffOrgQuery.java @@ -0,0 +1,44 @@ +package com.yxt.user.biz.sysstafforg; + + +import com.yxt.common.core.query.Query; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * Project: anrui_portal(门户建设)
+ * File: SysStaffOrgQuery.java
+ * Class: com.yxt.anrui.portal.api.sysstafforg.SysStaffOrgQuery
+ * Description: 员工部门关联表 查询条件.
+ * Copyright: Copyright (c) 2011
+ * Company: https://gitee.com/liuzp315
+ * Makedate: 2021-08-03 00:24:29
+ * + * @author liupopo + * @version 1.0 + * @since 1.0 + */ +@ApiModel(value = "员工部门关联表 查询条件", description = "员工部门关联表 查询条件") +@Data +public class SysStaffOrgQuery implements Query { + + + @ApiModelProperty("部门sid") + private String orgSid; + + @ApiModelProperty("部门名称") + private String orgName; + + @ApiModelProperty("人员sid") + private String staffSid; + + @ApiModelProperty("部门路径") + private String orgSidPath; + + @ApiModelProperty("部门名称路径") + private Integer orgNamePath; + + @ApiModelProperty("管理类型:1、主管。2、分管。3、员工") + private String manageType; +} diff --git a/src/main/java/com/yxt/user/biz/sysstafforg/SysStaffOrgService.java b/src/main/java/com/yxt/user/biz/sysstafforg/SysStaffOrgService.java new file mode 100644 index 0000000..311096a --- /dev/null +++ b/src/main/java/com/yxt/user/biz/sysstafforg/SysStaffOrgService.java @@ -0,0 +1,343 @@ +package com.yxt.user.biz.sysstafforg; + +import cn.hutool.core.bean.BeanUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.yxt.user.biz.sysorganization.SysOrganization; +import com.yxt.user.biz.sysstafforg.*; +import com.yxt.user.biz.sysuser.SysUserInfoVo; +import com.yxt.user.biz.sysuserdefaultorg.SysOrgPathList; +import com.yxt.user.biz.sysorganization.SysOrganizationService; +import com.yxt.user.biz.sysuser.SysUserService; +import com.yxt.common.base.service.MybatisBaseService; +import com.yxt.common.base.utils.PagerUtil; +import com.yxt.common.core.query.PagerQuery; +import com.yxt.common.core.result.ResultBean; +import com.yxt.common.core.vo.PagerVo; +import org.apache.commons.lang3.StringUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.Arrays; +import java.util.List; + +/** + * Project: anrui_portal(门户建设)
+ * File: SysStaffOrgService.java
+ * Class: com.yxt.user.biz.sysstafforg.SysStaffOrgService
+ * Description: 员工部门关联表 业务逻辑.
+ * Copyright: Copyright (c) 2011
+ * Company: https://gitee.com/liuzp315
+ * Makedate: 2021-08-03 00:24:29
+ * + * @author liupopo + * @version 1.0 + * @since 1.0 + */ +@Service +public class SysStaffOrgService extends MybatisBaseService { + + @Autowired + private SysOrganizationService sysOrganizationService; + @Autowired + private SysUserService sysUserService; + + public PagerVo listPage(PagerQuery pq) { + SysStaffOrgQuery query = pq.getParams(); + QueryWrapper qw = createQueryWrapper(query); + IPage page = PagerUtil.queryToPage(pq); + IPage pagging = baseMapper.selectPage(page, qw); + PagerVo p = PagerUtil.pageToVo(pagging, null); + return p; + } + + public List listAll(SysStaffOrgQuery query) { + QueryWrapper qw = createQueryWrapper(query); + return baseMapper.selectList(qw); + } + + private QueryWrapper createQueryWrapper(SysStaffOrgQuery query) { + // todo: 这里根据具体业务调整查询条件 + // 多字段Like示例:qw.and(wrapper -> wrapper.like("name", query.getName()).or().like("remark", query.getName())); + QueryWrapper qw = new QueryWrapper<>(); + + + if (StringUtils.isNotBlank(query.getOrgSid())) { + qw.eq("orgSid", query.getOrgSid()); + } + + if (StringUtils.isNotBlank(query.getOrgName())) { + qw.eq("orgName", query.getOrgName()); + } + + if (StringUtils.isNotBlank(query.getStaffSid())) { + qw.eq("staffSid", query.getStaffSid()); + } + + if (StringUtils.isNotBlank(query.getOrgSidPath())) { + qw.eq("orgSidPath", query.getOrgSidPath()); + } + + if (query.getOrgNamePath() != null) { + qw.eq("orgNamePath", query.getOrgNamePath()); + } + + if (StringUtils.isNotBlank(query.getManageType())) { + qw.eq("manageType", query.getManageType()); + } + return qw; + } + + public PagerVo listPageVo(PagerQuery pq) { + SysStaffOrgQuery query = pq.getParams(); + QueryWrapper qw = createQueryWrapper(query); + IPage page = PagerUtil.queryToPage(pq); + IPage pagging = baseMapper.selectPageVo(page, qw); + PagerVo p = PagerUtil.pageToVo(pagging, null); + return p; + } + + public List listAllVo(SysStaffOrgQuery query) { + QueryWrapper qw = createQueryWrapper(query); + return baseMapper.selectListAllVo(qw); + } + + public List listVo() { + return baseMapper.selectListVo(); + } + + public void saveOrUpdateDto(SysStaffOrgDto dto) { + SysStaffOrg entity = new SysStaffOrg(); + dto.fillEntity(entity); + this.saveOrUpdate(entity); + } + + public SysStaffOrgVo fetchByIdVo(String id) { + SysStaffOrg entity = this.fetchById(id); + SysStaffOrgVo vo = new SysStaffOrgVo(); + BeanUtil.copyProperties(entity, vo); + return vo; + } + + public void delByOrgSid(String sid) { + baseMapper.delByOrgSid(sid); + } + + public List fetchByOrgSid(String orgSid) { + List list = baseMapper.fetchByOrgSid(orgSid); + return list; + } + + public void deleteByStaffSid(String staffSid) { + baseMapper.deleteByStaffSid(staffSid); + } + + public List staffinfoList(SysStaffOrgQuery query) { + QueryWrapper queryWrapper = createQueryWrapper(query); + List list = baseMapper.staffinfoList(queryWrapper); + return list; + } + + /** + * 根据员工sid部门信息 + * + * @param sid 员工sid + * @return + */ + public SysStaffOrg selectByStaffSid(String sid, String orgSid) { + return baseMapper.selectByStaffSid(sid, orgSid); + } + + /** + * 员工部门信息详情 + * + * @param sid 员工sid + * @return + */ + public SysStaffOrgDetailsVo selectByStaff(String sid, String orgSid) { + return baseMapper.selectByStaff(sid, orgSid); + } + + public SysStaffOrgDetailsVo selectByStaffByType(String sid, String orgSid, String type) { + return baseMapper.selectByStaffByType(sid, orgSid, type); + } + + public List getSysStaffOrgListByStaffSid(String staffSid) { + return baseMapper.getSysStaffOrgListByStaffSid(staffSid); + } + + public List getSysStaffOrgListByStaff(String staffSid) { + return baseMapper.getSysStaffOrgListByStaff(staffSid); + } + + public String getSysStaffOrgSidListByStaffSid(String staffSid) { + return baseMapper.getSysStaffOrgSidListByStaffSid(staffSid); + } + + /*public ResultBean selectSidPathByStaffSid(String applySid) { + ResultBean rb = ResultBean.fireFail(); + String orgSidPath = baseMapper.selectBySidPathByStaffSid(applySid); + //根据部门路径循环遍历查询分公司的sid + List list = Arrays.asList(orgSidPath.split("/")); + String sid = ""; + for (int i = 0; i < list.size(); i++) { + SysOrganization sysOrganization = sysOrganizationService.fetchBySid(list.get(i)); + if (sysOrganization != null) { + if (sysOrganization.getIsDept() != null) { + if (sysOrganization.getIsDept() == 0 && !"0".equals(sysOrganization.getPsid())) { + sid = list.get(i); + break; + } + } else { + if ("0".equals(sysOrganization.getPsid())) { + sid = list.get(i); + break; + } + } + } + } + if (StringUtils.isBlank(sid)) { + return rb; + } + return rb.success().setData(sid); + }*/ + public ResultBean selectSidPathByStaffSid(String applySid) { + ResultBean rb = ResultBean.fireFail(); + String orgSid = baseMapper.selectBySidPathByStaffSid(applySid); + String orgPathSid = ""; + if (StringUtils.isNotBlank(orgSid)) { + orgPathSid = getOrgByOrgSid(orgSid); + } + return rb.success().setData(orgPathSid); + } + + public ResultBean selectAllByStaffSid(String staffSid) { + ResultBean rb = ResultBean.fireFail(); + SysStaffOrg sysStaffOrg = baseMapper.selectAllByStaffSid(staffSid); + return rb.success().setData(sysStaffOrg); + } + + public SysStaffOrg getOrgByStaffSid(String sid) { + return baseMapper.getOrgByStaffSid(sid); + } + + public SysStaffOrg getOrgByStaffSidAndPath(String sid, String path) { + return baseMapper.getOrgByStaffSidAndPath(sid, path); + } + + public List getOrgByStaffSidList(String sid) { + return baseMapper.getOrgByStaffSidList(sid); + } + + /** + * 根据用户sid获取分公司sid + * + * @param applySid 用户sid + * @return + */ + public ResultBean getPathSidByUserSid(String applySid) { + ResultBean rb = ResultBean.fireFail(); + SysUserInfoVo sysUserInfoVo = sysUserService.selectUserInfoByUserSid(applySid); + if (sysUserInfoVo == null) { + return rb; + } + ResultBean resultBean = selectSidPathByStaffSid(sysUserInfoVo.getStaffSid()); + return resultBean; + } + + public String getOrgByOrgSid(String orgSid) { + SysOrganization sysOrganization = sysOrganizationService.fetchBySid(orgSid); + if(sysOrganization == null){ + return "0"; + } + if ("0".equals(sysOrganization.getPsid())) { + return "0"; + } + if (sysOrganization.getIsDept() == 0) { + return sysOrganization.getSid(); + } + return getOrgByOrgSid(sysOrganization.getPsid()); + + } + + public void delZGAndFGByOrgSid(String sid) { + baseMapper.delZGAndFGByOrgSid(sid); + } + + /** + * 查询该组织中是否存在该人员的该种类型关系 + * + * @param sid 组织机构sid + * @param zgStaffSid 人员sid + * @param type 主管、分管、员工 + * @return + */ + public int selectByStaffAndOrg(String sid, String zgStaffSid, String type) { + return baseMapper.selectByStaffAndOrg(sid, zgStaffSid, type); + } + + public int deleteByStaffSidAndType(String orgSid, String zgStaffSid, String type) { + return baseMapper.deleteByStaffSidAndType(orgSid, zgStaffSid, type); + } + + public List selectByStaffS(String staffSid) { + return baseMapper.selectByStaffS(staffSid); + } + + public List selectByOrgSid(String sid) { + return baseMapper.selectByOrgSid(sid); + } + + public String selectByUserSid(String userSid) { + return baseMapper.selectByUserSid(userSid); + } + + public List selectOrgBySid(String orgPath, String staffSid) { + return baseMapper.selectOrgBySid(orgPath, staffSid); + } + + public ResultBean getOrgSidByPath(String orgPath) { + ResultBean rb = ResultBean.fireFail(); + //根据用户全路径获取分公司sid + List stringList = Arrays.asList(orgPath.split("/")); + String orgSid = stringList.get(stringList.size() - 1); + orgPath = sysOrganizationService.getOrgSid(orgSid); + return rb.success().setData(orgPath); + } + + public List getList(String staffSid) { + return baseMapper.getList(staffSid); + } + + public List selectStaffByOrgSid(String sid, String type) { + return baseMapper.selectStaffByOrgSid(sid,type); + } + + public List selectStaffByOrg(String orgSid) { + return baseMapper.selectStaffByOrg(orgSid); + } + + public ResultBean> selAllByOrgPath(String orgSidPath,String roleSid) { + ResultBean rb = ResultBean.fireFail(); + QueryWrapper qw = new QueryWrapper<>(); + qw.eq("sur.roleSid",roleSid); + qw.like("sso.orgSidPath",orgSidPath); + List sysStaffOrgByUserVos = baseMapper.selAllByOrgPath(qw); + return rb.success().setData(sysStaffOrgByUserVos); + } + + public ResultBean getOrgSidByPath2(String orgPath) { + ResultBean rb = ResultBean.fireFail(); + //根据用户全路径获取分公司sid + List stringList = Arrays.asList(orgPath.split("/")); + String orgSid = stringList.get(stringList.size() - 2); + orgPath = sysOrganizationService.getOrgSid(orgSid); + return rb.success().setData(orgPath); + } + + public ResultBean> selAllByOrgSidPath(String orgSidPath) { + ResultBean rb = ResultBean.fireFail(); + List sysStaffOrgByUserVoList = baseMapper.selAllByOrgSidPath(orgSidPath); + return rb.success().setData(sysStaffOrgByUserVoList); + } +} \ No newline at end of file diff --git a/src/main/java/com/yxt/user/biz/sysstafforg/SysStaffOrgVo.java b/src/main/java/com/yxt/user/biz/sysstafforg/SysStaffOrgVo.java new file mode 100644 index 0000000..b41ddb2 --- /dev/null +++ b/src/main/java/com/yxt/user/biz/sysstafforg/SysStaffOrgVo.java @@ -0,0 +1,48 @@ +package com.yxt.user.biz.sysstafforg; + + +import com.yxt.common.core.vo.Vo; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * Project: anrui_portal(门户建设)
+ * File: SysStaffOrgVo.java
+ * Class: com.yxt.anrui.portal.api.sysstafforg.SysStaffOrgVo
+ * Description: 员工部门关联表 视图数据对象.
+ * Copyright: Copyright (c) 2011
+ * Company: https://gitee.com/liuzp315
+ * Makedate: 2021-08-03 00:24:29
+ * + * @author liupopo + * @version 1.0 + * @since 1.0 + */ +@ApiModel(value = "员工部门关联表 视图数据对象", description = "员工部门关联表 视图数据对象") +@Data +public class SysStaffOrgVo implements Vo { + + + @ApiModelProperty("部门sid") + private String orgSid; + + @ApiModelProperty("部门名称") + private String orgName; + + @ApiModelProperty("人员sid") + private String staffSid; + + @ApiModelProperty("部门路径") + private String orgSidPath; + + @ApiModelProperty("部门名称路径") + private String orgNamePath; + + @ApiModelProperty("管理类型:1、主管。2、分管。3、员工") + private String manageType; + @ApiModelProperty("员工姓名") + private String staffName; + @ApiModelProperty("员工手机号") + private String mobile; +} diff --git a/src/main/java/com/yxt/user/biz/sysstaffpost/SysStaffPost.java b/src/main/java/com/yxt/user/biz/sysstaffpost/SysStaffPost.java new file mode 100644 index 0000000..ec68576 --- /dev/null +++ b/src/main/java/com/yxt/user/biz/sysstaffpost/SysStaffPost.java @@ -0,0 +1,47 @@ +package com.yxt.user.biz.sysstaffpost; + +import com.baomidou.mybatisplus.annotation.TableName; +import com.fasterxml.jackson.annotation.JsonFormat; +import com.yxt.common.core.domain.BaseEntity; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.Date; + +/** + * Project: anrui_portal(门户建设)
+ * File: SysStaffPost.java
+ * Class: com.yxt.anrui.portal.api.sysstaffpost.SysStaffPost
+ * Description: 员工岗位关联表.
+ * Copyright: Copyright (c) 2011
+ * Company: https://gitee.com/liuzp315
+ * Makedate: 2021-08-03 00:24:30
+ * + * @author liupopo + * @version 1.0 + * @since 1.0 + */ +@ApiModel(value = "员工岗位关联表", description = "员工岗位关联表") +@TableName("sys_staff_post") +@Data +public class SysStaffPost extends BaseEntity { + private static final long serialVersionUID = 1L; + + + @ApiModelProperty("员工sid") + private String staffSid; + + @ApiModelProperty("所属部门sid") + private String orgSid; + + @ApiModelProperty("就任岗位") + private String postSid; + + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8") + @ApiModelProperty("任岗开始日期") + private Date startDate; + + @ApiModelProperty("是否主任岗:1是、0否") + private Integer isDepetHead; +} diff --git a/src/main/java/com/yxt/user/biz/sysstaffpost/SysStaffPostDetailsVo.java b/src/main/java/com/yxt/user/biz/sysstaffpost/SysStaffPostDetailsVo.java new file mode 100644 index 0000000..3d0fffb --- /dev/null +++ b/src/main/java/com/yxt/user/biz/sysstaffpost/SysStaffPostDetailsVo.java @@ -0,0 +1,24 @@ +package com.yxt.user.biz.sysstaffpost; + +import com.yxt.common.core.vo.Vo; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * @Author dimengzhe + * @Date 2022/2/11 16:16 + * @Description 员工岗位详情 + */ +@Data +public class SysStaffPostDetailsVo implements Vo { + private static final long serialVersionUID = 715449809179360019L; + + @ApiModelProperty("就任岗位") + private String postSid; + @ApiModelProperty("是否主任岗:1是、0否") + private Integer isDepetHead; + @ApiModelProperty(value = "岗位编码") + private String postCode; + @ApiModelProperty(value = "岗位名称") + private String name; +} diff --git a/src/main/java/com/yxt/user/biz/sysstaffpost/SysStaffPostDto.java b/src/main/java/com/yxt/user/biz/sysstaffpost/SysStaffPostDto.java new file mode 100644 index 0000000..3e9b8a4 --- /dev/null +++ b/src/main/java/com/yxt/user/biz/sysstaffpost/SysStaffPostDto.java @@ -0,0 +1,36 @@ +package com.yxt.user.biz.sysstaffpost; + + +import com.yxt.common.core.dto.Dto; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotBlank; + +/** + * Project: anrui_portal(门户建设)
+ * File: SysStaffPostDto.java
+ * Class: com.yxt.anrui.portal.api.sysstaffpost.SysStaffPostDto
+ * Description: 员工岗位关联表 数据传输对象.
+ * Copyright: Copyright (c) 2011
+ * Company: https://gitee.com/liuzp315
+ * Makedate: 2021-08-03 00:24:30
+ * + * @author liupopo + * @version 1.0 + * @since 1.0 + */ +@ApiModel(value = "员工岗位关联表 数据传输对象", description = "员工岗位关联表 数据传输对象") +@Data +public class SysStaffPostDto implements Dto { + + private static final long serialVersionUID = -243797759737403877L; + @ApiModelProperty("就任岗位") + private String postSid; + @ApiModelProperty(value = "岗位编码", required = true) + @NotBlank(message = "岗位编码不能为空") + private String postCode; + @ApiModelProperty("是否主任岗:1是、0否") + private Integer isDepetHead; +} \ No newline at end of file diff --git a/src/main/java/com/yxt/user/biz/sysstaffpost/SysStaffPostMapper.java b/src/main/java/com/yxt/user/biz/sysstaffpost/SysStaffPostMapper.java new file mode 100644 index 0000000..50148f3 --- /dev/null +++ b/src/main/java/com/yxt/user/biz/sysstaffpost/SysStaffPostMapper.java @@ -0,0 +1,61 @@ +package com.yxt.user.biz.sysstaffpost; + +import com.baomidou.mybatisplus.core.conditions.Wrapper; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.core.toolkit.Constants; +import org.apache.ibatis.annotations.Delete; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; + +import java.util.List; + +/** + * Project: anrui_portal(门户建设)
+ * File: SysStaffPostMapper.java
+ * Class: com.yxt.anrui.portal.biz.sysstaffpost.SysStaffPostMapper
+ * Description: 员工岗位关联表.
+ * Copyright: Copyright (c) 2011
+ * Company: https://gitee.com/liuzp315
+ * Makedate: 2021-08-03 00:24:30
+ * + * @author liupopo + * @version 1.0 + * @since 1.0 + */ +@Mapper +public interface SysStaffPostMapper extends BaseMapper { + + IPage selectPageVo(IPage page, @Param(Constants.WRAPPER) Wrapper qw); + + List selectListAllVo(@Param(Constants.WRAPPER) Wrapper qw); + + @Select("select * from sys_staff_post") + List selectListVo(); + + @Delete("delete from sys_staff_post where staffSid=#{staffSid} ") + void deleteByStaffSid(String staffSid); + + /** + * 根据员工sid查询员工的岗位信息 + * + * @param sid 员工的sid + * @return + */ + SysStaffPost selectByStaffSid(@Param("sid") String sid, @Param("postSid") String postSid); + + /** + * 员工岗位信息详情 + * + * @param sid 员工sid + * @return + */ + SysStaffPostDetailsVo selectByStaff(@Param("sid") String sid, @Param("postSid") String postSid); + + SysStaffPostDetailsVo getPostByStaffSid(String sid); + + String selectPost(String sid); + + List getPost(String staffSid); +} \ No newline at end of file diff --git a/src/main/java/com/yxt/user/biz/sysstaffpost/SysStaffPostMapper.xml b/src/main/java/com/yxt/user/biz/sysstaffpost/SysStaffPostMapper.xml new file mode 100644 index 0000000..7a055a9 --- /dev/null +++ b/src/main/java/com/yxt/user/biz/sysstaffpost/SysStaffPostMapper.xml @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/main/java/com/yxt/user/biz/sysstaffpost/SysStaffPostQuery.java b/src/main/java/com/yxt/user/biz/sysstaffpost/SysStaffPostQuery.java new file mode 100644 index 0000000..3c30868 --- /dev/null +++ b/src/main/java/com/yxt/user/biz/sysstaffpost/SysStaffPostQuery.java @@ -0,0 +1,46 @@ +package com.yxt.user.biz.sysstaffpost; + + +import com.fasterxml.jackson.annotation.JsonFormat; +import com.yxt.common.core.query.Query; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.Date; + +/** + * Project: anrui_portal(门户建设)
+ * File: SysStaffPostQuery.java
+ * Class: com.yxt.anrui.portal.api.sysstaffpost.SysStaffPostQuery
+ * Description: 员工岗位关联表 查询条件.
+ * Copyright: Copyright (c) 2011
+ * Company: https://gitee.com/liuzp315
+ * Makedate: 2021-08-03 00:24:30
+ * + * @author liupopo + * @version 1.0 + * @since 1.0 + */ +@ApiModel(value = "员工岗位关联表 查询条件", description = "员工岗位关联表 查询条件") +@Data +public class SysStaffPostQuery implements Query { + + + @ApiModelProperty("员工sid") + private String staffSid; + + @ApiModelProperty("所属部门sid") + private String orgSid; + + @ApiModelProperty("就任岗位") + private String postSid; + + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8") + @ApiModelProperty("任岗开始日期") + private Date startDateStart; + private Date startDateEnd; + + @ApiModelProperty("是否主任岗:1是、0否") + private Integer isDepetHead; +} diff --git a/src/main/java/com/yxt/user/biz/sysstaffpost/SysStaffPostService.java b/src/main/java/com/yxt/user/biz/sysstaffpost/SysStaffPostService.java new file mode 100644 index 0000000..f500b6e --- /dev/null +++ b/src/main/java/com/yxt/user/biz/sysstaffpost/SysStaffPostService.java @@ -0,0 +1,141 @@ +package com.yxt.user.biz.sysstaffpost; + +import cn.hutool.core.bean.BeanUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.yxt.common.base.service.MybatisBaseService; +import com.yxt.common.base.utils.PagerUtil; +import com.yxt.common.core.query.PagerQuery; +import com.yxt.common.core.vo.PagerVo; +import org.apache.commons.lang3.StringUtils; +import org.springframework.stereotype.Service; + +import java.util.List; + +/** + * Project: anrui_portal(门户建设)
+ * File: SysStaffPostService.java
+ * Class: com.yxt.anrui.portal.biz.sysstaffpost.SysStaffPostService
+ * Description: 员工岗位关联表 业务逻辑.
+ * Copyright: Copyright (c) 2011
+ * Company: https://gitee.com/liuzp315
+ * Makedate: 2021-08-03 00:24:30
+ * + * @author liupopo + * @version 1.0 + * @since 1.0 + */ +@Service +public class SysStaffPostService extends MybatisBaseService { + public PagerVo listPage(PagerQuery pq) { + SysStaffPostQuery query = pq.getParams(); + QueryWrapper qw = createQueryWrapper(query); + IPage page = PagerUtil.queryToPage(pq); + IPage pagging = baseMapper.selectPage(page, qw); + PagerVo p = PagerUtil.pageToVo(pagging, null); + return p; + } + + public List listAll(SysStaffPostQuery query) { + QueryWrapper qw = createQueryWrapper(query); + return baseMapper.selectList(qw); + } + + private QueryWrapper createQueryWrapper(SysStaffPostQuery query) { + // todo: 这里根据具体业务调整查询条件 + // 多字段Like示例:qw.and(wrapper -> wrapper.like("name", query.getName()).or().like("remark", query.getName())); + QueryWrapper qw = new QueryWrapper<>(); + + + if (StringUtils.isNotBlank(query.getStaffSid())) { + qw.eq("staffSid", query.getStaffSid()); + } + + if (StringUtils.isNotBlank(query.getOrgSid())) { + qw.eq("orgSid", query.getOrgSid()); + } + + if (StringUtils.isNotBlank(query.getPostSid())) { + qw.eq("postSid", query.getPostSid()); + } + + if (query.getStartDateStart() != null) { + qw.ge("startDate", query.getStartDateStart()); + } + if (query.getStartDateEnd() != null) { + qw.le("startDate", query.getStartDateEnd()); + } + + if (query.getIsDepetHead() != null) { + qw.eq("isDepetHead", query.getIsDepetHead()); + } + return qw; + } + + public PagerVo listPageVo(PagerQuery pq) { + SysStaffPostQuery query = pq.getParams(); + QueryWrapper qw = createQueryWrapper(query); + IPage page = PagerUtil.queryToPage(pq); + IPage pagging = baseMapper.selectPageVo(page, qw); + PagerVo p = PagerUtil.pageToVo(pagging, null); + return p; + } + + public List listAllVo(SysStaffPostQuery query) { + QueryWrapper qw = createQueryWrapper(query); + return baseMapper.selectListAllVo(qw); + } + + public List listVo() { + return baseMapper.selectListVo(); + } + + public void saveOrUpdateDto(SysStaffPostDto dto) { + SysStaffPost entity = new SysStaffPost(); + dto.fillEntity(entity); + this.saveOrUpdate(entity); + } + + public SysStaffPostVo fetchByIdVo(String id) { + SysStaffPost entity = this.fetchById(id); + SysStaffPostVo vo = new SysStaffPostVo(); + BeanUtil.copyProperties(entity, vo); + return vo; + } + + public void deleteByStaffSid(String staffSid) { + baseMapper.deleteByStaffSid(staffSid); + } + + /** + * 根据员工sid查询员工的岗位信息 + * + * @param sid 员工sid + * @return + */ + public SysStaffPost selectByStaffSid(String sid, String postSid) { + return baseMapper.selectByStaffSid(sid, postSid); + } + + /** + * 员工岗位详情信息 + * + * @param sid 员工sid + * @return + */ + public SysStaffPostDetailsVo selectByStaff(String sid, String postSid) { + return baseMapper.selectByStaff(sid, postSid); + } + + public SysStaffPostDetailsVo getPostByStaffSid(String sid) { + return baseMapper.getPostByStaffSid(sid); + } + + public String selecctPost(String sid) { + return baseMapper.selectPost(sid); + } + + public List getPost(String staffSid) { + return baseMapper.getPost(staffSid); + } +} \ No newline at end of file diff --git a/src/main/java/com/yxt/user/biz/sysstaffpost/SysStaffPostVo.java b/src/main/java/com/yxt/user/biz/sysstaffpost/SysStaffPostVo.java new file mode 100644 index 0000000..78f8ab5 --- /dev/null +++ b/src/main/java/com/yxt/user/biz/sysstaffpost/SysStaffPostVo.java @@ -0,0 +1,46 @@ +package com.yxt.user.biz.sysstaffpost; + + +import com.fasterxml.jackson.annotation.JsonFormat; +import com.yxt.common.core.vo.Vo; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.Date; + +/** + * Project: anrui_portal(门户建设)
+ * File: SysStaffPostVo.java
+ * Class: com.yxt.anrui.portal.api.sysstaffpost.SysStaffPostVo
+ * Description: 员工岗位关联表 视图数据对象.
+ * Copyright: Copyright (c) 2011
+ * Company: https://gitee.com/liuzp315
+ * Makedate: 2021-08-03 00:24:30
+ * + * @author liupopo + * @version 1.0 + * @since 1.0 + */ +@ApiModel(value = "员工岗位关联表 视图数据对象", description = "员工岗位关联表 视图数据对象") +@Data +public class SysStaffPostVo implements Vo { + + + @ApiModelProperty("员工sid") + private String staffSid; + + @ApiModelProperty("所属部门sid") + private String orgSid; + + @ApiModelProperty("就任岗位") + private String postSid; + + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8") + @ApiModelProperty("任岗开始日期") + private Date startDateStart; + private Date startDateEnd; + + @ApiModelProperty("是否主任岗:1是、0否") + private Integer isDepetHead; +} diff --git a/src/main/java/com/yxt/user/biz/sysuser/PrivilegeQuery.java b/src/main/java/com/yxt/user/biz/sysuser/PrivilegeQuery.java new file mode 100644 index 0000000..f15e97b --- /dev/null +++ b/src/main/java/com/yxt/user/biz/sysuser/PrivilegeQuery.java @@ -0,0 +1,22 @@ +package com.yxt.user.biz.sysuser; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * @description: 权限角色层级 + * @author: dimengzhe + * @date: 2023/5/23 + **/ +@Data +public class PrivilegeQuery { + + @ApiModelProperty("菜单路由") + private String menuUrl; + @ApiModelProperty("组织全路径sid") + private String orgPath; + @ApiModelProperty("菜单sid") + private String menuSid; + @ApiModelProperty("用户sid") + private String userSid; +} diff --git a/src/main/java/com/yxt/user/biz/sysuser/ShareUserQuery.java b/src/main/java/com/yxt/user/biz/sysuser/ShareUserQuery.java new file mode 100644 index 0000000..15876cb --- /dev/null +++ b/src/main/java/com/yxt/user/biz/sysuser/ShareUserQuery.java @@ -0,0 +1,21 @@ +package com.yxt.user.biz.sysuser; + +import com.yxt.common.core.query.Query; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.List; + +/** + * @Author dimengzhe + * @Date 2023/2/24 15:13 + * @Description + */ +@Data +public class ShareUserQuery implements Query { + private static final long serialVersionUID = 2148783813323541114L; + @ApiModelProperty("人员") + private List memberSids; + @ApiModelProperty("部门") + private List orgSids; +} diff --git a/src/main/java/com/yxt/user/biz/sysuser/SysHaveMessageQuery.java b/src/main/java/com/yxt/user/biz/sysuser/SysHaveMessageQuery.java new file mode 100644 index 0000000..befcf35 --- /dev/null +++ b/src/main/java/com/yxt/user/biz/sysuser/SysHaveMessageQuery.java @@ -0,0 +1,20 @@ +package com.yxt.user.biz.sysuser; + +import com.yxt.common.core.query.Query; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * @Author dimengzhe + * @Date 2023/1/13 9:43 + * @Description + */ +@Data +public class SysHaveMessageQuery implements Query { + private static final long serialVersionUID = -6612866428143416220L; + + @ApiModelProperty("菜单路由") + private String menuUrl; + @ApiModelProperty("组织全路径sid") + private String orgPath; +} diff --git a/src/main/java/com/yxt/user/biz/sysuser/SysMenuRoleVoList.java b/src/main/java/com/yxt/user/biz/sysuser/SysMenuRoleVoList.java new file mode 100644 index 0000000..44fb3c3 --- /dev/null +++ b/src/main/java/com/yxt/user/biz/sysuser/SysMenuRoleVoList.java @@ -0,0 +1,26 @@ +package com.yxt.user.biz.sysuser; + +import com.yxt.common.core.vo.Vo; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * @Author dimengzhe + * @Date 2023/1/12 9:37 + * @Description + */ +@Data +public class SysMenuRoleVoList implements Vo { + private static final long serialVersionUID = 5964551098152631513L; + + @ApiModelProperty("角色sid") + private String roleSid; + @ApiModelProperty("角色名称") + private String roleName; + @ApiModelProperty("角色层级") + private String roleType; + @ApiModelProperty("角色层级value") + private String roleTypeValue; + @ApiModelProperty("权限id") + private int dataRuleId; +} diff --git a/src/main/java/com/yxt/user/biz/sysuser/SysUser.java b/src/main/java/com/yxt/user/biz/sysuser/SysUser.java new file mode 100644 index 0000000..0d2772b --- /dev/null +++ b/src/main/java/com/yxt/user/biz/sysuser/SysUser.java @@ -0,0 +1,68 @@ +package com.yxt.user.biz.sysuser; + +import com.baomidou.mybatisplus.annotation.TableName; +import com.fasterxml.jackson.annotation.JsonFormat; +import com.yxt.common.core.domain.BaseEntity; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.Date; + +/** + * Project: anrui_portal(门户建设)
+ * File: SysUser.java
+ * Class: com.yxt.anrui.portal.api.sysuser.SysUser
+ * Description: 用户表.
+ * Copyright: Copyright (c) 2011
+ * Company: https://gitee.com/liuzp315
+ * Makedate: 2021-08-03 00:24:30
+ * + * @author liupopo + * @version 1.0 + * @since 1.0 + */ +@ApiModel(value = "用户表", description = "用户表") +@TableName("sys_user") +@Data +public class SysUser extends BaseEntity { + private static final long serialVersionUID = 1L; + + + @ApiModelProperty("登录名,登录名不能相同") + private String userName; + + @ApiModelProperty("密码(加密或签名后)") + private String password; + + @ApiModelProperty("密码修改时限") + private String pwdDayslimit; + + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8") + @ApiModelProperty("最后一次密码修改时间") + private Date pwdModifyTime; + + @ApiModelProperty("在线状态(0为离线、1为在线)") + private Integer onlineState; + + @ApiModelProperty("用户登录时随机生成身份验证字符串") + private String token; + + @ApiModelProperty("是否是管理员:1管理员,2一般用户,0是超级管理员,3尚无单位人员") + private String isAdmin; + + @ApiModelProperty("手机登录唯一标识,手机与用户绑定字段") + private String appId; + + @ApiModelProperty("关联的人员sid") + private String staffSid; + + @ApiModelProperty("手机号") + private String mobile; + + @ApiModelProperty("用户类型:1员工、2客户、3供应商") + private Integer userType; + + @ApiModelProperty("用户头像") + private String headImage; +} diff --git a/src/main/java/com/yxt/user/biz/sysuser/SysUserDto.java b/src/main/java/com/yxt/user/biz/sysuser/SysUserDto.java new file mode 100644 index 0000000..ff0c897 --- /dev/null +++ b/src/main/java/com/yxt/user/biz/sysuser/SysUserDto.java @@ -0,0 +1,42 @@ +package com.yxt.user.biz.sysuser; + + +import com.yxt.common.core.dto.Dto; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotBlank; + +/** + * Project: anrui_portal(门户建设)
+ * File: SysUserDto.java
+ * Class: com.yxt.anrui.portal.api.sysuser.SysUserDto
+ * Description: 用户表 数据传输对象.
+ * Copyright: Copyright (c) 2011
+ * Company: https://gitee.com/liuzp315
+ * Makedate: 2021-08-03 00:24:30
+ * + * @author liupopo + * @version 1.0 + * @since 1.0 + */ +@ApiModel(value = "用户表 数据传输对象", description = "用户表 数据传输对象") +@Data +public class SysUserDto implements Dto { + @ApiModelProperty("手机号") + private String mobile; + @ApiModelProperty("用户类型:1员工、2客户、3供应商") + private Integer userType; + @ApiModelProperty(value = "姓名", required = true) + @NotBlank(message = "姓名不能为空") + private String name; + @ApiModelProperty(value = "验证码", required = true) + @NotBlank(message = "验证码不能为空") + private String verificationCode; + @ApiModelProperty(value = "部门sid") + private String deptSid; + @ApiModelProperty(value = "岗位sid") + private String postSid; + +} \ No newline at end of file diff --git a/src/main/java/com/yxt/user/biz/sysuser/SysUserInfoVo.java b/src/main/java/com/yxt/user/biz/sysuser/SysUserInfoVo.java new file mode 100644 index 0000000..d4af762 --- /dev/null +++ b/src/main/java/com/yxt/user/biz/sysuser/SysUserInfoVo.java @@ -0,0 +1,32 @@ +package com.yxt.user.biz.sysuser; + +import com.yxt.common.core.vo.Vo; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * @Author dimengzhe + * @Date 2022/2/9 9:12 + * @Description 用户组织信息 + */ +@Data +public class SysUserInfoVo implements Vo { + + private static final long serialVersionUID = 7931121025686046432L; + @ApiModelProperty("关联的员工sid") + private String staffSid; + + @ApiModelProperty("关联的员工名称") + private String staffName; + + @ApiModelProperty("员工的组织sid(多个时为第一个)") + private String orgSid; + + @ApiModelProperty("员工的组织名称(多个时为第一个)") + private String orgName; + + @ApiModelProperty("员工的组织部门编码") + private String orgCode; + + private String mobile; +} diff --git a/src/main/java/com/yxt/user/biz/sysuser/SysUserListVo.java b/src/main/java/com/yxt/user/biz/sysuser/SysUserListVo.java new file mode 100644 index 0000000..225bf44 --- /dev/null +++ b/src/main/java/com/yxt/user/biz/sysuser/SysUserListVo.java @@ -0,0 +1,19 @@ +package com.yxt.user.biz.sysuser; + +import com.yxt.common.core.vo.Vo; +import lombok.Data; + +/** + * @Author dimengzhe + * @Date 2022/9/14 15:36 + * @Description + */ +@Data +public class SysUserListVo implements Vo { + private static final long serialVersionUID = -3047907553025391436L; + + private String name; + + private String sid; + +} diff --git a/src/main/java/com/yxt/user/biz/sysuser/SysUserMapper.java b/src/main/java/com/yxt/user/biz/sysuser/SysUserMapper.java new file mode 100644 index 0000000..a565132 --- /dev/null +++ b/src/main/java/com/yxt/user/biz/sysuser/SysUserMapper.java @@ -0,0 +1,202 @@ +package com.yxt.user.biz.sysuser; + +import com.baomidou.mybatisplus.core.conditions.Wrapper; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.core.toolkit.Constants; +import com.yxt.user.biz.sysstaffinfo.SysStaffinfoVo; +import com.yxt.user.biz.sysuser.SysUser; +import com.yxt.user.biz.sysuser.SysUserInfoVo; +import com.yxt.user.biz.sysuser.SysUserVo; +import com.yxt.user.biz.sysuser.app.AppUserOrgInfoVo; +import com.yxt.user.biz.sysuser.wx.WxHomePageVo; +import com.yxt.user.biz.sysuser.wx.WxMySysUserInfoVo; +import com.yxt.user.biz.sysuser.wx.WxSysUserVo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; +import org.apache.ibatis.annotations.Update; + +import java.util.List; +import java.util.Map; + +/** + * Project: anrui_portal(门户建设)
+ * File: SysUserMapper.java
+ * Class: com.yxt.anrui.portal.biz.sysuser.SysUserMapper
+ * Description: 用户表.
+ * Copyright: Copyright (c) 2011
+ * Company: https://gitee.com/liuzp315
+ * Makedate: 2021-08-03 00:24:30
+ * + * @author liupopo + * @version 1.0 + * @since 1.0 + */ +@Mapper +public interface SysUserMapper extends BaseMapper { + + //@Update("update sys_user set name=#{msg} where id=#{id}") + //IPage voPage(IPage page, @Param(Constants.WRAPPER) QueryWrapper qw); + + IPage selectPageVo(IPage page, @Param(Constants.WRAPPER) Wrapper ew, @Param("orgName") String orgName, @Param("userName") String userName); + + List selectListAllVo(@Param(Constants.WRAPPER) Wrapper qw); + + @Select("SELECT user.*,staff.name FROM sys_user user left join sys_staffinfo staff on user.staffSid=staff.sid where user.isDelete=0") + List selectListVo(); + + public int updatePassword(String sid, String password); + + public int updatePasswordApp(String sid, String password); + + SysUser selectByUserName(String userName); + + SysUser selectByUserNameApp(String userName); + + SysUser selectByAppId(String appId); + + @Update("UPDATE sys_user SET appId=#{appId} WHERE sid=#{sid} and userType=1") + int updateAppId(@Param("sid") String sid, @Param("appId") String appId); + + @Update("UPDATE sys_user SET token=#{token} WHERE sid=#{sid}") + int updateToken(@Param("sid") String sid, @Param("token") String token); + + SysUser fetchByUserName(String userName); + + void delBySid(String sid); + + @Update("UPDATE sys_user SET headImage=#{headImage} WHERE sid=#{sid}") + int updateHeadImage(@Param("sid") String sid, @Param("headImage") String headImage); + + /** + * @param mobile 手机号 + * @param userType 用户类型 + * @description: 根据手机号和用户类型查询客户是否存在 + * @return: + * @Author: dimengzhe + * @Date: 2021/10/6 11:35 + */ + SysUser selectByMobileAndType(@Param("mobile") String mobile, @Param("userType") int userType); + + /** + * @param userSid 用户sid + * @description: 根据用户sid查询用户头像和姓名 + * @return: + * @Author: dimengzhe + * @Date: 2021/10/6 11:36 + */ + WxMySysUserInfoVo selectMyInfo(String userSid); + + /** + * @param userName 用户名 + * @description: 根据用户名查询登录信息 + * @return: + * @Author: dimengzhe + * @Date: 2021/10/6 15:10 + */ + WxSysUserVo selectByWxUserName(@Param("userName") String userName, @Param("userType") int userType); + + // @Select("SELECT * FROM sys_user WHERE staffSid=#{staffSid} and isDelete=0") + SysUserVo selectByStaffsid(@Param("staffSid") String staffSid); + + /** + * @param userSid 用户sid + * @description: 根据用户sid查询客户端首页 + * @return: + * @Author: dimengzhe + * @Date: 2021/10/12 11:31 + */ + WxHomePageVo selectHomePage(String userSid); + + @Update("update sys_user set isDelete=1 where isDelete=0 and userType=2 and userName=#{mobile}") + int delSysUserByMobile(@Param("mobile") String mobile); + + @Select("select sid from sys_user") + List selectAllUserSid(); + + @Select("select * from sys_staffinfo where sid = #{staffSid}") + SysStaffinfoVo getSysUserByMobile(String staffSid); + + AppUserOrgInfoVo getUserOrgInfoByUserSid(@Param("userSid") String userSid); + + /** + * 根据用户sid查询用户的组织信息 + * + * @param userSid 用户的sid + * @return + */ + SysUserInfoVo selectUserInfoByUserSid(String userSid); + + SysUserInfoVo selectUserInfoByUserSidOne(@Param("userSid") String userSid, @Param("orgSid") String orgSid); + + /** + * 根据员工sid更新用户的工号以及手机号 + * + * @param jobNumber 员工工号 + * @param mobile 手机号 + * @param sid 员工sid + * @return + */ + int updateByStaffSid(@Param("jobNumber") String jobNumber, @Param("mobile") String mobile, @Param("sid") String sid); + + /** + * 根据员工sid更新用户中的员工工号 + * + * @param jobNumber 员工工号 + * @param sid 员工sid + * @return + */ + int updateByStaSid(@Param("jobNumber") String jobNumber, @Param("sid") String sid); + + /** + * 根据手机号查询用户是否存在 + * + * @param mobile 手机号 + * @return + */ + SysUser selectByMobile(String mobile); + + int updateIsEnable(@Param("sid") String sid, @Param("isEnable") String isEnable); + + List getUsersByRoleSid(@Param("roleSid") String roleSid); + + List getUserByRole(@Param("roleSid") String roleSid, @Param("levelOrgSid") String levelOrgSid); + + List getUserSidByRole(@Param("roleSid") String roleSid, @Param("levelOrgSid") String levelOrgSid); + + List> getUserByOrgSid(@Param("orgSid") String orgSid, @Param("userSid") String userSid); + + List fetchBySids(@Param("sids") List sids); + + List getUserByRoleSid(String roleSid); + + /** + * 根据手机号解绑用户绑定的设备 + * + * @param mobile + * @return + */ + int updateAppIdByMobile(String mobile); + + /** + * 解绑所有用户绑定的设备 + * + * @return + */ + int updateAppIdAll(); + + String selectIdBySid(@Param("list") List stringList); + + List getUserMessageByRole(@Param("roleSid") String roleSid, @Param("levelOrgSid") String levelOrgSid, @Param("list") List stringList); + + List getUserSidMessageByRole(@Param("roleSid") String roleSid, @Param("levelOrgSid") String levelOrgSid, @Param("list") List stringList); + + int updateAppIdNull(String appId); + + String fetchByUserNameAndUserPhone(@Param("userName") String userName, @Param("userPhone") String userPhone); + + List selectUserByStaffSid(@Param("list") List staffList); + + List selectTokenList(); +} \ No newline at end of file diff --git a/src/main/java/com/yxt/user/biz/sysuser/SysUserMapper.xml b/src/main/java/com/yxt/user/biz/sysuser/SysUserMapper.xml new file mode 100644 index 0000000..d6c90ef --- /dev/null +++ b/src/main/java/com/yxt/user/biz/sysuser/SysUserMapper.xml @@ -0,0 +1,419 @@ + + + + + + + + + + + + + + + update sys_user + set password=#{param2} + where sid = #{param1} + + + update sys_user + set password=#{param2} + where sid = #{param1} + and userType = 1 + + + delete + from sys_user + where sid = #{param1} + + + + + + + + + + + + + + + + + + + update sys_user + set userName = #{jobNumber}, + mobile = #{mobile} + where staffSid = #{sid} + + + + update sys_user + set userName = #{jobNumber} + where staffSid = #{sid} + + + + + + UPDATE sys_user + SET isEnable = #{isEnable} + WHERE sid = #{sid} + + + + + + + + + + + + + + + + update sys_user + set appId = NULL + where mobile = #{mobile} + + + + update sys_user + set appId = NULL + + + + + + + + + + update sys_user + set appId = NULL + WHERE appId = #{appId} + and isDelete = 0 + and userType = 1 + + + + + + + + \ No newline at end of file diff --git a/src/main/java/com/yxt/user/biz/sysuser/SysUserQuery.java b/src/main/java/com/yxt/user/biz/sysuser/SysUserQuery.java new file mode 100644 index 0000000..716d911 --- /dev/null +++ b/src/main/java/com/yxt/user/biz/sysuser/SysUserQuery.java @@ -0,0 +1,51 @@ +package com.yxt.user.biz.sysuser; + + +import com.yxt.common.core.query.Query; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * Project: anrui_portal(门户建设)
+ * File: SysUserQuery.java
+ * Class: com.yxt.anrui.portal.api.sysuser.SysUserQuery
+ * Description: 用户表 查询条件.
+ * Copyright: Copyright (c) 2011
+ * Company: https://gitee.com/liuzp315
+ * Makedate: 2021-08-03 00:24:30
+ * + * @author liupopo + * @version 1.0 + * @since 1.0 + */ +@ApiModel(value = "用户表 查询条件", description = "用户表 查询条件") +@Data +public class SysUserQuery implements Query { + + + @ApiModelProperty("角色sid") + private String roleSid; + @ApiModelProperty("用户名称") + private String userName; + @ApiModelProperty("姓名") + private String name; + @ApiModelProperty("部门名称") + private String orgName; + + @ApiModelProperty("密码(加密或签名后)") + private String password; + + @ApiModelProperty("用户登录时随机生成身份验证字符串") + private String token; + @ApiModelProperty("用户登录时随机生成的验证码字符串") + private String verifyCode; + private String uuid; + + @ApiModelProperty("手机登录唯一标识,手机与用户绑定字段") + private String appId; + @ApiModelProperty("手机登录类型:1、密码登录2、验证码登录") + private String type; + @ApiModelProperty(value = "是否是测试",example = "false") + private Boolean isTest; +} \ No newline at end of file diff --git a/src/main/java/com/yxt/user/biz/sysuser/SysUserService.java b/src/main/java/com/yxt/user/biz/sysuser/SysUserService.java new file mode 100644 index 0000000..717766a --- /dev/null +++ b/src/main/java/com/yxt/user/biz/sysuser/SysUserService.java @@ -0,0 +1,1531 @@ +package com.yxt.user.biz.sysuser; + +import cn.hutool.core.bean.BeanUtil; +import com.alibaba.fastjson.JSON; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.yxt.user.biz.sms.SmsFeign; +import com.yxt.user.biz.sysmenu.SysMenu; +//import com.yxt.user.biz.sysmobilemenu.SysMobileMenu; +import com.yxt.user.biz.sysorganization.SysOrganization; +import com.yxt.user.biz.sysstaffinfo.SysStaffinfo; +import com.yxt.user.biz.sysstaffinfo.SysStaffinfoVo; +import com.yxt.user.biz.sysstafforg.SysStaffOrg; +import com.yxt.user.biz.sysstafforg.SysStaffOrgVo; +import com.yxt.user.biz.sysstaffpost.SysStaffPostDetailsVo; +import com.yxt.user.biz.sysuser.*; +import com.yxt.user.biz.sysmenu.SysMenuService; + +import com.yxt.user.biz.sysorganization.SysOrganizationService; +import com.yxt.user.biz.sysrole.SysRoleService; +import com.yxt.user.biz.sysstaffinfo.SysStaffinfoService; +import com.yxt.user.biz.sysstafforg.SysStaffOrgService; +import com.yxt.user.biz.sysstaffpost.SysStaffPostService; +//import com.yxt.user.biz.sysuserdefaultorg.SysUserDefaultOrgService; +import com.yxt.user.biz.sysuser.app.OrgList; +import com.yxt.user.biz.sysuser.wx.WxMySysUserInfoVo; +import com.yxt.user.biz.sysuser.wx.WxSysUserVo; +import com.yxt.user.biz.sysuserdefaultorg.SysUserDefaultOrg; +import com.yxt.user.biz.sysuserdefaultorg.SysUserDefaultOrgService; +import com.yxt.user.biz.sysuserrole.SysUserRoleService; +import com.yxt.common.base.config.RedisUtil; +import com.yxt.common.base.config.component.FileUploadComponent; +import com.yxt.common.base.config.component.ImageUploadUtil; +import com.yxt.common.base.service.MybatisBaseService; +import com.yxt.common.base.utils.*; +import com.yxt.common.core.query.PagerQuery; +import com.yxt.common.core.result.ResultBean; +import com.yxt.common.core.vo.PagerVo; +import com.yxt.user.biz.sysorganization.SysOrganizationService; +import com.yxt.user.config.DictCommonType; +import org.apache.ibatis.annotations.Param; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.web.multipart.MultipartFile; + +import java.io.File; +import java.util.*; +import java.util.concurrent.ScheduledExecutorService; +import java.util.concurrent.TimeUnit; +import java.util.stream.Collectors; + +import static java.util.concurrent.Executors.newScheduledThreadPool; + +/** + * Project: anrui_portal(门户建设)
+ * File: SysUserService.java
+ * Class: com.yxt.user.biz.sysuser.SysUserService
+ * Description: 用户表 业务逻辑.
+ * Copyright: Copyright (c) 2011
+ * Company: https://gitee.com/liuzp315
+ * Makedate: 2021-08-03 00:24:30
+ * + * @author liupopo + * @version 1.0 + * @since 1.0 + */ +@Service +public class SysUserService extends MybatisBaseService { + + /** + * 设置redis的过期时间为4小时 + */ + public static final long USERS_REDIS_SESSION_TL_PC = 4 * 3600; + // public static final long USERS_REDIS_SESSION_TL_PC = 60; + public static final long USERS_REDIS_SESSION_TL_App = 24 * 15 * 3600; + /** + * 验证码长度 + */ + static final int LENGTH_OF_CODE = 4; + /** + * 调用发送短信接口返回值 + */ + static final String RESULT_CODE = "1"; + /** + * 手机短信登录验证码时效(秒) + */ + static final long APP_LOGIN_CODE_TIME_LIMIT = 300L; + @Autowired + private SysStaffinfoService sysStaffinfoService; + @Autowired + private SysStaffOrgService sysStaffOrgService; + @Autowired + private RedisUtil redisUtil; + + @Autowired + private SysOrganizationService sysOrganizationService; + @Autowired + private FileUploadComponent fileUploadComponent; + @Autowired + private SysStaffPostService sysStaffPostService; + + @Autowired + private ImageUploadUtil imageUploadUtil; + @Autowired + private SysRoleService sysRoleService; + + @Autowired + private SysUserDefaultOrgService sysUserDefaultOrgService; + @Autowired + private SysMenuService sysMenuService; +// @Autowired +// private SysMobileMenuService sysMobileMenuService; + @Autowired + private SysUserRoleService sysUserRoleService; + + + public PagerVo listPage(PagerQuery pq) { + SysUserQuery query = pq.getParams(); + QueryWrapper qw = createQueryWrapper(query); + IPage page = PagerUtil.queryToPage(pq); + IPage pagging = baseMapper.selectPage(page, qw); + PagerVo p = PagerUtil.pageToVo(pagging, null); + return p; + } + + public List listAll(SysUserQuery query) { + QueryWrapper qw = createQueryWrapper(query); + return baseMapper.selectList(qw); + } + + private QueryWrapper createQueryWrapper(SysUserQuery query) { + // todo: 这里根据具体业务调整查询条件 + // 多字段Like示例:qw.and(wrapper -> wrapper.like("name", query.getName()).or().like("remark", query.getName())); + QueryWrapper qw = new QueryWrapper<>(); + if (StringUtils.isNotBlank(query.getRoleSid())) { + qw.eq("role.sid", query.getRoleSid()); + } + if (StringUtils.isNotBlank(query.getName())) { + qw.like("staff.name", query.getName()); + } + qw.ne("staff.personTypeKey", "01"); + return qw; + } + + public PagerVo listPageVo(PagerQuery pq) { + SysUserQuery query = pq.getParams(); + QueryWrapper qw = createQueryWrapper(query); + IPage page = PagerUtil.queryToPage(pq); + String deptName = ""; + String userName = ""; + if (StringUtils.isNotBlank(query.getOrgName())) { + deptName = query.getOrgName().trim(); + } + if (StringUtils.isNotBlank(query.getUserName())) { + userName = query.getUserName().trim(); + } + IPage pagging = baseMapper.selectPageVo(page, qw, deptName, userName); + List records = pagging.getRecords(); + for (SysUserVo record : records) { + String departmentSid = record.getDepartmentSid(); + String orgName = ""; + if (StringUtils.isNotBlank(departmentSid)) { + String[] split = departmentSid.split(","); + for (String s : split) { + //获取本级sid获取本级部门信息 + SysOrganization sysOrganization = sysOrganizationService.fetchBySid(s); + //从本级部门信息中获取上级sid + String psid = sysOrganization.getPsid(); + //从本级部门信息中获取本级部门名称 + String bjName = sysOrganization.getName(); + //获取上级sid获取上级部门信息 + SysOrganization sysOrganization1 = sysOrganizationService.fetchBySid(psid); + //从上级部门信息中获取上级部门名称 + String sjName = sysOrganization1.getName(); + orgName += sjName + "-" + bjName + ","; + } + orgName = orgName.substring(0, orgName.length() - 1); + record.setDepartmentName(orgName); + } + } + PagerVo p = PagerUtil.pageToVo(pagging, null); + return p; + } + + public List listAllVo(SysUserQuery query) { + QueryWrapper qw = createQueryWrapper(query); + return baseMapper.selectListAllVo(qw); + } + + public List listVo() { + return baseMapper.selectListVo(); + } + + public void saveOrUpdateDto(SysUserDto dto) { + SysUser entity = new SysUser(); + dto.fillEntity(entity); + this.saveOrUpdate(entity); + } + + public SysUserVo fetchByIdVo(String id) { + SysUser entity = this.fetchById(id); + SysUserVo vo = new SysUserVo(); + BeanUtil.copyProperties(entity, vo); + return vo; + } + + public SysUserVo fetchBySidVo(String sid) { + SysUser entity = this.fetchBySid(sid); + String staffSid = entity.getStaffSid(); + SysStaffinfo sysStaffinfo = sysStaffinfoService.fetchBySid(staffSid); + SysUserVo vo = new SysUserVo(); + BeanUtil.copyProperties(entity, vo); + vo.setName(sysStaffinfo.getName()); + vo.setJobNumber(sysStaffinfo.getJobNumber()); + List orgVoList = sysStaffOrgService.getSysStaffOrgListByStaffSid(staffSid); + if (orgVoList.size() > 0) { // 手机端销售人员用到orgsid,目前按唯一算 + SysStaffOrgVo sysStaffOrgVo = orgVoList.get(0); + vo.setOrganizationSid(sysStaffOrgVo.getOrgSid()); + vo.setOrganizationName(sysStaffOrgVo.getOrgName()); + } + return vo; + } + + /** + * 初始化密码,给用户发送手机短信 + * + * @param sid 用户sid + * @return ResultBean + */ + public Boolean initPwd(String sid) { + SysUser user = this.fetchBySid(sid); + if (null == user) { + return false; + } + String mobile = user.getMobile(); + + String substring = mobile.substring(5, 11); + // 1.生成新密码 + /*String newPwd = StringRandom.getRandomString(8);*/ + // 2.加密密码,更新用户密码 + if (0 == updatePassword(user.getSid(), Encodes.md5(substring))) { + return false; + } + redisUtil.remove(user.getUserName()); + // 3.给用户发送手机短信 + MsgWs.SendWaitWorkMsg(mobile, user.getUserName() + SmsFeign.MSG_NEWPWD + substring); + return true; + } + + public int updatePassword(String sid, String password) { + return baseMapper.updatePassword(sid, password); + } + + public ResultBean updatePasswordApp(SysUser user, String oldPassword, String newPassword, String token) { + ResultBean rb = ResultBean.fireFail(); + String oldPasswordMd5 = Encodes.md5(oldPassword); + if (!oldPasswordMd5.equals(user.getPassword())) { + return rb.setMsg("原始密码输入错误"); + } + if (!newPassword.matches("^(?=.*[A-Z])(?=.*[a-z])(?=.*[0-9])[a-zA-Z0-9]{8,16}$")) { + return rb.setMsg("密码格式错误,必须为8至16位大小写字母和数字的组合"); + } + int i = baseMapper.updatePasswordApp(user.getSid(), Encodes.md5(newPassword)); + SysUserVo sysUserVo = selectUserOne(user); + if (sysUserVo == null) { + sysUserVo = new SysUserVo(); + } else { + //查询是否需要更换密码 + boolean isTrue = false; + String mobile = user.getMobile(); + if (StringUtils.isNotBlank(mobile)) { + String password = mobile.substring(5, 11); + String md5 = Encodes.md5(password); + if (user.getPassword().equals(md5)) { + isTrue = true; + } + } + sysUserVo.setNeedResetPsd(isTrue); + } + if (i == 1) { +// redisUtil.remove(token); + return rb.success().setData(sysUserVo); + } else { + return rb.setMsg("修改失败"); + } + } + + public SysUser selectByUserName(String userName) { + return baseMapper.selectByUserName(userName); + } + + public SysUser selectByUserNameApp(String userName) { + return baseMapper.selectByUserNameApp(userName); + } + + public SysUser selectByAppId(String appId) { + return baseMapper.selectByAppId(appId); + } + + public int updateAppId(String sid, String appId) { + return baseMapper.updateAppId(sid, appId); + } + + public int updateToken(String sid, String token) { + return baseMapper.updateToken(sid, token); + } + + public SysUserVo setUserRedisSessionToken(SysUser user) { + // 生成token + String uniqueToken = JWTUtil.create(user.getSid() + ""); + // redis中缓存token + redisUtil.set(uniqueToken, user.getUserName(), + USERS_REDIS_SESSION_TL_PC); + SysUserVo userInfoOneVo = selectUserOne(user); + if (userInfoOneVo == null) { + return userInfoOneVo; + } else { + userInfoOneVo.setToken(uniqueToken); + return userInfoOneVo; + } + + } + + //公共的方法 + public SysUserVo selectUserOne(SysUser user) { + // 根据用户信息查询用户的角色信息 + String isAdmin = ""; + isAdmin = user.getIsAdmin(); + SysUserVo userInfoOneVo = new SysUserVo(); + userInfoOneVo.setToken(user.getToken()); + userInfoOneVo.setId(user.getId()); + userInfoOneVo.setSid(user.getSid()); + userInfoOneVo.setUserName(user.getUserName()); + userInfoOneVo.setIsAdmin(user.getIsAdmin()); + //类型为员工的组织机构信息 + SysStaffOrg sysStaffOrg = sysStaffOrgService.selectAllByStaffSid(user.getStaffSid()).getData(); + if (sysStaffOrg == null) { + return null; + } + + userInfoOneVo.setRoleName(""); + String dwjb = ""; + // 系统管理员(没有对应的人员和单位) + //是否是管理员:1管理员,2一般用户,0是超级管理员,3尚无单位人员 + if ("0".equals(user.getIsAdmin())) { + userInfoOneVo.setName("系统管理员"); + userInfoOneVo.setMobile(""); + userInfoOneVo.setStaffSid(""); + userInfoOneVo.setOrganizationName("无单位"); + userInfoOneVo.setDepartmentName("无部门"); + } else { + // 获取人员姓名 + SysStaffinfo staffVo = sysStaffinfoService.fetchBySid(user.getStaffSid()); + if (null != staffVo) { + userInfoOneVo.setName(staffVo.getName()); + userInfoOneVo.setMobile(staffVo.getMobile()); + userInfoOneVo.setStaffSid(staffVo.getSid()); + } + // 尚无单位人员,没有单位和部门信息 + if ("3".equals(user.getIsAdmin())) { + userInfoOneVo.setOrganizationName("无单位"); + userInfoOneVo.setDepartmentName("无部门"); + } else { + userInfoOneVo.setOrganizationName("无单位"); + userInfoOneVo.setDepartmentName("无部门"); + List orgVoList = sysStaffOrgService.getSysStaffOrgListByStaff(user.getStaffSid()); + SysStaffPostDetailsVo staffPostDetailsVo = sysStaffPostService.getPostByStaffSid(user.getStaffSid()); + userInfoOneVo.setPostSid(staffPostDetailsVo.getPostSid()); + userInfoOneVo.setPostName(staffPostDetailsVo.getName()); + if (orgVoList.size() > 0) { + //类型为员工的组织机构信息 + SysStaffOrgVo sysStaffOrgVo = orgVoList.get(0); + userInfoOneVo.setDepartmentName(sysStaffOrgVo.getOrgName()); + userInfoOneVo.setDepartmentSid(sysStaffOrgVo.getOrgSid()); + SysOrganization sysOrganizationOne = sysOrganizationService.fetchBySid(sysStaffOrgVo.getOrgSid()); + if (sysOrganizationOne != null) { + String psid = sysOrganizationOne.getPsid(); + String name = sysOrganizationService.fetchBySid(psid).getName(); + userInfoOneVo.setPNameAndDepartmentNameAndPostName(name + "-" + sysStaffOrgVo.getOrgName()); + } + userInfoOneVo.setOrganizationSid(sysStaffOrgVo.getOrgSid()); + userInfoOneVo.setOrganizationName(sysStaffOrgVo.getOrgName()); + userInfoOneVo.setOrgNamePath(sysStaffOrg.getOrgNamePath()); + userInfoOneVo.setOrgSidPath(sysStaffOrg.getOrgSidPath()); + //根据orgSidPath查询分公司sid===== + //根据用户sid查询用户是否设置了默认的组织机构 + SysUserDefaultOrg sysUserDefaultOrg = sysUserDefaultOrgService.selectByUserSid(user.getSid()); + if (sysUserDefaultOrg == null) { + String orgNamePath = ""; + String defaultDeptName = ""; + String defaultDeptSid = ""; + userInfoOneVo.setDefaultOrgPath(sysStaffOrg.getOrgSidPath()); + if (StringUtils.isNotBlank(sysStaffOrg.getOrgSidPath())) { + List split = Arrays.asList(sysStaffOrg.getOrgSidPath().split("/")); + if (split.size() > 1) { + //获取本级sid获取本级部门信息 + SysOrganization sysOrganization = sysOrganizationService.fetchBySid(split.get(split.size() - 2)); + SysOrganization sysOrganization1 = sysOrganizationService.fetchBySid(split.get(split.size() - 1)); + orgNamePath = sysOrganization.getName() + "/" + sysOrganization1.getName(); + defaultDeptName = sysOrganization1.getName(); + defaultDeptSid = sysOrganization1.getSid(); + } else { + SysOrganization sysOrganization = sysOrganizationService.fetchBySid(split.get(0)); + orgNamePath = sysOrganization.getName(); + defaultDeptName = sysOrganization.getName(); + defaultDeptSid = sysOrganization.getSid(); + } + } +// userInfoOneVo.setDefaultOrgPathName(sysStaffOrg.getOrgNamePath()); + userInfoOneVo.setDefaultOrgPathName(orgNamePath); + userInfoOneVo.setDefaultDeptName(defaultDeptName); + userInfoOneVo.setDefaultDeptSid(defaultDeptSid); + } else { + String orgNamePath = ""; + List sysStaffOrgVos = sysStaffOrgService.selectByStaffS(user.getStaffSid()); + sysStaffOrgVos.removeAll(Collections.singleton(null)); + List orgSidPathList = sysStaffOrgVos.stream().map(v -> v.getOrgSidPath()).collect(Collectors.toList()); + if (!orgSidPathList.contains(sysUserDefaultOrg.getOrgSidPath())) { + sysUserDefaultOrgService.deleteByUserSid(user.getSid()); + } + userInfoOneVo.setDefaultOrgPath(sysUserDefaultOrg.getOrgSidPath()); + String defaultDeptName = ""; + String defaultDeptSid = ""; + if (StringUtils.isNotBlank(sysUserDefaultOrg.getOrgSidPath())) { + List split = Arrays.asList(sysUserDefaultOrg.getOrgSidPath().split("/")); + if (split.size() > 1) { + //获取本级sid获取本级部门信息 + SysOrganization sysOrganization = sysOrganizationService.fetchBySid(split.get(split.size() - 2)); + SysOrganization sysOrganization1 = sysOrganizationService.fetchBySid(split.get(split.size() - 1)); + orgNamePath = sysOrganization.getName() + "/" + sysOrganization1.getName(); + defaultDeptName = sysOrganization1.getName(); + defaultDeptSid = sysOrganization1.getSid(); + } else { + SysOrganization sysOrganization = sysOrganizationService.fetchBySid(split.get(0)); + orgNamePath = sysOrganization.getName(); + defaultDeptName = sysOrganization.getName(); + defaultDeptSid = sysOrganization.getSid(); + } + } + userInfoOneVo.setDefaultOrgPathName(orgNamePath); + userInfoOneVo.setDefaultDeptName(defaultDeptName); + userInfoOneVo.setDefaultDeptSid(defaultDeptSid); + } + } + } + } + // 设置用户的角色sids + List roleSids = this.getUserRoleSids(user.getSid()); + userInfoOneVo.setRoleSids(roleSids); + String roleName = sysRoleService.selectByUserSid(user.getSid()); + userInfoOneVo.setRoleName(roleName); + List sysStaffOrgVos = sysStaffOrgService.selectByStaffS(user.getStaffSid()); + List orgList = new ArrayList<>(); + if (sysStaffOrgVos.size() > 0) { + for (SysStaffOrgVo vv : sysStaffOrgVos) { + OrgList orgList1 = new OrgList(); + orgList1.setOrgPath(vv.getOrgSidPath()); + orgList1.setOrgName(vv.getOrgNamePath()); + String orgName = ""; + String deptName = ""; + String deptSid = ""; + if (StringUtils.isNotBlank(vv.getOrgSidPath())) { + List split = Arrays.asList(vv.getOrgSidPath().split("/")); + if (split.size() > 1) { + //获取本级sid获取本级部门信息 + SysOrganization sysOrganization = sysOrganizationService.fetchBySid(split.get(split.size() - 2)); + SysOrganization sysOrganization1 = sysOrganizationService.fetchBySid(split.get(split.size() - 1)); + orgName = sysOrganization.getName() + "/" + sysOrganization1.getName(); + deptName = sysOrganization1.getName(); + deptSid = sysOrganization1.getSid(); + } else { + SysOrganization sysOrganization = sysOrganizationService.fetchBySid(split.get(0)); + orgName = sysOrganization.getName(); + deptName = sysOrganization.getName(); + deptSid = sysOrganization.getSid(); + } + /*String[] split = vv.getOrgSidPath().split("/"); + for (int i = 0; i < split.length; i++) { + //获取本级sid获取本级部门信息 + SysOrganization sysOrganization = sysOrganizationService.fetchBySid(split[i]); + //从本级部门信息中获取本级部门名称 + if (sysOrganization != null) { + String bjName = sysOrganization.getName(); + if(i == 0){ + orgName = bjName; + }else{ + orgName = orgName+"/"+bjName; + } + } + }*/ + orgList1.setOrgName(orgName); + orgList1.setDeptName(deptName); + orgList1.setDeptSid(deptSid); + } + orgList.add(orgList1); + } + } + userInfoOneVo.setOrgList(orgList); + if ("1".equals(isAdmin)) { + userInfoOneVo.setPostName(roleName); + } + return userInfoOneVo; + } + + /** + * 手机端登录后设置token + * + * @param user + * @return + */ + public SysUserVo selectUser(SysUser user) { + String oldToken = user.getToken(); + if (StringUtils.isNotBlank(oldToken)) { + redisUtil.remove(oldToken); + } + String uniqueToken = JWTUtil.create(user.getSid() + ""); + String newToken = "App" + uniqueToken; + redisUtil.set(newToken, user.getUserName(), USERS_REDIS_SESSION_TL_App); + SysUserVo sysUserVo = selectUserOne(user); + if (sysUserVo == null) { + return null; + } else { + sysUserVo.setToken(newToken); + // 更新用户中的token + updateToken(user.getSid(), newToken); + //查询是否需要更换密码 + boolean isTrue = false; + String mobile = user.getMobile(); + if (StringUtils.isNotBlank(mobile)) { + String password = mobile.substring(5, 11); + String md5 = Encodes.md5(password); + if (user.getPassword().equals(md5)) { + isTrue = true; + } + } + sysUserVo.setNeedResetPsd(isTrue); + return sysUserVo; + } + + } + + /** + * 获取用户的角色s + * + * @return + */ + public List getUserRoleSids(String userSid) { + return sysRoleService.selectByUser(userSid); + } + + public SysUser fetchByUserName(String mobile) { + SysUser sysUsers = baseMapper.fetchByUserName(mobile); + return sysUsers; + } + + public void delBySid(String sid) { + baseMapper.delBySid(sid); + } + + /** + * 发送短信验证码 + * + * @param mobile 手机号 + * @param verificationCode 验证码 + * @return ResultBean + */ + public ResultBean getVerificationCode(String mobile, String verificationCode) { + for (int i = 0; i < LENGTH_OF_CODE; i++) { + // 定义随机类 + Random random = new Random(); + // 返回[0,10)集合中的整数,注意不包括10 + int result = random.nextInt(10); + // +1后,[0,10)集合变为[1,11)集合,满足要求 + int num = result; + verificationCode = verificationCode + num; + } + String verificationCode1 = "个人注册验证码:" + verificationCode + ",有效期5分钟,如非本人操作,请忽略。"; + try { + //============ + //当前时间秒数 + Long timemili = System.currentTimeMillis() / 1000; + System.out.println("当前的秒数" + timemili); + /*在这里写一个定时的for循环,用来取redis的手机号码信息,然后查询手机号码开始的时间,若是大于等于五分钟就给删除这个键值*/ + //创建多线程定时任务,延迟1s启动,每隔1s执行一次,是前一个任务开始时就开始计算时间间隔,但是会等上一个任务结束在开始下一个 + ScheduledExecutorService scheduledExecutorService = newScheduledThreadPool(10); + scheduledExecutorService.scheduleAtFixedRate(new Runnable() { + @Override + public void run() { + //判断这个键的值是不是超过五分钟,是的话就删除掉这个键 + if (System.currentTimeMillis() / 1000 - Long.parseLong(redisUtil.get(mobile).substring(4)) > 300) { + redisUtil.remove(mobile); + } + } + }, 1, 2, TimeUnit.SECONDS); + + //设置键值的时候先查询是否存在这个键值对,存在的话查看时长,不存在的话直接发送短信 + boolean str = redisUtil.exists(mobile); + if (!str) { + redisUtil.set(mobile, (verificationCode + timemili)); + String result = MsgWs.SendWaitWorkMsg(mobile, verificationCode1); + if (!RESULT_CODE.equals(result)) { + return ResultBean.fireFail().setMsg("发送短信验证码失败"); + } + } else { + String strT = redisUtil.get(mobile); + //查看请求间隔,默认是一分钟,小于一分钟继续等待,超过一分钟发送短信 + if (timemili - Long.parseLong(strT.substring(4)) < 60) { + return ResultBean.fireFail().setMsg("请等待一分钟后再次重试!"); + } else { + //发送短信 + redisUtil.set(mobile, (verificationCode + timemili)); + String result = MsgWs.SendWaitWorkMsg(mobile, verificationCode1); + if (!RESULT_CODE.equals(result)) { + return ResultBean.fireFail().setMsg("发送短信验证码失败"); + } + + } + } + } catch (Exception e) { + return ResultBean.fireFail().setMsg("发送短信验证码失败"); + } + //============= + return ResultBean.fireSuccess().setMsg("发送短信验证码成功"); + } + + /** + * 验证手机号和验证码是否正确及匹配 + * + * @param mobile 手机号 + * @param verificationCode 验证码 + * @return map + */ + public Map mobileValidateRegister(String mobile, String verificationCode) { + String code = redisUtil.get(mobile).substring(0, 4); + // 判断验证码是否失效 + if (StringUtils.isEmpty(code)) { + return Tools.setRetCode(Tools.CODE_FAIL, "验证码失效"); + } else if (!"".equals(code) && !verificationCode.equals(code)) { + return Tools.setRetCode(Tools.CODE_FAIL, "验证码错误"); + } + return Tools.setRetCode(Tools.CODE_SUCCESS, ""); + } + + /** + * 发送手机端登录验证码 + * + * @param mobile + * @param type 1、登录2、修改密码3、找回密码 + * @return + */ + public ResultBean sendVerificationCodeForApp(String mobile, String type) { + Date date = new Date(); + String redisKey = ""; + if (type.equals("1")) { + redisKey = "loginCode"; + } else if (type.equals("2")) { + redisKey = "updatePwdCode"; + } else if (type.equals("3")) { + redisKey = "resetPwdCode"; + } + String codeRedis = redisUtil.get(redisKey + mobile); + if (StringUtils.isNotEmpty(codeRedis)) { + //查看请求间隔,默认是一分钟,小于一分钟继续等待,超过一分钟发送短信 + String sendTime = codeRedis.substring(4); + long diffSecond = (date.getTime() - Long.parseLong(sendTime)) / 1000; + if (diffSecond < 60) { + return ResultBean.fireFail().setMsg("请等待一分钟后再次重试!"); + } + } + String verificationCode = ""; + for (int i = 0; i < LENGTH_OF_CODE; i++) { + // 定义随机类 + Random random = new Random(); + // 返回[0,10)集合中的整数,注意不包括10 + int result = random.nextInt(10); + // +1后,[0,10)集合变为[1,11)集合,满足要求 + verificationCode = verificationCode + result; + } + String content = ""; + if (type.equals("1")) { + content = "登录验证码:" + verificationCode + ",用于登录App,有效期5分钟,如非本人操作,请忽略。"; + } else { + content = "修改密码验证码:" + verificationCode + ",用于修改登录密码,有效期5分钟,如非本人操作,请忽略。"; + } + String res = MsgWs.SendWaitWorkMsg(mobile, content); +// String res = "1"; + if (res.equals("1")) { + redisUtil.set(redisKey + mobile, verificationCode + date.getTime(), APP_LOGIN_CODE_TIME_LIMIT); + } + return ResultBean.fireSuccess().setMsg("发送短信验证码成功"); + } + + /** + * 手机端修改密码 + * + * @param mobile + * @param newPwd + * @return + */ + public ResultBean resetPwdApp(String mobile, String newPwd, String token) { + if (!newPwd.matches("^(?=.*[A-Z])(?=.*[a-z])(?=.*[0-9])[a-zA-Z0-9]{8,16}$")) { + return ResultBean.fireFail().setMsg("密码格式错误,必须为8至16位大小写字母和数字的组合"); + } + SysUser user = baseMapper.selectByUserName(mobile); + if (user == null) { + user = baseMapper.selectByMobile(mobile); + if (user == null) { + return ResultBean.fireFail().setMsg("该手机号暂时还未注册,请先注册"); + } + + } + String newPwdMd5 = Encodes.md5(newPwd); + if (newPwdMd5.equals(user.getPassword())) { + return ResultBean.fireFail().setMsg("新密码不能与旧密码相同"); + } + int i = baseMapper.updatePassword(user.getSid(), newPwdMd5); + if (i == 1) { + if (StringUtils.isNotNull(token)) { + redisUtil.remove(token); + } + return ResultBean.fireSuccess().setMsg("修改成功"); + } else { + return ResultBean.fireFail().setMsg("修改失败"); + } + } + + public ResultBean updateHeadImage(MultipartFile file, SysUser user) { + Map resMap = imageUploadUtil.upload(file); + String oldHeadImage = user.getHeadImage(); + if ((boolean) resMap.get("isSuccess") == true) { + String url = resMap.get("url").toString(); + url = url.replace(fileUploadComponent.getUrlPrefix(), ""); + user.setHeadImage(url); + int i = baseMapper.updateHeadImage(user.getSid(), url); + if (i == 1) { + Map map = new HashMap<>(); + map.put("imageWidth", resMap.get("width").toString()); + map.put("imageHeight", resMap.get("height").toString()); + map.put("imageUrl", resMap.get("url").toString()); + // 删除原文件 +// oldHeadImage = fileUploadComponent.getUrlPrefix() + url; + String pathLoc = oldHeadImage.replace(fileUploadComponent.getUrlPrefix(), fileUploadComponent.getUploadPath()); + pathLoc = pathLoc.substring(0, pathLoc.lastIndexOf("/") + 1).replace("/", File.separator); + fileUploadComponent.deleteFiles(oldHeadImage, pathLoc); + return new ResultBean().success().setMsg("上传成功").setData(map); + } else { + return new ResultBean().fail().setMsg("上传失败"); + } + } + return new ResultBean().fail().setMsg("上传失败"); + } + + /** + * @param mobile 手机号 + * @param userType 用户类型 + * @description: 根据用户类型和手机号查询用户是否存在 + * @return: + * @Author: dimengzhe + * @Date: 2021/10/6 11:36 + */ + public SysUser selectByMobileAndType(String mobile, int userType) { + return baseMapper.selectByMobileAndType(mobile, userType); + } + + /** + * @param userSid 用户sid + * @description: 根据用户sid查询用户头像和姓名 + * @return: + * @Author: dimengzhe + * @Date: 2021/10/6 11:37 + */ + public WxMySysUserInfoVo selectMyInfo(String userSid) { + return baseMapper.selectMyInfo(userSid); + } + + /** + * @param mobile 手机号 + * @param verificationCode 验证码 + * @param type 类型:1、注册,2、登录 3、忘记密码 + * @description:客户端注册用户获取验证码 + * @return: + * @Author: dimengzhe + * @Date: 2021/10/6 11:01 + */ + public ResultBean getWxVerificationCode(String mobile, String verificationCode, String type) { + String key = ""; + if ("1".equals(type)) {//注册 + key = DictCommonType.WX_REGIST + mobile; + } else if ("2".equals(type)) {//登录 + key = DictCommonType.WX_LOGIN + mobile; + } else if ("3".equals(type)) {//忘记密码 + key = DictCommonType.WX_FORGET + mobile; + } else if ("4".equals(type)) { + key = DictCommonType.WX_UPDATE + mobile; + } else { + if ("5".equals(type)) { + key = DictCommonType.WX_NEW + mobile; + } + } + for (int i = 0; i < LENGTH_OF_CODE; i++) { + Random random = new Random();// 定义随机类 + int result = random.nextInt(10);// 返回[0,10)集合中的整数,注意不包括10 + int num = result; // +1后,[0,10)集合变为[1,11)集合,满足要求 + verificationCode = verificationCode + num; + } + String verificationCode1 = ""; + if ("1".equals(type)) {//注册 + verificationCode1 = "个人注册验证码:" + verificationCode + ",有效期5分钟,如非本人操作,请忽略。"; + } else if ("2".equals(type)) {//登录 + verificationCode1 = "登录验证码:" + verificationCode + ",有效期5分钟,如非本人操作,请忽略。"; + } else if ("3".equals(type)) {//忘记密码 + verificationCode1 = "修改密码验证码:" + verificationCode + ",有效期5分钟,如非本人操作,请忽略。"; + } else if ("4".equals(type) || "5".equals(type)) { + verificationCode1 = "验证码:" + verificationCode + ",有效期5分钟,如非本人操作,请忽略。"; + } + try { + //当前时间秒数 + Long timemili = System.currentTimeMillis() / 1000; + System.out.println("当前的秒数" + timemili); + /*在这里写一个定时的for循环,用来取redis的手机号码信息,然后查询手机号码开始的时间,若是大于等于五分钟就给删除这个键值*/ + //创建多线程定时任务,延迟1s启动,每隔1s执行一次,是前一个任务开始时就开始计算时间间隔,但是会等上一个任务结束在开始下一个 + ScheduledExecutorService scheduledExecutorService = newScheduledThreadPool(10); + String finalKey = key; + scheduledExecutorService.scheduleAtFixedRate(new Runnable() { + @Override + public void run() { + //判断这个键的值是不是超过五分钟,是的话就删除掉这个键 + if (System.currentTimeMillis() / 1000 - Long.parseLong(redisUtil.get(finalKey).substring(4)) > 300) { + redisUtil.remove(finalKey); + } + } + }, 1, 2, TimeUnit.SECONDS); + boolean str = redisUtil.exists(key); //设置键值的时候先查询是否存在这个键值对,存在的话查看时长,不存在的话直接发送短信 + if (!str) { + redisUtil.set(key, (verificationCode + timemili)); + String result = com.yxt.user.utils.MsgWs.SendWaitWorkMsg(mobile, verificationCode1); + if (!RESULT_CODE.equals(result)) { + return ResultBean.fireFail().setMsg("发送短信验证码失败"); + } + } else { + String strT = redisUtil.get(key); + //查看请求间隔,默认是一分钟,小于一分钟继续等待,超过一分钟发送短信 + if (timemili - Long.parseLong(strT.substring(4)) < 60) { + return ResultBean.fireFail().setMsg("请等待一分钟后再次重试!"); + } else { + //发送短信 + redisUtil.set(key, (verificationCode + timemili)); + String result = com.yxt.user.utils.MsgWs.SendWaitWorkMsg(mobile, verificationCode1); + if (!RESULT_CODE.equals(result)) { + return ResultBean.fireFail().setMsg("发送短信验证码失败"); + } + } + } + } catch (Exception e) { + return ResultBean.fireFail().setMsg("发送短信验证码失败"); + } + return ResultBean.fireSuccess().setMsg("发送短信验证码成功"); + } + + /** + * @param mobile 手机号 + * @param verificationCode 验证码 + * @description: 客户端注册验证验证码是否正确 + * @return: + * @Author: dimengzhe + * @Date: 2021/10/6 11:02 + */ + public Map mobileValidateWxRegister(String mobile, String verificationCode) { + String key = DictCommonType.WX_REGIST + mobile; + String code = redisUtil.get(key); + if (StringUtils.isNotBlank(code)) { + code = code.substring(0, 4); + } + // 判断验证码是否失效 + if (StringUtils.isEmpty(code)) { + return Tools.setRetCode(Tools.CODE_FAIL, "验证码失效"); + } else if (!"".equals(code) && !verificationCode.equals(code)) { + return Tools.setRetCode(Tools.CODE_FAIL, "验证码错误"); + } + return Tools.setRetCode(Tools.CODE_SUCCESS, ""); + } + + /** + * @param + * @description: 根据用户名获取登录信息 + * @return: + * @Author: dimengzhe + * @Date: 2021/10/6 15:09 + */ +// public WxSysUserVo selectByWxUserName(String userName, int userType) { +// WxSysUserVo wxSysUserVo = baseMapper.selectByWxUserName(userName, userType); +// //根据客户sid查询姓名 +// String staffSid = wxSysUserVo.getStaffSid(); +// ResultBean resultBean = crmCustomerFeign.selectBySid(staffSid); +// if (resultBean.getSuccess()) { +// wxSysUserVo.setName(resultBean.getData().getName()); +// } +// // 生成token +// String uniqueToken = JWTUtil.create(wxSysUserVo.getUserSid() + ""); +// String token = "WX" + uniqueToken; +// //查询是否有旧token,存在的话清除掉redis中的该token +// if (StringUtils.isNotBlank(wxSysUserVo.getToken())) { +// //查询是否过期 +// String values = redisUtil.get(wxSysUserVo.getToken()); +// if (StringUtils.isNotBlank(values)) { +// redisUtil.remove(wxSysUserVo.getToken()); +// } +// } +// // redis中缓存token +// redisUtil.set(token, wxSysUserVo.getUserName(), +// USERS_REDIS_SESSION_TL_PC); +// wxSysUserVo.setToken(token); +// wxSysUserVo.setNum("1"); +// // 更新用户中的token +// updateToken(wxSysUserVo.getUserSid(), token); +// return wxSysUserVo; +// } + + public ResultBean resetPwdWx(String mobile, String newPwd) { + if (!newPwd.matches("^(?=.*[A-Z])(?=.*[a-z])(?=.*[0-9])[a-zA-Z0-9]{8,16}$")) { + return ResultBean.fireFail().setMsg("密码格式错误,必须为8至16位大小写字母和数字的组合"); + } + SysUser user = baseMapper.selectByMobileAndType(mobile, 2); + if (null == user) { + return ResultBean.fireFail().setMsg("该手机号暂时还未注册,请先注册"); + } + String newPwdMd5 = Encodes.md5(newPwd); + if (newPwdMd5.equals(user.getPassword())) { + return ResultBean.fireFail().setMsg("新密码不能与旧密码相同"); + } + int i = baseMapper.updatePassword(user.getSid(), newPwdMd5); + if (i == 1) { + return ResultBean.fireSuccess().setMsg("修改成功"); + } else { + return ResultBean.fireFail().setMsg("修改失败"); + } + } + + public SysUserVo selectByStaffsid(@Param("staffSid") String staffSid) { + return baseMapper.selectByStaffsid(staffSid); + } + + /** + * @param userSid 用户sid + * @description: 根据用户sid查询首页信息 + * @return: + * @Author: dimengzhe + * @Date: 2021/10/12 11:29 + */ +// public WxHomePageVo selectHomePage(String userSid) { +// return baseMapper.selectHomePage(userSid); +// } + + public int delSysUserByMobile(String mobile) { + return baseMapper.delSysUserByMobile(mobile); + } + + /** + * 查询所有用户的sid + * + * @return + */ + public List selectAllUserSid() { + return baseMapper.selectAllUserSid(); + } + + public SysStaffinfoVo getSysUserByMobile(String staffSid) { + return baseMapper.getSysUserByMobile(staffSid); + } + + /** + * 根据用户sid获取orgSid(多个时取第一个) + * + * @param userSid + * @return + */ +// public AppUserOrgInfoVo getUserOrgInfoByUserSid(String userSid) { +// return baseMapper.getUserOrgInfoByUserSid(userSid); +// } + + /** + * 根据用户sid获取用户的组织信息 + * + * @param userSid 用户的sid + * @return + */ + public SysUserInfoVo selectUserInfoByUserSid(String userSid) { + return baseMapper.selectUserInfoByUserSid(userSid); + } + + /** + * 根据用户sid获取用户的组织信息 + * + * @param userSid 用户的sid + * @return + */ + public SysUserInfoVo selectUserInfoByUserSid(String userSid, String orgSid) { + return baseMapper.selectUserInfoByUserSidOne(userSid, orgSid); + } + + /** + * 根据员工sid更新用户信息 + * + * @param jobNumber 员工编号 + * @param mobile 手机号 + * @param sid 员工sid + * @return + */ + public int updateByStaffSid(String jobNumber, String mobile, String sid) { + return baseMapper.updateByStaffSid(jobNumber, mobile, sid); + } + + /** + * 根据员工sid更新用户的员工编号 + * + * @param jobNumber 员工编号 + * @param sid 用户sid + * @return + */ + public int updateByStaSid(String jobNumber, String sid) { + return baseMapper.updateByStaSid(jobNumber, sid); + } + + /** + * 根据手机号查询用户是否存在 + * + * @param mobile + * @return + */ + public SysUser selectByMobile(String mobile) { + return baseMapper.selectByMobile(mobile); + } + + public ResultBean reGetPwd(String userName, String userPhone) { + ResultBean rb = ResultBean.fireFail(); + String userSid = baseMapper.fetchByUserNameAndUserPhone(userName, userPhone); + if (StringUtils.isNotBlank(userSid)) { + Boolean aBoolean = initPwd(userSid); + if (!aBoolean) { + return ResultBean.fireFail().setMsg("初始化密码失败"); + } + return ResultBean.fireSuccess().setMsg("初始化密码成功"); + } + return rb.setMsg("姓名或手机号填写不正确"); + } + + public int updateIsEnable(String sid, String isEnable) { + return baseMapper.updateIsEnable(sid, isEnable); + } + + public ResultBean getUsersByRoleSid(String roleSid) { + List users = baseMapper.getUsersByRoleSid(roleSid); + List l = new ArrayList<>(); + for (SysUserVo s : users) { + l.add(s.getDepartmentName() == null ? "" : s.getDepartmentName()); + } + HashSet set = new HashSet(l); + //把List集合所有元素清空 + l.clear(); + //把HashSet对象添加至List集合 + l.addAll(set); + List> r = new ArrayList<>(); + for (String s : l) { + if (StringUtils.isNotBlank(s)) { + Map m = new HashMap<>(); + List us = new ArrayList<>(); + for (SysUserVo su : users) { + if (s != null && s.equals(su.getDepartmentName())) { + us.add(su); + } + } + m.put("dept", s); + m.put("users", us); + r.add(m); + } + } + ResultBean objectResultBean = ResultBean.fireSuccess().setData(r); + return objectResultBean; + } + + public ResultBean> getUserByRole(UserQuery query) { + ResultBean> rb = ResultBean.fireFail(); + List sysUserVoList = new ArrayList<>(); + if (StringUtils.isBlank(query.getRoleSid())) { + return rb.setMsg("角色sid不能为空"); + } + if (StringUtils.isBlank(query.getOrgSidPath())) { + return rb.setMsg("机构全路径不能为空"); + } + //根据角色sid获取角色的层级 + String levelTypeKey = sysRoleService.getLevelType(query.getRoleSid()); + if (StringUtils.isNotBlank(levelTypeKey)) { + if (query.getOrgSidPath().split("/").length >= Integer.parseInt(levelTypeKey) - 1) { + String levelOrgSid = query.getOrgSidPath().split("/")[Integer.parseInt(levelTypeKey) - 1]; + sysUserVoList = baseMapper.getUserByRole(query.getRoleSid(), levelOrgSid); + if (sysUserVoList.size() > 1) { + List stringList = sysUserVoList.stream().map(v -> v.getSid()).collect(Collectors.toList()); + List sysUserVoList1 = baseMapper.getUserMessageByRole(query.getRoleSid(), levelOrgSid, stringList); + sysUserVoList1.removeAll(Collections.singleton(null)); + if (sysUserVoList1.size() > 0) { + sysUserVoList = sysUserVoList1; + } + } + } + sysUserVoList.removeAll(Collections.singleton(null)); + sysUserVoList.forEach(t -> { + t.setOrgSidPath(query.getOrgSidPath()); + }); + } else { + return rb.setMsg("该角色层级未设置"); + } + + return rb.success().setData(sysUserVoList); + + + } + + public ResultBean> getUsersByRoles(UserssQuery usersQuery) { + ResultBean> rb = ResultBean.fireFail(); + List sysUserVoList = new ArrayList<>(); + List candidateGroups = usersQuery.getCandidateGroups(); + candidateGroups.removeAll(Collections.singleton(null)); + String orgSidPath = usersQuery.getOrgSidPath(); + if (!candidateGroups.isEmpty()) { + for (String roleSid : candidateGroups) { + //根据角色sid获取角色的层级 + String levelTypeKey = sysRoleService.getLevelType(roleSid); + if (StringUtils.isNotBlank(levelTypeKey)) { + if (orgSidPath.split("/").length >= Integer.parseInt(levelTypeKey) - 1) { + String levelOrgSid = orgSidPath.split("/")[Integer.parseInt(levelTypeKey) - 1]; + sysUserVoList = baseMapper.getUserByRole(roleSid, levelOrgSid); + if (sysUserVoList.size() > 1) { + List stringList = sysUserVoList.stream().map(v -> v.getSid()).collect(Collectors.toList()); + List sysUserVoList1 = baseMapper.getUserMessageByRole(roleSid, levelOrgSid, stringList); + sysUserVoList1.removeAll(Collections.singleton(null)); + if (sysUserVoList1.size() > 0) { + sysUserVoList = sysUserVoList1; + } + } + } + sysUserVoList.removeAll(Collections.singleton(null)); + sysUserVoList.forEach(t -> { + t.setOrgSidPath(orgSidPath); + }); + } else { + return rb.setMsg("该角色层级未设置").setData(sysUserVoList); + } + } + } + return rb.success().setData(sysUserVoList); + + + } + + public ResultBean>> getUserByOrgSid(String orgSid, String userSid) { + ResultBean rb = ResultBean.fireFail(); + List> user = baseMapper.getUserByOrgSid(orgSid, userSid); + for (Map map : user) { + StringBuilder namePath = new StringBuilder(); + String name = map.get("name"); + String orgName = map.get("orgName"); + String postName = map.get("postName"); + namePath.append(name).append("(").append(orgName).append(" ").append(postName).append(")"); + map.put("namePath", namePath.toString()); + } + /*List> user = new ArrayList<>(); + for (Map map : userByOrgSid) { + String s = map.get("sid"); + ResultBean pathSidByUserSid = sysStaffOrgService.getPathSidByUserSid(s); + String data = pathSidByUserSid.getData(); + if (data.equals(orgSid)){ + user.add(map); + } + }*/ + return rb.success().setData(user); + } + + public List fetchBySidSVo(String sids) { + List list = Arrays.asList(sids.split(",")); + List entity = baseMapper.fetchBySids(list); + return entity; + } + + public ResultBean updateAppIdByMobile(String mobile) { + ResultBean rb = ResultBean.fireFail(); + if (StringUtils.isNotBlank(mobile)) { + baseMapper.updateAppIdByMobile(mobile); + } else { + baseMapper.updateAppIdAll(); + } + return rb.success().setMsg("解绑成功"); + } + + public ResultBean selectIdBySid(List stringList) { + ResultBean rb = ResultBean.fireFail(); + String ids = baseMapper.selectIdBySid(stringList); + return rb.success().setData(ids); + } + + public ResultBean> getUserByOrgRole(UserRoleQuery query) { + ResultBean> rb = ResultBean.fireFail(); + List sysUserVoList = new ArrayList<>(); + //根据当前用户角色查询该角色的上一级角色 + String userRoleSid = query.getRoleSid(); + if (StringUtils.isBlank(userRoleSid)) { + return rb.setMsg("角色不能为空"); + } + if (StringUtils.isBlank(query.getOrgSid())) { + return rb.setMsg("部门sid不能为空"); + } + String upRoleSid = sysRoleService.selectRoleSid(userRoleSid); + sysUserVoList = baseMapper.getUserByRole(upRoleSid, query.getOrgSid()); + return rb.success().setData(sysUserVoList); + } + + public ResultBean> getOtherOrgRoleUser(UserRoleQuery query) { + ResultBean> rb = ResultBean.fireFail(); + List sysUserVoList = new ArrayList<>(); + String roleSid = query.getRoleSid(); + if (StringUtils.isBlank(roleSid)) { + return rb.setMsg("角色不能为空"); + } + if (StringUtils.isNotBlank(query.getOrgSid())) { + sysUserVoList = baseMapper.getUserByRole(roleSid, query.getOrgSid()); + } else { + sysUserVoList = baseMapper.getUserByRoleSid(query.getRoleSid()); + } + return rb.success().setData(sysUserVoList); + } + + public ResultBean> selectSysUserList(String userSid, String orgPath) { + ResultBean> rb = ResultBean.fireFail(); + //销售经理角色sid + String roleSid = "f07e98d3-d179-48ee-a5ff-5928addead3f"; + UserQuery userRoleQuery = new UserQuery(); + if (StringUtils.isNotBlank(orgPath)) { + userRoleQuery.setOrgSidPath(orgPath); + } else { + //根据用户sid查询用户的部门全路径 + SysUserVo vo = fetchBySidVo(userSid); + //根据staffSid获取用户的组织全路径 + SysStaffOrg sysStaffOrg = sysStaffOrgService.getOrgByStaffSid(vo.getStaffSid()); + userRoleQuery.setOrgSidPath(sysStaffOrg.getOrgSidPath()); + } + userRoleQuery.setRoleSid(roleSid); + ResultBean> resultBean = getUserByRole(userRoleQuery); + List sysUserVoList = resultBean.getData(); + sysUserVoList.removeAll(Collections.singleton(null)); + List voList = Optional.ofNullable(sysUserVoList).orElse(new ArrayList<>()).stream().map(m -> JSON.parseObject(JSON.toJSONString(m), SysUserListVo.class)).collect(Collectors.toList()); + voList.removeAll(Collections.singleton(null)); + if (voList.isEmpty()) { + return rb.setMsg("下一环节没有用户"); + } + return rb.success().setData(voList); + } + + public ResultBean selectPasswordByUserSid(String userSid) { + ResultBean rb = ResultBean.fireFail(); + boolean isTrue = false; + //查询手机号 + SysUser sysUser = fetchBySid(userSid); + if (sysUser != null) { + String mobile = sysUser.getMobile(); + if (StringUtils.isNotBlank(mobile)) { + String password = mobile.substring(5, 11); + String md5 = Encodes.md5(password); + if (sysUser.getPassword().equals(md5)) { + isTrue = true; + } + } + } + return rb.success().setData(isTrue); + } + + public List selectOrgBySid(String orgPath, String staffSid) { + return sysStaffOrgService.selectOrgBySid(orgPath, staffSid); + } + + public List getPost(String staffSid) { + return sysStaffPostService.getPost(staffSid); + } + + public int updateAppIdNull(String appId) { + return baseMapper.updateAppIdNull(appId); + } + + public ResultBean selectHaveMessage(SysHaveMessageQuery sysHaveMessageQuery) { + ResultBean rb = ResultBean.fireFail(); + String menuUrl = sysHaveMessageQuery.getMenuUrl(); + String orgPath = sysHaveMessageQuery.getOrgPath(); + //根据orgPath 查询当前组织所管理的层级 + List orgPathsList = Arrays.asList(orgPath.split("/")); + String orgSid = orgPathsList.get(orgPathsList.size() - 1); + SysOrganization sysOrganization = sysOrganizationService.fetchBySid(orgSid); + if (sysOrganization == null) { + return rb.setMsg("当前所在组织机构不存在"); + } + //根据菜单路由查询菜单的sid + List sysMenuList = sysMenuService.selectByMenuUrl(menuUrl); + if (sysMenuList.size() > 1) { + return rb.setMsg("当前菜单的路由存在多个,请联系管理员"); + } else if (sysMenuList.size() == 0) { + return rb.setMsg("当前菜单不存在"); + } else { + String menuSid = sysMenuList.get(0).getSid(); + //根据菜单sid查询所授权的角色 + List list = sysRoleService.selectRoleList(menuSid); + list.removeAll(Collections.singleton(null)); + if (!list.isEmpty()) { + List typeList = list.stream().map(v -> v.getRoleType()).collect(Collectors.toList()); + if (StringUtils.isBlank(sysOrganization.getOrgLevelKey())) { + return rb.setMsg("当前组织未设置管理层级"); + } + if (!typeList.contains(sysOrganization.getOrgLevelKey())) { + return rb.setMsg("请检查当前菜单是否为目前机构层级对应的角色"); + } + + } else { + return rb.setMsg("当前菜单未授权角色权限"); + } + } + return rb.success(); + } + + public ResultBean> getOrgListByUserSid(String userSid) { + ResultBean> rb = ResultBean.fireFail(); + SysUser sysUser = fetchBySid(userSid); + List sysStaffOrgVos = sysStaffOrgService.selectByStaffS(sysUser.getStaffSid()); + List orgList = new ArrayList<>(); + if (sysStaffOrgVos.size() > 0) { + for (SysStaffOrgVo vv : sysStaffOrgVos) { + OrgList orgList1 = new OrgList(); + orgList1.setOrgPath(vv.getOrgSidPath()); + orgList1.setOrgName(vv.getOrgNamePath()); + String orgName = ""; + if (StringUtils.isNotBlank(vv.getOrgSidPath())) { + List split = Arrays.asList(vv.getOrgSidPath().split("/")); + if (split.size() > 1) { + //获取本级sid获取本级部门信息 + SysOrganization sysOrganization = sysOrganizationService.fetchBySid(split.get(split.size() - 2)); + SysOrganization sysOrganization1 = sysOrganizationService.fetchBySid(split.get(split.size() - 1)); + orgName = sysOrganization.getName() + "/" + sysOrganization1.getName(); + } else { + SysOrganization sysOrganization = sysOrganizationService.fetchBySid(split.get(0)); + orgName = sysOrganization.getName(); + } + orgList1.setOrgName(orgName); + } + orgList.add(orgList1); + } + } + return rb.success().setData(orgList); + } + +// public ResultBean selectAppHaveMessage(String menuSid, String orgPath) { +// ResultBean rb = ResultBean.fireFail(); +// //根据orgPath 查询当前组织所管理的层级 +// List orgPathsList = Arrays.asList(orgPath.split("/")); +// String orgSid = orgPathsList.get(orgPathsList.size() - 1); +// SysOrganization sysOrganization = sysOrganizationService.fetchBySid(orgSid); +// if (sysOrganization == null) { +// return rb.setMsg("当前所在组织机构不存在"); +// } +// SysMobileMenu sysMobileMenu = sysMobileMenuService.fetchBySid(menuSid); +// if (sysMobileMenu == null) { +// return rb.setMsg("当前菜单不存在"); +// } +// //根据菜单sid查询所授权的角色 +// List list = sysRoleService.selectMobileRoleList(menuSid); +// list.removeAll(Collections.singleton(null)); +// if (!list.isEmpty()) { +// List typeList = list.stream().map(v -> v.getRoleType()).collect(Collectors.toList()); +// if (StringUtils.isBlank(sysOrganization.getOrgLevelKey())) { +// return rb.setMsg("当前组织未设置管理层级"); +// } +// if (!typeList.contains(sysOrganization.getOrgLevelKey())) { +// return rb.setMsg("请检查当前菜单是否为目前机构层级对应的角色"); +// } +// +// } else { +// return rb.setMsg("当前菜单未授权角色权限"); +// } +// return rb.success(); +// } + + public ResultBean> getUserByRoles(UserByRolesAndOrgQuery userQuery) { + ResultBean> rb = ResultBean.fireFail(); + List roleSids = userQuery.getRoleSids(); + String orgSidPath = userQuery.getOrgSidPath(); + List list = new ArrayList<>(); + for (String s : roleSids) { + UserQuery uq = new UserQuery(); + uq.setRoleSid(s); + uq.setOrgSidPath(orgSidPath); + ResultBean> userByRole = getUserByRole(uq); + if (userByRole.getSuccess()) { + List data = userByRole.getData(); + data.forEach(f -> { + list.add(f); + }); + } else { + log.error("角色获取人员--s:" + userByRole.getMsg()); + } + } + return rb.success().setData(list); + } + + public ResultBean> shareSelectUser(ShareUserQuery shareUserQuery) { + ResultBean> rb = ResultBean.fireFail(); + List staffList = new ArrayList<>(); + //人员list + List memberList = shareUserQuery.getMemberSids(); + //部门list + List orgList = shareUserQuery.getOrgSids(); + //查询该部门下子集部门的人员以及该部门下的人员 + if (orgList != null && orgList.size() > 0) { + for (int i = 0; i < orgList.size(); i++) { + String orgSid = orgList.get(i); + //查询该部门下的所有人员以及查询该部门的子集下的所有人员 + List staffSidList = sysStaffOrgService.selectStaffByOrg(orgSid); + staffList.addAll(staffSidList); + } + } + if (memberList != null && memberList.size() > 0) { + staffList.addAll(memberList); + } + //去重 + staffList = staffList.stream().distinct().collect(Collectors.toList()); + List userSidList = baseMapper.selectUserByStaffSid(staffList); + return rb.success().setData(userSidList); + } + + public ResultBean selectPrivilegeLevel(PrivilegeQuery query) { + ResultBean rb = ResultBean.fireFail(); + String defalutId = ""; + if (StringUtils.isBlank(query.getMenuSid())) { + //根据菜单路由查询菜单的sid + List sysMenuList = sysMenuService.selectByMenuUrl(query.getMenuUrl()); + if (sysMenuList.size() > 1) { + return rb.setMsg("当前菜单的路由存在多个,请联系管理员"); + } else if (sysMenuList.size() == 0) { + return rb.setMsg("当前菜单不存在"); + } else { + String menuSid = sysMenuList.get(0).getSid(); + //根据层级查找角色 +// List stringList = Arrays.asList(query.getOrgPath().split("/")); + //最后一级的sid所属层级 +// SysOrganization sysOrganization = sysOrganizationService.fetchBySid(stringList.get(stringList.size() - 1)); + List roleSidList = sysUserRoleService.selectRoleSid(query.getUserSid()); + roleSidList.removeAll(Collections.singleton(null)); + //查询层级对应的角色权限id + List roleIdList = sysRoleService.selectByRole(roleSidList, menuSid, query.getUserSid()); + roleIdList.removeAll(Collections.singleton(null)); + if (!roleIdList.isEmpty()) { + for (int i = 0; i < roleIdList.size(); i++) { + if (StringUtils.isNotBlank(roleIdList.get(i))) { + defalutId = roleIdList.get(i); + break; + } else { + continue; + } + } + } + } + } else { + String menuSid = query.getMenuSid(); + /* //根据层级查找角色 + List stringList = Arrays.asList(query.getOrgPath().split("/")); + //最后一级的sid所属层级 + SysOrganization sysOrganization = sysOrganizationService.fetchBySid(stringList.get(stringList.size() - 1));*/ + List roleSidList = sysUserRoleService.selectRoleSid(query.getUserSid()); + roleSidList.removeAll(Collections.singleton(null)); + //查询层级对应的角色权限id + List roleSid = sysRoleService.selectByMobileRole(roleSidList, menuSid, query.getUserSid()); + roleSid.removeAll(Collections.singleton(null)); + if (!roleSid.isEmpty()) { + for (int i = 0; i < roleSid.size(); i++) { + if (StringUtils.isNotBlank(roleSid.get(i))) { + defalutId = roleSid.get(i); + break; + } else { + continue; + } + } + } + } + return rb.success().setData(defalutId); + } + + public ResultBean> getUserSidByRole(UserQuery query) { + ResultBean> rb = ResultBean.fireFail(); + List sysUserVoList = new ArrayList<>(); + if (StringUtils.isBlank(query.getRoleSid())) { + return rb.setMsg("角色sid不能为空"); + } + if (StringUtils.isBlank(query.getOrgSidPath())) { + return rb.setMsg("机构全路径不能为空"); + } + //根据角色sid获取角色的层级 + String levelTypeKey = sysRoleService.getLevelType(query.getRoleSid()); + if (StringUtils.isNotBlank(levelTypeKey)) { + if (query.getOrgSidPath().split("/").length >= Integer.parseInt(levelTypeKey) - 1) { + String levelOrgSid = query.getOrgSidPath().split("/")[Integer.parseInt(levelTypeKey) - 1]; + sysUserVoList = baseMapper.getUserSidByRole(query.getRoleSid(), levelOrgSid); + if (sysUserVoList.size() > 1) { + List sysUserVoList1 = baseMapper.getUserSidMessageByRole(query.getRoleSid(), levelOrgSid, sysUserVoList); + sysUserVoList1.removeAll(Collections.singleton(null)); + if (sysUserVoList1.size() > 0) { + sysUserVoList = sysUserVoList1; + } + } + } + sysUserVoList.removeAll(Collections.singleton(null)); + } else { + return rb.setMsg("该角色层级未设置"); + } + return rb.success().setData(sysUserVoList); + } + + public ResultBean removeRedis() { + ResultBean rb = ResultBean.fireFail(); + //查询所有离职人员的移动端的token + List tokenList = baseMapper.selectTokenList(); + tokenList.removeAll(Collections.singleton(null)); + if (!tokenList.isEmpty()) { + String[] tokenss = tokenList.toArray(new String[tokenList.size()]); + redisUtil.remove(tokenss); + } + return rb.success(); + } +} \ No newline at end of file diff --git a/src/main/java/com/yxt/user/biz/sysuser/SysUserVo.java b/src/main/java/com/yxt/user/biz/sysuser/SysUserVo.java new file mode 100644 index 0000000..f937fca --- /dev/null +++ b/src/main/java/com/yxt/user/biz/sysuser/SysUserVo.java @@ -0,0 +1,98 @@ +package com.yxt.user.biz.sysuser; + + +import com.fasterxml.jackson.annotation.JsonProperty; +import com.yxt.common.core.vo.Vo; +import com.yxt.user.biz.sysuser.app.OrgList; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.util.ArrayList; +import java.util.List; + +/** + * Project: anrui_portal(门户建设)
+ * File: SysUserVo.java
+ * Class: com.yxt.anrui.portal.api.sysuser.SysUserVo
+ * Description: 用户表 视图数据对象.
+ * Copyright: Copyright (c) 2011
+ * Company: https://gitee.com/liuzp315
+ * Makedate: 2021-08-03 00:24:30
+ * + * @author liupopo + * @version 1.0 + * @since 1.0 + */ +@ApiModel(value = "用户表 视图数据对象", description = "用户表 视图数据对象") +@Data +@NoArgsConstructor +public class SysUserVo implements Vo { + private static final long serialVersionUID = 2415131854581950721L; + @ApiModelProperty("部门sid") + private String departmentSid; + @ApiModelProperty("部门名称") + private String departmentName; + @ApiModelProperty("上级部门名称-本级部门名称 岗位名称") + @JsonProperty("pNameAndDepartmentNameAndPostName") + private String pNameAndDepartmentNameAndPostName; + @ApiModelProperty("岗位名称") + private String postName; + @ApiModelProperty("岗位Sid") + private String postSid; + @ApiModelProperty("单位sid") + private String organizationSid; + @ApiModelProperty("单位名称") + private String organizationName; + @ApiModelProperty("用户姓名") + private String name; + @ApiModelProperty("登录名,登录名不能相同") + private String userName; + + @ApiModelProperty("id") + private Integer id; + @ApiModelProperty("用户sid") + private String sid; + @ApiModelProperty("是否是管理员:1管理员,2一般用户,0是超级管理员,3尚无单位人员") + private String isAdmin; + @ApiModelProperty("角色名称") + private String roleName; + + @ApiModelProperty("关联的人员sid") + private String staffSid; + + @ApiModelProperty("手机号") + private String mobile; + @ApiModelProperty(value = "禁用状态") + private String isEnable; + + @ApiModelProperty("用户类型:1员工、2客户、3供应商") + private String userType; + @ApiModelProperty("用户类型:1、2、3") + private String userTypeKey; + @ApiModelProperty("用户头像") + private String headImage; + @ApiModelProperty("组织名称") + private String orgNamePath; + @ApiModelProperty("组织sid") + private String orgSidPath; + @ApiModelProperty(value = "token") + private String token; + @ApiModelProperty(value = "角色sids") + private List roleSids = new ArrayList<>(); + + private List orgList = new ArrayList<>(); + @ApiModelProperty("默认的组织机构sid全路径") + private String defaultOrgPath; + @ApiModelProperty("默认的组织机构名称全路径") + private String defaultOrgPathName; + + private String defaultDeptName; + private String defaultDeptSid; + + @ApiModelProperty("是否需要更换密码") + private Boolean needResetPsd; + @ApiModelProperty("工号") + private String jobNumber; +} diff --git a/src/main/java/com/yxt/user/biz/sysuser/UserByRolesAndOrgQuery.java b/src/main/java/com/yxt/user/biz/sysuser/UserByRolesAndOrgQuery.java new file mode 100644 index 0000000..5abe88c --- /dev/null +++ b/src/main/java/com/yxt/user/biz/sysuser/UserByRolesAndOrgQuery.java @@ -0,0 +1,22 @@ +package com.yxt.user.biz.sysuser; + +import com.yxt.common.core.query.Query; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.List; + +/** + * @Author dimengzhe + * @Date 2022/6/21 8:47 + * @Description + */ +@Data +public class UserByRolesAndOrgQuery implements Query { + + @ApiModelProperty(value = "角色sid必传项") + private List roleSids; + @ApiModelProperty(value = "用户部门sid路径是必传项") + private String orgSidPath; + +} diff --git a/src/main/java/com/yxt/user/biz/sysuser/UserQuery.java b/src/main/java/com/yxt/user/biz/sysuser/UserQuery.java new file mode 100644 index 0000000..5cf650d --- /dev/null +++ b/src/main/java/com/yxt/user/biz/sysuser/UserQuery.java @@ -0,0 +1,21 @@ +package com.yxt.user.biz.sysuser; + +import com.yxt.common.core.query.Query; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * @Author dimengzhe + * @Date 2022/6/21 8:47 + * @Description + */ +@Data +public class UserQuery implements Query { + + private static final long serialVersionUID = -3979717077029562761L; + @ApiModelProperty(value = "角色sid必传项") + private String roleSid; + @ApiModelProperty(value = "用户部门sid路径是必传项") + private String orgSidPath; + +} diff --git a/src/main/java/com/yxt/user/biz/sysuser/UserRoleQuery.java b/src/main/java/com/yxt/user/biz/sysuser/UserRoleQuery.java new file mode 100644 index 0000000..36a8bf6 --- /dev/null +++ b/src/main/java/com/yxt/user/biz/sysuser/UserRoleQuery.java @@ -0,0 +1,19 @@ +package com.yxt.user.biz.sysuser; + +import com.yxt.common.core.query.Query; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * @Author dimengzhe + * @Date 2022/8/25 8:38 + * @Description + */ +@Data +public class UserRoleQuery implements Query { + private static final long serialVersionUID = 1913450300189800653L; + + @ApiModelProperty("角色sid") + private String roleSid; + private String orgSid; +} diff --git a/src/main/java/com/yxt/user/biz/sysuser/UserssQuery.java b/src/main/java/com/yxt/user/biz/sysuser/UserssQuery.java new file mode 100644 index 0000000..6115ec8 --- /dev/null +++ b/src/main/java/com/yxt/user/biz/sysuser/UserssQuery.java @@ -0,0 +1,19 @@ +package com.yxt.user.biz.sysuser; + +import lombok.Data; + +import java.util.ArrayList; +import java.util.List; + +/** + * @description: + * @author: dimengzhe + * @date: 2023/7/10 + **/ +@Data +public class UserssQuery { + + private List candidateGroups = new ArrayList<>(); + + private String orgSidPath; +} diff --git a/src/main/java/com/yxt/user/biz/sysuser/app/AppMySysUserInfo.java b/src/main/java/com/yxt/user/biz/sysuser/app/AppMySysUserInfo.java new file mode 100644 index 0000000..8506a2e --- /dev/null +++ b/src/main/java/com/yxt/user/biz/sysuser/app/AppMySysUserInfo.java @@ -0,0 +1,28 @@ +package com.yxt.user.biz.sysuser.app; + +import com.yxt.common.core.vo.Vo; +import io.swagger.annotations.ApiModelProperty; +import io.swagger.annotations.ApiOperation; +import lombok.Data; + +/** + * @Description + * @Author liuguohui + * @Date 2021/9/14 + */ +@ApiOperation(value = "App我的信息") +@Data +public class AppMySysUserInfo implements Vo { + + @ApiModelProperty("id") + private String id; + @ApiModelProperty("用户姓名") + private String name; + @ApiModelProperty("用户头像") + private String headImage; + + @ApiModelProperty("职位") + private String position; + @ApiModelProperty("部门") + private String department; +} diff --git a/src/main/java/com/yxt/user/biz/sysuser/app/AppUserOrgInfoVo.java b/src/main/java/com/yxt/user/biz/sysuser/app/AppUserOrgInfoVo.java new file mode 100644 index 0000000..0e21eb0 --- /dev/null +++ b/src/main/java/com/yxt/user/biz/sysuser/app/AppUserOrgInfoVo.java @@ -0,0 +1,34 @@ +package com.yxt.user.biz.sysuser.app; + +import com.yxt.common.core.vo.Vo; +import io.swagger.annotations.ApiModelProperty; +import io.swagger.annotations.ApiOperation; +import lombok.Data; + +/** + * @Description + * @Author liuguohui + * @Date 2021/12/17 + */ +@ApiOperation("用户组织信息") +@Data +public class AppUserOrgInfoVo implements Vo { + + @ApiModelProperty("关联的员工sid") + private String staffSid; + + @ApiModelProperty("关联的员工名称") + private String staffName; + + @ApiModelProperty("员工的组织sid(多个时为第一个)") + private String orgSid; + + @ApiModelProperty("员工的组织名称(多个时为第一个)") + private String orgName; + + @ApiModelProperty("员工的组织部门编码") + private String orgCode; + + @ApiModelProperty("部门路径") + private String orgSidPath; +} diff --git a/src/main/java/com/yxt/user/biz/sysuser/app/MyInfoQuery.java b/src/main/java/com/yxt/user/biz/sysuser/app/MyInfoQuery.java new file mode 100644 index 0000000..aa161b5 --- /dev/null +++ b/src/main/java/com/yxt/user/biz/sysuser/app/MyInfoQuery.java @@ -0,0 +1,19 @@ +package com.yxt.user.biz.sysuser.app; + +import com.yxt.common.core.query.Query; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * @Author dimengzhe + * @Date 2022/10/22 15:24 + * @Description + */ +@Data +public class MyInfoQuery implements Query { + private static final long serialVersionUID = -4771501933318214145L; + @ApiModelProperty("用户sid") + private String userSid; + @ApiModelProperty("组织机构sid") + private String orgPath; +} diff --git a/src/main/java/com/yxt/user/biz/sysuser/app/OrgList.java b/src/main/java/com/yxt/user/biz/sysuser/app/OrgList.java new file mode 100644 index 0000000..b46f873 --- /dev/null +++ b/src/main/java/com/yxt/user/biz/sysuser/app/OrgList.java @@ -0,0 +1,21 @@ +package com.yxt.user.biz.sysuser.app; + +import com.yxt.common.core.vo.Vo; +import lombok.Data; + +/** + * @Author dimengzhe + * @Date 2022/9/21 9:26 + * @Description + */ +@Data +public class OrgList implements Vo { + private static final long serialVersionUID = -2867882982421321776L; + + private String orgName; + private String orgPath; + + private String deptName; + + private String deptSid; +} diff --git a/src/main/java/com/yxt/user/biz/sysuser/wx/WxHomePageVo.java b/src/main/java/com/yxt/user/biz/sysuser/wx/WxHomePageVo.java new file mode 100644 index 0000000..6ea0ca9 --- /dev/null +++ b/src/main/java/com/yxt/user/biz/sysuser/wx/WxHomePageVo.java @@ -0,0 +1,27 @@ +package com.yxt.user.biz.sysuser.wx; + +import com.yxt.common.core.vo.Vo; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * @author dimengzhe + * @date 2021/10/12 10:53 + * @description + */ +@Data +public class WxHomePageVo implements Vo { + private static final long serialVersionUID = 2116719971434282451L; + @ApiModelProperty(value = "头像") + private String headImage; + + @ApiModelProperty(value = "提醒") + private String message; + + @ApiModelProperty(value = "身份证有效期") + private String idTerm; + @ApiModelProperty(value = "是否有提示") + private Boolean isHave; + @ApiModelProperty(value = "客户sid") + private String staffSid; +} diff --git a/src/main/java/com/yxt/user/biz/sysuser/wx/WxMySysUserInfoVo.java b/src/main/java/com/yxt/user/biz/sysuser/wx/WxMySysUserInfoVo.java new file mode 100644 index 0000000..1f1b2df --- /dev/null +++ b/src/main/java/com/yxt/user/biz/sysuser/wx/WxMySysUserInfoVo.java @@ -0,0 +1,23 @@ +package com.yxt.user.biz.sysuser.wx; + +import com.yxt.common.core.utils.desensitized.Sensitive; +import com.yxt.common.core.utils.desensitized.SensitiveTypeEnum; +import com.yxt.common.core.vo.Vo; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * @author dimengzhe + * @date 2021/10/6 9:12 + * @description 客户端我的页面 + */ +@Data +public class WxMySysUserInfoVo implements Vo { + private static final long serialVersionUID = 6495105262502269503L; + + @ApiModelProperty(value = "姓名") + @Sensitive(type = SensitiveTypeEnum.CHINESE_NAME) + private String name; + @ApiModelProperty(value = "头像") + private String headImage; +} diff --git a/src/main/java/com/yxt/user/biz/sysuser/wx/WxSysUserDto.java b/src/main/java/com/yxt/user/biz/sysuser/wx/WxSysUserDto.java new file mode 100644 index 0000000..ce16440 --- /dev/null +++ b/src/main/java/com/yxt/user/biz/sysuser/wx/WxSysUserDto.java @@ -0,0 +1,33 @@ +package com.yxt.user.biz.sysuser.wx; + +import com.yxt.common.core.dto.Dto; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotBlank; +import javax.validation.constraints.Pattern; + +/** + * @author dimengzhe + * @date 2021/10/5 13:31 + * @description + */ +@Data +public class WxSysUserDto implements Dto { + private static final long serialVersionUID = -3446342255009165324L; + + @ApiModelProperty(value = "手机号", required = true) + @NotBlank(message = "手机号不能为空") + @Pattern(regexp = "^((13[0-9])|(14[5,7])|(15[0-3,5-9])|(17[0,3,5-8])|(18[0-9])|166|198|199|(147))\\d{8}$", message = "手机号码格式不正确") + private String mobile; + @ApiModelProperty(value = "验证码", required = true) + @NotBlank(message = "验证码不能为空") + private String verificationCode; + @ApiModelProperty(value = "姓名", required = true) + @NotBlank(message = "姓名不能为空") + private String name; + @ApiModelProperty(value = "身份证号", required = true) + @NotBlank(message = "身份证号不能为空") + private String idNo; + +} diff --git a/src/main/java/com/yxt/user/biz/sysuser/wx/WxSysUserLoginQuery.java b/src/main/java/com/yxt/user/biz/sysuser/wx/WxSysUserLoginQuery.java new file mode 100644 index 0000000..b7f6eda --- /dev/null +++ b/src/main/java/com/yxt/user/biz/sysuser/wx/WxSysUserLoginQuery.java @@ -0,0 +1,29 @@ +package com.yxt.user.biz.sysuser.wx; + +import com.yxt.common.core.query.Query; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotBlank; + +/** + * @author dimengzhe + * @date 2021/10/6 14:31 + * @description + */ +@Data +public class WxSysUserLoginQuery implements Query { + private static final long serialVersionUID = -3754864114501469472L; + @ApiModelProperty(value = "用户名或手机号", required = true) + @NotBlank(message = "用户名不能为空") + private String userName; + @ApiModelProperty(value = "手机登录类型:1、密码登录,2、验证码登录", required = true) + @NotBlank(message = "手机登录类型不能为空") + private String type; + + @ApiModelProperty(value = "密码") + private String password; + + @ApiModelProperty(value = "验证码") + private String verifyCode; +} diff --git a/src/main/java/com/yxt/user/biz/sysuser/wx/WxSysUserRegistQuery.java b/src/main/java/com/yxt/user/biz/sysuser/wx/WxSysUserRegistQuery.java new file mode 100644 index 0000000..6c44049 --- /dev/null +++ b/src/main/java/com/yxt/user/biz/sysuser/wx/WxSysUserRegistQuery.java @@ -0,0 +1,21 @@ +package com.yxt.user.biz.sysuser.wx; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * @author dimengzhe + * @date 2021/10/20 14:03 + * @description + */ +@Data +public class WxSysUserRegistQuery{ + + @ApiModelProperty(value = "身份证号") + private String idcard; + @ApiModelProperty(value = "手机号码") + private String mobile; + + @ApiModelProperty(value = "姓名") + private String name; +} diff --git a/src/main/java/com/yxt/user/biz/sysuser/wx/WxSysUserVo.java b/src/main/java/com/yxt/user/biz/sysuser/wx/WxSysUserVo.java new file mode 100644 index 0000000..4af05ed --- /dev/null +++ b/src/main/java/com/yxt/user/biz/sysuser/wx/WxSysUserVo.java @@ -0,0 +1,38 @@ +package com.yxt.user.biz.sysuser.wx; + +import com.yxt.common.core.vo.Vo; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * @author dimengzhe + * @date 2021/10/6 14:52 + * @description + */ +@Data +public class WxSysUserVo implements Vo { + private static final long serialVersionUID = 1700823767702299465L; + /*若为员工,则为人员sid。若为客户,则为客户sid。若为供应厂商,则为供应厂商的sid*/ + @ApiModelProperty(value = "关联的客户sid") + private String staffSid; + + @ApiModelProperty(value = "手机号") + private String mobile; + + @ApiModelProperty(value = "用户类型:1员工、2客户、3供应商") + private String userType; + + @ApiModelProperty(value = "用户sid") + private String userSid; + + @ApiModelProperty(value = "登录名,登录名不能相同") + private String userName; + @ApiModelProperty(value = "用户姓名") + private String name; + + @ApiModelProperty(value = "token") + private String token; + + @ApiModelProperty(value = "未读数量",example = "1") + private String num; +} diff --git a/src/main/java/com/yxt/user/biz/sysuserdefaultorg/SysOrgPathList.java b/src/main/java/com/yxt/user/biz/sysuserdefaultorg/SysOrgPathList.java new file mode 100644 index 0000000..7d8000e --- /dev/null +++ b/src/main/java/com/yxt/user/biz/sysuserdefaultorg/SysOrgPathList.java @@ -0,0 +1,20 @@ +package com.yxt.user.biz.sysuserdefaultorg; + +import com.yxt.common.core.vo.Vo; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * @Author dimengzhe + * @Date 2023/1/11 13:29 + * @Description + */ +@Data +public class SysOrgPathList implements Vo { + private static final long serialVersionUID = 2356384382464107570L; + + @ApiModelProperty("组织机构全路径sid") + private String orgSidPath; + @ApiModelProperty("组织机构全路径名称") + private String orgNamePath; +} diff --git a/src/main/java/com/yxt/user/biz/sysuserdefaultorg/SysUserDefaultOrg.java b/src/main/java/com/yxt/user/biz/sysuserdefaultorg/SysUserDefaultOrg.java new file mode 100644 index 0000000..5429353 --- /dev/null +++ b/src/main/java/com/yxt/user/biz/sysuserdefaultorg/SysUserDefaultOrg.java @@ -0,0 +1,23 @@ +package com.yxt.user.biz.sysuserdefaultorg; + +import com.yxt.common.core.domain.BaseEntity; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * @Author dimengzhe + * @Date 2023/1/11 11:23 + * @Description + */ +@Data +public class SysUserDefaultOrg extends BaseEntity { + private static final long serialVersionUID = 3567627566535174850L; + + @ApiModelProperty("人员sid") + private String staffSid; + @ApiModelProperty("默认的组织机构sid") + private String orgSidPath; + @ApiModelProperty("默认的组织机构名称") + private String orgNamePath; + +} diff --git a/src/main/java/com/yxt/user/biz/sysuserdefaultorg/SysUserDefaultOrgDto.java b/src/main/java/com/yxt/user/biz/sysuserdefaultorg/SysUserDefaultOrgDto.java new file mode 100644 index 0000000..5de5293 --- /dev/null +++ b/src/main/java/com/yxt/user/biz/sysuserdefaultorg/SysUserDefaultOrgDto.java @@ -0,0 +1,22 @@ +package com.yxt.user.biz.sysuserdefaultorg; + +import com.yxt.common.core.dto.Dto; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * @Author dimengzhe + * @Date 2023/1/11 14:18 + * @Description + */ +@Data +public class SysUserDefaultOrgDto implements Dto { + private static final long serialVersionUID = 3069749900524077996L; + + @ApiModelProperty("用户sid") + private String userSid; + @ApiModelProperty("设置的默认组织全路径sid") + private String orgSidPath; + @ApiModelProperty("设置的默认组织全路径名称") + private String orgNamePath; +} diff --git a/src/main/java/com/yxt/user/biz/sysuserdefaultorg/SysUserDefaultOrgMapper.java b/src/main/java/com/yxt/user/biz/sysuserdefaultorg/SysUserDefaultOrgMapper.java new file mode 100644 index 0000000..7afe7ad --- /dev/null +++ b/src/main/java/com/yxt/user/biz/sysuserdefaultorg/SysUserDefaultOrgMapper.java @@ -0,0 +1,16 @@ +package com.yxt.user.biz.sysuserdefaultorg; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Mapper; + +/** + * @Author dimengzhe + * @Date 2023/1/11 11:27 + * @Description + */ +@Mapper +public interface SysUserDefaultOrgMapper extends BaseMapper { + SysUserDefaultOrg selectByUserSid(String userSid); + + int deleteByUserSid(String userSid); +} diff --git a/src/main/java/com/yxt/user/biz/sysuserdefaultorg/SysUserDefaultOrgMapper.xml b/src/main/java/com/yxt/user/biz/sysuserdefaultorg/SysUserDefaultOrgMapper.xml new file mode 100644 index 0000000..dfc540d --- /dev/null +++ b/src/main/java/com/yxt/user/biz/sysuserdefaultorg/SysUserDefaultOrgMapper.xml @@ -0,0 +1,17 @@ + + + + + + + delete + from sys_user_default_org + where createBySid = #{userSid} + + \ No newline at end of file diff --git a/src/main/java/com/yxt/user/biz/sysuserdefaultorg/SysUserDefaultOrgQuery.java b/src/main/java/com/yxt/user/biz/sysuserdefaultorg/SysUserDefaultOrgQuery.java new file mode 100644 index 0000000..d8c6518 --- /dev/null +++ b/src/main/java/com/yxt/user/biz/sysuserdefaultorg/SysUserDefaultOrgQuery.java @@ -0,0 +1,14 @@ +package com.yxt.user.biz.sysuserdefaultorg; + +import com.yxt.common.core.query.Query; +import lombok.Data; + +/** + * @Author dimengzhe + * @Date 2023/1/11 11:52 + * @Description + */ +@Data +public class SysUserDefaultOrgQuery implements Query { + private static final long serialVersionUID = 549888513841147615L; +} diff --git a/src/main/java/com/yxt/user/biz/sysuserdefaultorg/SysUserDefaultOrgService.java b/src/main/java/com/yxt/user/biz/sysuserdefaultorg/SysUserDefaultOrgService.java new file mode 100644 index 0000000..a1a2a52 --- /dev/null +++ b/src/main/java/com/yxt/user/biz/sysuserdefaultorg/SysUserDefaultOrgService.java @@ -0,0 +1,81 @@ +package com.yxt.user.biz.sysuserdefaultorg; + +import com.yxt.user.biz.sysuser.SysUser; +import com.yxt.user.biz.sysuserdefaultorg.*; +import com.yxt.user.biz.sysstafforg.SysStaffOrgService; +import com.yxt.user.biz.sysuser.SysUserService; +import com.yxt.common.base.service.MybatisBaseService; +import com.yxt.common.base.utils.StringUtils; +import com.yxt.common.core.result.ResultBean; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.Collections; +import java.util.List; + +/** + * @Author dimengzhe + * @Date 2023/1/11 11:27 + * @Description + */ +@Service +public class SysUserDefaultOrgService extends MybatisBaseService { + + @Autowired + private SysStaffOrgService sysStaffOrgService; + @Autowired + private SysUserService sysUserService; + + public ResultBean getList(String userSid) { + ResultBean rb = ResultBean.fireFail(); + SysUserDefaultOrgVo sysUserDefaultOrgVo = new SysUserDefaultOrgVo(); + //根据用户sid查询staffSid + SysUser sysUser = sysUserService.fetchBySid(userSid); + List list = sysStaffOrgService.getList(sysUser.getStaffSid()); + list.removeAll(Collections.singleton(null)); + sysUserDefaultOrgVo.setList(list); + //根据该用户名称查询是否设置了默认组织机构 + SysUserDefaultOrg sysUserDefaultOrg = baseMapper.selectByUserSid(userSid); + if (sysUserDefaultOrg != null) { + sysUserDefaultOrgVo.setOrgSidPath(sysUserDefaultOrg.getOrgSidPath()); + sysUserDefaultOrgVo.setOrgNamePath(sysUserDefaultOrg.getOrgNamePath()); + } + return rb.success().setData(sysUserDefaultOrgVo); + } + + public SysUserDefaultOrg selectByUserSid(String userSid) { + return baseMapper.selectByUserSid(userSid); + } + + public ResultBean saveDefaultOrg(SysUserDefaultOrgDto dto) { + ResultBean rb = ResultBean.fireFail(); + String userSid = dto.getUserSid(); + if (StringUtils.isBlank(userSid)) { + return rb.setMsg("参数错误:userSid是必传项"); + } + String orgSidPath = dto.getOrgSidPath(); + if (StringUtils.isNotBlank(orgSidPath)) { + //删除设置的默认组织机构 + baseMapper.deleteByUserSid(userSid); + SysUserDefaultOrg sysUserDefaultOrg = new SysUserDefaultOrg(); + String orgNamePath = dto.getOrgNamePath(); + if (StringUtils.isBlank(orgNamePath)) { + return rb.setMsg("参数错误:orgNamePath是必传项"); + } + SysUser sysUser = sysUserService.fetchBySid(userSid); + sysUserDefaultOrg.setOrgSidPath(orgSidPath); + sysUserDefaultOrg.setOrgNamePath(orgNamePath); + sysUserDefaultOrg.setCreateBySid(userSid); + sysUserDefaultOrg.setStaffSid(sysUser.getStaffSid()); + baseMapper.insert(sysUserDefaultOrg); + } else { + //删除设置的默认组织机构 + baseMapper.deleteByUserSid(userSid); + } + return rb.success(); + } + + public int deleteByUserSid(String sid) { + return baseMapper.deleteByUserSid(sid); + } +} diff --git a/src/main/java/com/yxt/user/biz/sysuserrole/SysUserRole.java b/src/main/java/com/yxt/user/biz/sysuserrole/SysUserRole.java new file mode 100644 index 0000000..25364f7 --- /dev/null +++ b/src/main/java/com/yxt/user/biz/sysuserrole/SysUserRole.java @@ -0,0 +1,34 @@ +package com.yxt.user.biz.sysuserrole; + +import com.baomidou.mybatisplus.annotation.TableName; +import com.yxt.common.core.domain.BaseEntity; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * Project: anrui_portal(门户建设)
+ * File: SysUserRole.java
+ * Class: com.yxt.anrui.portal.api.sysuserrole.SysUserRole
+ * Description: 用户与角色关联表.
+ * Copyright: Copyright (c) 2011
+ * Company: https://gitee.com/liuzp315
+ * Makedate: 2021-08-03 00:24:30
+ * + * @author liupopo + * @version 1.0 + * @since 1.0 + */ +@ApiModel(value = "用户与角色关联表", description = "用户与角色关联表") +@TableName("sys_user_role") +@Data +public class SysUserRole extends BaseEntity { + private static final long serialVersionUID = 1L; + + + @ApiModelProperty("用户sid") + private String userSid; + + @ApiModelProperty("角色sid") + private String roleSid; +} diff --git a/src/main/java/com/yxt/user/biz/sysuserrole/SysUserRoleDto.java b/src/main/java/com/yxt/user/biz/sysuserrole/SysUserRoleDto.java new file mode 100644 index 0000000..b82c622 --- /dev/null +++ b/src/main/java/com/yxt/user/biz/sysuserrole/SysUserRoleDto.java @@ -0,0 +1,32 @@ +package com.yxt.user.biz.sysuserrole; + + +import com.yxt.common.core.dto.Dto; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * Project: anrui_portal(门户建设)
+ * File: SysUserRoleDto.java
+ * Class: com.yxt.anrui.portal.api.sysuserrole.SysUserRoleDto
+ * Description: 用户与角色关联表 数据传输对象.
+ * Copyright: Copyright (c) 2011
+ * Company: https://gitee.com/liuzp315
+ * Makedate: 2021-08-03 00:24:30
+ * + * @author liupopo + * @version 1.0 + * @since 1.0 + */ +@ApiModel(value = "用户与角色关联表 数据传输对象", description = "用户与角色关联表 数据传输对象") +@Data +public class SysUserRoleDto implements Dto { + + + @ApiModelProperty("用户sid") + private String userSid; + + @ApiModelProperty("角色sid") + private String roleSid; +} \ No newline at end of file diff --git a/src/main/java/com/yxt/user/biz/sysuserrole/SysUserRoleMapper.java b/src/main/java/com/yxt/user/biz/sysuserrole/SysUserRoleMapper.java new file mode 100644 index 0000000..a5c70eb --- /dev/null +++ b/src/main/java/com/yxt/user/biz/sysuserrole/SysUserRoleMapper.java @@ -0,0 +1,58 @@ +package com.yxt.user.biz.sysuserrole; + +import com.baomidou.mybatisplus.core.conditions.Wrapper; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.core.toolkit.Constants; +import org.apache.ibatis.annotations.Delete; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; + +import java.util.List; + +/** + * Project: anrui_portal(门户建设)
+ * File: SysUserRoleMapper.java
+ * Class: com.yxt.anrui.portal.biz.sysuserrole.SysUserRoleMapper
+ * Description: 用户与角色关联表.
+ * Copyright: Copyright (c) 2011
+ * Company: https://gitee.com/liuzp315
+ * Makedate: 2021-08-03 00:24:30
+ * + * @author liupopo + * @version 1.0 + * @since 1.0 + */ +@Mapper +public interface SysUserRoleMapper extends BaseMapper { + + //@Update("update sys_user_role set name=#{msg} where id=#{id}") + //IPage voPage(IPage page, @Param(Constants.WRAPPER) QueryWrapper qw); + + IPage selectPageVo(IPage page, @Param(Constants.WRAPPER) Wrapper qw); + + List selectListAllVo(@Param(Constants.WRAPPER) Wrapper qw); + + @Select("select * from sys_user_role") + List selectListVo(); + + void deleteByUserSid(String userSid); + + @Delete("delete from sys_user_role where userSid=#{userSid} and roleSid=#{roleSid} ") + void delByUserSidAndRoleSid(@Param("userSid") String userSid,@Param("roleSid") String roleSid); + + List selectByUserSid(@Param("userSid")String userSid); + + @Select("SELECT roleSid FROM sys_user_role WHERE userSid=#{userSid}") + List getUserRoleSidByUserSid(@Param("userSid")String userSid); + + List getUserIdListByRoleSid(@Param("roleList") List roleList); + List getUserSidListByRoleSid(@Param("roleList") List roleList); + + int deleteByRoleSid(String sids); + + List selectRoleSid(String userSid); + + List selectByUserSids(String userSid); +} \ No newline at end of file diff --git a/src/main/java/com/yxt/user/biz/sysuserrole/SysUserRoleMapper.xml b/src/main/java/com/yxt/user/biz/sysuserrole/SysUserRoleMapper.xml new file mode 100644 index 0000000..a6774fb --- /dev/null +++ b/src/main/java/com/yxt/user/biz/sysuserrole/SysUserRoleMapper.xml @@ -0,0 +1,53 @@ + + + + + + + + + + + delete from sys_user_role where userSid=#{params} + + + + + + delete from sys_user_role where roleSid = #{sids} + + + + + + \ No newline at end of file diff --git a/src/main/java/com/yxt/user/biz/sysuserrole/SysUserRoleQuery.java b/src/main/java/com/yxt/user/biz/sysuserrole/SysUserRoleQuery.java new file mode 100644 index 0000000..a7f12b7 --- /dev/null +++ b/src/main/java/com/yxt/user/biz/sysuserrole/SysUserRoleQuery.java @@ -0,0 +1,32 @@ +package com.yxt.user.biz.sysuserrole; + + +import com.yxt.common.core.query.Query; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * Project: anrui_portal(门户建设)
+ * File: SysUserRoleQuery.java
+ * Class: com.yxt.anrui.portal.api.sysuserrole.SysUserRoleQuery
+ * Description: 用户与角色关联表 查询条件.
+ * Copyright: Copyright (c) 2011
+ * Company: https://gitee.com/liuzp315
+ * Makedate: 2021-08-03 00:24:30
+ * + * @author liupopo + * @version 1.0 + * @since 1.0 + */ +@ApiModel(value = "用户与角色关联表 查询条件", description = "用户与角色关联表 查询条件") +@Data +public class SysUserRoleQuery implements Query { + + + @ApiModelProperty("用户sid") + private String userSid; + + @ApiModelProperty("角色sid") + private String roleSid; +} diff --git a/src/main/java/com/yxt/user/biz/sysuserrole/SysUserRoleService.java b/src/main/java/com/yxt/user/biz/sysuserrole/SysUserRoleService.java new file mode 100644 index 0000000..3fa418b --- /dev/null +++ b/src/main/java/com/yxt/user/biz/sysuserrole/SysUserRoleService.java @@ -0,0 +1,136 @@ +package com.yxt.user.biz.sysuserrole; + +import cn.hutool.core.bean.BeanUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.yxt.common.base.service.MybatisBaseService; +import com.yxt.common.base.utils.PagerUtil; +import com.yxt.common.core.query.PagerQuery; +import com.yxt.common.core.result.ResultBean; +import com.yxt.common.core.vo.PagerVo; +import org.apache.commons.lang3.StringUtils; +import org.springframework.stereotype.Service; + +import java.util.ArrayList; +import java.util.List; + +/** + * Project: anrui_portal(门户建设)
+ * File: SysUserRoleService.java
+ * Class: com.yxt.anrui.portal.biz.sysuserrole.SysUserRoleService
+ * Description: 用户与角色关联表 业务逻辑.
+ * Copyright: Copyright (c) 2011
+ * Company: https://gitee.com/liuzp315
+ * Makedate: 2021-08-03 00:24:30
+ * + * @author liupopo + * @version 1.0 + * @since 1.0 + */ +@Service +public class SysUserRoleService extends MybatisBaseService { + public PagerVo listPage(PagerQuery pq) { + SysUserRoleQuery query = pq.getParams(); + QueryWrapper qw = createQueryWrapper(query); + IPage page = PagerUtil.queryToPage(pq); + IPage pagging = baseMapper.selectPage(page, qw); + PagerVo p = PagerUtil.pageToVo(pagging, null); + return p; + } + public List listAll(SysUserRoleQuery query) { + QueryWrapper qw = createQueryWrapper(query); + return baseMapper.selectList(qw); + } + private QueryWrapper createQueryWrapper(SysUserRoleQuery query) { + // todo: 这里根据具体业务调整查询条件 + // 多字段Like示例:qw.and(wrapper -> wrapper.like("name", query.getName()).or().like("remark", query.getName())); + QueryWrapper qw = new QueryWrapper<>(); + + + if (StringUtils.isNotBlank(query.getUserSid())) { + qw.eq("userSid", query.getUserSid()); + } + + if (StringUtils.isNotBlank(query.getRoleSid())) { + qw.eq("roleSid", query.getRoleSid()); + } + return qw; + } + + public PagerVo listPageVo(PagerQuery pq) { + SysUserRoleQuery query = pq.getParams(); + QueryWrapper qw = createQueryWrapper(query); + IPage page = PagerUtil.queryToPage(pq); + IPage pagging = baseMapper.selectPageVo(page, qw); + PagerVo p = PagerUtil.pageToVo(pagging, null); + return p; + } + + public List listAllVo(SysUserRoleQuery query) { + QueryWrapper qw = createQueryWrapper(query); + return baseMapper.selectListAllVo(qw); + } + + public List listVo() { + return baseMapper.selectListVo(); + } + + public void saveOrUpdateDto(SysUserRoleDto dto){ + SysUserRole entity = new SysUserRole(); + dto.fillEntity(entity); + this.saveOrUpdate(entity); + } + + public SysUserRoleVo fetchByIdVo(String id){ + SysUserRole entity = this.fetchById(id); + SysUserRoleVo vo = new SysUserRoleVo(); + BeanUtil.copyProperties(entity, vo); + return vo; + } + + public void deleteByUserSid(String userSid) { + baseMapper.deleteByUserSid(userSid); + } + + public void delByUserSidAndRoleSid(String userSid, String roleSid) { + baseMapper.delByUserSidAndRoleSid(userSid,roleSid); + } + + public List selectByUserSid(String userSid) { + return baseMapper.selectByUserSid(userSid); + } + /*public void updateUserRole(SysUserRoleDto dto) { + //sysUserRoleService.deleteByUserSid(dto.getUserSid()); + SysUserRole entity = new SysUserRole(); + dto.fillEntity(entity); + this.saveOrUpdate (entity); + }*/ + + public ResultBean> getUserRoleSidByUserSid(String userSid) { + ResultBean> rb = ResultBean.fireFail(); + List stringList = new ArrayList<>(); + stringList = baseMapper.getUserRoleSidByUserSid(userSid); + return rb.success().setData(stringList); + } + + public ResultBean> getUserIdListByRoleSid(List roleList) { + return new ResultBean>().success().setData(baseMapper.getUserIdListByRoleSid(roleList)); + } + public ResultBean> getUserSidListByRoleSid(List roleList) { + return new ResultBean>().success().setData(baseMapper.getUserSidListByRoleSid(roleList)); + } + + public int deleteByRoleSid(String sids) { + return baseMapper.deleteByRoleSid(sids); + } + + public List selectRoleSid(String userSid) { + return baseMapper.selectRoleSid(userSid); + } + + public ResultBean> selectByUserSids(String userSid) { + ResultBean> rb = ResultBean.fireFail(); + List list = baseMapper.selectByUserSids(userSid); + return rb.success().setData(list); + } +} \ No newline at end of file diff --git a/src/main/java/com/yxt/user/biz/sysuserrole/SysUserRoleVo.java b/src/main/java/com/yxt/user/biz/sysuserrole/SysUserRoleVo.java new file mode 100644 index 0000000..12e53e2 --- /dev/null +++ b/src/main/java/com/yxt/user/biz/sysuserrole/SysUserRoleVo.java @@ -0,0 +1,32 @@ +package com.yxt.user.biz.sysuserrole; + + +import com.yxt.common.core.vo.Vo; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * Project: anrui_portal(门户建设)
+ * File: SysUserRoleVo.java
+ * Class: com.yxt.anrui.portal.api.sysuserrole.SysUserRoleVo
+ * Description: 用户与角色关联表 视图数据对象.
+ * Copyright: Copyright (c) 2011
+ * Company: https://gitee.com/liuzp315
+ * Makedate: 2021-08-03 00:24:30
+ * + * @author liupopo + * @version 1.0 + * @since 1.0 + */ +@ApiModel(value = "用户与角色关联表 视图数据对象", description = "用户与角色关联表 视图数据对象") +@Data +public class SysUserRoleVo implements Vo { + + + @ApiModelProperty("用户sid") + private String userSid; + + @ApiModelProperty("角色sid") + private String roleSid; +} diff --git a/src/main/java/com/yxt/user/config/DictCommonType.java b/src/main/java/com/yxt/user/config/DictCommonType.java new file mode 100644 index 0000000..69414a7 --- /dev/null +++ b/src/main/java/com/yxt/user/config/DictCommonType.java @@ -0,0 +1,267 @@ +package com.yxt.user.config; + +import io.swagger.annotations.ApiModelProperty; + +/** + * @author dimengzhe + * @date 2021/7/1 10:23 + * @description 常量值管理 + */ +public class DictCommonType { + + //客户端获取手机验证码redis前缀定义 + public static final String WX_REGIST = "wx-regist-";//注册获取验证码 + public static final String WX_LOGIN = "wx-login-";//登录获取验证码 + public static final String WX_FORGET = "wx-forget-";//忘记密码获取验证码 + public static final String WX_UPDATE = "wx-update-";//忘记密码获取验证码 + public static final String WX_NEW = "wx-new-";//新手机号获取验证码 + + /*供应厂商相关*/ + @ApiModelProperty(value = "供应商分类") + public static final String SUPPLIER_TYPE = "supplierType";//数据字典已添加 + @ApiModelProperty(value = "供应类别") + public static final String SUPPLY_TYPE = "supplyType";//数据字典已添加 + @ApiModelProperty(value = "供应商分组") + public static final String SUPPLIE_RGROUP = "supplierGroup";//数据字典已添加 + + /*供应厂商财务信息相关*/ + @ApiModelProperty(value = "结算币种") + public static final String SETTLEMENT_CURRENCY = "settlementCurrency";//数据字典已添加 + @ApiModelProperty(value = "结算方式") + public static final String SETTLEMENT_WAY = "settlementWay";//数据字典已添加 + @ApiModelProperty(value = "税分类") + public static final String TAX_CLASSIFICATION = "taxClassification";//数据字典已添加 + /*基础信息品牌相关*/ + @ApiModelProperty(value = "品牌类型") + public static final String BRAND_TYPE = "brandType";//数据字典已添加 + @ApiModelProperty(value = "职级(岗位)") + public static final String POSTLEVEL = "postLevel"; + + /*车型、车型配置、车辆信息相关*/ + @ApiModelProperty(value = "车辆类型") + public static final String VEHICLE_TYPE = "vehicleType";//数据字典已添加 + @ApiModelProperty(value = "排放标准") + public static final String EMISSION_STANDARD = "emissionStandard";//数据字典已添加 + @ApiModelProperty(value = "产品线") + public static final String PRODUCT_LINE = "productLine";//数据字典已添加 + @ApiModelProperty(value = "后桥") + public static final String REAR_AXLE = "rearAxle";//数据字典已添加 + @ApiModelProperty(value = "速比") + public static final String SPEED_RATIO = "speedRatio";//数据字典已添加 + @ApiModelProperty(value = "系别") + private static final String SERIES = "series";//数据字典已添加 + @ApiModelProperty(value = "车辆功能") + private static final String VEHICLE_FUNCTION = "vehicleFunction";//数据字典已添加 + @ApiModelProperty(value = "细分市场") + private static final String MARKETSEGMENTS = "marketSegments";//数据字典已添加 + + @ApiModelProperty(value = "车身颜色") + public static final String BODYCOLOR = "bodyColor"; + @ApiModelProperty(value = "缓速器") + public static final String SLOWMACHINE = "slowMachine"; + @ApiModelProperty(value = "后视镜") + public static final String REARVIEWMIRROR = "rearViewMirror"; + @ApiModelProperty(value = "轮胎") + public static final String TIRESIZE = "tireSize"; + @ApiModelProperty(value = "驾驶室") + public static final String SPECIFICATION = "specification"; + @ApiModelProperty(value = "后桥速比") + public static final String REARAXLERATIO = "rearAxleRatio"; + @ApiModelProperty(value = "轮毂材质") + public static final String HUBMATERIAL = "hubMaterial"; + @ApiModelProperty(value = "悬架") + public static final String SUSPENSION = "suspension"; + @ApiModelProperty(value = "座椅") + public static final String SEAT = "seat"; + @ApiModelProperty(value = "鞍座") + public static final String SADDLE = "saddle"; + @ApiModelProperty(value = "轴距") + public static final String WHEELBASE = "wheelbase"; + @ApiModelProperty(value = "保险杠") + public static final String BUMPER = "bumper"; + @ApiModelProperty(value = "配置包") + public static final String CONFIGURINGBAO = "configuringBao"; + @ApiModelProperty(value = "独立热源") + public static final String INDEPENDENTSOURCES = "independentSources"; + @ApiModelProperty(value = "燃料箱") + public static final String FUELTANK = "fuelTank"; + @ApiModelProperty(value = "有无:1有0无") + public static final String WHETHER = "whether"; + + @ApiModelProperty(value = "车辆状态") + public static final String VEHICLE_STATE = "vehicleState"; + @ApiModelProperty(value = "车辆状态(车辆台账)") + public static final String VEHICLE_LEDGER_STATE = "vehicleLedgerState"; + @ApiModelProperty(value = "驱动") + public static final String DRIVER = "driver"; + @ApiModelProperty(value = "马力") + public static final String HORSEPOWER = "horsepower"; + @ApiModelProperty(value = "锁定状态") + public static final String LOCKED_STATE = "lockedState"; + @ApiModelProperty(value = "预计订金日期") + public static final String RESERVE_DEPOSIT_DATE = "reserveDepositDate"; + + + @ApiModelProperty(value = "贷款主体类型") + public static final String LOANTYPE = "loanType"; + @ApiModelProperty(value = "打包项目") + public static final String PACKAGINGPROJECT = "packagingProject"; + @ApiModelProperty(value = "融资项目(比打包项目多一个“配件”)") + public static final String PACKAGINGPROJECTFIN = "packagingProjectFin"; + @ApiModelProperty(value = "变速箱") + public static final String GEARBOX = "gearbox"; + @ApiModelProperty(value = "燃料种类") + public static final String FUELTYPE = "fuelType"; + @ApiModelProperty(value = "版本(车辆需求)") + public static final String VEHICLEVERSION = "vehicleVersion"; + @ApiModelProperty(value = "采购形式") + public static final String PURCHASINGFORM = "purchasingForm"; + /*经销商相关*/ + @ApiModelProperty(value = "经销商分类") + public static final String DISTRIBUTOR_CLASSIFICATION = "distributorClassification";//数据字典已添加 + @ApiModelProperty(value = "经销商类型") + public static final String DISTRIBUTOR_TYPE = "distributorType";//数据字典已添加 + @ApiModelProperty(value = "经销商等级") + public static final String DISTRIBUTOR_LEVEL = "distributorLevel";//数据字典已添加 + @ApiModelProperty(value = "企业性质") + public static final String ENTERPRISE_NATURE = "enterpriseNature";//数据字典已添加 + @ApiModelProperty(value = "登记状态") + public static final String REGIST_STATE = "registState"; + @ApiModelProperty(value = "注册资本单位") + public static final String REGISTEREDCAPITAL_ORG = "registeredCapitalOrg"; + @ApiModelProperty(value = "项目类型") + public static final String PROJECT_TYPE = "projectType"; + /*经销商相关结束*/ + + + @ApiModelProperty(value = "合格证情况:0001虚拟 ,002正式") + public static final String CERTIFICATE_SITUATION = "certificateSituation"; + @ApiModelProperty(value = "客户类型:1个人2企业") + public static final String CUSTOMER_TYPE = "customerType"; + @ApiModelProperty(value = "登记注册号类型") + public static final String REGIST_NUM_TYPE = "registNumType"; + @ApiModelProperty(value = "现居住状况") + public static final String CURRENT_LIVE_STATE = "currentlivestate"; + @ApiModelProperty(value = "教育程度") + public static final String EDUCATION_DEGREE = "educationdegree"; + @ApiModelProperty(value = "雇员类型") + public static final String EMPLOYEE_TYPE = "employeetype"; + @ApiModelProperty(value = "证件类型") + public static final String DOCUMENT_TYPE = "documenttype"; + @ApiModelProperty(value = "行业类别") + public static final String INDUSTRY_TYPE = "industrytype"; + @ApiModelProperty(value = "经济类型") + public static final String ECONOMIC_TYPE = "economictype"; + @ApiModelProperty(value = "组织机构类别") + public static final String ORGANIZATION_TYPE = "organizationtype"; + @ApiModelProperty(value = "组织机构类别细分") + public static final String ORGANIZATION_TYPE_DETAILS = "organizationtypedetails"; + + @ApiModelProperty(value = "是或否") + public static final String IS_TRUE = "isTrue"; + @ApiModelProperty(value = "准驾车型") + public static final String CAR_TYPE = "carType"; + + @ApiModelProperty(value = "与客户关系") + public static final String RELATION_SHIP = "relationship"; + @ApiModelProperty(value = "现工作单位性质") + public static final String ORG_NATURE = "orgNature"; + @ApiModelProperty(value = "主要收入来源") + public static final String INCOME_SOURCE = "incomeSource"; + @ApiModelProperty(value = "职位") + public static final String POSITION = "position"; + @ApiModelProperty(value = "经销商类型") + public static final String DEALERS_TYPE = "dealersType"; + @ApiModelProperty(value = "附件类型") + public static final String ATTACH_TYPE = "attachType"; + @ApiModelProperty(value = "信用记录") + public static final String CREDIT_RECORD = "creditRecord"; + @ApiModelProperty(value = "拟租赁形式l") + public static final String PLANS_TO_LEASE = "plansToLease"; + @ApiModelProperty(value = "去返程货物") + public static final String GO_GOODS = "goGoods"; + @ApiModelProperty(value = "经营业务范围") + public static final String BUSINESSSCOPE = "businessScope"; + /* 客户信息相关*/ + @ApiModelProperty(value = "客户分类") + public static final String CUSTOMER_CLASS = "customerClass"; + @ApiModelProperty(value = "客户来源") + public static final String CUSTOMER_SOURCE = "customerSource"; + @ApiModelProperty(value = "客户等级") + public static final String CUSTOMER_LEVEL = "customerLevel"; + @ApiModelProperty(value = "来访方式") + public static final String VISIT_WAY = "visitWay"; + @ApiModelProperty(value = "跟进状态") + public static final String FOLLOW_STATE = "followState"; + @ApiModelProperty(value = "提醒日期(天)") + public static final String REMIND_DAY = "remindDay"; + @ApiModelProperty(value = "承运货物类型") + public static final String CONSIGNMENT_TYPE = "consignmentType"; + @ApiModelProperty(value = "承运货物(暂为假数据)") + public static final String CONSIGNMENT = "consignment"; + @ApiModelProperty(value = "购车方式") + public static final String PURCHASETYPE = "purchaseType"; + @ApiModelProperty(value = "提车方式") + public static final String SALETYPE = "saleType"; + /* 车辆订单 */ + @ApiModelProperty(value = "单据类型") + public static final String BILLSTYPE = "billsType"; + @ApiModelProperty(value = "合同类型") + public static final String CONTRACTTYPE = "contractType"; + + @ApiModelProperty(value = "主车优惠类型") + public static final String DISCOUNTTYPE = "discountType"; + @ApiModelProperty(value = "还款方式") + public static final String MODEOFREPAY = "modeOfRePay"; + @ApiModelProperty(value = "保证金方式") + public static final String BONDMETHOD = "bondMethod"; + @ApiModelProperty(value = "业务类型") + public static final String BUSINESSTYPE = "businessType"; + @ApiModelProperty(value = "开户银行") + public static final String BANK = "bank"; + @ApiModelProperty(value = "账户类型") + public static final String ACCOUNTTYPE = "accountType"; + @ApiModelProperty(value = "运输货物") + public static final String TRANSPORTCARGO = "transportCargo"; + @ApiModelProperty(value = "结账周期") + public static final String CHECKOUTCYCLE = "checkoutCycle"; + @ApiModelProperty(value = "虚拟订单类型") + public static final String DEPOSITBILLTYPE = "depositBillType"; + @ApiModelProperty(value = "付款方式") + public static final String PAYMENTTYPE = "paymentType"; + + /* 物料相关 */ + @ApiModelProperty(value = "物料分组") + public static final String MATERIAL_GROUP = "materialGroup"; + @ApiModelProperty(value = "物料属性") + public static final String MATERIAL_PROPERTIES = "materialProperties"; + @ApiModelProperty(value = "存货类别") + public static final String STOCK_TYPE = "stockType"; + @ApiModelProperty(value = "基本单位") + public static final String BASIC_UNIT = "basicUnit"; + + /* 合同相关 */ + @ApiModelProperty(value = "人员类型") + public static final String PERSONNEL_TYPE = "personnelType"; + + /* 开票申请单相关 */ + @ApiModelProperty(value = "开票性质") + public static final String INVOICING_NATURE = "invoicingNature"; + + /*员工信息管理相关*/ + @ApiModelProperty(value = "婚姻状况") + public static final String MARITAL_STATUS = "maritalstatus"; + @ApiModelProperty(value = "民族") + public static final String NATIONAL = "national"; + @ApiModelProperty(value = "性别") + public static final String SEX = "sex"; + @ApiModelProperty(value = "政治面貌") + public static final String POLITICAL = "political"; + + + /*资料清单相关*/ + @ApiModelProperty(value = "资料类别") + public static final String DATA_TYPE = "dataType"; + @ApiModelProperty(value = "文件格式") + public static final String FILE_TYPE = "fileType"; +} diff --git a/src/main/java/com/yxt/user/utils/MsgWs.java b/src/main/java/com/yxt/user/utils/MsgWs.java new file mode 100644 index 0000000..4a55dd7 --- /dev/null +++ b/src/main/java/com/yxt/user/utils/MsgWs.java @@ -0,0 +1,52 @@ +package com.yxt.user.utils; + +import com.yxt.user.biz.sms.SmsFeign; +import org.apache.axis.client.Call; +import org.apache.axis.client.Service; +import org.apache.axis.encoding.XMLType; + +import javax.xml.namespace.QName; + +/** + * @author dimengzhe + * @date 2020/9/11 8:59 + * @description 发送短信调用接口 + */ +public class MsgWs { + public static String SendWaitWorkMsg(String mobile, String msg) { + try { + + String urlname = "http://sdk1.mb345.com/ws/LinkWS.asmx"; + String soapActionURI = "http://tempuri.org/BatchSend"; + Service s = new Service(); + Call call = (Call) s.createCall(); + call.setTimeout(new Integer(5000)); + call.setUseSOAPAction(true); + call.setSOAPActionURI(soapActionURI); + // wsdl中接口名称 + call.setOperationName(new QName("http://tempuri.org/", "BatchSend")); + call.setTargetEndpointAddress(urlname); + call.addParameter(new QName("http://tempuri.org/", "CorpID"), XMLType.XSD_STRING, + javax.xml.rpc.ParameterMode.IN); + call.addParameter(new QName("http://tempuri.org/", "Pwd"), XMLType.XSD_STRING, + javax.xml.rpc.ParameterMode.IN); + call.addParameter(new QName("http://tempuri.org/", "Mobile"), XMLType.XSD_STRING, + javax.xml.rpc.ParameterMode.IN); + call.addParameter(new QName("http://tempuri.org/", "Content"), XMLType.XSD_STRING, + javax.xml.rpc.ParameterMode.IN); + call.addParameter(new QName("http://tempuri.org/", "Cell"), XMLType.XSD_STRING, + javax.xml.rpc.ParameterMode.IN); + call.addParameter(new QName("http://tempuri.org/", "SendTime"), XMLType.XSD_STRING, + javax.xml.rpc.ParameterMode.IN); +// String[] fn01 = {"YXT010045", "yuxintonghygl", mobile, msgtitle+msg+msgSign, "", ""}; + String[] fn01 = {"YXT011852", "yxt_ar230314", mobile, msg+ SmsFeign.msgSign, "", ""}; + String val = (String) call.invoke(fn01); +// String val = "-1";//用于先去掉短信功能,不发短信 + return val; + + } catch (Exception e) { + return e.getMessage(); + + } + } +}