using System; using System.Linq; using System.Linq.Expressions; using System.Collections.Generic; using System.Threading.Tasks; using System.Data.Common; using System.Text; using YiSha.Util; using YiSha.Util.Extension; using YiSha.Util.Model; using YiSha.Data; using YiSha.Data.Repository; using YiSha.Entity.OrganizationManage; using YiSha.Model.Param.OrganizationManage; using YiSha.Enum; namespace YiSha.Service.OrganizationManage { public partial class NewsService { private IRepositoryFactory _baseRepository; public NewsService(IRepositoryFactory baseRepository) { _baseRepository = baseRepository; } #region 获取数据 public async Task> GetListPartial(NewsListParam 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(NewsListParam 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> GetPageContentListPartial(NewsListParam param, Pagination pagination) { var strSql = new StringBuilder(); List filter = ListFilterPartial(param, strSql, true); 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); } public async Task GetMaxSortPartial() { object result = await _baseRepository.BaseRepository(dbConnectType).FindObject("SELECT MAX(NewsSort) FROM SysNews"); int sort = result.ParseToInt(); sort++; return sort; } #endregion #region 提交数据 public async Task SaveFormPartial(NewsEntity entity) { if (entity.Id.IsNullOrZero()) { await entity.Create(); await _baseRepository.BaseRepository(dbConnectType).Insert(entity); } else { await entity.Modify(); await _baseRepository.BaseRepository(dbConnectType).Update(entity); } } #endregion #region 私有方法 private List ListFilterPartial(NewsListParam param, StringBuilder strSql, bool bNewsContent = false) { strSql.Append(@"SELECT a.Id, a.BaseModifyTime, a.BaseModifierId, a.NewsTitle, a.ThumbImage, a.NewsTag, a.NewsAuthor, a.NewsSort, a.NewsDate, a.NewsType, a.ProvinceId, a.CityId, a.CountyId, a.ViewTimes"); if (bNewsContent) { strSql.Append(",a.NewsContent"); } strSql.Append(@" FROM SysNews a 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.NewsTitle)) { strSql.Append(" AND a.NewsTitle like @NewsTitle"); parameter.Add(DbParameterExtension.CreateDbParameter("@NewsTitle", '%' + param.NewsTitle + '%', dbConnectType)); } if (param.NewsType > 0) { strSql.Append(" AND a.NewsType = @NewsType"); parameter.Add(DbParameterExtension.CreateDbParameter("@NewsType", param.NewsType, dbConnectType)); } if (!string.IsNullOrEmpty(param.NewsTag)) { strSql.Append(" AND a.NewsTag like @NewsTag"); parameter.Add(DbParameterExtension.CreateDbParameter("@NewsTag", '%' + param.NewsTag + '%', dbConnectType)); } if (!param.ProvinceId.IsNullOrZero()) { strSql.Append(" AND a.ProvinceId = @ProvinceId"); parameter.Add(DbParameterExtension.CreateDbParameter("@ProvinceId", param.ProvinceId, dbConnectType)); } if (!param.CityId.IsNullOrZero()) { strSql.Append(" AND a.CityId = @CityId"); parameter.Add(DbParameterExtension.CreateDbParameter("@CityId", param.CityId, dbConnectType)); } if (!param.CountyId.IsNullOrZero()) { strSql.Append(" AND a.CountyId = @CountyId"); parameter.Add(DbParameterExtension.CreateDbParameter("@CountyId", param.CountyId, dbConnectType)); } } return parameter; } /// /// 列表条件过滤 /// 建议该方法放在Partial部分类中,因为代码生成时当前类会被覆盖(该方法在生成时将会被注释) /// /// /// private Expression> ListFilterPartial(NewsListParam param) { var expression = LinqExtensions.True(); expression = expression.And(t => t.BaseIsDelete == (int)IsDeleteEnum.No); if (param != null) { } return expression; } #endregion } }