Beispiel #1
0
        protected override RemoveIOSMessageBindRD ProcessRequest(DTO.Base.APIRequest <RemoveIOSMessageBindRP> pRequest)
        {
            RemoveIOSMessageBindRD rd = new RemoveIOSMessageBindRD();

            string userId     = pRequest.Parameters.UserId;
            string customerId = pRequest.CustomerID;


            PushUserBasicBLL    service   = new PushUserBasicBLL(this.CurrentUserInfo);
            PushUserBasicEntity basicInfo = new PushUserBasicEntity();

            basicInfo = service.GetByID(userId);
            if (basicInfo == null)
            {
                throw new APIException("用户ID无效")
                      {
                          ErrorCode = 103
                      };
            }
            else
            {
                service.DeletePushUserBasicByUserId(userId);
            }


            return(rd);
        }
        public void PushMessage(LoggingSessionInfo loggingSessionInfo, dynamic paramter)
        {
            DynamicInterfaceBLL dynamicInterfaceBLL = new DynamicInterfaceBLL(loggingSessionInfo);
            var eventList = dynamicInterfaceBLL.getEventList(new ReqData <getActivityListEntity>()
            {
                common = new ReqCommonData()
                {
                    customerId = loggingSessionInfo.ClientID
                }, special = new getActivityListEntity()
                {
                    type = "new", page = 1, pageSize = 5
                }
            });

            if (eventList.ItemList != null && eventList.ItemList.Length > 0)
            {
                int    channelID = 0;
                string message   = "";

                PrepareMessage(loggingSessionInfo, paramter, out channelID, out message);

                PushUserBasicBLL      pushUserBasicBLL    = new PushUserBasicBLL(loggingSessionInfo);
                PushUserBasicEntity[] pushUserBasicEntity = pushUserBasicBLL.Query(new JIT.Utility.DataAccess.Query.IWhereCondition[] {
                    new JIT.Utility.DataAccess.Query.EqualsCondition()
                    {
                        FieldName = "IsDelete", Value = "0"
                    }
                    , new JIT.Utility.DataAccess.Query.EqualsCondition()
                    {
                        FieldName = "CustomerId", Value = loggingSessionInfo.ClientID
                    }
                    , new JIT.Utility.DataAccess.Query.DirectCondition()
                    {
                        Expression = "Plat<>'Android'"
                    }
                }, null);

                string json = "";

                foreach (var item in pushUserBasicEntity)
                {
                    PushRequest pRequest2 = RequestBuilder.CreateIOSUnicastNotificationRequest(1, channelID, item.DeviceToken, message);
                    var         request   = pRequest2.Request.DeserializeJSONTo <JdSoft.Apple.Apns.Notifications.Notification>();
                    request.Payload.CustomItems.Add("EventUrl", new string[] { "http://o2oapi.aladingyidong.com/HtmlApps/html/public/xiehuibao/activity.html?customerId=" + loggingSessionInfo.ClientID + "&type=new" });
                    pRequest2.Request = request.ToJSON();
                    json = "{\"pRequest\":" + pRequest2.ToJSON() + "}";

                    ThreadPool.QueueUserWorkItem(new WaitCallback(SendHttpRequest), json);
                }

                //var response2 = SendHttpRequest(url, method, json);
            }
            else
            {
                SendMarketingMessageBLL.log.WriteEntry("无新活动", System.Diagnostics.EventLogEntryType.Information);
            }
        }
        public void PushMessage(string memberID, string messageContent)
        {
            PushUserBasicBLL pushUserBasicBll = new PushUserBasicBLL(loggingSessionInfo);

            Loggers.Debug(new DebugLogInfo()
            {
                Message = "memberID:" + memberID
            });

            //Updated by Willie Yan on 2014-05-09   同一账号在多个设备登录,应当取时间最新的
            var userBasicArray = pushUserBasicBll.QueryByEntity(
                new PushUserBasicEntity()
            {
                UserId = memberID
            }
                , new JIT.Utility.DataAccess.Query.OrderBy[] { new JIT.Utility.DataAccess.Query.OrderBy()
                                                               {
                                                                   FieldName = "LastUpdateTime", Direction = JIT.Utility.DataAccess.Query.OrderByDirections.Desc
                                                               } });

            PushUserBasicEntity userBasic = null;

            if (userBasicArray.Length > 0)
            {
                userBasic = userBasicArray[0];
            }
            else
            {
                Loggers.Debug(new DebugLogInfo()
                {
                    Message = string.Format("没有找到该memberID:" + memberID)
                });
            }

            /*没有DeviceToken时,记录日志,不直接抛出异常 qianzhi  2014-03-14
             * if (userBasic == null)
             * {
             *  throw new Exception("VipID:" + memberID + "没有保存DeviceToken");
             * }
             * if (!string.IsNullOrEmpty(userBasic.DeviceToken))
             * {
             *  // IOSNotificationService.Default.SendNotification(IOSNotificationBuilder.CreateNotification(userBasic.DeviceToken, messageContent));
             *  string method = "Process";
             *  //IOS消息推送
             *  string url = "http://121.199.42.125:9000/PushService.svc";
             *  PushRequest pRequest2 = RequestBuilder.CreateIOSUnicastNotificationRequest(1, 2, userBasic.DeviceToken, messageContent);
             *  var json = "{\"pRequest\":" + pRequest2.ToJSON() + "}";
             *  var response2 = SendHttpRequest(url, method, json);
             *  Loggers.DEFAULT.Debug(new DebugLogInfo
             *      {
             *          Message = "消息发送结果" + response2
             *      });
             * }
             * else
             * {
             *  throw new Exception("VipID:" + userBasic.UserId + "没有获取到DeviceToken");
             * }
             */
            if (userBasic != null)
            {
                Loggers.Debug(new DebugLogInfo()
                {
                    Message = "推送客服, userBasic:" + userBasic.ToJSON()
                });
                if (!string.IsNullOrEmpty(userBasic.DeviceToken))
                {
                    // IOSNotificationService.Default.SendNotification(IOSNotificationBuilder.CreateNotification(userBasic.DeviceToken, messageContent));
                    string method = "Process";
                    //IOS消息推送
                    //  string url = "http://121.199.42.125:9000/PushService.svc";
                    string url       = System.Configuration.ConfigurationManager.AppSettings["pushMessageUrl"];
                    int    channelId = 2;
                    if (!string.IsNullOrEmpty(userBasic.Channel))
                    {
                        channelId = Convert.ToInt32(userBasic.Channel);
                    }
                    PushRequest pRequest2 = RequestBuilder.CreateIOSUnicastNotificationRequest(1, channelId, userBasic.DeviceToken, messageContent);
                    var         json      = "{\"pRequest\":" + pRequest2.ToJSON() + "}";
                    var         response2 = SendHttpRequest(url, method, json);
                    var         msg       = "会员ID:" + memberID + " DeviceToken:" + userBasic.DeviceToken;
                    Loggers.DEFAULT.Debug(new DebugLogInfo
                    {
                        Message = msg + "  消息发送结果: " + response2
                    });
                }
                else
                {
                    Loggers.Debug(new DebugLogInfo()
                    {
                        Message = string.Format("PushMessage: {0}", "VipID:" + memberID + "没有保存DeviceToken")
                    });
                }
            }
        }
        public string SetIOSDeviceToken(string reqContent)
        {
            var rd     = new APIResponse <SetIOSDeviceTokenRD>();
            var rdData = new SetIOSDeviceTokenRD();

            try
            {
                #region
                Loggers.Debug(new DebugLogInfo()
                {
                    Message = string.Format("setSignUp: {0}", reqContent)
                });

                //解析请求字符串
                var rp = reqContent.DeserializeJSONTo <APIRequest <SetIOSDeviceTokenRP> >();
                if (rp.Parameters != null)
                {
                    rp.Parameters.Validate();
                }

                string customerID = string.Empty;

                //判断客户ID是否传递
                if (!string.IsNullOrEmpty(rp.CustomerID))
                {
                    customerID = rp.CustomerID;
                }
                var loggingSessionInfo = Default.GetBSLoggingSession(customerID, "1");

                if (rp.Parameters == null)
                {
                    rp.Parameters.DeviceToken = string.Empty;
                    rd.ResultCode             = 102;
                    rd.Message = "没有特殊参数";
                    return(rd.ToJSON());
                }

                if (string.IsNullOrEmpty(rp.UserID))
                {
                    rd.ResultCode = 2201;
                    rd.Message    = "userId不能为空";
                    return(rd.ToJSON());
                }

                if (string.IsNullOrEmpty(rp.Parameters.DeviceToken))
                {
                    rd.ResultCode = 2201;
                    rd.Message    = "deviceToken不能为空";
                    return(rd.ToJSON().ToString());
                }
                #endregion

                PushUserBasicBLL    service   = new PushUserBasicBLL(loggingSessionInfo);
                PushUserBasicEntity basicInfo = new PushUserBasicEntity();
                basicInfo = service.GetByID(rp.UserID);
                if (basicInfo == null)
                {
                    PushUserBasicEntity basicInfo1 = new PushUserBasicEntity();
                    basicInfo1.UserId      = rp.UserID;
                    basicInfo1.DeviceToken = ToStr(rp.Parameters.DeviceToken);
                    basicInfo1.CustomerId  = ToStr(rp.CustomerID);
                    basicInfo1.Channel     = ToStr("");
                    basicInfo1.Plat        = ToStr("");
                    service.Create(basicInfo1);
                }
                else
                {
                    basicInfo.DeviceToken = rp.Parameters.DeviceToken;
                    basicInfo.Channel     = ToStr("");
                    service.Update(basicInfo);
                }
                rdData.DeviceToken = rp.Parameters.DeviceToken;
                rd.Data            = rdData;
                rd.ResultCode      = 0;
            }
            catch (Exception ex)
            {
                rd.ResultCode = 103;
                rd.Message    = ex.ToString();
            }
            Loggers.Debug(new DebugLogInfo()
            {
                Message = string.Format("setSignUp content: {0}", rd.Message)
            });

            return(rd.ToJSON());
        }