FrameTour-BE/src/main/resources/mapper/ScenicMapper.xml
2025-02-05 11:28:50 +08:00

228 lines
8.8 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.ScenicMapper">
<insert id="add">
insert into scenic(id, `name`, introduction, phone, cover_url, longitude, latitude, radius, province, city, area, address, price, kf_code_url, kf_phone, logo_url)
values (#{id}, #{name}, #{introduction}, #{phone}, #{coverUrl},#{longitude}, #{latitude}, #{radius}, #{province}, #{city}, #{area}, #{address}, #{price}, #{kfCodeUrl}, #{kfPhone}, #{logoUrl})
</insert>
<insert id="addConfig">
insert into scenic_config(id, scenic_id, create_time)
values (#{id}, #{scenicId}, now())
</insert>
<update id="update">
update
scenic
<set>
<if test="name!=null and name!=''">
`name`=#{name},
</if>
<if test="phone!=null and phone!=''">
`phone`=#{phone},
</if>
<if test="introduction!=null and introduction!=''">
introduction=#{introduction},
</if>
<if test="coverUrl!=null and coverUrl!=''">
cover_url=#{coverUrl},
</if>
<if test="longitude!=null">
longitude=#{longitude},
</if>
<if test="latitude!=null">
latitude=#{latitude},
</if>
<if test="radius!=null">
radius=#{radius},
</if>
<if test="province!=null and province!=''">
province=#{province},
</if>
<if test="city!=null and city!=''">
city=#{city},
</if>
<if test="area!=null and area!=''">
area=#{area},
</if>
<if test="address!=null and address!=''">
address=#{address},
</if>
<if test="kfCodeUrl!=null">
kf_code_url=#{kfCodeUrl},
</if>
<if test="kfPhone!=null">
kf_phone=#{kfPhone},
</if>
<if test="logoUrl!=null">
logo_url=#{logoUrl},
</if>
<if test="price!=null">
price=#{price},
</if>
</set>
where id = #{id}
</update>
<update id="updateStatus">
update
scenic
set status = (CASE
status
WHEN 1 THEN
0
WHEN 0 THEN
1
END)
where id = #{id}
</update>
<update id="updateConfigById">
update scenic_config
<set>
<if test="startTime!=null">
start_time=#{startTime},
</if>
<if test="endTime!=null">
end_time=#{endTime},
</if>
<if test="isDefault!=null">
is_default=#{isDefault},
</if>
all_free=#{allFree},
book_routine=#{bookRoutine},
sample_store_day=#{sampleStoreDay},
video_store_day=#{videoStoreDay},
template_new_video_type=#{templateNewVideoType},
anti_screen_record_type=#{antiScreenRecordType},
disable_source_video=#{disableSourceVideo},
disable_source_image=#{disableSourceImage},
video_source_store_day=#{videoSourceStoreDay},
image_source_store_day=#{imageSourceStoreDay}
</set>
where id = #{id}
</update>
<delete id="deleteById">
delete from scenic where id = #{id}
</delete>
<delete id="deleteConfigByScenicId">
delete from scenic_config where scenic_id = #{scenicId}
</delete>
<select id="list" resultMap="scenic">
select s.id, `name`, `phone`, introduction,logo_url,cover_url, longitude, latitude, radius, province, city, area, address, `status`, s.create_time, update_time, kf_code_url, kf_phone,
(select scenic_account.account from scenic_account where scenic_account.scenic_id = s.id and scenic_account.is_super = 1 limit 1) as account,
s.price
from scenic s
<where>
<if test="name!=null and name!=''">
and locate(#{name},`name`) > 0
</if>
<if test="province!=null and province!=''">
and locate(#{province},`province`) > 0
</if>
<if test="city!=null and city!=''">
and locate(#{city},`city`) > 0
</if>
<if test="area!=null and area!=''">
and locate(#{area},`area`) > 0
</if>
<if test="status!=null">
and `status` = #{status}
</if>
<if test="startTime!=null">
and s.create_time &gt;= #{startTime}
</if>
<if test="endTime!=null">
and s.create_time &lt;= #{endTime}
</if>
</where>
</select>
<select id="getById" resultMap="scenic">
select s.id, `name`, `phone`, introduction, logo_url,cover_url, longitude, latitude, radius, province, city, area, address, `status`, s.create_time, update_time,
s.price
from scenic s
where s.id = #{id}
</select>
<select id="appList" resultType="com.ycwl.basic.model.mobile.scenic.ScenicAppVO">
select s.id, `name`, `phone`, introduction,cover_url, longitude, latitude, radius, province, city, area, address
from scenic s
where
`status` = 1
<if test="name!=null and name!=''">
and locate(#{name},`name`) > 0
</if>
<if test="province!=null and province!=''">
and locate(#{province},`province`) > 0
</if>
<if test="city!=null and city!=''">
and locate(#{city},`city`) > 0
</if>
<if test="area!=null and area!=''">
and locate(#{area},`area`) > 0
</if>
<if test="startTime!=null">
and s.create_time &gt;= #{startTime}
</if>
<if test="endTime!=null">
and s.create_time &lt;= #{endTime}
</if>
</select>
<select id="getAppById" resultType="com.ycwl.basic.model.pc.scenic.resp.ScenicRespVO">
select s.id, `name`, `phone`, introduction, logo_url,cover_url, longitude, latitude, radius, province, city, area, address, kf_code_url, kf_phone
from scenic s
where `status` = 1 and s.id = #{id}
</select>
<select id="scenicListByLnLa" resultType="com.ycwl.basic.model.mobile.scenic.ScenicAppVO">
select s.id,
`name`,
`phone`,
introduction,
cover_url,
longitude,
latitude,
radius,
province,
city,
area,
address,
(SELECT COUNT(1) FROM device WHERE scenic_id = s.id AND status = 1) as deviceNum,
ifnull(
cast(
ST_Distance_Sphere(
Point(longitude, latitude), Point(#{params.longitude}, #{params.latitude})
) AS
DECIMAL(10, 2)
), 0
) AS distance
from scenic s
where `status` = 1
ORDER BY distance ASC
</select>
<select id="getConfig" resultType="com.ycwl.basic.model.pc.scenic.entity.ScenicConfigEntity">
select *
from scenic_config
where scenic_id = #{scenicId}
</select>
<select id="get" resultType="com.ycwl.basic.model.pc.scenic.entity.ScenicEntity">
select *
from scenic
where id = #{id}
</select>
<resultMap id="scenic" type="com.ycwl.basic.model.pc.scenic.resp.ScenicRespVO">
<id property="id" column="id"/>
<result property="name" column="name"/>
<result property="phone" column="phone"/>
<result property="account" column="account"/>
<result property="introduction" column="introduction"/>
<result property="logoUrl" column="logo_url"/>
<result property="coverUrl" column="cover_url"/>
<result property="longitude" column="longitude"/>
<result property="latitude" column="latitude"/>
<result property="radius" column="radius"/>
<result property="province" column="province"/>
<result property="city" column="city"/>
<result property="area" column="area"/>
<result property="address" column="address"/>
<result property="status" column="status"/>
<result property="price" column="price"/>
<result property="createTime" column="create_time"/>
<result property="updateTime" column="update_time"/>
</resultMap>
</mapper>