Ejemplo n.º 1
0
        public virtual void UpdateReaded(HttpContext context)
        {
            YZRequest      request = new YZRequest(context);
            YZResourceType resType = request.GetEnum <YZResourceType>("resType");
            string         resId   = request.GetString("resId");
            int            msgId   = request.GetInt32("msgId");
            string         uid     = YZAuthHelper.LoginUserAccount;

            using (IYZDbProvider provider = YZDbProviderManager.DefaultProvider)
            {
                using (IDbConnection cn = provider.OpenConnection())
                {
                    YZSoft.Web.Social.SocialManager.UpdateReaded(provider, cn, resType, resId, uid, msgId);
                }
            }

            JObject   jMessage = new JObject();
            YZMessage message  = new YZMessage();

            message.resType = resType;
            message.resId   = resId;
            message.uid     = uid;
            message.message = jMessage.ToString();
            message.date    = DateTime.Now;
            YZSoft.Web.Push.MessageBus.Instance.PushMessage(null, new string[] { "readed" }, message, false);
        }
Ejemplo n.º 2
0
        public virtual YZMessage Insert(IDbConnection cn, YZMessage message)
        {
            using (SqlCommand cmd = new SqlCommand())
            {
                cmd.Connection = cn as SqlConnection;

                StringBuilder sb = new StringBuilder();
                sb.Append("SET NOCOUNT ON;");
                sb.Append("INSERT INTO YZAppCommunication(");
                sb.Append("uid,");
                sb.Append("date,");
                sb.Append("resType,");
                sb.Append("resId,");
                sb.Append("message) ");
                sb.Append("VALUES(");
                sb.Append("@uid,");
                sb.Append("@date,");
                sb.Append("@resType,");
                sb.Append("@resId,");
                sb.Append("@message);");
                sb.Append("SELECT @@IDENTITY");

                cmd.CommandText = sb.ToString();

                cmd.Parameters.Add("@uid", SqlDbType.NVarChar).Value     = message.uid;
                cmd.Parameters.Add("@date", SqlDbType.DateTime).Value    = message.date;
                cmd.Parameters.Add("@resType", SqlDbType.NVarChar).Value = message.resType;
                cmd.Parameters.Add("@resId", SqlDbType.NVarChar).Value   = message.resId;
                cmd.Parameters.Add("@message", SqlDbType.NVarChar).Value = message.message;

                message.id = Convert.ToInt32(this.ExecuteScalar(cmd));
                return(message);
            }
        }
Ejemplo n.º 3
0
        public void PushMessage(string clientid, string[] channels, YZMessage message, bool broadcast)
        {
            BPMObjectNameCollection uids = new BPMObjectNameCollection();

            if (!broadcast)
            {
                uids = NotifyManager.GetNotifyUsers(message.resType, message.resId);
            }

            this.PushMessage(clientid, uids, channels, message, broadcast);
        }
Ejemplo n.º 4
0
        protected virtual void PostProcessMessage(BPMConnection cn, YZMessage message)
        {
            User user = User.TryGetUser(cn, message.uid);

            if (user == null)
            {
                user         = new User();
                user.Account = message.uid;
            }

            message["UserDisplayName"] = user.ShortName;
        }
Ejemplo n.º 5
0
        public virtual object Reply(HttpContext context)
        {
            YZRequest request   = new YZRequest(context);
            string    clientid  = request.GetString("clientid", null);
            int       messageid = request.GetInt32("messageid");
            JObject   jPost     = request.GetPostData <JObject>();
            string    msg       = (string)jPost["message"];

            YZMessage           parentMessage;
            YZMessage           message = new YZMessage();
            YZMessageCollection replies;

            using (IYZDbProvider provider = YZDbProviderManager.DefaultProvider)
            {
                using (IDbConnection cn = provider.OpenConnection())
                {
                    parentMessage = SocialManager.GetMessageByID(provider, cn, messageid);

                    message.resType = parentMessage.resType;
                    message.resId   = parentMessage.resId;
                    message.uid     = YZAuthHelper.LoginUserAccount;
                    message.date    = DateTime.Now;
                    message.message = msg;
                    message.replyto = parentMessage.id;

                    SocialManager.Insert(provider, cn, message);

                    replies = SocialManager.GetMessageReplies(provider, cn, parentMessage.id);
                    parentMessage["Replies"] = replies;
                    parentMessage["Praised"] = SocialManager.GetVotePraisedCount(provider, cn, parentMessage.id);
                }
            }

            using (BPMConnection cn = new BPMConnection())
            {
                cn.WebOpen();

                this.PostProcessMessage(cn, parentMessage);

                foreach (YZMessage replyMessage in replies)
                {
                    this.PostProcessMessage(cn, replyMessage);
                }
            }

            YZSoft.Web.Push.MessageBus.Instance.onPostComments(clientid, message);

            return(parentMessage);
        }
