Example #1
0
        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);
        }
Example #2
0
        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);
            }
        }
Example #3
0
        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, "");
        }
Example #4
0
        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));
        }
Example #5
0
        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);
        }
Example #6
0
        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);
        }
Example #7
0
 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);
     }
 }
Example #8
0
        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);
            }
        }
Example #9
0
        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);
            }
        }
Example #10
0
        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);
        }
Example #11
0
            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);
            }
Example #12
0
        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);
            }
        }
Example #13
0
 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);
     }
 }
Example #14
0
 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);
     }
 }
Example #15
0
            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);
            }
Example #16
0
 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 }
         });
     }
 }
Example #17
0
        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, "足聊");
            }
        }
Example #18
0
        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);
        }
Example #19
0
        /// <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);
        }
Example #20
0
        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);
        }
Example #21
0
        public void OnRemoveFromBlackList()
        {
            var request = new NotifyMessageRequest(ActionType.BLACKLIST_DELETE, _UserRelationService.Receiver, _UserRelationService.Sender, new long[] { _UserRelationService.Receiver }, String.Empty);

            _NotifyServiceProxy.Notify(request);
        }
Example #22
0
 public Dictionary <long, Push.Data.IDBMessage> Notify(NotifyMessageRequest request)
 {
     Push.Data.IDBMessage senderMessage;
     return(Notify(request, out senderMessage));
 }
Example #23
0
        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);
                    }
                }
            }
        }
Example #24
0
        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));
        }
Example #25
0
        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>());
        }