refactor(mapper): 优化 BigBrotherMapper 查询结构与条件拼接

This commit is contained in:
2026-01-12 18:31:44 +08:00
parent 87492a09f9
commit eeab5939b0

View File

@@ -37,97 +37,86 @@
<select id="selectPageWithXML" resultType="cn.iocoder.yudao.module.tkdata.dal.dataobject.bigbrother.BigBrotherDO">
select sbr.id, sbr.display_id, sbr.user_id_str,sbr.nickname,sbr.level,sbr.hostcoins,
select
sbr.id, sbr.display_id, sbr.user_id_str, sbr.nickname, sbr.level, sbr.hostcoins,
sbr.follower_count, sbr.following_count, sbr.region, sbr.historic_high_coins, sbr.total_gift_coins,
sbr.host_display_id,sbr.create_time, sbr.is_assigned,sbr.fans_level from
server_big_brother sbr left join server_country_info ci ON sbr.region = ci.country_name
where sbr.tenant_id=#{dto.tenantId}
and sbr.deleted = 0
<!-- 大哥所属国家筛选 -->
<if test="dto.region!= '' and dto.region != null">
and ci.country_group_name =#{dto.region,jdbcType=VARCHAR}
sbr.host_display_id, sbr.create_time, sbr.is_assigned, sbr.fans_level
from server_big_brother sbr
<if test="dto.region != null and dto.region != ''">
left join server_country_info ci ON sbr.region = ci.country_name
</if>
<where>
and sbr.tenant_id = #{dto.tenantId}
and sbr.deleted = 0
<if test="dto.region != null and dto.region != ''">
and ci.country_group_name = #{dto.region,jdbcType=VARCHAR}
</if>
<if test="dto.countryName != null and dto.countryName != ''">
and sbr.region = #{dto.countryName}
</if>
<!-- 大哥入库时间筛选 -->
<if test="dto.createTimeStart != null and dto.createTimeEnd != null">
and sbr.create_time BETWEEN #{dto.createTimeStart,jdbcType=TIMESTAMP} and #{dto.createTimeEnd,jdbcType=TIMESTAMP}
and sbr.create_time BETWEEN #{dto.createTimeStart} and #{dto.createTimeEnd}
</if>
<!-- 大哥 Id 模糊搜索 -->
<if test="dto.displayId != null and dto.displayId != '' ">
and sbr.display_id like concat(#{dto.displayId,jdbcType=VARCHAR},'%')
<if test="dto.displayId != null and dto.displayId != ''">
and sbr.display_id like concat(#{dto.displayId}, '%')
</if>
<!-- 大哥打赏的历史最高金币筛选 -->
<if test="dto.historicHighCoinsMin != null and dto.historicHighCoinsMin == null ">
and sbr.historic_high_coins >=#{dto.historicHighCoinsMin,jdbcType=INTEGER}
<if test="dto.historicHighCoinsMin != null">
and sbr.historic_high_coins &gt;= #{dto.historicHighCoinsMin}
</if>
<if test="dto.historicHighCoinsMax != null and dto.historicHighCoinsMax == null ">
and sbr.historic_high_coins &lt;=#{dto.historicHighCoinsMax,jdbcType=INTEGER}
<if test="dto.historicHighCoinsMax != null">
and sbr.historic_high_coins &lt;= #{dto.historicHighCoinsMax}
</if>
<if test="dto.historicHighCoinsMin != null and dto.historicHighCoinsMax != null " >
and sbr.historic_high_coins between #{dto.historicHighCoinsMin,jdbcType=INTEGER} and #{dto.historicHighCoinsMax,jdbcType=INTEGER}
<if test="dto.totalGiftCoinsMin != null">
and sbr.total_gift_coins &gt;= #{dto.totalGiftCoinsMin}
</if>
<!-- 大哥打赏总金币筛选 -->
<if test="dto.totalGiftCoinsMin != null and dto.totalGiftCoinsMax == null ">
and sbr.total_gift_coins >=#{dto.totalGiftCoinsMin,jdbcType=INTEGER}
<if test="dto.totalGiftCoinsMax != null">
and sbr.total_gift_coins &lt;= #{dto.totalGiftCoinsMax}
</if>
<if test="dto.totalGiftCoinsMax != null and dto.totalGiftCoinsMin == null ">
and sbr.total_gift_coins &lt;=#{dto.totalGiftCoinsMax,jdbcType=INTEGER}
<if test="dto.levelMin != null">
and sbr.level &gt;= #{dto.levelMin}
</if>
<if test="dto.totalGiftCoinsMin != null and dto.totalGiftCoinsMax != null " >
and sbr.total_gift_coins between #{dto.totalGiftCoinsMin,jdbcType=INTEGER} and #{dto.totalGiftCoinsMax,jdbcType=INTEGER}
<if test="dto.levelMax != null">
and sbr.level &lt;= #{dto.levelMax}
</if>
<!-- 大哥等级筛选 -->
<if test="dto.levelMin != null and dto.levelMax == null ">
and sbr.level >=#{dto.levelMin,jdbcType=INTEGER}
<if test="dto.fansLevelMin != null">
and sbr.fans_level &gt;= #{dto.fansLevelMin}
</if>
<if test="dto.levelMax != null and dto.levelMin == null ">
and sbr.level &lt;=#{dto.levelMax,jdbcType=INTEGER}
</if>
<if test="dto.levelMin != null and dto.levelMax != null " >
and sbr.level between #{dto.levelMin,jdbcType=INTEGER} and #{dto.levelMax,jdbcType=INTEGER}
</if>
<!-- 粉丝团等级筛选 -->
<if test="dto.fansLevelMin != null and dto.fansLevelMax == null ">
and sbr.fans_level >=#{dto.fansLevelMin,jdbcType=INTEGER}
</if>
<if test="dto.fansLevelMax != null and dto.fansLevelMin == null ">
and sbr.fans_level &lt;=#{dto.fansLevelMax,jdbcType=INTEGER}
</if>
<if test="dto.fansLevelMin != null and dto.fansLevelMax != null " >
and sbr.fans_level between #{dto.fansLevelMin,jdbcType=INTEGER} and #{dto.fansLevelMax,jdbcType=INTEGER}
<if test="dto.fansLevelMax != null">
and sbr.fans_level &lt;= #{dto.fansLevelMax}
</if>
<if test="dto.isAssigned != null">
and sbr.is_assigned =#{dto.isAssigned}
and sbr.is_assigned = #{dto.isAssigned}
</if>
group by sbr.display_id
order by
<!-- 排序类型 -->
</where>
<choose>
<!-- 传空和默认的情况下按照时间降序排序 -->
<when test="dto.sortName == '' or dto.sortName == null">
sbr.create_time desc,sbr.id desc
<when test="dto.sortName == 'createTime' and dto.sort != null">
order by sbr.create_time ${dto.sort}
</when>
<!-- sortNmae 有值的情况下排序 -->
<when test="dto.sortName != null and dto.sort != null ">
<if test="dto.sortName == 'createTime' and dto.sort != null">
sbr.create_time ${dto.sort}
</if>
<!-- 大哥等级排序 -->
<if test="dto.sortName == 'level' and dto.sort != null">
sbr.level ${dto.sort}
</if>
<!-- 大哥打赏金币排序 -->
<if test="dto.sortName == 'hostsCoins' and dto.sort != null">
sbr.hostcoins ${dto.sort}
</if>
<!-- 大哥打赏总金币排序 -->
<if test="dto.sortName == 'totalGiftCoins' and dto.sort != null">
sbr.total_gift_coins ${dto.sort}
</if>
<when test="dto.sortName == 'level' and dto.sort != null">
order by sbr.level ${dto.sort}
</when>
<when test="dto.sortName == 'hostsCoins' and dto.sort != null">
order by sbr.hostcoins ${dto.sort}
</when>
<when test="dto.sortName == 'totalGiftCoins' and dto.sort != null">
order by sbr.total_gift_coins ${dto.sort}
</when>
<otherwise>
order by sbr.create_time desc, sbr.id desc
</otherwise>
</choose>
</select>
</mapper>