private void ProcessWrite(MailWriteInfo info) { Player player = UnitManager.Instance.GetUnitByIdx(m_char_idx) as Player; if (player == null) { return; } if (info.receiver.char_idx == 0) { Log.Warning("错误的收件人id:" + info.receiver.char_idx); return; } //存db MailInfo mail_info = CommonObjectPools.Spawn <MailInfo>(); mail_info.mail_type = eMailType.NORMAL; mail_info.spid = 0;//普通邮件,不区分渠道id mail_info.receiver_idx = info.receiver.char_idx; mail_info.sender_idx = m_char_idx; mail_info.sender_name = player.char_name; mail_info.send_time = Time.second_time; mail_info.expire_time = 0; mail_info.delivery_time = 0; mail_info.flags = (uint)eMailFlags.NONE; mail_info.subject = info.subject; mail_info.bin_mail_content.content_type = eMailContentType.NORMAL; mail_info.bin_mail_content.bin_normal_content.content = info.content; SQLMailHandle.CreateMail(mail_info, player.db_id); CommonObjectPools.Despawn(mail_info); }
/// <summary> /// 发邮件 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void OnBtnOK(object sender, EventArgs e) { MailWriteInfo info = new MailWriteInfo(); //info.receiver_type = MailWriteInfo.eReceiverType.CHARID; //info.receiver_idx = long.Parse(m_txt_recv.Text); info.receiver.SetName(m_txt_recv.Text); info.subject = m_txt_subject.Text; info.content = m_txt_content.Text; ServerMsgSend.SendWriteMail(info); }
/// <summary> /// 发邮件 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void OnBtnOK(object sender, EventArgs e) { MailWriteInfo info = new MailWriteInfo(); if (m_comb_name_type.SelectedIndex == 0) { info.receiver.SetIdx(long.Parse(m_txt_recv.Text)); } else { info.receiver.SetName(m_txt_recv.Text); } info.subject = m_txt_subject.Text; info.content = m_txt_content.Text; ServerMsgSend.SendWriteMail(info); }
/// <summary> /// 写邮件 /// </summary> public void HandleWriteMail(MailWriteInfo info) { if (info.receiver.IsIdxValid()) { ProcessWrite(info); } else { if (String.IsNullOrEmpty(info.receiver.char_name)) { Log.Debug("错误的收件人name:" + info.receiver.char_name); return; } Player recv_player = UnitManager.Instance.GetPlayerByName(info.receiver.char_name); if (recv_player != null) { info.receiver.char_idx = recv_player.char_idx; ProcessWrite(info); } else {//需要查db Player player = UnitManager.Instance.GetUnitByIdx(m_char_idx) as Player; if (player == null) { return; } SQLCharHandle.QueryCharacterInfoByName(info.receiver.char_name, player.db_id, (ret, data) => {//收件人必须是在同一个数据库 if (ret && m_char_idx > 0) { info.receiver.char_idx = data.char_idx; ProcessWrite(info); } else {//告诉客户端发送失败 ss2c.MailCommand msg_client = PacketPools.Get(ss2c.msg.MAIL_COMMAND) as ss2c.MailCommand; msg_client.mail_idx = 0; msg_client.command_type = eMailCommandType.WRITE_MAIL; msg_client.error_type = eMailCommandError.RECIPIENT_NOT_FOUND; ServerNetManager.Instance.SendProxy(player.client_uid, msg_client); } }); } } }
private void ProcessWrite(MailWriteInfo info) { Player player = UnitManager.Instance.GetUnitByIdx(m_char_idx) as Player; if (player == null) { return; } if (info.receiver.char_idx == 0) { Log.Debug("错误的收件人id:" + info.receiver.char_idx); return; } //存db MailInfo mail_info = CommonObjectPools.Spawn <MailInfo>(); mail_info.mail_idx = IdSharedManager.Instance.GetNextMailIdx(); mail_info.mail_type = eMailType.NORMAL; mail_info.spid = 0;//普通邮件,不区分渠道id mail_info.receiver_idx = info.receiver.char_idx; mail_info.sender_idx = m_char_idx; mail_info.sender_name = player.char_name; mail_info.send_time = Time.second_time; mail_info.expire_time = 0; mail_info.delivery_time = 0; mail_info.flags = (uint)eMailFlags.NONE; mail_info.subject = info.subject; mail_info.bin_mail_content.content_type = eMailContentType.NORMAL; mail_info.bin_mail_content.bin_normal_content.content = info.content; SQLMailHandle.CreateMail(mail_info, player.db_id); CommonObjectPools.Despawn(mail_info); //告诉客户端发送成功 ss2c.MailCommand msg_client = PacketPools.Get(ss2c.msg.MAIL_COMMAND) as ss2c.MailCommand; msg_client.mail_idx = 0; msg_client.command_type = eMailCommandType.WRITE_MAIL; msg_client.error_type = eMailCommandError.NONE; ServerNetManager.Instance.SendProxy(player.client_uid, msg_client); }
private void ProcessWrite(MailWriteInfo info) { PlayerCache player = PlayerCacheManager.Instance.GetMember(m_char_idx); if (player == null) { return; } if (info.receiver_idx <= 0) { Log.Warning("错误的收件人id:" + info.receiver_idx); return; } //存db MailInfo mail_info = CommonObjectPools.Spawn <MailInfo>(); mail_info.mail_type = eMailType.NORMAL; mail_info.spid = 0;//普通邮件,不区分渠道id mail_info.receiver_idx = info.receiver_idx; mail_info.sender_idx = m_char_idx; mail_info.sender_name = player.ss_data.char_name; mail_info.send_time = Time.second_time; mail_info.expire_time = 0; mail_info.delivery_time = 0; mail_info.flags = (uint)eMailFlags.NONE; mail_info.subject = info.subject; mail_info.bin_mail_content.content_type = eMailContentType.NORMAL; mail_info.bin_mail_content.bin_normal_content.content = info.content; SQLMailHandle.CreateMail(mail_info); CommonObjectPools.Despawn(mail_info); //返回结果给ss db2ss.MailCommand rep_msg = PacketPools.Get(db2ss.msg.MAIL_COMMAND) as db2ss.MailCommand; rep_msg.mail_idx = 0; rep_msg.command_type = eMailCommandType.WRITE_MAIL; rep_msg.error_type = eMailCommandError.NONE; ForServerNetManager.Instance.Send(player.ss_uid, rep_msg); }
/// <summary> /// 写邮件 /// </summary> public void HandleWriteMail(MailWriteInfo info) { if (info.receiver.IsIdxValid()) { ProcessWrite(info); } else { if (String.IsNullOrEmpty(info.receiver.char_name)) { Log.Warning("错误的收件人name:" + info.receiver.char_name); return; } Player recv_player = UnitManager.Instance.GetPlayerByName(info.receiver.char_name); if (recv_player != null) { info.receiver.char_idx = recv_player.char_idx; ProcessWrite(info); } else {//需要查db Player player = UnitManager.Instance.GetUnitByIdx(m_char_idx) as Player; if (player == null) { return; } SQLCharHandle.QueryCharacterInfoByName(info.receiver.char_name, player.db_id, (ret, data) => { if (ret && m_char_idx > 0) { info.receiver.char_idx = data.char_idx; ProcessWrite(info); } }); } } }
/// <summary> /// 写邮件 /// </summary> public void HandleWriteMail(MailWriteInfo info) { PlayerCache player = PlayerCacheManager.Instance.GetMember(m_char_idx); if (player == null) { return; } if (info.receiver_type == MailWriteInfo.eReceiverType.CHARID) { ProcessWrite(info); } else if (info.receiver_type == MailWriteInfo.eReceiverType.CHARNAME) { if (String.IsNullOrEmpty(info.receiver_name)) { Log.Warning("错误的收件人name:" + info.receiver_name); return; } PlayerCache recv_player = PlayerCacheManager.Instance.GetMemberByName(info.receiver_name); if (recv_player != null) { info.receiver_idx = recv_player.char_idx; ProcessWrite(info); } else {//需要查db //TODO } } else { Log.Warning("错误的收件人type:" + info.receiver_type); return; } }
/// <summary> /// 写邮件 /// </summary> public static void SendWriteMail(MailWriteInfo info) { c2ss.MailWrite msg = PacketPools.Get(c2ss.msg.MAIL_WRITE) as c2ss.MailWrite; msg.info = info; ClientNetManager.Instance.Send(msg); }