去除初始内容约束、权限分配逻辑

This commit is contained in:
attiya 2025-09-08 11:55:54 +08:00
parent 45d8b41464
commit 994b2c36fa
7 changed files with 154 additions and 66 deletions

View File

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

View File

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

View File

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

View File

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

View File

@ -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("系统管理员无需授权");
// }
}
} }

View File

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

View File

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