huliguo
2025-06-05 0a492b64ca1a4e40cc9ea56eddd1afe2c09a12b3
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.ruoyi.system.mapper.AppUserMapper">
 
 
    <select id="getAppUserPage" resultType="com.ruoyi.system.pojo.vo.AppUserPageVO">
        select
            tbu.id,
            tbu.user_name,
            tbu.phone,
            tbu.create_time,
            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 (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>