角色管理接口
This commit is contained in:
@@ -1,8 +1,16 @@
|
||||
package com.czg.service.account.dto;
|
||||
|
||||
public record PageDTO(
|
||||
import jakarta.validation.constraints.Min;
|
||||
import jakarta.validation.constraints.NotNull;
|
||||
|
||||
public record PageDTO(
|
||||
// 页码
|
||||
@NotNull
|
||||
@Min(1)
|
||||
Integer page,
|
||||
// 数量
|
||||
@NotNull
|
||||
@Min(1)
|
||||
Integer size
|
||||
) {
|
||||
}
|
||||
|
||||
@@ -1,16 +1,21 @@
|
||||
package com.czg.service.account.dto.role;
|
||||
|
||||
import jakarta.validation.constraints.NotBlank;
|
||||
import jakarta.validation.constraints.NotEmpty;
|
||||
import jakarta.validation.constraints.NotNull;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
public record RoleAddDTO(
|
||||
@NotEmpty
|
||||
/* 角色名称 */
|
||||
@NotBlank
|
||||
String name,
|
||||
// 角色级别
|
||||
Integer level,
|
||||
@NotNull
|
||||
// 菜单id
|
||||
@NotEmpty(message = "菜单id不能为空")
|
||||
List<Long> menuIdList,
|
||||
// 描述
|
||||
String description
|
||||
) {
|
||||
}
|
||||
|
||||
@@ -1,18 +1,24 @@
|
||||
package com.czg.service.account.dto.role;
|
||||
|
||||
import jakarta.validation.constraints.NotBlank;
|
||||
import jakarta.validation.constraints.NotEmpty;
|
||||
import jakarta.validation.constraints.NotNull;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
public record RoleEditDTO(
|
||||
// 角色id
|
||||
@NotNull
|
||||
Long id,
|
||||
@NotEmpty
|
||||
// 角色名称
|
||||
@NotBlank
|
||||
String name,
|
||||
// 角色等级
|
||||
Integer level,
|
||||
// 菜单id
|
||||
@NotNull
|
||||
List<Long> menuIdList,
|
||||
// 描述
|
||||
String description
|
||||
) {
|
||||
}
|
||||
|
||||
@@ -0,0 +1,7 @@
|
||||
package com.czg.service.account.dto.role;
|
||||
|
||||
import jakarta.validation.constraints.NotNull;
|
||||
|
||||
|
||||
public record RoleRemoveDTO(/* 角色id */@NotNull Long id) {
|
||||
}
|
||||
@@ -2,6 +2,7 @@ package com.czg.service.account.service.impl;
|
||||
|
||||
import cn.hutool.core.bean.BeanUtil;
|
||||
import cn.hutool.core.date.DateUtil;
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
import com.czg.sa.StpKit;
|
||||
import com.czg.service.account.dto.PageDTO;
|
||||
import com.czg.service.account.dto.role.RoleAddDTO;
|
||||
@@ -10,18 +11,24 @@ import com.czg.service.account.entity.SysMenu;
|
||||
import com.czg.service.account.entity.SysRolesMenus;
|
||||
import com.czg.service.account.service.SysMenuService;
|
||||
import com.czg.service.account.service.SysRolesMenusService;
|
||||
import com.czg.utils.AssertUtil;
|
||||
import com.mybatisflex.core.paginate.Page;
|
||||
import com.mybatisflex.core.query.QueryChain;
|
||||
import com.mybatisflex.core.query.QueryCondition;
|
||||
import com.mybatisflex.core.query.QueryWrapper;
|
||||
import com.mybatisflex.spring.service.impl.ServiceImpl;
|
||||
import com.czg.service.account.entity.SysRole;
|
||||
import com.czg.service.account.mapper.SysRoleMapper;
|
||||
import com.czg.service.account.service.SysRoleService;
|
||||
import jakarta.annotation.Resource;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
import static com.mybatisflex.core.query.QueryMethods.column;
|
||||
|
||||
/**
|
||||
* 角色表 服务层实现。
|
||||
*
|
||||
@@ -41,15 +48,42 @@ public class SysRoleServiceImpl extends ServiceImpl<SysRoleMapper, SysRole> imp
|
||||
}
|
||||
|
||||
@Override
|
||||
public Page<SysRole> getList(PageDTO pageDTO) {
|
||||
QueryChain<SysRole> queryChain = queryChain();
|
||||
public Page<SysRole> getList(PageDTO pageDTO, String key, String startTime, String endTime) {
|
||||
QueryWrapper queryWrapper = new QueryWrapper();
|
||||
if (!StpKit.ADMIN.isAdmin()) {
|
||||
queryChain.eq(SysRole::getCreateUserId, StpKit.ADMIN.getLoginIdAsLong());
|
||||
queryWrapper.eq(SysRole::getCreateUserId, StpKit.ADMIN.getLoginIdAsLong());
|
||||
}
|
||||
return queryChain.page(new Page<>(pageDTO.page(), pageDTO.size()));
|
||||
|
||||
if (StrUtil.isNotBlank(key)) {
|
||||
queryWrapper.and(column(SysRole::getName).like(key).or(column(SysRole::getDescription).like(key)));
|
||||
}
|
||||
|
||||
if (StrUtil.isNotBlank(startTime)) {
|
||||
queryWrapper.ge(SysRole::getCreateTime, DateUtil.parse(startTime));
|
||||
}
|
||||
|
||||
if (StrUtil.isNotBlank(endTime)) {
|
||||
queryWrapper.le(SysRole::getCreateTime, DateUtil.parse(endTime));
|
||||
}
|
||||
|
||||
return page(new Page<>(pageDTO.page(), pageDTO.size()), queryWrapper);
|
||||
}
|
||||
|
||||
public boolean addMenu(Long roleId, List<Long> menuIds) {
|
||||
long count = sysMenuService.queryChain().in(SysMenu::getMenuId, menuIds).count();
|
||||
if (count != menuIds.size()) {
|
||||
throw new RuntimeException("菜单id包含错误id");
|
||||
}
|
||||
|
||||
ArrayList<SysRolesMenus> rolesMenus = new ArrayList<>();
|
||||
for (Long id : menuIds) {
|
||||
rolesMenus.add(new SysRolesMenus(id, roleId));
|
||||
}
|
||||
return sysRolesMenusService.saveBatch(rolesMenus);
|
||||
}
|
||||
|
||||
@Override
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public Boolean add(RoleAddDTO roleAddDTO) {
|
||||
long roleCount = queryChain().eq(SysRole::getName, roleAddDTO.name()).count();
|
||||
if (roleCount > 0) {
|
||||
@@ -61,25 +95,18 @@ public class SysRoleServiceImpl extends ServiceImpl<SysRoleMapper, SysRole> imp
|
||||
sysRole.setLevel(roleAddDTO.level());
|
||||
sysRole.setDescription(roleAddDTO.description());
|
||||
sysRole.setShopId(StpKit.ADMIN.getLoginIdAsLong());
|
||||
sysRole.setCreateUserId(StpKit.ADMIN.getLoginIdAsLong());
|
||||
sysRole.setCreateTime(DateUtil.date().toLocalDateTime());
|
||||
boolean save = save(sysRole);
|
||||
if (save) {
|
||||
long count = sysMenuService.queryChain().in(SysMenu::getMenuId).count();
|
||||
if (count != roleAddDTO.menuIdList().size()) {
|
||||
throw new RuntimeException("菜单id包含错误id");
|
||||
}
|
||||
|
||||
ArrayList<SysRolesMenus> rolesMenus = new ArrayList<>();
|
||||
for (Long id : roleAddDTO.menuIdList()) {
|
||||
rolesMenus.add(new SysRolesMenus(id, sysRole.getId()));
|
||||
}
|
||||
return sysRolesMenusService.saveBatch(rolesMenus);
|
||||
return addMenu(sysRole.getId(), roleAddDTO.menuIdList());
|
||||
}
|
||||
|
||||
throw new RuntimeException("保存失败");
|
||||
}
|
||||
|
||||
@Override
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public Boolean edit(RoleEditDTO roleEditDTO) {
|
||||
SysRole role = queryChain().eq(SysRole::getId, roleEditDTO.id()).eq(SysRole::getCreateUserId, StpKit.ADMIN.getLoginIdAsLong()).one();
|
||||
if (role == null) {
|
||||
@@ -92,6 +119,11 @@ public class SysRoleServiceImpl extends ServiceImpl<SysRoleMapper, SysRole> imp
|
||||
}
|
||||
|
||||
BeanUtil.copyProperties(roleEditDTO, role);
|
||||
return updateById(role);
|
||||
boolean b = updateById(role);
|
||||
if (b) {
|
||||
sysRolesMenusService.updateChain().eq(SysRolesMenus::getRoleId, role.getId()).remove();
|
||||
return addMenu(role.getId(), roleEditDTO.menuIdList());
|
||||
}
|
||||
throw new RuntimeException("保存失败");
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user