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/MallSalesmanMapper.xml |  142 ++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 140 insertions(+), 2 deletions(-)

diff --git a/src/main/resources/mapper/modules/MallSalesmanMapper.xml b/src/main/resources/mapper/modules/MallSalesmanMapper.xml
index edf68f9..994a14b 100644
--- a/src/main/resources/mapper/modules/MallSalesmanMapper.xml
+++ b/src/main/resources/mapper/modules/MallSalesmanMapper.xml
@@ -27,7 +27,6 @@
     </select>
 
     <select id="selectAddressAmountListInPage" resultType="cc.mrbird.febs.mall.vo.AdminMallAddressInfoVo">
-
         SELECT
             a.province,
             a.city
@@ -96,6 +95,145 @@
         a.province
         FROM mall_address_info a
         group by a.province
-</select>
+    </select>
+
+    <select id="selectSalesmanAchieveListInPage" resultType="cc.mrbird.febs.mall.vo.AdminSalesmanAchieveVo">
+        SELECT
+        a.province,
+        a.city,
+        a.name salesmanName,
+        a.id salesmanId,
+        (select count(b.id) from mall_member b where b.salesmans_id = a.id) memberCnt
+        FROM mall_salesman a
+        <where>
+            <if test="record != null" >
+                <if test="record.province != null and record.province != ''">
+                    and a.province = #{record.province}
+                </if>
+                <if test="record.city != null and record.city != ''">
+                    and a.city = #{record.city}
+                </if>
+                <if test="record.name != null and record.name != ''">
+                    and a.name like concat('%',  #{record.name},'%')
+                </if>
+            </if>
+        </where>
+        ORDER BY
+        memberCnt DESC, a.province ASC
+    </select>
+
+    <select id="selectSalesmanAchieveProvince" resultType="cc.mrbird.febs.mall.vo.AdminSalesmanAchieveVo">
+        SELECT
+            a.province
+        FROM mall_salesman a
+        group by a.province
+    </select>
+
+    <select id="selectAdminMemberOrderVoBySalesmanId" resultType="cc.mrbird.febs.mall.vo.AdminMemberOrderVo">
+        select
+            c.name memberName,
+            c.phone memberPhone,
+            a.address memberAddress,
+            a.id orderId,
+            a.order_no orderNo,
+            a.CREATED_TIME createdTime,
+            a.amount orderAmount
+        from
+            mall_order_info a
+        left join mall_member c on a.member_id = c.id
+        where
+            a.status in (2, 3, 4)
+            and  a.order_type = 1
+            and  a.member_id in (
+                select
+                    b.id
+                from mall_member b
+                where
+                    b.salesmans_id = #{salesmanId}
+            )
+    </select>
+
+    <select id="selectAgentAchieveListInPage" resultType="cc.mrbird.febs.mall.vo.AdminMallAgentRecordVo">
+        SELECT
+        a.province,
+        a.city,
+        a.name,
+        a.phone,
+        d.name nickname,
+        (
+            select ifnull(sum(e.amount),0)
+            from mall_money_flow e
+            where e.flow_type = 1
+            and e.type = 20
+            and e.member_id = a.member_id
+        ) rechargeSendAmount,
+        (
+            select count(b.id)
+            from mall_order_info b
+            <where>
+                b.member_id = a.member_id
+                    and (b.status = 4)
+                <if test="record != null" >
+                    <if test="record.startTime != null and record.startTime != ''">
+                        and b.order_time &gt;= #{record.startTime}
+                    </if>
+                    <if test="record.endTime != null and record.endTime != ''">
+                        and b.order_time &lt;= #{record.endTime}
+                    </if>
+                </if>
+            </where>
+        ) orderCnt,
+        (
+            select ifnull(sum(c.amount),0)
+            from mall_order_info c
+
+            <where>
+                c.member_id = a.member_id
+                and (c.status = 4)
+                <if test="record != null" >
+                    <if test="record.startTime != null and record.startTime != ''">
+                        and c.order_time &gt;= #{record.startTime}
+                    </if>
+                    <if test="record.endTime != null and record.endTime != ''">
+                        and c.order_time &lt;= #{record.endTime}
+                    </if>
+                </if>
+            </where>
+        ) orderAmount
+        FROM mall_agent_record a
+        inner join mall_member d on a.member_id = d.id
+        <where>
+            <if test="record != null" >
+                <if test="record.province != null and record.province != ''">
+                    and a.province = #{record.province}
+                </if>
+                <if test="record.city != null and record.city != ''">
+                    and a.city = #{record.city}
+                </if>
+                <if test="record.name != null and record.name != ''">
+                    and a.name like concat('%',  #{record.name},'%')
+                </if>
+                <if test="record.nickname != null and record.nickname != ''">
+                    and d.name like concat('%',  #{record.nickname},'%')
+                </if>
+            </if>
+        </where>
+        ORDER BY orderAmount desc
+    </select>
+
+    <select id="selectAgentAddressProvince" resultType="cc.mrbird.febs.mall.vo.AdminMallAgentRecordVo">
+        SELECT
+            a.province
+        FROM mall_agent_record a
+        group by a.province
+    </select>
+
+    <select id="selectAgentAddressCity" resultType="java.lang.String">
+        SELECT
+            a.city
+        FROM mall_agent_record a
+        where a.province = #{province}
+        group by a.city
+    </select>
 
 </mapper>
\ No newline at end of file

--
Gitblit v1.9.1