|
@@ -1,12 +1,16 @@
|
|
|
package com.zanxiang.game.data.serve.service.impl;
|
|
|
|
|
|
import com.alibaba.fastjson2.JSON;
|
|
|
+import com.baomidou.mybatisplus.core.metadata.IPage;
|
|
|
import com.zanxiang.erp.base.ErpServer;
|
|
|
import com.zanxiang.erp.base.rpc.ISysUserRpc;
|
|
|
import com.zanxiang.erp.security.util.SecurityUtil;
|
|
|
import com.zanxiang.game.data.serve.pojo.dto.*;
|
|
|
import com.zanxiang.game.data.serve.pojo.enums.OrderByEnum;
|
|
|
+import com.zanxiang.game.data.serve.pojo.vo.RoleChatDetailVO;
|
|
|
+import com.zanxiang.game.data.serve.pojo.vo.RoleChatVO;
|
|
|
import com.zanxiang.game.data.serve.pojo.vo.RoleGameCountryVO;
|
|
|
+import com.zanxiang.game.data.serve.pojo.vo.TencentCreativeDayVO;
|
|
|
import com.zanxiang.game.data.serve.service.IRoleManageService;
|
|
|
import com.zanxiang.game.data.serve.utils.Page;
|
|
|
import com.zanxiang.game.module.base.ServerInfo;
|
|
@@ -1270,6 +1274,153 @@ public class RoleManageServiceImpl implements IRoleManageService {
|
|
|
|
|
|
}
|
|
|
|
|
|
+ @Override
|
|
|
+ public Page<RoleChatVO> chatListOfPage(RoleChatParamDTO dto) {
|
|
|
+ Criteria criA = getSqlByQuery(dto);
|
|
|
+ //分页对象
|
|
|
+ Pager pager = dao.createPager(dto.getPageNum(), dto.getPageSize());
|
|
|
+ //查询总记录数
|
|
|
+ Sql countSql = Sqls.create(getChatListCountSql(criA));
|
|
|
+ countSql.setCallback(Sqls.callback.integer());
|
|
|
+ dao.execute(countSql);
|
|
|
+ pager.setRecordCount(countSql.getInt());
|
|
|
+ Criteria orderCri = Cnd.cri();
|
|
|
+ //主表添加排序条件
|
|
|
+ if (StringUtils.isBlank(dto.getSortType())) {
|
|
|
+ dto.setSortType(OrderByEnum.DESC.getOrderType());
|
|
|
+ }
|
|
|
+ if (StringUtils.isBlank(dto.getSortFiled())) {
|
|
|
+ orderCri.getOrderBy().orderBy("dt", dto.getSortType());
|
|
|
+ } else {
|
|
|
+ orderCri.getOrderBy().orderBy(dto.getSortFiled(), dto.getSortType());
|
|
|
+ }
|
|
|
+ //列表sql
|
|
|
+ String gameCountryRoleListSql = getChatListSql(criA, orderCri);
|
|
|
+ Sql sql = Sqls.create(gameCountryRoleListSql);
|
|
|
+ sql.setCallback(Sqls.callback.entities());
|
|
|
+ sql.setEntity(dao.getEntity(RoleChatVO.class));
|
|
|
+ sql.setPager(pager);
|
|
|
+ dao.execute(sql);
|
|
|
+ //查询结果
|
|
|
+ List<RoleChatVO> list = sql.getList(RoleChatVO.class);
|
|
|
+ return new Page<>(list, pager);
|
|
|
+ }
|
|
|
+
|
|
|
+ private String getChatListSql(Criteria criA, Criteria orderCri) {
|
|
|
+ return """
|
|
|
+ select
|
|
|
+ role_id as role_id,
|
|
|
+ dt,
|
|
|
+ super_game_id as super_game_id,
|
|
|
+ server_id as server_id,
|
|
|
+ role_chat_count as role_chat_count,
|
|
|
+ last_chat_time as last_chat_time,
|
|
|
+ role_name as role_name,
|
|
|
+ country,
|
|
|
+ server_name as server_name,
|
|
|
+ super_game_name as super_game_name
|
|
|
+ from game_ads.ads_role_chat
|
|
|
+ """ + criA + orderCri;
|
|
|
+ }
|
|
|
+
|
|
|
+ private String getChatListCountSql(Criteria criA) {
|
|
|
+ return """
|
|
|
+ select count(1) from game_ads.ads_role_chat
|
|
|
+ """ + criA;
|
|
|
+ }
|
|
|
+
|
|
|
+ private Criteria getSqlByQuery(RoleChatParamDTO dto) {
|
|
|
+ Criteria criteria = Cnd.cri();
|
|
|
+ criteria.where().andEquals("source_system", "ZX_ONE");
|
|
|
+ if (dto.getRoleId() != null) {
|
|
|
+ criteria.where().andEquals("role_id", dto.getRoleId());
|
|
|
+ }
|
|
|
+ if (StringUtils.isNotEmpty(dto.getRoleName())) {
|
|
|
+ criteria.where().andLike("role_name", dto.getRoleName());
|
|
|
+ }
|
|
|
+ if (dto.getSuperGameId() != null) {
|
|
|
+ criteria.where().andEquals("super_game_id", dto.getSuperGameId());
|
|
|
+ }
|
|
|
+ if (dto.getServerId() != null) {
|
|
|
+ criteria.where().andEquals("server_id", dto.getServerId());
|
|
|
+ }
|
|
|
+ if (StringUtils.isNotEmpty(dto.getCountry())) {
|
|
|
+ criteria.where().andLike("country", dto.getCountry());
|
|
|
+ }
|
|
|
+ if (dto.getStartDate() != null && dto.getEndDate() != null) {
|
|
|
+ criteria.where().andBetween("dt", dto.getStartDate().atTime(LocalTime.MIN), dto.getEndDate().atTime(LocalTime.MAX));
|
|
|
+ }
|
|
|
+ return criteria;
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public Page<RoleChatDetailVO> chatDetail(RoleChatDetailParamDTO dto) {
|
|
|
+ Criteria criA = getSqlByQuery(dto);
|
|
|
+ //分页对象
|
|
|
+ Pager pager = dao.createPager(dto.getPageNum(), dto.getPageSize());
|
|
|
+ //查询总记录数
|
|
|
+ Sql countSql = Sqls.create(getChatDetailListCountSql(criA));
|
|
|
+ countSql.setCallback(Sqls.callback.integer());
|
|
|
+ dao.execute(countSql);
|
|
|
+ pager.setRecordCount(countSql.getInt());
|
|
|
+ Criteria orderCri = Cnd.cri();
|
|
|
+ //主表添加排序条件
|
|
|
+ if (StringUtils.isBlank(dto.getSortType())) {
|
|
|
+ dto.setSortType(OrderByEnum.DESC.getOrderType());
|
|
|
+ }
|
|
|
+ if (StringUtils.isBlank(dto.getSortFiled())) {
|
|
|
+ orderCri.getOrderBy().orderBy("dt", dto.getSortType());
|
|
|
+ } else {
|
|
|
+ orderCri.getOrderBy().orderBy(dto.getSortFiled(), dto.getSortType());
|
|
|
+ }
|
|
|
+ //列表sql
|
|
|
+ String gameCountryRoleListSql = getChatDetailListSql(criA, orderCri);
|
|
|
+ Sql sql = Sqls.create(gameCountryRoleListSql);
|
|
|
+ sql.setCallback(Sqls.callback.entities());
|
|
|
+ sql.setEntity(dao.getEntity(RoleChatDetailVO.class));
|
|
|
+ sql.setPager(pager);
|
|
|
+ dao.execute(sql);
|
|
|
+ //查询结果
|
|
|
+ List<RoleChatDetailVO> list = sql.getList(RoleChatDetailVO.class);
|
|
|
+ return new Page<>(list, pager);
|
|
|
+ }
|
|
|
+
|
|
|
+ private String getChatDetailListSql(Criteria criA, Criteria orderCri) {
|
|
|
+ return """
|
|
|
+ select
|
|
|
+ dt,
|
|
|
+ supper_game_id as super_game_id,
|
|
|
+ b.name as super_game_name,
|
|
|
+ server_id as server_id,
|
|
|
+ server_name as server_name,
|
|
|
+ role_id as role_id,
|
|
|
+ role_name as role_name,
|
|
|
+ guild_name as country,
|
|
|
+ chat_time as chat_time,
|
|
|
+ content
|
|
|
+ from dm_game_order.t_game_user_chat a
|
|
|
+ left join dm_game_order.t_game_super b on a.source_system = b.source_system and a.supper_game_id = b.id
|
|
|
+ """ + criA + orderCri;
|
|
|
+ }
|
|
|
+
|
|
|
+ private String getChatDetailListCountSql(Criteria criA) {
|
|
|
+ return """
|
|
|
+ select count(1) from dm_game_order.t_game_user_chat a
|
|
|
+ """ + criA;
|
|
|
+ }
|
|
|
+
|
|
|
+ private Criteria getSqlByQuery(RoleChatDetailParamDTO dto) {
|
|
|
+ Criteria criteria = Cnd.cri();
|
|
|
+ criteria.where().andEquals("a.source_system", "ZX_ONE");
|
|
|
+ if (dto.getRoleId() != null) {
|
|
|
+ criteria.where().andEquals("a.role_id", dto.getRoleId());
|
|
|
+ }
|
|
|
+ if (dto.getStartDate() != null && dto.getEndDate() != null) {
|
|
|
+ criteria.where().andBetween("a.dt", dto.getStartDate().atTime(LocalTime.MIN), dto.getEndDate().atTime(LocalTime.MAX));
|
|
|
+ }
|
|
|
+ return criteria;
|
|
|
+ }
|
|
|
+
|
|
|
private Criteria getUserDetailOrderSql(RoleIpInfoParamDTO dto) {
|
|
|
Criteria criteria = Cnd.cri();
|
|
|
//主表添加排序条件
|
|
@@ -2420,7 +2571,8 @@ public class RoleManageServiceImpl implements IRoleManageService {
|
|
|
ara.role_total_amount as role_total_amount, -- 创角24小时内总充值金额
|
|
|
ara.max_amount as max_amount, -- 创角24小时内单笔最大充值金额
|
|
|
ara.min_amount as min_amount, -- 创角24小时内单笔最小充值金额
|
|
|
- ara.role_amount as role_amount -- 角色充值数组
|
|
|
+ ara.role_amount as role_amount, -- 角色充值数组
|
|
|
+ z.role_chat_count as role_chat_count -- 角色昨日聊天总数数据
|
|
|
FROM
|
|
|
(
|
|
|
SELECT
|
|
@@ -2763,6 +2915,14 @@ public class RoleManageServiceImpl implements IRoleManageService {
|
|
|
pitcher_id as put_user_id
|
|
|
FROM dm_game_order.t_pitcher_agent
|
|
|
) y ON x.agent_id = y.id AND x.source_system = y.source_system
|
|
|
+ LEFT JOIN (
|
|
|
+ SELECT
|
|
|
+ role_chat_count,
|
|
|
+ super_game_id,
|
|
|
+ source_system
|
|
|
+ FROM game_ads.ads_role_chat
|
|
|
+ where dt = DATE_FORMAT(NOW() - INTERVAL 1 DAY, '%Y-%m-%d')
|
|
|
+ ) z ON z.super_game_id = d.super_game_id and z.source_system = d.source_system
|
|
|
) a
|
|
|
""" + criA;
|
|
|
}
|