xiaoyong931011
2023-02-20 fbd9fa8eafc3b1133bee0c60eda6f0ebc87faabb
src/main/resources/mapper/modules/MallGoodsMapper.xml
@@ -22,6 +22,10 @@
        <result property="hasCarriage" column="has_carriage" />
        <result property="carriage" column="carriage" />
        <result property="isNormal" column="is_normal" />
        <result property="carriageType" column="carriage_type" />
        <result property="carriageAmount" column="carriage_amount" />
        <result property="carriageRuleId" column="carriage_rule_id" />
        <result property="goodsWeight" column="goods_weight" />
        <collection property="styles" ofType="cc.mrbird.febs.mall.entity.MallGoodsStyle">
            <id property="id" column="style_id" />
            <result property="name" column="style_name" />
@@ -36,6 +40,7 @@
                <result property="presentPrice" column="sku_present_price" />
                <result property="styleId" column="sku_style_id"/>
                <result property="goodsId" column="sku_goods_id" />
                <result property="goodsWeight" column="goods_weight" />
            </collection>
        </collection>
    </resultMap>
@@ -54,6 +59,7 @@
            c.original_price sku_original_price,
            c.present_price sku_present_price,
            c.style_id sku_style_id,
            c.goods_weight goodsWeight,
            c.goods_id sku_goods_id
        from mall_goods a
          left join mall_goods_style b on a.id = b.goods_id
@@ -72,6 +78,10 @@
                a.present_price,
                a.score,
                a.is_hot,
                a.carriage_type,
                a.carriage_amount,
                a.carriage_rule_id,
                a.goods_weight,
                min(b.id) skuId,
                min(b.present_price) price,
                sum(b.stock) stock,
@@ -220,10 +230,6 @@
    <select id="selectMallGoodsCommentListQueryInPage" resultType="cc.mrbird.febs.mall.vo.MallGoodsCommentVo">
        select
        a.*,
        (select count(z.id) from mall_goods_comment z where z.goods_id=#{record.goodsId} and a.star <![CDATA[ > ]]> 4) greatNum,
        (select count(z.id) from mall_goods_comment z where z.goods_id=#{record.goodsId}
                                                        and (a.star <![CDATA[ >= ]]> 3 and a.star <![CDATA[ <= ]]> 4)) goodNum,
        (select count(z.id) from mall_goods_comment z where z.goods_id=#{record.goodsId} and (a.star <![CDATA[ < ]]> 3 )) badNum,
        b.name name,
        b.avatar avatar
        from mall_goods_comment a
@@ -259,4 +265,117 @@
            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>
    <update id="updateCarriageRuleId">
        update mall_goods
        set carriage_rule_id = null
        where id=#{id}
    </update>
    <update id="updateCarriageAmount">
        update mall_goods
        set carriage_amount = null
        where id=#{id}
    </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,
        a.carriage_type,
        a.carriage_amount,
        a.carriage_rule_id,
        a.goods_weight,
        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
            <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="selectMallGoodsListQueryByRuleId" resultType="cc.mrbird.febs.mall.entity.MallGoods">
        select a.goods_name from mall_goods a where a.carriage_rule_id = #{id}
    </select>
    <select id="selectMallGoodsListQueryByRuleIdAndIsSale" resultType="cc.mrbird.febs.mall.entity.MallGoods">
        select a.goods_name
        from mall_goods a
        where a.carriage_rule_id = #{id}
            and a.is_sale = #{isSale}
    </select>
</mapper>