/// <summary> /// createtime expiresetime不用传。 /// </summary> /// <param name="PubConn"></param> /// <param name="model"></param> /// <param name="tokentype"></param> /// <returns></returns> public virtual bool Add(DbConn PubConn, DbModels.tb_token model, Models.DbModels.TokenType tokentype) { DateTime nowtime = PubConn.GetServerDate(); model.createtime = nowtime; model.expires = nowtime.AddMinutes(GetExpiresminutes(tokentype)); List<ProcedureParameter> Par = new List<ProcedureParameter>() { // new ProcedureParameter("@token", model.token), // new ProcedureParameter("@userid", model.userid), new ProcedureParameter("@id", model.id), // new ProcedureParameter("@username", model.username), // new ProcedureParameter("@appid", model.appid), // new ProcedureParameter("@createtime", model.createtime), // new ProcedureParameter("@expires", model.expires ) }; int rev = PubConn.ExecuteSql("insert into " + tokentype.ToString() + " (token,userid,id,username,appid,createtime,expires)" + " values(@token,@userid,@id,@username,@appid,@createtime,@expires)", Par); return rev == 1; }
public List<tb_node_model> GetAllStopNodesWithNeedCheckState(DbConn PubConn) { return SqlHelper.Visit(ps => { ps.Add("@nodelastupdatetime", PubConn.GetServerDate().AddMinutes(-5)); string sql = "select id,nodename,nodecreatetime,nodeip,nodelastupdatetime,ifcheckstate from tb_node where nodelastupdatetime<@nodelastupdatetime and ifcheckstate='true'"; DataSet ds = new DataSet(); List<tb_node_model> rs = new List<tb_node_model>(); PubConn.SqlToDataSet(ds, sql, ps.ToParameters()); foreach (DataRow dr in ds.Tables[0].Rows) { tb_node_model n = CreateModel(dr); rs.Add(n); } return rs; }); }
public tb_consumer_partition_model RegisterConsumerPartition(DbConn PubConn, int clientid, int partitionindex,string mqpath, long tempid) { var mqpathmodel = GetMQPath(PubConn, mqpath); tb_mqpath_partition_dal mqpathpartitiondal = new tb_mqpath_partition_dal(); var mqpathpartitionmodel = mqpathpartitiondal.GetOfConsumer(PubConn, partitionindex,mqpathmodel.id); if (mqpathpartitionmodel == null) return null; tb_consumer_partition_dal dal = new tb_consumer_partition_dal(); if (dal.Edit2(PubConn, new tb_consumer_partition_model() { consumerclientid = clientid, lastconsumertempid = tempid, partitionid = mqpathpartitionmodel.partitionid, partitionindex = partitionindex }) <= 0) { var partitionidinfo = PartitionRuleHelper.GetPartitionIDInfo(mqpathpartitionmodel.partitionid); var datanodename = PartitionRuleHelper.GetDataNodeName(partitionidinfo.DataNodePartition); long maxid = -1; DateTime serverdate = PubConn.GetServerDate(); string tablename = PartitionRuleHelper.GetTableName(partitionidinfo.TablePartition,serverdate); SqlHelper.ExcuteSql(this.GetDataNodeConnectString(PubConn, partitionidinfo.DataNodePartition), (c) => { var exist = c.TableIsExist(tablename); if (!exist) { throw new BusinessMQException(string.Format("当前数据节点{0},表{1}不存在", partitionidinfo.DataNodePartition,tablename)); } tb_messagequeue_dal mqdal = new tb_messagequeue_dal(); mqdal.TableName = tablename; maxid = mqdal.GetMaxId(c); if (maxid <= 0) maxid = PartitionRuleHelper.GetMQID(new MQIDInfo() { AutoID=0, DataNodePartition=partitionidinfo.DataNodePartition, Day=serverdate, TablePartition=partitionidinfo.TablePartition }); }); dal.Add2(PubConn, new tb_consumer_partition_model() { consumerclientid = clientid, lastconsumertempid = tempid, lastmqid = maxid, partitionid = mqpathpartitionmodel.partitionid, partitionindex = partitionindex }); } return dal.Get(PubConn, clientid, mqpathpartitionmodel.partitionid); }
/// <summary> /// 取得未消费的数量 /// </summary> /// <param name="lastMqId"></param> /// <returns></returns> public long GetNonMsgCount(DbConn conn, long lastMqId) { return SqlHelper.Visit((ps) => { MQIDInfo info = PartitionRuleHelper.GetMQIDInfo(lastMqId); var currentday = conn.GetServerDate().Date; string sql = "SELECT SUM(mqcount) FROM [tb_partition_messagequeue_report] WITH(NOLOCK) WHERE [day]>@day AND partitionid=@partitionid AND [day]<>@currentday"; ps.Add("@day", info.Day); ps.Add("@currentday", currentday); ps.Add("@partitionid", PartitionRuleHelper.GetPartitionID(new PartitionIDInfo() { DataNodePartition = info.DataNodePartition, TablePartition = info.TablePartition })); object obj = conn.ExecuteScalar(sql, ps.ToParameters()); long msgCount = 0; if (obj != DBNull.Value && obj != null) { msgCount = LibConvert.ObjToInt64(obj); } long firstCount = 0; long lastCount = 0; using (DbConn nodeConn = DbConfig.CreateConn(DataConfig.DataNodeParConn(PartitionRuleHelper.PartitionNameRule(info.DataNodePartition)))) { nodeConn.Open(); string firsttableName = PartitionRuleHelper.GetTableName(info.TablePartition, info.Day); var msgDal = new tb_messagequeue_dal(); msgDal.TableName = firsttableName; firstCount = msgDal.GetLastDayNonMsgCount(nodeConn, lastMqId); if (info.Day != currentday)//不是今天 { string lasttableName = PartitionRuleHelper.GetTableName(info.TablePartition, currentday); var dal = new tb_messagequeue_dal(); dal.TableName = lasttableName; long maxmqid = dal.GetMaxID(nodeConn); if (lastMqId == 0) lastCount = 0; else lastCount = dal.GetLastDayMsgCount(nodeConn, maxmqid); } } //最后一天剩余 return msgCount + firstCount + lastCount; }); }