刘光辉
4 小时以前 06f314545ac3514d7ce28939920866ae8188d31c
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
<?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.DmsFilePermissionMapper">
    <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>
    <select id="selectCandidates" resultMap="Permission">
        SELECT <include refid="Columns"/> FROM public.dms_file_permissions
        WHERE tenant_id = #{tenantId} AND action_code IN
        <foreach collection="actionCodes" item="action" open="(" separator="," close=")">#{action}</foreach>
        AND revoked_at IS NULL AND valid_from &lt;= CURRENT_TIMESTAMP
        AND (valid_to IS NULL OR CURRENT_TIMESTAMP &lt; valid_to)
        AND (max_use_count IS NULL OR used_count &lt; max_use_count)
        AND resource_id IN
        <foreach collection="resourceIds" item="id" open="(" separator="," close=")">#{id,jdbcType=OTHER,typeHandler=jnpf.dmsDatabase.DmsUuidTypeHandler}</foreach>
        ORDER BY CASE WHEN max_use_count IS NULL THEN 0 ELSE 1 END,
        CASE WHEN max_use_count IS NOT NULL THEN valid_to END ASC NULLS LAST, created_at, id
    </select>
    <select id="selectByTenantAndId" resultMap="Permission">
        SELECT <include refid="Columns"/> FROM public.dms_file_permissions WHERE tenant_id = #{tenantId} AND id = #{id,jdbcType=OTHER,typeHandler=jnpf.dmsDatabase.DmsUuidTypeHandler}
    </select>
    <select id="selectByTenantAndIdForUpdate" resultMap="Permission">
        SELECT <include refid="Columns"/> FROM public.dms_file_permissions WHERE tenant_id = #{tenantId} AND id = #{id,jdbcType=OTHER,typeHandler=jnpf.dmsDatabase.DmsUuidTypeHandler} FOR UPDATE
    </select>
</mapper>