Letianhua преди 1 година
родител
ревизия
0773ef1200

+ 24 - 0
game-data/game-data-serve/src/main/java/com/zanxiang/game/data/serve/pojo/vo/PlayerDataVO.java

@@ -194,4 +194,28 @@ public class PlayerDataVO {
     @ApiModelProperty(notes = "关联建立时间")
     private LocalDateTime relationCreateTime;
 
+    /**
+     * 玩家最新染色时间
+     */
+    @ApiModelProperty(notes = "玩家最新染色时间")
+    private LocalDateTime userLastRegTime;
+
+    /**
+     * 玩家最新染色渠道ID
+     */
+    @ApiModelProperty(notes = "玩家最新染色渠道ID")
+    private Long userLastRegAgentId;
+
+    /**
+     * 玩家最新染色渠道名字
+     */
+    @ApiModelProperty(notes = "玩家最新染色渠道名字")
+    private String userLastAgentName;
+
+    /**
+     * 玩家最新染色归因投手
+     */
+    @ApiModelProperty(notes = "玩家最新染色归因投手")
+    private String userLastPitcherName;
+
 }

+ 13 - 5
game-data/game-data-serve/src/main/java/com/zanxiang/game/data/serve/service/impl/AdsOrderDetailService.java → game-data/game-data-serve/src/main/java/com/zanxiang/game/data/serve/service/impl/AdsOrderDetailServiceImpl.java

@@ -2,7 +2,6 @@ package com.zanxiang.game.data.serve.service.impl;
 
 import com.github.sd4324530.jtuple.Tuple2;
 import com.google.common.base.CaseFormat;
-import com.zanxiang.erp.security.util.SecurityUtil;
 import com.zanxiang.game.data.serve.component.DataPowerComponent;
 import com.zanxiang.game.data.serve.pojo.dto.AdsOrderDetailDTO;
 import com.zanxiang.game.data.serve.pojo.dto.AdsOrderDetailListDTO;
@@ -34,7 +33,7 @@ import java.util.stream.Collectors;
 
 @Slf4j
 @Service
