1.角色接口
This commit is contained in:
parent
90f8472fcb
commit
3afbb1c2c4
|
|
@ -3,13 +3,13 @@ package com.czg.controller;
|
|||
import com.czg.annotation.SaAdminCheckPermission;
|
||||
import com.czg.resp.CzgResult;
|
||||
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.SysRole;
|
||||
import com.czg.service.account.service.SysRoleService;
|
||||
import com.mybatisflex.core.paginate.Page;
|
||||
import jakarta.annotation.Resource;
|
||||
import org.springframework.web.bind.annotation.GetMapping;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
import org.springframework.web.bind.annotation.RestController;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
/**
|
||||
*
|
||||
|
|
@ -23,14 +23,39 @@ public class RoleController {
|
|||
@Resource
|
||||
private SysRoleService roleService;
|
||||
|
||||
@SaAdminCheckPermission(value = "role.list")
|
||||
/**
|
||||
* 获取角色列表
|
||||
* 权限标识: role:list
|
||||
* @param pageDTO 分页信息
|
||||
* @return 分页数据
|
||||
*/
|
||||
@SaAdminCheckPermission(value = "role:list")
|
||||
@GetMapping("/list")
|
||||
public CzgResult<Page<SysRole>> getList(PageDTO pageDTO) {
|
||||
return CzgResult.success(roleService.getList(pageDTO));
|
||||
}
|
||||
|
||||
@SaAdminCheckPermission(value = "role.add")
|
||||
public CzgResult add(PageDTO pageDTO) {
|
||||
return null;
|
||||
/**
|
||||
* 新增角色
|
||||
* 权限标识: role:add
|
||||
* @param roleAddDTO 角色信息
|
||||
* @return 是否成功
|
||||
*/
|
||||
@SaAdminCheckPermission(value = "role:add")
|
||||
@PostMapping
|
||||
public CzgResult<Boolean> add(@RequestBody RoleAddDTO roleAddDTO) {
|
||||
return CzgResult.success(roleService.add(roleAddDTO));
|
||||
}
|
||||
|
||||
/**
|
||||
* 编辑角色
|
||||
* 权限标识: role:edit
|
||||
* @param roleEditDTO 角色信息
|
||||
* @return 是否成功
|
||||
*/
|
||||
@SaAdminCheckPermission(value = "role:edit")
|
||||
@PutMapping
|
||||
public CzgResult<Boolean> edit(@RequestBody RoleEditDTO roleEditDTO) {
|
||||
return CzgResult.success(roleService.edit(roleEditDTO));
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -34,6 +34,12 @@
|
|||
<artifactId>cash-common-redis</artifactId>
|
||||
<version>1.0.0</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>com.czg</groupId>
|
||||
<artifactId>cash-common-sa-token</artifactId>
|
||||
<version>1.0.0</version>
|
||||
</dependency>
|
||||
</dependencies>
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -1,5 +1,6 @@
|
|||
package com.czg.exception;
|
||||
|
||||
import cn.dev33.satoken.exception.NotPermissionException;
|
||||
import com.czg.resp.CzgRespCode;
|
||||
import com.czg.resp.CzgResult;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
|
|
@ -29,6 +30,14 @@ public class CzgControllerAdvice {
|
|||
return CzgResult.failure(CzgRespCode.SYSTEM_ERROR);
|
||||
}
|
||||
|
||||
@ResponseBody
|
||||
@ExceptionHandler(value = NotPermissionException.class)
|
||||
@ResponseStatus(HttpStatus.OK)
|
||||
public CzgResult<Object> notPermissionErrorHandler(NotPermissionException ex) {
|
||||
setErrorLog(ex);
|
||||
return CzgResult.failure(CzgRespCode.UN_PERMISSION);
|
||||
}
|
||||
|
||||
@ResponseBody
|
||||
@ExceptionHandler(MethodArgumentNotValidException.class)
|
||||
@ResponseStatus(HttpStatus.OK)
|
||||
|
|
|
|||
|
|
@ -13,7 +13,8 @@ public enum CzgRespCode {
|
|||
RECORD_NOT_EXIST(601, "记录不存在"),
|
||||
RECORD_EXISTED(602, "记录已存在"),
|
||||
PARAM_ERROR(603, "参数错误"),
|
||||
UNAUTHORIZED(401, "未授权"),;
|
||||
UNAUTHORIZED(401, "未授权"),
|
||||
UN_PERMISSION(402, "无此接口权限"),;
|
||||
|
||||
private final int code;
|
||||
private final String msg;
|
||||
|
|
|
|||
|
|
@ -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>
|
||||
|
|
@ -69,7 +69,7 @@ public class Main {
|
|||
//设置表前缀和只生成哪些表,setGenerateTable 未配置时,生成所有表
|
||||
globalConfig.getStrategyConfig()
|
||||
.setTablePrefix("")
|
||||
.setGenerateTable("sys_users_roles");
|
||||
.setGenerateTable("sys_roles_menus");
|
||||
|
||||
//设置生成 entity 并启用 Lombok
|
||||
globalConfig.enableEntity()
|
||||
|
|
|
|||
Loading…
Reference in New Issue