예제 #1
0
        public ActionResult Add(tb_messagequeue_model model, string node, string tablepartition, string daypartition)
        {
            DateTime serverdate = DateTime.Now;

            using (DbConn conn = DbConfig.CreateConn(DataConfig.MqManage))
            {
                conn.Open();
                serverdate = conn.GetServerDate();
            }
            using (DbConn conn = DbConfig.CreateConn(DataConfig.DataNodeParConn(node)))
            {
                conn.Open();
                model.sqlcreatetime = serverdate;
                model.mqcreatetime  = DateTime.Now;
                string tablename = PartitionRuleHelper.GetTableName(Convert.ToInt32(tablepartition), DateTime.ParseExact(daypartition, "yyMMdd", CultureInfo.InvariantCulture));
                var    dal       = new tb_messagequeue_dal(); dal.TableName = tablename;
                if (dal.Add(conn, tablename, model))
                {
                    return(RedirectToAction("index"));
                }
                else
                {
                    ModelState.AddModelError("Error", "更新错误");
                    return(View(model));
                }
            }
        }
        public IList <tb_messagequeue_model> GetPageList(DbConn conn, int pageIndex, int pageSize, string id, ref int count)
        {
            int tempCount = 0;
            IList <tb_messagequeue_model> list = new List <tb_messagequeue_model>();
            var result = SqlHelper.Visit((ps) =>
            {
                StringBuilder where = new StringBuilder(" WHERE 1=1");
                if (!string.IsNullOrWhiteSpace(id))
                {
                    where.AppendFormat(" AND id={0}", id);
                }
                string sql      = string.Format("SELECT ROW_NUMBER() OVER(ORDER BY Id DESC) AS rownum,* FROM {0}  WITH(NOLOCK)", TableName) + where;
                string countSql = string.Format("SELECT COUNT(1) FROM {0} WITH(NOLOCK)", TableName) + where;
                object obj      = conn.ExecuteScalar(countSql, null);
                if (obj != DBNull.Value && obj != null)
                {
                    tempCount = LibConvert.ObjToInt(obj);
                }
                string sqlPage = string.Concat("SELECT * FROM (", sql.ToString(), ") A WHERE rownum BETWEEN ", ((pageIndex - 1) * pageSize + 1), " AND ", pageSize * pageIndex);
                DataTable dt   = conn.SqlToDataTable(sqlPage, null);
                if (dt != null && dt.Rows.Count > 0)
                {
                    foreach (DataRow dr in dt.Rows)
                    {
                        tb_messagequeue_model model = CreateModel(dr);
                        list.Add(model);
                    }
                }
                return(list);
            });

            count = tempCount;
            return(result);
        }
예제 #3
0
        public ActionResult Update(tb_messagequeue_model model, string node, long id)
        {
            ViewBag.node = node;
            var mqidinfo = XXF.BaseService.MessageQuque.BusinessMQ.SystemRuntime.PartitionRuleHelper.GetMQIDInfo(Convert.ToInt64(id));

            ViewBag.tablepartition = mqidinfo.TablePartition; ViewBag.daypartition = mqidinfo.Day.ToString("yyMMdd");
            string tablename = PartitionRuleHelper.GetTableName(mqidinfo.TablePartition, mqidinfo.Day);
            var    dal       = new tb_messagequeue_dal(); dal.TableName = tablename;

            using (DbConn conn = DbConfig.CreateConn(DataConfig.DataNodeParConn(node)))
            {
                conn.Open();
                tb_messagequeue_model result = dal.GetModel(conn, id, tablename);
                if (result != null)
                {
                    result.message = model.message;
                    result.state   = model.state;
                    result.source  = model.source;
                    if (dal.Update(conn, result, tablename))
                    {
                        return(RedirectToAction("Index", new { node = node, tablepartition = XXF.BaseService.MessageQuque.BusinessMQ.SystemRuntime.PartitionRuleHelper.PartitionNameRule(mqidinfo.TablePartition), daypartition = mqidinfo.Day.ToString("yyMMdd"), mqid = id }));
                    }
                }
                ModelState.AddModelError("Error", "更新错误");
                return(View(result));
            }
        }
