Exemple #1
0
        /// <summary>
        /// 增加一条记录,返回新的ID号。需要有一个单一主键,并且开启有标识符属性(异步方式)
        /// </summary>
        /// <param name="entity">实体模型</param>
        /// <returns></returns>
        public virtual async Task <int> InsertAsync(ClientLogEntity entity)
        {
            if (entity.ClientLogID <= 0)
            {
                entity.ClientLogID = GetNewID();
            }
            Dictionary <string, object> dict = new Dictionary <string, object>();

            GetParameters(entity, dict);

            string strSQL = "insert into ClientLog (" +
                            "ClientLogID," +
                            "ClientID," +
                            "RelationType," +
                            "RelationTime," +
                            "Contacter," +
                            "AnnalContent," +
                            "AnnalTime," +
                            "Inputer) " +
                            "values(" +
                            "@ClientLogID," +
                            "@ClientID," +
                            "@RelationType," +
                            "@RelationTime," +
                            "@Contacter," +
                            "@AnnalContent," +
                            "@AnnalTime," +
                            "@Inputer)";

            if (await Task.Run(() => _DB.ExeSQLResult(strSQL, dict)))
            {
                return(DataConverter.CLng(entity.ClientLogID));
            }
            return(-1);
        }
 /// <summary>
 /// 修改 客户端日志
 /// </summary>
 /// <param name="clientLogEntity">实体对象</param>
 public bool Update(ClientLogEntity clientLogEntity)
 {
     using (_connection = _DbFactory.GetOpenConnection())
     {
         return(_connection.Update <ClientLogEntity>(clientLogEntity) == 1);
     }
 }
Exemple #3
0
        /// <summary>
        /// 增加一条记录
        /// </summary>
        /// <param name="entity">实体模型</param>
        /// <returns></returns>
        public virtual bool Add(ClientLogEntity entity)
        {
            if (entity.ClientLogID <= 0)
            {
                entity.ClientLogID = GetNewID();
            }
            Dictionary <string, object> dict = new Dictionary <string, object>();

            GetParameters(entity, dict);

            string strSQL = "insert into ClientLog (" +
                            "ClientLogID," +
                            "ClientID," +
                            "RelationType," +
                            "RelationTime," +
                            "Contacter," +
                            "AnnalContent," +
                            "AnnalTime," +
                            "Inputer) " +
                            "values(" +
                            "@ClientLogID," +
                            "@ClientID," +
                            "@RelationType," +
                            "@RelationTime," +
                            "@Contacter," +
                            "@AnnalContent," +
                            "@AnnalTime," +
                            "@Inputer)";

            return(_DB.ExeSQLResult(strSQL, dict));
        }
        /// <summary>
        /// 新增client日志
        /// </summary>
        /// <param name="sessionId"></param>
        /// <param name="clientModel"></param>
        /// <param name="description"></param>
        /// <returns></returns>
        public static ClientLogEntity clientLoginLog(string sessionId, ClientModel clientModel, string description)
        {
            UserModel user = UserUtils.Provider.GetUser(sessionId);

            ClientLogService clientLogService = new ClientLogService();
            ClientLogEntity  log = new ClientLogEntity();

            log.Create();
            log.CasLogId = user.CasLogId;

            log.AppId   = clientModel.ClientId;
            log.AppName = clientModel.ClientName;
            log.AppUrl  = clientModel.ClientUrl;

            log.ST             = clientModel.Ticket;
            log.STValidated    = clientModel.TicketValidated;
            log.STCreateTime   = clientModel.TicketCreateTime;
            log.STEFTime       = clientModel.TicketEFTime;
            log.STValidateTime = clientModel.TicketValidateTime;

            log.SESSIONID   = UserUtils.Provider.getCurrentSession();
            log.Description = description;

            return(clientLogService.Save(log) ? log : null);
        }
        /// <summary>
        /// 新增 客户端日志
        /// </summary>
        /// <param name="clientLogEntity">实体对象</param>
        /// <returns></returns>
        public bool Save(ClientLogEntity clientLogEntity)
        {
            using (_connection = _DbFactory.GetOpenConnection())
            {
                string query = " insert into [T_SsoAppSession] ([AppLogId],[CasLogId], [AppId], [AppName], [AppUrl], [ST], [STCreateTime], [STEFTime], [STValidated], [STValidateTime], [LoginTime], [LogoutTime], [LogStatus], [Description], [SESSIONID]) values (@AppLogId, @CasLogId, @AppId, @AppName, @AppUrl, @ST, @STCreateTime, @STEFTime, @STValidated, @STValidateTime, @LoginTime, @LogoutTime, @LogStatus, @Description, @SESSIONID)";
                return(_connection.Execute(query, clientLogEntity) == 1);

                //return _connection.Insert<ClientLogEntity>(clientLogEntity) == 1;
            }
        }
