新增代充转赠明细

This commit is contained in:
liaozetao
2023-08-18 17:17:34 +08:00
parent 7e351fb88f
commit e48f43bd48
12 changed files with 652 additions and 268 deletions

View File

@@ -12,6 +12,7 @@ public interface UserMapperExpand {
/**
* 分页查询用户信息
*
* @param data
* @return
*/
@@ -19,6 +20,7 @@ public interface UserMapperExpand {
/**
* 查询用户数量
*
* @param erNos
* @return
*/
@@ -40,4 +42,11 @@ public interface UserMapperExpand {
/*用户明细流量团队分页查询*/
List<UserDeatilVo> userDetailFlowTeamListV2(@Param("userDetailQueryDto") UserDetailQueryDto userDetailQueryDto);
/**
* 获取用户地区
*
* @return
*/
List<String> getRegion();
}

View File

@@ -3,6 +3,7 @@ package com.accompany.admin.mapper.recharge;
import com.accompany.admin.vo.charge.RechargeDiamondGiveAdminVo;
import com.accompany.admin.vo.charge.RechargeDiamondGiveDetailAdminVo;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import org.apache.ibatis.annotations.Param;
/**
* @author: liaozetao
@@ -19,14 +20,19 @@ public interface RechargeDiamondGiveHistoryAdminMapper {
* @param endTime
* @return
*/
Page<RechargeDiamondGiveAdminVo> giveByDayPage(Page<RechargeDiamondGiveAdminVo> page, String startTime, String endTime);
Page<RechargeDiamondGiveAdminVo> giveByDayPage(Page<RechargeDiamondGiveAdminVo> page, @Param("startTime") String startTime, @Param("endTime") String endTime);
/**
* 代充转赠明细
*
* @param objectPage
* @param page
* @param fromErBanNo
* @param toErBanNo
* @param toRegion
* @param startTime
* @param endTime
* @param giveDate
* @return
*/
Page<RechargeDiamondGiveDetailAdminVo> giveDetailByDayPage(Page<RechargeDiamondGiveDetailAdminVo> objectPage, String giveDate);
Page<RechargeDiamondGiveDetailAdminVo> giveDetailByDayPage(Page<RechargeDiamondGiveDetailAdminVo> page, @Param("fromErBanNo") String fromErBanNo, @Param("toErBanNo") String toErBanNo, @Param("toRegion") String toRegion, @Param("startTime") String startTime, @Param("endTime") String endTime, @Param("giveDate") String giveDate);
}

View File

@@ -4,6 +4,9 @@ import com.accompany.admin.vo.charge.RechargeDiamondGiveAdminVo;
import com.accompany.admin.vo.charge.RechargeDiamondGiveDetailAdminVo;
import com.accompany.common.model.PageReq;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import org.springframework.web.context.request.ServletWebRequest;
import java.util.List;
/**
* @author: liaozetao
@@ -25,9 +28,35 @@ public interface RechargeDiamondGiveHistoryAdminService {
/**
* 代充转赠明细
*
* @param fromErBanNo
* @param toErBanNo
* @param toRegion
* @param startTime
* @param endTime
* @param giveDate
* @param req
* @return
*/
Page<RechargeDiamondGiveDetailAdminVo> giveDetailByDayPage(String giveDate, PageReq req);
Page<RechargeDiamondGiveDetailAdminVo> giveDetailByDayPage(String fromErBanNo, String toErBanNo, String toRegion, String startTime, String endTime, String giveDate, PageReq req);
/**
* 导出
*
* @param fromErBanNo
* @param toErBanNo
* @param toRegion
* @param startTime
* @param endTime
* @param giveDate
* @param servletWebRequest
*/
void export(String fromErBanNo, String toErBanNo, String toRegion, String startTime, String endTime, String giveDate, ServletWebRequest servletWebRequest);
/**
* 获取用户地区
*
* @return
*/
List<String> getRegion();
}

View File

