using System; using System.Linq; using System.Linq.Expressions; using System.Collections.Generic; using System.Threading.Tasks; using YiSha.Util; using YiSha.Util.Extension; using YiSha.Util.Model; using YiSha.Data.Repository; using YiSha.Entity.SystemManage; using YiSha.Model.Param.SystemManage; using System.Text; using System.Data.Common; using YiSha.Data; using YiSha.Enum; namespace YiSha.Service.SystemManage { public partial class LogApiService { private IRepositoryFactory _baseRepository; public LogApiService(IRepositoryFactory baseRepository) { _baseRepository = baseRepository; } #region 获取数据 public async Task> GetListPartial(LogApiListParam param) { var strSql = new StringBuilder(); List filter = ListFilterPartial(param, strSql); var list = await _baseRepository.BaseRepository(dbConnectType).FindList(strSql.ToString(), filter.ToArray()); return list.ToList(); } public async Task> GetPageListPartial(LogApiListParam param, Pagination pagination) { var strSql = new StringBuilder(); List filter = ListFilterPartial(param, strSql); var list = await _baseRepository.BaseRepository(dbConnectType).FindList(strSql.ToString(), filter.ToArray(), pagination); return list.ToList(); } public async Task GetEntityPartial(int id) { return await _baseRepository.BaseRepository(dbConnectType).FindEntity(id); } #endregion #region 提交数据 public async Task SaveFormPartial(LogApiEntity entity) { if (entity.Id.IsNullOrZero()) { await entity.Create(); await _baseRepository.BaseRepository(dbConnectType).Insert(entity); } else { await _baseRepository.BaseRepository(dbConnectType).Update(entity); } } public async Task RemoveAllFormPartial() { await _baseRepository.BaseRepository(dbConnectType).ExecuteBySql("truncate table SysLogApi"); } #endregion #region 私有方法 private List ListFilterPartial(LogApiListParam param, StringBuilder strSql) { strSql.Append(@"SELECT a.Id, a.BaseCreateTime, a.BaseCreatorId, a.LogStatus, a.Remark, a.ExecuteUrl, a.ExecuteParam, a.ExecuteResult, a.ExecuteTime, b.UserName, c.DepartmentName FROM SysLogApi a LEFT JOIN SysUser b ON a.BaseCreatorId = b.Id LEFT JOIN SysDepartment c ON b.DepartmentId = c.Id WHERE 1 = 1 and a.BaseIsDelete = @BaseIsDelete "); var parameter = new List(); parameter.Add(DbParameterExtension.CreateDbParameter("@BaseIsDelete", (int)IsDeleteEnum.No, dbConnectType)); if (param != null) { if (!string.IsNullOrEmpty(param.UserName)) { strSql.Append(" AND b.UserName like @UserName"); parameter.Add(DbParameterExtension.CreateDbParameter("@UserName", '%' + param.UserName + '%', dbConnectType)); } if (param.LogStatus > -1) { strSql.Append(" AND a.LogStatus = @LogStatus"); parameter.Add(DbParameterExtension.CreateDbParameter("@LogStatus", param.LogStatus, dbConnectType)); } if (!string.IsNullOrEmpty(param.ExecuteUrl)) { strSql.Append(" AND a.ExecuteUrl like @ExecuteUrl"); parameter.Add(DbParameterExtension.CreateDbParameter("@ExecuteUrl", '%' + param.ExecuteUrl + '%', dbConnectType)); } if (!string.IsNullOrEmpty(param.StartTime.ParseToString())) { strSql.Append(" AND a.BaseCreateTime >= @StartTime"); parameter.Add(DbParameterExtension.CreateDbParameter("@StartTime", param.StartTime, dbConnectType)); } if (!string.IsNullOrEmpty(param.EndTime.ParseToString())) { param.EndTime = param.EndTime.Value.Date.Add(new TimeSpan(23, 59, 59)); strSql.Append(" AND a.BaseCreateTime <= @EndTime"); parameter.Add(DbParameterExtension.CreateDbParameter("@EndTime", param.EndTime, dbConnectType)); } } return parameter; } /// /// 列表条件过滤 /// 建议该方法放在Partial部分类中,因为代码生成时当前类会被覆盖(该方法在生成时将会被注释) /// /// /// private Expression> ListFilterPartial(LogApiListParam param) { var expression = LinqExtensions.True(); expression = expression.And(t => t.BaseIsDelete == (int)IsDeleteEnum.No); if (param != null) { } return expression; } #endregion } }