1.角色接口
This commit is contained in:
@@ -1,4 +1,8 @@
|
||||
package com.czg.service.account.dto;
|
||||
|
||||
public record PageDTO(Integer page, Integer size) {
|
||||
public record PageDTO(
|
||||
|
||||
Integer page,
|
||||
Integer size
|
||||
) {
|
||||
}
|
||||
|
||||
@@ -0,0 +1,16 @@
|
||||
package com.czg.service.account.dto.role;
|
||||
|
||||
import jakarta.validation.constraints.NotEmpty;
|
||||
import jakarta.validation.constraints.NotNull;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
public record RoleAddDTO(
|
||||
@NotEmpty
|
||||
String name,
|
||||
Integer level,
|
||||
@NotNull
|
||||
List<Long> menuIdList,
|
||||
String description
|
||||
) {
|
||||
}
|
||||
@@ -0,0 +1,18 @@
|
||||
package com.czg.service.account.dto.role;
|
||||
|
||||
import jakarta.validation.constraints.NotEmpty;
|
||||
import jakarta.validation.constraints.NotNull;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
public record RoleEditDTO(
|
||||
@NotNull
|
||||
Long id,
|
||||
@NotEmpty
|
||||
String name,
|
||||
Integer level,
|
||||
@NotNull
|
||||
List<Long> menuIdList,
|
||||
String description
|
||||
) {
|
||||
}
|
||||
@@ -49,7 +49,7 @@ public class SysRole implements Serializable {
|
||||
/**
|
||||
* 商户id
|
||||
*/
|
||||
private Integer shopId;
|
||||
private Long shopId;
|
||||
|
||||
/**
|
||||
* 描述
|
||||
|
||||
@@ -0,0 +1,42 @@
|
||||
package com.czg.service.account.entity;
|
||||
|
||||
import com.mybatisflex.annotation.Id;
|
||||
import com.mybatisflex.annotation.Table;
|
||||
import java.io.Serializable;
|
||||
|
||||
import java.io.Serial;
|
||||
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Builder;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
||||
/**
|
||||
* 角色菜单关联 实体类。
|
||||
*
|
||||
* @author Administrator
|
||||
* @since 2025-02-10
|
||||
*/
|
||||
@Data
|
||||
@Builder
|
||||
@NoArgsConstructor
|
||||
@AllArgsConstructor
|
||||
@Table("sys_roles_menus")
|
||||
public class SysRolesMenus implements Serializable {
|
||||
|
||||
@Serial
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
/**
|
||||
* 菜单ID
|
||||
*/
|
||||
@Id
|
||||
private Long menuId;
|
||||
|
||||
/**
|
||||
* 角色ID
|
||||
*/
|
||||
@Id
|
||||
private Long roleId;
|
||||
|
||||
}
|
||||
@@ -0,0 +1,14 @@
|
||||
package com.czg.service.account.mapper;
|
||||
|
||||
import com.mybatisflex.core.BaseMapper;
|
||||
import com.czg.service.account.entity.SysRolesMenus;
|
||||
|
||||
/**
|
||||
* 角色菜单关联 映射层。
|
||||
*
|
||||
* @author Administrator
|
||||
* @since 2025-02-10
|
||||
*/
|
||||
public interface SysRolesMenusMapper extends BaseMapper<SysRolesMenus> {
|
||||
|
||||
}
|
||||
@@ -1,6 +1,8 @@
|
||||
package com.czg.service.account.service;
|
||||
|
||||
import com.czg.service.account.dto.PageDTO;
|
||||
import com.czg.service.account.dto.role.RoleAddDTO;
|
||||
import com.czg.service.account.dto.role.RoleEditDTO;
|
||||
import com.mybatisflex.core.paginate.Page;
|
||||
import com.mybatisflex.core.service.IService;
|
||||
import com.czg.service.account.entity.SysRole;
|
||||
@@ -18,4 +20,8 @@ public interface SysRoleService extends IService<SysRole> {
|
||||
List<SysRole> getByUserId(Long id);
|
||||
|
||||
Page<SysRole> getList(PageDTO pageDTO);
|
||||
|
||||
Boolean add(RoleAddDTO roleAddDTO);
|
||||
|
||||
Boolean edit(RoleEditDTO roleEditDTO);
|
||||
}
|
||||
|
||||
@@ -0,0 +1,14 @@
|
||||
package com.czg.service.account.service;
|
||||
|
||||
import com.mybatisflex.core.service.IService;
|
||||
import com.czg.service.account.entity.SysRolesMenus;
|
||||
|
||||
/**
|
||||
* 角色菜单关联 服务层。
|
||||
*
|
||||
* @author Administrator
|
||||
* @since 2025-02-10
|
||||
*/
|
||||
public interface SysRolesMenusService extends IService<SysRolesMenus> {
|
||||
|
||||
}
|
||||
@@ -1,15 +1,25 @@
|
||||
package com.czg.service.account.service.impl;
|
||||
|
||||
import cn.hutool.core.bean.BeanUtil;
|
||||
import cn.hutool.core.date.DateUtil;
|
||||
import com.czg.sa.StpKit;
|
||||
import com.czg.service.account.dto.PageDTO;
|
||||
import com.czg.service.account.dto.role.RoleAddDTO;
|
||||
import com.czg.service.account.dto.role.RoleEditDTO;
|
||||
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.mybatisflex.core.paginate.Page;
|
||||
import com.mybatisflex.core.query.QueryChain;
|
||||
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 java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
@@ -20,6 +30,10 @@ import java.util.List;
|
||||
*/
|
||||
@Service
|
||||
public class SysRoleServiceImpl extends ServiceImpl<SysRoleMapper, SysRole> implements SysRoleService{
|
||||
@Resource
|
||||
private SysMenuService sysMenuService;
|
||||
@Resource
|
||||
private SysRolesMenusService sysRolesMenusService;
|
||||
|
||||
@Override
|
||||
public List<SysRole> getByUserId(Long id) {
|
||||
@@ -34,4 +48,50 @@ public class SysRoleServiceImpl extends ServiceImpl<SysRoleMapper, SysRole> imp
|
||||
}
|
||||
return queryChain.page(new Page<>(pageDTO.page(), pageDTO.size()));
|
||||
}
|
||||
|
||||
@Override
|
||||
public Boolean add(RoleAddDTO roleAddDTO) {
|
||||
long roleCount = queryChain().eq(SysRole::getName, roleAddDTO.name()).count();
|
||||
if (roleCount > 0) {
|
||||
throw new RuntimeException("此角色名称已存在");
|
||||
}
|
||||
|
||||
SysRole sysRole = new SysRole();
|
||||
sysRole.setName(roleAddDTO.name());
|
||||
sysRole.setLevel(roleAddDTO.level());
|
||||
sysRole.setDescription(roleAddDTO.description());
|
||||
sysRole.setShopId(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);
|
||||
}
|
||||
|
||||
throw new RuntimeException("保存失败");
|
||||
}
|
||||
|
||||
@Override
|
||||
public Boolean edit(RoleEditDTO roleEditDTO) {
|
||||
SysRole role = queryChain().eq(SysRole::getId, roleEditDTO.id()).eq(SysRole::getCreateUserId, StpKit.ADMIN.getLoginIdAsLong()).one();
|
||||
if (role == null) {
|
||||
throw new RuntimeException("角色不存在");
|
||||
}
|
||||
|
||||
long roleCount = queryChain().eq(SysRole::getName, roleEditDTO.name()).count();
|
||||
if (roleCount > 0) {
|
||||
throw new RuntimeException("此角色名称已存在");
|
||||
}
|
||||
|
||||
BeanUtil.copyProperties(roleEditDTO, role);
|
||||
return updateById(role);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,18 @@
|
||||
package com.czg.service.account.service.impl;
|
||||
|
||||
import com.mybatisflex.spring.service.impl.ServiceImpl;
|
||||
import com.czg.service.account.entity.SysRolesMenus;
|
||||
import com.czg.service.account.mapper.SysRolesMenusMapper;
|
||||
import com.czg.service.account.service.SysRolesMenusService;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
/**
|
||||
* 角色菜单关联 服务层实现。
|
||||
*
|
||||
* @author Administrator
|
||||
* @since 2025-02-10
|
||||
*/
|
||||
@Service
|
||||
public class SysRolesMenusServiceImpl extends ServiceImpl<SysRolesMenusMapper, SysRolesMenus> implements SysRolesMenusService{
|
||||
|
||||
}
|
||||
@@ -0,0 +1,7 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE mapper
|
||||
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
||||
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
|
||||
<mapper namespace="com.czg.service.account.mapper.SysRolesMenusMapper">
|
||||
|
||||
</mapper>
|
||||
Reference in New Issue
Block a user