package com.matrix.system.common.service.impl;
|
|
import com.matrix.core.constance.MatrixConstance;
|
import com.matrix.core.constance.SystemErrorCode;
|
import com.matrix.core.exception.GlobleException;
|
import com.matrix.core.pojo.PaginationVO;
|
import com.matrix.core.tools.ModelUtils;
|
import com.matrix.core.tools.StringUtils;
|
import com.matrix.core.tools.WebUtil;
|
import com.matrix.system.common.bean.*;
|
import com.matrix.system.common.dao.SysRoleDao;
|
import com.matrix.system.common.dao.SysRolePwoerFnDao;
|
import com.matrix.system.common.service.SysRoleService;
|
import org.apache.commons.collections.CollectionUtils;
|
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.stereotype.Service;
|
|
import java.util.ArrayList;
|
import java.util.List;
|
import java.util.Map;
|
|
/**
|
* 角色管理功能
|
* @author JIANGYOUYAO
|
* @email 935090232@qq.com
|
* @date Dec 11, 2017
|
*/
|
@Service
|
public class SysRoleServiceImpl implements SysRoleService {
|
|
@Autowired
|
private SysRoleDao sysRoleDao;
|
@Autowired
|
private SysRolePwoerFnDao rolePwoerDao;
|
|
@Override
|
public int add(SysRole sysRole) {
|
SysUsers user = WebUtil.getSessionAttribute(MatrixConstance.LOGIN_KEY);
|
sysRole.setCompanyId(user.getCompanyId());
|
sysRole.setCreateBy(user.getSuAccount());
|
sysRole.setUpdateBy(user.getSuAccount());
|
sysRole.setIsDefault(SysRole.NOT_DEFAULT);
|
// 新增角色对应的中间表
|
int i = sysRoleDao.insert(sysRole);
|
addRolePwoer(sysRole);
|
return i;
|
|
}
|
|
/**
|
* 新增角色的权限,添加前清空已有的权限
|
*
|
* @param sysRole
|
*/
|
private void addRolePwoer(SysRole sysRole) {
|
SysRolePwoerFn sysRolePwoerFn = new SysRolePwoerFn();
|
sysRolePwoerFn.setRoleId(sysRole.getRoleId());
|
rolePwoerDao.deleteByModel(sysRolePwoerFn);
|
List<SysFunction> fnList = sysRole.getFnList();
|
List<SysRolePwoerFn> rolePwoer = new ArrayList<>();
|
if (fnList != null) {
|
for (SysFunction sysFunction : fnList) {
|
// 如果为空则不在进行添加
|
if (sysFunction == null || sysFunction.getFnId() == null) {
|
continue;
|
}
|
SysRolePwoerFn temp = new SysRolePwoerFn();
|
temp.setFnId(sysFunction.getFnId());
|
temp.setRoleId(sysRole.getRoleId());
|
temp.setCreateBy(sysRole.getCreateBy());
|
temp.setUpdateBy(sysRole.getUpdateBy());
|
temp.setRpfBtns(getBtns(sysFunction.getSysFnBtnRel()));
|
rolePwoer.add(temp);
|
}
|
}
|
if (CollectionUtils.isNotEmpty(rolePwoer)) {
|
rolePwoerDao.batchInsert(rolePwoer);
|
}
|
}
|
|
/**
|
* 获取功能按钮的字符串值
|
*
|
* @author JIANGYOUYAO
|
* @email 935090232@qq.com
|
* @date 2017年12月6日
|
* @param sysFunction
|
* @return
|
*/
|
private String getBtns(List<SysFnBtnRel> fnBtnRelList) {
|
StringBuilder btns = new StringBuilder();
|
if (CollectionUtils.isNotEmpty(fnBtnRelList)) {
|
for (SysFnBtnRel fnBtnRel : fnBtnRelList) {
|
if (fnBtnRel != null && StringUtils.isNotBlank(fnBtnRel.getBtnValue())) {
|
btns.append(fnBtnRel.getBtnValue() + ",");
|
}
|
}
|
}
|
return btns.toString().substring(0, btns.toString().length());
|
}
|
|
@Override
|
public int batchAdd(List<SysRole> sysRoleList) {
|
return sysRoleDao.batchInsert(sysRoleList);
|
}
|
|
@Override
|
public int modifyByMap(SysRole oldSysRole, SysRole newSysRole) {
|
// 这样写只能保证基本信息不被覆盖
|
SysUsers user = WebUtil.getSessionAttribute(MatrixConstance.LOGIN_KEY);
|
newSysRole.setCompanyId(user.getCompanyId());
|
newSysRole.setCreateBy(user.getSuName());
|
newSysRole.setUpdateBy(user.getSuName());
|
addRolePwoer(newSysRole);
|
Map<String, Object> modifyMap = null;
|
try {
|
if (!ModelUtils.isModified(oldSysRole, newSysRole)) {
|
return MatrixConstance.DML_SUCCESSS;
|
}
|
modifyMap = ModelUtils.comparePojo2Map(oldSysRole, newSysRole);
|
} catch (Exception e) {
|
throw new GlobleException(SystemErrorCode.DATA_UPDATE_FAIL, e, newSysRole.getRoleName());
|
}
|
if (modifyMap.size() > 0) {
|
modifyMap.put("roleId", oldSysRole.getRoleId());
|
return sysRoleDao.updateByMap(modifyMap);
|
}
|
return MatrixConstance.DML_SUCCESSS;
|
}
|
|
@Override
|
public int modifyByModel(SysRole sysRole) {
|
return sysRoleDao.updateByModel(sysRole);
|
}
|
|
@Override
|
public int remove(List<String> list) {
|
|
return sysRoleDao.deleteByIds(list);
|
|
}
|
|
@Override
|
public int removeById(String roleId) {
|
|
return sysRoleDao.deleteById(Long.valueOf(roleId));
|
|
}
|
|
@Override
|
public int removeByModel(SysRole sysRole) {
|
|
return sysRoleDao.deleteByModel(sysRole);
|
|
}
|
|
@Override
|
public List<SysRole> findInPage(SysRole sysRole, PaginationVO pageVo) {
|
|
return sysRoleDao.selectInPage(sysRole, pageVo);
|
|
}
|
|
@Override
|
public List<SysRole> findByModel(SysRole sysRole) {
|
|
return sysRoleDao.selectByModel(sysRole);
|
|
}
|
|
@Override
|
public int findTotal(SysRole sysRole) {
|
|
return sysRoleDao.selectTotalRecord(sysRole);
|
|
}
|
|
@Override
|
public SysRole findById(String roleId) {
|
|
return sysRoleDao.selectById(Long.valueOf(roleId));
|
|
}
|
|
}
|