@@ -1,14 +1,28 @@
package com.accompany.admin.service.recharge.impl;
import cn.hutool.core.collection.CollectionUtil;
import cn.hutool.core.util.StrUtil;
import com.accompany.admin.mapper.UserMapperExpand;
import com.accompany.admin.mapper.recharge.RechargeDiamondGiveHistoryAdminMapper;
import com.accompany.admin.service.recharge.RechargeDiamondGiveHistoryAdminService;
import com.accompany.admin.vo.charge.RechargeDiamondGiveAdminVo;
import com.accompany.admin.vo.charge.RechargeDiamondGiveDetailAdminVo;
import com.accompany.common.model.PageReq;
import com.accompany.payment.mapper.RechargeUserRegionMapper;
import com.accompany.payment.model.RechargeUserRegion;
import com.alibaba.excel.EasyExcel;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.web.context.request.ServletWebRequest;
import java.net.URLEncoder;
import java.util.Comparator;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
/**
* @author: liaozetao
@@ -19,6 +33,12 @@ import org.springframework.stereotype.Service;
@Service
public class RechargeDiamondGiveHistoryAdminServiceImpl implements RechargeDiamondGiveHistoryAdminService {
@Autowired
private UserMapperExpand userMapperExpand;
@Autowired
private RechargeUserRegionMapper rechargeUserRegionMapper;
@Autowired
private RechargeDiamondGiveHistoryAdminMapper rechargeDiamondGiveHistoryAdminMapper;
@@ -28,7 +48,60 @@ public class RechargeDiamondGiveHistoryAdminServiceImpl implements RechargeDiamo
}
@Override
public Page<RechargeDiamondGiveDetailAdminVo> giveDetailByDayPage(String giveDate, PageReq req) {
return rechargeDiamondGiveHistoryAdminMapper.giveDetailByDayPage(new Page<>(req.getPage(), req.getPageSize()), giveDate);
public Page<RechargeDiamondGiveDetailAdminVo> giveDetailByDayPage(String fromErBanNo, String toErBanNo, String toRegion, String startTime, String endTime, String giveDate, PageReq req) {
Page<RechargeDiamondGiveDetailAdminVo> iPage = rechargeDiamondGiveHistoryAdminMapper.giveDetailByDayPage(new Page<>(req.getPage(), req.getPageSize()), fromErBanNo, toErBanNo, toRegion, startTime, endTime, giveDate);
List<RechargeDiamondGiveDetailAdminVo> records = iPage.getRecords();
if (CollectionUtil.isNotEmpty(records)) {
List<Long> fromUidList = records.stream().map(RechargeDiamondGiveDetailAdminVo::getFromUid).distinct().collect(Collectors.toList());
List<RechargeUserRegion> rechargeUserRegions = rechargeUserRegionMapper.selectList(Wrappers.<RechargeUserRegion>lambdaQuery()
.in(RechargeUserRegion::getUid, fromUidList));
Map<Long, List<RechargeUserRegion>> userRegionMap = null;
if (CollectionUtil.isNotEmpty(rechargeUserRegions)) {
userRegionMap = rechargeUserRegions.stream().collect(Collectors.groupingBy(RechargeUserRegion::getUid));
}
for (RechargeDiamondGiveDetailAdminVo record : records) {
Long fromUid = record.getFromUid();
StringBuilder fromRegion = new StringBuilder(StrUtil.EMPTY);
if (CollectionUtil.isNotEmpty(userRegionMap) && userRegionMap.containsKey(fromUid)) {
List<RechargeUserRegion> userRegions = userRegionMap.get(fromUid).stream().sorted(Comparator.comparing(RechargeUserRegion::getSeq)).collect(Collectors.toList());
for (int i = 0, len = userRegions.size(); i < len; i++) {
RechargeUserRegion userRegion = userRegions.get(i);
fromRegion.append(userRegion.getName());
if (i != len - 1) {
fromRegion.append(StrUtil.COMMA);
}
}
}
record.setFromRegion(fromRegion.toString());
}
}
return iPage;
}
@Override
public void export(String fromErBanNo, String toErBanNo, String toRegion, String startTime, String endTime, String giveDate, ServletWebRequest servletWebRequest) {
PageReq req = new PageReq();
req.setPage(1);
req.setPageSize(10000);
Page<RechargeDiamondGiveDetailAdminVo> page = giveDetailByDayPage(fromErBanNo, toErBanNo, toRegion, startTime, endTime, giveDate, req);
List<RechargeDiamondGiveDetailAdminVo> records = page.getRecords();
if (servletWebRequest.getResponse() != null) {
try {
//这里注意 有同学反应使用swagger 会导致各种问题请直接用浏览器或者用postman
servletWebRequest.getResponse().setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet");
servletWebRequest.getResponse().setCharacterEncoding("utf-8");
//这里URLEncoder.encode可以防止中文乱码 当然和easyexcel没有关系
String fileName = URLEncoder.encode(giveDate + "代充转赠明细", "UTF-8").replaceAll("\\+", "%20");
servletWebRequest.getResponse().setHeader("Content-disposition", "attachment;filename*=utf-8''" + fileName + ".xlsx");
EasyExcel.write(servletWebRequest.getResponse().getOutputStream(), RechargeDiamondGiveDetailAdminVo.class).sheet(giveDate + "代充转赠明细").doWrite(records);
} catch (Exception e) {
log.error(e.getMessage(), e);
}
}
}
@Override
public List<String> getRegion() {
return userMapperExpand.getRegion();
}
}

View File

@@ -21,6 +21,11 @@ public class RechargeDiamondGiveDetailAdminVo {
@ExcelProperty("时间")
private String createTime;
/**
* 转出人UID
*/
private Long fromUid;
/**
* 转出人peko id
*/

View File

