using System; using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; using MySql.Data.MySqlClient; namespace bill_statistics { public static class BillSqlBuilder { public static void SqlAddOneType(int indexInLogLine, string onelog, ref string sql, ref string strindex) { string[] split = onelog.Split('='); if (split.Length < 1) { return; } string colName = split[0]; char colType = colName[0]; colName = colName.Substring(1); if (colName.Length < 1) { return; } string onecolstr = null; if (colType == 'i') { onecolstr = string.Format("{0} int NOT NULL default 0,", colName); } if (colType == 'I') { onecolstr = string.Format("{0} bigint NOT NULL default 0,", colName); } if (colType == 's') { onecolstr = string.Format("{0} varchar(20) NOT NULL default '',", colName); } if (onecolstr != null) { sql += onecolstr; if (colName == "uid") { strindex += string.Format(",index ({0})", colName); } } } public static string GenCreateTableSql(string[] splitStr, int billType, string tableName) { string sql = "CREATE TABLE IF NOT EXISTS " + tableName + " ("; sql += "time datetime NOT NULL,"; sql += "Type int NOT NULL,"; string strkeyindex = "index (time),index (Type)"; //在线日志,直接时间作为key if (billType == 3001) { strkeyindex = "primary key(time)," + strkeyindex; } for (int i = 2; i < splitStr.Length; i++) { SqlAddOneType(i, splitStr[i], ref sql, ref strkeyindex); } sql += strkeyindex; sql = sql + ") ENGINE=InnoDB DEFAULT CHARSET=utf8;\n"; return sql; } public static string GenInsertTableSql(string[] splitStr, string tableName, List paramList) { string sql = string.Format("insert into {0} set time='{1}'", tableName, splitStr[0]); for (int i = 1; i < splitStr.Length; i++) { string[] split = splitStr[i].Split('='); if (split.Length < 1) { return null; } string colName = split[0]; char colType = colName[0]; colName = colName.Substring(1); if (colName.Length < 1) { return null; } string value = ""; if (split.Length > 1 && string.IsNullOrEmpty(split[1]) == false) { value = split[1]; } if (i > 0) { sql += ","; } string colParam = "?" + colName; sql += string.Format("{0}={1}", colName, colParam); MySqlParameter p_param = null; if (colType == 'i') { int iValue = 0; int.TryParse(value, out iValue); p_param = new MySqlParameter(colParam, MySqlDbType.Int32) { Value = iValue }; } if (colType == 'I') { long lValue = 0; long.TryParse(value, out lValue); p_param = new MySqlParameter(colParam, MySqlDbType.Int64) { Value = lValue }; } if (colType == 's') { p_param = new MySqlParameter(colParam, MySqlDbType.VarChar, 255) { Value = value }; } if (p_param != null) { paramList.Add(p_param); } } sql += ";"; // Console.WriteLine(sql); return sql; } public static string GenSelectOnlineByTime(string timeinlog) { string sql = string.Format("select * from bill_3001 where time='{0}'", timeinlog); return sql; } public static string GenCreateTableActiveUserNewSql(string tableName) { string sql = "CREATE TABLE IF NOT EXISTS " + tableName + " ("; sql += "`dateId` datetime NOT NULL,`newAddU` int not null,"; sql += "`retentionU_1` int not null,"; sql += "`retentionU_2` int not null,"; sql += "`retentionU_3` int not null,"; sql += "`retentionU_4` int not null,"; sql += "`retentionU_5` int not null,"; sql += "`retentionU_6` int not null,"; sql += "`retentionU_7` int not null,"; sql += "`retentionU_15` int not null,"; sql += "`retentionU_30` int not null,"; sql += "primary key (dateId)"; sql = sql + ") ENGINE=InnoDB DEFAULT CHARSET=utf8;\n"; return sql; } public static string GenInsertTableActiveUserNewSql(string tableName, ActiveData_userNewAdd data) { string sql = string.Format("replace into {0}(dateId,newAddU,retentionU_1,retentionU_2,retentionU_3,retentionU_4,retentionU_5,retentionU_6,retentionU_7,retentionU_15,retentionU_30) values('{1}',{2},{3},{4},{5},{6},{7},{8},{9},{10},{11}) " , tableName , data.dateId.ToString("u").Substring(0, 10) , data.newAddU , data.retentionU_1 , data.retentionU_2 , data.retentionU_3 , data.retentionU_4 , data.retentionU_5 , data.retentionU_6 , data.retentionU_7 , data.retentionU_15 , data.retentionU_30 ); return sql; } public static string GenCreateTableActiveUserSql(string tableName) { string sql = "CREATE TABLE IF NOT EXISTS " + tableName + " ("; sql += "`dateId` datetime NOT NULL,"; sql += "`newU` int not null,"; //新用户 sql += "`oldU` int not null,"; //老用户 sql += "`dayActU` int not null,"; //日活跃用户 sql += "`retentionU_1` int not null,"; sql += "`retentionU_2` int not null,"; sql += "`retentionU_3` int not null,"; sql += "`retentionU_4` int not null,"; sql += "`retentionU_5` int not null,"; sql += "`retentionU_6` int not null,"; sql += "`retentionU_7` int not null,"; sql += "`retentionU_15` int not null,"; sql += "`retentionU_30` int not null,"; sql += "primary key (dateId)"; sql = sql + ") ENGINE=InnoDB DEFAULT CHARSET=utf8;\n"; return sql; } public static string GenInsertTableActiveUserSql(string tableName, ActiveData_userActive data) { string sql = string.Format("replace into {0}(dateId,newU,oldU,dayActU,retentionU_1,retentionU_2,retentionU_3,retentionU_4,retentionU_5,retentionU_6,retentionU_7,retentionU_15,retentionU_30) values('{1}',{2},{3},{4},{5},{6},{7},{8},{9},{10},{11},{12},{13}) " , tableName , data.dateId.ToString("u").Substring(0, 10) , data.newU , data.oldU , data.dayActU , data.retentionU_1 , data.retentionU_2 , data.retentionU_3 , data.retentionU_4 , data.retentionU_5 , data.retentionU_6 , data.retentionU_7 , data.retentionU_15 , data.retentionU_30 ); return sql; } public static string GenCreateTablePaymentSql(string tableName) { string sql = "CREATE TABLE IF NOT EXISTS " + tableName + " ("; sql += "`dateId` datetime NOT NULL,"; sql += "`dayIncome` bigint not null,"; // sql += "`dayPayPeopleN` int not null,"; // sql += "`dayArppu` float not null,"; // sql += "`dayArpu` float not null,"; // sql += "`dayPayPerm` float not null,"; sql += "`dayPayTimes` int not null,"; sql += "`monIncome` bigint not null,"; sql += "`monPayPeopleN` int not null,"; sql += "`monArppu` float not null,"; sql += "`monArpu` float not null,"; sql += "`monPayPerm` float not null,"; sql += "`retentionP_1` int not null,"; sql += "`retentionP_2` int not null,"; sql += "`retentionP_3` int not null,"; sql += "`retentionP_4` int not null,"; sql += "`retentionP_5` int not null,"; sql += "`retentionP_6` int not null,"; sql += "`retentionP_7` int not null,"; sql += "`retentionP_15` int not null,"; sql += "`retentionP_30` int not null,"; sql += "primary key (dateId)"; sql = sql + ") ENGINE=InnoDB DEFAULT CHARSET=utf8;\n"; return sql; } public static string GenInsertTablePaymentSql(string tableName, IncomeData_daily data) { string sql = string.Format(@"replace into {0}(dateId,dayIncome,dayPayPeopleN,dayArppu,dayArpu,dayPayPerm,dayPayTimes,monIncome,monPayPeopleN,monArppu,monArpu,monPayPerm ,retentionP_1,retentionP_2,retentionP_3,retentionP_4,retentionP_5,retentionP_6,retentionP_7,retentionP_15,retentionP_30) values('{1}',{2},{3},{4},{5},{6},{7},{8},{9},{10},{11},{12},{13},{14},{15},{16},{17},{18},{19},{20},{21}) " , tableName , data.dateId.ToString("u").Substring(0, 10) , data.dayIncome , data.dayPayPeopleN , data.dayArppu , data.dayArpu , data.dayPayPerm , data.dayPayTimes , data.monIncome , data.monPayPeopleN , data.monArppu , data.monArpu , data.monPayPerm , data.retentionP_1 , data.retentionP_2 , data.retentionP_3 , data.retentionP_4 , data.retentionP_5 , data.retentionP_6 , data.retentionP_7 , data.retentionP_15 , data.retentionP_30 ); return sql; } public static string GenCreateTableCouponsql(string tableName) { string sql = "CREATE TABLE IF NOT EXISTS " + tableName + " ("; sql += "`dateId` datetime NOT NULL,"; sql += "`uid` int not null,"; // sql += "`nick` varchar(100) not null,"; // sql += "`itemid` int not null,"; // sql += "`uniqueID` bigint not null,"; sql += "`phoneCardMoney` int not null,"; sql += "`transactionId` varchar(100) not null,"; sql += "`trueName` varchar(100) not null,"; sql += "`phoneNum` varchar(100) not null,"; sql += "`telcom` varchar(100) not null,"; sql += "`email` varchar(100) not null,"; sql += "primary key (dateId,uid,transactionId)"; sql = sql + ") ENGINE=InnoDB DEFAULT CHARSET=utf8;\n"; return sql; } public static string GenInsertTableCouponSql(string tableName, Coupon_Info data, List paramList) { string sql = string.Format(@"replace into {0}(dateId,uid,nick,itemid,uniqueID,phoneCardMoney,transactionId,trueName,phoneNum,telcom,email) values('{1}',{2},?nick,{3},{4},{5},'{6}',?trueName,'{7}',?telcom,?email) " , tableName , data.dateId.ToString("u").Substring(0, 19) , data.uid , data.itemid , data.uniqueID , data.phoneCardMoney , data.transactionId , data.phoneNum ); MySqlParameter p_nick = new MySqlParameter("?nick", MySqlDbType.VarChar, 100) { Value = data.nick }; paramList.Add(p_nick); MySqlParameter p_trueName = new MySqlParameter("?trueName", MySqlDbType.VarChar, 100) { Value = data.trueName }; paramList.Add(p_trueName); MySqlParameter p_email = new MySqlParameter("?email", MySqlDbType.VarChar, 100) { Value = data.email }; paramList.Add(p_email); MySqlParameter p_telcom = new MySqlParameter("?telcom", MySqlDbType.VarChar, 100) { Value = data.telcom }; paramList.Add(p_telcom); //Trace.Trace("asdfasdfasdfasdf"); return sql; } public static string GenCreateTableNewUserRechargeSql(string tableName) { string sql = "CREATE TABLE IF NOT EXISTS " + tableName + " ("; sql += "`dateId` datetime NOT NULL,"; sql += "`m_newUser` int not null,"; // sql += "`m_newUserRechargeMoney1` float not null,"; // sql += "`m_newUserRechargeCount1` bigint not null,"; // sql += "`m_newUserRechargeMoney2` float not null,"; sql += "`m_newUserRechargeCount2` bigint not null,"; sql += "`m_newUserRechargeMoney7` float not null,"; sql += "`m_newUserRechargeCount7` bigint not null,"; sql += "`m_newUserRechargeMoney30` float not null,"; sql += "`m_newUserRechargeCount30` bigint not null,"; sql += "primary key (dateId)"; sql = sql + ") ENGINE=InnoDB DEFAULT CHARSET=utf8;\n"; return sql; } public static string GenInsertTableNewUserRechargeSql(string tableName, NewUserRecharge_Info data) { string sql = string.Format(@"replace into {0}(dateId,m_newUser,m_newUserRechargeMoney1,m_newUserRechargeCount1,m_newUserRechargeMoney2,m_newUserRechargeCount2,m_newUserRechargeMoney7,m_newUserRechargeCount7,m_newUserRechargeMoney30,m_newUserRechargeCount30) values('{1}',{2},{3},{4},{5},{6},{7},{8},{9},{10}) " , tableName , data.dateId.ToString("u").Substring(0, 10) , data.m_newUser , data.m_newUserRechargeMoney1 , data.m_newUserRechargeCount1 , data.m_newUserRechargeMoney2 , data.m_newUserRechargeCount2 , data.m_newUserRechargeMoney7 , data.m_newUserRechargeCount7 , data.m_newUserRechargeMoney30 , data.m_newUserRechargeCount30 ); return sql; } public static string GenCreateTablePrintTreasureDrawSql(string tableName) { string sql = "CREATE TABLE IF NOT EXISTS " + tableName + " ("; sql += "`dateId` datetime NOT NULL,"; sql += "`m_treasureUser` bigint not null,"; // sql += "`TreasureDrawConsume` bigint not null,"; // sql += "`m_treasureItemDrawCount1` int not null,"; // sql += "`m_treasureItemDrawUserCount1` int not null,"; sql += "`m_treasureItemDrawCount2` int not null,"; sql += "`m_treasureItemDrawUserCount2` int not null,"; sql += "`m_treasureItemDrawCount3` int not null,"; sql += "`m_treasureItemDrawUserCount3` int not null,"; sql += "`m_treasureItemDrawCount4` int not null,"; sql += "`m_treasureItemDrawUserCount4` int not null,"; sql += "`m_treasureItemDrawCount5` int not null,"; sql += "`m_treasureItemDrawUserCount5` int not null,"; sql += "`m_treasureItemDrawCount6` int not null,"; sql += "`m_treasureItemDrawUserCount6` int not null,"; sql += "`m_treasureItemDrawCount7` int not null,"; sql += "`m_treasureItemDrawUserCount7` int not null,"; sql += "`m_treasureItemDrawCount8` int not null,"; sql += "`m_treasureItemDrawUserCount8` int not null,"; sql += "`m_treasureItemDrawCount9` int not null,"; sql += "`m_treasureItemDrawUserCount9` int not null,"; sql += "primary key (dateId)"; sql = sql + ") ENGINE=InnoDB DEFAULT CHARSET=utf8;\n"; return sql; } public static string GenInsertTablePrintTreasureDrawSql(string tableName, PrintTreasureDraw_Info data) { string sql = string.Format(@"replace into {0}(dateId,m_treasureUser,TreasureDrawConsume,m_treasureItemDrawCount1,m_treasureItemDrawUserCount1,m_treasureItemDrawCount2,m_treasureItemDrawUserCount2,m_treasureItemDrawCount3,m_treasureItemDrawUserCount3,m_treasureItemDrawCount4,m_treasureItemDrawUserCount4,m_treasureItemDrawCount5,m_treasureItemDrawUserCount5,m_treasureItemDrawCount6,m_treasureItemDrawUserCount6,m_treasureItemDrawCount7,m_treasureItemDrawUserCount7,m_treasureItemDrawCount8,m_treasureItemDrawUserCount8,m_treasureItemDrawCount9,m_treasureItemDrawUserCount9) values('{1}',{2},{3},{4},{5},{6},{7},{8},{9},{10},{11},{12},{13},{14},{15},{16},{17},{18},{19},{20},{21}) " , tableName , data.dateId.ToString("u").Substring(0, 10) , data.m_treasureUser , data.TreasureDrawConsume , data.m_treasureItemDrawCount1 , data.m_treasureItemDrawUserCount1 , data.m_treasureItemDrawCount2 , data.m_treasureItemDrawUserCount2 , data.m_treasureItemDrawCount3 , data.m_treasureItemDrawUserCount3 , data.m_treasureItemDrawCount4 , data.m_treasureItemDrawUserCount4 , data.m_treasureItemDrawCount5 , data.m_treasureItemDrawUserCount5 , data.m_treasureItemDrawCount6 , data.m_treasureItemDrawUserCount6 , data.m_treasureItemDrawCount7 , data.m_treasureItemDrawUserCount7 , data.m_treasureItemDrawCount8 , data.m_treasureItemDrawUserCount8 , data.m_treasureItemDrawCount9 , data.m_treasureItemDrawUserCount9 ); return sql; } public static string GenCreateTablePrintChipDiamondSql(string tableName) { string sql = "CREATE TABLE IF NOT EXISTS " + tableName + " ("; sql += "`dateId` datetime NOT NULL,"; sql += "`ChipGet` bigint not null,"; // sql += "`ChipConsume` bigint not null,"; // sql += "`getChipMail` bigint not null,"; // sql += "`getChipInviteSns` bigint not null,"; sql += "`getChipBroken` bigint not null,"; sql += "`getChipSign` bigint not null,"; sql += "`getChipOnline` bigint not null,"; sql += "`getChipDiamond` bigint not null,"; sql += "`getChipPay` bigint not null,"; sql += "`guessCardWin` bigint not null,"; sql += "`getChipActivity` bigint not null,"; sql += "`getChipShareFB` bigint not null,"; sql += "`getChipFriendRank` bigint not null,"; sql += "`PlayerWinRobot` bigint not null,"; sql += "`RobotWinPlayer` bigint not null,"; sql += "`GuessCardBet` bigint not null,"; sql += "`MatchEntryFee` bigint not null,"; sql += "`DeskFee` bigint not null,"; sql += "`TreasureDrawConsume` bigint not null,"; sql += "`DiamondGet` bigint not null,"; sql += "`DiamondConsume` bigint not null,"; sql += "`getDiamondPay` bigint not null,"; sql += "`getDiamondMail` bigint not null,"; sql += "`getDiamondGm` bigint not null,"; sql += "`newUserChipGet` bigint not null,"; sql += "`newUserChipConsume` bigint not null,"; sql += "`GetItemMail` bigint not null,"; sql += "`InviteSnsFriendAward` bigint not null,"; sql += "`GetOnlineReward` bigint not null,"; sql += "`GetSignReward` bigint not null,"; sql += "`GetBrokeGrants` bigint not null,"; sql += "`GuessCardAward` bigint not null,"; sql += "`newUserGuessCardBet` bigint not null,"; sql += "primary key (dateId)"; sql = sql + ") ENGINE=InnoDB DEFAULT CHARSET=utf8;\n"; return sql; } public static string GenInsertTablePrintChipDiamondSql(string tableName, PrintChipDiamond_Info data) { //string sqltest = ""; //sqltest += "set ChipGet=" + data.ChipGet.ToString(); string sql = string.Format(@"replace into {0}(dateId,ChipGet,ChipConsume,getChipMail,getChipInviteSns,getChipBroken,getChipSign, getChipOnline,getChipDiamond,getChipPay,guessCardWin,getChipActivity,getChipShareFB,getChipFriendRank,PlayerWinRobot,RobotWinPlayer,GuessCardBet, MatchEntryFee,DeskFee,TreasureDrawConsume,DiamondGet,DiamondConsume,getDiamondPay,getDiamondMail,getDiamondGm,newUserChipGet,newUserChipConsume, GetItemMail,InviteSnsFriendAward,GetOnlineReward,GetSignReward,GetBrokeGrants,GuessCardAward,newUserGuessCardBet) values('{1}',{2},{3},{4},{5},{6},{7},{8},{9},{10},{11},{12},{13},{14},{15},{16},{17},{18},{19},{20},{21},{22},{23},{24},{25},{26},{27},{28},{29},{30},{31},{32},{33},{34}) " , tableName , data.dateId.ToString("u").Substring(0, 10) , data.ChipGet , data.ChipConsume , data.getChipMail , data.getChipInviteSns , data.getChipBroken , data.getChipSign , data.getChipOnline , data.getChipDiamond , data.getChipPay , data.guessCardWin , data.getChipActivity , data.getChipShareFB , data.getChipFriendRank , data.PlayerWinRobot , data.RobotWinPlayer , 0 , 0 , 0 , data.TreasureDrawConsume , data.DiamondGet , data.DiamondConsume , data.getDiamondPay , data.getDiamondMail , data.getDiamondGm , data.newUserChipGet , data.newUserChipConsume , data.GetItemMail , data.InviteSnsFriendAward , data.GetOnlineReward , data.GetSignReward , data.GetBrokeGrants , data.GuessCardAward , data.newUserGuessCardBet ); return sql; } public static string GenCreateTablePrintChipDiamondRangeSql(string tableName) { string sql = "CREATE TABLE IF NOT EXISTS " + tableName + " ("; sql += "`dateId` datetime NOT NULL,"; sql += "`ActiveUser` int not null,"; // sql += "`GetUserTotalChip` bigint not null,"; // sql += "`GetChipRangeUserCount1` int not null,"; // sql += "`GetChipRangeUserCount2` int not null,"; sql += "`GetChipRangeUserCount3` int not null,"; sql += "`GetChipRangeUserCount4` int not null,"; sql += "`GetChipRangeUserCount5` int not null,"; sql += "`GetChipRangeUserCount6` int not null,"; sql += "`GetChipRangeUserCount7` int not null,"; sql += "`GetChipRangeUserCount8` int not null,"; sql += "`GetChipRangeUserCount9` int not null,"; sql += "`GetChipRangeUserCount10` int not null,"; sql += "`GetChipRangeUserCount11` int not null,"; sql += "`GetChipRangeUserCount12` int not null,"; sql += "`GetDiamondRangeUserCount1` int not null,"; sql += "`GetDiamondRangeUserCount2` int not null,"; sql += "`GetDiamondRangeUserCount3` int not null,"; sql += "`GetDiamondRangeUserCount4` int not null,"; sql += "`GetDiamondRangeUserCount5` int not null,"; sql += "primary key (dateId)"; sql = sql + ") ENGINE=InnoDB DEFAULT CHARSET=utf8;\n"; return sql; } public static string GenInsertTablePrintChipDiamondRangeSql(string tableName, PrintChipDiamondRange_Info data) { string sql = string.Format(@"replace into {0}(dateId,ActiveUser,GetUserTotalChip,GetChipRangeUserCount1,GetChipRangeUserCount2, GetChipRangeUserCount3,GetChipRangeUserCount4,GetChipRangeUserCount5,GetChipRangeUserCount6,GetChipRangeUserCount7, GetChipRangeUserCount8,GetChipRangeUserCount9,GetChipRangeUserCount10,GetChipRangeUserCount11,GetChipRangeUserCount12, GetDiamondRangeUserCount1,GetDiamondRangeUserCount2,GetDiamondRangeUserCount3,GetDiamondRangeUserCount4,GetDiamondRangeUserCount5) values('{1}',{2},{3},{4},{5},{6},{7},{8},{9},{10},{11},{12},{13},{14},{15},{16},{17},{18},{19},{20}) " , tableName , data.dateId.ToString("u").Substring(0, 10) , data.ActiveUser , data.GetUserTotalChipp , data.GetChipRangeUserCount1 , data.GetChipRangeUserCount2 , data.GetChipRangeUserCount3 , data.GetChipRangeUserCount4 , data.GetChipRangeUserCount5 , data.GetChipRangeUserCount6 , data.GetChipRangeUserCount7 , data.GetChipRangeUserCount8 , data.GetChipRangeUserCount9 , data.GetChipRangeUserCount10 , data.GetChipRangeUserCount11 , data.GetChipRangeUserCount12 , data.GetDiamondRangeUserCount1 , data.GetDiamondRangeUserCount2 , data.GetDiamondRangeUserCount3 , data.GetDiamondRangeUserCount4 , data.GetDiamondRangeUserCount5 ); return sql; } } }