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/MallOrderInfoMapper.xml |  117 +++++++++++++++++++++++++++++++++++++++++++++++-----------
 1 files changed, 95 insertions(+), 22 deletions(-)

diff --git a/src/main/resources/mapper/modules/MallOrderInfoMapper.xml b/src/main/resources/mapper/modules/MallOrderInfoMapper.xml
index 190092e..c310823 100644
--- a/src/main/resources/mapper/modules/MallOrderInfoMapper.xml
+++ b/src/main/resources/mapper/modules/MallOrderInfoMapper.xml
@@ -57,10 +57,9 @@
                b.name memberName,
                b.bind_phone memberBindPhone,
                b.phone memberPhone,
-               c.name leaderName
+               (select member.name from mall_member member where member.invite_id = b.referrer_id) refererName
         from mall_order_info a
-        left join mall_member b on a.member_id = b.id
-        left join mall_team_leader c on a.take_unique_code = c.unique_code
+        inner join mall_member b on a.member_id = b.id
         <where>
             <if test="record != null">
                 <if test="record.payResult != null and record.payResult != ''">
@@ -109,6 +108,7 @@
         <result column="member_id" property="memberId" />
         <result column="order_time" property="orderTime" />
         <result column="pay_time" property="payTime" />
+        <result column="score_amount" property="scoreAmount" />
         <result column="amount" property="amount" />
         <result column="pay_method" property="payMethod" />
         <result column="pay_order_no" property="payOrderNo" />
@@ -128,6 +128,7 @@
         <result column="take_unique_code" property="takeUniqueCode" />
         <result column="delivery_state" property="deliveryState" />
         <result column="is_home" property="isHome" />
+        <result column="is_free" property="isFree" />
         <result column="del_flag" property="delFlag" />
         <result column="leader_name" property="leaderName" />
         <result column="leader_phone" property="leaderPhone" />
@@ -153,7 +154,12 @@
             <result property="price" column="price" />
             <result property="amount" column="amount" />
             <result property="isNormal" column="is_normal" />
+            <result property="memberInviteId" column="member_invite_id" />
+            <result property="memberCouponId" column="member_coupon_id" />
             <result property="state" column="state" />
+            <result property="itemScoreAmount" column="item_score_amount" />
+            <result property="itemAmount" column="item_amount" />
+            <result property="itemScorePrice" column="item_score_price" />
         </collection>
     </resultMap>
 
@@ -201,9 +207,16 @@
             b.cnt,
             b.price,
             b.amount,
+            b.amount as item_amount ,
+            b.score_amount as item_score_amount ,
+            FLOOR((c.original_price * d.static_prop)/100) as item_score_price ,
+            b.member_invite_id,
+            b.member_coupon_id,
             b.is_normal
         from mall_order_info a
-             inner join mall_order_item b on a.id=b.order_id
+             left join mall_order_item b on a.id=b.order_id
+             left join mall_goods_sku c on c.id=b.sku_id
+             left join mall_goods d on d.id=b.goods_id
         where a.id=#{id}
     </select>
 
@@ -212,7 +225,7 @@
             a.status,
             count(1) cnt
         from mall_order_info a
-        where a.del_flag=2 and a.member_id=#{memberId}
+        where a.del_flag=2 and a.member_id=#{memberId} and order_type = 1
         group by a.status
     </select>
 
@@ -230,8 +243,12 @@
         select * from mall_order_info where status=#{status}
     </select>
 
+    <select id="selectOrderInfoByStatusAndIsInvoice" resultType="cc.mrbird.febs.mall.entity.MallOrderInfo">
+        select * from mall_order_info where status = #{status} and is_invoice = #{isInvoice}
+    </select>
+
     <select id="selectOrderInfoUpTime" resultType="cc.mrbird.febs.mall.entity.MallOrderInfo">
-        select * from mall_order_info where status=#{status} and now() > date_add(order_time,interval 15 minute)
+        select * from mall_order_info where status=#{status} and now() > date_add(order_time,interval 1440 minute)
     </select>
 
     <select id="selectCntDirectOrTeam" resultType="java.lang.Integer">
@@ -348,6 +365,7 @@
         <result column="member_id" property="memberId" />
         <result column="order_time" property="orderTime" />
         <result column="pay_time" property="payTime" />
+        <result column="score_amount" property="scoreAmount" />
         <result column="amount" property="amount" />
         <result column="pay_method" property="payMethod" />
         <result column="pay_order_no" property="payOrderNo" />
@@ -367,6 +385,7 @@
         <result column="take_unique_code" property="takeUniqueCode" />
         <result column="delivery_state" property="deliveryState" />
         <result column="is_home" property="isHome" />