Ejemplo n.º 6
0
        public void onPostComments(string clientid, YZMessage message)
        {
            switch (message.resType)
            {
            case YZResourceType.Group:
            case YZResourceType.SingleChat:
            case YZResourceType.Task:
                this.PushMessage(clientid, new string[] { "social", message.Channel }, message, false);
                break;

            default:
                this.PushMessage(clientid, new string[] { message.Channel }, message, true);
                break;
            }
        }
Ejemplo n.º 7
0
        public void Insert(IDbConnection cn, YZMessage message)
        {
            using (OracleCommand cmd = new OracleCommand())
            {
                cmd.Connection = cn as OracleConnection;
                cmd.BindByName = true;

                cmd.CommandText = "SELECT BPMSEQ_YZAPPCOMMUNICATION.NEXTVAL FROM DUAL";
                message.id      = System.Convert.ToInt32(cmd.ExecuteScalar());

                StringBuilder sb = new StringBuilder();
                sb.Append("INSERT INTO YZAPPCOMMUNICATION(");
                sb.Append("ID,");
                sb.Append("RESTYPE,");
                sb.Append("RESID,");
                sb.Append("\"UID\",");
                sb.Append("\"DATE\",");
                sb.Append("MESSAGE,");
                sb.Append("REPLYTO,");
                sb.Append("DURATION) ");
                sb.Append("VALUES(");
                sb.Append(":ID,");
                sb.Append(":RESTYPE,");
                sb.Append(":RESID,");
                sb.Append(":PM_UID,");
                sb.Append(":DATE1,");
                sb.Append(":MESSAGE,");
                sb.Append(":REPLYTO,");
                sb.Append(":DURATION)");
                cmd.CommandText = sb.ToString();

                cmd.Parameters.Add(":ID", OracleDbType.Int32).Value          = message.id;
                cmd.Parameters.Add(":RESTYPE", OracleDbType.NVarchar2).Value = message.resType.ToString();
                cmd.Parameters.Add(":RESID", OracleDbType.NVarchar2).Value   = this.Convert(message.resId, false);
                cmd.Parameters.Add(":PM_UID", OracleDbType.NVarchar2).Value  = this.Convert(message.uid, true);
                cmd.Parameters.Add(":DATE1", OracleDbType.Date).Value        = this.Convert(message.date, true);
                cmd.Parameters.Add(":MESSAGE", OracleDbType.NVarchar2).Value = this.Convert(message.message, true);
                cmd.Parameters.Add(":REPLYTO", OracleDbType.Int32).Value     = this.Convert(message.replyto, true);
                cmd.Parameters.Add(":DURATION", OracleDbType.Int32).Value    = this.Convert(message.duration, true);

                cmd.ExecuteNonQuery();
            }
        }
Ejemplo n.º 8
0
        public virtual object PostComments(HttpContext context)
        {
            YZRequest      request  = new YZRequest(context);
            string         clientid = request.GetString("clientid", null);
            YZResourceType resType  = request.GetEnum <YZResourceType>("resType");
            string         resId    = request.GetString("resId");
            int            duration = request.GetInt32("duration", -1);
            JObject        jPost    = request.GetPostData <JObject>();
            string         msg      = (string)jPost["message"];
            string         uid      = YZAuthHelper.LoginUserAccount;

            YZMessage message = new YZMessage();

            message.resType  = resType;
            message.resId    = resId;
            message.uid      = uid;
            message.date     = DateTime.Now;
            message.message  = msg;
            message.replyto  = -1;
            message.duration = duration;

            using (BPMConnection cn = new BPMConnection())
            {
                cn.WebOpen();
                this.PostProcessMessage(cn, message);
            }

            using (IYZDbProvider provider = YZDbProviderManager.DefaultProvider)
            {
                using (IDbConnection cn = provider.OpenConnection())
                {
                    SocialManager.Insert(provider, cn, message);
                    SocialManager.UpdateReaded(provider, cn, resType, resId, uid, message.id);
                }
            }

            YZSoft.Web.Push.MessageBus.Instance.onPostComments(clientid, message);
            return(message);
        }
