|
@@ -14,6 +14,9 @@ import com.qmth.sop.business.cache.CommonCacheService;
|
|
import com.qmth.sop.business.entity.*;
|
|
import com.qmth.sop.business.entity.*;
|
|
import com.qmth.sop.business.mapper.SysUserMapper;
|
|
import com.qmth.sop.business.mapper.SysUserMapper;
|
|
import com.qmth.sop.business.service.*;
|
|
import com.qmth.sop.business.service.*;
|
|
|
|
+import com.qmth.sop.business.sync.RtzfApiUtils;
|
|
|
|
+import com.qmth.sop.business.sync.been.rtzf.RtzfResult;
|
|
|
|
+import com.qmth.sop.business.sync.been.rtzf.RtzfUserInfo;
|
|
import com.qmth.sop.business.util.AuthUtil;
|
|
import com.qmth.sop.business.util.AuthUtil;
|
|
import com.qmth.sop.common.contant.SpringContextHolder;
|
|
import com.qmth.sop.common.contant.SpringContextHolder;
|
|
import com.qmth.sop.common.contant.SystemConstant;
|
|
import com.qmth.sop.common.contant.SystemConstant;
|
|
@@ -58,6 +61,9 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
|
|
@Resource
|
|
@Resource
|
|
TBUserArchivesService tbUserArchivesService;
|
|
TBUserArchivesService tbUserArchivesService;
|
|
|
|
|
|
|
|
+ @Resource
|
|
|
|
+ RtzfApiUtils rtzfApiUtils;
|
|
|
|
+
|
|
@Override
|
|
@Override
|
|
public LoginResult login(String password, SysUser sysUser, AppSourceEnum appSource) throws NoSuchAlgorithmException {
|
|
public LoginResult login(String password, SysUser sysUser, AppSourceEnum appSource) throws NoSuchAlgorithmException {
|
|
//停用
|
|
//停用
|
|
@@ -68,7 +74,7 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
|
|
String deviceId = ServletUtil.getRequestDeviceId();
|
|
String deviceId = ServletUtil.getRequestDeviceId();
|
|
//添加用户鉴权缓存
|
|
//添加用户鉴权缓存
|
|
AuthBean authBean = commonCacheService.userAuthCache(sysUser.getId());
|
|
AuthBean authBean = commonCacheService.userAuthCache(sysUser.getId());
|
|
- Optional.ofNullable(authBean).orElseThrow(() -> ExceptionResultEnum.ROLE_ENABLE_AUTHORIZATION.exception());
|
|
|
|
|
|
+ Optional.ofNullable(authBean).orElseThrow(ExceptionResultEnum.ROLE_ENABLE_AUTHORIZATION::exception);
|
|
|
|
|
|
List<SysRole> sysRoleList = authBean.getRoleList().stream().filter(s -> s.getType() == RoleTypeEnum.EFFECT_ENGINEER || s.getType() == RoleTypeEnum.ASSISTANT_ENGINEER).collect(Collectors.toList());
|
|
List<SysRole> sysRoleList = authBean.getRoleList().stream().filter(s -> s.getType() == RoleTypeEnum.EFFECT_ENGINEER || s.getType() == RoleTypeEnum.ASSISTANT_ENGINEER).collect(Collectors.toList());
|
|
if (appSource == AppSourceEnum.WX_APP && CollectionUtils.isEmpty(sysRoleList)) {
|
|
if (appSource == AppSourceEnum.WX_APP && CollectionUtils.isEmpty(sysRoleList)) {
|
|
@@ -95,7 +101,7 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
|
|
tbSessionService.saveOrUpdate(tbSession);
|
|
tbSessionService.saveOrUpdate(tbSession);
|
|
commonCacheService.setUserSession(sessionId, tbSession);
|
|
commonCacheService.setUserSession(sessionId, tbSession);
|
|
|
|
|
|
- LoginResult loginResult = new LoginResult(sysUser, sessionId, token, Objects.nonNull(roleTypes) && roleTypes.size() > 0 ? roleTypes : roleNamesSet, appSource, SystemConstant.VERSION_VALUE);
|
|
|
|
|
|
+ LoginResult loginResult = new LoginResult(sysUser, sessionId, token, roleTypes.size() > 0 ? roleTypes : roleNamesSet, appSource, SystemConstant.VERSION_VALUE);
|
|
// 添加档案信息
|
|
// 添加档案信息
|
|
if (UserSourceEnum.ARCHIVES.equals(sysUser.getSource())) {
|
|
if (UserSourceEnum.ARCHIVES.equals(sysUser.getSource())) {
|
|
TBUserArchives tbUserArchives = tbUserArchivesService.findByUserId(sysUser.getId());
|
|
TBUserArchives tbUserArchives = tbUserArchivesService.findByUserId(sysUser.getId());
|
|
@@ -116,7 +122,7 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
|
|
@Override
|
|
@Override
|
|
public Boolean removeUserInfo(Long userId, boolean all) throws NoSuchAlgorithmException {
|
|
public Boolean removeUserInfo(Long userId, boolean all) throws NoSuchAlgorithmException {
|
|
AuthBean authBean = commonCacheService.userAuthCache(userId);
|
|
AuthBean authBean = commonCacheService.userAuthCache(userId);
|
|
- Optional.ofNullable(authBean).orElseThrow(() -> ExceptionResultEnum.NOT_LOGIN.exception());
|
|
|
|
|
|
+ Optional.ofNullable(authBean).orElseThrow(ExceptionResultEnum.NOT_LOGIN::exception);
|
|
if (all) {
|
|
if (all) {
|
|
for (Platform p : Platform.values()) {
|
|
for (Platform p : Platform.values()) {
|
|
Set<String> roleNamesSet = authBean.getRoleList().stream().map(s -> s.getName()).collect(Collectors.toSet());
|
|
Set<String> roleNamesSet = authBean.getRoleList().stream().map(s -> s.getName()).collect(Collectors.toSet());
|
|
@@ -314,17 +320,18 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
|
|
if (Objects.isNull(sysUser.getId())) {//新增用户
|
|
if (Objects.isNull(sysUser.getId())) {//新增用户
|
|
sysUser.insertInfo(requestUser.getId());
|
|
sysUser.insertInfo(requestUser.getId());
|
|
sysUser.setPasswordInfo(sysUser.getMobileNumber());
|
|
sysUser.setPasswordInfo(sysUser.getMobileNumber());
|
|
|
|
+ sysUser.setRtzfSyncStatus(RtzfSyncStatusEnum.NEED_SYNC);
|
|
sysUserService.save(sysUser);
|
|
sysUserService.save(sysUser);
|
|
sysUserRoleService.addUserRolePrivilege(sysUser, sysUser.getRoleIds());
|
|
sysUserRoleService.addUserRolePrivilege(sysUser, sysUser.getRoleIds());
|
|
} else {//修改用户
|
|
} else {//修改用户
|
|
SysUser dbUser = this.getById(sysUser.getId());
|
|
SysUser dbUser = this.getById(sysUser.getId());
|
|
- Optional.ofNullable(dbUser).orElseThrow(() -> ExceptionResultEnum.USER_NO_EXISTS.exception());
|
|
|
|
-
|
|
|
|
|
|
+ Optional.ofNullable(dbUser).orElseThrow(ExceptionResultEnum.USER_NO_EXISTS::exception);
|
|
List<SysUserRole> sysUserRoleList = commonCacheService.userRolePrivilegeCache(sysUser.getId());
|
|
List<SysUserRole> sysUserRoleList = commonCacheService.userRolePrivilegeCache(sysUser.getId());
|
|
List<Long> userRolesList = Arrays.asList(sysUser.getRoleIds());
|
|
List<Long> userRolesList = Arrays.asList(sysUser.getRoleIds());
|
|
Set<Long> dbUserRolesList = sysUserRoleList.stream().map(SysUserRole::getRoleId).collect(Collectors.toSet());
|
|
Set<Long> dbUserRolesList = sysUserRoleList.stream().map(SysUserRole::getRoleId).collect(Collectors.toSet());
|
|
int count = (int) dbUserRolesList.stream().filter(s -> !userRolesList.contains(s)).count();
|
|
int count = (int) dbUserRolesList.stream().filter(s -> !userRolesList.contains(s)).count();
|
|
- sysUserService.update(new UpdateWrapper<SysUser>().lambda()
|
|
|
|
|
|
+ UpdateWrapper<SysUser> userUpdateWrapper = new UpdateWrapper<>();
|
|
|
|
+ userUpdateWrapper.lambda()
|
|
.eq(SysUser::getId, sysUser.getId())
|
|
.eq(SysUser::getId, sysUser.getId())
|
|
.set(SysUser::getLoginName, sysUser.getLoginName())
|
|
.set(SysUser::getLoginName, sysUser.getLoginName())
|
|
.set(SysUser::getRealName, sysUser.getRealName())
|
|
.set(SysUser::getRealName, sysUser.getRealName())
|
|
@@ -333,8 +340,15 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
|
|
.set(SysUser::getGender, sysUser.getGender())
|
|
.set(SysUser::getGender, sysUser.getGender())
|
|
.set(SysUser::getOrgId, sysUser.getOrgId())
|
|
.set(SysUser::getOrgId, sysUser.getOrgId())
|
|
.set(SysUser::getUpdateId, requestUser.getId())
|
|
.set(SysUser::getUpdateId, requestUser.getId())
|
|
- .set(SysUser::getUpdateTime, System.currentTimeMillis())
|
|
|
|
- );
|
|
|
|
|
|
+ .set(SysUser::getUpdateTime, System.currentTimeMillis());
|
|
|
|
+
|
|
|
|
+ RtzfSyncStatusEnum rtzfSyncStatus = dbUser.getRtzfSyncStatus();
|
|
|
|
+ if (RtzfSyncStatusEnum.ALREADY_SYNC.equals(rtzfSyncStatus)) {
|
|
|
|
+ dbUser.setRtzfSyncStatus(RtzfSyncStatusEnum.NEED_UPDATE);
|
|
|
|
+ userUpdateWrapper.lambda().set(SysUser::getRtzfSyncStatus, RtzfSyncStatusEnum.NEED_UPDATE);
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ sysUserService.update(userUpdateWrapper);
|
|
//如果修改了角色,需要重新登录
|
|
//如果修改了角色,需要重新登录
|
|
if (count > 0 || dbUserRolesList.size() != userRolesList.size()) {
|
|
if (count > 0 || dbUserRolesList.size() != userRolesList.size()) {
|
|
QueryWrapper<SysUserRole> sysUserRoleQueryWrapper = new QueryWrapper<>();
|
|
QueryWrapper<SysUserRole> sysUserRoleQueryWrapper = new QueryWrapper<>();
|
|
@@ -387,13 +401,21 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
|
|
Optional.ofNullable(sysUser.getEnable()).orElseThrow(() -> ExceptionResultEnum.ERROR.exception("启用/禁用不能为空"));
|
|
Optional.ofNullable(sysUser.getEnable()).orElseThrow(() -> ExceptionResultEnum.ERROR.exception("启用/禁用不能为空"));
|
|
|
|
|
|
SysUser sysUserDb = this.getById(sysUser.getId());
|
|
SysUser sysUserDb = this.getById(sysUser.getId());
|
|
- Optional.ofNullable(sysUserDb).orElseThrow(() -> ExceptionResultEnum.USER_NO_EXISTS.exception());
|
|
|
|
|
|
+ Optional.ofNullable(sysUserDb).orElseThrow(ExceptionResultEnum.USER_NO_EXISTS::exception);
|
|
|
|
|
|
SysUser requestUser = (SysUser) ServletUtil.getRequestUser();
|
|
SysUser requestUser = (SysUser) ServletUtil.getRequestUser();
|
|
- boolean success = this.update(new UpdateWrapper<SysUser>().lambda().set(SysUser::getEnable, sysUser.getEnable())
|
|
|
|
|
|
+ UpdateWrapper<SysUser> userUpdateWrapper = new UpdateWrapper<>();
|
|
|
|
+ userUpdateWrapper.lambda().set(SysUser::getEnable, sysUser.getEnable())
|
|
.eq(SysUser::getId, sysUser.getId())
|
|
.eq(SysUser::getId, sysUser.getId())
|
|
.set(SysUser::getUpdateId, requestUser.getId())
|
|
.set(SysUser::getUpdateId, requestUser.getId())
|
|
- .set(SysUser::getUpdateTime, System.currentTimeMillis()));
|
|
|
|
|
|
+ .set(SysUser::getUpdateTime, System.currentTimeMillis());
|
|
|
|
+
|
|
|
|
+ RtzfSyncStatusEnum rtzfSyncStatus = sysUserDb.getRtzfSyncStatus();
|
|
|
|
+ if (RtzfSyncStatusEnum.ALREADY_SYNC.equals(rtzfSyncStatus)) {
|
|
|
|
+ userUpdateWrapper.lambda().set(SysUser::getRtzfSyncStatus, RtzfSyncStatusEnum.NEED_UPDATE);
|
|
|
|
+ }
|
|
|
|
+ boolean success = this.update(userUpdateWrapper);
|
|
|
|
+
|
|
if (success) {
|
|
if (success) {
|
|
commonCacheService.updateUserCache(sysUser.getId());
|
|
commonCacheService.updateUserCache(sysUser.getId());
|
|
//如果状态为禁用,需要踢下线重新登录
|
|
//如果状态为禁用,需要踢下线重新登录
|
|
@@ -435,13 +457,21 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
|
|
Optional.ofNullable(sysUser.getNewPassword()).orElseThrow(() -> ExceptionResultEnum.ERROR.exception("新密码不能为空"));
|
|
Optional.ofNullable(sysUser.getNewPassword()).orElseThrow(() -> ExceptionResultEnum.ERROR.exception("新密码不能为空"));
|
|
|
|
|
|
SysUser sysUserDb = this.getById(sysUser.getId());
|
|
SysUser sysUserDb = this.getById(sysUser.getId());
|
|
- Optional.ofNullable(sysUserDb).orElseThrow(() -> ExceptionResultEnum.USER_NO_EXISTS.exception());
|
|
|
|
|
|
+ Optional.ofNullable(sysUserDb).orElseThrow(ExceptionResultEnum.USER_NO_EXISTS::exception);
|
|
|
|
|
|
SysUser requestUser = (SysUser) ServletUtil.getRequestUser();
|
|
SysUser requestUser = (SysUser) ServletUtil.getRequestUser();
|
|
- boolean success = this.update(new UpdateWrapper<SysUser>().lambda().set(SysUser::getPassword, sysUser.getNewPassword())
|
|
|
|
|
|
+ UpdateWrapper<SysUser> updateWrapper = new UpdateWrapper<>();
|
|
|
|
+ updateWrapper.lambda().set(SysUser::getPassword, sysUser.getNewPassword())
|
|
.eq(SysUser::getId, sysUser.getId())
|
|
.eq(SysUser::getId, sysUser.getId())
|
|
.set(SysUser::getUpdateId, requestUser.getId())
|
|
.set(SysUser::getUpdateId, requestUser.getId())
|
|
- .set(SysUser::getUpdateTime, System.currentTimeMillis()));
|
|
|
|
|
|
+ .set(SysUser::getUpdateTime, System.currentTimeMillis());
|
|
|
|
+
|
|
|
|
+ RtzfSyncStatusEnum rtzfSyncStatus = sysUserDb.getRtzfSyncStatus();
|
|
|
|
+ if (RtzfSyncStatusEnum.ALREADY_SYNC.equals(rtzfSyncStatus)) {
|
|
|
|
+ updateWrapper.lambda().set(SysUser::getRtzfSyncStatus, RtzfSyncStatusEnum.NEED_UPDATE);
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ boolean success = this.update(updateWrapper);
|
|
if (success) {
|
|
if (success) {
|
|
commonCacheService.updateUserCache(sysUser.getId());
|
|
commonCacheService.updateUserCache(sysUser.getId());
|
|
//修改密码后,需要踢下线重新登录
|
|
//修改密码后,需要踢下线重新登录
|
|
@@ -464,6 +494,10 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
|
|
Optional.ofNullable(sysUser.getId()).orElseThrow(() -> ExceptionResultEnum.ERROR.exception("id不能为空"));
|
|
Optional.ofNullable(sysUser.getId()).orElseThrow(() -> ExceptionResultEnum.ERROR.exception("id不能为空"));
|
|
|
|
|
|
SysUser sysUserDb = this.getById(sysUser.getId());
|
|
SysUser sysUserDb = this.getById(sysUser.getId());
|
|
|
|
+ RtzfSyncStatusEnum rtzfSyncStatus = sysUserDb.getRtzfSyncStatus();
|
|
|
|
+ if (RtzfSyncStatusEnum.ALREADY_SYNC.equals(rtzfSyncStatus)) {
|
|
|
|
+ sysUserDb.setRtzfSyncStatus(RtzfSyncStatusEnum.NEED_UPDATE);
|
|
|
|
+ }
|
|
Optional.ofNullable(sysUserDb).orElseThrow(() -> ExceptionResultEnum.USER_NO_EXISTS.exception());
|
|
Optional.ofNullable(sysUserDb).orElseThrow(() -> ExceptionResultEnum.USER_NO_EXISTS.exception());
|
|
|
|
|
|
SysUser requestUser = (SysUser) ServletUtil.getRequestUser();
|
|
SysUser requestUser = (SysUser) ServletUtil.getRequestUser();
|
|
@@ -548,4 +582,63 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
|
|
public List<OrgUserNameDto> findOrgUserName(List<Long> userIds) {
|
|
public List<OrgUserNameDto> findOrgUserName(List<Long> userIds) {
|
|
return this.baseMapper.findOrgUserName(userIds);
|
|
return this.baseMapper.findOrgUserName(userIds);
|
|
}
|
|
}
|
|
|
|
+
|
|
|
|
+ @Override
|
|
|
|
+ public String findUserCompanyName(Long userId) {
|
|
|
|
+ String companyName = "";
|
|
|
|
+ SysUser sysUser = this.getById(userId);
|
|
|
|
+ UserSourceEnum userSource = sysUser.getSource();
|
|
|
|
+ switch (userSource) {
|
|
|
|
+ case SYSTEM:
|
|
|
|
+ companyName = "启明泰和";
|
|
|
|
+ break;
|
|
|
|
+ case ARCHIVES:
|
|
|
|
+ UserArchivesResult userArchivesResult = tbUserArchivesService.findUserArchivesByArchivesIdORUserId(null, userId);
|
|
|
|
+ if (Objects.nonNull(userArchivesResult)) {
|
|
|
|
+ companyName = userArchivesResult.getSupplierName();
|
|
|
|
+ }
|
|
|
|
+ break;
|
|
|
|
+ }
|
|
|
|
+ return companyName;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ @Transactional
|
|
|
|
+ @Override
|
|
|
|
+ public RtzfResult rtzfUpdateUser(SysUser requestUser, SysUser willUpdateUser) {
|
|
|
|
+ Long id = willUpdateUser.getId();
|
|
|
|
+ RtzfUserInfo rtzfUserInfo = new RtzfUserInfo();
|
|
|
|
+ rtzfUserInfo.setUserName(String.valueOf(id));
|
|
|
|
+ rtzfUserInfo.setRealName(willUpdateUser.getRealName());
|
|
|
|
+
|
|
|
|
+ String companyName = this.findUserCompanyName(id);
|
|
|
|
+ if (companyName != null && companyName.length() > 0) {
|
|
|
|
+ rtzfUserInfo.setCompanyName(companyName);
|
|
|
|
+ }
|
|
|
|
+ rtzfUserInfo.setPhoneNo(willUpdateUser.getMobileNumber());
|
|
|
|
+ // TODO: 2023/11/27 密码要解密再加密
|
|
|
|
+ String password = willUpdateUser.getPassword();
|
|
|
|
+ rtzfUserInfo.setPassword(password);
|
|
|
|
+ rtzfUserInfo.setVerifyPassword(password);
|
|
|
|
+ GenderEnum gender = willUpdateUser.getGender();
|
|
|
|
+ rtzfUserInfo.setSex(GenderEnum.MAN.equals(gender) ? 1 : 0);
|
|
|
|
+ rtzfUserInfo.setWorkNo(String.valueOf(id));
|
|
|
|
+ rtzfUserInfo.setState(0);
|
|
|
|
+
|
|
|
|
+ // 0 为启用,1 为禁用
|
|
|
|
+ Boolean enable = willUpdateUser.getEnable();
|
|
|
|
+ rtzfUserInfo.setWorkState(enable ? 0 : 1);
|
|
|
|
+ List<Long> roleIdList = sysRoleService.listRolesByUserId(id)
|
|
|
|
+ .stream()
|
|
|
|
+ .map(RoleDto::getId)
|
|
|
|
+ .collect(Collectors.toList());
|
|
|
|
+ if (org.apache.commons.collections4.CollectionUtils.isNotEmpty(roleIdList)) {
|
|
|
|
+ rtzfUserInfo.setRoleIds(roleIdList);
|
|
|
|
+ }
|
|
|
|
+ RtzfResult rtzfResult = rtzfApiUtils.updateUser(requestUser, rtzfUserInfo);
|
|
|
|
+ if (Objects.nonNull(rtzfResult) && "0".equals(rtzfResult.getCode())) {
|
|
|
|
+ willUpdateUser.setRtzfSyncStatus(RtzfSyncStatusEnum.ALREADY_SYNC);
|
|
|
|
+ this.updateById(willUpdateUser);
|
|
|
|
+ }
|
|
|
|
+ return rtzfResult;
|
|
|
|
+ }
|
|
}
|
|
}
|