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); }
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); } }
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); }
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; }
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); }
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; } }
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(); } }
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); }
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()); } }
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()); } }
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); } }