Ejemplo n.º 9
0
        public void Insert(IDbConnection cn, YZMessage message)
        {
            using (SqlCommand cmd = new SqlCommand())
            {
                cmd.Connection = cn as SqlConnection;

                StringBuilder sb = new StringBuilder();
                sb.Append("SET NOCOUNT ON;");
                sb.Append("INSERT INTO YZAppCommunication(");
                sb.Append("resType,");
                sb.Append("resId,");
                sb.Append("uid,");
                sb.Append("date,");
                sb.Append("message,");
                sb.Append("replyto,");
                sb.Append("duration) ");
                sb.Append("VALUES(");
                sb.Append("@resType,");
                sb.Append("@resId,");
                sb.Append("@uid,");
                sb.Append("@date,");
                sb.Append("@message,");
                sb.Append("@replyto,");
                sb.Append("@duration);");
                sb.Append("SELECT SCOPE_IDENTITY()");
                cmd.CommandText = sb.ToString();

                cmd.Parameters.Add("@resType", SqlDbType.NVarChar).Value = message.resType.ToString();
                cmd.Parameters.Add("@resId", SqlDbType.NVarChar).Value   = this.Convert(message.resId, false);
                cmd.Parameters.Add("@uid", SqlDbType.NVarChar).Value     = this.Convert(message.uid, true);
                cmd.Parameters.Add("@date", SqlDbType.DateTime).Value    = this.Convert(message.date, true);
                cmd.Parameters.Add("@message", SqlDbType.NVarChar).Value = this.Convert(message.message, true);
                cmd.Parameters.Add("@replyto", SqlDbType.Int).Value      = this.Convert(message.replyto, true);
                cmd.Parameters.Add("@duration", SqlDbType.Int).Value     = this.Convert(message.duration, true);

                message.id = System.Convert.ToInt32(cmd.ExecuteScalar());
            }
        }
