/*********************************************************************** * Project: CoreCms * ProjectName: 核心内容管理系统 * Web: https://www.corecms.net * Author: 大灰灰 * Email: jianweie@163.com * CreateTime: 2021/1/31 21:45:10 * 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.IServices; using CoreCms.Net.Loging; using CoreCms.Net.Model.Entities; using CoreCms.Net.Model.Entities.Expression; using CoreCms.Net.Model.ViewModels.Basics; using CoreCms.Net.Model.ViewModels.UI; using CoreCms.Net.Model.ViewModels.DTO; using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Hosting; using SqlSugar; namespace CoreCms.Net.Services { /// /// 拼团规则表 接口实现 /// public class CoreCmsPinTuanRuleServices : BaseServices, ICoreCmsPinTuanRuleServices { private readonly ICoreCmsPinTuanRuleRepository _dal; private readonly IUnitOfWork _unitOfWork; private readonly IServiceProvider _serviceProvider; public CoreCmsPinTuanRuleServices(IUnitOfWork unitOfWork, ICoreCmsPinTuanRuleRepository dal, IServiceProvider serviceProvider ) { this._dal = dal; base.BaseDal = dal; _unitOfWork = unitOfWork; _serviceProvider = serviceProvider; } /// /// 取购物车数据的时候,更新价格 /// /// /// public WebApiCallBack PinTuanInfo(List list) { return _dal.PinTuanInfo(list); } /// /// 接口上获取拼团所有商品 /// /// public async Task GetPinTuanList(int id = 0, int userId = 0) { var jm = new WebApiCallBack(); using var container = _serviceProvider.CreateScope(); var pinTuanGoodsServices = container.ServiceProvider.GetService(); var pinTuanRuleServices = container.ServiceProvider.GetService(); var dt = DateTime.Now; var where = PredicateBuilder.True(); @where = @where.And(p => p.startTime < dt); @where = @where.And(p => p.endTime > dt); if (id != 0) { @where = @where.And(p => p.id == id); } var list = await pinTuanRuleServices.QueryListByClauseAsync(@where, p => p.sort, OrderByType.Asc); var goodIds = new List(); if (list != null && list.Any()) { var ruleIds = list.Select(p => p.id).ToList(); var goods = await pinTuanGoodsServices.QueryListByClauseAsync(p => ruleIds.Contains(p.ruleId)); if (goods != null && goods.Any()) { goodIds = goods.Select(p => p.goodsId).ToList(); } } if (goodIds.Any()) { var goods = new List(); foreach (var goodId in goodIds) { var g = await pinTuanGoodsServices.GetGoodsInfo(goodId, userId); if (g != null) { goods.Add(g); } } jm.data = goods; } jm.status = true; return jm; } /// /// 根据条件查询分页数据 /// /// 判断集合 /// 排序方式 /// 当前页面索引 /// 分布大小 /// /// public async Task> QueryTagPinTuanPageAsync(Expression> predicate, Expression> orderByExpression, OrderByType orderByType, int pageIndex = 1, int pageSize = 20) { return await _dal.QueryTagPinTuanPageAsync(predicate, orderByExpression, orderByType, pageIndex, pageSize); } /// /// 根据商品id获取拼团规则信息 /// /// /// public async Task GetPinTuanInfo(int goodId) { return await _dal.GetPinTuanInfo(goodId); } } }