internal void SaveMail(List <TableMailInfoWrap> mailList, int saveCount) { try { foreach (var mailInfo in mailList) { if (!mailInfo.Modified) { continue; } TableMailInfo dataMail = mailInfo.ToProto(); List <int> itemIds = new List <int>(); List <int> itemNums = new List <int>(); foreach (var item in mailInfo.m_Items) { itemIds.Add(item.m_ItemId); itemNums.Add(item.m_ItemNum); } dataMail.ItemIds = Converter.IntList2String(itemIds); dataMail.ItemNumbers = Converter.IntList2String(itemNums); Msg_LD_Save msg = new Msg_LD_Save(); msg.MsgId = (int)DataEnum.TableMailInfo; msg.PrimaryKeys.Add(dataMail.Guid.ToString()); msg.Data = DbDataSerializer.Encode(dataMail); DispatchAction(SaveInternal, msg); } } catch (Exception e) { LogSys.Log(LOG_TYPE.ERROR, "DataCache Save ERROR:{0}, Stacktrace:{1}", e.Message, e.StackTrace); } }
public void FromProto(TableMailInfo proto) { m_TableMailInfo = proto; UpdatePrimaryKeys(); UpdateForeignKeys(); m_SendDate = DateTime.ParseExact(m_TableMailInfo.SendDate, "yyyyMMddHHmmss", null); m_ExpiryDate = DateTime.ParseExact(m_TableMailInfo.ExpiryDate, "yyyyMMddHHmmss", null); }
public void FromProto(TableMailInfo proto) { m_TableMailInfo = proto; UpdatePrimaryKeys(); UpdateForeignKeys(); m_SendDate = DateTime.ParseExact(m_TableMailInfo.SendDate, "yyyyMMddHHmmss", null); m_ExpiryDate = DateTime.ParseExact(m_TableMailInfo.ExpiryDate, "yyyyMMddHHmmss", null); m_ItemIds = DataProtoUtility.SplitGeneralList <int>(new char[] { ',' }, m_TableMailInfo.ItemIds); m_ItemNumbers = DataProtoUtility.SplitGeneralList <int>(new char[] { ',' }, m_TableMailInfo.ItemNumbers); }
private void InitMailData() { if (m_MailInitStatus == DataInitStatus.Unload) { if (UserServerConfig.DataStoreAvailable == true) { m_MailInitStatus = DataInitStatus.Loading; Msg_LD_Load msg = new Msg_LD_Load(); msg.MsgId = (int)DataEnum.TableMailInfo; GameFrameworkMessage.Msg_LD_SingleLoadRequest slr = new GameFrameworkMessage.Msg_LD_SingleLoadRequest(); slr.MsgId = (int)GameFrameworkData.DataEnum.TableMailInfo; slr.LoadType = GameFrameworkMessage.Msg_LD_SingleLoadRequest.LoadTypeEnum.LoadAll; slr.Keys.Clear(); msg.LoadRequests.Add(slr); RequestLoad(msg, ((ret) => { if (ret.ErrorNo == Msg_DL_LoadResult.ErrorNoEnum.Success) { List <TableMailInfoWrap> mailList = new List <TableMailInfoWrap>(); foreach (var singlerow in ret.Results) { object _msg; if (DbDataSerializer.Decode(singlerow.Data, DataEnum2Type.Query(slr.MsgId), out _msg)) { TableMailInfo dataMail = _msg as TableMailInfo; if (null != dataMail) { TableMailInfoWrap mailInfo = new TableMailInfoWrap(); mailInfo.FromProto(dataMail); List <int> itemIds = Converter.ConvertNumericList <int>(dataMail.ItemIds); List <int> itemNums = Converter.ConvertNumericList <int>(dataMail.ItemNumbers); for (int i = 0; i < itemIds.Count && i < itemNums.Count; ++i) { var item = new MailItem(); item.m_ItemId = itemIds[i]; item.m_ItemNum = itemNums[i]; mailInfo.m_Items.Add(item); } mailList.Add(mailInfo); } } } UserServer.Instance.GlobalProcessThread.InitMailData(mailList); m_MailInitStatus = DataInitStatus.Done; LogSys.Log(LOG_TYPE.INFO, ConsoleColor.Green, "Load DataCache global data success. Table:TableMailInfo"); } else if (ret.ErrorNo == Msg_DL_LoadResult.ErrorNoEnum.NotFound) { //暂时初始化为空列表 List <TableMailInfoWrap> mailList = new List <TableMailInfoWrap>(); UserServer.Instance.GlobalProcessThread.InitMailData(mailList); m_MailInitStatus = DataInitStatus.Done; LogSys.Log(LOG_TYPE.INFO, ConsoleColor.Green, "Load DataCache global data success. Table:TableMailInfo (empty)"); } else { m_MailInitStatus = DataInitStatus.Unload; LogSys.Log(LOG_TYPE.ERROR, ConsoleColor.Red, "Load DataCache global data failed. Table: {0}", "TableMailInfo"); } } )); } else { m_MailInitStatus = DataInitStatus.Done; LogSys.Log(LOG_TYPE.INFO, "init mail done!"); } } }
public void FromProto(TableMailInfo proto) { m_TableMailInfo = proto; UpdatePrimaryKeys(); UpdateForeignKeys(); m_SendDate = DateTime.ParseExact(m_TableMailInfo.SendDate,"yyyyMMddHHmmss",null); m_ExpiryDate = DateTime.ParseExact(m_TableMailInfo.ExpiryDate,"yyyyMMddHHmmss",null); }