123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169 |
- <?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="top.continew.admin.business.mapper.TgUserMapper">
- <!-- 通用查询映射结果 -->
- <!-- 通用查询映射结果 -->
- <resultMap id="BaseResultMap" type="top.continew.admin.business.model.entity.TgUser">
- <id column="id" property="id"/>
- <result column="tg_id" property="tgId"/>
- <result column="tg_account" property="tgAccount"/>
- <result column="first_name" property="firstName"/>
- <result column="last_name" property="lastName"/>
- <result column="nickname" property="nickname"/>
- <result column="real_name" property="realName"/>
- <result column="avatar" property="avatar"/>
- <result column="language_code" property="languageCode"/>
- <result column="wallet_address" property="walletAddress"/>
- <result column="age_limit" property="ageLimit"/>
- <result column="old_user" property="oldUser"/>
- <result column="check_language" property="checkLanguage"/>
- <result column="login_ip" property="loginIp"/>
- <result column="login_time" property="loginTime"/>
- <result column="ip_address_convert" property="ipAddressConvert"/>
- <result column="disable_flag" property="disableFlag"/>
- <result column="channel" property="channel"/>
- <result column="passenger_flow_way" property="passengerFlowWay"/>
- <result column="login_telegram" property="loginTelegram"/>
- <result column="coin_address" property="coinAddress"/>
- <result column="password" property="password"/>
- <result column="mobile" property="mobile"/>
- <result column="sex" property="sex"/>
- <result column="invite_code" property="inviteCode"/>
- <result column="referrer_id" property="referrerId"/>
- <result column="airdrop_coin" property="airdropCoin"/>
- <result column="gold_coin_amount" property="goldCoinAmount"/>
- <result column="gold_coin_total_his" property="goldCoinTotalHis"/>
- <result column="online_time" property="onlineTime"/>
- <result column="user_amount" property="userAmount"/>
- <result column="created_time" property="createdTime"/>
- <result column="updated_time" property="updatedTime"/>
- </resultMap>
- <resultMap id="TgUserResultMap" type="top.continew.admin.business.model.entity.TgUser">
- <id column="id" property="id"/>
- <result column="tg_id" property="tgId"/>
- <result column="tg_account" property="tgAccount"/>
- <result column="first_name" property="firstName"/>
- <result column="last_name" property="lastName"/>
- <result column="nickname" property="nickname"/>
- <result column="real_name" property="realName"/>
- <result column="avatar" property="avatar"/>
- <result column="language_code" property="languageCode"/>
- <result column="wallet_address" property="walletAddress"/>
- <result column="age_limit" property="ageLimit"/>
- <result column="old_user" property="oldUser"/>
- <result column="check_language" property="checkLanguage"/>
- <result column="login_ip" property="loginIp"/>
- <result column="login_time" property="loginTime"/>
- <result column="ip_address_convert" property="ipAddressConvert"/>
- <result column="disable_flag" property="disableFlag"/>
- <result column="channel" property="channel"/>
- <result column="passenger_flow_way" property="passengerFlowWay"/>
- <result column="login_telegram" property="loginTelegram"/>
- <result column="coin_address" property="coinAddress"/>
- <result column="password" property="password"/>
- <result column="mobile" property="mobile"/>
- <result column="sex" property="sex"/>
- <result column="invite_code" property="inviteCode"/>
- <result column="referrer_id" property="referrerId"/>
- <result column="airdrop_coin" property="airdropCoin"/>
- <result column="gold_coin_amount" property="goldCoinAmount"/>
- <result column="gold_coin_total_his" property="goldCoinTotalHis"/>
- <result column="online_time" property="onlineTime"/>
- <result column="user_amount" property="userAmount"/>
- <result column="created_time" property="createdTime"/>
- <result column="updated_time" property="updatedTime"/>
- <result column="referrerName" property="referrerName"/>
- </resultMap>
- <select id="getTgUserOfPage" resultMap="TgUserResultMap">
- select tu.*,
- case
- when ru.first_name IS NOT NULL or ru.last_name IS NOT NULL
- then concat(ru.first_name, ' ', ru.last_name)
- else ru.tg_account
- end as referrerName
- from b_tg_user tu
- left join b_tg_user ru on tu.referrer_id=ru.id
- <where>
- <if test="query.userName != null and query.userName != ''">
- AND (
- tu.tg_account LIKE CONCAT('%', #{query.userName}, '%')
- OR tu.first_name LIKE CONCAT('%', #{query.userName}, '%')
- OR tu.last_name LIKE CONCAT('%', #{query.userName}, '%')
- )
- </if>
- <if test="query.time != null and query.time.size() == 2">
- AND tu.created_time BETWEEN #{query.time[0]} AND #{query.time[1]}
- </if>
- </where>
- order by tu.created_time desc
- </select>
- <select id="getMyTeamUserListByType" resultMap="TgUserResultMap">
- WITH RECURSIVE team_hierarchy AS (
- -- A队:直接被你邀请的用户
- SELECT id,
- tg_id,
- tg_account,
- first_name,
- last_name,
- nickname,
- real_name,
- avatar,
- passenger_flow_way,
- referrer_id,
- created_time,
- 'A' as team_type,
- 1 as level
- FROM b_tg_user
- WHERE referrer_id = #{query.id}
- UNION ALL
- -- B队:被A队邀请的用户
- SELECT u.id,
- u.tg_id,
- u.tg_account,
- u.first_name,
- u.last_name,
- u.nickname,
- u.real_name,
- u.avatar,
- u.passenger_flow_way,
- u.referrer_id,
- u.created_time,
- 'B' as team_type,
- h.level + 1
- FROM b_tg_user u
- JOIN team_hierarchy h ON u.referrer_id = h.id
- WHERE h.level = 1 -- 只获取A队成员邀请的用户
- )
- SELECT id,
- tg_id,
- tg_account,
- first_name,
- last_name,
- nickname,
- real_name,
- avatar,
- passenger_flow_way,
- referrer_id,
- created_time,
- team_type
- FROM team_hierarchy
- where team_type = #{query.teamType}
- <if test="query.userName != null and query.userName != ''">
- AND (
- tg_account LIKE CONCAT('%', #{query.userName}, '%')
- OR first_name LIKE CONCAT('%', #{query.userName}, '%')
- OR last_name LIKE CONCAT('%', #{query.userName}, '%')
- )
- </if>
- <if test="query.time != null and query.time.size() == 2">
- AND created_time BETWEEN #{query.time[0]} AND #{query.time[1]}
- </if>
- ORDER BY created_time desc
- </select>
- </mapper>
|