KKSU
2023-12-25 2ab8c3ee11ec5879a7d71986bcbc0c44c6c75bb2
src/main/resources/mapper/modules/MallGoodsMapper.xml
@@ -66,7 +66,7 @@
            select
                a.id,
                a.goods_name,
                a.goods_introdution,
                a.goods_introdution goodsIntroduction,
                a.thumb,
                a.original_price,
                a.present_price,
@@ -81,9 +81,10 @@
                 left join mall_goods_category c on a.category_id=c.id
            <where>
                a.is_sale=1
                and a.is_app is null
                <if test="record != null">
                    <if test="record.isHot != null and record.isHot != ''">
                        and a.is_hot = #{record.is_hot}
                        and a.is_hot = #{record.isHot}
                    </if>
                    <if test="record.isNormal != null and record.isNormal != ''">
                        and a.is_normal = #{record.isNormal}
@@ -146,12 +147,41 @@
        left join mall_goods_category b on b.id = a.category_id
        left join mall_goods_sku c on c.goods_id = a.id
        <where>
            a.is_app is null
            <if test="record != null">
                <if test="record.goodsName != null and record.goodsName != ''">
                    and a.goods_name like CONCAT('%', CONCAT(#{record.goodsName}, '%'))
                </if>
                <if test="record.goodsType != null and record.goodsType != ''">
                    and a.goods_type=#{record.goodsType}
                </if>
            </if>
        </where>
        group by a.id
        order by a.created_time desc
    </select>
    <select id="selectMallAppGoodsInPage" resultType="cc.mrbird.febs.mall.vo.AdminMallGoodsVo">
        select
        a.id,
        a.goods_name,
        a.goods_no,
        a.unit,
        a.thumb,
        a.is_sale,
        a.original_price,
        a.present_price,
        a.score,
        a.volume saleVolume,
        b.name categaryName,
        a.stock
        from mall_goods a
        left join mall_goods_category b on b.id = a.category_id
        <where>
            a.is_app = 1
            <if test="record != null">
                <if test="record.goodsName != null and record.goodsName != ''">
                    and a.goods_name like CONCAT('%', CONCAT(#{record.goodsName}, '%'))
                </if>
            </if>
        </where>
@@ -229,6 +259,15 @@
                <if test="record.goodsId != null and record.goodsId != ''">
                    and a.goods_id=#{record.goodsId}
                </if>
                <if test="record.commentType != null and record.commentType != '' and record.commentType == 1">
                    and a.star <![CDATA[ > ]]> 4
                </if>
                <if test="record.commentType != null and record.commentType != '' and record.commentType == 2">
                    and (a.star <![CDATA[ >= ]]> 3 and a.star <![CDATA[ <= ]]> 4)
                </if>
                <if test="record.commentType != null and record.commentType != '' and record.commentType == 3">
                    and (a.star <![CDATA[ < ]]> 3 )
                </if>
            </if>
        </where>
        group by a.id
@@ -246,4 +285,114 @@
            a.CREATED_TIME asc
    </select>
    <select id="findMallGoodsCommentLevelByGoodsId" resultType="cc.mrbird.febs.mall.vo.MallGoodsCommentVo">
        select
            (select count(z.id) from mall_goods_comment z where z.goods_id = #{id} and z.star <![CDATA[ > ]]> 4) greatNum,
            (select count(z.id) from mall_goods_comment z where z.goods_id = #{id}
                                                            and (z.star <![CDATA[ >= ]]> 3 and z.star <![CDATA[ <= ]]> 4)) goodNum,
            (select count(z.id) from mall_goods_comment z where z.goods_id = #{id} and (z.star <![CDATA[ < ]]> 3 )) badNum
        from mall_goods_comment a limit 1
    </select>
    <update id="upDateStockAndVolumeByGoodsId">
        update mall_goods
        set stock = stock - #{cnt},
            volume = volume + #{cnt}
        where id=#{id} and  stock - #{cnt} <![CDATA[ >= ]]> 0
    </update>
    <update id="updateStockAndVolumeByGoodsId">
        update mall_goods
        set stock = stock + #{cnt},
            volume = volume - #{cnt}
        where id=#{id} and  volume - #{cnt} <![CDATA[ >= ]]> 0
    </update>
    <select id="selectMallGoodsListQueryNoPage" resultType="cc.mrbird.febs.mall.vo.MallGoodsListVo">
        select * from (
        select
        a.id,
        a.goods_name,
        a.goods_introdution goodsIntroduction,
        a.thumb,
        a.original_price,
        a.present_price,
        a.score,
        a.is_hot,
        min(b.id) skuId,
        min(b.present_price) price,
        sum(b.stock) stock,
        sum(b.sku_volume) saleVolume
        from mall_goods a
        left join mall_goods_sku b on a.id=b.goods_id
        left join mall_goods_category c on a.category_id=c.id
        <where>
            a.is_sale=1
            and
            a.is_app is null
            <if test="record != null">
                <if test="record.isHot != null and record.isHot != ''">
                    and a.is_hot = #{record.isHot}
                </if>
                <if test="record.isNormal != null and record.isNormal != ''">
                    and a.is_normal = #{record.isNormal}
                </if>
                <if test="record.goodsType != null and record.goodsType != '' and record.goodsType != 3">
                    and a.goods_type = #{record.goodsType} and a.present_price != 0
                </if>
                <if test="record.goodsType == 3">
                    and a.present_price = 0
                </if>
                <if test="record.categoryId != null and record.categoryId != ''">
                    and (c.id = #{record.categoryId} or c.parent_id=#{record.categoryId})
                </if>
                <if test="record.query != null and record.query != ''">
                    and a.goods_name like CONCAT('%', CONCAT(#{record.query}, '%'))
                </if>
            </if>
        </where>
        group by a.id
        order by a.id desc
        ) a
        <if test="record.sortType != null">
            <if test="record.sortType == 1">
                order by a.is_hot, a.saleVolume desc, a.id
            </if>
            <if test="record.sortType == 2">
                order by a.saleVolume desc
            </if>
            <if test="record.sortType == 3 and record.sort == 'asc'">
                order by a.price
            </if>
            <if test="record.sortType == 3 and record.sort == 'desc'">
                order by a.price desc
            </if>
            <if test="record.sortType == 4">
                order by a.id desc
            </if>
        </if>
    </select>
    <select id="selectMallGoodsListQueryNoPageIsApp" resultType="cc.mrbird.febs.mall.vo.ApiMallGoodsListVo">
        select
            a.id,
            a.goods_name,
            a.thumb,
            a.original_price,
            a.present_price,
            a.unit,
            a.score
        from mall_goods a
        left join mall_goods_category c on a.category_id=c.id
        <where>
            <if test="record != null">
                <if test="record.categoryId != null and record.categoryId != ''">
                    and (c.id = #{record.categoryId} or c.parent_id=#{record.categoryId})
                </if>
            </if>
        </where>
        group by a.id
        order by a.id desc
    </select>
</mapper>