/***********************************************************************
* Project: baifenBinfa
* ProjectName: 百分兵法管理系统
* Web: http://chuanyin.com
* Author:
* Email:
* CreateTime: 202403/02
* Description: 暂无
***********************************************************************/
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using CoreCms.Net.Configuration;
using CoreCms.Net.IRepository;
using CoreCms.Net.IRepository.UnitOfWork;
using CoreCms.Net.Loging;
using CoreCms.Net.Model.Entities;
using CoreCms.Net.Model.FromBody;
using CoreCms.Net.Model.ViewModels.UI;
using CoreCms.Net.Utility.Extensions;
using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
using SqlSugar;
namespace CoreCms.Net.Repository
{
///
/// 单页 接口实现
///
public class CoreCmsPagesRepository : BaseRepository, ICoreCmsPagesRepository
{
public CoreCmsPagesRepository(IUnitOfWork unitOfWork) : base(unitOfWork)
{
}
///
/// 重写异步插入方法
///
/// 实体数据
///
public async Task InsertAsync(CoreCmsPages entity)
{
var jm = new AdminUiCallBack();
var have = await DbClient.Queryable().Where(p => p.code == entity.code).With(SqlWith.NoLock).AnyAsync();
if (have)
{
jm.msg = "存在相同【区域编码】请更正";
return jm;
}
entity.code = entity.code.Trim();
var id = await DbClient.Insertable(entity).ExecuteReturnIdentityAsync();
var bl = id > 0;
if (bl && entity.type == 1)
{
//如果设为新默认,则修改其他为非默认。
await DbClient.Updateable().Where(p => p.type == 1 && p.id != id).SetColumns(p => new CoreCmsPages() { type = 2 }).ExecuteCommandAsync();
}
jm.code = bl ? 0 : 1;
jm.msg = bl ? GlobalConstVars.CreateSuccess : GlobalConstVars.CreateFailure;
return jm;
}
///
/// 重写异步更新方法
///
///
///
public async Task UpdateAsync(CoreCmsPages entity)
{
var jm = new AdminUiCallBack();
var have = await DbClient.Queryable().Where(p => p.code == entity.code && p.id != entity.id).With(SqlWith.NoLock).AnyAsync();
if (have)
{
jm.msg = "存在相同【区域编码】请更正";
return jm;
}
var oldModel = await DbClient.Queryable().In(entity.id).SingleAsync();
if (oldModel == null)
{
jm.msg = "不存在此信息";
return jm;
}
//事物处理过程开始
var oldType = oldModel.type;
var newType = entity.type;
oldModel.code = entity.code;
oldModel.name = entity.name;
oldModel.description = entity.description;
oldModel.layout = entity.layout;
oldModel.type = entity.type;
//事物处理过程结束
var bl = await DbClient.Updateable(oldModel).ExecuteCommandHasChangeAsync();
if (bl)
{
//如果不是默认的情况下
if (oldType == 1 && newType != 1)
{
//判断修改当前,而是否其他有默认
var haveDefault = await DbClient.Queryable().Where(p => p.type == 1 && p.id != oldModel.id).With(SqlWith.NoLock).AnyAsync();
//如果不存在,则当前不能调整为非默认。
if (!haveDefault)
{
await DbClient.Updateable().Where(p => p.id == oldModel.id).SetColumns(p => new CoreCmsPages() { type = 1 }).ExecuteCommandAsync();
}
}
//如果设为新默认,则修改其他为非默认。
if (newType == 1)
{
await DbClient.Updateable().Where(p => p.id != oldModel.id).SetColumns(p => new CoreCmsPages() { type = 2 }).ExecuteCommandAsync();
}
}
jm.code = bl ? 0 : 1;
jm.msg = bl ? GlobalConstVars.EditSuccess : GlobalConstVars.EditFailure;
return jm;
}
///
/// 重写删除指定ID的数据
///
///
///
public async Task DeleteByIdAsync(int id)
{
var jm = new AdminUiCallBack();
var model = await DbClient.Queryable().Where(p => p.id == id).FirstAsync();
if (model == null)
{
jm.msg = GlobalConstVars.DataisNo;
return jm;
}
if (model.type == 1)
{
jm.msg = "默认页面禁止删除";
return jm;
}
var count = await DbClient.Queryable().CountAsync();
if (count == 1)
{
jm.msg = "只有一个页面了,别删了。";
return jm;
}
var bl = await DbClient.Deleteable(id).ExecuteCommandHasChangeAsync();
if (bl)
{
await DbClient.Deleteable().Where(p => p.pageCode == model.code).ExecuteCommandAsync();
}
jm.code = bl ? 0 : 1;
jm.msg = bl ? GlobalConstVars.DeleteSuccess : GlobalConstVars.DeleteFailure;
return jm;
}
///
/// 复制一个同样的数据
///
///
///
public async Task CopyByIdAsync(int id)
{
var jm = new AdminUiCallBack();
var model = await DbClient.Queryable().Where(p => p.id == id).FirstAsync();
if (model == null)
{
jm.msg = GlobalConstVars.DataisNo;
return jm;
}
var oldCode = model.code;
model.type = 2;
model.code = model.code + DateTime.Now.ToString("yyyyMMddHHmmssfffff");
model.name = model.name + "(复制)";
var items = await DbClient.Queryable().Where(p => p.pageCode == oldCode).ToListAsync();
foreach (var item in items)
{
item.pageCode = model.code;
}
var bl = await DbClient.Insertable(model).ExecuteReturnIdentityAsync() > 0;
if (bl)
{
await DbClient.Insertable(items).ExecuteCommandAsync();
}
jm.code = bl ? 0 : 1;
jm.msg = bl ? GlobalConstVars.DeleteSuccess : GlobalConstVars.DeleteFailure;
return jm;
}
#region 更新设计==========================================================
///
/// 更新设计
///
///
///
public async Task UpdateDesignAsync(FmPagesUpdate entity)
{
var jm = new AdminUiCallBack();
var bl = false;
var oldModel = await DbClient.Queryable().Where(p => p.code == entity.pageCode).SingleAsync();
if (oldModel == null)
{
jm.msg = "不存在此信息";
return jm;
}
//事物处理过程开始
bl = await DbClient.Deleteable().Where(p => p.pageCode == entity.pageCode).ExecuteCommandHasChangeAsync();
var list = new List();
var count = 0;
entity.datalist.ForEach(p =>
{
var model = new CoreCmsPagesItems
{
widgetCode = p.sType,
pageCode = entity.pageCode,
positionId = count,
sort = count + 1,
parameters = p.sValue
};
list.Add(model);
count++;
});
if (list.Any())
{
bl = await DbClient.Insertable(list).ExecuteCommandAsync() > 0;
}
//事物处理过程结束
jm.code = bl ? 0 : 1;
jm.msg = bl ? GlobalConstVars.EditSuccess : GlobalConstVars.EditFailure;
return jm;
}
#endregion
}
}