<?xml version="1.0" encoding="UTF-8"?>
|
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "https://mybatis.org/dtd/mybatis-3-mapper.dtd">
|
<mapper namespace="jnpf.dmsMapper.DmsApprovedReadAccessMapper">
|
<resultMap id="Department" type="jnpf.dmsMapper.DmsApprovedReadAccessMapper$Department">
|
<constructor><arg column="id" javaType="java.lang.String"/></constructor>
|
</resultMap>
|
<resultMap id="Permission" type="jnpf.dmsEntity.permission.entity.DmsFilePermissionEntity">
|
<id column="id" property="id" typeHandler="jnpf.dmsDatabase.DmsUuidTypeHandler"/>
|
<result column="tenant_id" property="tenantId"/>
|
<result column="resource_type" property="resourceType"/>
|
<result column="resource_id" property="resourceId" typeHandler="jnpf.dmsDatabase.DmsUuidTypeHandler"/>
|
<result column="resource_scope" property="resourceScope"/>
|
<result column="principal_type" property="principalType"/>
|
<result column="principal_id" property="principalId"/>
|
<result column="include_child_orgs" property="includeChildOrgs"/>
|
<result column="approved_org_scope" property="approvedOrgScope"/>
|
<result column="action_code" property="actionCode"/>
|
<result column="source_type" property="sourceType"/>
|
<result column="source_id" property="sourceId"/>
|
<result column="valid_from" property="validFrom"/>
|
<result column="valid_to" property="validTo"/>
|
<result column="max_use_count" property="maxUseCount"/>
|
<result column="used_count" property="usedCount"/>
|
<result column="grant_reason" property="grantReason"/>
|
<result column="granted_by_type" property="grantedByType"/>
|
<result column="granted_by_id" property="grantedById"/>
|
<result column="revoked_at" property="revokedAt"/>
|
<result column="revoked_by_type" property="revokedByType"/>
|
<result column="revoked_by_id" property="revokedById"/>
|
<result column="revoke_reason" property="revokeReason"/>
|
<result column="revision" property="revision"/>
|
<result column="created_at" property="createdAt"/>
|
<result column="updated_at" property="updatedAt"/>
|
</resultMap>
|
<sql id="Columns">id, tenant_id, resource_type, resource_id, resource_scope, principal_type, principal_id, include_child_orgs, approved_org_scope, action_code, source_type, source_id, valid_from, valid_to, max_use_count, used_count, grant_reason, granted_by_type, granted_by_id, revoked_at, revoked_by_type, revoked_by_id, revoke_reason, revision, created_at, updated_at</sql>
|
<sql id="Owned">
|
tenant_id = #{tenantId} AND resource_type = 'FILE_VERSION' AND resource_scope = 'SELF'
|
AND principal_type = 'ORG' AND action_code = 'READ' AND source_type = 'WORKFLOW'
|
AND granted_by_type = 'SERVICE' AND granted_by_id = 'dms-approved-read'
|
AND source_id LIKE 'approved-read:%' AND approved_org_scope IS NOT NULL
|
</sql>
|
<select id="departments" resultMap="Department">
|
SELECT f_id AS id FROM public.base_organize
|
WHERE f_tenant_id = #{tenantId} AND f_delete_mark IS NULL AND f_enabled_mark = 1
|
AND f_id IN <foreach collection="ids" item="departmentId" open="(" separator="," close=")">#{departmentId}</foreach>
|
</select>
|
<select id="owned" resultMap="Permission">
|
SELECT <include refid="Columns"/> FROM public.dms_file_permissions
|
WHERE <include refid="Owned"/> AND resource_id = #{versionId,jdbcType=OTHER,typeHandler=jnpf.dmsDatabase.DmsUuidTypeHandler} ORDER BY id FOR UPDATE
|
</select>
|
<update id="revoke">
|
UPDATE public.dms_file_permissions SET revoked_at = CURRENT_TIMESTAMP,
|
revoked_by_type = 'SERVICE', revoked_by_id = 'dms-approved-read',
|
revoke_reason = '同版本文件审核正式生效,替换本来源查阅授权', revision = revision + 1
|
WHERE <include refid="Owned"/> AND id = #{id,jdbcType=OTHER,typeHandler=jnpf.dmsDatabase.DmsUuidTypeHandler} AND revoked_at IS NULL
|
</update>
|
<select id="insert" resultMap="Permission" affectData="true" flushCache="true">
|
INSERT INTO public.dms_file_permissions
|
(id, tenant_id, resource_type, resource_id, resource_scope, principal_type, principal_id,
|
include_child_orgs, approved_org_scope, action_code, source_type, source_id, valid_from,
|
grant_reason, granted_by_type, granted_by_id)
|
VALUES (uuidv7(), #{p.tenantId}, 'FILE_VERSION', #{p.resourceId,jdbcType=OTHER,typeHandler=jnpf.dmsDatabase.DmsUuidTypeHandler}, 'SELF', 'ORG', #{p.principalId},
|
#{p.includeChildOrgs}, #{p.approvedOrgScope}, 'READ', 'WORKFLOW', #{p.sourceId}, #{p.validFrom},
|
#{p.grantReason}, 'SERVICE', 'dms-approved-read')
|
RETURNING <include refid="Columns"/>
|
</select>
|
</mapper>
|