private void sendMail(ParamSendMailFullSvr sendParam) { BsonDocument mailItem = null; if (sendParam.m_itemList != "") { List <ParamItem> tmpItem = new List <ParamItem>(); Tool.parseItemList(sendParam.m_itemList, tmpItem); Dictionary <string, object> dd = new Dictionary <string, object>(); for (int i = 0; i < tmpItem.Count; i++) { Dictionary <string, object> tmpd = new Dictionary <string, object>(); tmpd.Add("giftId", tmpItem[i].m_itemId); tmpd.Add("count", tmpItem[i].m_itemCount); tmpd.Add("receive", false); dd.Add(i.ToString(), tmpd.ToBsonDocument()); } mailItem = dd.ToBsonDocument(); } DateTime now = DateTime.Now; DateTime nt = new DateTime(now.Year, now.Month, now.Day, now.Hour, now.Minute, now.Second); int skip = 0; List <Dictionary <string, object> > data = null; List <Dictionary <string, object> > docList = new List <Dictionary <string, object> >(); int serverId = DBMgr.getInstance().getDbId(sendParam.m_dbServerIP); if (serverId == -1) { LogMgr.error("sendMail,找不到 dbIP={0} 相关信息", sendParam.m_dbServerIP); return; } IMongoQuery imq = createImq(sendParam); while (true) { data = ExportExcelBase.nextData(ref skip, 1000, imq, TableName.PLAYER_INFO, serverId, DbName.DB_PLAYER, m_playerFields); if (data == null) { break; } docList.Clear(); for (int i = 0; i < data.Count; i++) { if (!data[i].ContainsKey("player_id")) { continue; } Dictionary <string, object> tmp = new Dictionary <string, object>(); tmp.Add("title", sendParam.m_title); tmp.Add("sender", sendParam.m_sender); tmp.Add("content", sendParam.m_content); tmp.Add("time", nt); tmp.Add("deadTime", nt.AddDays(sendParam.m_validDay)); tmp.Add("isReceive", false); tmp.Add("playerId", Convert.ToInt32(data[i]["player_id"])); if (mailItem != null) { tmp.Add("gifts", mailItem); } docList.Add(tmp); } DBMgr.getInstance().insertData(TableName.PLAYER_MAIL, docList, serverId, DbName.DB_PLAYER); } }
public override OpRes exportData(StreamWriter sheet, ExportParam param, int dbServerId) { int skip = 0; List <Dictionary <string, object> > data = null; sheet.WriteLine("时间,玩家ID,玩家昵称,属性,变化原因,初始值,结束值,差值(结束值-初始值),所在游戏,备注"); int t = 0; XmlConfig xml = ResMgr.getInstance().getRes("money_reason.xml"); while (true) { data = nextData(ref skip, 1000, m_imq, TableName.PUMP_PLAYER_MONEY, dbServerId, DbName.DB_PUMP); if (data == null) { break; } for (int i = 0; i < data.Count; i++) { sheet.Write(Convert.ToDateTime(data[i]["genTime"]).ToLocalTime().ToString()); sheet.Write(","); t = Convert.ToInt32(data[i]["playerId"]); sheet.Write(t); sheet.Write(","); Dictionary <string, object> ret = getPlayerProperty(t, dbServerId, m_playerFields1); if (ret != null && ret.ContainsKey("nickname")) { sheet.Write(Convert.ToString(ret["nickname"])); } sheet.Write(","); t = Convert.ToInt32(data[i]["itemId"]); sheet.Write(t == 1 ? "金币" : "礼券"); sheet.Write(","); t = Convert.ToInt32(data[i]["reason"]); if (xml != null) { sheet.Write(xml.getString(t.ToString(), "")); } sheet.Write(","); t = Convert.ToInt32(data[i]["oldValue"]); sheet.Write(t); sheet.Write(","); t = Convert.ToInt32(data[i]["newValue"]); sheet.Write(t); sheet.Write(","); t = Convert.ToInt32(data[i]["addValue"]); sheet.Write(t); sheet.Write(","); t = Convert.ToInt32(data[i]["gameId"]); sheet.Write(StrName.s_gameName[t]); sheet.Write(","); if (data[i].ContainsKey("param")) { string str = ExportExcelBase.convertToCsvStr(Convert.ToString(data[i]["param"])); sheet.Write(str); } sheet.WriteLine(); } } return(OpRes.opres_success); }
public override OpRes exportData(StreamWriter sheet, ExportParam param, int dbServerId) { for (int i = 0; i < s_head.Length; i++) { sheet.Write(s_head[i]); sheet.Write(','); } sheet.WriteLine(); MapReduceResult map_result = DBMgr.getInstance().executeMapReduce(TableName.PUMP_RECHARGE_PLAYER, dbServerId, DbName.DB_PUMP, m_imq, MapReduceTable.getMap("rechargePlayer"), MapReduceTable.getReduce("rechargePlayer")); if (map_result != null) { IEnumerable <BsonDocument> bson = map_result.GetResults(); foreach (BsonDocument d in bson) { try { ResultRPlayerItem tmp = new ResultRPlayerItem(); tmp.m_playerId = Convert.ToInt32(d["_id"]); BsonValue resValue = d["value"]; tmp.m_rechargeCount = resValue["rechargeCount"].ToInt32(); tmp.m_rechargeMoney = resValue["rechargeMoney"].ToInt32(); tmp.m_loginCount = resValue["loginCount"].ToInt32(); var arr = resValue["enterGame"].AsBsonArray; for (int i = 0; i < arr.Count; i++) { tmp.addEnterCount(i + 1, arr[i].ToInt32()); } Dictionary <string, object> pd = ExportExcelBase.getPlayerProperty(tmp.m_playerId, dbServerId, s_fields); if (pd != null) { tmp.m_mostGold = Convert.ToInt32(pd["maxGold"]); tmp.m_remainGold = Convert.ToInt32(pd["gold"]); tmp.m_regTime = Convert.ToDateTime(pd["create_time"]).ToLocalTime(); tmp.m_lastLoginTime = Convert.ToDateTime(pd["logout_time"]).ToLocalTime(); } sheet.Write(tmp.m_playerId); sheet.Write(","); sheet.Write(tmp.m_rechargeCount); sheet.Write(","); sheet.Write(tmp.m_rechargeMoney); sheet.Write(","); sheet.Write(tmp.m_regTime.ToString()); sheet.Write(","); sheet.Write(tmp.m_loginCount); sheet.Write(","); sheet.Write(tmp.m_remainGold); sheet.Write(","); sheet.Write(tmp.m_lastLoginTime.ToString()); sheet.Write(","); sheet.Write(tmp.m_mostGold); sheet.Write(","); sheet.Write(tmp.getEnterCount((int)GameId.fishlord)); sheet.Write(","); sheet.Write(tmp.getEnterCount((int)GameId.shcd)); sheet.Write(","); sheet.Write(tmp.getEnterCount((int)GameId.cows)); sheet.Write(","); sheet.Write(tmp.getEnterCount((int)GameId.dragon)); sheet.Write(","); sheet.Write(tmp.getEnterCount((int)GameId.crocodile)); sheet.Write(","); sheet.Write(tmp.getEnterCount((int)GameId.baccarat)); sheet.Write(","); sheet.Write(tmp.getEnterCount((int)GameId.dice)); sheet.WriteLine(); } catch (System.Exception ex) { } } } return(OpRes.opres_success); }