using System; using System.Linq; using System.Text; using System.Data.Common; 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; using YiSha.Data.Repository; using YiSha.Enum; using System.ComponentModel.DataAnnotations.Schema; using YiSha.Entity.KJH; using YiSha.Model.Param.KJH; using YiSha.IService.KJH; using YiSha.Web.Code; namespace YiSha.Service.KJH { /// /// 创 建:clg /// 日 期:2021-06-29 14:40 /// 描 述:专题文章服务实现类(部分类) /// public partial class ZT_ArticleService { private IRepositoryFactory _baseRepository; public ZT_ArticleService(IRepositoryFactory baseRepository) { _baseRepository = baseRepository; } /// /// 保存数据 /// /// 实体参数 /// public async Task SaveFormPartial(TZ_ArticleParam entity) { var columnModel = await _baseRepository.BaseRepository(dbConnectType).FindEntity(d => d.CId == entity.Cid && d.Name == entity.CName); if (columnModel == null) return 0; if (entity.Id.IsNullOrZero()) { //开启事务 var db = await _baseRepository.BaseRepository(dbConnectType).BeginTrans(); try { var insertZTArticleModel = new ZT_ArticleEntity { Addtime = DateTime.Now, Cid = columnModel.CId, IsDelete = false, ShortDetail = entity.ShortDetail, TagId = columnModel.TagId, Title = entity.Title, }; var insertZTArticleId = await _baseRepository.BaseRepository(dbConnectType).Insert(insertZTArticleModel); var insertZTArticleDetailModel = new ZT_ArticledetailEntity { Id = insertZTArticleModel.Id, Addtime = DateTime.Now, IsDelete = false, Detail = entity.Detail, Title = entity.Title, EditId = entity.EditId, Editor = entity.Editor }; var insertZTArticleDetailId = await _baseRepository.BaseRepository(dbConnectType).Insert(insertZTArticleDetailModel); if (insertZTArticleId > 0 && insertZTArticleDetailId > 0) //提交事务 await db.CommitTrans(); else //事务回滚 await db.RollbackTrans(); return insertZTArticleId; } catch { //事务回滚 await db.RollbackTrans(); return 0; } } else { //开启事务 var db = await _baseRepository.BaseRepository(dbConnectType).BeginTrans(); try { var updateZTArticelModel = await _baseRepository.BaseRepository(dbConnectType).FindEntity(entity.Id); var updateZTArticelDetailModel = await _baseRepository.BaseRepository(dbConnectType).FindEntity(entity.Id); if (updateZTArticelModel == null || updateZTArticelDetailModel == null) return 0; updateZTArticelModel.Title = entity.Title; updateZTArticelModel.Cid = columnModel.CId; updateZTArticelModel.TagId = columnModel.TagId; updateZTArticelModel.ShortDetail = entity.ShortDetail; var updateZTArticleId = await _baseRepository.BaseRepository(dbConnectType).Update(updateZTArticelModel); updateZTArticelDetailModel.Title = entity.Title; updateZTArticelDetailModel.Detail = entity.Detail; updateZTArticelDetailModel.EditId = entity.EditId; updateZTArticelDetailModel.Editor = entity.Editor; var updateZTArticleDetailId = await _baseRepository.BaseRepository(dbConnectType).Update(updateZTArticelDetailModel); if (updateZTArticleId > 0 && updateZTArticleDetailId > 0) //提交事务 await db.CommitTrans(); else //事务回滚 await db.RollbackTrans(); return updateZTArticleId; } catch { //事务回滚 await db.RollbackTrans(); return 0; } } } /// /// 根据主键Id删除数据 /// /// 主键Id /// 是否真删除 true真删除 false软删除 默认false /// public async Task DeleteFormByIdPartial(string ids, bool del = false) { if (string.IsNullOrWhiteSpace(ids) || !ids.Split(", ").Any()) { return await Task.FromResult(-1); } ids = $"{ string.Join(",", ids.Split(","))}"; string ztArticleTableName = typeof(ZT_ArticleEntity).GetAttributeValue((TableAttribute ta) => ta.Name); string ztArticleDetailTableName = typeof(ZT_ArticledetailEntity).GetAttributeValue((TableAttribute ta) => ta.Name); List parameters = new List(); string deleteZTArticleSql = $"delete from {ztArticleTableName} where id in ({ids})"; string deleteZTArticleDetailSql = $"delete from {ztArticleDetailTableName} where id in ({ids})"; var deleteZTArticle = await _baseRepository.BaseRepository(dbConnectType).ExecuteBySql(deleteZTArticleSql, DbParameterExtension.ToDbParameter(parameters.ToArray())); var deleteZTArticleDetail = await _baseRepository.BaseRepository(dbConnectType).ExecuteBySql(deleteZTArticleDetailSql, DbParameterExtension.ToDbParameter(parameters.ToArray())); return deleteZTArticle > 0 && deleteZTArticleDetail > 0 ? 1 : 0; } #region 私有方法 /// /// 列表条件过滤 /// 建议该方法放在Partial部分类中,因为代码生成时当前类会被覆盖(该方法在生成时将会被注释) /// /// /// private Expression> ListFilterPartial(ZT_ArticleListParam param) { var expression = LinqExtensions.True(); if (param != null) { if (!string.IsNullOrEmpty(param.Title)) expression = expression.And(d => d.Title.Contains(param.Title)); if (param.Cid != null) expression = expression.And(d => d.Cid == param.Cid); } return expression; } #endregion } }