去除初始内容约束、权限分配逻辑
This commit is contained in:
parent
45d8b41464
commit
994b2c36fa
@ -3,13 +3,19 @@ package com.cdzy.staff.controller;
|
|||||||
import com.cdzy.common.model.request.PageParam;
|
import com.cdzy.common.model.request.PageParam;
|
||||||
import com.cdzy.common.model.response.JsonResult;
|
import com.cdzy.common.model.response.JsonResult;
|
||||||
import com.cdzy.staff.model.entity.EbikeRolePermission;
|
import com.cdzy.staff.model.entity.EbikeRolePermission;
|
||||||
|
import com.cdzy.staff.model.vo.EbikeRolePermissionVo;
|
||||||
import com.cdzy.staff.service.EbikeRolePermissionService;
|
import com.cdzy.staff.service.EbikeRolePermissionService;
|
||||||
import com.mybatisflex.core.paginate.Page;
|
import com.mybatisflex.core.paginate.Page;
|
||||||
|
import com.mybatisflex.core.query.QueryWrapper;
|
||||||
import jakarta.annotation.Resource;
|
import jakarta.annotation.Resource;
|
||||||
|
import jakarta.validation.constraints.NotNull;
|
||||||
|
import org.springframework.validation.annotation.Validated;
|
||||||
import org.springframework.web.bind.annotation.*;
|
import org.springframework.web.bind.annotation.*;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
|
import static com.cdzy.staff.model.entity.table.EbikeRolePermissionTableDef.EBIKE_ROLE_PERMISSION;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 角色-权限映射表 控制层。
|
* 角色-权限映射表 控制层。
|
||||||
*
|
*
|
||||||
@ -24,74 +30,29 @@ public class EbikeRolePermissionController {
|
|||||||
private EbikeRolePermissionService ebikeRolePermissionService;
|
private EbikeRolePermissionService ebikeRolePermissionService;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 添加角色-权限映射表。
|
* 分配角色权限。
|
||||||
*
|
*
|
||||||
* @param ebikeRolePermission 角色-权限映射表
|
* @param ebikeRolePermission 角色-权限映射表
|
||||||
* @return {@code true} 添加成功,{@code false} 添加失败
|
* @return {@code true} 添加成功,{@code false} 添加失败
|
||||||
*/
|
*/
|
||||||
@PostMapping("save")
|
@PostMapping("allocate")
|
||||||
public JsonResult<?> save(@RequestBody EbikeRolePermission ebikeRolePermission) {
|
public JsonResult<?> allocate(@Validated @RequestBody EbikeRolePermissionVo ebikeRolePermission) {
|
||||||
ebikeRolePermissionService.save(ebikeRolePermission);
|
ebikeRolePermissionService.allocate(ebikeRolePermission);
|
||||||
return JsonResult.success();
|
return JsonResult.success();
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 根据主键删除角色-权限映射表。
|
* 获取角色权限。
|
||||||
*
|
*
|
||||||
* @param id 主键
|
* @param roleId 角色ID
|
||||||
* @return {@code true} 删除成功,{@code false} 删除失败
|
* @return {@code true} 添加成功,{@code false} 添加失败
|
||||||
*/
|
|
||||||
@PostMapping("remove/{id}")
|
|
||||||
public JsonResult<?> remove(@PathVariable Long id) {
|
|
||||||
ebikeRolePermissionService.removeById(id);
|
|
||||||
return JsonResult.success();
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 根据主键更新角色-权限映射表。
|
|
||||||
*
|
|
||||||
* @param ebikeRolePermission 角色-权限映射表
|
|
||||||
* @return {@code true} 更新成功,{@code false} 更新失败
|
|
||||||
*/
|
|
||||||
@PostMapping("update")
|
|
||||||
public JsonResult<?> update(@RequestBody EbikeRolePermission ebikeRolePermission) {
|
|
||||||
ebikeRolePermissionService.updateById(ebikeRolePermission);
|
|
||||||
return JsonResult.success();
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 查询所有角色-权限映射表。
|
|
||||||
*
|
|
||||||
* @return 所有数据
|
|
||||||
*/
|
*/
|
||||||
@GetMapping("list")
|
@GetMapping("list")
|
||||||
public JsonResult<?> list() {
|
public JsonResult<?> list(@NotNull(message = "角色ID不能为空") Long roleId) {
|
||||||
List<EbikeRolePermission> list = ebikeRolePermissionService.list();
|
QueryWrapper queryWrapper = QueryWrapper.create()
|
||||||
|
.where(EBIKE_ROLE_PERMISSION.ROLE_ID.eq(roleId))
|
||||||
|
.where(EBIKE_ROLE_PERMISSION.IS_EMPOWER.eq(Boolean.FALSE));
|
||||||
|
List<Long> list = ebikeRolePermissionService.listAs(queryWrapper, Long.class);
|
||||||
return JsonResult.success(list);
|
return JsonResult.success(list);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* 根据角色-权限映射表主键获取详细信息。
|
|
||||||
*
|
|
||||||
* @param id 角色-权限映射表主键
|
|
||||||
* @return 角色-权限映射表详情
|
|
||||||
*/
|
|
||||||
@GetMapping("getInfo/{id}")
|
|
||||||
public JsonResult<?> getInfo(@PathVariable Long id) {
|
|
||||||
EbikeRolePermission ebikeRolePermission = ebikeRolePermissionService.getById(id);
|
|
||||||
return JsonResult.success(ebikeRolePermission);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 分页查询角色-权限映射表。
|
|
||||||
*
|
|
||||||
* @param pageParam 分页对象
|
|
||||||
* @return 分页对象
|
|
||||||
*/
|
|
||||||
@GetMapping("page")
|
|
||||||
public JsonResult<?> page(PageParam pageParam) {
|
|
||||||
Page<EbikeRolePermission> page = ebikeRolePermissionService.page(pageParam.getPage());
|
|
||||||
return JsonResult.success(page);
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@ -38,13 +38,17 @@ public class EbikeRolePermission implements Serializable {
|
|||||||
|
|
||||||
private Long createBy;
|
private Long createBy;
|
||||||
|
|
||||||
|
@Column(onInsertValue = "now()")
|
||||||
private LocalDateTime createTime;
|
private LocalDateTime createTime;
|
||||||
|
|
||||||
private Long updateBy;
|
private Long updateBy;
|
||||||
|
|
||||||
|
@Column(onUpdateValue = "now()")
|
||||||
private LocalDateTime updateTime;
|
private LocalDateTime updateTime;
|
||||||
|
|
||||||
@Column(isLogicDelete = true)
|
@Column(isLogicDelete = true)
|
||||||
private Boolean isDeleted;
|
private Boolean isDeleted;
|
||||||
|
|
||||||
|
private Boolean isEmpower;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@ -0,0 +1,35 @@
|
|||||||
|
package com.cdzy.staff.model.vo;
|
||||||
|
|
||||||
|
import com.mybatisflex.annotation.Column;
|
||||||
|
import com.mybatisflex.annotation.Id;
|
||||||
|
import com.mybatisflex.annotation.Table;
|
||||||
|
import jakarta.validation.constraints.NotBlank;
|
||||||
|
import jakarta.validation.constraints.NotNull;
|
||||||
|
import lombok.AllArgsConstructor;
|
||||||
|
import lombok.Builder;
|
||||||
|
import lombok.Data;
|
||||||
|
import lombok.NoArgsConstructor;
|
||||||
|
|
||||||
|
import java.io.Serial;
|
||||||
|
import java.io.Serializable;
|
||||||
|
import java.time.LocalDateTime;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 角色-权限映射表 实体类。
|
||||||
|
*
|
||||||
|
* @author loves
|
||||||
|
* @since 2025-08-08
|
||||||
|
*/
|
||||||
|
@Data
|
||||||
|
@Builder
|
||||||
|
@NoArgsConstructor
|
||||||
|
@AllArgsConstructor
|
||||||
|
public class EbikeRolePermissionVo implements Serializable {
|
||||||
|
|
||||||
|
@NotNull(message = "角色ID不能为空")
|
||||||
|
private Long roleId;
|
||||||
|
|
||||||
|
@NotNull(message = "角色权限不能为空")
|
||||||
|
private List<Long> permissionIds;
|
||||||
|
}
|
||||||
@ -1,5 +1,6 @@
|
|||||||
package com.cdzy.staff.service;
|
package com.cdzy.staff.service;
|
||||||
|
|
||||||
|
import com.cdzy.staff.model.vo.EbikeRolePermissionVo;
|
||||||
import com.mybatisflex.core.service.IService;
|
import com.mybatisflex.core.service.IService;
|
||||||
import com.cdzy.staff.model.entity.EbikeRolePermission;
|
import com.cdzy.staff.model.entity.EbikeRolePermission;
|
||||||
|
|
||||||
@ -11,4 +12,5 @@ import com.cdzy.staff.model.entity.EbikeRolePermission;
|
|||||||
*/
|
*/
|
||||||
public interface EbikeRolePermissionService extends IService<EbikeRolePermission> {
|
public interface EbikeRolePermissionService extends IService<EbikeRolePermission> {
|
||||||
|
|
||||||
|
void allocate(EbikeRolePermissionVo ebikeRolePermission);
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1,10 +1,26 @@
|
|||||||
package com.cdzy.staff.service.impl;
|
package com.cdzy.staff.service.impl;
|
||||||
|
|
||||||
|
import cn.dev33.satoken.stp.StpUtil;
|
||||||
|
import com.cdzy.common.ex.EbikeException;
|
||||||
|
import com.cdzy.staff.mapper.EbikePermissionMapper;
|
||||||
|
import com.cdzy.staff.mapper.EbikeRoleMapper;
|
||||||
|
import com.cdzy.staff.model.entity.EbikePermission;
|
||||||
|
import com.cdzy.staff.model.entity.EbikeRole;
|
||||||
|
import com.cdzy.staff.model.vo.EbikeRolePermissionVo;
|
||||||
|
import com.mybatisflex.core.query.QueryWrapper;
|
||||||
import com.mybatisflex.spring.service.impl.ServiceImpl;
|
import com.mybatisflex.spring.service.impl.ServiceImpl;
|
||||||
import com.cdzy.staff.model.entity.EbikeRolePermission;
|
import com.cdzy.staff.model.entity.EbikeRolePermission;
|
||||||
import com.cdzy.staff.mapper.EbikeRolePermissionMapper;
|
import com.cdzy.staff.mapper.EbikeRolePermissionMapper;
|
||||||
import com.cdzy.staff.service.EbikeRolePermissionService;
|
import com.cdzy.staff.service.EbikeRolePermissionService;
|
||||||
|
import jakarta.annotation.Resource;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
|
import org.springframework.transaction.annotation.Transactional;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
import static com.cdzy.staff.model.entity.table.EbikePermissionTableDef.EBIKE_PERMISSION;
|
||||||
|
import static com.cdzy.staff.model.entity.table.EbikeRolePermissionTableDef.EBIKE_ROLE_PERMISSION;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 角色-权限映射表 服务层实现。
|
* 角色-权限映射表 服务层实现。
|
||||||
@ -13,6 +29,69 @@ import org.springframework.stereotype.Service;
|
|||||||
* @since 2025-08-07
|
* @since 2025-08-07
|
||||||
*/
|
*/
|
||||||
@Service
|
@Service
|
||||||
public class EbikeRolePermissionServiceImpl extends ServiceImpl<EbikeRolePermissionMapper, EbikeRolePermission> implements EbikeRolePermissionService{
|
public class EbikeRolePermissionServiceImpl extends ServiceImpl<EbikeRolePermissionMapper, EbikeRolePermission> implements EbikeRolePermissionService {
|
||||||
|
|
||||||
|
@Resource
|
||||||
|
private EbikeRoleMapper ebikeRoleMapper;
|
||||||
|
|
||||||
|
@Resource
|
||||||
|
private EbikeRolePermissionMapper rolePermissionMapper;
|
||||||
|
|
||||||
|
@Resource
|
||||||
|
private EbikePermissionMapper permissionMapper;
|
||||||
|
|
||||||
|
@Override
|
||||||
|
@Transactional
|
||||||
|
public void allocate(EbikeRolePermissionVo ebikeRolePermission) {
|
||||||
|
Long roleId = ebikeRolePermission.getRoleId();
|
||||||
|
checkRole(roleId);
|
||||||
|
List<Long> permissionIds = ebikeRolePermission.getPermissionIds();
|
||||||
|
long loginId = StpUtil.getLoginIdAsLong();
|
||||||
|
if (permissionIds != null && !permissionIds.isEmpty()) {
|
||||||
|
QueryWrapper queryWrapper = QueryWrapper.create()
|
||||||
|
.where(EBIKE_ROLE_PERMISSION.ROLE_ID.eq(roleId));
|
||||||
|
rolePermissionMapper.deleteByQuery(queryWrapper);
|
||||||
|
|
||||||
|
//获取所有有效权限id
|
||||||
|
queryWrapper.clear();
|
||||||
|
queryWrapper.where(EBIKE_PERMISSION.PERMISSION_ID.in(permissionIds));
|
||||||
|
List<EbikePermission> ebikePermissions = permissionMapper.selectListByQuery(queryWrapper);
|
||||||
|
|
||||||
|
permissionIds.clear();
|
||||||
|
if (ebikePermissions != null && !ebikePermissions.isEmpty()) {
|
||||||
|
List<Long> parentIds = new ArrayList<>();
|
||||||
|
//父级授权
|
||||||
|
for (EbikePermission ebikePermission : ebikePermissions) {
|
||||||
|
permissionIds.add(ebikePermission.getPermissionId());
|
||||||
|
if (ebikePermission.getParentId() != null) {
|
||||||
|
parentIds.add(ebikePermission.getParentId());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
List<EbikeRolePermission> rolePermissions = permissionIds.stream().map(permissionId -> EbikeRolePermission.builder()
|
||||||
|
.roleId(roleId)
|
||||||
|
.permissionId(permissionId)
|
||||||
|
.createBy(loginId)
|
||||||
|
.isEmpower(false)
|
||||||
|
.build()).toList();
|
||||||
|
List<EbikeRolePermission> parentRolePermissions = parentIds.stream().map(permissionId -> EbikeRolePermission.builder()
|
||||||
|
.roleId(roleId)
|
||||||
|
.permissionId(permissionId)
|
||||||
|
.createBy(loginId)
|
||||||
|
.isEmpower(true)
|
||||||
|
.build()).toList();
|
||||||
|
rolePermissionMapper.insertBatch(rolePermissions);
|
||||||
|
rolePermissionMapper.insertBatch(parentRolePermissions);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void checkRole(Long roleId) {
|
||||||
|
EbikeRole ebikeRole = ebikeRoleMapper.selectOneById(roleId);
|
||||||
|
if (ebikeRole == null) {
|
||||||
|
throw new EbikeException("该角色不存在");
|
||||||
|
}
|
||||||
|
// if (ebikeRole.getSysAdmin()){
|
||||||
|
// throw new EbikeException("系统管理员无需授权");
|
||||||
|
// }
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -237,20 +237,12 @@ ALTER TABLE "public"."ebike_permission" ADD CONSTRAINT "ebike_permission_pkey" P
|
|||||||
-- ----------------------------
|
-- ----------------------------
|
||||||
ALTER TABLE "public"."ebike_role" ADD CONSTRAINT "ebike_role_pkey" PRIMARY KEY ("role_id");
|
ALTER TABLE "public"."ebike_role" ADD CONSTRAINT "ebike_role_pkey" PRIMARY KEY ("role_id");
|
||||||
|
|
||||||
-- ----------------------------
|
|
||||||
-- Uniques structure for table ebike_role_permission
|
|
||||||
-- ----------------------------
|
|
||||||
ALTER TABLE "public"."ebike_role_permission" ADD CONSTRAINT "ebike_role_permission_role_id_permission_id_key" UNIQUE ("role_id", "permission_id");
|
|
||||||
|
|
||||||
-- ----------------------------
|
-- ----------------------------
|
||||||
-- Primary Key structure for table ebike_role_permission
|
-- Primary Key structure for table ebike_role_permission
|
||||||
-- ----------------------------
|
-- ----------------------------
|
||||||
ALTER TABLE "public"."ebike_role_permission" ADD CONSTRAINT "ebike_role_permission_pkey" PRIMARY KEY ("role_permission_id");
|
ALTER TABLE "public"."ebike_role_permission" ADD CONSTRAINT "ebike_role_permission_pkey" PRIMARY KEY ("role_permission_id");
|
||||||
|
|
||||||
-- ----------------------------
|
|
||||||
-- Uniques structure for table ebike_staff_role
|
|
||||||
-- ----------------------------
|
|
||||||
ALTER TABLE "public"."ebike_staff_role" ADD CONSTRAINT "ebike_staff_role_staff_id_role_id_key" UNIQUE ("staff_id", "role_id");
|
|
||||||
|
|
||||||
-- ----------------------------
|
-- ----------------------------
|
||||||
-- Primary Key structure for table ebike_staff_role
|
-- Primary Key structure for table ebike_staff_role
|
||||||
|
|||||||
@ -2,8 +2,10 @@ package com.cdzy.staff;
|
|||||||
|
|
||||||
import com.cdzy.common.utils.SHA256WithSaltUtil;
|
import com.cdzy.common.utils.SHA256WithSaltUtil;
|
||||||
import com.cdzy.staff.mapper.EbikeRoleMapper;
|
import com.cdzy.staff.mapper.EbikeRoleMapper;
|
||||||
|
import com.cdzy.staff.mapper.EbikeRolePermissionMapper;
|
||||||
import com.cdzy.staff.mapper.EbikeStaffRoleMapper;
|
import com.cdzy.staff.mapper.EbikeStaffRoleMapper;
|
||||||
import com.cdzy.staff.model.entity.EbikeRole;
|
import com.cdzy.staff.model.entity.EbikeRole;
|
||||||
|
import com.cdzy.staff.model.entity.EbikeRolePermission;
|
||||||
import com.cdzy.staff.model.entity.EbikeStaffRole;
|
import com.cdzy.staff.model.entity.EbikeStaffRole;
|
||||||
import jakarta.annotation.Resource;
|
import jakarta.annotation.Resource;
|
||||||
import org.junit.jupiter.api.Test;
|
import org.junit.jupiter.api.Test;
|
||||||
@ -18,6 +20,9 @@ public class RoleTest {
|
|||||||
@Resource
|
@Resource
|
||||||
EbikeStaffRoleMapper staffRoleMapper;
|
EbikeStaffRoleMapper staffRoleMapper;
|
||||||
|
|
||||||
|
@Resource
|
||||||
|
EbikeRolePermissionMapper rolePermissionMapper;
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void test() {
|
public void test() {
|
||||||
EbikeRole role = new EbikeRole();
|
EbikeRole role = new EbikeRole();
|
||||||
@ -35,4 +40,14 @@ public class RoleTest {
|
|||||||
staffRoleMapper.insert(role);
|
staffRoleMapper.insert(role);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testStaffRolPermission() {
|
||||||
|
EbikeRolePermission rolePermission = EbikeRolePermission.builder()
|
||||||
|
.roleId(312523146360233984L)
|
||||||
|
.permissionId(321418032472608768L)
|
||||||
|
.isEmpower(true)
|
||||||
|
.build();
|
||||||
|
rolePermissionMapper.insert(rolePermission);
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user