From 9b51a95fa8bc9b3a86108c6900e17fc55f8db467 Mon Sep 17 00:00:00 2001
From: Administrator <15274802129@163.com>
Date: Mon, 19 May 2025 17:02:07 +0800
Subject: [PATCH] refactor(vip): 优化积分和返佣计算逻辑

---
 src/main/resources/mapper/modules/MallGoodsMapper.xml |   91 ++++++++++++++++++++++++++++++++++++++++-----
 1 files changed, 80 insertions(+), 11 deletions(-)

diff --git a/src/main/resources/mapper/modules/MallGoodsMapper.xml b/src/main/resources/mapper/modules/MallGoodsMapper.xml
index fbeab66..8248c79 100644
--- a/src/main/resources/mapper/modules/MallGoodsMapper.xml
+++ b/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" />
@@ -22,6 +23,14 @@
         <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" />
+        <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" />
@@ -33,9 +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="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>
@@ -43,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,
@@ -52,12 +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 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>
 
@@ -68,17 +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">
@@ -88,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
@@ -103,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
@@ -225,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}
@@ -257,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>
 
@@ -278,6 +325,18 @@
         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
@@ -285,10 +344,17 @@
         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,
+        a.carriage_type,
+        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,
@@ -306,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
@@ -320,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

--
Gitblit v1.9.1