@@ -12,10 +12,10 @@
select ru.uid from recharge_user as ru where ru.type != 0
)
<if test="startTime != null and startTime != ''">
and date_format(dgh.create_time, '%Y-%m-%d') >= #{startTime}
and date_format(dgh.create_time, '%Y-%m-%d') >= date_format(#{startTime}, '%Y-%m-%d')
</if>
<if test="endTime != null and endTime != ''">
and date_format(dgh.create_time, '%Y-%m-%d') <![CDATA[ <= ]]> #{endTime}
and date_format(dgh.create_time, '%Y-%m-%d') <![CDATA[ <= ]]> date_format(#{endTime}, '%Y-%m-%d')
</if>
group by giveDate
order by giveDate desc
@@ -40,6 +40,21 @@
left join clan as c on c.id = ch.clan_id
left join recharge_user as ru on ru.uid = u1.uid
left join users as u2 on u2.uid = dgh.to_uid
<if test="fromErBanNo != null and fromErBanNo != ''">
and u1.erban_no like concat('%', #{fromErBanNo}, '%')
</if>
<if test="toErBanNo != null and toErBanNo != ''">
and u2.erban_no like concat('%', #{toErBanNo}, '%')
</if>
<if test="toRegion != null and toRegion != ''">
and u2.region = #{toRegion}
</if>
<if test="startTime != null and startTime != ''">
and dgh.create_time >= #{startTime}
</if>
<if test="endTime != null and endTime != ''">
and dgh.create_time <![CDATA[ <= ]]> #{endTime}
</if>
<if test="giveDate != null and giveDate != ''">
and date_format(dgh.create_time, '%Y-%m-%d') = #{giveDate}
</if>

View File

@@ -1,248 +1,254 @@
<?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.accompany.admin.mapper.UserMapperExpand" >
<resultMap id="BaseResultMap" type="com.accompany.admin.vo.UsersVo" >
<id column="uid" property="uid" jdbcType="BIGINT" />
<result column="erban_no" property="erbanNo" jdbcType="BIGINT" />
<result column="phone" property="phone" jdbcType="VARCHAR" />
<result column="birth" property="birth" jdbcType="DATE" />
<result column="star" property="star" jdbcType="TINYINT" />
<result column="nick" property="nick" jdbcType="VARCHAR" />
<result column="email" property="email" jdbcType="VARCHAR" />
<result column="signture" property="signture" jdbcType="VARCHAR" />
<result column="user_voice" property="userVoice" jdbcType="VARCHAR" />
<result column="voice_dura" property="voiceDura" jdbcType="INTEGER" />
<result column="follow_num" property="followNum" jdbcType="INTEGER" />
<result column="fans_num" property="fansNum" jdbcType="INTEGER" />
<result column="def_user" property="defUser" jdbcType="TINYINT" />
<result column="fortune" property="fortune" jdbcType="BIGINT" />
<result column="channel_type" property="channelType" jdbcType="TINYINT" />
<result column="last_login_time" property="lastLoginTime" jdbcType="TIMESTAMP" />
<result column="last_login_ip" property="lastLoginIp" jdbcType="VARCHAR" />
<result column="gender" property="gender" jdbcType="TINYINT" />
<result column="avatar" property="avatar" jdbcType="VARCHAR" />
<result column="region" property="region" jdbcType="VARCHAR" />
<result column="user_desc" property="userDesc" jdbcType="VARCHAR" />
<result column="alipay_account" property="alipayAccount" jdbcType="VARCHAR" />
<result column="alipay_account_name" property="alipayAccountName" jdbcType="VARCHAR" />
<result column="create_time" property="createTime" jdbcType="TIMESTAMP" />
<result column="update_time" property="updateTime" jdbcType="TIMESTAMP" />
<result column="wx_pub_fans_openid" property="wxPubFansOpenid" jdbcType="VARCHAR" />
<result column="wx_pub_fans_gender" property="wxPubFansGender" jdbcType="TINYINT" />
<result column="room_uid" property="roomUid" jdbcType="BIGINT" />
<result column="share_uid" property="shareUid" jdbcType="BIGINT" />
<result column="share_channel" property="shareChannel" jdbcType="TINYINT" />
<result column="wx_openId" property="wxOpenid" jdbcType="VARCHAR" />
<result column="os" property="os" jdbcType="VARCHAR" />
<result column="osVersion" property="osversion" jdbcType="VARCHAR" />
<result column="app" property="app" jdbcType="VARCHAR" />
<result column="imei" property="imei" jdbcType="VARCHAR" />
<result column="channel" property="channel" jdbcType="VARCHAR" />
<result column="linkedme_channel" property="linkedmeChannel" jdbcType="VARCHAR" />
<result column="isp_type" property="ispType" jdbcType="VARCHAR" />
<result column="net_type" property="netType" jdbcType="VARCHAR" />
<result column="model" property="model" jdbcType="VARCHAR" />
<result column="device_id" property="deviceId" jdbcType="VARCHAR" />
<result column="app_version" property="appVersion" jdbcType="VARCHAR" />
<result column="gold_num" property="goldNum" jdbcType="BIGINT" />
<result column="radish_num" property="radishNum" jdbcType="BIGINT" />
<result column="diamonds_num" property="diamondsNum" jdbcType="DOUBLE"/>
</resultMap>
<mapper namespace="com.accompany.admin.mapper.UserMapperExpand">
<resultMap id="BaseResultMap" type="com.accompany.admin.vo.UsersVo">
<id column="uid" property="uid" jdbcType="BIGINT"/>
<result column="erban_no" property="erbanNo" jdbcType="BIGINT"/>
<result column="phone" property="phone" jdbcType="VARCHAR"/>
<result column="birth" property="birth" jdbcType="DATE"/>
<result column="star" property="star" jdbcType="TINYINT"/>
<result column="nick" property="nick" jdbcType="VARCHAR"/>
<result column="email" property="email" jdbcType="VARCHAR"/>
<result column="signture" property="signture" jdbcType="VARCHAR"/>
<result column="user_voice" property="userVoice" jdbcType="VARCHAR"/>
<result column="voice_dura" property="voiceDura" jdbcType="INTEGER"/>
<result column="follow_num" property="followNum" jdbcType="INTEGER"/>
<result column="fans_num" property="fansNum" jdbcType="INTEGER"/>
<result column="def_user" property="defUser" jdbcType="TINYINT"/>
<result column="fortune" property="fortune" jdbcType="BIGINT"/>
<result column="channel_type" property="channelType" jdbcType="TINYINT"/>
<result column="last_login_time" property="lastLoginTime" jdbcType="TIMESTAMP"/>
<result column="last_login_ip" property="lastLoginIp" jdbcType="VARCHAR"/>
<result column="gender" property="gender" jdbcType="TINYINT"/>
<result column="avatar" property="avatar" jdbcType="VARCHAR"/>
<result column="region" property="region" jdbcType="VARCHAR"/>
<result column="user_desc" property="userDesc" jdbcType="VARCHAR"/>
<result column="alipay_account" property="alipayAccount" jdbcType="VARCHAR"/>
<result column="alipay_account_name" property="alipayAccountName" jdbcType="VARCHAR"/>
<result column="create_time" property="createTime" jdbcType="TIMESTAMP"/>
<result column="update_time" property="updateTime" jdbcType="TIMESTAMP"/>
<result column="wx_pub_fans_openid" property="wxPubFansOpenid" jdbcType="VARCHAR"/>
<result column="wx_pub_fans_gender" property="wxPubFansGender" jdbcType="TINYINT"/>
<result column="room_uid" property="roomUid" jdbcType="BIGINT"/>
<result column="share_uid" property="shareUid" jdbcType="BIGINT"/>
<result column="share_channel" property="shareChannel" jdbcType="TINYINT"/>
<result column="wx_openId" property="wxOpenid" jdbcType="VARCHAR"/>
<result column="os" property="os" jdbcType="VARCHAR"/>
<result column="osVersion" property="osversion" jdbcType="VARCHAR"/>
<result column="app" property="app" jdbcType="VARCHAR"/>
<result column="imei" property="imei" jdbcType="VARCHAR"/>
<result column="channel" property="channel" jdbcType="VARCHAR"/>
<result column="linkedme_channel" property="linkedmeChannel" jdbcType="VARCHAR"/>
<result column="isp_type" property="ispType" jdbcType="VARCHAR"/>
<result column="net_type" property="netType" jdbcType="VARCHAR"/>
<result column="model" property="model" jdbcType="VARCHAR"/>
<result column="device_id" property="deviceId" jdbcType="VARCHAR"/>
<result column="app_version" property="appVersion" jdbcType="VARCHAR"/>
<result column="gold_num" property="goldNum" jdbcType="BIGINT"/>
<result column="radish_num" property="radishNum" jdbcType="BIGINT"/>
<result column="diamonds_num" property="diamondsNum" jdbcType="DOUBLE"/>
</resultMap>
<select id="selectUserWithGold" parameterType="java.util.Map" resultMap="BaseResultMap">
select b.erban_no,b.nick,b.avatar,golds as gold_num, diamonds as diamonds_num, crystals as radish_num from user_purse as a
join users as b on a.uid=b.uid
where b.erban_no in
<foreach item="item" index="index" collection="ids" open="(" separator="," close=")">
#{item}
</foreach>
limit #{start},#{pageSize}
</select>
<select id="selectUserWithGold" parameterType="java.util.Map" resultMap="BaseResultMap">
select b.erban_no,b.nick,b.avatar,golds as gold_num, diamonds as diamonds_num, crystals as radish_num from
user_purse as a
join users as b on a.uid=b.uid
where b.erban_no in
<foreach item="item" index="index" collection="ids" open="(" separator="," close=")">
#{item}
</foreach>
limit #{start},#{pageSize}
</select>
<select id="selectChannelList" resultType="java.lang.String">
select distinct channel from users
</select>
<select id="selectChannelList" resultType="java.lang.String">
select distinct channel from users
</select>
<select id="getUserWithGoldCount" parameterType="java.util.List" resultType="java.lang.Integer">
select count(1) from users where erban_no in
<foreach item="item" index="index" collection="list" open="(" separator="," close=")">
#{item}
</foreach>
</select>
<select id="getUserWithGoldCount" parameterType="java.util.List" resultType="java.lang.Integer">
select count(1) from users where erban_no in
<foreach item="item" index="index" collection="list" open="(" separator="," close=")">
#{item}
</foreach>
</select>
<!-- 用户明细全部分页查询 -->
<select id="userDetailList" resultType="com.accompany.admin.vo.stats.UserDeatilVo">
select
u.uid,u.erban_no,u.nick,u.create_time,u.channel,u.model,u.new_device,u.invite_code,u.invite_uid,u.device_id,
ac.register_ip
from
(
select uid,erban_no,nick,create_time,channel,model,new_device,invite_code,invite_uid,device_id from users
<where>
def_user = 1
<if test="userDetailQueryDto.erbanNo != null and userDetailQueryDto.erbanNo != '' ">
and erban_no = #{userDetailQueryDto.erbanNo}
</if>
<if test="userDetailQueryDto.phone != null and userDetailQueryDto.phone != '' ">
and phone = #{userDetailQueryDto.phone}
</if>
<if test="userDetailQueryDto.startDate != null and userDetailQueryDto.startDate != '' ">
and create_time &gt;= #{userDetailQueryDto.startDate}
</if>
<if test="userDetailQueryDto.endDate != null and userDetailQueryDto.endDate != '' ">
and create_time &lt; #{userDetailQueryDto.endDate}
</if>
</where>
) u
left join account ac on u.uid = ac.uid
order by u.create_time desc
</select>
<!-- 用户明细全部分页查询 -->
<select id="userDetailList" resultType="com.accompany.admin.vo.stats.UserDeatilVo">
select
u.uid,u.erban_no,u.nick,u.create_time,u.channel,u.model,u.new_device,u.invite_code,u.invite_uid,u.device_id,
ac.register_ip
from
(
select uid,erban_no,nick,create_time,channel,model,new_device,invite_code,invite_uid,device_id from users
<where>
def_user = 1
<if test="userDetailQueryDto.erbanNo != null and userDetailQueryDto.erbanNo != '' ">
and erban_no = #{userDetailQueryDto.erbanNo}
</if>
<if test="userDetailQueryDto.phone != null and userDetailQueryDto.phone != '' ">
and phone = #{userDetailQueryDto.phone}
</if>
<if test="userDetailQueryDto.startDate != null and userDetailQueryDto.startDate != '' ">
and create_time &gt;= #{userDetailQueryDto.startDate}
</if>
<if test="userDetailQueryDto.endDate != null and userDetailQueryDto.endDate != '' ">
and create_time &lt; #{userDetailQueryDto.endDate}
</if>
</where>
) u
left join account ac on u.uid = ac.uid
order by u.create_time desc
</select>
<!--直播导流分页查询-->
<select id="userLiveDetailList" resultType="com.accompany.admin.vo.stats.UserDeatilVo">
select
u.uid,u.erban_no,u.nick,u.create_time,u.channel,u.model,u.new_device,u.invite_code,u.invite_uid,u.device_id,
ac.register_ip
from
(
select uid,erban_no,nick,create_time,channel,model,new_device,invite_code,invite_uid,device_id from users
<where>
def_user = 1
<if test="userDetailQueryDto.erbanNo != null and userDetailQueryDto.erbanNo != '' ">
and erban_no = #{userDetailQueryDto.erbanNo}
</if>
<if test="userDetailQueryDto.phone != null and userDetailQueryDto.phone != '' ">
and phone = #{userDetailQueryDto.phone}
</if>
<if test="userDetailQueryDto.startDate != null and userDetailQueryDto.startDate != '' ">
and create_time &gt;= #{userDetailQueryDto.startDate}
</if>
<if test="userDetailQueryDto.endDate != null and userDetailQueryDto.endDate != '' ">
and create_time &lt; #{userDetailQueryDto.endDate}
</if>
</where>
) u
left join account ac on u.uid = ac.uid
<if test="userDetailQueryDto.flowChannelType != null and userDetailQueryDto.flowChannelType == 2 ">
inner join (
SELECT DISTINCT(ufs.uid) FROM
(
SELECT uss.*,rmv.start_time,rmv.end_time from
(
SELECT uid,invite_uid,create_time FROM users uts WHERE uts.invite_uid IS NOT NULL AND uts.invite_uid != ''
) uss
INNER JOIN room_visitor rmv ON uss.invite_uid = rmv.uid
) ufs
LEFT JOIN user_in_room_record uirr
ON ufs.uid = uirr.uid AND ufs.invite_uid = uirr.roomUid
WHERE uirr.create_time >= ufs.start_time AND <![CDATA[ uirr.create_time <= ufs.end_time]]> AND ufs.create_time >= ufs.start_time AND <![CDATA[ ufs.create_time <= ufs.end_time]]>
) fti
on fti.uid = u.uid
</if>
</select>
<!--直播导流分页查询-->
<select id="userLiveDetailList" resultType="com.accompany.admin.vo.stats.UserDeatilVo">
select
u.uid,u.erban_no,u.nick,u.create_time,u.channel,u.model,u.new_device,u.invite_code,u.invite_uid,u.device_id,
ac.register_ip
from
(
select uid,erban_no,nick,create_time,channel,model,new_device,invite_code,invite_uid,device_id from users
<where>
def_user = 1
<if test="userDetailQueryDto.erbanNo != null and userDetailQueryDto.erbanNo != '' ">
and erban_no = #{userDetailQueryDto.erbanNo}
</if>
<if test="userDetailQueryDto.phone != null and userDetailQueryDto.phone != '' ">
and phone = #{userDetailQueryDto.phone}
</if>
<if test="userDetailQueryDto.startDate != null and userDetailQueryDto.startDate != '' ">
and create_time &gt;= #{userDetailQueryDto.startDate}
</if>
<if test="userDetailQueryDto.endDate != null and userDetailQueryDto.endDate != '' ">
and create_time &lt; #{userDetailQueryDto.endDate}
</if>
</where>
) u
left join account ac on u.uid = ac.uid
<if test="userDetailQueryDto.flowChannelType != null and userDetailQueryDto.flowChannelType == 2 ">
inner join (
SELECT DISTINCT(ufs.uid) FROM
(
SELECT uss.*,rmv.start_time,rmv.end_time from
(
SELECT uid,invite_uid,create_time FROM users uts WHERE uts.invite_uid IS NOT NULL AND uts.invite_uid != ''
) uss
INNER JOIN room_visitor rmv ON uss.invite_uid = rmv.uid
) ufs
LEFT JOIN user_in_room_record uirr
ON ufs.uid = uirr.uid AND ufs.invite_uid = uirr.roomUid
WHERE uirr.create_time >= ufs.start_time AND <![CDATA[ uirr.create_time <= ufs.end_time]]> AND
ufs.create_time >= ufs.start_time AND <![CDATA[ ufs.create_time <= ufs.end_time]]>
) fti
on fti.uid = u.uid
</if>
</select>
<!--流量团队分页查询-->
<select id="userDetailFlowTeamList" resultType="com.accompany.admin.vo.stats.UserDeatilVo">
select
u.uid,u.erban_no,u.nick,u.create_time,u.channel,u.model,u.new_device,u.invite_code,u.device_id,
ac.register_ip
from
(
select uid,erban_no,nick,create_time,channel,model,new_device,invite_code,device_id from users
<where>
def_user = 1
<if test="userDetailQueryDto.erbanNo != null and userDetailQueryDto.erbanNo != '' ">
and erban_no = #{userDetailQueryDto.erbanNo}
</if>
<if test="userDetailQueryDto.phone != null and userDetailQueryDto.phone != '' ">
and phone = #{userDetailQueryDto.phone}
</if>
<if test="userDetailQueryDto.startDate != null and userDetailQueryDto.startDate != '' ">
and create_time &gt;= #{userDetailQueryDto.startDate}
</if>
<if test="userDetailQueryDto.endDate != null and userDetailQueryDto.endDate != '' ">
and create_time &lt; #{userDetailQueryDto.endDate}
</if>
<if test="userDetailQueryDto.flowChannelType != null and userDetailQueryDto.flowChannelType == 1 ">
and invite_code IS NOT NULL AND invite_code !=''
</if>
</where>
) u
left join account ac on u.uid = ac.uid
<if test="userDetailQueryDto.flowChannelType != null and userDetailQueryDto.flowChannelType == 1 ">
inner join (select ic.invite_code,ftm.create_time from flow_team_member_invite_code ic left join flow_team_member ftm on ic.member_id = ftm.member_id where ftm.member_status = 1) fti on u.invite_code = fti.invite_code
</if>
where u.create_time > fti.create_time
order by u.create_time desc
</select>
<!--流量团队分页查询-->
<select id="userDetailFlowTeamList" resultType="com.accompany.admin.vo.stats.UserDeatilVo">
select
u.uid,u.erban_no,u.nick,u.create_time,u.channel,u.model,u.new_device,u.invite_code,u.device_id,
ac.register_ip
from
(
select uid,erban_no,nick,create_time,channel,model,new_device,invite_code,device_id from users
<where>
def_user = 1
<if test="userDetailQueryDto.erbanNo != null and userDetailQueryDto.erbanNo != '' ">
and erban_no = #{userDetailQueryDto.erbanNo}
</if>
<if test="userDetailQueryDto.phone != null and userDetailQueryDto.phone != '' ">
and phone = #{userDetailQueryDto.phone}
</if>
<if test="userDetailQueryDto.startDate != null and userDetailQueryDto.startDate != '' ">
and create_time &gt;= #{userDetailQueryDto.startDate}
</if>
<if test="userDetailQueryDto.endDate != null and userDetailQueryDto.endDate != '' ">
and create_time &lt; #{userDetailQueryDto.endDate}
</if>
<if test="userDetailQueryDto.flowChannelType != null and userDetailQueryDto.flowChannelType == 1 ">
and invite_code IS NOT NULL AND invite_code !=''
</if>
</where>
) u
left join account ac on u.uid = ac.uid
<if test="userDetailQueryDto.flowChannelType != null and userDetailQueryDto.flowChannelType == 1 ">
inner join (select ic.invite_code,ftm.create_time from flow_team_member_invite_code ic left join
flow_team_member ftm on ic.member_id = ftm.member_id where ftm.member_status = 1) fti on u.invite_code =
fti.invite_code
</if>
where u.create_time > fti.create_time
order by u.create_time desc
</select>
<!--直播导流分页查询-->
<select id="userLiveDetailListV2" resultType="com.accompany.admin.vo.stats.UserDeatilVo">
select
u.uid,u.erban_no,u.nick,u.create_time,u.channel,u.model,u.new_device,u.invite_code,u.invite_uid,u.device_id,
ac.register_ip
from
(
select uid,erban_no,nick,create_time,channel,model,new_device,invite_code,invite_uid,device_id from users
<where>
def_user = 1
<if test="userDetailQueryDto.erbanNo != null and userDetailQueryDto.erbanNo != '' ">
and erban_no = #{userDetailQueryDto.erbanNo}
</if>
<if test="userDetailQueryDto.phone != null and userDetailQueryDto.phone != '' ">
and phone = #{userDetailQueryDto.phone}
</if>
<if test="userDetailQueryDto.startDate != null and userDetailQueryDto.startDate != '' ">
and create_time &gt;= #{userDetailQueryDto.startDate}
</if>
<if test="userDetailQueryDto.endDate != null and userDetailQueryDto.endDate != '' ">
and create_time &lt; #{userDetailQueryDto.endDate}
</if>
</where>
) u
left join account ac on u.uid = ac.uid
<if test="userDetailQueryDto.flowChannelType != null and userDetailQueryDto.flowChannelType == 2 ">
inner join room_visitor_user_dict rvud
on rvud.uid = u.uid
</if>
order by u.create_time desc
</select>
<!--直播导流分页查询-->
<select id="userLiveDetailListV2" resultType="com.accompany.admin.vo.stats.UserDeatilVo">
select
u.uid,u.erban_no,u.nick,u.create_time,u.channel,u.model,u.new_device,u.invite_code,u.invite_uid,u.device_id,
ac.register_ip
from
(
select uid,erban_no,nick,create_time,channel,model,new_device,invite_code,invite_uid,device_id from users
<where>
def_user = 1
<if test="userDetailQueryDto.erbanNo != null and userDetailQueryDto.erbanNo != '' ">
and erban_no = #{userDetailQueryDto.erbanNo}
</if>
<if test="userDetailQueryDto.phone != null and userDetailQueryDto.phone != '' ">
and phone = #{userDetailQueryDto.phone}
</if>
<if test="userDetailQueryDto.startDate != null and userDetailQueryDto.startDate != '' ">
and create_time &gt;= #{userDetailQueryDto.startDate}
</if>
<if test="userDetailQueryDto.endDate != null and userDetailQueryDto.endDate != '' ">
and create_time &lt; #{userDetailQueryDto.endDate}
</if>
</where>
) u
left join account ac on u.uid = ac.uid
<if test="userDetailQueryDto.flowChannelType != null and userDetailQueryDto.flowChannelType == 2 ">
inner join room_visitor_user_dict rvud
on rvud.uid = u.uid
</if>
order by u.create_time desc
</select>
<!--流量团队分页查询-->
<select id="userDetailFlowTeamListV2" resultType="com.accompany.admin.vo.stats.UserDeatilVo">
select
u.uid,u.erban_no,u.nick,u.create_time,u.channel,u.model,u.new_device,u.invite_code,u.device_id,
ac.register_ip
from
(
select uid,erban_no,nick,create_time,channel,model,new_device,invite_code,device_id from users
<where>
def_user = 1
<if test="userDetailQueryDto.erbanNo != null and userDetailQueryDto.erbanNo != '' ">
and erban_no = #{userDetailQueryDto.erbanNo}
</if>
<if test="userDetailQueryDto.phone != null and userDetailQueryDto.phone != '' ">
and phone = #{userDetailQueryDto.phone}
</if>
<if test="userDetailQueryDto.startDate != null and userDetailQueryDto.startDate != '' ">
and create_time &gt;= #{userDetailQueryDto.startDate}
</if>
<if test="userDetailQueryDto.endDate != null and userDetailQueryDto.endDate != '' ">
and create_time &lt; #{userDetailQueryDto.endDate}
</if>
<if test="userDetailQueryDto.flowChannelType != null and userDetailQueryDto.flowChannelType == 1 ">
and invite_code IS NOT NULL AND invite_code !=''
</if>
</where>
) u
left join account ac on u.uid = ac.uid
<if test="userDetailQueryDto.flowChannelType != null and userDetailQueryDto.flowChannelType == 1 ">
inner join `flow_team_member_invite_user` ftiu on u.uid = ftiu.uid
</if>
order by u.create_time desc
</select>
<!--流量团队分页查询-->
<select id="userDetailFlowTeamListV2" resultType="com.accompany.admin.vo.stats.UserDeatilVo">
select
u.uid,u.erban_no,u.nick,u.create_time,u.channel,u.model,u.new_device,u.invite_code,u.device_id,
ac.register_ip
from
(
select uid,erban_no,nick,create_time,channel,model,new_device,invite_code,device_id from users
<where>
def_user = 1
<if test="userDetailQueryDto.erbanNo != null and userDetailQueryDto.erbanNo != '' ">
and erban_no = #{userDetailQueryDto.erbanNo}
</if>
<if test="userDetailQueryDto.phone != null and userDetailQueryDto.phone != '' ">
and phone = #{userDetailQueryDto.phone}
</if>
<if test="userDetailQueryDto.startDate != null and userDetailQueryDto.startDate != '' ">
and create_time &gt;= #{userDetailQueryDto.startDate}
</if>
<if test="userDetailQueryDto.endDate != null and userDetailQueryDto.endDate != '' ">
and create_time &lt; #{userDetailQueryDto.endDate}
</if>
<if test="userDetailQueryDto.flowChannelType != null and userDetailQueryDto.flowChannelType == 1 ">
and invite_code IS NOT NULL AND invite_code !=''
</if>
</where>
) u
left join account ac on u.uid = ac.uid
<if test="userDetailQueryDto.flowChannelType != null and userDetailQueryDto.flowChannelType == 1 ">
inner join `flow_team_member_invite_user` ftiu on u.uid = ftiu.uid
</if>
order by u.create_time desc
</select>
<select id="getRegion" resultType="java.lang.String">
select distinct region from users where region is not null;
</select>
</mapper>

View File

@@ -4,6 +4,7 @@ import com.accompany.admin.service.recharge.RechargeDiamondGiveHistoryAdminServi
import com.accompany.admin.vo.charge.RechargeDiamondGiveAdminVo;
import com.accompany.admin.vo.charge.RechargeDiamondGiveDetailAdminVo;
import com.accompany.common.model.PageReq;
import com.accompany.common.result.BusiResult;
import com.accompany.common.result.PageResult;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
@@ -11,6 +12,11 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.context.request.ServletWebRequest;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.util.List;
/**
* @author: liaozetao
@@ -42,13 +48,47 @@ public class RechargeDiamondGiveHistoryAdminController {
/**
* 代充转赠明细
*
* @param fromErBanNo
* @param toErBanNo
* @param toRegion
* @param startTime
* @param endTime
* @param giveDate
* @param req
* @return
*/
@ApiOperation("代充转赠明细")
@GetMapping("dayDetailPage")
public PageResult<RechargeDiamondGiveDetailAdminVo> giveDetailByDayPage(String giveDate, PageReq req) {
return new PageResult<>(rechargeDiamondGiveHistoryAdminService.giveDetailByDayPage(giveDate, req));
public PageResult<RechargeDiamondGiveDetailAdminVo> giveDetailByDayPage(String fromErBanNo, String toErBanNo, String toRegion, String startTime, String endTime, String giveDate, PageReq req) {
return new PageResult<>(rechargeDiamondGiveHistoryAdminService.giveDetailByDayPage(fromErBanNo, toErBanNo, toRegion, startTime, endTime, giveDate, req));
}
/**
* 导出
*
* @param fromErBanNo
* @param toErBanNo
* @param toRegion
* @param startTime
* @param endTime
* @param giveDate
* @param request
* @param response
*/
@ApiOperation("导出")
@GetMapping("export")
public void export(String fromErBanNo, String toErBanNo, String toRegion, String startTime, String endTime, String giveDate, HttpServletRequest request, HttpServletResponse response) {
rechargeDiamondGiveHistoryAdminService.export(fromErBanNo, toErBanNo, toRegion, startTime, endTime, giveDate, new ServletWebRequest(request, response));
}
/**
* 用户地区
*
* @return
*/
@ApiOperation("用户地区")
@GetMapping("getRegion")
public BusiResult<List<String>> getRegion() {
return BusiResult.success(rechargeDiamondGiveHistoryAdminService.getRegion());
}
}

View File

@@ -0,0 +1,169 @@
<section class="content">
<div class="box box-primary">
<div class="box-body">
<!-- Content Header (Page header) -->
<section class="content-header">
<h1 id="itemTitle"></h1>
</section>
<!-- .content -->
<div id="table"></div>
<div id="toolbar">
<form id="searchForm" action="/admin/recharge/user/give/export" method="get" target="_blank">
<div class="col-sm-12">
<label for="fromErBanNo" class="col-sm-1 control-label">转出人id:</label>
<div class="col-sm-2">
<input type="text" class="form-control" name="fromErBanNo" id="fromErBanNo">
</div>
<label for="toErBanNo" class="col-sm-1 control-label">收入人id:</label>
<div class="col-sm-2">
<input type="text" class="form-control" name="toErBanNo" id="toErBanNo">
</div>
<label for="toRegion" class="col-sm-1 control-label">收入人地区:</label>
<div class="col-sm-2">
<select name="toRegion" id="toRegion" data-btn-class="btn-warning"
class="form-control">
<option value="" selected="selected">全部</option>
</select>
</div>
</div>
<div class="col-sm-12">
<label for="startTime" class="col-sm-2 control-label">时间:</label>
<div class="col-sm-2"><input type="text" class="form-control" name="startTime"
id="startTime"></div>
<label for="endTime" class="col-sm-1 control-label">-</label>
<div class="col-sm-2"><input type="text" class="form-control" name="endTime"
id="endTime"></div>
</div>
</form>
<div class="col-sm-12">
<button id="btnSearch" class="btn btn-default">
<i class="glyphicon glyphicon-search"></i>查询
</button>
</div>
<button id="btnExport" class="btn btn-default">
<i class="glyphicon glyphicon-Export"></i>导出
</button>
</div>
</div>
</div>
</section>
<script>
$(function() {
userRegion();
$('#table').bootstrapTable('destroy');
$('#table').bootstrapTable({
columns: [
{field: 'createTime', title: '时间', align: 'center', width: '5%'},
{field: 'fromErBanNo', title: '转出人peko id', align: 'center', width: '5%'},
{field: 'fromNick', title: '转出人昵称', align: 'center', width: '5%'},
{field: 'fromClanName', title: '转出人所在公会', align: 'center', width: '5%'},
{
field: 'fromRegion',
title: '转出人所属代充地区',
align: 'center',
width: '5%',
formatter: function (val, row, index) {
var value = '';
if (value) {
var array = value.split(',');
for (let i = 0, len = array.length; i < len; i++) {
var region = array[i];
value += region;
if (i != len - 1) {
value += '<br/>';
}
}
}
return value;
}
},
{field: 'toErBanNo', title: '收入人peko id', align: 'center', width: '5%'},
{field: 'toNick', title: '收入人昵称', align: 'center', width: '5%'},
{field: 'toRegion', title: '收入人地区', align: 'center', width: '5%'},
{field: 'inviteCode', title: '收入人填写的邀请码', align: 'center', width: '5%'},
{field: 'diamondNum', title: '转赠数额', align: 'center', width: '5%'},
],
cache: false,
striped: true,
showRefresh: false,
pageSize: 20,
pagination: true,
pageList: [20, 50, 100],
search: false,
sidePagination: "server", //表示服务端请求
//设置为undefined可以获取pageNumberpageSizesearchTextsortNamesortOrder
//设置为limit可以获取limit, offset, search, sort, order
queryParamsType: "undefined",
queryParams: function queryParams(params) { //设置查询参数
var param = {
page: params.pageNumber,
pageSize: params.pageSize,
fromErBanNo: $('#fromErBanNo').val(),
toErBanNo: $('#toErBanNo').val(),
toRegion: $('#toRegion').val(),
startTime: $('#startTime').val(),
endTime: $('#endTime').val(),
};
return param;
},
toolbar: '#toolbar',
url: '/admin/recharge/user/give/dayDetailPage',
onLoadSuccess: function () { //加载成功时执行
console.log("load success");
},
onLoadError: function () { //加载失败时执行
console.log("load fail");
}
});
var picker1 = $("#startTime").datetimepicker({
format: 'yyyy-mm-dd hh:ii:00',
todayBtn: true,
autoclose: true,
});
var picker2 = $("#endTime").datetimepicker({
format: 'yyyy-mm-dd hh:ii:00',
todayBtn: true,
autoclose: true
});
picker1.on('changeDate', function () {
var date = $('#startTime').datepicker('getDate');
picker2.datepicker('setStartDate', date);
});
picker2.on('changeDate', function () {
var date = $('#endTime').datepicker('getDate');
picker1.datepicker('setEndDate', date);
});
//导出功能
$("#btnExport").on('click',function () {
$("#searchForm").submit();
});
//用户地区
function userRegion() {
var array;
$.ajax({
type: "get",
url: "/admin/recharge/user/give/getRegion",
dataType: "json",
async: false,
success: function (json) {
if (json.success == 'true' || json.code == 200) {
array = json.data;
}
}
});
var $select = $('#toRegion');
for(let i = 0; i < array.length; i++){
var value = data[i];
var $option = $('<option value="'+ value +'" />');
$option.html(value);
$select.append($option);
}
}
});
</script>

View File

@@ -20,7 +20,7 @@
<div id="table"></div>
<div id="toolbar">
<div class="col-sm-12">
<label for="startTime" class="col-sm-2 control-label">申请提现时间:</label>
<label for="startTime" class="col-sm-2 control-label">日期:</label>
<div class="col-sm-2"><input type="text" class="form-control" name="startTime"
id="startTime"></div>
<label for="endTime" class="col-sm-1 control-label">-</label>
@@ -46,13 +46,16 @@
</button>
<h4 class="modal-title" id="modalLabel"></h4>
</div>
<div class="modal-body">
<!-- .content -->
<div id="detailTable"></div>
</div>
<form id="searchForm" action="/admin/recharge/user/give/export" method="get" target="_blank">
<input type="hidden" name="giveDate" id="giveDate"/>
<div class="modal-body">
<!-- .content -->
<div id="detailTable"></div>
</div>
</form>
<div class="modal-footer">
<button type="button" class="btn btn-default" data-dismiss="modal">取消</button>
<button type="button" class="btn btn-primary" id="export">导出</button>
<button type="button" class="btn btn-primary" id="btnExport">导出</button>
</div>
</div>
</div>
@@ -141,6 +144,7 @@
$('#table').on('click', '.opt-detail', function () {
const currentData = $('#table').bootstrapTable('getData')[$(this).data('index')];
var giveDate = currentData.giveDate;
$('#giveDate').val(giveDate);
$('#modalLabel').html(giveDate + '代充转赠明细');
$("#detailModal").modal('show');
$('#detailTable').bootstrapTable('destroy');
@@ -150,7 +154,26 @@
{field: 'fromErBanNo', title: '转出人peko id', align: 'center', width: '5%'},
{field: 'fromNick', title: '转出人昵称', align: 'center', width: '5%'},
{field: 'fromClanName', title: '转出人所在公会', align: 'center', width: '5%'},
{field: 'fromRegion', title: '转出人所属代充地区', align: 'center', width: '5%'},
{
field: 'fromRegion',
title: '转出人所属代充地区',
align: 'center',
width: '5%',
formatter: function (val, row, index) {
var value = '';
if (value) {
var array = value.split(',');
for (let i = 0, len = array.length; i < len; i++) {
var region = array[i];
value += region;
if (i != len - 1) {
value += '<br/>';
}
}
}
return value;
}
},
{field: 'toErBanNo', title: '收入人peko id', align: 'center', width: '5%'},
{field: 'toNick', title: '收入人昵称', align: 'center', width: '5%'},
{field: 'toRegion', title: '收入人地区', align: 'center', width: '5%'},
@@ -173,7 +196,8 @@
queryParams: function queryParams(params) {
var param = {
page: params.pageNumber,
pageSize: params.pageSize
pageSize: params.pageSize,
giveDate: giveDate
};
return param;
},
@@ -188,6 +212,11 @@
}
});
});
//导出功能
$("#btnExport").on('click',function () {
$("#searchForm").submit();
});
});
</script>

