using Infrastructure.Attribute; using Microsoft.AspNetCore.Http; using SqlSugar; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using ARW.Model; using ARW.Repository; using ARW.Repository.Business.Carts; using ARW.Service.Api.IBusinessService.Carts; using ARW.Model.Dto.Api.Carts; using ARW.Model.Models.Business.Carts; using ARW.Model.Vo.Api.Carts; using ARW.Model.Models.Business.Custom.Customers; using ARW.Model.Models.Business.GoodsManager.Goodss; using ARW.Model.Models.Business.ShopManager.Shops; namespace ARW.Service.Api.BusinessService.Carts { /// /// 购物车记录接口实现类Api /// /// @author lwh /// @date 2023-07-20 /// [AppService(ServiceType = typeof(ICartServiceApi), ServiceLifetime = LifeTime.Transient)] public class CartServiceImplApi : BaseService, ICartServiceApi { private readonly CartRepository _CartRepository; public CartServiceImplApi(CartRepository CartRepository) { this._CartRepository = CartRepository; } #region Api接口代码 /// /// 查询购物车记录列表(Api) /// /// /// public async Task> GetCartListApi(CartQueryDtoApi parm) { //开始拼装查询条件d var predicate = Expressionable.Create(); predicate = predicate.AndIF(parm.CustomerGuid != null, s => s.CustomerGuid == parm.CustomerGuid); predicate = predicate.AndIF(parm.ShopGuid != null, s => s.ShopGuid == parm.ShopGuid); var query = _CartRepository .Queryable() .LeftJoin((s, c) => s.ShopGuid == c.ShopGuid) .LeftJoin((s, c, d) => s.GoodsGuid == d.GoodsGuid) .LeftJoin((s, c, d, f) => s.CustomerGuid == f.CustomerGuid) .Where(predicate.ToExpression()) .OrderBy(s => s.Create_time, OrderByType.Desc) .Select(s => new CartVoApi { //CartId = s.CartId, //CartGuid = s.CartGuid, CustomerGuid = s.CustomerGuid, ShopGuid = s.ShopGuid, GoodsGuid = s.GoodsGuid, GoodsSkuId = s.GoodsSkuId, CartGoodsNum = s.CartGoodsNum, }); return await query.ToPageAsync(parm); } /// /// 查询购物车记录详情(Api) /// /// /// public async Task GetCartDetails(CartDtoApi parm) { var query = _CartRepository .Queryable() .Where(s => s.CartGuid == parm.CartGuid) .Select(s => new CartApiDetailsVo { CartId = s.CartId, CartGuid = s.CartGuid, CustomerGuid = s.CustomerGuid, ShopGuid = s.ShopGuid, GoodsGuid = s.GoodsGuid, GoodsSkuId = s.GoodsSkuId, CartGoodsNum = s.CartGoodsNum, }).Take(1); return await query.ToJsonAsync(); } #endregion } }