package com.dy.pipIrrBase.role; import com.alibaba.fastjson2.JSONArray; import com.dy.common.webUtil.QueryResultVo; import com.dy.pipIrrGlobal.daoBa.BaRoleMapper; import com.dy.pipIrrGlobal.daoBa.BaRolePermissionsMapper; import com.dy.pipIrrGlobal.pojoBa.BaRole; import com.dy.pipIrrGlobal.pojoBa.BaRolePermissions; import com.dy.pipIrrGlobal.voBa.VoRole; 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 java.util.ArrayList; import java.util.List; import java.util.Map; import java.util.Optional; /** * @author ZhuBaoMin * @date 2024-01-10 11:00 * @LastEditTime 2024-01-10 11:00 * @Description */ @Slf4j @Service public class RoleSv { //private BaRoleMapper baRoleMapper; //private BaRolePrivilegeMapper rolePrivDao ; //@Autowired //private void setDao(BaRoleMapper dao){ // this.dao = dao; //} //@Autowired //private void setRolePrivDao(BaRolePrivilegeMapper dao){ // this.rolePrivDao = dao; //} @Autowired private BaRoleMapper baRoleMapper; @Autowired private BaRolePermissionsMapper baRolePermissionsMapper; /** * 根据指定条件(角色编号、角色名称)获取角色列表 * 当获取一条记录时,传入roleId即可 * @param queryVo * @return */ public QueryResultVo> getRoles(QueryVo queryVo) { Map params = (Map) PojoUtils.generalize(queryVo); Long itemTotal = baRolePermissionsMapper.getRecordCount(params); QueryResultVo> rsVo = new QueryResultVo<>() ; //Integer pageCurr = 0; //Integer pageSize = 10000; //rsVo.pageCurr = 1; //rsVo.pageSize = 10000; //if(queryVo.pageSize != null && queryVo.pageCurr != null) { // rsVo.pageSize = queryVo.pageSize ; // rsVo.pageCurr = queryVo.pageCurr; // pageSize = queryVo.pageSize ; // pageCurr = (Integer.parseInt(params.get("pageCurr").toString()) - 1) * Integer.parseInt(params.get("pageSize").toString()); //} //params.put("pageCurr", pageCurr); //params.put("pageSize", pageSize); rsVo.pageSize = queryVo.pageSize ; rsVo.pageCurr = queryVo.pageCurr ; rsVo.calculateAndSet(itemTotal, params); //rsVo.obj = baRoleMapper.getRoles(params); /** * 获取角色列表,把汗角色权限ID * 遍历角色列表并取出角色对象中的perId * 根据perId获取权限对象,并将对象添加到角色对象中 */ List list_Roles = Optional.ofNullable(baRolePermissionsMapper.getRoles(params)).orElse(new ArrayList<>()); if(list_Roles.size() > 0) { for(int i = 0; i < list_Roles.size(); i++) { VoRole voRole = list_Roles.get(i); Long perId = voRole.getPerId(); BaRolePermissions baRolePermissions = baRolePermissionsMapper.selectByPrimaryKey(perId); JSONArray array_permission = JSONArray.parseArray("[]"); if(baRolePermissions != null) { array_permission = baRolePermissions.getPermissions(); } voRole.setPermissions(array_permission); } } rsVo.obj = list_Roles; return rsVo ; } public BaRolePermissions getRolePermissionsById(Long id) { return baRolePermissionsMapper.selectByPrimaryKey(id); } /** * 得到所有角色 * @return 所有角色集合 */ //public QueryResultVo> selectAll(){ // QueryResultVo> rsVo = new QueryResultVo<>() ; // rsVo.obj = this.dao.selectAll() ; // return rsVo ; //} /** * 得到一个角色 * @param id 角色ID * @return 角色实体 */ //public BaRole selectById(Long id){ // return this.dao.selectById(id) ; //} /** * 得到一个用户 //* @param vo 查询条件值对象 * @return 用户实体 */ @SuppressWarnings("unchecked") //public QueryResultVo> selectSome(QueryVo vo){ // Map params = (Map) PojoUtils.generalize(vo) ; // Long itemTotal = this.dao.selectTotal(params) ; // // QueryResultVo> rsVo = new QueryResultVo<>() ; // rsVo.pageSize = vo.pageSize ; // rsVo.pageCurr = vo.pageCurr ; // rsVo.calculateAndSet(itemTotal, params); // rsVo.obj = this.dao.selectSome(params) ; // // return rsVo ; //} /** * 添加角色 * @param po 角色实体 * @return 角色ID */ public Long addRole(BaRole po){ baRoleMapper.insert(po); return po.getId(); } /** * 根据角色名称查询记录数量,添加角色前判断是否重名 * @param roleName 角色名称 * @return 符合条件记录数 */ public Integer getRecordCountByName(String roleName) { return baRoleMapper.getRecordCountByName(roleName); } /** * 修改角色 * @param record * @return */ public int updateRole(BaRole record) { return baRoleMapper.updateByPrimaryKeySelective(record); } /** * 根据roleId逻辑删除角色对象 * @param roleId 角色编号 * @return */ public Integer deleteRoleById(Long roleId) { return baRoleMapper.deleteRoleById(roleId); } /** * 设置角色权限 * @param roleId 角色id * @param priviIds 选择的权限id集合 * @return 插入角色与权限关联记录数量 */ //public int setRoles(Long roleId, Long[] priviIds){ // this.rolePrivDao.deleteByRoleId(roleId) ; // int count = 0 ; // if(priviIds != null && priviIds.length > 0){ // for(Long privId : priviIds){ // count += this.rolePrivDao.insertSelective(new BaRolePrivilege(roleId, privId)) ; // } // } // return count ; //} /** * 保存修改实体 * @param id 实体ID * @return 影响记录数量 */ //@Transactional //public int delete(Long id){ // //int count = this.dao.deleteLogicById(id) ; // //逻辑删除,所以不实际删除其关联的权限 // //if(count > 0){ // // this.rolePrivDao.deleteByRoleId(id) ; // //} // //return count ; // return this.dao.deleteLogicById(id) ; //} /** * 添加授权记录 * @Auth 朱宝民 * @param po * @return */ public Integer addPermissions(BaRolePermissions po) { return baRolePermissionsMapper.insert(po); } /** * 依据角色编号删除授权记录 * @Auth 朱宝民 * @param roleid * @return */ public Integer delPermissionsByRoleId(Long roleid) { return baRolePermissionsMapper.delPermissionsByRoleId(roleid); } }