using Microsoft.AspNetCore.Mvc;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using CoreCms.Net.Auth.HttpContextUser;
using CoreCms.Net.Configuration;
using CoreCms.Net.IServices;
using CoreCms.Net.Model.Entities;
using CoreCms.Net.Model.Entities.Expression;
using CoreCms.Net.Model.FromBody;
using CoreCms.Net.Model.ViewModels.UI;
using SqlSugar;
namespace CoreCms.Net.Web.WebApi.Controllers
{
///
/// 接龙
///
[Route("api/[controller]/[action]")]
[ApiController]
public class SolitaireController : ControllerBase
{
private readonly ICoreCmsSolitaireServices _solitaireServices;
private readonly ICoreCmsSolitaireItemsServices _solitaireItemsServices;
private readonly ICoreCmsCartServices _cartServices;
private readonly IHttpContextUser _user;
///
/// 构造函数
///
public SolitaireController(ICoreCmsSolitaireServices solitaireServices, ICoreCmsSolitaireItemsServices solitaireItemsServices, IHttpContextUser user, ICoreCmsCartServices cartServices)
{
_solitaireServices = solitaireServices;
_solitaireItemsServices = solitaireItemsServices;
_user = user;
_cartServices = cartServices;
}
///
/// 获取接龙列表
///
///
[HttpPost]
public async Task GetList([FromBody] FMPageByIntId entity)
{
WebApiCallBack jm = new WebApiCallBack() { status = true };
var dt = DateTime.Now;
var where = PredicateBuilder.True();
where = where.And(p => p.isShow == true && p.status == (int)GlobalEnumVars.SolitaireStatus.Open && p.startTime < dt && p.endTime > dt);
var list = await _solitaireServices.QueryPageAsync(where, p => p.createTime, OrderByType.Desc, entity.page, entity.limit);
jm.data = list;
return jm;
}
///
/// 获取单个接龙详情
///
///
[HttpPost]
public async Task GetDetail([FromBody] FMIntId entity)
{
WebApiCallBack jm = new WebApiCallBack() { status = true };
//获取接龙主数据
var model = await _solitaireServices.QueryByClauseAsync(p => p.id == entity.id);
var dt = DateTime.Now;
if (model == null)
{
jm.status = false;
jm.msg = "接龙数据获取失败";
return jm;
}
if (dt < model.startTime)
{
jm.status = false;
jm.msg = "接龙活动暂未开启";
return jm;
}
if (dt > model.endTime)
{
jm.status = false;
jm.msg = "接龙活动已结束";
return jm;
}
//获取商品sku数据
var items = await _solitaireItemsServices.QueryListByClauseAsync(p => p.solitaireId == model.id && p.isDelete == false, p => p.sortId, OrderByType.Desc);
//获取购买记录
var recordResult = await _solitaireServices.GetBuyRecord(entity.id);
if (_user.ID > 0)
{
await _cartServices.DeleteAsync(p => p.type == (int)GlobalEnumVars.OrderType.Solitaire && p.userId == _user.ID);
}
//清空个人购物车
jm.data = new
{
model,
items,
record = recordResult.data
};
return jm;
}
}
}