/***********************************************************************
* Project: baifenBinfa
* ProjectName: 百分兵法管理系统
* Web: http://chuanyin.com
* Author:
* Email:
* CreateTime: 2022/3/3 1:03:58
* Description: 暂无
***********************************************************************/
using System;
using System.Collections.Generic;
using System.Linq;
using System.Linq.Expressions;
using System.Threading.Tasks;
using CoreCms.Net.Caching.Manual;
using CoreCms.Net.Configuration;
using CoreCms.Net.Model.Entities;
using CoreCms.Net.Model.ViewModels.Basics;
using CoreCms.Net.IRepository;
using CoreCms.Net.IRepository.UnitOfWork;
using CoreCms.Net.Model.ViewModels.UI;
using SqlSugar;
namespace CoreCms.Net.Repository
{
///
/// 连续签到规则 接口实现
///
public class CoreCmsContinuousCheckInRulesRepository : BaseRepository, ICoreCmsContinuousCheckInRulesRepository
{
private readonly IUnitOfWork _unitOfWork;
public CoreCmsContinuousCheckInRulesRepository(IUnitOfWork unitOfWork) : base(unitOfWork)
{
_unitOfWork = unitOfWork;
}
///
/// 重写异步插入方法
///
/// 实体数据
///
public async Task InsertAsync(List entity)
{
var jm = new AdminUiCallBack();
//判断是否存在0天数或者0赠送
var isHaveEnptyDaysOrNum = entity.Count(p => p.days <= 0);
if (isHaveEnptyDaysOrNum > 0)
{
jm.msg = "【连续签到天数】不能为零";
return jm;
}
//判断是否存在相同的天数设置。
var isHave = entity.GroupBy(i => i.days).Any(g => g.Count() > 1);
if (isHave)
{
jm.msg = "存在相同的【连续签到天数】。请排查";
return jm;
}
try
{
_unitOfWork.BeginTran();
//先清理掉数据,因为是配置数据,可直接删除添加新的
await DbClient.Deleteable().Where(p => p.id > 0).ExecuteCommandAsync();
await DbClient.Deleteable().Where(p => p.id > 0).ExecuteCommandAsync();
//遍历数据存值
foreach (var item in entity)
{
var continuous = new CoreCmsContinuousCheckInRules
{
days = item.days
};
var id = await DbClient.Insertable(continuous).ExecuteReturnIdentityAsync();
if (id <= 0) continue;
foreach (var detail in item.details)
{
detail.ruleId = id;
}
await DbClient.Insertable(item.details).ExecuteReturnIdentityAsync();
}
_unitOfWork.CommitTran();
jm.code = 0;
jm.msg = "更新成功";
}
catch (Exception e)
{
_unitOfWork.RollbackTran();
jm.code = 1;
jm.msg = "更新失败";
jm.data = e;
}
return jm;
}
///
/// 获取的所有数据及子集
///
///
public async Task> GetDataWidthChild()
{
var list = await DbClient.Queryable()
.Select(p => new CoreCmsContinuousCheckInRules
{
id = p.id,
days = p.days,
})
.Mapper(p => p.details, p => p.details.First().ruleId)
.With(SqlWith.NoLock).WithCache().ToListAsync();
return list;
}
}
}