예제 #4
0
 public ActionResult Update(long id, string node)
 {
     using (DbConn conn = DbConfig.CreateConn(DataConfig.DataNodeParConn(node)))
     {
         conn.Open();
         ViewBag.node = node;
         var mqidinfo = XXF.BaseService.MessageQuque.BusinessMQ.SystemRuntime.PartitionRuleHelper.GetMQIDInfo(Convert.ToInt64(id));
         ViewBag.tablepartition = mqidinfo.TablePartition; ViewBag.daypartition = mqidinfo.Day.ToString("yyMMdd");
         string tablename            = PartitionRuleHelper.GetTableName(mqidinfo.TablePartition, mqidinfo.Day);
         var    dal                  = new tb_messagequeue_dal(); dal.TableName = tablename;
         tb_messagequeue_model model = dal.GetModel(conn, id, tablename);
         return(View(model));
     }
 }
 public tb_messagequeue_model GetModel(DbConn conn, long id, string tableName)
 {
     return(SqlHelper.Visit((ps) =>
     {
         tb_messagequeue_model model = null;
         string sql = string.Format("SELECT TOP 1 * FROM {0}  WITH(NOLOCK)  WHERE id=@id", tableName);
         ps.Add("@id", id);
         DataTable dt = conn.SqlToDataTable(sql, ps.ToParameters());
         if (dt != null && dt.Rows.Count > 0)
         {
             foreach (DataRow dr in dt.Rows)
             {
                 model = CreateModel(dr);
             }
         }
         return model;
     }));
 }
예제 #6
0
        public virtual bool Add2(DbConn PubConn, tb_messagequeue_model model)
        {
            List <ProcedureParameter> Par = new List <ProcedureParameter>()
            {
                //mq在生产者端的创建时间(生产者端时间可能跟服务器时间不一致)
                new ProcedureParameter("@mqcreatetime", model.mqcreatetime),
                //消息类型,0=可读消息,1=已迁移消息
                new ProcedureParameter("@state", model.state),
                //来源类型:0 表示 正常发送,1 表示 迁移消息
                new ProcedureParameter("@source", model.source),
                //消息体(消息内容,以json形式存储,为了阅读考虑)
                new ProcedureParameter("@message", model.message),
                //sql数据节点处的创建时间(以管理中心时间为准)
                new ProcedureParameter("@sqlcreatetime", model.sqlcreatetime)
            };
            int rev = PubConn.ExecuteSql(string.Format(@"insert into {0}(mqcreatetime,sqlcreatetime,state,source,message) values(@mqcreatetime,@sqlcreatetime,@state,@source,@message)", TableName), Par);

            return(rev == 1);
        }