-public class AdsOrderDetailService implements IAdsOrderDetailService {
+public class AdsOrderDetailServiceImpl implements IAdsOrderDetailService {
 
     @Autowired
     private Dao dao;
@@ -420,7 +419,10 @@ public class AdsOrderDetailService implements IAdsOrderDetailService {
                  		l.id as back_id, -- 回传id
                  		l.back_table_name as back_table_name -- 回传表名
                 	FROM dm_game_order.t_game_order a
-                	LEFT JOIN dm_game_order.t_game_user b on a.source_system = b.source_system AND a.user_id = b.id
+                	LEFT JOIN dm_game_order.t_game_user_role ab
+                	on a.source_system = ab.source_system AND a.role_id = ab.role_id AND a.user_id = ab.user_id
+                	LEFT JOIN dm_game_order.t_game_user_burst b
+                	on a.source_system = b.source_system AND a.user_id = b.id AND ab.create_time >= b.create_time AND ab.create_time <b.end_time
                 	LEFT JOIN dm_game_order.t_pitcher_agent c on a.source_system = c.source_system AND a.agent_id = c.id
                 	LEFT JOIN dm_game_order.t_pitcher_map d on c.source_system = d.source_system AND c.pitcher_id = d.zx_pitcher_id
                 	LEFT JOIN dm_game_order.t_cp e on a.source_system = e.source_system AND a.cp_id = e.id
@@ -588,7 +590,10 @@ public class AdsOrderDetailService implements IAdsOrderDetailService {
                  		l.id as back_id, -- 回传id
                  		l.back_table_name as back_table_name -- 回传表名
                 	FROM dm_game_order.t_game_order a
-                	LEFT JOIN dm_game_order.t_game_user b on a.source_system = b.source_system AND a.user_id = b.id
+                	LEFT JOIN dm_game_order.t_game_user_role ab
+                	on a.source_system = ab.source_system AND a.role_id = ab.role_id AND a.user_id = ab.user_id
+                	LEFT JOIN dm_game_order.t_game_user_burst b
+                	on a.source_system = b.source_system AND a.user_id = b.id AND ab.create_time >= b.create_time AND ab.create_time <b.end_time
                 	LEFT JOIN dm_game_order.t_pitcher_agent c on a.source_system = c.source_system AND a.agent_id = c.id
                 	LEFT JOIN dm_game_order.t_pitcher_map d on c.source_system = d.source_system AND c.pitcher_id = d.zx_pitcher_id
                 	LEFT JOIN dm_game_order.t_cp e on a.source_system = e.source_system AND a.cp_id = e.id
@@ -758,7 +763,10 @@ public class AdsOrderDetailService implements IAdsOrderDetailService {
                  		l.id as back_id, -- 回传id
                  		l.back_table_name as back_table_name -- 回传表名
                 	FROM dm_game_order.t_game_order a
-                	LEFT JOIN dm_game_order.t_game_user b on a.source_system = b.source_system AND a.user_id = b.id
+                	LEFT JOIN dm_game_order.t_game_user_role ab
+                	on a.source_system = ab.source_system AND a.role_id = ab.role_id AND a.user_id = ab.user_id
+                	LEFT JOIN dm_game_order.t_game_user_burst b
+                	on a.source_system = b.source_system AND a.user_id = b.id AND ab.create_time >= b.create_time AND ab.create_time <b.end_time
                 	LEFT JOIN dm_game_order.t_pitcher_agent c on a.source_system = c.source_system AND a.agent_id = c.id
                 	LEFT JOIN dm_game_order.t_pitcher_map d on c.source_system = d.source_system AND c.pitcher_id = d.zx_pitcher_id
                 	LEFT JOIN dm_game_order.t_cp e on a.source_system = e.source_system AND a.cp_id = e.id

+ 54 - 6
game-data/game-data-serve/src/main/java/com/zanxiang/game/data/serve/service/impl/PlayerDataServiceImpl.java

@@ -641,7 +641,11 @@ public class PlayerDataServiceImpl implements IPlayerDataService {
                         a.relation_user_id as relation_user_id ,
                         a.relation_create_time as relation_create_time ,
                         a.`authentication` as auth,
-                        TIMESTAMPDIFF(SECOND , a.create_time, b.last_recharge_time) as reg_pay_time_diff
+                        TIMESTAMPDIFF(SECOND , a.create_time, b.last_recharge_time) as reg_pay_time_diff,
+                        k.create_time as user_last_reg_time,
+                        k.agent_id as user_last_reg_agent_id,
+                        IF(k.agent_id = 0, '自然量', l.agent_name) as user_last_agent_name ,
+                        IFNULL(m.zx_pitcher_name, '自然量') as user_last_pitcher_name
                     FROM dm_game_order.t_game_user a
                     left join (
                         select
@@ -705,7 +709,26 @@ public class PlayerDataServiceImpl implements IPlayerDataService {
                     		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
+                    LEFT JOIN (
+                    	select
+                    		id,
+                    		source_system,
+                    		create_time,
+                    		agent_id,
+                    		ROW_NUMBER() OVER(PARTITION BY id,source_system order by create_time desc) as num
+                    	FROM dm_game_order.t_game_user_burst
+                    ) k on a.id = k.id AND a.source_system = k.source_system AND k.num = 1
+                    LEFT JOIN (
+                        SELECT
+                            -- 渠道名称、投手id
+                            source_system,
+                            id,
+                            agent_name,
+                            pitcher_id as put_user_id
+                        FROM dm_game_order.t_pitcher_agent
+                    ) l on k.source_system = l.source_system AND k.agent_id = l.id
+                    left join dm_game_order.t_pitcher_map m on l.put_user_id = m.zx_pitcher_id and l.source_system = m.source_system
+                ) a
                 """;
     }
 
@@ -749,7 +772,11 @@ public class PlayerDataServiceImpl implements IPlayerDataService {
                         a.relation_user_id as relation_user_id ,
                         a.relation_create_time as relation_create_time ,
                         a.`authentication` as auth,
-                        TIMESTAMPDIFF(SECOND , a.create_time, b.last_recharge_time) as reg_pay_time_diff
+                        TIMESTAMPDIFF(SECOND , a.create_time, b.last_recharge_time) as reg_pay_time_diff,
+                        k.create_time as user_last_reg_time,
+                        k.agent_id as user_last_reg_agent_id,
+                        IF(k.agent_id = 0, '自然量', l.agent_name) as user_last_agent_name ,
+                        IFNULL(m.zx_pitcher_name, '自然量') as user_last_pitcher_name
                     FROM dm_game_order.t_game_user a
                     left join (
                         select
@@ -813,7 +840,26 @@ public class PlayerDataServiceImpl implements IPlayerDataService {
                     		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
+                    LEFT JOIN (
+                    	select
+                    		id,
+                    		source_system,
+                    		create_time,
+                    		agent_id,
+                    		ROW_NUMBER() OVER(PARTITION BY id,source_system order by create_time desc) as num
+                    	FROM dm_game_order.t_game_user_burst
+                    ) k on a.id = k.id AND a.source_system = k.source_system AND k.num = 1
+                    LEFT JOIN (
+                        SELECT
+                            -- 渠道名称、投手id
+                            source_system,
+                            id,
+                            agent_name,
+                            pitcher_id as put_user_id
+                        FROM dm_game_order.t_pitcher_agent
+                    ) l on k.source_system = l.source_system AND k.agent_id = l.id
+                    left join dm_game_order.t_pitcher_map m on l.put_user_id = m.zx_pitcher_id and l.source_system = m.source_system
+                ) a
                 """;
     }
 
@@ -865,7 +911,8 @@ public class PlayerDataServiceImpl implements IPlayerDataService {
                 		j.amount as recharge_money, -- 角色充值金额
                 		j.amount_count as recharge_count -- 角色充值次数
                 	FROM dm_game_order.t_game_user_role a
-                	LEFT JOIN dm_game_order.t_game_user b on a.source_system = b.source_system AND a.user_id = b.id
+                	LEFT JOIN dm_game_order.t_game_user_burst b
+                	on a.source_system = b.source_system AND a.user_id = b.id AND a.create_time >= b.create_time AND a.create_time < b.end_time
                 	LEFT JOIN dm_game_order.t_pitcher_agent c on b.source_system = c.source_system AND b.agent_id = c.id
                 	LEFT JOIN dm_game_order.t_pitcher_map d on c.source_system = d.source_system AND c.pitcher_id = d.zx_pitcher_id
                 	LEFT JOIN dm_game_order.t_game e on a.source_system = e.source_system AND a.game_id = e.id
@@ -991,7 +1038,8 @@ public class PlayerDataServiceImpl implements IPlayerDataService {
                 		j.amount as recharge_money, -- 角色充值金额
                 		j.amount_count as recharge_count -- 角色充值次数
                 	FROM dm_game_order.t_game_user_role a
-                	LEFT JOIN dm_game_order.t_game_user b on a.source_system = b.source_system AND a.user_id = b.id
+                	LEFT JOIN dm_game_order.t_game_user_burst b
+                	on a.source_system = b.source_system AND a.user_id = b.id AND a.create_time >= b.create_time AND a.create_time < b.end_time
                 	LEFT JOIN dm_game_order.t_pitcher_agent c on b.source_system = c.source_system AND b.agent_id = c.id
                 	LEFT JOIN dm_game_order.t_pitcher_map d on c.source_system = d.source_system AND c.pitcher_id = d.zx_pitcher_id
                 	LEFT JOIN dm_game_order.t_game e on a.source_system = e.source_system AND a.game_id = e.id

+ 74 - 60
game-data/game-data-serve/src/main/java/com/zanxiang/game/data/serve/service/impl/RoleManageServiceImpl.java

@@ -898,9 +898,9 @@ public class RoleManageServiceImpl implements IRoleManageService {
                 	    i.user_create_time as user_create_time, -- 玩家注册时间
                 	    i.user_reg_game_id as user_reg_game_id, -- 玩家注册游戏id
                 	    i.user_reg_game_name as user_reg_game_name, -- 玩家注册游戏名
-                	    i.agent_id as agent_id, -- 玩家注册渠道id
-                	    IF(i.agent_id = 0 , '自然量', i.agent_name) as agent_name, -- 玩家注册渠道名
-                	    i.put_user_id as put_user_id, -- 投手id
+                	    x.agent_id as agent_id, -- 玩家注册渠道id
+                	    IF(x.agent_id = 0 , '自然量', y.agent_name) as agent_name, -- 玩家注册渠道名
+                	    y.put_user_id as put_user_id, -- 投手id
                 	    i.user_active_time as user_active_time, -- 玩家最近活跃时间
                 	    TIMESTAMPDIFF(SECOND, i.user_active_time, NOW()) as user_active_until_now, -- 玩家最近活跃距今(秒)
                 	    i.user_last_recharge_game_id as user_last_recharge_game_id, -- 玩家最近充值游戏id
@@ -1068,9 +1068,6 @@ public class RoleManageServiceImpl implements IRoleManageService {
                             i.user_create_time as user_create_time,
                             i.user_reg_game_id as user_reg_game_id,
                             k.game_name as user_reg_game_name,
-                            i.agent_id as agent_id,
-                            IF(i.agent_id = 0 , '自然量', j.agent_name) as agent_name,
-                            j.pitcher_id as put_user_id,
                             l.update_time as user_active_time,
                             m.user_last_recharge_game_id as user_last_recharge_game_id,
                             n.game_name as user_last_recharge_game_name,
@@ -1091,20 +1088,10 @@ public class RoleManageServiceImpl implements IRoleManageService {
                                     reg_email ,
                                     create_time as user_create_time,
                                     game_id as user_reg_game_id,
-                                    agent_id ,
                                     ROW_NUMBER()over(partition by association_user_id, source_system order by create_time desc, id asc) as num
                                 FROM dm_game_order.t_game_user
                             ) z WHERE z.num = 1
                         ) i
-                        LEFT JOIN (
-                            SELECT
-                                -- 渠道名称、投手id
-                                source_system,
-                                id,
-                                agent_name,
-                                pitcher_id
-                            FROM dm_game_order.t_pitcher_agent
-                        ) j ON i.agent_id = j.id AND i.source_system  = j.source_system
                         LEFT JOIN (
                             SELECT
                                 -- 玩家注册游戏名
@@ -1225,6 +1212,26 @@ public class RoleManageServiceImpl implements IRoleManageService {
                 	) w on d.source_system = w.source_system AND IFNULL(d.parent_id, a.game_id) = w.parent_game_id
                 	AND IFNULL(d.super_game_id, a.game_id) = w.super_game_id
                 	AND c.amount >= w.recharge_money_min AND c.amount < recharge_money_max
+                	LEFT JOIN (
+                		SELECT
+                			source_system,
+                			id,
+                			create_time,
+                			end_time,
+                			agent_id,
+                			association_user_id
+                		FROM dm_game_order.t_game_user_burst
+                	) x on a.source_system = x.source_system AND a.association_user_id = x.id
+                	AND a.create_time >= x.create_time AND a.create_time < x.end_time
+                	LEFT JOIN (
+                        SELECT
+                            -- 渠道名称、投手id
+                            source_system,
+                            id,
+                            agent_name,
+                            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
                 ) a
                 """ + criA;
     }
@@ -1291,9 +1298,9 @@ public class RoleManageServiceImpl implements IRoleManageService {
                         i.user_create_time as user_create_time, -- 玩家注册时间
                         i.user_reg_game_id as user_reg_game_id, -- 玩家注册游戏id
                         i.user_reg_game_name as user_reg_game_name, -- 玩家注册游戏名
-                        i.agent_id as agent_id, -- 玩家注册渠道id
-                        IF(i.agent_id = 0 , '自然量', i.agent_name) as agent_name, -- 玩家注册渠道名
-                        i.put_user_id as put_user_id, -- 投手id
+                        x.agent_id as agent_id, -- 玩家注册渠道id
+                        IF(x.agent_id = 0 , '自然量', y.agent_name) as agent_name, -- 玩家注册渠道名
+                        y.put_user_id as put_user_id, -- 投手id
                         i.user_active_time as user_active_time, -- 玩家最近活跃时间
                         TIMESTAMPDIFF(SECOND, i.user_active_time, NOW()) as user_active_until_now, -- 玩家最近活跃距今(秒)
                         i.user_last_recharge_game_id as user_last_recharge_game_id, -- 玩家最近充值游戏id
@@ -1461,9 +1468,6 @@ public class RoleManageServiceImpl implements IRoleManageService {
                             i.user_create_time as user_create_time,
                             i.user_reg_game_id as user_reg_game_id,
                             k.game_name as user_reg_game_name,
-                            i.agent_id as agent_id,
-                            IF(i.agent_id = 0 , '自然量', j.agent_name) as agent_name,
-                            j.pitcher_id as put_user_id,
                             l.update_time as user_active_time,
                             m.user_last_recharge_game_id as user_last_recharge_game_id,
                             n.game_name as user_last_recharge_game_name,
@@ -1484,20 +1488,10 @@ public class RoleManageServiceImpl implements IRoleManageService {
                                     reg_email ,
                                     create_time as user_create_time,
                                     game_id as user_reg_game_id,
-                                    agent_id ,
                                     ROW_NUMBER()over(partition by association_user_id, source_system order by create_time desc, id asc) as num
                                 FROM dm_game_order.t_game_user
                             ) z WHERE z.num = 1
                         ) i
-                        LEFT JOIN (
-                            SELECT
-                                -- 渠道名称、投手id
-                                source_system,
-                                id,
-                                agent_name,
-                                pitcher_id
-                            FROM dm_game_order.t_pitcher_agent
-                        ) j ON i.agent_id = j.id AND i.source_system  = j.source_system
                         LEFT JOIN (
                             SELECT
                                 -- 玩家注册游戏名
@@ -1508,19 +1502,19 @@ public class RoleManageServiceImpl implements IRoleManageService {
                         ) k ON i.user_reg_game_id = k.id AND i.source_system = k.source_system
                         LEFT JOIN (
                             -- 玩家最近活跃时间
-                			SELECT
-                			    association_user_id,
-                			    b.source_system,
-                			    b.active_time as update_time,
-                			    ROW_NUMBER()over(partition by association_user_id, b.source_system order by b.active_time desc) as num
-                			FROM dm_game_order.t_game_user a
-                			LEFT JOIN (
-                			    SELECT
-                			    	source_system ,
-                			    	user_id,
-                			    	active_time
-                			    FROM game_dw.dw_active_log
-                			) b ON a.source_system = b.source_system AND a.id = b.user_id
+                            SELECT
+                                association_user_id,
+                                b.source_system,
+                                b.active_time as update_time,
+                                ROW_NUMBER()over(partition by association_user_id, b.source_system order by b.active_time desc) as num
+                            FROM dm_game_order.t_game_user a
+                            LEFT JOIN (
+                                SELECT
+                                    source_system ,
+                                    user_id,
+                                    active_time
+                                FROM game_dw.dw_active_log
+                            ) b ON a.source_system = b.source_system AND a.id = b.user_id
                         ) l ON i.association_user_id = l.association_user_id AND i.source_system = l.source_system AND l.num = 1
                         LEFT JOIN (
                             -- 玩家最近充值游戏、玩家最近充值时间
@@ -1603,21 +1597,41 @@ public class RoleManageServiceImpl implements IRoleManageService {
                         FROM dm_game_order.t_game_server_merge
                         WHERE is_delete = 0
                     ) t on a.source_system = t.source_system AND a.server_id = t.server_id AND d.super_game_id = t.game_id
-                	LEFT JOIN (
-                		SELECT
-                			-- vip等级
-                			source_system ,
-                			super_game_id ,
-                			parent_game_id ,
-                			recharge_money_min ,
-                			recharge_money_max ,
-                			vip_level ,
-                			is_delete
-                		FROM dm_game_order.t_game_vip
-                		WHERE is_delete = 0
-                	) w on d.source_system = w.source_system AND IFNULL(d.parent_id, a.game_id) = w.parent_game_id
-                	AND IFNULL(d.super_game_id, a.game_id) = w.super_game_id
-                	AND c.amount >= w.recharge_money_min AND c.amount < recharge_money_max
+                    LEFT JOIN (
+                        SELECT
+                            -- vip等级
+                            source_system ,
+                            super_game_id ,
+                            parent_game_id ,
+                            recharge_money_min ,
+                            recharge_money_max ,
+                            vip_level ,
+                            is_delete
+                        FROM dm_game_order.t_game_vip
+                        WHERE is_delete = 0
+                    ) w on d.source_system = w.source_system AND IFNULL(d.parent_id, a.game_id) = w.parent_game_id
+                    AND IFNULL(d.super_game_id, a.game_id) = w.super_game_id
+                    AND c.amount >= w.recharge_money_min AND c.amount < recharge_money_max
+                    LEFT JOIN (
+                        SELECT
+                            source_system,
+                            id,
+                            create_time,
+                            end_time,
+                            agent_id,
+                            association_user_id
+                        FROM dm_game_order.t_game_user_burst
+                    ) x on a.source_system = x.source_system AND a.association_user_id = x.id
+                    AND a.create_time >= x.create_time AND a.create_time < x.end_time
+                    LEFT JOIN (
+                        SELECT
+                            -- 渠道名称、投手id
+                            source_system,
+                            id,
+                            agent_name,
+                            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
                 ) a
                 """ + criA;
     }