123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167 |
- package com.caimei.service.sys.impl;
- import com.caimei.mapper.cmMapper.SystemMapper;
- import com.caimei.model.ResponseJson;
- import com.caimei.model.po.SysRole;
- import com.caimei.service.sys.SysRoleService;
- import com.caimei.utils.CommonUtil;
- import com.github.pagehelper.PageHelper;
- import com.github.pagehelper.PageInfo;
- import lombok.extern.slf4j.Slf4j;
- import org.springframework.stereotype.Service;
- import org.springframework.transaction.annotation.Transactional;
- import org.springframework.util.StringUtils;
- import javax.annotation.Resource;
- import java.util.List;
- /**
- * Description
- *
- * @author : Charles
- * @date : 2022/1/6
- */
- @Slf4j
- @Service
- public class SysRoleServiceImpl implements SysRoleService {
- @Resource
- private SystemMapper systemMapper;
- /**
- * 获取角色列表
- *
- * @param pageNum 页码
- * @param pageSize 每页大小
- */
- @Override
- public ResponseJson<PageInfo<SysRole>> getRoleList(int pageNum, int pageSize) {
- PageHelper.startPage(pageNum, pageSize);
- List<SysRole> roles = systemMapper.getRoleList();
- PageInfo<SysRole> pageData = new PageInfo<>(roles);
- return ResponseJson.success(pageData);
- }
- /**
- * 根据ID获取角色
- */
- @Override
- public ResponseJson<SysRole> getRoleInfo(Integer id) {
- SysRole sysRole = getRole(id);
- if (null != sysRole) {
- // 根据角色ID获取菜单Ids
- List<Integer> menuIdList = systemMapper.getMenuIdsByRoleId(id);
- String menuIds = CommonUtil.idListToString(menuIdList, ",");
- // 根据角色ID获取(权限-菜单)Ids
- List<String> permissionIdList = systemMapper.getPermissionMenuIdsByRoleId(id);
- StringBuilder ids = new StringBuilder(menuIds);
- for (String permissionId : permissionIdList) {
- ids.append(",").append(permissionId);
- }
- sysRole.setMenuIds(ids.toString());
- }
- return ResponseJson.success(sysRole);
- }
- private SysRole getRole(Integer id) {
- return systemMapper.getRole(id);
- }
- /**
- * 根据ID更新角色
- */
- @Transactional(rollbackFor=Exception.class)
- @Override
- public ResponseJson<Void> updateRole(Integer id, SysRole sysRole) {
- sysRole.setId(id);
- sysRole.setDelFlag(0);
- // 菜单Ids,用","隔开
- String menuIds = sysRole.getMenuIds();
- if (1 == id) {
- sysRole.setRoleName("shop_base_role");
- sysRole.setRoleDesc("供应商基础功能角色");
- }
- systemMapper.updateRole(sysRole);
- // 保存角色菜单关系
- saveRoleMenuRelation(sysRole.getId(), menuIds);
- return ResponseJson.success();
- }
- /**
- * 添加角色
- */
- @Transactional(rollbackFor=Exception.class)
- @Override
- public ResponseJson<Void> addRole(SysRole sysRole) {
- if (StringUtils.hasLength(sysRole.getRoleName())) {
- // 查询是否存在当前角色
- SysRole dbRole = systemMapper.getRoleByRoleName(sysRole.getRoleName());
- if (null == dbRole) {
- String menuIds = sysRole.getMenuIds();
- // 保存角色
- sysRole.setRoleType(null == sysRole.getRoleType() ? 1 : sysRole.getRoleType());
- systemMapper.insertRole(sysRole);
- // 保存角色菜单关系
- saveRoleMenuRelation(sysRole.getId(), menuIds);
- return ResponseJson.success();
- }else {
- return ResponseJson.error("角色名已存在", null);
- }
- }
- return ResponseJson.error("角色名称不能为空", null);
- }
- /**
- * 根据ID删除角色
- */
- @Transactional(rollbackFor=Exception.class)
- @Override
- public ResponseJson<Void> deleteRole(Integer id) {
- // 删除角色菜单关联
- systemMapper.deleteRoleMenuRelation(id);
- // 删除原有角色权限关联
- systemMapper.deleteRolePermissionRelation(id);
- // 删除角色
- systemMapper.deleteRole(id);
- return ResponseJson.success();
- }
- /**
- * 角色授权菜单
- */
- @Override
- public ResponseJson<Void> setRoleMenu(Integer id, SysRole sysRole) {
- // 删除原有角色菜单关联
- systemMapper.deleteRoleMenuRelation(id);
- // 保存角色菜单关系
- String menuIds = sysRole.getMenuIds();
- saveRoleMenuRelation(id, menuIds);
- return ResponseJson.success();
- }
- /**
- * 保存角色菜单关系
- */
- private void saveRoleMenuRelation(Integer roleId, String menuIds) {
- // 删除原有角色菜单关联
- systemMapper.deleteRoleMenuRelation(roleId);
- // 删除原有角色权限关联
- systemMapper.deleteRolePermissionRelation(roleId);
- if (StringUtils.hasLength(menuIds)) {
- // 设置角色菜单
- String[] split = menuIds.split(",");
- for (String s : split) {
- if (StringUtils.hasLength(s)) {
- if (s.contains("-")) {
- // 保存角色权限关系
- String[] ids = s.split("-");
- systemMapper.insertRolePermissionRelation(roleId, Integer.valueOf(ids[0]));
- } else {
- // 保存角色菜单关系
- systemMapper.insertRoleMenuRelation(roleId, Integer.valueOf(s));
- }
- }
- }
- }
- }
- }
|