예제 #7
0
        public virtual bool Edit(DbConn PubConn, tb_messagequeue_model model)
        {
            List <ProcedureParameter> Par = new List <ProcedureParameter>()
            {
                //mq在生产者端的创建时间(生产者端时间可能跟服务器时间不一致)
                new ProcedureParameter("@mqcreatetime", model.mqcreatetime),
                //sql数据节点处的创建时间
                new ProcedureParameter("@sqlcreatetime", model.sqlcreatetime),
                //消息类型,0=可读消息,1=已迁移消息
                new ProcedureParameter("@state", model.state),
                //来源类型:0 表示 正常发送,1 表示 迁移消息
                new ProcedureParameter("@source", model.source),
                //消息体(消息内容,以json形式存储,为了阅读考虑)
                new ProcedureParameter("@message", model.message)
            };

            Par.Add(new ProcedureParameter("@id", model.id));

            int rev = PubConn.ExecuteSql("update tb_messagequeue set mqcreatetime=@mqcreatetime,sqlcreatetime=@sqlcreatetime,state=@state,source=@source,message=@message where id=@id", Par);

            return(rev == 1);
        }
 public bool Add(DbConn conn, string tableName, tb_messagequeue_model model)
 {
     return(SqlHelper.Visit((ps) =>
     {
         string sql = string.Format("insert into {0}(mqcreatetime,sqlcreatetime,state,source,message)  values(@mqcreatetime,@sqlcreatetime,@state,@source,@message)", tableName);
         List <ProcedureParameter> Par = new List <ProcedureParameter>()
         {
             //mq在生产者端的创建时间(生产者端时间可能跟服务器时间不一致)
             new ProcedureParameter("@mqcreatetime", model.mqcreatetime),
             //sql数据节点处的创建时间
             new ProcedureParameter("@sqlcreatetime", model.sqlcreatetime),
             //消息类型,0=可读消息,1=已迁移消息
             new ProcedureParameter("@state", model.state),
             //来源类型:0 表示 正常发送,1 表示 迁移消息
             new ProcedureParameter("@source", model.source),
             //消息体(消息内容,以json形式存储,为了阅读考虑)
             new ProcedureParameter("@message", model.message)
         };
         int rev = conn.ExecuteSql(sql, Par);
         return rev == 1;
     }));
 }
예제 #9
0
        public virtual tb_messagequeue_model CreateModel(DataRow dr)
        {
            var o = new tb_messagequeue_model();

            //消息id号,规则1+数据节点编号+表分区编号+时间分区号+自增id
            if (dr.Table.Columns.Contains("id"))
            {
                o.id = dr["id"].Tolong();
            }
            //mq在生产者端的创建时间(生产者端时间可能跟服务器时间不一致)
            if (dr.Table.Columns.Contains("mqcreatetime"))
            {
                o.mqcreatetime = dr["mqcreatetime"].ToDateTime();
            }
            //sql数据节点处的创建时间
            if (dr.Table.Columns.Contains("sqlcreatetime"))
            {
                o.sqlcreatetime = dr["sqlcreatetime"].ToDateTime();
            }
            //消息类型,0=可读消息,1=已迁移消息
            if (dr.Table.Columns.Contains("state"))
            {
                o.state = dr["state"].ToByte();
            }
            //来源类型:0 表示 正常发送,1 表示 迁移消息
            if (dr.Table.Columns.Contains("source"))
            {
                o.source = dr["source"].ToByte();
            }
            //消息体(消息内容,以json形式存储,为了阅读考虑)
            if (dr.Table.Columns.Contains("message"))
            {
                o.message = dr["message"].Tostring();
            }
            return(o);
        }
        public bool Update(DbConn conn, tb_messagequeue_model model, string tableName)
        {
            return(SqlHelper.Visit((ps) =>
            {
                List <ProcedureParameter> Par = new List <ProcedureParameter>()
                {
                    //mq在生产者端的创建时间(生产者端时间可能跟服务器时间不一致)
                    new ProcedureParameter("@mqcreatetime", model.mqcreatetime),
                    //sql数据节点处的创建时间
                    new ProcedureParameter("@sqlcreatetime", model.sqlcreatetime),
                    //消息类型,0=可读消息,1=已迁移消息
                    new ProcedureParameter("@state", model.state),
                    //来源类型:0 表示 正常发送,1 表示 迁移消息
                    new ProcedureParameter("@source", model.source),
                    //消息体(消息内容,以json形式存储,为了阅读考虑)
                    new ProcedureParameter("@message", model.message)
                };
                Par.Add(new ProcedureParameter("@id", model.id));

                string sql = string.Format("update {0} set mqcreatetime=@mqcreatetime,sqlcreatetime=@sqlcreatetime,state=@state,source=@source,message=@message where id=@id", tableName);
                int rev = conn.ExecuteSql(sql, Par);
                return rev == 1;
            }));
        }