Administrator
2025-05-19 9b51a95fa8bc9b3a86108c6900e17fc55f8db467
src/main/resources/mapper/modules/MallGoodsMapper.xml
@@ -13,6 +13,7 @@
        <result property="goodsDetails" column="goods_details" />
        <result property="isSale" column="is_sale" />
        <result property="originalPrice" column="original_price" />
        <result property="staticPropPrice" column="staticPropPrice" />
        <result property="presentPrice" column="present_price" />
        <result property="categoryId" column="category_id" />
        <result property="volume" column="volume" />
@@ -26,6 +27,10 @@
        <result property="carriageAmount" column="carriage_amount" />
        <result property="carriageRuleId" column="carriage_rule_id" />
        <result property="goodsWeight" column="goods_weight" />
        <result property="levelOnePrice" column="level_one_price" />
        <result property="levelTwoPrice" column="level_two_price" />
        <result property="levelThreePrice" column="level_three_price" />
        <result property="hasCollect" column="hasCollect" />
        <collection property="styles" ofType="cc.mrbird.febs.mall.entity.MallGoodsStyle">
            <id property="id" column="style_id" />
            <result property="name" column="style_name" />
@@ -37,11 +42,15 @@
                <result property="stock" column="sku_stock" />
                <result property="skuVolume" column="sku_volume" />
                <result property="originalPrice" column="sku_original_price" />
                <result property="staticPropPrice" column="sku_static_prop_price" />
                <result property="presentPrice" column="sku_present_price" />
                <result property="styleId" column="sku_style_id"/>
                <result property="goodsId" column="sku_goods_id" />
                <result property="skuGoodsWeight" column="goods_weight" />
                <result property="skuGoodsWeight" column="sku_goods_weight" />
                <result property="sample" column="sample" />
                <result property="levelOnePrice" column="sku_level_one_price" />
                <result property="levelTwoPrice" column="sku_level_two_price" />
                <result property="levelThreePrice" column="sku_level_three_price" />
            </collection>
        </collection>
    </resultMap>
@@ -49,6 +58,7 @@
    <select id="selectGoodsDetailById" resultMap="MallGoodsMap">
        select
            a.*,
            case when collection.id is null then 2 else 1 end hasCollect,
            b.id style_id,
            b.name style_name,
            b.goods_id style_goods_id,
@@ -58,14 +68,20 @@
            c.stock sku_stock,
            c.sku_volume,
            c.original_price sku_original_price,
            FLOOR((a.original_price * a.static_prop)/100) staticPropPrice,
            c.present_price sku_present_price,
            c.style_id sku_style_id,
            c.goods_weight skuGoodsWeight,
            c.goods_weight sku_goods_weight,
            c.sample sample,
            FLOOR((c.original_price*a.static_prop)/100) sku_static_prop_price,
            c.level_one_price sku_level_one_price,
            c.level_two_price sku_level_two_price,
            c.level_three_price sku_level_three_price,
            c.goods_id sku_goods_id
        from mall_goods a
          left join mall_goods_style b on a.id = b.goods_id
          left join mall_goods_sku c on b.id=c.style_id
          left join mall_member_collection collection on a.id=collection.goods_id
        where a.id=#{id}
    </select>
@@ -76,21 +92,33 @@
                a.goods_name,
                a.goods_introdution goodsIntroduction,
                a.thumb,
                a.unit,
                a.original_price,
                FLOOR((a.original_price * a.static_prop)/100) staticPropPrice,
                a.present_price,
                a.level_one_price,
                a.level_two_price,
                a.level_three_price,
                a.score,
                a.is_hot,
                a.carriage_type,
                a.carriage_amount,
                a.carriage_rule_id,
                a.goods_weight,
                a.order_number,
                <if test="record.memberId != null">
                    case when collection.id is null then 2 else 1 end hasCollect,
                </if>
                min(b.id) skuId,
                min(b.present_price) price,
                sum(b.stock) stock,
                ifnull(sum(b.stock), a.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
                 <if test="record.memberId != null">
                    left join mall_member_collection collection on a.id=collection.goods_id and collection.member_id=#{record.memberId}
                 </if>
            <where>
                a.is_sale=1
                <if test="record != null">
@@ -100,8 +128,11 @@
                    <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 test="record.goodsType != null and record.goodsType != '' and record.goodsType == 1">
                        and a.goods_type = #{record.goodsType}
                    </if>
                    <if test="record.goodsType != null and record.goodsType != '' and record.goodsType == 2">
                        and a.goods_type = #{record.goodsType}
                    </if>
                    <if test="record.goodsType == 3">
                        and a.present_price = 0
@@ -115,11 +146,14 @@
                </if>
            </where>
            group by a.id
            order by a.id desc
            order by a.order_number ASC
        ) 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 == 1">
                order by a.is_hot, a.saleVolume desc, a.id
                order by a.order_number ASC
            </if>
            <if test="record.sortType == 2">
                order by a.saleVolume desc
@@ -237,6 +271,7 @@
        from mall_goods_comment a
        left join mall_member b on b.id = a.member_id
        <where>
                                       and a.show_state =1
            <if test="record != null">
                <if test="record.goodsId != null and record.goodsId != ''">
                    and a.goods_id=#{record.goodsId}
@@ -269,10 +304,10 @@
    <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[ > ]]> 4 and z.show_state = 1) 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
                                                            and (z.star <![CDATA[ >= ]]> 3 and z.star <![CDATA[ <= ]]> 4) and z.show_state = 1) goodNum,
            (select count(z.id) from mall_goods_comment z where z.goods_id = #{id} and (z.star <![CDATA[ < ]]> 3 ) and z.show_state = 1) badNum
        from mall_goods_comment a limit 1
    </select>
@@ -309,7 +344,9 @@
        a.goods_name,
        a.goods_introdution goodsIntroduction,
        a.thumb,
        a.unit,
        a.original_price,
        FLOOR((a.original_price * a.static_prop)/100) staticPropPrice,
        a.present_price,
        a.score,
        a.is_hot,
@@ -317,6 +354,7 @@
        a.carriage_amount,
        a.carriage_rule_id,
        a.goods_weight,
        a.order_number,
        min(b.id) skuId,
        min(b.present_price) price,
        sum(b.stock) stock,
@@ -334,7 +372,7 @@
                    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
                    and a.goods_type = #{record.goodsType}
                </if>
                <if test="record.goodsType == 3">
                    and a.present_price = 0
@@ -348,11 +386,14 @@
            </if>
        </where>
        group by a.id
        order by a.id desc
        order by a.order_number ASC
        ) 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 == 1">
                order by a.is_hot, a.saleVolume desc, a.id
                order by a.order_number ASC
            </if>
            <if test="record.sortType == 2">
                order by a.saleVolume desc