RolePermissionMapper.java 4.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485
  1. package com.dms.mapper;
  2. import com.dms.model.RolePermissionEntity;
  3. import java.time.LocalDateTime;
  4. import java.util.List;
  5. import org.apache.ibatis.annotations.Insert;
  6. import org.apache.ibatis.annotations.Param;
  7. import org.apache.ibatis.annotations.Select;
  8. import org.apache.ibatis.annotations.Update;
  9. public interface RolePermissionMapper {
  10. @Select("SELECT * FROM sys_role_permission WHERE role_id = #{roleId} AND is_deleted = 0 "
  11. + "ORDER BY id ASC")
  12. List<RolePermissionEntity> listActiveByRole(@Param("roleId") long roleId);
  13. /** 矩阵命中行:一级分类 × 种类 × 密级 × 部门范围(契约1.48,对齐 _matrix_actions)。
  14. * topCategoryId 为一级分类 id(主体方案与分类下附件行);共享资料库行组用
  15. * {@link #findLibraryMatrixRow}。 */
  16. @Select("SELECT * FROM sys_role_permission WHERE role_id = #{roleId} "
  17. + "AND top_category_id = #{topCategoryId} AND doc_kind = #{docKind} "
  18. + "AND security_level = #{securityLevel} AND dept_scope = #{deptScope} "
  19. + "AND is_deleted = 0 LIMIT 1")
  20. RolePermissionEntity findMatrixRow(@Param("roleId") long roleId,
  21. @Param("topCategoryId") long topCategoryId,
  22. @Param("docKind") String docKind,
  23. @Param("securityLevel") String securityLevel,
  24. @Param("deptScope") String deptScope);
  25. /** 共享资料库行组(top_category_id IS NULL,仅 OWN):未挂载附件判定用。 */
  26. @Select("SELECT * FROM sys_role_permission WHERE role_id = #{roleId} "
  27. + "AND top_category_id IS NULL AND doc_kind = #{docKind} "
  28. + "AND security_level = #{securityLevel} AND dept_scope = 'OWN' "
  29. + "AND is_deleted = 0 LIMIT 1")
  30. RolePermissionEntity findLibraryMatrixRow(@Param("roleId") long roleId,
  31. @Param("docKind") String docKind,
  32. @Param("securityLevel") String securityLevel);
  33. /** 会话 permUpload 位:生效角色任一主体方案 OWN 行 can_upload=1(契约1.31)。 */
  34. @Select("SELECT COUNT(*) FROM sys_role_permission WHERE role_id = #{roleId} "
  35. + "AND doc_kind = 'MAIN' AND dept_scope = 'OWN' AND can_upload = 1 "
  36. + "AND is_deleted = 0")
  37. int countOwnUpload(@Param("roleId") long roleId);
  38. /** 会话 permAttachmentLibrary 位(契约1.41/1.44):任一共享资料行任一附件位=1。 */
  39. @Select("SELECT COUNT(*) FROM sys_role_permission WHERE role_id = #{roleId} "
  40. + "AND doc_kind != 'MAIN' AND (can_attachment_view = 1 "
  41. + "OR can_attachment_download = 1 OR can_attachment_edit = 1 "
  42. + "OR can_attachment_upload = 1 OR can_attachment_delete = 1) "
  43. + "AND is_deleted = 0")
  44. int countOwnAnyAttachment(@Param("roleId") long roleId);
  45. /** 会话 permAttachmentUpload 位(契约1.41):任一共享资料行附件上传位=1。 */
  46. @Select("SELECT COUNT(*) FROM sys_role_permission WHERE role_id = #{roleId} "
  47. + "AND doc_kind != 'MAIN' AND can_attachment_upload = 1 AND is_deleted = 0")
  48. int countOwnAttachmentUpload(@Param("roleId") long roleId);
  49. /** 新建角色种子行(can_* 走 DB 默认值 0;top_category_id/doc_kind 见实体)。 */
  50. @Insert("INSERT INTO sys_role_permission (role_id, top_category_id, doc_kind, "
  51. + "security_level, dept_scope, created_by, updated_by) VALUES "
  52. + "(#{roleId}, #{topCategoryId}, #{docKind}, #{securityLevel}, #{deptScope}, "
  53. + "#{createdBy}, #{updatedBy})")
  54. int insert(RolePermissionEntity row);
  55. /** 角色删除时矩阵行级联软删。 */
  56. @Update("UPDATE sys_role_permission SET is_deleted = 1, deleted_at = #{now}, "
  57. + "updated_by = #{actorId}, updated_at = #{now} "
  58. + "WHERE role_id = #{roleId} AND is_deleted = 0")
  59. int softDeleteByRole(@Param("roleId") long roleId, @Param("now") LocalDateTime now,
  60. @Param("actorId") Long actorId);
  61. @Update("UPDATE sys_role_permission SET can_view = #{canView}, "
  62. + "can_upload = #{canUpload}, "
  63. + "can_download = #{canDownload}, can_edit = #{canEdit}, "
  64. + "can_delete = #{canDelete}, can_config_permission = #{canConfigPermission}, "
  65. + "can_bind_attachment = #{canBindAttachment}, "
  66. + "can_unbind_attachment = #{canUnbindAttachment}, "
  67. + "can_attachment_upload = #{canAttachmentUpload}, "
  68. + "can_attachment_edit = #{canAttachmentEdit}, "
  69. + "can_attachment_view = #{canAttachmentView}, "
  70. + "can_attachment_download = #{canAttachmentDownload}, "
  71. + "can_attachment_delete = #{canAttachmentDelete}, "
  72. + "updated_by = #{updatedBy}, updated_at = #{updatedAt} WHERE id = #{id}")
  73. int updateFlags(RolePermissionEntity row);
  74. }