From 5952d2383571c3fcd96dc0eaad5347b21fce415d Mon Sep 17 00:00:00 2001
From: huliguo <2023611923@qq.com>
Date: 星期一, 02 六月 2025 19:11:15 +0800
Subject: [PATCH] 用户管理

---
 ruoyi-system/src/main/resources/mapper/system/AppUserMapper.xml |   79 ++++++++++++++++++++++++++++++++++++++-
 1 files changed, 76 insertions(+), 3 deletions(-)

diff --git a/ruoyi-system/src/main/resources/mapper/system/AppUserMapper.xml b/ruoyi-system/src/main/resources/mapper/system/AppUserMapper.xml
index be3036d..b2eb90f 100644
--- a/ruoyi-system/src/main/resources/mapper/system/AppUserMapper.xml
+++ b/ruoyi-system/src/main/resources/mapper/system/AppUserMapper.xml
@@ -9,13 +9,86 @@
             tbu.user_name,
             tbu.phone,
             tbu.create_time,
-            tbu.balance,
+            ifnull(tbu.balance,0.00) as balance,
             tbu.status,
             ifnull(bingding.num , 0) as bingDingUser,
             ifnull(buy.num , 0)  as buyNum,
             ifnull(sell.num , 0) as sellNum
         from tb_user tbu
-        LEFT JOIN tb_user u2 ON u1.id = u2.invite_id
-        left join (select user_id, count(1) as num from tb_order  where  status = 6  group by user_id) buy on tbu.id=buy.user_id
+        LEFT JOIN (select u.id,count(iu.id) as num from tb_user u LEFT JOIN tb_user iu ON u.id  = iu.invite_id group by u.id) bingding ON tbu.id =  bingding.id
+        left join (select user_id, count(1) as num from tb_order  where  status = 6  group by user_id) buy on tbu.id = buy.user_id
+        left join (select c.user_id,count(o.company_id) as num from tb_company c left join tb_order o on c.id=o.company_id and o.status=6  group by c.user_id) sell on tbu.id = sell.user_id
+        where tbu.is_delete =0
+        <if test="null != dto.username and dto.username != '' ">
+            and tbu.user_name like concat('%',#{dto.username},'%')
+        </if>
+        <if test="null != dto.phone and dto.phone != '' ">
+            and tbu.phone like concat('%',#{dto.phone},'%')
+        </if>
+        <if test="null != dto.startTime and null != dto.endTime">
+            and tbu.create_time between #{dto.startTime} and #{dto.endTime}
+        </if>
+        <if test="null != dto.status">
+            and tbu.status =#{dto.status}
+        </if>
+
+    </select>
+    <select id="getDetailInfoById" resultType="com.ruoyi.system.pojo.vo.AppUserVO">
+        select
+            tbu.user_name as userName,
+            tbu.phone as phone,
+            tbu.create_time as createTime,
+            ifnull(tbu.balance,0.00) as balance,
+            IFNULL(tbu.invite_num, 0) AS inviteNum,
+            invite.user_name as bindUserName,
+            IFNULL(money.audit, 0) AS audit,
+            IFNULL(money.withdraw, 0) AS withdraw,
+            IFNULL(publised.publish_num, 0) AS publishNum,
+            IFNULL(publised.publish_finish_num, 0) AS publishFinishNum,
+            IFNULL(buy.buy_num, 0) AS buyNum,
+            IFNULL(buy.buy_total_money, 0) AS buyTotalMoney,
+            IFNULL(buy.buy_finish_num, 0) AS buyFinishNum
+        from tb_user tbu
+                 left join tb_user invite on invite.id = tbu.invite_id
+                 left join (SELECT
+                                user_id,
+                                SUM(CASE WHEN status = 0 THEN money ELSE 0 END) AS audit,  -- 待审核金额
+                                SUM(CASE WHEN status = 1 THEN money ELSE 0 END) AS withdraw   -- 已提现金额
+                            FROM  tb_withdrawal  WHERE  status IN (0, 1)  group by user_id ) money on tbu.id = money.user_id
+                 left join (select
+                                user_id,
+                                COUNT(*) AS publish_num,-- 发布次数
+                                SUM(CASE WHEN status = 3 THEN 1 ELSE 0 END) AS publish_finish_num -- 发布完成次数
+                            from tb_company  GROUP BY user_id ) publised ON tbu.id = publised.user_id
+                 left join (select
+                                user_id,
+                                count(*) as buy_num,-- 购买次数
+                                sum( price )as buy_total_money,-- 购买总金额
+                                SUM(case when status=6 THEN 1 ELSE 0 end) as buy_finish_num -- 购买订单完成次数
+                            from tb_order  GROUP BY user_id ) buy ON tbu.id = buy.user_id
+        WHERE
+            tbu.id = #{id}
+    </select>
+    <select id="getInviteUserListByInviteId" resultType="com.ruoyi.system.pojo.vo.InviteUser">
+
+        SELECT
+            tbu.id AS user_id,
+            tbu.user_name,
+            tbu.invite_num,
+            COALESCE(commission.total_commission, 0) AS commission_money
+        FROM
+            tb_user tbu
+                LEFT JOIN (SELECT
+                        share_user_id,
+                        user_id AS order_user_id,  -- 订单关联的用户ID(即被邀请用户)
+                        SUM(commission_price) AS total_commission
+                    FROM  tb_order  WHERE   status = 6  -- 已完成
+                        AND share_user_id = #{id}
+                    GROUP BY share_user_id, user_id     -- 按分佣用户和订单关联用户分组
+                    ) commission ON tbu.id = commission.order_user_id  -- 关联被邀请用户ID
+        WHERE
+            tbu.status != 3               -- 未注销
+            AND tbu.is_delete = 0         -- 未删除
+            AND tbu.invite_id = #{id};
     </select>
 </mapper>
\ No newline at end of file

--
Gitblit v1.7.1