usingSystem;usingSystem.Collections.Generic;usingSystem.Text;usingHh.Mes.Common.log;usingHh.Mes.Common.Redis;usingHh.Mes.Common.Request;usingHh.Mes.POJO.Entity;usingHh.Mes.Pojo.System;usingHh.Mes.Service.Repository;usingSqlSugar;usingHh.Mes.POJO.Response;namespaceHh.Mes.Service.Logs{///<summary>///日志类///</summary>publicclassLogService:RepositorySqlSugar<sys_interface_log>{#region接口日志///<summary>/////获取列表///</summary>publicResponseLoadSysInterLog(PageReqpageReq,sys_interface_logmodel){varresult=newResponse();stringorderBy=(pageReq==null||string.IsNullOrEmpty(pageReq.field))?" id desc":$"{pageReq.field} {pageReq.order} ";stringsqlWhere=SqlSysInterLogWhere(model);varstringBuilder=newStringBuilder();//页码,页数//Exelture不分页if(!model.Exel&&pageReq!=null){stringBuilder.Append("declare @pageIndex int,@pageSize int,@offset int");stringBuilder.AppendLine($" select @pageIndex={pageReq.page}, @pageSize={pageReq.limit}, @offset=(@pageIndex - 1) * @pageSize");}stringBuilder.AppendLine($@"selectt1.*from[dbo].sys_interface_logt1with(nolock)where{sqlWhere}orderby{orderBy}");//Exelture不分页if(!model.Exel){stringBuilder.AppendLine(" offset @offset row fetch next @pageSize row only ");stringBuilder.Append($" select rowTotal= count(*) from sys_interface_log t1 with(nolock) where {sqlWhere}");}vards=base.Context.Ado.GetDataSetAll(stringBuilder.ToString(),newList<SugarParameter>(){newSugarParameter("@type",model.type),newSugarParameter("@name",model.name),newSugarParameter("@system",model.system),newSugarParameter("@path",model.path),newSugarParameter("@actionName",model.actionName),newSugarParameter("@beginLogTime",model.BeginLogTime),newSugarParameter("@endLogTime",model.EndLogTime),newSugarParameter("@response",model.response),newSugarParameter("@request",model.request),});result.Result=ds.Tables[0];result.Count=model.Exel?(int)result.Result.Rows.Count:(int)ds.Tables[1].Rows[0]["rowTotal"];returnresult;}privatestringSqlSysInterLogWhere(sys_interface_logmodel){varstringBuilder=newStringBuilder();stringBuilder.Append("1=1");if(!string.IsNullOrWhiteSpace(model.type))stringBuilder.Append(" and t1.type =@type ");if(!string.IsNullOrWhiteSpace(model.name))stringBuilder.Append(" and t1.name like '%'+@name+'%' ");if(!string.IsNullOrWhiteSpace(model.system))stringBuilder.Append(" and t1.system like '%'+@system+'%' ");if(!string.IsNullOrWhiteSpace(model.path))stringBuilder.Append(" and t1.path like '%'+@path+'%' ");if(!string.IsNullOrWhiteSpace(model.actionName))stringBuilder.Append(" and t1.actionName like '%'+@actionName+'%' ");if(model.BeginLogTime!=null)stringBuilder.Append(" and t1.logTime > @beginLogTime ");if(model.EndLogTime!=null)stringBuilder.Append(" and t1.logTime < @endLogTime ");if(model.response!=null)stringBuilder.Append(" and t1.response like '%'+@response+'%' ");if(!string.IsNullOrEmpty(model.responseNo200))stringBuilder.Append(" and t1.response not like '%200%' ");if(model.request!=null)stringBuilder.Append(" and t1.request like '%'+@request+'%' ");returnstringBuilder.ToString();}///<summary>///新增接口日志稳定后批量///</summary>///<returns></returns>publicvoidInsSysInterLog(List<sys_interface_log>model){try{base.Context.Insertable(model).ExecuteCommand();}catch(Exceptione){varactionName=model[0].actionName;varapiGroup=model[0].apiGroup;varbrowser=model[0].browser;varflag=model[0].flag;varlogTime=model[0].logTime;varmethod=model[0].method;varrequest=model[0].request;varresponse=model[0].response;varserver=model[0].server;vartotalMilliseconds=0;vartype=model[0].type;varqueryString=model[0].queryString;varname=model[0].name;varip=model[0].ip;varpath=model[0].path;varsystem=model[0].system;varresult=model[0].result;varremark=model[0].remark;varmsg=$@"actionName:【{actionName}】,apiGroup:【{apiGroup}】,browser:【{browser}】,flag:【{flag}】,logTime:【{logTime}】,method:【{method}】,request:【{request}】,response:【{response}】,server:【{server}】,totalMilliseconds:【{totalMilliseconds}】,type:【{type}】,queryString:【{queryString}】,name:【{name}】,ip:【{ip}】,path:【{path}】,system:【{system}】,result:【{result}】,remark:【{remark}】";Log4NetHelper.Instance.Info(msg);Log4NetHelper.Instance.Error(e.Message);}}#endregion#region操作日志///<summary>/////获取列表///</summary>publicResponseLoadSysOperLog(PageReqpageReq,sys_oper_logmodel){varresult=newResponse();stringorderBy=(pageReq==null||string.IsNullOrEmpty(pageReq.field))?" id desc":$"{pageReq.field} {pageReq.order} ";stringsqlWhere=SqlSysOperLogWhere(model);varstringBuilder=newStringBuilder();//页码,页数//Exelture不分页if(!model.Exel&&pageReq!=null){stringBuilder.Append("declare @pageIndex int,@pageSize int,@offset int");stringBuilder.AppendLine($" select @pageIndex={pageReq.page}, @pageSize={pageReq.limit}, @offset=(@pageIndex - 1) * @pageSize");}stringBuilder.AppendLine($@"selectt1.*from[dbo].sys_oper_logt1with(nolock)where{sqlWhere}orderby{orderBy}");//Exelture不分页if(!model.Exel){stringBuilder.AppendLine(" offset @offset row fetch next @pageSize row only ");stringBuilder.Append($" select rowTotal= count(*) from sys_oper_log t1 with(nolock) where {sqlWhere}");}vards=base.Context.Ado.GetDataSetAll(stringBuilder.ToString(),newList<SugarParameter>(){newSugarParameter("@name",model.name),newSugarParameter("@operType",model.operType),newSugarParameter("@logTime",model.logTime),});result.Result=ds.Tables[0];result.Count=model.Exel?(int)result.Result.Rows.Count:(int)ds.Tables[1].Rows[0]["rowTotal"];returnresult;}privatestringSqlSysOperLogWhere(sys_oper_logmodel){varstringBuilder=newStringBuilder();stringBuilder.Append("1=1");if(model.logTime!=null)stringBuilder.Append(" and t1.logTime >=@logTime ");if(!string.IsNullOrWhiteSpace(model.name))stringBuilder.Append(" and t1.name like '%'+@name+'%' ");if(!string.IsNullOrWhiteSpace(model.operType))stringBuilder.Append(" and t1.operType =@operType ");returnstringBuilder.ToString();}#endregion#region定时器日志///<summary>/////获取列表///</summary>publicResponseLoadSysJobLog(PageReqpageReq,sys_job_logmodel){varresult=newResponse();stringorderBy=(pageReq==null||string.IsNullOrEmpty(pageReq.field))?" id desc ":$"{pageReq.field} {pageReq.order} ";stringsqlWhere=SqlSysJobLogWhere(model);varstringBuilder=newStringBuilder();//页码,页数//Exelture不分页if(!model.Exel&&pageReq!=null){stringBuilder.Append("declare @pageIndex int,@pageSize int,@offset int");stringBuilder.AppendLine($" select @pageIndex={pageReq.page}, @pageSize={pageReq.limit}, @offset=(@pageIndex - 1) * @pageSize");}stringBuilder.AppendLine($@"selectt1.*from[dbo].sys_job_logt1with(nolock)where{sqlWhere}orderby{orderBy}");//Exelture不分页if(!model.Exel){stringBuilder.AppendLine(" offset @offset row fetch next @pageSize row only ");stringBuilder.Append($" select rowTotal= count(*) from sys_job_log t1 with(nolock) where {sqlWhere}");}vards=base.Context.Ado.GetDataSetAll(stringBuilder.ToString(),newList<SugarParameter>(){newSugarParameter("@jobName",model.jobName),newSugarParameter("@createTime",model.createTime)});result.Result=ds.Tables[0];result.Count=model.Exel?(int)result.Result.Rows.Count:(int)ds.Tables[1].Rows[0]["rowTotal"];returnresult;}privatestringSqlSysJobLogWhere(sys_job_logmodel){varstringBuilder=newStringBuilder();stringBuilder.Append("1=1");if(!string.IsNullOrWhiteSpace(model.jobName))stringBuilder.Append(" and t1.jobName =@jobName ");if(model.createTime!=null)stringBuilder.Append(" and t1.createTime >@createTime ");returnstringBuilder.ToString();}///<summary>///新增定时器日志稳定后批量///</summary>///<returns></returns>publicvoidInsSysJobLog(List<sys_job_log>model){try{base.Context.Insertable(model).ExecuteCommand();}catch(Exceptione){varjobName=model[0].jobName;varmethodName=model[0].methodName;varmethodParams=model[0].methodParams;varjobMessage=model[0].jobMessage;varexceptionInfo=model[0].exceptionInfo;varmsg=$@"jobName:【{jobName}】,methodName:【{methodName}】,methodParams:【{methodParams}】,jobMessage:【{jobMessage}】,exceptionInfo:【{exceptionInfo}】";Log4NetHelper.Instance.Info(msg);Log4NetHelper.Instance.Error(e.Message);}}#endregion#region在线日志///<summary>/////获取列表///</summary>publicResponseLoadSysUserOnlineLog(PageReqpageReq,sys_user_onlinemodel){varresult=newResponse();stringorderBy=(pageReq==null||string.IsNullOrEmpty(pageReq.field))?" id desc ":$"{pageReq.field} {pageReq.order} ";stringsqlWhere=SqlSysUserOnlineLogWhere(model);varstringBuilder=newStringBuilder();//页码,页数//Exelture不分页if(!model.Exel&&pageReq!=null){stringBuilder.Append("declare @pageIndex int,@pageSize int,@offset int");stringBuilder.AppendLine($" select @pageIndex={pageReq.page}, @pageSize={pageReq.limit}, @offset=(@pageIndex - 1) * @pageSize");}stringBuilder.AppendLine($@"selectt1.*from[dbo].sys_user_onlinet1with(nolock)where{sqlWhere}orderby{orderBy}");//Exelture不分页if(!model.Exel){stringBuilder.AppendLine(" offset @offset row fetch next @pageSize row only ");stringBuilder.Append($" select rowTotal= count(*) from sys_user_online t1 with(nolock) where {sqlWhere}");}vards=base.Context.Ado.GetDataSetAll(stringBuilder.ToString(),newList<SugarParameter>(){newSugarParameter("@account",model.account)});result.Result=ds.Tables[0];result.Count=model.Exel?(int)result.Result.Rows.Count:(int)ds.Tables[1].Rows[0]["rowTotal"];returnresult;}privatestringSqlSysUserOnlineLogWhere(sys_user_onlinemodel){varstringBuilder=newStringBuilder();stringBuilder.Append("1=1");if(!string.IsNullOrWhiteSpace(model.account))stringBuilder.Append(" and t1.account=@account ");returnstringBuilder.ToString();}publicdynamicLogout(List<sys_user_online>model){varresponse=newResponse();returnExceptionsHelp.Instance.ExecuteT(()=>{varcli=newRedisBase().redisClient;foreach(variteminmodel){base.Context.Deleteable<sys_user_online>().Where(u=>u.id==item.id).AddQueue();cli.Del(item.token);}if(Context.SaveQueues()<=0){response.Code=500;response.Message=SystemVariable.dataActionError;returnresponse;}returnresponse;});}publicdynamicLogout(stringtoken){varresponse=newResponse();varcl=newRedisBase();if(cl.redisClient.Exists(token)){varuserAuthSession=cl.GetT<UserAuthSession>(token);if(userAuthSession!=null){if(cl.redisClient.Exists(userAuthSession.Account)){cl.redisClient.Del(userAuthSession.Account);}}cl.redisClient.Del(token);}Context.Deleteable<sys_user_online>().Where(u=>u.token==token).ExecuteCommand();returnresponse;}#endregion#region登入日志///<summary>/////获取列表///</summary>publicResponseLoadSysLoginLog(PageReqpageReq,sys_login_logmodel){varresult=newResponse();stringorderBy=(pageReq==null||string.IsNullOrEmpty(pageReq.field))?" id desc ":$"{pageReq.field} {pageReq.order} ";stringsqlWhere=SqlSysLoginLogWhere(model);varstringBuilder=newStringBuilder();//页码,页数//Exelture不分页if(!model.Exel&&pageReq!=null){stringBuilder.Append("declare @pageIndex int,@pageSize int,@offset int");stringBuilder.AppendLine($" select @pageIndex={pageReq.page}, @pageSize={pageReq.limit}, @offset=(@pageIndex - 1) * @pageSize");}stringBuilder.AppendLine($@"selectt1.*from[dbo].sys_login_logt1with(nolock)where{sqlWhere}orderby{orderBy}");//Exelture不分页if(!model.Exel){stringBuilder.AppendLine(" offset @offset row fetch next @pageSize row only ");stringBuilder.Append($" select rowTotal= count(*) from sys_login_log t1 with(nolock) where {sqlWhere}");}vards=base.Context.Ado.GetDataSetAll(stringBuilder.ToString(),newList<SugarParameter>(){newSugarParameter("@account",model.account)});result.Result=ds.Tables[0];result.Count=model.Exel?(int)result.Result.Rows.Count:(int)ds.Tables[1].Rows[0]["rowTotal"];returnresult;}privatestringSqlSysLoginLogWhere(sys_login_logmodel){varstringBuilder=newStringBuilder();stringBuilder.Append("1=1");if(!string.IsNullOrWhiteSpace(model.account))stringBuilder.Append(" and t1.account=@account ");returnstringBuilder.ToString();}#endregion#region登入页面登入成功之后///<summary>///是否存在数据在线用户///</summary>///<returns></returns>publicboolloginAfter(sys_login_logmode){varisExt=base.Context.Queryable<sys_user_online>().Where(x=>x.ipaddr==mode.ipaddr&&x.account==mode.account).Any();varsysUserOnline=newsys_user_online{token=mode.token,userId=mode.id,account=mode.account,name=mode.name,ipaddr=mode.ipaddr,browser=mode.browser,loginTime=DateTime.Now,};if(isExt){UpdataSysUserOnLine(sysUserOnline);}else{InsSysUserOnLine(sysUserOnline);}InsSysLoginLog(mode);base.Context.SaveQueues();returnisExt;}///<summary>///新增登入日志///</summary>///<returns></returns>publicvoidInsSysLoginLog(sys_login_logmodel){model.createBy=model.account;model.createTime=DateTime.Now;base.Context.Insertable(model).AddQueue();}///<summary>///新增在线用户///</summary>///<returns></returns>publicvoidInsSysUserOnLine(sys_user_onlinemodel){model.createBy=model.account;model.createTime=DateTime.Now;base.Context.Insertable(model).AddQueue();}///<summary>///更新在线用户时间、token、lastAccessTime///</summary>publicvoidUpdataSysUserOnLine(sys_user_onlinemodel){model.updateBy=model.account;model.updateTime=DateTime.Now;base.Context.Updateable(model).Where(x=>x.ipaddr==model.ipaddr&&x.account==model.account).UpdateColumns(x=>new{x.token,x.loginTime,x.lastAccessTime}).AddQueue();}#endregion}}