139 lines
5.7 KiB
XML
139 lines
5.7 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.cxx.home.dao.TravelDao">
|
|
<resultMap id="travelSpotResultMap" type="com.cxx.home.dto.travel.TravelSpotDto">
|
|
<id property="id" column="id"/>
|
|
<result property="name" column="name"/>
|
|
<result property="area" column="area"
|
|
typeHandler="com.baomidou.mybatisplus.extension.handlers.JacksonTypeHandler"/>
|
|
<result property="price" column="price"/>
|
|
<result property="address" column="address"/>
|
|
<result property="recommendRate" column="recommendRate"/>
|
|
<result property="traffic" column="traffic"/>
|
|
<result property="router" column="router"/>
|
|
<result property="foods" column="foods"
|
|
typeHandler="com.baomidou.mybatisplus.extension.handlers.JacksonTypeHandler"/>
|
|
<result property="projects" column="projects"
|
|
typeHandler="com.baomidou.mybatisplus.extension.handlers.JacksonTypeHandler"/>
|
|
<result property="remark" column="remark"/>
|
|
<collection property="recordList" ofType="com.cxx.home.dto.travel.TravelRecordDto"
|
|
column="id" select="queryTravelRecordById">
|
|
</collection>
|
|
</resultMap>
|
|
|
|
<resultMap id="travelSummaryResultMap" type="com.cxx.home.dto.travel.TravelSummaryDto">
|
|
<id property="id" column="id"/>
|
|
<result property="name" column="name"/>
|
|
<result property="area" column="area"
|
|
typeHandler="com.baomidou.mybatisplus.extension.handlers.JacksonTypeHandler"/>
|
|
<result property="recommendRate" column="recommendRate"/>
|
|
<collection property="recordList" ofType="com.cxx.home.dto.travel.TravelRecordDto"
|
|
column="id" select="queryTravelRecordById">
|
|
</collection>
|
|
</resultMap>
|
|
|
|
<resultMap id="travelRecordResultMap" type="com.cxx.home.dto.travel.TravelRecordDto">
|
|
<id property="id" column="id"/>
|
|
<result property="name" column="name"/>
|
|
<result property="area" column="area"
|
|
typeHandler="com.baomidou.mybatisplus.extension.handlers.JacksonTypeHandler"/>
|
|
<result property="date" column="date"/>
|
|
<result property="persons" column="persons"
|
|
typeHandler="com.baomidou.mybatisplus.extension.handlers.JacksonTypeHandler"/>
|
|
<collection property="imageList" ofType="java.lang.String"
|
|
column="id" select="queryRecordImage"/>
|
|
<collection property="videoList" ofType="java.lang.String"
|
|
column="id" select="queryRecordVideo"/>
|
|
</resultMap>
|
|
|
|
<select id="queryRecordImage" resultType="java.lang.String">
|
|
SELECT image_url AS imageUrl
|
|
FROM travel_image
|
|
WHERE record_id = #{id}
|
|
</select>
|
|
|
|
<select id="queryRecordVideo" resultType="java.lang.String">
|
|
SELECT video_url AS videoUrl
|
|
FROM travel_video
|
|
WHERE record_id = #{id}
|
|
</select>
|
|
|
|
<select id="queryTravelRecordById" resultMap="travelRecordResultMap">
|
|
SELECT id AS id,
|
|
date AS date,
|
|
persons AS persons
|
|
FROM travel_record
|
|
WHERE travel_id = #{id}
|
|
ORDER BY date DESC
|
|
</select>
|
|
|
|
<select id="queryTravelRecord" resultMap="travelRecordResultMap">
|
|
SELECT a.id AS id,
|
|
b.name AS name,
|
|
b.area AS area,
|
|
a.date AS date,
|
|
a.persons AS persons
|
|
FROM travel_record AS a
|
|
LEFT JOIN travel_spot AS b ON a.travel_id = b.id
|
|
WHERE a.date <![CDATA[ >=]]> STR_TO_DATE(#{startDate}, '%Y-%m-%d')
|
|
AND a.date <![CDATA[ <=]]> STR_TO_DATE(#{endDate}, '%Y-%m-%d')
|
|
ORDER BY date DESC
|
|
</select>
|
|
|
|
<select id="queryTravelSpot" resultMap="travelSpotResultMap">
|
|
SELECT a.id AS id,
|
|
a.name AS name,
|
|
a.area AS area,
|
|
a.address AS address,
|
|
a.price AS price,
|
|
a.recommend_rate AS recommendRate,
|
|
a.traffic AS traffic,
|
|
a.router AS router,
|
|
a.foods AS foods,
|
|
a.projects AS projects,
|
|
a.remark AS remake
|
|
FROM travel_spot a
|
|
WHERE a.id = #{id}
|
|
</select>
|
|
|
|
<select id="queryTravelSummary" resultMap="travelSummaryResultMap">
|
|
SELECT a.id AS id,
|
|
a.name AS name,
|
|
a.area AS area,
|
|
a.recommend_rate AS recommendRate
|
|
FROM travel_spot a
|
|
<where>
|
|
<if test="query.category != null and query.category != ''">
|
|
a.city = #{query.category}
|
|
</if>
|
|
</where>
|
|
</select>
|
|
|
|
<select id="queryTravelStats" resultType="com.cxx.home.dto.travel.TravelStatsDto">
|
|
SELECT COUNT(DISTINCT a.name) AS spotCount,
|
|
COUNT(DISTINCT a.area) AS cityCount,
|
|
COUNT(b.id) AS recordCount
|
|
FROM travel_spot a
|
|
LEFT JOIN travel_record b ON a.id = b.travel_id
|
|
</select>
|
|
|
|
<select id="queryTravelCategory" resultType="string">
|
|
SELECT DISTINCT a.city AS city
|
|
FROM travel_spot a
|
|
</select>
|
|
|
|
<insert id="insertTravelImage">
|
|
INSERT INTO travel_image (record_id, image_url) VALUES
|
|
<foreach collection="list" item="item" separator=",">
|
|
(#{recordId}, #{item})
|
|
</foreach>
|
|
</insert>
|
|
|
|
<insert id="insertTravelVideo">
|
|
INSERT INTO travel_video (record_id, video_url) VALUES
|
|
<foreach collection="list" item="item" separator=",">
|
|
(#{recordId}, #{item})
|
|
</foreach>
|
|
</insert>
|
|
</mapper>
|