<?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>
|