刘光辉
5 小时以前 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
package jnpf.dmsMapper;
 
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import jnpf.dmsEntity.operationlog.entity.DmsFileOperationLogEntity;
import org.apache.ibatis.annotations.Insert;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;
 
import java.util.List;
import java.util.UUID;
 
@Mapper
public interface DmsFileOperationLogMapper extends BaseMapper<DmsFileOperationLogEntity> {
    String COLUMNS = "id, tenant_id, document_id, file_version_id, operation_code, operation_key, "
            + "operator_user_id, operator_name, file_name, operation_content, occurred_at";
 
    @Insert("INSERT INTO public.dms_file_operation_logs "
            + "(tenant_id, document_id, file_version_id, operation_code, operation_key, "
            + "operator_user_id, operator_name, file_name, operation_content) VALUES "
            + "(#{value.tenantId}, #{value.documentId}, #{value.fileVersionId}, "
            + "#{value.operationCode}, #{value.operationKey}, #{value.operatorUserId}, "
            + "#{value.operatorName}, #{value.fileName}, #{value.operationContent}) "
            + "ON CONFLICT (tenant_id, operation_key) DO NOTHING")
    int insertIgnore(@Param("value") DmsFileOperationLogEntity value);
 
    @Select({"<script>",
            "SELECT COUNT(*) FROM public.dms_file_operation_logs",
            "WHERE tenant_id = #{tenantId} AND document_id = #{documentId}",
            "<if test='keyword != null'>AND operation_content ILIKE '%' || #{keyword} || '%'</if>",
            "</script>"})
    long countByDocument(@Param("tenantId") String tenantId,
                         @Param("documentId") UUID documentId,
                         @Param("keyword") String keyword);
 
    @Select({"<script>",
            "SELECT " + COLUMNS + " FROM public.dms_file_operation_logs",
            "WHERE tenant_id = #{tenantId} AND document_id = #{documentId}",
            "<if test='keyword != null'>AND operation_content ILIKE '%' || #{keyword} || '%'</if>",
            "ORDER BY occurred_at DESC, id DESC LIMIT #{limit} OFFSET #{offset}",
            "</script>"})
    List<DmsFileOperationLogEntity> selectByDocument(
            @Param("tenantId") String tenantId,
            @Param("documentId") UUID documentId,
            @Param("keyword") String keyword,
            @Param("limit") int limit,
            @Param("offset") long offset);
}