|
@@ -604,7 +604,7 @@ public class PlayerDataServiceImpl implements IPlayerDataService {
|
|
|
private String getPlayerDataListSql() {
|
|
|
return """
|
|
|
SELECT
|
|
|
- *
|
|
|
+ *
|
|
|
FROM (
|
|
|
select
|
|
|
a.source_system as source_system ,
|
|
@@ -628,7 +628,7 @@ public class PlayerDataServiceImpl implements IPlayerDataService {
|
|
|
IFNULL(i.amount, 0) as recharge_money ,
|
|
|
IFNULL(i.amount_count, 0) as recharge_count,
|
|
|
IFNULL(b.role_num, 0) as role_count,
|
|
|
- b.create_time as update_time ,
|
|
|
+ j.create_time as update_time ,
|
|
|
b.last_recharge_time as last_recharge_time,
|
|
|
a.status as status ,
|
|
|
b.role_name as last_game_role_name ,
|
|
@@ -693,6 +693,14 @@ public class PlayerDataServiceImpl implements IPlayerDataService {
|
|
|
where status = 2
|
|
|
group by user_id , source_system
|
|
|
) i on a.id = i.user_id and a.source_system = i.source_system
|
|
|
+ LEFT JOIN (
|
|
|
+ SELECT
|
|
|
+ source_system ,
|
|
|
+ user_id ,
|
|
|
+ create_time ,
|
|
|
+ ROW_NUMBER()over(partition by user_id , source_system order by create_time desc) as num
|
|
|
+ FROM dm_game_order.t_user_login_log
|
|
|
+ ) j ON a.id = j.user_id AND a.source_system = j.source_system AND j.num = 1
|
|
|
) k
|
|
|
""";
|
|
|
}
|
|
@@ -704,7 +712,7 @@ public class PlayerDataServiceImpl implements IPlayerDataService {
|
|
|
private String getPlayerDataListCountSql() {
|
|
|
return """
|
|
|
SELECT
|
|
|
- COUNT(1)
|
|
|
+ COUNT(1)
|
|
|
FROM (
|
|
|
select
|
|
|
a.source_system as source_system ,
|
|
@@ -728,7 +736,7 @@ public class PlayerDataServiceImpl implements IPlayerDataService {
|
|
|
IFNULL(i.amount, 0) as recharge_money ,
|
|
|
IFNULL(i.amount_count, 0) as recharge_count,
|
|
|
IFNULL(b.role_num, 0) as role_count,
|
|
|
- b.create_time as update_time ,
|
|
|
+ j.create_time as update_time ,
|
|
|
b.last_recharge_time as last_recharge_time,
|
|
|
a.status as status ,
|
|
|
b.role_name as last_game_role_name ,
|
|
@@ -749,14 +757,14 @@ public class PlayerDataServiceImpl implements IPlayerDataService {
|
|
|
a.num,
|
|
|
c.role_num
|
|
|
from (
|
|
|
- select
|
|
|
- source_system ,
|
|
|
- user_id ,
|
|
|
- role_name ,
|
|
|
- create_time,
|
|
|
- update_time ,
|
|
|
- ROW_NUMBER() OVER(PARTITION BY user_id,source_system order by update_time desc) as num
|
|
|
- from dm_game_order.t_game_user_role
|
|
|
+ select
|
|
|
+ source_system ,
|
|
|
+ user_id ,
|
|
|
+ role_name ,
|
|
|
+ create_time,
|
|
|
+ update_time ,
|
|
|
+ ROW_NUMBER() OVER(PARTITION BY user_id,source_system order by update_time desc) as num
|
|
|
+ from dm_game_order.t_game_user_role
|
|
|
) a
|
|
|
left join (
|
|
|
select
|
|
@@ -793,6 +801,14 @@ public class PlayerDataServiceImpl implements IPlayerDataService {
|
|
|
where status = 2
|
|
|
group by user_id , source_system
|
|
|
) i on a.id = i.user_id and a.source_system = i.source_system
|
|
|
+ LEFT JOIN (
|
|
|
+ SELECT
|
|
|
+ source_system ,
|
|
|
+ user_id ,
|
|
|
+ create_time ,
|
|
|
+ ROW_NUMBER()over(partition by user_id , source_system order by create_time desc) as num
|
|
|
+ FROM dm_game_order.t_user_login_log
|
|
|
+ ) j ON a.id = j.user_id AND a.source_system = j.source_system AND j.num = 1
|
|
|
) k
|
|
|
""";
|
|
|
}
|
|
@@ -837,7 +853,7 @@ public class PlayerDataServiceImpl implements IPlayerDataService {
|
|
|
a.role_vip as role_vip_level, -- 角色vip
|
|
|
a.os , -- 角色操作系统
|
|
|
a.create_time as create_time, -- 角色创建时间
|
|
|
- a.update_time, -- 角色最近更新时间
|
|
|
+ k.active_time as update_time, -- 角色最近更新时间
|
|
|
g.pay_time as last_recharge_time, -- 角色最近充值时间
|
|
|
TIMESTAMPDIFF(SECOND, b.create_time, g.pay_time) as reg_pay_time_diff, -- 最近充值距注册时间差(秒)
|
|
|
i.active_time as last_login_time, -- 玩家最近登陆时间
|
|
@@ -891,11 +907,11 @@ public class PlayerDataServiceImpl implements IPlayerDataService {
|
|
|
source_system ,
|
|
|
user_id,
|
|
|
game_id,
|
|
|
- active_time,
|
|
|
+ create_time as active_time,
|
|
|
role_id ,
|
|
|
- ROW_NUMBER()over(partition by role_id ,user_id, source_system order by active_time desc) as num
|
|
|
- FROM game_dw.dw_active_log
|
|
|
- ) i on a.source_system = i.source_system AND a.role_id = i.role_id AND a.user_id = i.user_id AND a.game_id = i.game_id AND i.num = 1
|
|
|
+ ROW_NUMBER()over(partition by user_id, source_system order by create_time desc) as num
|
|
|
+ FROM dm_game_order.t_user_login_log
|
|
|
+ ) i on a.source_system = i.source_system AND a.user_id = i.user_id AND i.num = 1
|
|
|
LEFT JOIN (
|
|
|
SELECT
|
|
|
-- 累计充值金额、累计充值次数
|
|
@@ -908,6 +924,16 @@ public class PlayerDataServiceImpl implements IPlayerDataService {
|
|
|
WHERE status =2
|
|
|
GROUP BY role_id , user_id , source_system
|
|
|
) j on a.source_system = j.source_system AND a.role_id = j.role_id AND a.user_id = j.user_id
|
|
|
+ LEFT JOIN (
|
|
|
+ SELECT
|
|
|
+ source_system ,
|
|
|
+ user_id,
|
|
|
+ game_id,
|
|
|
+ create_time as active_time,
|
|
|
+ role_id ,
|
|
|
+ ROW_NUMBER()over(partition by role_id ,user_id, source_system order by create_time desc) as num
|
|
|
+ FROM dm_game_order.t_user_login_log
|
|
|
+ ) k on a.source_system = k.source_system AND a.user_id = k.user_id AND a.role_id = k.role_id AND k.num = 1
|
|
|
) a
|
|
|
""";
|
|
|
}
|
|
@@ -952,7 +978,7 @@ public class PlayerDataServiceImpl implements IPlayerDataService {
|
|
|
a.role_vip as role_vip_level, -- 角色vip
|
|
|
a.os , -- 角色操作系统
|
|
|
a.create_time as create_time, -- 角色创建时间
|
|
|
- a.update_time, -- 角色最近更新时间
|
|
|
+ k.active_time as update_time, -- 角色最近更新时间
|
|
|
g.pay_time as last_recharge_time, -- 角色最近充值时间
|
|
|
TIMESTAMPDIFF(SECOND, b.create_time, g.pay_time) as reg_pay_time_diff, -- 最近充值距注册时间差(秒)
|
|
|
i.active_time as last_login_time, -- 玩家最近登陆时间
|
|
@@ -1006,11 +1032,11 @@ public class PlayerDataServiceImpl implements IPlayerDataService {
|
|
|
source_system ,
|
|
|
user_id,
|
|
|
game_id,
|
|
|
- active_time,
|
|
|
+ create_time as active_time,
|
|
|
role_id ,
|
|
|
- ROW_NUMBER()over(partition by role_id ,user_id, source_system order by active_time desc) as num
|
|
|
- FROM game_dw.dw_active_log
|
|
|
- ) i on a.source_system = i.source_system AND a.role_id = i.role_id AND a.user_id = i.user_id AND a.game_id = i.game_id AND i.num = 1
|
|
|
+ ROW_NUMBER()over(partition by user_id, source_system order by create_time desc) as num
|
|
|
+ FROM dm_game_order.t_user_login_log
|
|
|
+ ) i on a.source_system = i.source_system AND a.user_id = i.user_id AND i.num = 1
|
|
|
LEFT JOIN (
|
|
|
SELECT
|
|
|
-- 累计充值金额、累计充值次数
|
|
@@ -1023,6 +1049,16 @@ public class PlayerDataServiceImpl implements IPlayerDataService {
|
|
|
WHERE status =2
|
|
|
GROUP BY role_id , user_id , source_system
|
|
|
) j on a.source_system = j.source_system AND a.role_id = j.role_id AND a.user_id = j.user_id
|
|
|
+ LEFT JOIN (
|
|
|
+ SELECT
|
|
|
+ source_system ,
|
|
|
+ user_id,
|
|
|
+ game_id,
|
|
|
+ create_time as active_time,
|
|
|
+ role_id ,
|
|
|
+ ROW_NUMBER()over(partition by role_id ,user_id, source_system order by create_time desc) as num
|
|
|
+ FROM dm_game_order.t_user_login_log
|
|
|
+ ) k on a.source_system = k.source_system AND a.user_id = k.user_id AND a.role_id = k.role_id AND k.num = 1
|
|
|
) a
|
|
|
""";
|
|
|
}
|
|
@@ -1068,7 +1104,7 @@ public class PlayerDataServiceImpl implements IPlayerDataService {
|
|
|
a.role_vip as role_vip_level, -- 角色vip
|
|
|
a.os , -- 角色操作系统
|
|
|
a.create_time as create_time, -- 角色创建时间
|
|
|
- a.update_time, -- 角色最近更新时间
|
|
|
+ k.active_time as update_time, -- 角色最近更新时间
|
|
|
g.pay_time as last_recharge_time, -- 角色最近充值时间
|
|
|
TIMESTAMPDIFF(SECOND, b.create_time, g.pay_time) as reg_pay_time_diff, -- 最近充值距注册时间差(秒)
|
|
|
i.active_time as last_login_time, -- 玩家最近登陆时间
|
|
@@ -1122,11 +1158,11 @@ public class PlayerDataServiceImpl implements IPlayerDataService {
|
|
|
source_system ,
|
|
|
user_id,
|
|
|
game_id,
|
|
|
- active_time,
|
|
|
+ create_time as active_time,
|
|
|
role_id ,
|
|
|
- ROW_NUMBER()over(partition by role_id ,user_id, source_system order by active_time desc) as num
|
|
|
- FROM game_dw.dw_active_log
|
|
|
- ) i on a.source_system = i.source_system AND a.role_id = i.role_id AND a.user_id = i.user_id AND a.game_id = i.game_id AND i.num = 1
|
|
|
+ ROW_NUMBER()over(partition by user_id, source_system order by create_time desc) as num
|
|
|
+ FROM dm_game_order.t_user_login_log
|
|
|
+ ) i on a.source_system = i.source_system AND a.user_id = i.user_id AND i.num = 1
|
|
|
LEFT JOIN (
|
|
|
SELECT
|
|
|
-- 累计充值金额、累计充值次数
|
|
@@ -1139,6 +1175,16 @@ public class PlayerDataServiceImpl implements IPlayerDataService {
|
|
|
WHERE status =2
|
|
|
GROUP BY role_id , user_id , source_system
|
|
|
) j on a.source_system = j.source_system AND a.role_id = j.role_id AND a.user_id = j.user_id
|
|
|
+ LEFT JOIN (
|
|
|
+ SELECT
|
|
|
+ source_system ,
|
|
|
+ user_id,
|
|
|
+ game_id,
|
|
|
+ create_time as active_time,
|
|
|
+ role_id ,
|
|
|
+ ROW_NUMBER()over(partition by role_id ,user_id, source_system order by create_time desc) as num
|
|
|
+ FROM dm_game_order.t_user_login_log
|
|
|
+ ) k on a.source_system = k.source_system AND a.user_id = k.user_id AND a.role_id = k.role_id AND k.num = 1
|
|
|
) a
|
|
|
""";
|
|
|
}
|