RuoYi-Vue/xkt/src/main/resources/mapper/StoreProductMapper.xml

355 lines
14 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.ruoyi.xkt.mapper.StoreProductMapper">
<select id="fuzzyQueryResPicList" resultType="com.ruoyi.xkt.dto.storeProduct.StoreProdFuzzyResPicDTO">
SELECT
sp.id AS storeProdId,
sp.store_id AS storeId,
sp.prod_art_num AS prodArtNum,
sf.file_url AS mainPicUrl
FROM
store_product sp
LEFT JOIN store_product_file spf ON sp.id = spf.store_prod_id AND spf.order_num = 1 AND spf.file_type = 1 AND spf.del_flag = 0
JOIN sys_file sf ON spf.file_id = sf.id
WHERE
sp.del_flag = 0
AND sp.prod_status IN (2,3)
AND sp.store_id = #{storeId}
<if test="prodArtNum != null and prodArtNum != ''">
AND sp.prod_art_num like concat('%', #{prodArtNum}, '%')
</if>
</select>
<select id="selectESDTOList" resultType="com.ruoyi.xkt.dto.storeProduct.ProductESDTO">
SELECT DISTINCT
sp.id,
s.store_name AS storeName,
sf.file_url AS mainPic,
spca.suitable_season AS season,
spca.style AS style,
spcp.min_price AS prodPrice,
spc1.`name` AS prodCateName,
spc2.id AS parCateId,
spc2.`name` AS parCateName
FROM
store_product sp
JOIN store s ON sp.store_id = s.id
JOIN store_product_file spf ON sp.id = spf.store_prod_id AND spf.del_flag = 0 AND spf.file_type = 1 AND spf.order_num = 1
JOIN sys_file sf ON spf.file_id = sf.id
JOIN store_product_category_attribute spca ON sp.id = spca.store_prod_id
JOIN sys_product_category spc1 ON sp.prod_cate_id = spc1.id
JOIN sys_product_category spc2 ON spc1.parent_id = spc2.id
LEFT JOIN ( SELECT store_prod_id, MIN( price ) AS min_price FROM store_product_color_size GROUP BY store_prod_id ) spcp ON sp.id = spcp.store_prod_id
WHERE
sp.del_flag = 0
AND sp.private_item = 0
AND sp.id IN
<foreach item="id" collection="idList" open="(" separator="," close=")">
#{id}
</foreach>
</select>
<select id="selectSkuList" resultType="com.ruoyi.xkt.dto.storeProduct.StoreProdSkuDTO" >
SELECT
spc.id AS storeProdColorId,
spc.store_prod_id,
spc.store_color_id,
spc.color_name,
spc.order_num,
spcs.price,
spcs.size,
spcs.standard,
spcs.id AS store_prod_color_size_id
FROM
store_product_color spc
JOIN store_product_color_size spcs ON spc.store_color_id = spcs.store_color_id AND spc.store_prod_id = spcs.store_prod_id AND spcs.del_flag = 0
WHERE
spc.del_flag = 0
AND spc.prod_status IN (2,3)
AND spcs.standard = 1
AND spc.store_prod_id = #{storeProdId}
</select>
<select id="selectPriceAndMainPicList" resultType="com.ruoyi.xkt.dto.storeProduct.StoreProdPriceAndMainPicDTO">
SELECT
sp.id AS storeProdId,
sp.prod_art_num AS prodArtNum,
sf.file_url AS mainPicUrl,
sp.prod_title,
MIN( spcs.price ) AS minPrice
FROM
store_product sp
JOIN store_product_color_size spcs ON sp.id = spcs.store_prod_id AND spcs.del_flag = 0
JOIN store_product_file spf ON sp.id = spf.store_prod_id AND spf.del_flag = 0 AND spf.file_type = 1 AND spf.order_num = 1
JOIN sys_file sf ON spf.file_id = sf.id
WHERE
sp.del_flag = 0
AND sp.prod_status IN (2,3)
AND sp.id IN
<foreach item="id" collection="storeProdIdList" open="(" separator="," close=")">
#{id}
</foreach>
GROUP BY
sp.id,
sf.file_url
</select>
<select id="selectPriceAndMainPicAndTagList" resultType="com.ruoyi.xkt.dto.storeProduct.StoreProdPriceAndMainPicAndTagDTO">
SELECT
sp.id AS storeProdId,
sp.prod_cate_id,
spc.`name` AS prodCateName,
spc.parent_id AS parCateId,
sp.prod_art_num AS prodArtNum,
sf.file_url AS mainPicUrl,
sf.file_name AS mainPicName,
sf.file_size AS mainPicSize,
sp.prod_title,
MIN( spcs.price ) AS minPrice,
sp.store_id,
s.store_name,
GROUP_CONCAT( DISTINCT dpt.tag ORDER BY dpt.type ASC ) AS tagStr,
EXISTS( SELECT 1 FROM store_product_file spf2 WHERE spf2.store_prod_id = sp.id AND spf2.del_flag = 0 AND spf2.file_type = 2 LIMIT 1 ) AS hasVideo
FROM
store_product sp
JOIN store_product_color_size spcs ON sp.id = spcs.store_prod_id AND spcs.del_flag = 0
JOIN store_product_file spf ON sp.id = spf.store_prod_id AND spf.del_flag = 0 AND spf.file_type = 1 AND spf.order_num = 1
JOIN sys_file sf ON spf.file_id = sf.id
JOIN store s ON sp.store_id = s.id
JOIN sys_product_category spc ON sp.prod_cate_id = spc.id
LEFT JOIN daily_prod_tag dpt ON sp.id = dpt.store_prod_id AND dpt.del_flag = 0
WHERE
sp.del_flag = 0
AND sp.prod_status IN (2,3)
AND sp.id IN
<foreach item="id" collection="storeProdIdList" open="(" separator="," close=")">
#{id}
</foreach>
GROUP BY
sp.id,
sf.file_url,
sf.file_name,
sf.file_size
</select>
<select id="getStoreProdViewAttr" resultType="com.ruoyi.xkt.dto.storeProduct.StoreProdViewDTO">
SELECT
sp.id AS storeProdId,
sp.prod_art_num,
sp.prod_title,
SUM( IFNULL( sps.img_search_count, 0 ) ) AS img_search_count,
sf.file_url AS mainPicUrl,
GROUP_CONCAT( DISTINCT dpt.tag ORDER BY dpt.type ) AS tagStr,
sp.store_id,
s.store_name,
MIN( spcs.price ) AS price
FROM
store_product sp
LEFT JOIN store_product_statistics sps ON sp.id = sps.store_prod_id AND sps.voucher_date BETWEEN #{voucherDateStart} AND #{voucherDateEnd}
LEFT JOIN store_product_file spf ON sp.id = spf.store_prod_id AND spf.del_flag = 0 AND spf.file_type = 1 AND spf.order_num = 1
LEFT JOIN sys_file sf ON spf.file_id = sf.id
LEFT JOIN store s ON sp.store_id = s.id
LEFT JOIN store_product_color_size spcs ON sp.id = spcs.store_prod_id AND spcs.del_flag = 0
LEFT JOIN daily_prod_tag dpt ON sp.id = dpt.store_prod_id AND dpt.del_flag = 0
WHERE
sp.del_flag = 0
AND sp.prod_status IN (2,3)
AND sp.id IN
<foreach item="id" collection="storeProdIdList" open="(" separator="," close=")">
#{id}
</foreach>
GROUP BY
sp.id,
sf.file_url
</select>
<select id="getSearchHotViewAttr" resultType="com.ruoyi.xkt.dto.storeProduct.StoreProdViewDTO">
SELECT
sp.id AS storeProdId,
sp.prod_art_num,
sp.prod_title,
sf.file_url AS mainPicUrl,
GROUP_CONCAT( DISTINCT dpt.tag ORDER BY dpt.type ) AS tagStr,
sp.store_id,
s.store_name,
MIN( spcs.price ) AS price
FROM
store_product sp
JOIN store_product_file spf ON sp.id = spf.store_prod_id AND spf.del_flag = 0 AND spf.file_type = 1 AND spf.order_num = 1
JOIN sys_file sf ON spf.file_id = sf.id
JOIN store s ON sp.store_id = s.id
JOIN store_product_color_size spcs ON sp.id = spcs.store_prod_id AND spcs.del_flag = 0
LEFT JOIN daily_prod_tag dpt ON sp.id = dpt.store_prod_id AND dpt.del_flag = 0
WHERE
sp.del_flag = 0
AND sp.id IN
<foreach item="id" collection="storeProdIdList" open="(" separator="," close=")">
#{id}
</foreach>
GROUP BY
sp.id,
sf.file_url
</select>
<select id="selectTop20List" resultType="com.ruoyi.xkt.dto.dailyStoreTag.DailyStoreTagDTO">
SELECT
sp.store_id,
SUM( id ) AS count
FROM
store_product sp
WHERE
sp.del_flag = 0
AND sp.create_time between #{oneWeekAgo} AND #{yesterday}
GROUP BY
sp.store_id
ORDER BY
count DESC
LIMIT 20
</select>
<select id="selectPCProdInfo" resultType="com.ruoyi.xkt.dto.storeProduct.StoreProdPCResDTO">
SELECT
s.id AS store_id,
s.store_name,
sp.id AS storeProdId,
sp.prod_art_num,
sp.prod_title,
sp.create_time,
spd.detail,
<if test="userId != null">
EXISTS ( SELECT 1 FROM user_favorites uf WHERE sp.id = uf.store_prod_id AND uf.del_flag = 0 AND uf.user_id = #{userId} ) AS collectProd
</if>
<if test="userId == null">
false AS collectProd
</if>
FROM
store_product sp
JOIN store_product_detail spd ON sp.id = spd.store_prod_id AND spd.del_flag = 0
JOIN store s ON sp.store_id = s.id
WHERE
sp.del_flag = 0
AND sp.id = #{storeProdId}
</select>
<select id="getStatusNum" resultType="com.ruoyi.xkt.dto.storeProduct.StoreProdStatusCountResDTO">
SELECT
COALESCE ( SUM( CASE WHEN sp.del_flag = 0 AND sp.prod_status = 2 THEN 1 ELSE 0 END ), 0 ) AS onSaleNum,
COALESCE ( SUM( CASE WHEN sp.del_flag = 0 AND sp.prod_status = 3 THEN 1 ELSE 0 END ), 0 ) AS tailGoodsNum,
COALESCE ( SUM( CASE WHEN sp.del_flag = 0 AND sp.prod_status = 4 THEN 1 ELSE 0 END ), 0 ) AS offSaleNum
FROM
store_product sp
WHERE
sp.del_flag = 0
AND sp.private_item = 0
AND sp.store_id = #{storeId}
</select>
<select id="getStatusCateNum" resultType="com.ruoyi.xkt.dto.storeProduct.StoreProdStatusCateCountDTO">
SELECT
sp.prod_status,
sp.prod_cate_id,
sp.prod_cate_name,
COUNT( sp.id ) AS cateCount
FROM
store_product sp
WHERE
sp.del_flag = 0
AND sp.private_item = 0
AND sp.store_id = #{storeId}
GROUP BY
sp.prod_status,
sp.prod_cate_id,
sp.prod_cate_name
ORDER BY
cateCount DESC
</select>
<select id="getAppInfo" resultType="com.ruoyi.xkt.dto.storeProduct.StoreProdAppResDTO">
SELECT DISTINCT
sp.id AS storeProdId,
sp.store_id,
s.store_name,
sp.prod_art_num,
sp.prod_title,
sp.create_time,
MIN( DISTINCT spcs.price ) AS minPrice,
GROUP_CONCAT( DISTINCT dpt.tag ORDER BY dpt.type ASC ) AS tagStr,
spd.detail,
<if test="userId != null">
EXISTS ( SELECT 1 FROM user_favorites uf WHERE sp.id = uf.store_prod_id AND uf.del_flag = 0 AND uf.user_id = #{userId} ) AS collectProd
</if>
FROM
store_product sp
JOIN store s ON sp.store_id = s.id
JOIN store_product_detail spd ON sp.id = spd.store_prod_id AND spd.del_flag = 0
JOIN store_product_color_size spcs ON sp.id = spcs.store_prod_id AND spcs.del_flag = 0
LEFT JOIN daily_prod_tag dpt ON sp.id = dpt.store_prod_id AND dpt.del_flag = 0
WHERE
sp.del_flag = 0 AND sp.id = #{storeProdId}
GROUP BY
sp.id,
spd.detail
</select>
<select id="selectLatest10List" resultType="com.ruoyi.xkt.dto.storeHomepage.StoreRecommendResDTO">
SELECT
sp.id AS storeProdId,
sp.store_id,
s.store_name,
sp.prod_art_num,
sp.prod_title,
MIN( spcs.price ) AS minPrice,
false AS advert
FROM
store_product sp
JOIN store s ON sp.store_id = s.id
JOIN store_product_color_size spcs ON sp.id = spcs.store_prod_id AND spcs.del_flag = 0
WHERE
sp.del_flag = 0
AND sp.store_id = #{storeId}
GROUP BY
sp.id
ORDER BY
sp.create_time DESC
LIMIT 10
</select>
<select id="selectDownloadProdInfo" resultType="com.ruoyi.xkt.dto.storeProduct.StoreProdPcDownloadInfoResDTO">
SELECT
s.store_name,
sp.prod_art_num,
sf.file_url AS mainPicUrl
FROM
store_product sp
JOIN store s ON sp.store_id = s.id
JOIN store_product_file spf ON sp.id = spf.store_prod_id AND spf.file_type = 1 AND spf.order_num = 1 AND spf.del_flag = 0
JOIN sys_file sf ON spf.file_id = sf.id
WHERE
sp.del_flag = 0 AND sp.id = #{storeProdId}
</select>
<select id="filterInvalidStoreProd">
SELECT
sp.id AS storeProductId
FROM
store_product sp JOIN store s ON sp.store_id = s.id AND s.del_flag = 0
WHERE
sp.del_flag = 0 AND sp.private_item = 0
<if test="storeProdIdList != null">
AND sp.id IN
<foreach item="item" collection="storeProdIdList" index="index" open="(" close=")" separator=",">
#{item}
</foreach>
</if>
</select>
</mapper>