Exemple #6
0
 /// <summary>
 /// 把实体类转换成键/值对集合
 /// </summary>
 /// <param name="entity"></param>
 /// <param name="dict"></param>
 private static void GetParameters(ClientLogEntity entity, Dictionary <string, object> dict)
 {
     dict.Add("ClientLogID", entity.ClientLogID);
     dict.Add("ClientID", entity.ClientID);
     dict.Add("RelationType", entity.RelationType);
     dict.Add("RelationTime", entity.RelationTime);
     dict.Add("Contacter", entity.Contacter);
     dict.Add("AnnalContent", entity.AnnalContent);
     dict.Add("AnnalTime", entity.AnnalTime);
     dict.Add("Inputer", entity.Inputer);
 }
Exemple #7
0
        /// <summary>
        /// 通过数据读取器生成实体类
        /// </summary>
        /// <param name="rdr"></param>
        /// <returns></returns>
        private static ClientLogEntity GetEntityFromrdr(NullableDataReader rdr)
        {
            ClientLogEntity info = new ClientLogEntity();

            info.ClientLogID  = rdr.GetInt32("ClientLogID");
            info.ClientID     = rdr.GetInt32("ClientID");
            info.RelationType = rdr.GetString("RelationType");
            info.RelationTime = rdr.GetNullableDateTime("RelationTime");
            info.Contacter    = rdr.GetString("Contacter");
            info.AnnalContent = rdr.GetString("AnnalContent");
            info.AnnalTime    = rdr.GetNullableDateTime("AnnalTime");
            info.Inputer      = rdr.GetString("Inputer");
            return(info);
        }
Exemple #8
0
        /// <summary>
        /// 获取实体(异步方式)
        /// </summary>
        /// <param name="strWhere">参数化查询条件(例如: and Name = @Name )</param>
        /// <param name="dict">参数的名/值集合</param>
        /// <returns></returns>
        public virtual async Task <ClientLogEntity> GetEntityAsync(string strWhere, Dictionary <string, object> dict = null)
        {
            ClientLogEntity obj    = null;
            string          strSQL = "select top 1 * from ClientLog where 1=1 " + strWhere;

            using (NullableDataReader reader = await Task.Run(() => _DB.GetDataReader(strSQL, dict)))
            {
                if (reader.Read())
                {
                    obj = GetEntityFromrdr(reader);
                }
            }
            return(obj);
        }
        /// <summary>
        /// 退出时修改client日志
        /// </summary>
        /// <param name="client"></param>
        /// <returns></returns>
        public static bool clientLogoutLog(ClientModel client)
        {
            try
            {
                ClientLogService clientLogService = new ClientLogService();
                ClientLogEntity  log = clientLogService.GetClientLog(client.ClientLogId);

                log.LogStatus  = 0;
                log.LogoutTime = DateTime.Now;

                return(clientLogService.Update(log));
            }
            catch (Exception ex)
            {
                LogUtils.myError(log, ex);
                return(false);
            }
        }
