You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
145 lines
4.1 KiB
145 lines
4.1 KiB
package com.xmomen.module.account.service;
|
|
|
|
import com.xmomen.module.account.mapper.UserMapper;
|
|
import com.xmomen.module.account.web.controller.vo.GroupPermissionRelation;
|
|
import com.xmomen.module.account.web.controller.vo.UserGroupRelation;
|
|
import com.xmomen.module.user.entity.SysRoles;
|
|
import com.xmomen.module.user.entity.SysRolesExample;
|
|
import com.xmomen.module.user.entity.SysRolesPermissions;
|
|
import com.xmomen.module.user.entity.SysRolesPermissionsExample;
|
|
import com.xmomen.framework.mybatis.page.Page;
|
|
import org.apache.commons.lang.StringUtils;
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
|
import com.xmomen.framework.mybatis.dao.MybatisDao;
|
|
import org.springframework.stereotype.Service;
|
|
import org.springframework.transaction.annotation.Transactional;
|
|
|
|
import java.util.Arrays;
|
|
import java.util.HashMap;
|
|
import java.util.List;
|
|
import java.util.Map;
|
|
|
|
/**
|
|
* <p>User: Zhang Kaitao
|
|
* <p>Date: 14-1-28
|
|
* <p>Version: 1.0
|
|
*/
|
|
@Service
|
|
public class RoleServiceImpl implements RoleService {
|
|
|
|
@Autowired
|
|
private MybatisDao mybatisDao;
|
|
|
|
@Autowired
|
|
UserService userService;
|
|
|
|
/**
|
|
* 根据角色ID查询用户
|
|
*
|
|
* @param roleId
|
|
* @param pageSize
|
|
* @param pageNum
|
|
* @return
|
|
*/
|
|
@Override
|
|
public Page<UserGroupRelation> findUsersByRoles(String roleId, boolean chose, Integer pageSize, Integer pageNum) {
|
|
Map map = new HashMap();
|
|
map.put("id" , roleId);
|
|
map.put("chose" , chose);
|
|
return (Page<UserGroupRelation>) mybatisDao.selectPage(UserMapper.UserMapperNameSpace + "findUsersByRolesId", map, pageSize, pageNum);
|
|
}
|
|
|
|
@Override
|
|
public Page<SysRoles> findRoles(String keyValue, Integer pageSize, Integer pageNum) {
|
|
SysRolesExample sysRolesExample = new SysRolesExample();
|
|
if(StringUtils.isNotBlank(keyValue)){
|
|
sysRolesExample.createCriteria()
|
|
.andRoleLike(keyValue);
|
|
sysRolesExample.or().andDescriptionLike(keyValue);
|
|
}
|
|
return mybatisDao.selectPageByExample(sysRolesExample, pageSize, pageNum);
|
|
}
|
|
|
|
/**
|
|
* 获取角色
|
|
*
|
|
* @param roleId
|
|
*/
|
|
@Override
|
|
public SysRoles getRole(Integer roleId) {
|
|
return mybatisDao.selectByPrimaryKey(SysRoles.class, roleId);
|
|
}
|
|
|
|
/**
|
|
* 更新角色
|
|
*
|
|
* @param sysRoles
|
|
*/
|
|
@Override
|
|
public void updateRole(SysRoles sysRoles) {
|
|
mybatisDao.update(sysRoles);
|
|
}
|
|
|
|
/**
|
|
* 更新用户组信息并添加用户
|
|
*
|
|
* @param sysRoles
|
|
* @param userIdList
|
|
*/
|
|
@Override
|
|
@Transactional
|
|
public void updateRole(SysRoles sysRoles, List<Integer> userIdList) {
|
|
mybatisDao.update(sysRoles);
|
|
for (Integer userId : userIdList) {
|
|
userService.correlationRoles(userId, sysRoles.getId());
|
|
}
|
|
}
|
|
|
|
|
|
public SysRoles createRole(SysRoles role) {
|
|
role = mybatisDao.saveByModel(role);
|
|
return role;
|
|
}
|
|
|
|
public void deleteRole(Integer roleId) {
|
|
mybatisDao.deleteByPrimaryKey(SysRoles.class, roleId);
|
|
}
|
|
|
|
@Override
|
|
public Page<GroupPermissionRelation> findPermissionByRoles(String roleId, boolean chose, Integer pageSize, Integer pageNum) {
|
|
Map map = new HashMap();
|
|
map.put("id" , roleId);
|
|
map.put("chose" , chose);
|
|
return (Page<GroupPermissionRelation>) mybatisDao.selectPage(UserMapper.UserMapperNameSpace + "findPermissionByRole", map, pageSize, pageNum);
|
|
}
|
|
|
|
/**
|
|
* 添加角色-权限之间关系
|
|
* @param roleId
|
|
* @param permissionIds
|
|
*/
|
|
public void correlationPermissions(Integer roleId, Integer... permissionIds) {
|
|
for(Integer permissionId : permissionIds){
|
|
SysRolesPermissions sysRolesPermissionsKey = new SysRolesPermissions();
|
|
sysRolesPermissionsKey.setPermissionId(permissionId);
|
|
sysRolesPermissionsKey.setRoleId(roleId);
|
|
mybatisDao.save(sysRolesPermissionsKey);
|
|
}
|
|
}
|
|
|
|
/**
|
|
* 移除角色-权限之间关系
|
|
* @param roleId
|
|
* @param permissionIds
|
|
*/
|
|
public void unCorrelationPermissions(Integer roleId, Integer... permissionIds) {
|
|
SysRolesPermissionsExample sysRolesPermissionsExample = new SysRolesPermissionsExample();
|
|
sysRolesPermissionsExample.createCriteria()
|
|
.andRoleIdEqualTo(roleId)
|
|
.andPermissionIdIn(Arrays.asList(permissionIds));
|
|
mybatisDao.deleteByExample(sysRolesPermissionsExample);
|
|
}
|
|
|
|
}
|