| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255 |
- <?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.poyee.mapper.ProductCalendarMapper">
- <resultMap id="ProductSimpleResultMap" type="com.poyee.dto.ProductSimpleDto">
- <id property="id" column="id"/>
- <result property="productName" column="product_name"/>
- <result property="imageUrl" column="image_url"/>
- </resultMap>
- <resultMap id="ProductCalendarResultMap" type="com.poyee.dto.ProductCalendarDto">
- <id property="id" column="id"/>
- <result property="productName" column="product_name"/>
- <result property="releaseTime" column="release_time"/>
- <result property="imageUrl" column="image_url"/>
- <result property="basePrice" column="base_price"/>
- <result property="suggestedPrice" column="suggested_price"/>
- <result property="priceDate" column="price_date"/>
- <result property="currencyUnit" column="currency_unit"/>
- </resultMap>
- <resultMap id="ProductCalendarResultEntityMap" type="com.poyee.entity.ProductCalendar">
- <id property="id" column="id"/>
- <result property="year" column="year"/>
- <result property="sport" column="sport"/>
- <result property="manufacturer" column="manufacturer"/>
- <result property="sets" column="sets"/>
- <result property="setsVersion" column="sets_version"/>
- <result property="productName" column="product_name"/>
- <result property="releaseDate" column="release_date"/>
- <result property="baseConfig" column="base_config"/>
- <result property="imagesUrl" column="images_url"/>
- <result property="imageUrl" column="image_url"/>
- <result property="productHighlights" column="product_highlights"/>
- <result property="boxBreak" column="box_break"/>
- <result property="prop1" column="prop1"/>
- <result property="prop2" column="prop2"/>
- <result property="prop3" column="prop3"/>
- <result property="prop4" column="prop4"/>
- <result property="createTime" column="create_time"/>
- <result property="createBy" column="create_by"/>
- <result property="updateTime" column="update_time"/>
- <result property="updateBy" column="update_by"/>
- <result property="releaseTime" column="release_time"/>
- </resultMap>
- <resultMap id="ProductCalendarPriceResultMap" type="com.poyee.entity.ProductCalendarPrice">
- <id property="id" column="id"/>
- <result property="productCalendarId" column="product_calendar_id"/>
- <result property="basePrice" column="base_price"/>
- <result property="suggestedPrice" column="suggested_price"/>
- <result property="priceDate" column="price_date"/>
- <result property="priceResource" column="price_resource"/>
- <result property="createTime" column="create_time"/>
- <result property="createBy" column="create_by"/>
- <result property="updateTime" column="update_time"/>
- <result property="updateBy" column="update_by"/>
- <result property="currencyUnit" column="currency_unit"/>
- </resultMap>
- <select id="getProductCalendarById" resultMap="ProductCalendarResultEntityMap">
- SELECT
- pc.id,
- pc.year,
- pc.sport,
- pc.manufacturer,
- pc.sets,
- pc.sets_version,
- pc.product_name,
- pc.release_date,
- pc.base_config,
- pc.images_url,
- pc.image_url,
- pc.product_highlights,
- pc.box_break,
- pc.prop1,
- pc.prop2,
- pc.prop3,
- pc.prop4,
- pc.create_time,
- pc.create_by,
- pc.update_time,
- pc.update_by,
- pc.release_time
- FROM
- product_calendar pc
- WHERE
- pc.id = #{id}
- </select>
- <select id="getProductCalendarPricesByProductCalendarId" resultMap="ProductCalendarPriceResultMap">
- SELECT
- pcp.id,
- pcp.product_calendar_id,
- pcp.base_price,
- pcp.suggested_price,
- pcp.price_date,
- pcp.price_resource,
- pcp.create_time,
- pcp.create_by,
- pcp.update_time,
- pcp.update_by,
- pcp.currency_unit
- FROM
- product_calendar_price pcp
- WHERE
- pcp.product_calendar_id = #{id}
- <if test="days != null">
- AND pcp.price_date >= CURRENT_DATE - INTERVAL '1 days' * #{days}
- </if>
- order by pcp.price_date desc, pcp.id desc
- </select>
- <select id="getProductCalendarsList" resultMap="ProductCalendarResultMap">
- SELECT
- pc.id,
- pc.product_name,
- pc.release_time,
- pc.image_url,
- pcp.base_price,
- pcp.suggested_price,
- pcp.price_date
- FROM
- product_calendar pc
- LEFT JOIN (
- SELECT
- product_calendar_id,
- base_price,
- suggested_price,
- price_date,
- ROW_NUMBER() OVER (
- PARTITION BY product_calendar_id
- ORDER BY price_date DESC
- ) as rn
- FROM
- product_calendar_price
- ) pcp ON pc.id = pcp.product_calendar_id AND pcp.rn = 1
- <where>
- <!-- 新增的条件 -->
- <if test="releaseYear != null">
- AND EXTRACT(YEAR FROM pc.release_time) = #{releaseYear}
- </if>
- <if test="releaseYear != null and releaseMonth != null">
- AND EXTRACT(MONTH FROM pc.release_time) = #{releaseMonth}
- </if>
- <if test="sport != null and sport != ''">
- AND LOWER(pc.sport) = LOWER(#{sport})
- </if>
- <if test="manufacturer != null and manufacturer != ''">
- AND LOWER(pc.manufacturer) = LOWER(#{manufacturer})
- </if>
- </where>
- ORDER BY
- pc.release_time;
- </select>
- <select id="getProductCalendarCountByIds" resultType="java.lang.Integer">
- SELECT COUNT(*)
- FROM
- product_calendar pc
- <where>
- <if test="releaseYear != null">
- AND EXTRACT(YEAR FROM pc.release_time) = #{releaseYear}
- </if>
- <if test="releaseYear != null and releaseMonth != null">
- AND EXTRACT(MONTH FROM pc.release_time) = #{releaseMonth}
- </if>
- <if test="sport != null and sport != ''">
- AND LOWER(pc.sport) = LOWER(#{sport})
- </if>
- <if test="manufacturer != null and manufacturer != ''">
- AND LOWER(pc.manufacturer) = LOWER(#{manufacturer})
- </if>
- </where>
- </select>
- <select id="getProductCalendarsByPageAndCondition" resultMap="ProductCalendarResultMap">
- SELECT
- subquery.id,
- subquery.product_name,
- subquery.release_time,
- subquery.image_url,
- subquery.base_price,
- subquery.suggested_price,
- subquery.price_date,
- <!-- 新增字段 -->
- subquery.currency_unit,
- subquery.rn
- FROM (
- SELECT
- pc.id,
- pc.product_name,
- pc.release_time,
- pc.image_url,
- pcp.base_price,
- pcp.suggested_price,
- pcp.price_date,
- <!-- 新增字段 -->
- pcp.currency_unit,
- ROW_NUMBER() OVER (ORDER BY pc.release_time, pc.id) as rn
- FROM
- product_calendar pc
- LEFT JOIN (
- SELECT
- product_calendar_id,
- base_price,
- suggested_price,
- price_date,
- <!-- 新增字段 -->
- currency_unit,
- ROW_NUMBER() OVER (
- PARTITION BY product_calendar_id
- ORDER BY price_date DESC
- ) as rn
- FROM
- product_calendar_price
- ) pcp ON pc.id = pcp.product_calendar_id AND pcp.rn = 1
- <where>
- <if test="releaseYear != null">
- AND EXTRACT(YEAR FROM pc.release_time) = #{releaseYear}
- </if>
- <if test="releaseYear != null and releaseMonth != null">
- AND EXTRACT(MONTH FROM pc.release_time) = #{releaseMonth}
- </if>
- <if test="sport != null and sport != ''">
- AND LOWER(pc.sport) = LOWER(#{sport})
- </if>
- <if test="manufacturer != null and manufacturer != ''">
- AND LOWER(pc.manufacturer) = LOWER(#{manufacturer})
- </if>
- <!-- 新增的模糊查询条件 -->
- <if test="productName != null and productName != ''">
- AND LOWER(pc.product_name) LIKE '%' || LOWER(#{productName}) || '%'
- </if>
- </where>
- ) subquery
- WHERE rn BETWEEN #{startRow} AND #{endRow};
- </select>
- <!-- 新增的查询方法 -->
- <select id="getProductCalendarsByProductName" resultMap="ProductSimpleResultMap">
- SELECT
- pc.id,
- pc.product_name,
- pc.image_url
- FROM
- product_calendar pc
- WHERE
- LOWER(pc.product_name) LIKE '%' || LOWER(#{productName}) || '%'
- LIMIT 10;
- </select>
- </mapper>
|