1.角色接口

This commit is contained in:
张松
2025-02-10 15:43:54 +08:00
parent 90f8472fcb
commit 3afbb1c2c4
16 changed files with 251 additions and 11 deletions

View File

@@ -1,4 +1,8 @@
package com.czg.service.account.dto;
public record PageDTO(Integer page, Integer size) {
public record PageDTO(
Integer page,
Integer size
) {
}

View File

@@ -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
) {
}

View File

@@ -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
) {
}

View File

@@ -49,7 +49,7 @@ public class SysRole implements Serializable {
/**
* 商户id
*/
private Integer shopId;
private Long shopId;
/**
* 描述

View File

@@ -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;
}

View File

@@ -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> {
}

View File

@@ -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);
}

View File

@@ -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> {
}

View File

@@ -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);
}
}

View File

@@ -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{
}

View File

@@ -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>