119 lines
4.6 KiB
XML
119 lines
4.6 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.bms.price.mapper.PrcZoneDetailMapper">
|
|
|
|
<resultMap type="PrcZoneDetail" id="PrcZoneDetailResult">
|
|
<id property="detailId" column="detail_id" />
|
|
<result property="zoneId" column="zone_id" />
|
|
<result property="postcode" column="postcode" />
|
|
<result property="createTime" column="create_time" />
|
|
<result property="updateTime" column="update_time" />
|
|
</resultMap>
|
|
|
|
<sql id="selectPrcZoneDetailVo">
|
|
select detail_id, zone_id, postcode, create_time, update_time
|
|
from prc_zone_detail
|
|
</sql>
|
|
|
|
<select id="selectPrcZoneDetailById" parameterType="Long" resultMap="PrcZoneDetailResult">
|
|
<include refid="selectPrcZoneDetailVo"/>
|
|
where detail_id = #{detailId}
|
|
</select>
|
|
|
|
<select id="selectPrcZoneDetailList" parameterType="PrcZoneDetail" resultMap="PrcZoneDetailResult">
|
|
<include refid="selectPrcZoneDetailVo"/>
|
|
<where>
|
|
<if test="zoneId != null">
|
|
AND zone_id = #{zoneId}
|
|
</if>
|
|
<if test="postcode != null and postcode != ''">
|
|
AND postcode like concat('%', #{postcode}, '%')
|
|
</if>
|
|
</where>
|
|
order by postcode asc, detail_id asc
|
|
</select>
|
|
|
|
<select id="countByZoneId" parameterType="Long" resultType="int">
|
|
select count(1) from prc_zone_detail where zone_id = #{zoneId}
|
|
</select>
|
|
|
|
<select id="countByRegionId" parameterType="Long" resultType="int">
|
|
select count(1) from prc_zone_detail d
|
|
inner join prc_zone z on z.zone_id = d.zone_id
|
|
where z.region_id = #{regionId}
|
|
</select>
|
|
|
|
<insert id="insertPrcZoneDetail" parameterType="PrcZoneDetail" useGeneratedKeys="true" keyProperty="detailId">
|
|
insert into prc_zone_detail (
|
|
<if test="zoneId != null">zone_id,</if>
|
|
<if test="postcode != null and postcode != ''">postcode,</if>
|
|
create_time
|
|
) values (
|
|
<if test="zoneId != null">#{zoneId},</if>
|
|
<if test="postcode != null and postcode != ''">#{postcode},</if>
|
|
sysdate()
|
|
)
|
|
</insert>
|
|
|
|
<insert id="insertPrcZoneDetailBatch">
|
|
insert into prc_zone_detail (zone_id, postcode, create_time) values
|
|
<foreach collection="list" item="item" separator=",">
|
|
(#{item.zoneId}, #{item.postcode}, sysdate())
|
|
</foreach>
|
|
</insert>
|
|
|
|
<update id="updatePrcZoneDetail" parameterType="PrcZoneDetail">
|
|
update prc_zone_detail
|
|
<set>
|
|
<if test="zoneId != null">zone_id = #{zoneId},</if>
|
|
<if test="postcode != null and postcode != ''">postcode = #{postcode},</if>
|
|
update_time = sysdate()
|
|
</set>
|
|
where detail_id = #{detailId}
|
|
</update>
|
|
|
|
<delete id="deletePrcZoneDetailByIds" parameterType="Long">
|
|
delete from prc_zone_detail where detail_id in
|
|
<foreach item="detailId" collection="array" open="(" separator="," close=")">
|
|
#{detailId}
|
|
</foreach>
|
|
</delete>
|
|
|
|
<delete id="deletePrcZoneDetailByZoneId" parameterType="Long">
|
|
delete from prc_zone_detail where zone_id = #{zoneId}
|
|
</delete>
|
|
|
|
<delete id="deletePrcZoneDetailByRegionId" parameterType="Long">
|
|
delete d from prc_zone_detail d
|
|
inner join prc_zone z on z.zone_id = d.zone_id
|
|
where z.region_id = #{regionId}
|
|
</delete>
|
|
|
|
<select id="selectZoneByCountryPostcode" resultType="com.bms.price.domain.PrcZone">
|
|
select z.zone_id as zoneId,
|
|
z.region_id as regionId,
|
|
z.country_code as countryCode,
|
|
z.zone_code as zoneCode,
|
|
z.zone_name as zoneName,
|
|
z.zone_sort as zoneSort,
|
|
z.remark as remark,
|
|
z.create_time as createTime,
|
|
z.update_time as updateTime
|
|
from prc_zone_detail d
|
|
inner join prc_zone z on z.zone_id = d.zone_id
|
|
where upper(ifnull(z.country_code,'')) = upper(#{countryCode})
|
|
and (
|
|
replace(upper(ifnull(d.postcode,'')), ' ', '') = replace(upper(#{postcode}), ' ', '')
|
|
or replace(upper(#{postcode}), ' ', '') like concat(replace(upper(ifnull(d.postcode,'')), ' ', ''), '%')
|
|
)
|
|
order by
|
|
case when replace(upper(ifnull(d.postcode,'')), ' ', '') = replace(upper(#{postcode}), ' ', '') then 0 else 1 end,
|
|
char_length(replace(ifnull(d.postcode,''), ' ', '')) desc,
|
|
d.detail_id asc
|
|
limit 1
|
|
</select>
|
|
|
|
</mapper>
|