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
}
}