View File

@@ -1,6 +1,9 @@
package com.accompany.payment.service.impl;
import cn.hutool.core.collection.CollectionUtil;
import com.accompany.common.constant.Constant;
import com.accompany.common.redis.RedisKey;
import com.accompany.core.service.common.JedisService;
import com.accompany.payment.mapper.RechargeUserMapper;
import com.accompany.payment.model.RechargeUser;
import com.accompany.payment.service.RechargeUserService;
@@ -11,7 +14,9 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
import java.util.stream.Collectors;
/**
* @author: liaozetao
@@ -25,12 +30,20 @@ public class RechargeUserServiceImpl extends ServiceImpl<RechargeUserMapper, Rec
@Autowired
private RechargeUserMapper rechargeUserMapper;
@Autowired
private JedisService jedisService;
@Override
public List<RechargeUserVo> selectList(String regionCode) {
List<RechargeUserVo> rechargeUserList = rechargeUserMapper.getRechargeUserList(regionCode);
if (CollectionUtil.isEmpty(rechargeUserList)) {
List<RechargeUserVo> list = rechargeUserMapper.getRechargeUserList(regionCode);
if (CollectionUtil.isEmpty(list)) {
return Collections.emptyList();
}
return rechargeUserList;
if (CollectionUtil.isNotEmpty(list)) {
for (RechargeUserVo user : list) {
user.setIsOnline(jedisService.hget(RedisKey.user_online_status.getKey(), user.getUid().toString()) != null ? Constant.Yes1No0.YES : Constant.Yes1No0.NO);
}
}
return list.stream().sorted(Comparator.comparing(RechargeUserVo::getIsOnline).reversed().thenComparing(RechargeUserVo::getSeq)).collect(Collectors.toList());
}
}

View File

@@ -1,9 +1,7 @@
package com.accompany.business.controller.recharge;
import cn.hutool.core.collection.CollectionUtil;
import com.accompany.business.service.room.RoomService;
import com.accompany.common.constant.Constant;
import com.accompany.common.result.BusiResult;
import com.accompany.core.service.common.JedisService;
import com.accompany.payment.service.RechargeUserService;
import com.accompany.payment.vo.RechargeUserVo;
import io.swagger.annotations.Api;
@@ -14,9 +12,7 @@ import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import java.util.Comparator;
import java.util.List;
import java.util.stream.Collectors;
/**
* @author: liaozetao
@@ -32,7 +28,7 @@ public class RechargeUserController {
private RechargeUserService rechargeUserService;
@Autowired
private RoomService roomService;
private JedisService jedisService;
/**
* 列表
@@ -43,13 +39,7 @@ public class RechargeUserController {
@ApiOperation("列表")
@GetMapping("list")
public BusiResult<List<RechargeUserVo>> list(@RequestParam("regionCode") String regionCode) {
List<RechargeUserVo> list = rechargeUserService.selectList(regionCode);
if (CollectionUtil.isNotEmpty(list)) {
for (RechargeUserVo user : list) {
user.setIsOnline(roomService.isOnline(user.getRoomId(), user.getUid()) ? Constant.Yes1No0.YES : Constant.Yes1No0.NO);
}
}
return BusiResult.success(list.stream().sorted(Comparator.comparing(RechargeUserVo::getIsOnline).reversed().thenComparing(RechargeUserVo::getSeq)).collect(Collectors.toList()));
return BusiResult.success(rechargeUserService.selectList(regionCode));
}
}