public void OnApply(string message) { var request = new NotifyMessageRequest(ActionType.FRIEND_APPLY, _UserRelationService.Receiver, _UserRelationService.Sender, new long[] { _UserRelationService.Receiver }, new { message = message }); _NotifyServiceProxy.Notify(request); }
public void OnUnpass() { //推送到图数据库 var taskFactory = new TaskFactory(); var fid = _FootPrintService.Fid; taskFactory.StartNew(() => { _FCRMAPIPushManager.DeleteFootPrint(fid, transmitToMQ: false); }); var uid = _FootPrintService.Uid; var remark = _FootPrintService.ExamineRemark; if (_FootPrintService.State == FootPrintState.UnPass) { var pid = _FootPrintService.Pid; string projName = ""; var proj = _ProjSourceManager.GetSource(pid); if (proj != null) { projName = proj.name; } var reason = ""; if (!string.IsNullOrWhiteSpace(remark)) { reason = ",原因:{" + remark + "}"; } var content = string.Format("您发布的#{0}#关联的足迹未通过审核,原因:{1},请重新发布,以免错失项目交流机会~", projName, reason); var request = new NotifyMessageRequest(ActionType.ADMIN_MESSAGE, 0, 0, new long[] { uid }, ContentType.Text, content); _NotifyServiceProxy.AdminNotify(request, true); } }
public void OnDockedPass(IUserDockedService userDockedService, long pid, string projectName) { ExceptionHelper.ThrowIfNull(userDockedService, nameof(userDockedService)); var receiver = userDockedService.Sender; var name = _UserManager.GetUserNames(new long[] { receiver }, null).Select(p => p.Value).FirstOrDefault(); var message = string.Format("你好,我叫{0},希望能和你合作~", name); var content = new { fid = userDockedService.Fid, pid = pid, project_name = projectName, message = message, }; var actionType = ActionType.FOOTPRINT_DOCKED_PASS; var notifyRequest = new NotifyMessageRequest(actionType, receiver, userDockedService.Receiver, new long[] { receiver }, content); Tgnet.Log.LoggerResolver.Current.Debug("OnDockedPass", Newtonsoft.Json.JsonConvert.SerializeObject(notifyRequest)); _NotifyServiceProxy.Notify(notifyRequest); //发送足聊小蜜 var adminContent = string.Format("您的对接请求已通过,快去交流吧!项目:{0}", projectName); var request = new NotifyMessageRequest(ActionType.ADMIN_MESSAGE, 0, 0, new long[] { receiver }, ContentType.Text, adminContent); _NotifyServiceProxy.AdminNotify(request, true); // _NotifyServiceProxy.SendAdminMessageToUser(receiver, ""); }
public Dictionary <long, Push.Data.IDBMessage> Notify(NotifyMessageRequest request, out Push.Data.IDBMessage senderMessage) { ExceptionHelper.ThrowIfNull(request, "request"); var messages = SaveMessage(request, out senderMessage); _DoNotify(ref messages, request, senderMessage); return(messages.ToDictionary(r => r.Key, r => r.Value.Message)); }
public void OnDockedApply(IUserDockedService userDockedService) { ExceptionHelper.ThrowIfNull(userDockedService, nameof(userDockedService)); var actionType = ActionType.FOOTPRINT_DOCKED_APPLY; var notifyRequest = new NotifyMessageRequest(actionType, actionType.DefaultMessageType, userDockedService.Receiver, userDockedService.Sender, new long[] { userDockedService.Receiver }, ContentType.Text, userDockedService.Message); _NotifyServiceProxy.Notify(notifyRequest); }
public void OnDockedUnPass(IUserDockedService userDockedService, string projectName) { //发送足聊小蜜 var receiver = userDockedService.Sender; var adminContent = string.Format("您的对接请求失败,发布足迹越多对接成功率越高喔!项目:{0}", projectName); var request = new NotifyMessageRequest(ActionType.ADMIN_MESSAGE, 0, 0, new long[] { receiver }, ContentType.Text, adminContent); _NotifyServiceProxy.AdminNotify(request, true); }
public void PayFailAfterOneDay(long uid) { if (_TradeManager.CheckLastTradeIsUnpaid(uid, null)) { var content = "您的vip会员付费未成功,请重新支付,以免影响功能正常体验,错失项目交流机会!"; var request = new NotifyMessageRequest(ActionType.ADMIN_MESSAGE, 0, 0, new long[] { uid }, ContentType.Text, content); _NotifyServiceProxy.AdminNotify(request, true); } }
public void PushUnReadFPsOfFriendsInYesterday() { var userCountDic = _FootPrintRepository.GetUserYesterdayUnReadFPCount(); foreach (var item in userCountDic) { var content = string.Format("您的好友昨天发布的{0}条新的项目足迹您还未查看,及时了解,获取更多项目资源!{1}", item.Value, "http://m.fc.tgnet.com/Home/Index"); var request = new NotifyMessageRequest(ActionType.ADMIN_MESSAGE, 0, 0, new long[] { item.Key }, ContentType.Text, content); _NotifyServiceProxy.AdminNotify(request, true); } }
private void Push(NotifyMessageRequest request, Tgnet.FootChat.Push.MessageModel message, long[] receivers, bool remind) { ExceptionHelper.ThrowIfNull(message, "message"); receivers = (receivers ?? Enumerable.Empty <long>()).Where(id => id > 0).Distinct().ToArray(); var nameProvider = _UserNameProviderFactory.CreateProvider(request.Sender); var notyTypes = _UserNotifyTypeProvider.GetNotifyTypes(message.Sender, receivers, message.SessionId, message.SessionType); foreach (var t in notyTypes) { Push(request, message, t.Value, remind, t.Key); } }
public Push.Data.IDBMessage AdminBroadcast(NotifyMessageRequest message) { ExceptionHelper.ThrowIfNull(message, "message"); ExceptionHelper.ThrowIfNullOrEmpty(message.SessionType, "serssionType"); if (message.Receivers != null && message.Receivers.Length > 0) { throw new Api.ExceptionWithErrorCode(Api.ErrorCode.输入的数据格式错误, "广播不支持设置接收用户"); } var msg = _MessageService.Broadcast(message.Sender, message.SessionType, message.Created, message.ContentType, message.Content); Push(message, new Tgnet.FootChat.Push.MessageModel(msg), message.Receivers, true, NotifyTypes.SoundAndVibration); return(msg); }
public void NotifyMessage( string notifierName, NotifyMessageRequest request) { Uri endpoint = ApiUris.GetFullUri( mBaseUri, ApiEndpoints.Notify.NotifyMessage, notifierName); string actionDescription = string.Format( "send message to '{0}'", string.Join(", ", request.Recipients)); Internal.MakeApiRequest <NotifyMessageRequest>( endpoint, HttpMethod.Post, request, actionDescription, mApiKey); }
public void OnDockedApply(Data.DockedRecord[] dockEntities) { if (dockEntities == null || !dockEntities.Any()) { return; } var actionType = ActionType.FOOTPRINT_DOCKED_APPLY; foreach (var dockEntity in dockEntities) { var reciver = dockEntity.receiver; var notifyRequest = new NotifyMessageRequest(actionType, actionType.DefaultMessageType, reciver, dockEntity.sender, new long[] { reciver }, ContentType.Text, dockEntity.message); _NotifyServiceProxy.Notify(notifyRequest); } }
public void OnUnpass(IUserService user) { if (user.VerifyStatus == VerifyStatus.Unpass) { var content = ""; if (user.GetUserSeriviceState().UserLevel == UserServiceLevel.Normal) { content = "您提交的认证资料未通过审核,请尽快重新提交,限时免费体验7天VIP会员,不错过项目交流合作机会!"; } else { content = "您提交的认证资料未通过审核,请尽快重新提交,不错过项目交流合作机会!"; } var request = new NotifyMessageRequest(ActionType.ADMIN_MESSAGE, 0, 0, new long[] { user.Uid }, ContentType.Text, content); _NotifyServiceProxy.AdminNotify(request, true); } }
public void OnPass(IUserService user, bool openTrail) { if (user.VerifyStatus == VerifyStatus.Pass) { var content = ""; if (openTrail) { content = "您提交的认证资料已通过审核,即刻开始7天VIP会员免费体验!查看其他项目足迹,跟其他人交流对接更多项目~"; } else { content = "您提交的认证资料已通过审核,查看其他项目足迹,跟其他人交流对接更多项目~"; } var request = new NotifyMessageRequest(ActionType.ADMIN_MESSAGE, 0, 0, new long[] { user.Uid }, ContentType.Text, content); _NotifyServiceProxy.AdminNotify(request, true); } }
internal static void Message( RestApi restApi, string notifierName, string message, List <string> recipients) { if (recipients == null) { return; } NotifyMessageRequest request = new NotifyMessageRequest() { Message = message, Recipients = recipients }; restApi.Notify.NotifyMessage(notifierName, request); }
public Dictionary <long, Push.Data.IDBMessage> AdminNotify(NotifyMessageRequest message, bool byAdmin) { ExceptionHelper.ThrowIfNull(message, "message"); ExceptionHelper.ThrowIfTrue(message.SessionType != ActionType.ADMIN_MESSAGE.Action, "serssionType"); if (byAdmin) { var id = MessageExtensions.MessageId.GetValue(message.Extension); if (!String.IsNullOrWhiteSpace(id)) { var entity = _MessageService.ReplyAdminMessage(id, message.SessionType, message.SessionId, message.ContentType, message.Content); var receiver = entity.targets.Keys.First().To <long>(); Push(message, new Tgnet.FootChat.Push.MessageModel(entity), new long[] { receiver }, true); return(new Dictionary <long, Tgnet.FootChat.Push.Data.IDBMessage> { { receiver, entity } }); } else if (message.Receivers != null && message.Receivers.Length > 0) { var msg = _MessageService.SendAdminMessageToUser(message.Sender, message.SessionType, message.Receivers, message.Created, message.ContentType, message.Content); var result = new Dictionary <long, Push.Data.IDBMessage>(); foreach (var item in message.Receivers) { result[item] = msg; } msg.sender = 0; Push(message, new Tgnet.FootChat.Push.MessageModel(msg), message.Receivers, true); return(result); } else { var msg = _MessageService.Broadcast(message.Sender, message.SessionType, message.Created, message.ContentType, message.Content); Push(message, new Tgnet.FootChat.Push.MessageModel(msg), message.Receivers, true, NotifyTypes.SoundAndVibration); return(new Dictionary <long, Push.Data.IDBMessage>()); } } else { bool firstSave; var msg = _MessageService.SaveAdminMessage(message.Sender, message.SessionType, message.Receivers != null && message.Receivers.Length > 0 ? message.Receivers.First() : 0, message.Created, message.ContentType, message.Content, message.Extension, out firstSave); return(new Dictionary <long, Push.Data.IDBMessage> { { msg.targets.Count > 0 ? msg.targets.Keys.First().To <long>() : 0, msg } }); } }
public void OnAttention(string mobile) { ExceptionHelper.ThrowIfNullOrEmpty(mobile, nameof(mobile)); var users = _UserManager.GetUsers(new string[] { mobile }).ToArray(); if (users != null && users.Count() > 0) { var content = string.Format("您的好友<a href=\"http://m.fc.tgnet.com/User/Info?uid={0}\">{1}</a>关注了您!马上关注TA,查看好友足迹,快速交流,获取更多项目资源!~", _User.Uid, _User.Name); var request = new NotifyMessageRequest(ActionType.ADMIN_MESSAGE, 0, 0, new long[] { users[0].uid }, ContentType.Html, content); _NotifyServiceProxy.AdminNotify(request, true); } else { Dictionary <string, string> values = new Dictionary <string, string>(); values.Add("name", _User.Name); values.Add("status", "使用业务签单新模式,期待与你进行更多的"); _PushManager.SendSms(131, new String[] { mobile }, values, "足聊"); } }
public void Notify(string notifierPlugName, string message, List <string> recipients) { if (recipients == null || recipients.Count == 0) { return; } string actionDescription = string.Format("nofify message to '{0}'", string.Join(" ", recipients)); NotifyMessageRequest request = new NotifyMessageRequest() { Message = message, Recipients = recipients }; Uri endpoint = ApiUris.GetFullUri( mBaseUri, ApiEndpoints.Notify.NotifyMessage, notifierPlugName); Internal.MakeApiRequest <NotifyMessageRequest>( endpoint, HttpMethod.Post, request, actionDescription, mPlasticBotUserToken); }
/// <summary> /// 阿里云推送 /// </summary> /// <param name="request"></param> /// <param name="message"></param> /// <param name="receivers"></param> private void Push(NotifyMessageRequest request, Tgnet.FootChat.Push.MessageModel message, long[] receivers, bool remind, NotifyTypes notifyType) { ExceptionHelper.ThrowIfNull(message, "message"); receivers = (receivers ?? Enumerable.Empty <long>()).Where(id => id > 0).Distinct().ToArray(); PushService.PushSetting setting = null; if (request.MessageType != MessageType.Online) { setting = new PushService.PushSetting { ExpireTime = TimeSpan.FromDays(1), StoreOffline = true, NotifyType = (PushService.PushSettingNotifyTypes)notifyType.To <byte>(), }; } List <PushService.TargetsAppKinds> apps = new List <PushService.TargetsAppKinds>() { PushService.TargetsAppKinds.FootChatAndroid, PushService.TargetsAppKinds.FootChatiOS }; _PushManager.PushJsonMessage(new PushService.PushJsonMessageRequest { Content = message.Content, ContentType = message.ContentType, Extensions = message.Extensions, MessageId = message.MessageId, Sender = message.Sender, SenderName = message.SenderName, SessionId = message.SessionId, SessionType = message.SessionType, Timestamp = message.Timestamp, Remind = WrapperRemind(message, remind) }, new PushService.Targets { Uids = receivers, Apps = apps.ToArray(), Testing = false, }, setting); }
public void NotifyPublishUser() { var uid = _FootPrintService.Uid; var isHaveFollowOtherUser = _FootPrintManager.PassFootPrints.Any(p => p.uid != uid); var content = "您发布的{0}关联的足迹已经审核通过,马上查看项目动态及其他同跟人项目信息,获取更多项目线索"; var viewDetial = ""; if (isHaveFollowOtherUser) { viewDetial = "项目动态及其他同跟人项目信息"; } else { viewDetial = "项目最新动态"; } content = string.Format(content, ProjectSource.name, viewDetial); var request = new NotifyMessageRequest(ActionType.FOOTCHAT_PASS, 0, 0, new long[] { uid } , new PushMessage() { Content = content, Url = "http://m.fc.tgnet.com/ProjFollow/List" }); _NotifyServiceProxy.Notify(request); }
public void OnRemoveFromBlackList() { var request = new NotifyMessageRequest(ActionType.BLACKLIST_DELETE, _UserRelationService.Receiver, _UserRelationService.Sender, new long[] { _UserRelationService.Receiver }, String.Empty); _NotifyServiceProxy.Notify(request); }
public Dictionary <long, Push.Data.IDBMessage> Notify(NotifyMessageRequest request) { Push.Data.IDBMessage senderMessage; return(Notify(request, out senderMessage)); }
private void _DoNotify(ref Dictionary <long, MessageStoreResult> messages, NotifyMessageRequest request, Push.Data.IDBMessage senderMessage) { if (request.IsNotNotify) { return; } if (messages != null && messages.Count > 0) { var insterMessage = messages.Where(m => m.Value.IsInsert).ToDictionary(m => m.Key, m => m.Value); if (insterMessage.Count > 0) { var sessionId = senderMessage.sessionId; if ((!insterMessage.ContainsKey(request.Sender)) && request.MessageType == MessageType.Message) { insterMessage.Add(request.Sender, insterMessage.First().Value); } var uids = insterMessage.Keys.Distinct().ToArray(); var nicks = new Dictionary <long, UserName>(); if (request.Sender == 0) { nicks = insterMessage.Keys.ToDictionary(k => k, k => new UserName(String.Empty, NameKind.Name)); } else if (request.SessionType != ActionType.ADMIN_MESSAGE.Action) { var nameProvider = _UserNameProviderFactory.CreateProvider(request.Sender); uids = nameProvider.GetNotifyUsers(uids, request.SessionId, request.SessionType); nicks = nameProvider.NickForUsers(uids); if (request.SessionType == ActionType.SINGLE_MESSAGE.Action) { sessionId = request.Sender; } } else { nicks = insterMessage.Keys.ToDictionary(k => k, k => new UserName("足聊小蜜", NameKind.Name)); } //处理阿里云推送 var senderNames = nicks.GroupBy(n => n.Value.Name).Select(ns => new { nick = ns.Key, receivers = ns.Select(n => n.Key) }).ToDictionary(n => n.nick, n => n.receivers); var unNicks = uids.Except(nicks.Keys.Distinct()).ToArray(); if (unNicks.Length > 0) { if (senderNames.ContainsKey(String.Empty)) { senderNames[String.Empty] = senderNames[String.Empty].Concat(unNicks); } else { senderNames.Add(String.Empty, unNicks); } } foreach (var name in senderNames) { var receivers = name.Value.ToArray(); var msg = new Tgnet.FootChat.Push.MessageModel(name.Key, senderMessage); msg.SessionId = sessionId; Push(request, msg, receivers, true); } } } }
public Dictionary <long, Push.Data.IDBMessage> SendAdminMessageToUser(long receiver, string content, string contentType = "text") { NotifyMessageRequest request = new NotifyMessageRequest(ActionType.ADMIN_MESSAGE, MessageType.Message, 0, 0, new long[] { receiver }, contentType, content); return(AdminNotify(request, true)); }
private Dictionary <long, MessageStoreResult> SaveMessage(NotifyMessageRequest message, out Tgnet.FootChat.Push.Data.IDBMessage senderMessage) { if (message.Receivers != null) { var kind = _MessageService.GetMessageKind(message.MessageType, message.SessionType); Dictionary <long, MessageStoreResult> result; bool firstSave = false; switch (kind) { case MessageKind.User: result = new Dictionary <long, MessageStoreResult>(); foreach (var receiver in message.Receivers) { var r = new MessageStoreResult { Message = _MessageService.SaveUserMessage(message.SessionType, message.Sender, receiver, message.Created, message.ContentType, message.Content, message.Extension, out firstSave) }; r.IsInsert = firstSave; result[receiver] = r; } senderMessage = result.Values.Select(r => r.Message).FirstOrDefault(); return(result); case MessageKind.MuiltUser: var muiltMessage = _MessageService.SaveMultiUserMessage(message.SessionType, message.SessionId, message.Sender, message.Created, message.ContentType, message.Content, message.Receivers, message.Extension, out firstSave); result = message.Receivers.Distinct().ToDictionary(r => r, r => new MessageStoreResult { Message = muiltMessage, IsInsert = firstSave, }); senderMessage = muiltMessage; return(result); case MessageKind.Other: result = new Dictionary <long, MessageStoreResult>(); switch (message.MessageType) { case MessageType.Once: case MessageType.OnceAndOnce: var onceMessage = _MessageService.SaveOnceMessage(message.SessionType, message.SessionId, message.Sender, message.Receivers, message.Created, message.ContentType, message.Content, MessageType.OnceAndOnce == message.MessageType, null, message.Extension); foreach (var item in message.Receivers) { result[item] = new MessageStoreResult { Message = onceMessage, IsInsert = true, }; } break; case MessageType.Online: var onlineMessage = _MessageService.SaveOnlineMessage(message.SessionType, message.SessionId, message.Sender, message.Receivers, message.Created, message.ContentType, message.Content, null); foreach (var item in message.Receivers) { result[item] = new MessageStoreResult { Message = onlineMessage, IsInsert = true, }; } break; } senderMessage = result.Values.Select(r => r.Message).FirstOrDefault(); return(result); } } senderMessage = null; return(new Dictionary <long, MessageStoreResult>()); }