123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113 |
- package com.usky.service.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.vo.SysUserVO;
- import com.usky.utils.Page;
- import org.apache.commons.lang3.RandomStringUtils;
- import org.apache.commons.lang3.StringUtils;
- import org.apache.shiro.crypto.hash.Md5Hash;
- import org.hibernate.query.NativeQuery;
- import org.hibernate.transform.Transformers;
- import org.springframework.stereotype.Service;
- 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
- public void addUser(SysUserDTO user) {
- String password = user.getPassword();
- String salt = RandomStringUtils.randomNumeric(6, 8);
- user.setSalt(salt);
- Md5Hash md5Hash = new Md5Hash(password, salt); //模拟md5加密一次
- user.setPassword(md5Hash.toString());
- user.setStatus("0");
- user.setCreateTime(new Timestamp(System.currentTimeMillis()));
- getSession().save(user);
- }
- @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;
- }
- }
|