FrameTour-BE/src/main/resources/mapper/SourceMapper.xml

195 lines
9.2 KiB
XML

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.ycwl.basic.mapper.SourceMapper">
<insert id="add">
insert into source(id, scenic_id, device_id, url, video_url, `type`, face_sample_id, pos_json, create_time)
values (#{id}, #{scenicId}, #{deviceId}, #{url}, #{videoUrl}, #{type}, #{faceSampleId}, #{posJson}, #{createTime})
</insert>
<insert id="addRelation">
replace member_source(scenic_id, face_id, member_id, source_id, is_buy, type, order_id)
values (#{scenicId}, #{faceId}, #{memberId}, #{sourceId}, #{isBuy}, #{type}, #{orderId})
</insert>
<insert id="addRelations">
replace member_source(scenic_id, face_id, member_id, source_id, is_buy, type, order_id)
values
<foreach collection="list" item="item" separator=",">
(#{item.scenicId}, #{item.faceId}, #{item.memberId}, #{item.sourceId}, #{item.isBuy}, #{item.type}, #{item.orderId})
</foreach>
</insert>
<update id="update">
update source
<set>
<if test="scenicId!= null">scenic_id = #{scenicId}, </if>
<if test="deviceId!= null">device_id = #{deviceId}, </if>
<if test="url!= null">url = #{url}, </if>
<if test="videoUrl!= null">video_url = #{videoUrl}, </if>
<if test="isBuy!=null">is_buy = #{isBuy}, </if>
<if test="type!=null">`type` = #{type}, </if>
<if test="faceSampleId!= null">face_sample_id = #{faceSampleId}, </if>
<if test="posJson!= null">pos_json = #{posJson}, </if>
</set>
where id = #{id}
</update>
<update id="updateRelation">
update member_source
<set>
<if test="isBuy!=null">is_buy = #{isBuy}, </if>
<if test="orderId!=null">order_id = #{orderId}, </if>
</set>
where member_id = #{memberId} and face_id = #{faceId} and `type` = #{type}
</update>
<delete id="deleteById">
delete from source where id = #{id}
</delete>
<delete id="deleteNotRelateSource">
delete from `source`
where id not in (select source_id from member_source)
and type = #{type}
and create_time &lt;= #{endDate}
</delete>
<delete id="deleteNotBuyRelations">
delete from member_source
where scenic_id = #{scenicId} and is_buy = 0 and create_time &lt;= #{endDate}
</delete>
<select id="list" resultType="com.ycwl.basic.model.pc.source.resp.SourceRespVO">
select so.id, so.scenic_id, de.name as deviceName, device_id, url, so.create_time, so.update_time,sc.`name` as scenicName, so.video_url, so.`type`, so.face_sample_id
from source so
left join scenic sc on sc.id = so.scenic_id
left join device de on de.id = so.device_id
<where>
<if test="scenicId!= null">and so.scenic_id = #{scenicId} </if>
<if test="deviceId!= null">and device_id = #{deviceId} </if>
<if test="url!= null">and url = #{url} </if>
<if test="isBuy!=null">
and is_buy = #{isBuy}
</if>
<if test="type!=null">and so.type = #{type} </if>
<if test="startTime!= null">and so.create_time &gt;= #{startTime} </if>
<if test="endTime!= null">and so.create_time &lt;= #{endTime} </if>
</where>
order by so.create_time desc
</select>
<select id="userGetById" resultType="com.ycwl.basic.model.pc.source.resp.SourceRespVO">
select so.id, ms.scenic_id, device_id, ms.member_id, url, so.create_time, so.update_time,sc.`name` as scenicName
from member_source ms
left join source so on ms.source_id = so.id
left join scenic sc on sc.id = so.scenic_id
where so.id = #{id} and ms.member_id = #{userId}
</select>
<select id="getById" resultType="com.ycwl.basic.model.pc.source.resp.SourceRespVO">
select so.id, scenic_id, device_id, url, so.create_time, so.update_time,sc.`name` as scenicName
from source so
left join scenic sc on sc.id = so.scenic_id
where so.id = #{id}
</select>
<select id="listGroupByType" resultType="com.ycwl.basic.model.pc.source.resp.SourceRespVO">
select ms.type, ms.is_buy
from member_source ms
<where>
<if test="scenicId!= null">and ms.scenic_id = #{scenicId} </if>
<if test="memberId!= null">and ms.member_id = #{memberId} </if>
<if test="isBuy!=null">and ms.is_buy = #{isBuy}</if>
</where>
group by ms.type
</select>
<select id="countByMemberId" resultType="java.lang.Integer">
select count(1) from member_source where member_id = #{userId}
</select>
<select id="listBySampleIds" resultType="com.ycwl.basic.model.pc.source.entity.SourceEntity">
select *
from source
where face_sample_id in
<foreach collection="list" item="item" open="(" separator="," close=")">
#{item}
</foreach>
order by create_time desc
</select>
<select id="listVideoBySampleIds" resultType="com.ycwl.basic.model.pc.source.entity.SourceEntity">
select *
from source
where face_sample_id in
<foreach collection="list" item="item" open="(" separator="," close=")">
#{item}
</foreach>
and type = 1
</select>
<select id="findBySampleId" resultType="com.ycwl.basic.model.pc.source.entity.SourceEntity">
select *
from source
where type = 2 and face_sample_id = #{faceSampleId}
limit 1
</select>
<select id="listUser" resultType="com.ycwl.basic.model.pc.source.resp.SourceRespVO">
select so.id, ms.scenic_id, device_id, url, so.create_time, so.update_time,sc.`name` as scenicName, ms.is_buy
from member_source ms
left join source so on ms.source_id = so.id
left join scenic sc on sc.id = so.scenic_id
where
ms.member_id = #{memberId}
<if test="scenicId!= null">and ms.scenic_id = #{scenicId} </if>
<if test="isBuy!=null">and ms.is_buy = #{isBuy} </if>
<if test="type!=null">and ms.type = #{type} </if>
<if test="faceId!=null">and ms.face_id = #{faceId} </if>
order by so.create_time asc
</select>
<select id="listUserOne" resultType="com.ycwl.basic.model.pc.source.resp.SourceRespVO">
select so.id, ms.scenic_id, device_id, url, video_url, so.create_time, so.update_time,sc.`name` as scenicName, ms.is_buy
from member_source ms
left join source so on ms.source_id = so.id
left join scenic sc on sc.id = so.scenic_id
where ms.member_id = #{userId} and ms.source_id = #{sourceId}
limit 1
</select>
<select id="queryByRelation" resultType="com.ycwl.basic.model.pc.source.resp.SourceRespVO">
select so.id, ms.face_id, ms.scenic_id, ms.type, so.url, so.create_time, so.update_time,sc.`name` as scenicName, ms.is_buy
from member_source ms
left join source so on ms.source_id = so.id
left join scenic sc on sc.id = so.scenic_id
where
ms.member_id = #{memberId}
<if test="faceId!= null">and ms.face_id = #{faceId} </if>
<if test="type!=null">and ms.type = #{type} </if>
<if test="scenicId!= null">and ms.scenic_id = #{scenicId} </if>
<if test="isBuy!=null">and ms.is_buy = #{isBuy}</if>
order by so.create_time desc
</select>
<select id="querySameVideo" resultType="com.ycwl.basic.model.pc.source.entity.SourceEntity">
select *
from source
where device_id = #{deviceId} and face_sample_id = #{faceSampleId} and type = 1
limit 1
</select>
<select id="hasRelationTo" resultType="java.lang.Integer">
select count(1)
from member_source
where member_id = #{memberId} and source_id = #{sourceId} and type = #{type}
</select>
<select id="listVideoByFaceRelation" resultType="com.ycwl.basic.model.pc.source.entity.SourceEntity">
select s.*, ms.is_buy
from member_source ms
left join source s on ms.source_id = s.id
where ms.face_id = #{faceId} and ms.member_id = #{memberId} and ms.type = 1
order by create_time desc
</select>
<select id="listVideoByScenicFaceRelation" resultType="com.ycwl.basic.model.pc.source.entity.SourceEntity">
select s.*, ms.is_buy
from member_source ms
left join source s on ms.source_id = s.id
where ms.face_id = #{faceId} and ms.type = 1 and ms.scenic_id = #{scenicId}
order by create_time desc
</select>
<select id="listImageByFaceRelation" resultType="com.ycwl.basic.model.pc.source.entity.SourceEntity">
select s.*, ms.is_buy
from member_source ms
left join source s on ms.source_id = s.id
where ms.face_id = #{faceId} and ms.member_id = #{memberId} and ms.type = 2
</select>
<select id="getEntity" resultType="com.ycwl.basic.model.pc.source.entity.SourceEntity">
select *
from source
where id = #{id}
</select>
</mapper>