diff --git a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/serviceimpl/busi/SysUserServiceImpl.java b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/serviceimpl/busi/SysUserServiceImpl.java index 416a453..8f07cdf 100644 --- a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/serviceimpl/busi/SysUserServiceImpl.java +++ b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/serviceimpl/busi/SysUserServiceImpl.java @@ -1,441 +1,441 @@ -//package cn.estsh.i3plus.core.apiservice.serviceimpl.busi; -// -//import cn.estsh.i3plus.core.api.iservice.base.ISysUserService; -//import cn.estsh.i3plus.core.apiservice.dao.IUserPermissionDao; -//import cn.estsh.i3plus.pojo.base.enumutil.CommonEnumUtil; -//import cn.estsh.i3plus.pojo.base.shirotoken.AdminToken; -//import cn.estsh.i3plus.pojo.base.shirotoken.SaAdminToken; -//import cn.estsh.i3plus.pojo.base.shirotoken.UserToken; -//import cn.estsh.i3plus.pojo.model.flatform.UserModel; -//import cn.estsh.i3plus.pojo.platform.bean.*; -//import cn.estsh.i3plus.pojo.platform.repository.*; -//import cn.estsh.impp.framework.boot.auth.AuthUtil; -//import cn.estsh.impp.framework.boot.exception.ImppExceptionBuilder; -//import cn.estsh.impp.framework.boot.exception.ImppExceptionEnum; -//import org.apache.commons.lang3.StringUtils; -//import org.apache.shiro.authc.AuthenticationToken; -//import org.slf4j.Logger; -//import org.slf4j.LoggerFactory; -//import org.springframework.beans.factory.annotation.Autowired; -//import org.springframework.stereotype.Service; -// -//import java.util.ArrayList; -//import java.util.List; -// -///** -// * @Description : 平台用户业务 -// * @Reference : -// * @Author : wei.peng -// * @Date : 2018-10-25 17:45 -// * @Modify : -// **/ -//@Service -//public class SysUserServiceImpl implements ISysUserService { -// -// public static final Logger LOGGER = LoggerFactory.getLogger(SysUserServiceImpl.class); -// -// @Autowired -// private SysUserRepository sysUserRDao; -// -// @Autowired -// private SysUserInfoRepository sysUserInfoRDao; -// -// @Autowired -// private IUserPermissionDao userPermissionDao; -// -// @Autowired -// private OrganizeRepository organizeRDao; -// -// @Autowired -// private SysRoleRepository sysRoleRDao; -// -// @Autowired -// private DepartmentRepository departmentRDao; -// -// @Autowired -// private PositionRepository positionRDao; -// -// @Autowired -// private RefUserRoleRepository refUserRoleRDao; -// -// @Autowired -// private RefUserDepartmentRepository refUserDepartmentRDao; -// -// @Autowired -// private RefUserPositionRepository refUserPositionRDao; -// -// @Override -// public SessionUser queryUserLogin(String loginName, String password, String languageCode) { -// LOGGER.info("平台用户 SYS_USER loginName:{} \t password:{} \t languageCode:{}", loginName, password, languageCode); -// SysUser user = getSysUserByLoginName(loginName); -// AuthenticationToken token = null; -// -// if (user == null) { -// //用户不存在 -// throw ImppExceptionBuilder.newInstance() -// .setSystemID(CommonEnumUtil.SOFT_TYPE.IMPP.getCode()) -// .setErrorCode(ImppExceptionEnum.LOGIN_EXCEPTION.getCode()) -// .setErrorDetail("用户不存在") -// .setErrorSolution("重新登陆") -// .build(); -// } else if (!StringUtils.equals(user.getUserLoginPassword(), password)) { -// //密码不符 -// throw ImppExceptionBuilder.newInstance() -// .setSystemID(CommonEnumUtil.SOFT_TYPE.IMPP.getCode()) -// .setErrorCode(ImppExceptionEnum.LOGIN_EXCEPTION.getCode()) -// .setErrorDetail("登陆密码错误") -// .setErrorSolution("重新输入") -// .build(); -// } -// -// switch (user.getUserTypeId()) { -// case 2: -// token = new AdminToken(loginName, password, languageCode); -// break; -// case 3: -// token = new SaAdminToken(loginName, password, languageCode); -// break; -// default: -// token = new UserToken(loginName, password, languageCode); -// break; -// } -// SessionUser sessionUser = AuthUtil.login(token); -// -// user = getSysUserInfo(user); //设置用户详细信息 -// packSessionUser(sessionUser, user, user.getUserTypeId(), languageCode); -// AuthUtil.setSessionUser(sessionUser); -// return sessionUser; -// } -// -// -// @Override -// public void updateSysUserStatus(String id, int status, SessionUser user) { -// LOGGER.info("平台用户 SYS_USER id:{} status:{} modifyUser:{}", id, status, user.getUserName()); -// SysUser sysUser = sysUserRDao.getById(Long.parseLong(id)); -// sysUser.setUserStatus(status); -// sysUser.setModifyUser(user.getUserName()); -// sysUserRDao.update(sysUser); -// } -// -// @Override -// public SysUser updateSysUserModel(UserModel model, SessionUser user) { -// LOGGER.info("平台用户 SYS_USER model:{}", model); -// LOGGER.info("平台用户 SYS_USER user:{}", user); -// -// // 数据真实性校验 -// SysRole sysRole = sysRoleRDao.getById(model.getRole().id); -// checkSysRole(sysRole); -// -// Department dep = departmentRDao.getById(model.getDepartment().getId()); -// checkDepartment(dep); -// -// Position pos = positionRDao.getById(model.getPosition().getId()); -// checkPosition(pos); -// -// Organize organize = organizeRDao.getById(model.getDepartment().getOrganizeId()); -// checkOrganize(organize); -// -// SysUser sysUser = model.getUser(); -// -// //TODO UserLoginName Count -// SysUser loginUser = getSysUserByLoginName(sysUser.getUserLoginName()); -// // 判断是否修改登录名称 -// if (loginUser == null || loginUser.getId().equals(sysUser.getId())) { -// // 冗余部分信息 -// sysUser.setRedDepartmentName(dep.getDepartmentName()); -// sysUser.setRedRoleName(sysRole.getName()); -// sysUser.setRedPositionName(pos.getPositionName()); -// sysUser.setOrganizeId(organize.getId()); -// sysUser.setRedOrganizeName(organize.getRedParentName()); -// -// if (!sysUser.getUserLoginPassword().isEmpty()) { -// //TODO 密码加密 -// } -// -// // 刷新用户角色关系信息 -// refreshRefUserRole(model, sysUser); -// -// // 刷新用户部门关系信息 -// refreshRefUserDepartment(model, sysUser); -// -// // 刷新用户岗位关系信息 -// refreshRefUserPosition(model, sysUser); -// -// // 保存用户信息 -// sysUserInfoRDao.save(model.getUserInfo()); -// return sysUserRDao.save(sysUser); -// } else { -// throw ImppExceptionBuilder.newInstance() -// .setSystemID(CommonEnumUtil.SOFT_TYPE.IMPP.getCode()) -// .setErrorCode(ImppExceptionEnum.IO_EXCEPTION.getCode()) -// .setErrorDetail("用户名已存在") -// .setErrorSolution("请重新输入用户名") -// .build(); -// } -// } -// -// @Override -// public SysUser insertSysUserModel(UserModel model, SessionUser user) { -// LOGGER.info("平台用户 SYS_USER model:{}", model); -// LOGGER.info("平台用户 SYS_USER user:{}", user); -// -// SysUser sysUser = model.getUser(); -// SysUser loginUser = getSysUserByLoginName(sysUser.getUserLoginName()); -// if (null == loginUser) { -// sysUser = sysUserRDao.insert(sysUser); -// model.getUserInfo().setUserId(sysUser.getId()); -// model.setUser(sysUser); -// return updateSysUserModel(model, user); -// } else { -// throw ImppExceptionBuilder.newInstance() -// .setSystemID(CommonEnumUtil.SOFT_TYPE.IMPP.getCode()) -// .setErrorCode(ImppExceptionEnum.IO_EXCEPTION.getCode()) -// .setErrorDetail("用户名已存在") -// .setErrorSolution("请重新输入用户名") -// .build(); -// } -// } -// -// @Override -// public void deleteSysUserById(String id) { -// LOGGER.info("平台用户 SYS_USER DELETE By id :{}", id); -// sysUserRDao.updateByProperties("id", id, "isValid", CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue()); -// -// // 删除用户关系(物理删除) -// refUserRoleRDao.deleteByProperties("userId", Long.parseLong(id)); // 删除用户角色关系 -// refUserDepartmentRDao.deleteByProperties("userId", Long.parseLong(id)); //删除用户部门关系 -// refUserPositionRDao.deleteByProperties("userId", Long.parseLong(id)); //删除用户部门关系 -// } -// -// @Override -// public List findSysUserAll() { -// LOGGER.info("平台用户 SYS_USER find All"); -// return sysUserRDao.findByProperty("isValid", CommonEnumUtil.TRUE_OR_FALSE.TRUE.getValue()); -// } -// -// @Override -// public SysUser getSysUserById(String id) { -// LOGGER.info("平台用户 SYS_USER get By id :{}", id); -// return sysUserRDao.getById(Long.parseLong(id)); -// } -// -// @Override -// public SysUser getSysUserByLoginName(String loginName) { -// LOGGER.info("平台用户 SYS_USER find By Login Name :{}", loginName); -// return sysUserRDao.getByProperty(new String[]{"userLoginName", "isValid"}, -// new Object[]{loginName, CommonEnumUtil.TRUE_OR_FALSE.TRUE.getValue()}); -// } -// -// /** -// * 设置用户详细信息 -// * -// * @param user -// * @return -// */ -// @Override -// public SysUser getSysUserInfo(SysUser user) { -// LOGGER.info("平台用户 SYS_USER user id :{}", user.getId()); -// SysUserInfo userInfo = sysUserInfoRDao.getByProperty("userId", user.getId()); -// Organize organize = organizeRDao.getById(user.getOrganizeId()); -// -// List departmentList = userPermissionDao.findDepartmentByUser(user); -// List positionList = userPermissionDao.findPositionByUser(user); -// List menuList = userPermissionDao.findSysMenuByUser(user); -// List roleList = userPermissionDao.findSysRoleByUser(user); -// -// LOGGER.info("平台用户 SYS_USER userInfo :{}", userInfo); -// LOGGER.info("平台用户 SYS_USER organize :{}", organize); -// LOGGER.info("平台用户 SYS_USER departmentList size :{}", departmentList.size()); -// LOGGER.info("平台用户 SYS_USER positionList size :{}", positionList.size()); -// LOGGER.info("平台用户 SYS_USER menuList size :{}", menuList.size()); -// LOGGER.info("平台用户 SYS_USER roleList size :{}", roleList.size()); -// -// user.setUserInfo(userInfo); -// user.setOrganize(organize); -// user.setDepartmentList(departmentList); -// user.setMenuList(menuList); -// user.setPositionList(positionList); -// user.setRoleList(roleList); -// -// return user; -// } -// -// -// -// -// -// -// -// -// -// -// -// /**************************************** 公共方法封装 ****************************************/ -// -//// dealUserInfo() 用户信息封装 -// -// -// /** -// * 封装用户登陆信息 -// * -// * @param sessionUser 当前会话信息 -// * @param user 当前登录用户 -// * @param userType 用户类型 -// * @param languageCode 用户选择的语言 -// * @return -// */ -// public static SessionUser packSessionUser(SessionUser sessionUser, SysUser user, Integer userType, String languageCode) { -// sessionUser.setLanguageCode(languageCode); -// sessionUser.setUserName(user.getName()); -// sessionUser.setUserType(CommonEnumUtil.USER_TYPE.valueOf(userType)); -// sessionUser.setUserCode(user.getUserInfo().getLanguageCode()); -// sessionUser.setRoleList(user.getRoleList()); -// sessionUser.setDepartmentList(user.getDepartmentList()); -// sessionUser.setPositionList(user.getPositionList()); -// sessionUser.setOrganize(user.getOrganize()); -// return sessionUser; -// } -// -// /** -// * 刷新用户 角色关系 -// * @param model -// * @param sysUser -// */ -// private void refreshRefUserRole( UserModel model, SysUser sysUser) { -// // 用户角色操作 -// refUserRoleRDao.deleteByProperties("userId", sysUser.getId()); // 删除用户角色关系 -// if (null != model.getRoles() && model.getRoles().size() > 0) { //角色非空是操作 -// List refUserRoles = new ArrayList<>(); -// List roleNameList = new ArrayList<>(); -// RefUserRole refUserRole = null; -// -// for (SysRole role : model.getRoles()) { -// roleNameList.add(role.getName()); -// // 用户角色关系创建 -// refUserRole = new RefUserRole(sysUser.getId(), role.getId(), role.getName()); -// refUserRoles.add(refUserRole); -// } -// -// refUserRoleRDao.saveAll(refUserRoles); -// // 角色名称冗余 -// model.getUserInfo().setRedRoleNames(String.join(",",roleNameList)); -// } -// } -// -// /** -// * 刷新用户部门关系 -// * @param model -// * @param sysUser -// */ -// private void refreshRefUserDepartment(UserModel model, SysUser sysUser) { -// // 用户部门操作 -// refUserDepartmentRDao.deleteByProperties("userId", sysUser.getId()); //删除用户部门关系 -// /*if (null != model.getDepartments() && model.getDepartments().size() > 0) { -// -// List refUserDepartments = new ArrayList<>(); -// StringBuffer departmentNames = new StringBuffer(); -// RefUserDepartment refUserDepartment = null; -// -// for (Department department : model.getDepartments()) { -// departmentNames.append("," + department.getDepartmentName()); -// -// // 用户部门关系创建 -// refUserDepartment = new RefUserDepartment(sysUser.getId(), department.getId(), department.getDepartmentName()); -// refUserDepartments.add(refUserDepartment); -// } -// -// refUserDepartmentRDao.save(refUserDepartment); -// // 部门名称冗余 -// model.getUserInfo().setRedDepartmentNames(departmentNames.substring(1, departmentNames.length())); -// }*/ -// } -// -// -// /** -// * 刷新用户岗位关系 -// * @param model -// * @param sysUser -// */ -// private void refreshRefUserPosition(UserModel model, SysUser sysUser) { -// /*refUserPositionRDao.deleteByProperties("userId", sysUser.getId()); //删除用户部门关系 -// if (null != model.getPositions() && model.getPositions().size() > 0) { -// -// List refUserPositions = new ArrayList<>(); -// StringBuffer positionNames = new StringBuffer(); -// RefUserPosition refUserPosition = null; -// for (Position position : model.getPositions()) { -// positionNames.append("," + position.getPositionName()); -// -// // 用户岗位关系创建 -// refUserPosition = new RefUserPosition(sysUser.getId(), position.getId(), position.getPositionName()); -// refUserPositions.add(refUserPosition); -// } -// -// refUserPositionRDao.saveAll(refUserPositions); -// // 岗位名称冗余 -// model.getUserInfo().setRedPositionNames(positionNames.substring(1, positionNames.length())); -// }*/ -// } -// -// -// /** -// * 部门真实性校验 -// * @param department -// */ -// private void checkDepartment(Department department) { -// if (null == department) { -// throw ImppExceptionBuilder.newInstance() -// .setSystemID(CommonEnumUtil.SOFT_TYPE.IMPP.getCode()) -// .setErrorCode(ImppExceptionEnum.IO_EXCEPTION.getCode()) -// .setErrorDetail("部门不存在") -// .setErrorSolution("请重新输入部门信息") -// .build(); -// } -// } -// -// /** -// * 岗位真实性 校验 -// * @param position -// */ -// private void checkPosition(Position position) { -// if (null == position) { -// throw ImppExceptionBuilder.newInstance() -// .setSystemID(CommonEnumUtil.SOFT_TYPE.IMPP.getCode()) -// .setErrorCode(ImppExceptionEnum.IO_EXCEPTION.getCode()) -// .setErrorDetail("岗位不存在") -// .setErrorSolution("请重新输入岗位信息") -// .build(); -// } -// } -// -// /** -// * 角色真实信息校验 -// * @param sysRole -// */ -// private void checkSysRole(SysRole sysRole) { -// if (null == sysRole) { -// throw ImppExceptionBuilder.newInstance() -// .setSystemID(CommonEnumUtil.SOFT_TYPE.IMPP.getCode()) -// .setErrorCode(ImppExceptionEnum.IO_EXCEPTION.getCode()) -// .setErrorDetail("角色不存在") -// .setErrorSolution("请重新输入角色信息") -// .build(); -// } -// } -// -// /** -// * 组织真实性校验 -// * @param organize -// */ -// private void checkOrganize(Organize organize) { -// if (null == organize) { -// throw ImppExceptionBuilder.newInstance() -// .setSystemID(CommonEnumUtil.SOFT_TYPE.IMPP.getCode()) -// .setErrorCode(ImppExceptionEnum.IO_EXCEPTION.getCode()) -// .setErrorDetail("部门的组织不存在") -// .setErrorSolution("请先完善组织信息") -// .build(); -// } -// -// } -//} +package cn.estsh.i3plus.core.apiservice.serviceimpl.busi; + +import cn.estsh.i3plus.core.api.iservice.base.ISysUserService; +import cn.estsh.i3plus.core.apiservice.dao.IUserPermissionDao; +import cn.estsh.i3plus.pojo.base.enumutil.CommonEnumUtil; +import cn.estsh.i3plus.pojo.base.shirotoken.AdminToken; +import cn.estsh.i3plus.pojo.base.shirotoken.SaAdminToken; +import cn.estsh.i3plus.pojo.base.shirotoken.UserToken; +import cn.estsh.i3plus.pojo.model.flatform.UserModel; +import cn.estsh.i3plus.pojo.platform.bean.*; +import cn.estsh.i3plus.pojo.platform.repository.*; +import cn.estsh.impp.framework.boot.auth.AuthUtil; +import cn.estsh.impp.framework.boot.exception.ImppExceptionBuilder; +import cn.estsh.impp.framework.boot.exception.ImppExceptionEnum; +import org.apache.commons.lang3.StringUtils; +import org.apache.shiro.authc.AuthenticationToken; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.ArrayList; +import java.util.List; + +/** + * @Description : 平台用户业务 + * @Reference : + * @Author : wei.peng + * @Date : 2018-10-25 17:45 + * @Modify : + **/ +@Service +public class SysUserServiceImpl implements ISysUserService { + + public static final Logger LOGGER = LoggerFactory.getLogger(SysUserServiceImpl.class); + + @Autowired + private SysUserRepository sysUserRDao; + + @Autowired + private SysUserInfoRepository sysUserInfoRDao; + + @Autowired + private IUserPermissionDao userPermissionDao; + + @Autowired + private OrganizeRepository organizeRDao; + + @Autowired + private SysRoleRepository sysRoleRDao; + + @Autowired + private DepartmentRepository departmentRDao; + + @Autowired + private PositionRepository positionRDao; + + @Autowired + private RefUserRoleRepository refUserRoleRDao; + + @Autowired + private RefUserDepartmentRepository refUserDepartmentRDao; + + @Autowired + private RefUserPositionRepository refUserPositionRDao; + + @Override + public SessionUser queryUserLogin(String loginName, String password, String languageCode) { + LOGGER.info("平台用户 SYS_USER loginName:{} \t password:{} \t languageCode:{}", loginName, password, languageCode); + SysUser user = getSysUserByLoginName(loginName); + AuthenticationToken token = null; + + if (user == null) { + //用户不存在 + throw ImppExceptionBuilder.newInstance() + .setSystemID(CommonEnumUtil.SOFT_TYPE.IMPP.getCode()) + .setErrorCode(ImppExceptionEnum.LOGIN_EXCEPTION.getCode()) + .setErrorDetail("用户不存在") + .setErrorSolution("重新登陆") + .build(); + } else if (!StringUtils.equals(user.getUserLoginPassword(), password)) { + //密码不符 + throw ImppExceptionBuilder.newInstance() + .setSystemID(CommonEnumUtil.SOFT_TYPE.IMPP.getCode()) + .setErrorCode(ImppExceptionEnum.LOGIN_EXCEPTION.getCode()) + .setErrorDetail("登陆密码错误") + .setErrorSolution("重新输入") + .build(); + } + + switch (user.getUserTypeId()) { + case 2: + token = new AdminToken(loginName, password, languageCode); + break; + case 3: + token = new SaAdminToken(loginName, password, languageCode); + break; + default: + token = new UserToken(loginName, password, languageCode); + break; + } + SessionUser sessionUser = AuthUtil.login(token); + + user = getSysUserInfo(user); //设置用户详细信息 + packSessionUser(sessionUser, user, user.getUserTypeId(), languageCode); + AuthUtil.setSessionUser(sessionUser); + return sessionUser; + } + + + @Override + public void updateSysUserStatus(String id, int status, SessionUser user) { + LOGGER.info("平台用户 SYS_USER id:{} status:{} modifyUser:{}", id, status, user.getUserName()); + SysUser sysUser = sysUserRDao.getById(Long.parseLong(id)); + sysUser.setUserStatus(status); + sysUser.setModifyUser(user.getUserName()); + sysUserRDao.update(sysUser); + } + + @Override + public SysUser updateSysUserModel(UserModel model, SessionUser user) { + LOGGER.info("平台用户 SYS_USER model:{}", model); + LOGGER.info("平台用户 SYS_USER user:{}", user); + + // 数据真实性校验 + SysRole sysRole = sysRoleRDao.getById(model.getRole().id); + checkSysRole(sysRole); + + Department dep = departmentRDao.getById(model.getDepartment().getId()); + checkDepartment(dep); + + Position pos = positionRDao.getById(model.getPosition().getId()); + checkPosition(pos); + + Organize organize = organizeRDao.getById(model.getDepartment().getOrganizeId()); + checkOrganize(organize); + + SysUser sysUser = model.getUser(); + + //TODO UserLoginName Count + SysUser loginUser = getSysUserByLoginName(sysUser.getUserLoginName()); + // 判断是否修改登录名称 + if (loginUser == null || loginUser.getId().equals(sysUser.getId())) { + // 冗余部分信息 + sysUser.setRedDepartmentName(dep.getDepartmentName()); + sysUser.setRedRoleName(sysRole.getName()); + sysUser.setRedPositionName(pos.getPositionName()); + sysUser.setOrganizeId(organize.getId()); + sysUser.setRedOrganizeName(organize.getRedParentName()); + + if (!sysUser.getUserLoginPassword().isEmpty()) { + //TODO 密码加密 + } + + // 刷新用户角色关系信息 + refreshRefUserRole(model, sysUser); + + // 刷新用户部门关系信息 + refreshRefUserDepartment(model, sysUser); + + // 刷新用户岗位关系信息 + refreshRefUserPosition(model, sysUser); + + // 保存用户信息 + sysUserInfoRDao.save(model.getUserInfo()); + return sysUserRDao.save(sysUser); + } else { + throw ImppExceptionBuilder.newInstance() + .setSystemID(CommonEnumUtil.SOFT_TYPE.IMPP.getCode()) + .setErrorCode(ImppExceptionEnum.IO_EXCEPTION.getCode()) + .setErrorDetail("用户名已存在") + .setErrorSolution("请重新输入用户名") + .build(); + } + } + + @Override + public SysUser insertSysUserModel(UserModel model, SessionUser user) { + LOGGER.info("平台用户 SYS_USER model:{}", model); + LOGGER.info("平台用户 SYS_USER user:{}", user); + + SysUser sysUser = model.getUser(); + SysUser loginUser = getSysUserByLoginName(sysUser.getUserLoginName()); + if (null == loginUser) { + sysUser = sysUserRDao.insert(sysUser); + model.getUserInfo().setUserId(sysUser.getId()); + model.setUser(sysUser); + return updateSysUserModel(model, user); + } else { + throw ImppExceptionBuilder.newInstance() + .setSystemID(CommonEnumUtil.SOFT_TYPE.IMPP.getCode()) + .setErrorCode(ImppExceptionEnum.IO_EXCEPTION.getCode()) + .setErrorDetail("用户名已存在") + .setErrorSolution("请重新输入用户名") + .build(); + } + } + + @Override + public void deleteSysUserById(String id) { + LOGGER.info("平台用户 SYS_USER DELETE By id :{}", id); + sysUserRDao.updateByProperties("id", id, "isValid", CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue()); + + // 删除用户关系(物理删除) + refUserRoleRDao.deleteByProperties("userId", Long.parseLong(id)); // 删除用户角色关系 + refUserDepartmentRDao.deleteByProperties("userId", Long.parseLong(id)); //删除用户部门关系 + refUserPositionRDao.deleteByProperties("userId", Long.parseLong(id)); //删除用户部门关系 + } + + @Override + public List findSysUserAll() { + LOGGER.info("平台用户 SYS_USER find All"); + return sysUserRDao.findByProperty("isValid", CommonEnumUtil.TRUE_OR_FALSE.TRUE.getValue()); + } + + @Override + public SysUser getSysUserById(String id) { + LOGGER.info("平台用户 SYS_USER get By id :{}", id); + return sysUserRDao.getById(Long.parseLong(id)); + } + + @Override + public SysUser getSysUserByLoginName(String loginName) { + LOGGER.info("平台用户 SYS_USER find By Login Name :{}", loginName); + return sysUserRDao.getByProperty(new String[]{"userLoginName", "isValid"}, + new Object[]{loginName, CommonEnumUtil.TRUE_OR_FALSE.TRUE.getValue()}); + } + + /** + * 设置用户详细信息 + * + * @param user + * @return + */ + @Override + public SysUser getSysUserInfo(SysUser user) { + LOGGER.info("平台用户 SYS_USER user id :{}", user.getId()); + SysUserInfo userInfo = sysUserInfoRDao.getByProperty("userId", user.getId()); + Organize organize = organizeRDao.getById(user.getOrganizeId()); + + List departmentList = userPermissionDao.findDepartmentByUser(user); + List positionList = userPermissionDao.findPositionByUser(user); + List menuList = userPermissionDao.findSysMenuByUser(user); + List roleList = userPermissionDao.findSysRoleByUser(user); + + LOGGER.info("平台用户 SYS_USER userInfo :{}", userInfo); + LOGGER.info("平台用户 SYS_USER organize :{}", organize); + LOGGER.info("平台用户 SYS_USER departmentList size :{}", departmentList.size()); + LOGGER.info("平台用户 SYS_USER positionList size :{}", positionList.size()); + LOGGER.info("平台用户 SYS_USER menuList size :{}", menuList.size()); + LOGGER.info("平台用户 SYS_USER roleList size :{}", roleList.size()); + + user.setUserInfo(userInfo); + user.setOrganize(organize); + user.setDepartmentList(departmentList); + user.setMenuList(menuList); + user.setPositionList(positionList); + user.setRoleList(roleList); + + return user; + } + + + + + + + + + + + + /**************************************** 公共方法封装 ****************************************/ + +// dealUserInfo() 用户信息封装 + + + /** + * 封装用户登陆信息 + * + * @param sessionUser 当前会话信息 + * @param user 当前登录用户 + * @param userType 用户类型 + * @param languageCode 用户选择的语言 + * @return + */ + public static SessionUser packSessionUser(SessionUser sessionUser, SysUser user, Integer userType, String languageCode) { + sessionUser.setLanguageCode(languageCode); + sessionUser.setUserName(user.getName()); + sessionUser.setUserType(CommonEnumUtil.USER_TYPE.valueOf(userType)); + sessionUser.setUserCode(user.getUserInfo().getLanguageCode()); + sessionUser.setRoleList(user.getRoleList()); + sessionUser.setDepartmentList(user.getDepartmentList()); + sessionUser.setPositionList(user.getPositionList()); + sessionUser.setOrganize(user.getOrganize()); + return sessionUser; + } + + /** + * 刷新用户 角色关系 + * @param model + * @param sysUser + */ + private void refreshRefUserRole( UserModel model, SysUser sysUser) { + // 用户角色操作 + refUserRoleRDao.deleteByProperties("userId", sysUser.getId()); // 删除用户角色关系 + if (null != model.getRoles() && model.getRoles().size() > 0) { //角色非空是操作 + List refUserRoles = new ArrayList<>(); + List roleNameList = new ArrayList<>(); + RefUserRole refUserRole = null; + + for (SysRole role : model.getRoles()) { + roleNameList.add(role.getName()); + // 用户角色关系创建 + refUserRole = new RefUserRole(sysUser.getId(), role.getId(), role.getName()); + refUserRoles.add(refUserRole); + } + + refUserRoleRDao.saveAll(refUserRoles); + // 角色名称冗余 + model.getUserInfo().setRedRoleNames(String.join(",",roleNameList)); + } + } + + /** + * 刷新用户部门关系 + * @param model + * @param sysUser + */ + private void refreshRefUserDepartment(UserModel model, SysUser sysUser) { + // 用户部门操作 + refUserDepartmentRDao.deleteByProperties("userId", sysUser.getId()); //删除用户部门关系 + /*if (null != model.getDepartments() && model.getDepartments().size() > 0) { + + List refUserDepartments = new ArrayList<>(); + StringBuffer departmentNames = new StringBuffer(); + RefUserDepartment refUserDepartment = null; + + for (Department department : model.getDepartments()) { + departmentNames.append("," + department.getDepartmentName()); + + // 用户部门关系创建 + refUserDepartment = new RefUserDepartment(sysUser.getId(), department.getId(), department.getDepartmentName()); + refUserDepartments.add(refUserDepartment); + } + + refUserDepartmentRDao.save(refUserDepartment); + // 部门名称冗余 + model.getUserInfo().setRedDepartmentNames(departmentNames.substring(1, departmentNames.length())); + }*/ + } + + + /** + * 刷新用户岗位关系 + * @param model + * @param sysUser + */ + private void refreshRefUserPosition(UserModel model, SysUser sysUser) { + /*refUserPositionRDao.deleteByProperties("userId", sysUser.getId()); //删除用户部门关系 + if (null != model.getPositions() && model.getPositions().size() > 0) { + + List refUserPositions = new ArrayList<>(); + StringBuffer positionNames = new StringBuffer(); + RefUserPosition refUserPosition = null; + for (Position position : model.getPositions()) { + positionNames.append("," + position.getPositionName()); + + // 用户岗位关系创建 + refUserPosition = new RefUserPosition(sysUser.getId(), position.getId(), position.getPositionName()); + refUserPositions.add(refUserPosition); + } + + refUserPositionRDao.saveAll(refUserPositions); + // 岗位名称冗余 + model.getUserInfo().setRedPositionNames(positionNames.substring(1, positionNames.length())); + }*/ + } + + + /** + * 部门真实性校验 + * @param department + */ + private void checkDepartment(Department department) { + if (null == department) { + throw ImppExceptionBuilder.newInstance() + .setSystemID(CommonEnumUtil.SOFT_TYPE.IMPP.getCode()) + .setErrorCode(ImppExceptionEnum.IO_EXCEPTION.getCode()) + .setErrorDetail("部门不存在") + .setErrorSolution("请重新输入部门信息") + .build(); + } + } + + /** + * 岗位真实性 校验 + * @param position + */ + private void checkPosition(Position position) { + if (null == position) { + throw ImppExceptionBuilder.newInstance() + .setSystemID(CommonEnumUtil.SOFT_TYPE.IMPP.getCode()) + .setErrorCode(ImppExceptionEnum.IO_EXCEPTION.getCode()) + .setErrorDetail("岗位不存在") + .setErrorSolution("请重新输入岗位信息") + .build(); + } + } + + /** + * 角色真实信息校验 + * @param sysRole + */ + private void checkSysRole(SysRole sysRole) { + if (null == sysRole) { + throw ImppExceptionBuilder.newInstance() + .setSystemID(CommonEnumUtil.SOFT_TYPE.IMPP.getCode()) + .setErrorCode(ImppExceptionEnum.IO_EXCEPTION.getCode()) + .setErrorDetail("角色不存在") + .setErrorSolution("请重新输入角色信息") + .build(); + } + } + + /** + * 组织真实性校验 + * @param organize + */ + private void checkOrganize(Organize organize) { + if (null == organize) { + throw ImppExceptionBuilder.newInstance() + .setSystemID(CommonEnumUtil.SOFT_TYPE.IMPP.getCode()) + .setErrorCode(ImppExceptionEnum.IO_EXCEPTION.getCode()) + .setErrorDetail("部门的组织不存在") + .setErrorSolution("请先完善组织信息") + .build(); + } + + } +}