+        <result column="is_free" property="isFree" />
         <result column="del_flag" property="delFlag" />
         <result column="leader_name" property="leaderName" />
         <result column="leader_phone" property="leaderPhone" />
@@ -379,16 +398,50 @@
         <result column="city" property="city" />
         <result column="township" property="township" />
         <result column="detail_address" property="detailAddress" />
+        <result column="express_no" property="expressNo" />
+        <collection property="items" ofType="cc.mrbird.febs.mall.entity.MallOrderItem">
+            <id property="id" column="item_id" />
+            <result property="orderId" column="order_id" />
+            <result property="goodsId" column="goods_id" />
+            <result property="skuId" column="sku_id" />
+            <result property="goodsName" column="goods_name" />
+            <result property="itemScoreAmount" column="item_score_amount" />
+            <result property="itemAmount" column="item_amount" />
+            <result property="itemScorePrice" column="item_score_price" />
+            <result property="goodsName" column="goods_name" />
+            <result property="styleName" column="style_name" />
+            <result property="skuName" column="sku_name" />
+            <result property="skuImage" column="sku_image" />
+            <result property="cnt" column="cnt" />
+            <result property="price" column="price" />
+            <result property="amount" column="amount" />
+            <result property="isNormal" column="is_normal" />
+            <result property="memberInviteId" column="member_invite_id" />
+            <result property="memberCouponId" column="member_coupon_id" />
+            <result property="state" column="state" />
+        </collection>
     </resultMap>
 
     <select id="selectNewApiOrderListInPage" resultMap="NewOrderInfoMap">
         select
-        a.*
+        a.* ,
+        b.* ,
+        b.amount as item_amount ,
+        b.score_amount as item_score_amount ,
+        FLOOR((c.original_price * d.static_prop)/100) as item_score_price ,
+               express.express_no
         from mall_order_info a
+            left join mall_express_info express on a.id=express.order_id
+            left join mall_order_item b on a.id=b.order_id
+            left join mall_goods_sku c on c.id=b.sku_id
+            left join mall_goods d on d.id=b.goods_id
         <where>
             a.del_flag=2
             <if test="record.memberId != null">
                 and a.member_id=#{record.memberId}
+            </if>
+            <if test="record.query != null and record.query != ''">
+                and (b.goods_name like CONCAT('%', CONCAT(#{record.query}, '%')) or b.style_name like CONCAT('%', CONCAT(#{record.query}, '%')) or b.sku_name like CONCAT('%', CONCAT(#{record.query}, '%')))
             </if>
             <if test="record.status == 4 and record.status != 0">
                 and a.status = 4
@@ -414,6 +467,7 @@
         select
         a.*,
         b.goods_name,
+        b.sku_name,
         b.cnt,
         b.price,
         b.amount
@@ -424,19 +478,38 @@
     </select>
 
     <select id="getGoodsStatisticsInPage" resultType="cc.mrbird.febs.mall.vo.AdminGoodsStatisticsVo">
-    select
-        goods_name goodsName,
-        SUM(cnt) goodsCnt
-    from mall_order_item
-    <where>
-        <if test="record.orderIdsStr != null">
-            and order_id in
-                <foreach collection="record.orderIdsStr" item="id" index="index" open="(" close=")" separator=",">
-                    #{id}
-                </foreach>
-        </if>
-    </where>
-        GROUP BY goods_id
-        ORDER BY goods_id desc
-</select>
+        select
+            goods_name goodsName,
+            SUM(cnt) goodsCnt
+        from mall_order_item
+        <where>
+        1=1
+            <if test="record.orderIdsStr != null">
+                and order_id in
+                    <foreach collection="record.orderIdsStr" item="id" index="index" open="(" close=")" separator=",">
+                        #{id}
+                    </foreach>
+            </if>
+        </where>
+            GROUP BY goods_id
+            ORDER BY goods_id desc
+    </select>
+
+    <select id="selectAmountOrTeamAmount" resultType="java.math.BigDecimal">
+        select IFNULL(sum(IFNULL(a.amount,0)),0) from mall_order_info a
+        inner join mall_member b on a.member_id=b.ID
+        <where>
+            a.status in (2,3,4)
+            <if test="type == 1">
+                and b.invite_id=#{inviteId}
+            </if>
+            <if test="type == 2">
+                and FIND_IN_SET(#{inviteId},b.referrer_ids)
+            </if>
+        </where>
+    </select>
+
+    <select id="selectBypayOrderNo" resultType="cc.mrbird.febs.mall.entity.MallOrderInfo">
+        select * from mall_order_info where pay_order_no = #{payOrderNo}
+    </select>
 </mapper>
\ No newline at end of file

--
Gitblit v1.9.1