/*********************************************************************** * 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; } } }