From ef04e7f4139aeb648a92f31506b0dfae18b50ab2 Mon Sep 17 00:00:00 2001 From: lvxinran Date: Wed, 8 Jul 2020 10:14:50 +0800 Subject: [PATCH] =?UTF-8?q?=E6=95=B0=E6=8D=AE=E5=AF=B9=E6=8E=A5=E7=9B=B8?= =?UTF-8?q?=E5=85=B3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ljsd/jieling/ktbeans/IReportEvent.java | 14 ++++ .../ljsd/jieling/ktbeans/ReportEventEnum.java | 67 +++++++++++++++ .../ljsd/jieling/ktbeans/ReportUserEvent.java | 84 +++++++++++++++++++ .../com/ljsd/jieling/ktbeans/ReportUtil.java | 84 +++++++++++++++++++ .../ktbeans/parmsBean/ParamEventBean.java | 4 +- .../reportEvent/CommonEventHandler.java | 30 +++++++ .../ljsd/jieling/logic/dao/UserManager.java | 5 +- 7 files changed, 285 insertions(+), 3 deletions(-) create mode 100644 serverlogic/src/main/java/com/ljsd/jieling/ktbeans/IReportEvent.java create mode 100644 serverlogic/src/main/java/com/ljsd/jieling/ktbeans/ReportEventEnum.java create mode 100644 serverlogic/src/main/java/com/ljsd/jieling/ktbeans/ReportUserEvent.java create mode 100644 serverlogic/src/main/java/com/ljsd/jieling/ktbeans/ReportUtil.java create mode 100644 serverlogic/src/main/java/com/ljsd/jieling/ktbeans/reportEvent/CommonEventHandler.java diff --git a/serverlogic/src/main/java/com/ljsd/jieling/ktbeans/IReportEvent.java b/serverlogic/src/main/java/com/ljsd/jieling/ktbeans/IReportEvent.java new file mode 100644 index 000000000..c0b2b7d67 --- /dev/null +++ b/serverlogic/src/main/java/com/ljsd/jieling/ktbeans/IReportEvent.java @@ -0,0 +1,14 @@ +package com.ljsd.jieling.ktbeans; + +import java.util.Map; + +/** + * @author lvxinran + * @date 2020/7/7 + * @discribe + */ +public interface IReportEvent { + + Map getEventProperties(ReportEventEnum eventEnum,Object... param); + +} diff --git a/serverlogic/src/main/java/com/ljsd/jieling/ktbeans/ReportEventEnum.java b/serverlogic/src/main/java/com/ljsd/jieling/ktbeans/ReportEventEnum.java new file mode 100644 index 000000000..f8173a2b2 --- /dev/null +++ b/serverlogic/src/main/java/com/ljsd/jieling/ktbeans/ReportEventEnum.java @@ -0,0 +1,67 @@ +package com.ljsd.jieling.ktbeans; + +import com.ljsd.jieling.ktbeans.reportEvent.CommonEventHandler; + +import java.util.HashMap; +import java.util.Map; + +/** + * @author lvxinran + * @date 2020/7/7 + * @discribe + */ +public enum ReportEventEnum { + + CREATE_ACCOUNT(1,"create_account", new CommonEventHandler(),new String[]{""}); + + private int type; + + private String eventName; + + private IReportEvent eventHandler; + + private String[] param; + + ReportEventEnum(int type, String eventName, IReportEvent eventHandler,String[] param){ + this.type = type; + this.eventName = eventName; + this.eventHandler = eventHandler; + this.param = param; + } + private static Map enumMap = new HashMap<>(); + public static ReportEventEnum getReport(int type) { + if(enumMap.get(type)!=null){ + return enumMap.get(type); + } + + ReportEventEnum[] values = ReportEventEnum.values(); + ReportEventEnum targetEnum = null; + for(ReportEventEnum value:values){ + if(value.getType()!=type){ + continue; + } + targetEnum = value; + } + if(targetEnum==null){ + return null; + } + enumMap.put(type,targetEnum); + return targetEnum; + } + + public int getType() { + return type; + } + + public String getEventName() { + return eventName; + } + + public IReportEvent getEventHandler() { + return eventHandler; + } + + public String[] getParam() { + return param; + } +} diff --git a/serverlogic/src/main/java/com/ljsd/jieling/ktbeans/ReportUserEvent.java b/serverlogic/src/main/java/com/ljsd/jieling/ktbeans/ReportUserEvent.java new file mode 100644 index 000000000..5858eb1a6 --- /dev/null +++ b/serverlogic/src/main/java/com/ljsd/jieling/ktbeans/ReportUserEvent.java @@ -0,0 +1,84 @@ +package com.ljsd.jieling.ktbeans; + +import java.util.HashMap; +import java.util.Map; + +/** + * @author lvxinran + * @date 2020/7/7 + * @discribe + */ +public class ReportUserEvent { + protected Map baseInfo = new HashMap<>(); + protected Map eventInfo = new HashMap<>(); + protected String eventName = ""; + + public ReportUserEvent setAccount_id(String accountId){ + baseInfo.put("#account_id",accountId); + return this; + } + public ReportUserEvent setServer_id(String server_id){ + baseInfo.put("server_id",server_id); + return this; + } + public ReportUserEvent setAccount(String account){ + baseInfo.put("account",account); + return this; + } + public ReportUserEvent setRole_id(String role_id){ + baseInfo.put("role_id",role_id); + return this; + } + public ReportUserEvent setRole_name(String role_name){ + baseInfo.put("role_name",role_name); + return this; + } + public ReportUserEvent setGuild_name(String guild_name){ + baseInfo.put("guild_name",guild_name); + return this; + } + public ReportUserEvent setGuild_id(String guild_id){ + baseInfo.put("guild_id",guild_id); + return this; + } + public ReportUserEvent setGuild_level(int guild_level){ + + baseInfo.put("guild_level",guild_level); + return this; + } + public ReportUserEvent setVip_level(int vip_level){ + baseInfo.put("vip_level",vip_level); + return this; + }public ReportUserEvent setCoins_amount(int coins_amount){ + baseInfo.put("coins_amount",coins_amount); + return this; + } + public ReportUserEvent setDiamond_amount(int diamond_amount){ + baseInfo.put("diamond_amount",diamond_amount); + return this; + } + public ReportUserEvent setFighting_capacity(int fighting_capacity){ + baseInfo.put("fighting_capacity",fighting_capacity); + return this; + } + + public Map getBaseInfo() { + return baseInfo; + } + + public String getEventName() { + return eventName; + } + + public Map getEventInfo() { + return eventInfo; + } + + public void setEventInfo(Map eventInfo) { + this.eventInfo = eventInfo; + } + + public void setEventName(String eventName) { + this.eventName = eventName; + } +} diff --git a/serverlogic/src/main/java/com/ljsd/jieling/ktbeans/ReportUtil.java b/serverlogic/src/main/java/com/ljsd/jieling/ktbeans/ReportUtil.java new file mode 100644 index 000000000..b26ad9e5b --- /dev/null +++ b/serverlogic/src/main/java/com/ljsd/jieling/ktbeans/ReportUtil.java @@ -0,0 +1,84 @@ +package com.ljsd.jieling.ktbeans; + +import cn.thinkingdata.tga.javasdk.ThinkingDataAnalytics; +import com.ljsd.GameApplication; +import com.ljsd.jieling.exception.ErrorCode; +import com.ljsd.jieling.exception.ErrorCodeException; +import com.ljsd.jieling.logic.dao.GuilidManager; +import com.ljsd.jieling.logic.dao.Item; +import com.ljsd.jieling.logic.dao.root.GuildInfo; +import com.ljsd.jieling.logic.dao.root.User; + +import java.util.Map; + +/** + * @author lvxinran + * @date 2020/7/7 + * @discribe + */ +public class ReportUtil { + private static final String LOG_PATH = ""; + + private static ThinkingDataAnalytics ta = new ThinkingDataAnalytics(new ThinkingDataAnalytics.LoggerConsumer(LOG_PATH)); + + private static final int COIN_ID = 14; + + private static final int DIAMOND_ID = 16; + + + //对外接口只有一个 + public static void onReportEvent(User user,int type,Object... param) throws Exception { + ReportUserEvent reportUserEvent = userToReportBean(user); + //根据事件类型获取对应处理 + ReportEventEnum report = ReportEventEnum.getReport(type); + if(report==null){ + throw new ErrorCodeException(ErrorCode.SERVER_SELF_DEFINE); + } + //设置事件属性 + Map eventProperties = report.getEventHandler().getEventProperties(report,param); + reportUserEvent.setEventInfo(eventProperties); + //设置事件名称 + reportUserEvent.setEventName(report.getEventName()); + //执行 + doReport(reportUserEvent); + } + + private static ReportUserEvent userToReportBean(User user){ + ReportUserEvent reportUserEvent = new ReportUserEvent(); + setBaseData(user,reportUserEvent); + return reportUserEvent; + } + private static void setBaseData(User user ,ReportUserEvent reportUserEvent){ + int guildId = user.getPlayerInfoManager().getGuildId(); + GuildInfo guildInfo = null; + if(guildId!=0){ + guildInfo = GuilidManager.guildInfoMap.get(guildId); + } + Item coin = user.getItemManager().getItem(COIN_ID); + Item diamond = user.getItemManager().getItem(DIAMOND_ID); + reportUserEvent.setAccount_id(user.getPlayerInfoManager().getOpenId()) + .setServer_id(String.valueOf(GameApplication.serverId)) + .setAccount(user.getPlayerInfoManager().getOpenId()) + .setRole_id(String.valueOf(user.getId())) + .setRole_name(user.getPlayerInfoManager().getNickName()) + .setGuild_id(String.valueOf(guildId)) + .setGuild_name(guildInfo==null?"":guildInfo.getName()) + .setGuild_level(guildInfo==null?0:guildInfo.getLevel()) + .setVip_level(user.getPlayerInfoManager().getVipLevel()) + .setCoins_amount(coin==null?0:coin.getItemNum()) + .setDiamond_amount(diamond==null?0:diamond.getItemNum()) + .setFighting_capacity(user.getPlayerInfoManager().getMaxForce()); + } + + private static void doReport(ReportUserEvent reportUserEvent){ + try { + //todo 访客id + ta.setSuperProperties(reportUserEvent.getBaseInfo()); + ta.track("1000001","1000001",reportUserEvent.getEventName(),reportUserEvent.getEventInfo()); + ta.flush(); + } catch (Exception e) { + //异常处理 + System.out.println("except:"+e); + } + } +} diff --git a/serverlogic/src/main/java/com/ljsd/jieling/ktbeans/parmsBean/ParamEventBean.java b/serverlogic/src/main/java/com/ljsd/jieling/ktbeans/parmsBean/ParamEventBean.java index b1c192c57..a61d0cd5d 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/ktbeans/parmsBean/ParamEventBean.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/ktbeans/parmsBean/ParamEventBean.java @@ -44,8 +44,8 @@ public class ParamEventBean { public ParamEventBean() { } - public ParamEventBean(int eveentType){ - add(eventTypeStringMap.get(eveentType)); + public ParamEventBean(int eventType){ + add(eventTypeStringMap.get(eventType)); } public List getEvent_s() { diff --git a/serverlogic/src/main/java/com/ljsd/jieling/ktbeans/reportEvent/CommonEventHandler.java b/serverlogic/src/main/java/com/ljsd/jieling/ktbeans/reportEvent/CommonEventHandler.java new file mode 100644 index 000000000..361c290f5 --- /dev/null +++ b/serverlogic/src/main/java/com/ljsd/jieling/ktbeans/reportEvent/CommonEventHandler.java @@ -0,0 +1,30 @@ +package com.ljsd.jieling.ktbeans.reportEvent; + +import com.ljsd.jieling.ktbeans.IReportEvent; +import com.ljsd.jieling.ktbeans.ReportEventEnum; + +import java.util.HashMap; +import java.util.Map; + +/** + * @author lvxinran + * @date 2020/7/7 + * @discribe + */ +public class CommonEventHandler implements IReportEvent { + @Override + public Map getEventProperties(ReportEventEnum eventEnum, Object... param) { + Map resultMap = new HashMap<>(); + if(param.length<1){ + return null; + } + String[] paramName= eventEnum.getParam(); + if(param.length!=paramName.length){ + return null; + } + for(int i = 0 ; i