| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485 |
- package com.dms.mapper;
- import com.dms.model.RolePermissionEntity;
- import java.time.LocalDateTime;
- import java.util.List;
- import org.apache.ibatis.annotations.Insert;
- import org.apache.ibatis.annotations.Param;
- import org.apache.ibatis.annotations.Select;
- import org.apache.ibatis.annotations.Update;
- public interface RolePermissionMapper {
- @Select("SELECT * FROM sys_role_permission WHERE role_id = #{roleId} AND is_deleted = 0 "
- + "ORDER BY id ASC")
- List<RolePermissionEntity> listActiveByRole(@Param("roleId") long roleId);
- /** 矩阵命中行:一级分类 × 种类 × 密级 × 部门范围(契约1.48,对齐 _matrix_actions)。
- * topCategoryId 为一级分类 id(主体方案与分类下附件行);共享资料库行组用
- * {@link #findLibraryMatrixRow}。 */
- @Select("SELECT * FROM sys_role_permission WHERE role_id = #{roleId} "
- + "AND top_category_id = #{topCategoryId} AND doc_kind = #{docKind} "
- + "AND security_level = #{securityLevel} AND dept_scope = #{deptScope} "
- + "AND is_deleted = 0 LIMIT 1")
- RolePermissionEntity findMatrixRow(@Param("roleId") long roleId,
- @Param("topCategoryId") long topCategoryId,
- @Param("docKind") String docKind,
- @Param("securityLevel") String securityLevel,
- @Param("deptScope") String deptScope);
- /** 共享资料库行组(top_category_id IS NULL,仅 OWN):未挂载附件判定用。 */
- @Select("SELECT * FROM sys_role_permission WHERE role_id = #{roleId} "
- + "AND top_category_id IS NULL AND doc_kind = #{docKind} "
- + "AND security_level = #{securityLevel} AND dept_scope = 'OWN' "
- + "AND is_deleted = 0 LIMIT 1")
- RolePermissionEntity findLibraryMatrixRow(@Param("roleId") long roleId,
- @Param("docKind") String docKind,
- @Param("securityLevel") String securityLevel);
- /** 会话 permUpload 位:生效角色任一主体方案 OWN 行 can_upload=1(契约1.31)。 */
- @Select("SELECT COUNT(*) FROM sys_role_permission WHERE role_id = #{roleId} "
- + "AND doc_kind = 'MAIN' AND dept_scope = 'OWN' AND can_upload = 1 "
- + "AND is_deleted = 0")
- int countOwnUpload(@Param("roleId") long roleId);
- /** 会话 permAttachmentLibrary 位(契约1.41/1.44):任一共享资料行任一附件位=1。 */
- @Select("SELECT COUNT(*) FROM sys_role_permission WHERE role_id = #{roleId} "
- + "AND doc_kind != 'MAIN' AND (can_attachment_view = 1 "
- + "OR can_attachment_download = 1 OR can_attachment_edit = 1 "
- + "OR can_attachment_upload = 1 OR can_attachment_delete = 1) "
- + "AND is_deleted = 0")
- int countOwnAnyAttachment(@Param("roleId") long roleId);
- /** 会话 permAttachmentUpload 位(契约1.41):任一共享资料行附件上传位=1。 */
- @Select("SELECT COUNT(*) FROM sys_role_permission WHERE role_id = #{roleId} "
- + "AND doc_kind != 'MAIN' AND can_attachment_upload = 1 AND is_deleted = 0")
- int countOwnAttachmentUpload(@Param("roleId") long roleId);
- /** 新建角色种子行(can_* 走 DB 默认值 0;top_category_id/doc_kind 见实体)。 */
- @Insert("INSERT INTO sys_role_permission (role_id, top_category_id, doc_kind, "
- + "security_level, dept_scope, created_by, updated_by) VALUES "
- + "(#{roleId}, #{topCategoryId}, #{docKind}, #{securityLevel}, #{deptScope}, "
- + "#{createdBy}, #{updatedBy})")
- int insert(RolePermissionEntity row);
- /** 角色删除时矩阵行级联软删。 */
- @Update("UPDATE sys_role_permission SET is_deleted = 1, deleted_at = #{now}, "
- + "updated_by = #{actorId}, updated_at = #{now} "
- + "WHERE role_id = #{roleId} AND is_deleted = 0")
- int softDeleteByRole(@Param("roleId") long roleId, @Param("now") LocalDateTime now,
- @Param("actorId") Long actorId);
- @Update("UPDATE sys_role_permission SET can_view = #{canView}, "
- + "can_upload = #{canUpload}, "
- + "can_download = #{canDownload}, can_edit = #{canEdit}, "
- + "can_delete = #{canDelete}, can_config_permission = #{canConfigPermission}, "
- + "can_bind_attachment = #{canBindAttachment}, "
- + "can_unbind_attachment = #{canUnbindAttachment}, "
- + "can_attachment_upload = #{canAttachmentUpload}, "
- + "can_attachment_edit = #{canAttachmentEdit}, "
- + "can_attachment_view = #{canAttachmentView}, "
- + "can_attachment_download = #{canAttachmentDownload}, "
- + "can_attachment_delete = #{canAttachmentDelete}, "
- + "updated_by = #{updatedBy}, updated_at = #{updatedAt} WHERE id = #{id}")
- int updateFlags(RolePermissionEntity row);
- }
|