Exemple #10
0
        /// <summary>
        /// 更新一条记录(异步方式)
        /// </summary>
        /// <param name="entity">实体模型</param>
        /// <returns></returns>
        public virtual async Task <bool> UpdateAsync(ClientLogEntity entity)
        {
            Dictionary <string, object> dict = new Dictionary <string, object>();

            GetParameters(entity, dict);
            string strSQL = "Update ClientLog SET " +
                            "ClientID = @ClientID," +
                            "RelationType = @RelationType," +
                            "RelationTime = @RelationTime," +
                            "Contacter = @Contacter," +
                            "AnnalContent = @AnnalContent," +
                            "AnnalTime = @AnnalTime," +
                            "Inputer = @Inputer" +
                            " WHERE " +

                            "ClientLogID = @ClientLogID";

            return(await Task.Run(() => _DB.ExeSQLResult(strSQL, dict)));
        }
Exemple #11
0
 /// <summary>
 /// 增加或更新一条记录(异步方式)
 /// </summary>
 /// <param name="entity">实体模型</param>
 /// <param name="IsSave">是否增加</param>
 /// <returns></returns>
 public virtual async Task <bool> AddOrUpdateAsync(ClientLogEntity entity, bool IsSave)
 {
     return(IsSave ? await AddAsync(entity) : await UpdateAsync(entity));
 }
Exemple #12
0
 /// <summary>
 /// 增加或更新一条记录
 /// </summary>
 /// <param name="entity">实体模型</param>
 /// <param name="IsSave">是否增加</param>
 /// <returns></returns>
 public virtual bool AddOrUpdate(ClientLogEntity entity, bool IsSave)
 {
     return(IsSave ? Add(entity) : Update(entity));
 }
Exemple #13
0
        /// <summary>
        /// 验证ST
        /// todo:ticket 应该与浏览器,ip绑定
        /// </summary>
        /// <param name="ticket">验证ST</param>
        /// <param name="service">应用地址</param>
        /// <param name="code">客户端防伪标识</param>
        /// <param name="sessionIdKey">客户端 sessionIdKey</param>
        /// <param name="sessionIdValue">客户端 sessionIdValue</param>
        public virtual UserModel VerifyTicket(string ticket, string service, string code, string sessionIdKey, string sessionIdValue)
        {
            try
            {
                string userId = RedisGetTicket(ticket);

                if (userId == null)
                {
                    throw new Exception("无效票据!");
                }

                string sessionId = UserUtils.Provider.UserSession(userId);

                if (sessionId == null)
                {
                    throw new Exception("用户未登录!");
                }

                UserModel user = UserUtils.Provider.GetUser(sessionId);

                if (user == null)
                {
                    throw new Exception("用户未登录!");
                }

                if (user.Clients == null)
                {
                    throw new Exception("用户未登录客户端!");
                }

                ClientModel clientModel = user.Clients.Find(t => t.ClientUrl == service);

                if (clientModel == null)
                {
                    throw new Exception("客户端未登录!");
                }
                else
                {
                    RedisDelTicket(ticket);
                    if (clientModel.TicketValidated == -1)
                    {
                        user.Clients.Remove(clientModel);//移除旧的

                        clientModel.TicketValidateTime = DateTime.Now;
                        clientModel.SessionIdKey       = sessionIdKey;
                        clientModel.TicketValidated    = 1;
                        clientModel.SessionIdValue     = sessionIdValue;
                        string description = "";
                        if (!doDecryptTicket(service, ticket))
                        {
                            clientModel.TicketValidated = 0;
                            description = "无效票据!";
                        }
                        if (!clientModel.ClientUrl.Equals(service) || !clientModel.Code.Equals(code))
                        {
                            clientModel.TicketValidated = 0;
                            description = "客户端不一致!";
                        }

                        ClientLogEntity log = DataBaseUtils.clientLoginLog(sessionId, clientModel, description);
                        clientModel.ClientLogId = log.AppLogId;
                        user.Clients.Add(clientModel);
                        UserUtils.Provider.UpdateUser(sessionId, user);//添加编辑后的

                        if (clientModel.TicketValidated == 1)
                        {
                            if (GrobalConfig.IsApiCheck)
                            {
                                user.Clients.ForEach(t =>
                                {
                                    RedisAddClient(t.SessionIdValue, sessionId);
                                });
                            }
                            return(user);
                        }
                        else
                        {
                            throw new Exception(description);
                        }
                    }
                    else
                    {
                        throw new Exception("客户端已登录校验!");
                    }
                }
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }