package com.dy.pmsBase.role;
|
|
import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
|
import com.dy.common.webUtil.QueryResultVo;
|
import com.dy.pmsGlobal.daoBa.BaPrivilegeMapper;
|
import com.dy.pmsGlobal.daoBa.BaRoleMapper;
|
import com.dy.pmsGlobal.daoBa.BaRolePrivilegeMapper;
|
import com.dy.pmsGlobal.pojoBa.BaRole;
|
import com.dy.pmsGlobal.pojoBa.BaRolePrivilege;
|
import lombok.extern.slf4j.Slf4j;
|
import org.apache.dubbo.common.utils.PojoUtils;
|
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.stereotype.Service;
|
import org.springframework.transaction.annotation.Transactional;
|
|
import java.util.List;
|
import java.util.Map;
|
|
@Slf4j
|
@Service
|
public class RoleSv {
|
|
private BaRoleMapper dao;
|
private BaRolePrivilegeMapper rpDao;
|
private BaPrivilegeMapper priDao;
|
|
@Autowired
|
public RoleSv(BaRoleMapper dao, BaRolePrivilegeMapper rpDao,BaPrivilegeMapper priDao) {
|
this.dao = dao;
|
this.rpDao = rpDao;
|
this.priDao = priDao;
|
}
|
|
@Transactional
|
public int save(BaRole role) {
|
int count = dao.insert(role);
|
// 添加角色权限
|
updateRolePrivileges(role.id,role.priIds);
|
return count;
|
}
|
|
/**
|
* 逻辑删除实体
|
* @param id 实体ID
|
* @return 影响记录数量
|
*/
|
@Transactional
|
public int delete(Long id) {
|
return this.dao.deleteLogicById(id);
|
}
|
|
/**
|
* 禁用或启用角色信息
|
* @param id
|
* @param disabled
|
* @return
|
*/
|
@Transactional
|
public int disabled(Long id,Boolean disabled) {
|
BaRole role=new BaRole();
|
role.id=id;
|
role.disabled=disabled;
|
return dao.updateByPrimaryKeySelective(role);
|
}
|
|
@Transactional
|
public int update(BaRole role) {
|
int count = dao.updateByPrimaryKeySelective(role);
|
// 更新角色权限
|
updateRolePrivileges(role.id,role.priIds);
|
return count;
|
}
|
|
/**
|
* 添加或更新角色权限
|
* @param roleId 角色ID
|
* @param priIds 权限id
|
* @return
|
*/
|
private void updateRolePrivileges(Long roleId,List<Long> priIds) {
|
if(CollectionUtils.isEmpty(priIds)){
|
return;
|
}
|
// 删除角色权限
|
rpDao.deleteByRoleId(roleId);
|
priIds.stream().forEach(rp -> {
|
if(priDao.selectByPrimaryKey(rp.longValue()) != null){
|
rpDao.insert(new BaRolePrivilege(roleId, rp.longValue()));
|
}
|
});
|
}
|
|
public BaRole selectById(String roleId) {
|
return dao.selectByPrimaryKey(Long.valueOf(roleId));
|
}
|
|
public List<BaRole> selectAll() {
|
return dao.selectAll();
|
}
|
|
/**
|
* 获取角色列表
|
*/
|
public QueryResultVo<List<BaRole>> selectSome(QueryVo queryVo) {
|
Map<String, Object> params = (Map<String, Object>) PojoUtils.generalize(queryVo);
|
|
//查询符合条件的记录总数
|
Long itemTotal = this.dao.selectSomeCount(params);
|
|
QueryResultVo<List<BaRole>> rsVo = new QueryResultVo<>(queryVo.pageSize, queryVo.pageCurr) ;
|
//计算分页等信息
|
rsVo.calculateAndSet(itemTotal, params);
|
|
//查询符合条件的记录
|
rsVo.obj = this.dao.selectSome(params) ;
|
return rsVo ;
|
}
|
|
}
|