/*********************************************************************** * Project: baifenBinfa * ProjectName: 百分兵法管理系统 * Web: http://chuanyin.com * Author: * Email: * CreateTime: 202403/02 * Description: 暂无 ***********************************************************************/ using System; using System.Collections.Generic; using System.Linq; using System.Linq.Expressions; using System.Threading.Tasks; using CoreCms.Net.Configuration; using CoreCms.Net.IRepository; using CoreCms.Net.IRepository.UnitOfWork; using CoreCms.Net.Model.Entities; using CoreCms.Net.Model.ViewModels.Basics; using CoreCms.Net.Utility.Extensions; using SqlSugar; namespace CoreCms.Net.Repository { /// /// 促销表 接口实现 /// public class CoreCmsPromotionRepository : BaseRepository, ICoreCmsPromotionRepository { public CoreCmsPromotionRepository(IUnitOfWork unitOfWork) : base(unitOfWork) { } //判断商品是否参加团购 /// /// 判断商品是否参加团购/秒杀 /// /// 商品序列 /// 关联促销信息 /// 类型 /// public bool IsInGroup(int goodId, out int promotionId,int type) { promotionId = 0; if (goodId == 0) { return false; } var dt = DateTime.Now; var goodIds = "\"" + goodId + "\""; var model = DbClient.Queryable( (pro, ccpc) => new object[] { JoinType.Inner, pro.id == ccpc.promotionId } ) .Where((pro, ccpc) => pro.isEnable == true && pro.isDel == false) .Where((pro, ccpc) => ccpc.parameters.Contains(goodIds)) .Where((pro, ccpc) => pro.type == type) .Select((pro, ccpc) => ccpc) .First(); if (model != null) { promotionId = model.promotionId.ObjectToInt(); } return model != null; } #region 查询查了并获取导航下级数据 /// /// 查询查了并获取导航下级数据 /// /// 判断集合 /// 排序方式 /// 是否分页 /// 当前页面索引 /// 分布大小 /// /// public async Task> QueryPageAndChildsAsync(Expression> predicate, Expression> orderByExpression, OrderByType orderByType, bool isToPage = false, int pageIndex = 1, int pageSize = 20) { RefAsync totalCount = 0; List page; if (isToPage) { page = await DbClient.Queryable() .OrderByIF(orderByExpression != null, orderByExpression, orderByType) .WhereIF(predicate != null, predicate).Select(p => new CoreCmsPromotion { id = p.id, name = p.name, type = p.type, sort = p.sort, parameters = p.parameters, maxNums = p.maxNums, maxGoodsNums = p.maxGoodsNums, maxRecevieNums = p.maxRecevieNums, startTime = p.startTime, endTime = p.endTime, isExclusive = p.isExclusive, isAutoReceive = p.isAutoReceive, isEnable = p.isEnable, isDel = p.isDel, getNumber = SqlFunc.Subqueryable().Where(o => o.promotionId == p.id).Count() }) .Mapper(p => p.promotionCondition, p => p.promotionCondition.First().promotionId) .Mapper(p => p.promotionResult, p => p.promotionResult.First().promotionId) .ToPageListAsync(pageIndex, pageSize, totalCount); } else { page = await DbClient.Queryable() .OrderByIF(orderByExpression != null, orderByExpression, orderByType) .WhereIF(predicate != null, predicate) .Take(pageSize) .Select(p => new CoreCmsPromotion { id = p.id, name = p.name, type = p.type, sort = p.sort, parameters = p.parameters, maxNums = p.maxNums, maxGoodsNums = p.maxGoodsNums, maxRecevieNums = p.maxRecevieNums, startTime = p.startTime, endTime = p.endTime, isExclusive = p.isExclusive, isAutoReceive = p.isAutoReceive, isEnable = p.isEnable, isDel = p.isDel, getNumber = SqlFunc.Subqueryable().Where(o => o.promotionId == p.id).Count() }) .Mapper(p => p.promotionCondition, p => p.promotionCondition.First().promotionId) .Mapper(p => p.promotionResult, p => p.promotionResult.First().promotionId) .ToListAsync(); } var list = new PageList(page, pageIndex, pageSize, totalCount); return list; } #endregion } }