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.

156 lines
3.9 KiB

package com.example.demo.serviceImpl;
import com.example.demo.domain.entity.Role;
import com.example.demo.domain.vo.ConsumeUser;
import com.example.demo.domain.vo.MenuVo;
import com.example.demo.domain.vo.Result;
import com.example.demo.domain.vo.RoleVo;
import com.example.demo.mapper.RefundMapper;
import com.example.demo.mapper.RoleMapper;
import com.example.demo.service.MenuService;
import com.example.demo.service.RoleService;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.List;
/**
* @program: gold-java
* @ClassName RoleServiceImpl
* @description:
* @author: Double
* @create: 2025−07-15 11:30
* @Version 1.0
**/
@Service
public class RoleServiceImpl implements RoleService {
@Autowired
private RoleMapper roleMapper;
@Autowired
private MenuService menuService;
//新增角色
@Override
@Transactional
public Result addRole(RoleVo roleVo) {
//校验角色
if (roleVo.getRoleName() == null || roleVo.getRoleName().isEmpty()) {
return Result.error("角色名为空");
}
if (roleMapper.selectByRoleName(roleVo.getRoleName()) != null) {
return Result.error("角色名重复");
}
if (roleVo.getPriority() == null) {
return Result.error("优先级为空");
}
if (roleVo.getMenuIds() == null || roleVo.getMenuIds().isEmpty()) {
return Result.error("权限为空");
}
else {
if(roleVo.getFatherId() != 2) {
for(Integer menuId : roleVo.getMenuIds()){
if(menuId == 9){
return Result.error("上级角色非管理员用户不能赋予权限管理");
}
}
}
}
try {
roleMapper.addRole(roleVo);
Role role = roleMapper.selectByRoleName(roleVo.getRoleName());
if (role == null) {
return Result.error("角色添加失败");
} else {
roleVo.setId(role.getId());
}
menuService.addPermission(roleVo);
} catch (Exception e) {
return Result.error("添加失败");
}
return Result.success("创建成功");
}
//删除角色
@Override
@Transactional
public Result deleteRole(RoleVo roleVo) {
if (roleVo.getId() == null) {
return Result.error("角色id为空");
}
if(roleVo.getId() == 2){
return Result.error("管理员不允许删除");
}
try {
roleMapper.deleteRoleMenu(roleVo);
roleMapper.deleteRole(roleVo);
} catch (Exception e) {
e.printStackTrace();
return Result.error("删除失败");
}
return Result.success("删除成功");
}
@Override
public RoleVo selectFather(Integer id) {
return roleMapper.selectFather(id);
}
//查找全部角色
@Override
public List<RoleVo> selectAllRole() {
return roleMapper.selectAllRole();
}
@Override
public List<RoleVo> selectSubRole(Integer id) {
return roleMapper.selectByFatherId(id);
}
//分页查找角色
@Override
public PageInfo<RoleVo> selectBy(Integer pageNum, Integer pageSize, RoleVo roleVo) {
PageHelper.startPage(pageNum, pageSize);
List<RoleVo> roleVos = roleMapper.selectBy(roleVo);
// 遍历 roleVos 列表
for (RoleVo role : roleVos) {
// 获取每个角色的权限树
List<MenuVo> permissionTree = menuService.getPermissionTree(role.getId());
// 将权限树设置到角色对象中
role.setTree(permissionTree);
}
return new PageInfo<>(roleVos);
}
}