123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208 |
- package com.usky.service.sys;
- import com.sun.org.apache.xpath.internal.operations.Gte;
- import com.usky.annotion.DataScope;
- import com.usky.dao.impl.BaseDaoImpl;
- import com.usky.entity.BaseEntity;
- import com.usky.entity.sys.SysDeptDTO;
- import com.usky.entity.sys.SysRoleDTO;
- import com.usky.entity.sys.SysRoleDeptDTO;
- import com.usky.entity.sys.SysRoleMenuDTO;
- import com.usky.entity.sys.vo.SysDeptVO;
- import com.usky.entity.sys.vo.SysRoleVO;
- import com.usky.utils.BeanHelp;
- import com.usky.utils.Page;
- import com.usky.utils.ShiroUtils;
- import io.swagger.models.auth.In;
- import org.apache.commons.lang3.StringUtils;
- 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.ArrayList;
- import java.util.List;
- /**
- * @author laowo
- * @version v1.0
- * @date 2021/8/27 15:30
- * @description TODO
- **/
- @Service
- public class RoleServiceImpl extends BaseDaoImpl implements RoleService {
- @Override
- @DataScope(deptAlias = "d")
- public Page<SysRoleVO> list(SysDeptVO sysDeptVO, String roleName, String status, String startTime, String endTime, Integer pageSize, Integer pageNo) {
- String dataScope = (String) sysDeptVO.getParams().get("dataScope");
- StringBuilder sb = new StringBuilder();
- sb.append("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' ");
- if (StringUtils.isNotBlank(status)) {
- sb.append(" and r.status = '" + startTime + "'");
- }
- if (StringUtils.isNotBlank(roleName)) {
- sb.append(" and r.role_name like '%" + roleName + "%'");
- }
- if (StringUtils.isNotBlank(startTime)) {
- sb.append(" and r.create_time >='" + startTime + "'");
- }
- if (StringUtils.isNotBlank(endTime)) {
- sb.append(" and r.create_time <='" + endTime + "'");
- }
- if (StringUtils.isNotBlank(dataScope)) {
- sb.append(dataScope);
- }
- List totalCount = getSession().createSQLQuery(sb.toString()).list();
- Page<SysRoleVO> result = new Page<>(totalCount.size(), pageSize);
- NativeQuery query = getSession().createSQLQuery(sb.toString());
- query.setFirstResult((pageNo - 1) * pageSize);
- query.setMaxResults(pageSize);
- List<SysRoleVO> list = query.setResultTransformer(Transformers.aliasToBean(SysRoleVO.class)).list();
- result.setPageList(list);
- return result;
- }
- @Override
- @DataScope(deptAlias = "d")
- public List<SysRoleVO> querRoleList(SysRoleVO sysRoleVO) {
- String dataScope = (String) sysRoleVO.getParams().get("dataScope");
- StringBuilder sb = new StringBuilder();
- sb.append("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'");
- if (StringUtils.isNotBlank(dataScope)) {
- sb.append(dataScope);
- }
- return (List<SysRoleVO>) getSession().createSQLQuery(sb.toString()).setResultTransformer(Transformers.aliasToBean(SysRoleVO.class)).list();
- }
- @Override
- public SysRoleDTO queryRoleByName(SysRoleVO role) {
- return (SysRoleDTO) getSession().createQuery("from SysRoleDTO t where t.roleName='" + role.getRoleName() + "'").uniqueResult();
- }
- @Override
- public SysRoleDTO queryRoleByKey(SysRoleVO role) {
- return (SysRoleDTO) getSession().createQuery("from SysRoleDTO t where t.roleKey='" + role.getRoleKey() + "'").uniqueResult();
- }
- @Override
- @Transactional
- public void addRole(SysRoleVO roleVO) {
- SysRoleDTO roleDTO = BeanHelp.copyProperties(roleVO, SysRoleDTO.class);
- roleDTO.setCreateBy(ShiroUtils.getLoginName());
- roleDTO.setCreateTime(new Timestamp(System.currentTimeMillis()));
- getSession().save(roleDTO);
- Integer roleId = roleDTO.getRoleId();
- insertRoleMenu(roleVO, roleId);
- roleVO.setRoleId(roleId);
- insertRoleDept(roleVO);
- }
- /**
- * 角色修改
- *
- * @param roleVO
- */
- @Override
- @Transactional
- public void edit(SysRoleVO roleVO) {
- SysRoleDTO roleDTO = (SysRoleDTO) getSession().createQuery("from SysRoleDTO t where t.roleId=" + roleVO.getRoleId() + "").uniqueResult();
- if (StringUtils.isNotBlank(roleVO.getRoleKey())) {
- roleDTO.setRoleKey(roleVO.getRoleKey());
- }
- if (StringUtils.isNotBlank(roleVO.getRemark())) {
- roleDTO.setRemark(roleVO.getRemark());
- }
- if (StringUtils.isNotBlank(roleVO.getRoleName())) {
- roleDTO.setRoleKey(roleVO.getRoleKey());
- }
- if (StringUtils.isNotBlank(roleVO.getStatus())) {
- roleDTO.setStatus(roleVO.getStatus());
- }
- roleDTO.setRoleSort(roleVO.getRoleSort());
- roleDTO.setUpdateBy(ShiroUtils.getLoginName());
- roleDTO.setUpdateTime(new Timestamp(System.currentTimeMillis()));
- getSession().saveOrUpdate(roleDTO);
- delRoleMenuByRoleId(roleVO.getRoleId());
- insertRoleMenu(roleVO, roleVO.getRoleId());
- //删除角色和部门关联
- delRoleDept(roleVO.getRoleId());
- insertRoleDept(roleVO);
- }
- /**
- * 删除角色菜单关联
- *
- * @param roleId
- */
- public void delRoleMenuByRoleId(Integer roleId) {
- getSession().createSQLQuery("delete from sys_role_menu where role_id=" + roleId + "").executeUpdate();
- }
- public void insertRoleMenu(SysRoleVO role, Integer roleId) {
- if (null != role.getMenuIds() && role.getMenuIds().length != 0) {
- List<SysRoleMenuDTO> list = new ArrayList<SysRoleMenuDTO>();
- for (Integer menuId : role.getMenuIds()) {
- SysRoleMenuDTO rm = new SysRoleMenuDTO();
- rm.setRoleId(roleId);
- rm.setMenuId(menuId);
- getSession().save(rm);
- getSession().flush();
- getSession().clear();
- }
- }
- }
- public void insertRoleDept(SysRoleVO role) {
- // 新增角色与部门(数据权限)管理
- if (null != role.getMenuIds() && role.getMenuIds().length != 0) {
- for (Integer deptId : role.getDeptIds()) {
- SysRoleDeptDTO rd = new SysRoleDeptDTO();
- rd.setRoleId(role.getRoleId());
- rd.setDeptId(deptId);
- getSession().save(rd);
- getSession().flush();
- getSession().clear();
- }
- }
- }
- public void delRoleDept(Integer roleId) {
- getSession().createSQLQuery("delete from sys_role_dept where role_id=" + roleId + "").executeUpdate();
- }
- }
|