| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255 |
- package com.usky.service.sys.user;
- import com.usky.annotion.DataScope;
- import com.usky.dao.impl.BaseDaoImpl;
- import com.usky.entity.sys.SysRoleDTO;
- import com.usky.entity.sys.SysUserDTO;
- import com.usky.entity.sys.SysUserRoleDTO;
- import com.usky.entity.sys.vo.SysUserVO;
- import com.usky.utils.BeanHelp;
- import com.usky.utils.Page;
- import com.usky.utils.ShiroUtils;
- import com.usky.utils.StringUtils;
- import org.apache.commons.lang3.RandomStringUtils;
- import org.apache.shiro.crypto.hash.Md5Hash;
- import org.hibernate.query.NativeQuery;
- import org.hibernate.transform.Transformers;
- import org.springframework.stereotype.Service;
- import org.springframework.transaction.annotation.Transactional;
- import java.sql.Timestamp;
- import java.util.*;
- /**
- * @author laowo
- * @version v1.0
- * @date 2021/8/20 15:08
- * @description TODO
- **/
- @Service
- public class UserServiceImpl extends BaseDaoImpl implements UserService {
- @Override
- @Transactional
- public void addUser(SysUserVO user) {
- SysUserDTO sysUserDTO = BeanHelp.copyProperties(user, SysUserDTO.class);
- String password = sysUserDTO.getPassword();
- String salt = RandomStringUtils.randomNumeric(6, 8);
- sysUserDTO.setSalt(salt);
- Md5Hash md5Hash = new Md5Hash(password, salt); //模拟md5加密一次
- sysUserDTO.setPassword(md5Hash.toString());
- sysUserDTO.setStatus("0");
- //用户类型
- sysUserDTO.setUserType("01");
- sysUserDTO.setDelFlag("0");
- sysUserDTO.setCreateBy(ShiroUtils.getLoginName());
- sysUserDTO.setCreateTime(new Timestamp(System.currentTimeMillis()));
- getSession().save(sysUserDTO);
- insertUserRole(sysUserDTO.getUserId(), user.getRoleIds());
- }
- /**
- * @param userId
- * @param roleIds
- */
- public void insertUserRole(Integer userId, String roleIds) {
- if (StringUtils.isNotNull(roleIds)) {
- // 新增用户与角色管理
- String[] split = roleIds.split(",");
- for (String roleId : split) {
- SysUserRoleDTO ur = new SysUserRoleDTO();
- ur.setUserId(userId);
- ur.setRoleId(Integer.valueOf(roleId));
- getSession().save(ur);
- getSession().flush();
- getSession().clear();
- }
- }
- }
- @Override
- @SuppressWarnings("all")
- public Set<String> queryRoleKeys(long userId) {
- String sql = "SELECT DISTINCT\n" +
- "\tr.role_id AS roleId,\n" +
- "\tr.role_name AS roleName,\n" +
- "\tr.role_key AS roleKey,\n" +
- "\tr.role_sort AS roleSort,\n" +
- "\tr.data_scope AS dataScope,\n" +
- "\tr.STATUS AS `status`,\n" +
- "\tr.del_flag AS delFlag,\n" +
- "\tr.create_time AS createTime,\n" +
- "\tr.remark \n" +
- "FROM\n" +
- "\tsys_role r\n" +
- "\tLEFT JOIN sys_user_role ur ON ur.role_id = r.role_id\n" +
- "\tLEFT JOIN sys_user u ON u.user_id = ur.user_id\n" +
- "\tLEFT JOIN sys_dept d ON u.dept_id = d.dept_id WHERE r.del_flag = '0' and ur.user_id = " + userId + "";
- List<SysRoleDTO> perms = getSession().createSQLQuery(sql)
- .setResultTransformer(Transformers.aliasToBean(SysRoleDTO.class)).list();
- Set<String> permsSet = new HashSet<>();
- for (SysRoleDTO perm : perms) {
- if (perm != null) {
- permsSet.addAll(Arrays.asList(perm.getRoleKey().trim().split(",")));
- }
- }
- return permsSet;
- }
- @Override
- @DataScope(deptAlias = "d", userAlias = "u")
- public Page<SysUserVO> list(SysUserVO sysUserVO, Integer status, String loginName, String phonenumber, String startTime, String endTime, Integer deptId, Integer pageSize, Integer pageNo) {
- Map<String, Object> params = sysUserVO.getParams();
- String dataScope = (String) params.get("dataScope");
- StringBuilder sb = new StringBuilder();
- sb.append("select u.user_id as userId, u.dept_id as deptId, u.login_name as loginName, u.user_name as userName, u.user_type as userType, u.email, u.avatar, u.phonenumber, u.sex, u.status, u.del_flag as delFlag, u.login_ip as loginIp, u.login_date as loginDate, u.create_by as createBy, u.create_time as createTime, u.remark, d.dept_name as deptName, d.leader from sys_user u left join sys_dept d on u.dept_id = d.dept_id where u.del_flag = '0'");
- if (null != status && status != 0) {
- sb.append(" AND u.status = " + status + "");
- }
- if (StringUtils.isNotBlank(loginName)) {
- sb.append("AND u.login_name like '%" + loginName + "%'");
- }
- if (StringUtils.isNotBlank(phonenumber)) {
- sb.append(" AND u.phonenumber like '%" + phonenumber + "%'");
- }
- if (StringUtils.isNotBlank(startTime)) {
- sb.append(" AND u.create_time >= " + startTime + "");
- }
- if (StringUtils.isNotBlank(endTime)) {
- sb.append(" AND u.create_time <= " + endTime + "");
- }
- if (null != deptId && deptId != 0) {
- sb.append("AND (u.dept_id = " + deptId + " OR u.dept_id IN ( SELECT t.dept_id FROM sys_dept t WHERE FIND_IN_SET (" + deptId + ",ancestors) ))");
- }
- if (StringUtils.isNotBlank(dataScope)) {
- sb.append(" ").append(dataScope);
- }
- List list = getSession().createSQLQuery(sb.toString()).list();
- Page<SysUserVO> result = new Page<>(list.size(), pageSize);
- NativeQuery sqlQuery = getSession().createSQLQuery(sb.toString());
- sqlQuery.setFirstResult((pageNo - 1) * pageSize);
- sqlQuery.setMaxResults(pageSize);
- List<SysUserVO> sysUserVOList = sqlQuery.setResultTransformer(Transformers.aliasToBean(SysUserVO.class)).list();
- result.setPageList(sysUserVOList);
- result.setPageNo(pageNo);
- return result;
- }
- @Override
- @DataScope(deptAlias = "d", userAlias = "u")
- public List<SysUserVO> listAll(SysUserVO sysUserVO, Integer status, String loginName, String phonenumber, String startTime, String endTime, Integer deptId) {
- Map<String, Object> params = sysUserVO.getParams();
- String dataScope = (String) params.get("dataScope");
- StringBuilder sb = new StringBuilder();
- sb.append("select u.user_id as userId, u.dept_id as deptId, u.login_name as loginName, u.user_name as userName, u.user_type as userType, u.email, u.avatar, u.phonenumber, u.sex, u.status, u.del_flag as delFlag, u.login_ip as loginIp, u.login_date as loginDate, u.create_by as createBy, u.create_time as createTime, u.remark, d.dept_name as deptName, d.leader from sys_user u left join sys_dept d on u.dept_id = d.dept_id where u.del_flag = '0'");
- if (null != status && status != 0) {
- sb.append(" AND u.status = " + status + "");
- }
- if (StringUtils.isNotBlank(loginName)) {
- sb.append("AND u.login_name like '%" + loginName + "%'");
- }
- if (StringUtils.isNotBlank(phonenumber)) {
- sb.append(" AND u.phonenumber like '%" + phonenumber + "%'");
- }
- if (StringUtils.isNotBlank(startTime)) {
- sb.append(" AND u.create_time >= " + startTime + "");
- }
- if (StringUtils.isNotBlank(endTime)) {
- sb.append(" AND u.create_time <= " + endTime + "");
- }
- if (null != deptId && deptId != 0) {
- sb.append("AND (u.dept_id = " + deptId + " OR u.dept_id IN ( SELECT t.dept_id FROM sys_dept t WHERE FIND_IN_SET (" + deptId + ",ancestors) ))");
- }
- if (StringUtils.isNotBlank(dataScope)) {
- sb.append(" ").append(dataScope);
- }
- List<SysUserVO> list = getSession().createSQLQuery(sb.toString()).setResultTransformer(Transformers.aliasToBean(SysUserVO.class)).list();
- return list;
- }
- @Override
- public List<SysUserDTO> queryUserByPhone(String phonenumber) {
- List<SysUserDTO> list = getSession().createQuery("from SysUserDTO t where t.delFlag='0' and t.phonenumber='" + phonenumber + "'").list();
- return list;
- }
- @Override
- @Transactional
- public void updateUser(SysUserVO user) {
- //删除角色关联
- delUserRolerByUserId(user.getUserId());
- //新增用户角色关联
- insertUserRole(user.getUserId(), user.getRoleIds());
- SysUserDTO o = (SysUserDTO) getSession().createQuery("from SysUserDTO t where t.userId=" + user.getUserId() + "").uniqueResult();
- if (org.apache.commons.lang3.StringUtils.isNotBlank(user.getStatus())) {
- o.setStatus(user.getStatus());
- }
- if (org.apache.commons.lang3.StringUtils.isNotBlank(user.getDelFlag())) {
- o.setDelFlag(user.getDelFlag());
- }
- if (org.apache.commons.lang3.StringUtils.isNotBlank(user.getPhonenumber())) {
- o.setPhonenumber(user.getPhonenumber());
- }
- if (org.apache.commons.lang3.StringUtils.isNotBlank(user.getUserName())) {
- o.setUserName(user.getUserName());
- }
- if (0 != user.getDeptId()) {
- o.setDeptId(user.getDeptId());
- }
- if (org.apache.commons.lang3.StringUtils.isNotBlank(user.getRemark())) {
- o.setRemark(user.getRemark());
- }
- getSession().update(o);
- }
- @Override
- public List<SysUserRoleDTO> queryUserByRoleId(Integer roleId) {
- return (List<SysUserRoleDTO>) getSession().createQuery("from SysUserRoleDTO t where t.roleId=" + roleId + "").list();
- }
- /**
- * 角色删除
- *
- * @param roleId
- */
- @Override
- public void remove(Integer roleId) {
- getSession().createSQLQuery("delete from sys_role where role_id=" + roleId + "").executeUpdate();
- }
- @Override
- public List<SysUserDTO> queryuserByDepID(Integer deptId) {
- return (List<SysUserDTO>) getSession().createQuery("from SysUserDTO t where t.deptId=" + deptId + " and delFlag='0'").list();
- }
- @Override
- public void reSetPW(String password, Integer userId) {
- SysUserDTO user = (SysUserDTO) getSession().createQuery("from SysUserDTO t where t.userId=" + userId + "").uniqueResult();
- String salt = RandomStringUtils.randomNumeric(6, 8);
- user.setSalt(salt);
- user.setPassword(new Md5Hash(password, salt).toString());
- user.setUpdateBy(ShiroUtils.getLoginName());
- user.setUpdateTime(new Timestamp(System.currentTimeMillis()));
- getSession().saveOrUpdate(user);
- }
- @Override
- public SysUserVO queryuserByLoginName(String loginName) {
- SysUserDTO user = (SysUserDTO) getSession().createQuery("from SysUserDTO t where t.loginName='" + loginName + "' and t.delFlag='0'").uniqueResult();
- return BeanHelp.copyProperties(user, SysUserVO.class);
- }
- public void delUserRolerByUserId(Integer userId) {
- getSession().createSQLQuery("delete from sys_user_role where user_id=" + userId + "").executeUpdate();
- }
- }
|