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