2025-06-16 19:01:09 +08:00
<?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= "cn.iocoder.yudao.module.tkdata.dal.mysql.newhosts.NewHostsMapper" >
<!--
一般情况下,尽可能使用 Mapper 进行 CRUD 增删改查即可。
无法满足的场景,例如说多表关联查询,才使用 XML 编写 SQL。
代码生成器暂时只生成 Mapper XML 文件本身,更多推荐 MybatisX 快速开发插件来生成查询。
文档可见: https://www.iocoder.cn/MyBatis/x-plugins/
-->
2025-06-23 21:49:21 +08:00
<select id= "selectPageWithXML" resultType= "cn.iocoder.yudao.module.tkdata.dal.dataobject.newhosts.NewHostsDO" >
select ns.id,hosts_id, hosts_level, hosts_coins, Invitation_type, fans, fllowernum,
2025-07-02 14:20:28 +08:00
yesterday_coins,ns.create_time, country, online_fans,hosts_kind ,is_assigned,uid from server_new_hosts ns left join server_country_info ci ON ns.country = ci.country_name
2025-06-23 21:49:21 +08:00
WHERE tenant_id =#{req.tenantId,jdbcType=BIGINT}
<!-- 主播国家筛选 -->
<if test= "req.country!= '' and req.country != null" >
and ci.country_group_name =#{req.country,jdbcType=VARCHAR}
</if>
2025-07-02 14:20:28 +08:00
<if test= "req.userId != null " >
2025-06-24 15:20:23 +08:00
and ns.user_id =#{req.userId,jdbcType=BIGINT}
</if>
2025-06-23 21:49:21 +08:00
<!-- 按照入库时间筛选主播 -->
<if test= "req.createTime != null" >
and DATE(ns.create_time) =#{req.createTime}
</if>
<!-- 主播 Id 模糊搜索 -->
<if test= "req.hostsId != '' and req.hostsId != null " >
and ns.hosts_id like concat(#{req.hostsId,jdbcType=VARCHAR},'%')
</if>
<!-- 是否分配筛选 -->
2025-07-02 14:20:28 +08:00
<if test= "req.isAssigned != null " >
2025-06-23 21:49:21 +08:00
and ns.is_assigned =#{req.isAssigned,jdbcType=INTEGER}
</if>
<!-- 主播等级筛选 -->
<if test= "req.hostsLevel != null and req.hostsLevel != ''" >
and ns.hosts_level =#{req.hostsLevel,jdbcType=VARCHAR}
</if>
<!-- 今日主播金币筛选 -->
2025-07-02 14:20:28 +08:00
<if test= "req.hostsCoinsMin != null and req.hostsCoinsMax == null " >
2025-06-23 21:49:21 +08:00
and ns.hosts_coins >=#{req.hostsCoinsMin,jdbcType=INTEGER}
</if>
2025-07-02 14:20:28 +08:00
<if test= "req.hostsCoinsMax != null and req.hostsCoinsMin == null " >
2025-06-23 21:49:21 +08:00
and ns.hosts_coins < =#{req.hostsCoinsMax,jdbcType=INTEGER}
</if>
<if test= "req.hostsCoinsMin != null and req.hostsCoinsMax != null " >
and ns.hosts_coins between #{req.hostsCoinsMin,jdbcType=INTEGER} and #{req.hostsCoinsMax,jdbcType=INTEGER}
</if>
<!-- 昨日主播金币筛选 -->
2025-07-02 14:20:28 +08:00
<if test= "req.yesterdayCoinsMin != null and req.yesterdayCoinsMax == null " >
2025-06-23 21:49:21 +08:00
and ns.yesterday_coins >=#{req.yesterdayCoinsMin,jdbcType=INTEGER}
</if>
2025-07-02 14:20:28 +08:00
<if test= "req.yesterdayCoinsMax != null and req.yesterdayCoinsMin == null " >
2025-06-23 21:49:21 +08:00
and ns.yesterday_coins < =#{req.yesterdayCoinsMax,jdbcType=INTEGER}
</if>
<if test= "req.yesterdayCoinsMin != null and req.yesterdayCoinsMax != null " >
and ns.yesterday_coins between #{req.yesterdayCoinsMin,jdbcType=INTEGER} and #{req.yesterdayCoinsMax,jdbcType=INTEGER}
</if>
<!-- 主播粉丝数筛选 -->
2025-07-02 14:20:28 +08:00
<if test= "req.fansMin != null and req.fansMax == null " >
2025-06-23 21:49:21 +08:00
and ns.fans >=#{req.fansMin,jdbcType=INTEGER}
</if>
2025-07-02 14:20:28 +08:00
<if test= "req.fansMax != null and req.fansMin == null " >
2025-06-23 21:49:21 +08:00
and ns.fans < =#{req.fansMax,jdbcType=INTEGER}
</if>
<if test= "req.fansMin != null and req.fansMax != null " >
and ns.fans between #{req.fansMin,jdbcType=INTEGER} and #{req.fansMax,jdbcType=INTEGER}
</if>
<!-- 主播关注筛选 -->
2025-07-02 14:20:28 +08:00
<if test= "req.fllowernumMin != null and req.fllowernumMax == null" >
2025-06-23 21:49:21 +08:00
and ns.fllowernum >=#{req.fllowernumMin,jdbcType=INTEGER}
</if>
2025-07-02 14:20:28 +08:00
<if test= "req.fllowernumMax != null and req.fllowernumMin == null " >
2025-06-23 21:49:21 +08:00
and ns.fllowernum < =#{req.fllowernumMax,jdbcType=INTEGER}
</if>
<if test= "req.fllowernumMin != null and req.fllowernumMax != null " >
and ns.fllowernum between #{req.fllowernumMin,jdbcType=INTEGER} and #{req.fllowernumMax,jdbcType=INTEGER}
</if>
<!-- 主播在线人数筛选 -->
2025-07-02 14:20:28 +08:00
<if test= "req.onlineFansMin != null and req.onlineFansMax == null " >
2025-06-23 21:49:21 +08:00
and ns.online_fans >=#{req.onlineFansMin,jdbcType=INTEGER}
</if>
2025-07-02 14:20:28 +08:00
<if test= "req.onlineFansMax != null and req.onlineFansMin == null " >
2025-06-23 21:49:21 +08:00
and ns.online_fans < = #{req.onlineFansMax,jdbcType=INTEGER}
</if>
<if test= "req.onlineFansMin != null and req.onlineFansMax != null " >
and ns.online_fans between #{req.onlineFansMin,jdbcType=INTEGER} and #{req.onlineFansMax,jdbcType=INTEGER}
</if>
<!-- 邀请类筛选 -->
<if test= "req.invitationType != null" >
and ns.Invitation_type =#{req.invitationType,jdbcType=INTEGER}
</if>
<!-- 排序类型 -->
2025-07-02 14:20:28 +08:00
<!-- 排序类型 -->
2025-06-23 21:49:21 +08:00
order by
<choose >
2025-07-02 14:20:28 +08:00
<!-- 传空和默认的情况下按照时间降序排序 -->
<when test= "req.sortName == null or req.sortName == ''" >
ns.create_time desc
2025-06-23 21:49:21 +08:00
</when>
2025-07-02 14:20:28 +08:00
<!-- sortName 有值的情况下排序 -->
<when test= "req.sortName != null and req.sort != null" >
<choose >
<when test= "req.sortName == 'createTime'" >
ns.create_time ${req.sort}
</when>
<when test= "req.sortName == 'yesterdayCoins'" >
ns.yesterday_coins ${req.sort}
</when>
<when test= "req.sortName == 'hostsCoins'" >
ns.hosts_coins ${req.sort}
</when>
<when test= "req.sortName == 'fans'" >
ns.fans ${req.sort}
</when>
<when test= "req.sortName == 'fllowernum'" >
ns.fllowernum ${req.sort}
</when>
<when test= "req.sortName == 'onlineFans'" >
ns.online_fans ${req.sort}
</when>
<otherwise >
ns.create_time desc
</otherwise>
</choose>
2025-06-23 21:49:21 +08:00
</when>
<otherwise >
ns.create_time desc
</otherwise>
</choose>
</select>
2025-06-16 19:01:09 +08:00
</mapper>