Ejemplo n.º 10
0
        public void ProcessRequest(HttpContext context)
        {
            try
            {
                YZAuthHelper.OAuth();
                //YZAuthHelper.AshxAuthCheck();

                string loginUid = YZAuthHelper.LoginUserAccount;

                IDBProvider dbProvider = YZDBProviderManager.CurrentProvider;

                string   method = context.Request.Params["method"];
                JsonItem rv     = new JsonItem();

                // System.Threading.Thread.Sleep(2000);

                if (method == "Send")
                {
                    //http://oauth.skyworthdigital.com/WebService/Iservice/Communication.ashx?UserAccount=SDT12872&restype=1&message=添加一条哦啊讨论啊&resId=216928&method=Send

                    YZResourceType resType = (YZResourceType)Enum.Parse(typeof(YZResourceType), context.Request.Params["resType"], true);
                    string         resId   = context.Request.Params["resId"];
                    string         msg     = context.Request.Params["message"];

                    if (!string.IsNullOrEmpty(msg.Trim()))
                    {
                        using (IDbConnection cn = dbProvider.OpenConnection())
                        {
                            YZMessage message = new YZMessage(loginUid, DateTime.Now, resType, resId, msg);
                            message.Insert(cn);

                            YZCommunicationManager.UpdateReaded(cn, loginUid, resType, resId, message.id);

                            JsonItem result = new JsonItem();
                            rv.Attributes.Add("message", result);
                            message.Serialize(result);
                        }
                    }
                }
                else if (method == "GetTaskCommunicationList")
                {
                    GridPageInfo gridPageInfo = new GridPageInfo(context);

                    SecurityToken token = null;
                    using (BPMConnection bpmcn = new BPMConnection())
                    {
                        bpmcn.WebOpen();
                        token = bpmcn.Token;
                    }

                    using (IDbConnection cn = dbProvider.OpenConnection())
                    {
                        //http://oauth.skyworthdigital.com/WebService/Iservice/Communication.ashx?UserAccount=SDT12872&method=GetTaskCommunicationList&SearchType=QuickSearch&Keyword=216928
                        //http://oauth.skyworthdigital.com/WebService/Iservice/Communication.ashx?UserAccount=SDT12872&method=GetTaskCommunicationList&SearchType=QuickSearch&Keyword=REQ2014090001

                        using (BPMConnection bpmcn = new BPMConnection())
                        {
                            bpmcn.WebOpen();

                            IDbCommand cmd = dbProvider.GetTaskCommunicationListCommand(cn, loginUid, token.SIDs, dbProvider.FilterStringCommunicationListTaskTableFilter, dbProvider.FilterStringCommunicationMessageTableFilter, gridPageInfo.Start, gridPageInfo.Limit);
                            cmd.Connection = cn;

                            JsonItemCollection children = new JsonItemCollection();
                            rv.Attributes.Add("children", children);

                            using (YZReader reader = new YZReader(cmd.ExecuteReader()))
                            {
                                while (reader.Read())
                                {
                                    JsonItem item = new JsonItem();
                                    children.Add(item);

                                    string ownerAccount     = reader.ReadString("OwnerAccount");
                                    User   owner            = User.TryGetUser(bpmcn, ownerAccount);
                                    string ownerDisplayName = owner != null ? owner.DisplayName : ownerAccount;

                                    string lastMsgUid  = reader.ReadString("uid");
                                    User   lastMsgUser = User.TryGetUser(bpmcn, lastMsgUid);
                                    string lastMessageUserShortName = lastMsgUser != null ? lastMsgUser.ShortName : lastMsgUid;

                                    TaskState state  = (TaskState)reader.ReadEnum("State", typeof(TaskState), TaskState.Unknow);
                                    int       taskid = reader.ReadInt32("TaskID");

                                    item.Attributes["tid"]       = taskid;
                                    item.Attributes["sn"]        = reader.ReadString("SerialNum");
                                    item.Attributes["pn"]        = reader.ReadString("ProcessName");
                                    item.Attributes["user"]      = YZStringHelper.GetUserShortName(ownerAccount, ownerDisplayName);
                                    item.Attributes["state"]     = state.ToString();
                                    item.Attributes["stateText"] = YZStringHelper.GetTaskStateDisplayString(bpmcn, state, taskid);
                                    item.Attributes["date"]      = YZStringHelper.DateToStringL(reader.ReadDateTime("CreateAt"));

                                    string desc = Convert.ToString(reader.ReadString("Description"));



                                    item.Attributes["desc"] = String.IsNullOrEmpty(desc) ? "无内容摘要" : desc.CutStrHTML(isHTML: true);

                                    item.Attributes["count"]                    = reader.ReadInt32("count");
                                    item.Attributes["total"]                    = reader.ReadInt32("total");
                                    item.Attributes["Id"]                       = reader.ReadInt32("Id");
                                    item.Attributes["lastMessageId"]            = reader.ReadInt32("lastMsgId");
                                    item.Attributes["lastMessageUid"]           = lastMsgUid;
                                    item.Attributes["lastMessageUserShortName"] = lastMessageUserShortName;
                                    item.Attributes["lastMessageDate"]          = YZStringHelper.DateToStringL(reader.ReadDateTime("date"));
                                    item.Attributes["lastMessage"]              = reader.ReadString("message");
                                }
                            }
                        }

                        rv.Attributes["newMessageCount"] = dbProvider.GetTaskCommunicationNewMessageCount(cn, loginUid, token.SIDs);
                    }
                }
                else if (method == "GetBadge")
                {
                    YZResourceType resType = (YZResourceType)Enum.Parse(typeof(YZResourceType), context.Request.Params["resType"], true);
                    string         resId   = context.Request.Params["resId"];

                    using (IDbConnection cn = dbProvider.OpenConnection())
                    {
                        rv.Attributes["total"]           = YZCommunicationManager.GetMessageCount(cn, resType, resId);
                        rv.Attributes["newMessageCount"] = YZCommunicationManager.GetNewMessageCount(cn, loginUid, resType, resId);
                    }
                }
                else if (method == "UpdateReaded")
                {
                    YZResourceType resType   = (YZResourceType)Enum.Parse(typeof(YZResourceType), context.Request.Params["resType"], true);
                    string         resId     = context.Request.Params["resId"];
                    string         strLastId = context.Request.Params["lastid"];
                    if (String.IsNullOrEmpty(strLastId))
                    {
                        strLastId = "-1";
                    }
                    int lastId = Convert.ToInt32(strLastId);

                    using (IDbConnection cn = dbProvider.OpenConnection())
                    {
                        YZCommunicationManager.UpdateReaded(cn, loginUid, resType, resId, lastId);
                    }
                }
                else
                {
                    //http://bpm.sdt.com/YZSoft/Forms/XForm/%E5%B7%A5%E4%BD%9C%E6%8A%A5%E5%91%8A/%E5%B7%A5%E4%BD%9C%E6%8A%A5%E5%91%8A.aspx?tid=216928
                    //http://oauth.skyworthdigital.com/WebService/Iservice/Communication.ashx?UserAccount=SDT12872&restype=1&lastid=306&resId=216928

                    YZResourceType resType   = (YZResourceType)Enum.Parse(typeof(YZResourceType), context.Request.Params["resType"], true);
                    string         resId     = context.Request.Params["resId"];
                    string         strLastId = context.Request.Params["lastid"];
                    if (String.IsNullOrEmpty(strLastId))
                    {
                        strLastId = "-1";
                    }
                    int lastId = Convert.ToInt32(strLastId);

                    //获得数据
                    JsonItemCollection children = new JsonItemCollection();
                    rv.Attributes.Add("children", children);

                    using (BPMConnection bpmcn = new BPMConnection())
                    {
                        bpmcn.WebOpen();

                        using (IDbConnection cn = dbProvider.OpenConnection())
                        {
                            YZMessageCollection messages = YZCommunicationManager.GetNewMessages(cn, resType, resId, lastId);
                            messages.Serialize(bpmcn, children);
                        }
                    }
                }


                //输出数据
                context.Response.AppendHeader("Access-Control-Allow-Origin", "*");      // 响应类型
                context.Response.AppendHeader("Access-Control-Allow-Methods", "POST");  // 响应头设置
                context.Response.AppendHeader("Access-Control-Allow-Headers", "x-requested-with,content-type");

                context.Response.Charset         = "gb2312"; //设置字符集类型
                context.Response.ContentEncoding = System.Text.Encoding.GetEncoding("gb2312");
                context.Response.ContentType     = "application/json;charset=gb2312";

                //输出数据
                rv.Attributes.Add("success", true);
                context.Response.Write(rv.ToString());
            }
            catch (Exception e)
            {
                JsonItem rv = new JsonItem();

                context.Response.AppendHeader("Access-Control-Allow-Origin", "*");      // 响应类型
                context.Response.AppendHeader("Access-Control-Allow-Methods", "POST");  // 响应头设置
                context.Response.AppendHeader("Access-Control-Allow-Headers", "x-requested-with,content-type");

                context.Response.Charset         = "gb2312"; //设置字符集类型
                context.Response.ContentEncoding = System.Text.Encoding.GetEncoding("gb2312");
                context.Response.ContentType     = "application/json;charset=gb2312";

                rv.Attributes.Add("success", false);
                rv.Attributes.Add("errorMessage", e.Message);
                context.Response.Write(rv.ToString());
            }
        }
Ejemplo n.º 11
0
        public void PushMessage(string clientid, BPMObjectNameCollection uids, string[] channels, YZMessage message, bool broadcast)
        {
            JObject jmessage = JObject.FromObject(message);

            PushMessageCollection pushMessages = new PushMessageCollection();

            foreach (string channel in channels)
            {
                PushMessage pushmessage = new BPM.PushMessage(clientid, uids, channel, jmessage);
                pushmessage.Broadcast = broadcast;
                pushMessages.Add(pushmessage);
            }

            using (BPMConnection cn = new BPMConnection())
            {
                cn.WebOpen();
                cn.Push(pushMessages);
            }
        }