/// <summary>
        /// 清空购物车
        /// </summary>
        /// <param name="dto"></param>
        /// <param name="token"></param>
        /// <returns></returns>
        public async Task DeleteAsync(ShoppingTrolleyDto dto, CancellationToken token = default)
        {
            using (var db = new GuoGuoCommunityContext())
            {
                if (!Guid.TryParse(dto.ShopId, out var ShopId))
                {
                    throw new NotImplementedException("店铺ID无效!");
                }
                //if (!Guid.TryParse(dto.OwnerCertificationRecordId, out var ocrId))
                //{
                //    throw new NotImplementedException("业主ID无效!");
                //}
                var user = await db.Users.Where(x => x.Id.ToString() == dto.OperationUserId && x.IsDeleted == false).FirstOrDefaultAsync(token);

                if (user == null)
                {
                    throw new NotImplementedException("创建人信息不存在!");
                }

                var list = await db.ShoppingTrolleys.Where(item => item.ShopCommodity.GoodsType.ShopId == ShopId && item.CreateOperationUserId == user.Id).ToListAsync(token);

                db.ShoppingTrolleys.RemoveRange(list);

                if (await db.SaveChangesAsync(token) <= 0)
                {
                    throw new NotImplementedException("数据操作失败。");
                }
            }
        }
        public async Task <ShoppingTrolley> GetForShopCommodityIdAsync(ShoppingTrolleyDto dto, CancellationToken token = default)
        {
            using (var db = new GuoGuoCommunityContext())
            {
                var user = await db.Users.Where(x => x.Id.ToString() == dto.OperationUserId && x.IsDeleted == false).FirstOrDefaultAsync(token);

                if (user == null)
                {
                    throw new NotImplementedException("创建人信息不存在!");
                }
                return(await db.ShoppingTrolleys.Where(item => item.ShopCommodityId.ToString() == dto.ShopCommodityId && item.CreateOperationUserId == user.Id).FirstOrDefaultAsync(token));
            }
        }
        public async Task <ShoppingTrolley> AddAsync(ShoppingTrolleyDto dto, CancellationToken token = default)
        {
            using (var db = new GuoGuoCommunityContext())
            {
                //if (!Guid.TryParse(dto.OwnerCertificationRecordId, out var ocrId))
                //{
                //    throw new NotImplementedException("业主ID无效!");
                //}
                if (!Guid.TryParse(dto.ShopCommodityId, out var scId))
                {
                    throw new NotImplementedException("店铺商品ID无效!");
                }
                var user = await db.Users.Where(x => x.Id.ToString() == dto.OperationUserId && x.IsDeleted == false).FirstOrDefaultAsync(token);

                if (user == null)
                {
                    throw new NotImplementedException("创建人信息不存在!");
                }

                //ShoppingTrolley model = new ShoppingTrolley();
                ShoppingTrolley model = await db.ShoppingTrolleys.Where(item => item.ShopCommodityId == scId && item.CreateOperationUserId == user.Id).FirstOrDefaultAsync(token);

                if (model != null)
                {
                    model.CommodityCount += dto.CommodityCount;
                }
                else
                {
                    model = db.ShoppingTrolleys.Add(new ShoppingTrolley
                    {
                        //OwnerCertificationRecordId = ocrId,
                        ShopCommodityId       = scId,
                        CommodityCount        = dto.CommodityCount,
                        CreateOperationTime   = dto.OperationTime,
                        CreateOperationUserId = user.Id,
                        LastOperationTime     = dto.OperationTime,
                        LastOperationUserId   = dto.OperationUserId
                    });
                }
                await db.SaveChangesAsync(token);

                return(model);
            }
            throw new NotImplementedException();
        }
        /// <summary>
        /// 更新购物车
        /// </summary>
        /// <param name="dto"></param>
        /// <param name="token"></param>
        /// <returns></returns>
        public async Task UpdateAsync(ShoppingTrolleyDto dto, CancellationToken token = default)
        {
            using (var db = new GuoGuoCommunityContext())
            {
                //if (!Guid.TryParse(dto.OwnerCertificationRecordId, out var ocrId))
                //{
                //    throw new NotImplementedException("业主ID无效!");
                //}
                if (!Guid.TryParse(dto.ShopCommodityId, out var scId))
                {
                    throw new NotImplementedException("店铺商品ID无效!");
                }
                var user = await db.Users.Where(x => x.Id.ToString() == dto.OperationUserId && x.IsDeleted == false).FirstOrDefaultAsync(token);

                if (user == null)
                {
                    throw new NotImplementedException("创建人信息不存在!");
                }

                var model = await db.ShoppingTrolleys.Where(item => item.CreateOperationUserId == user.Id && item.ShopCommodityId == scId).FirstOrDefaultAsync(token);

                if (model == null)
                {
                    throw new NotImplementedException("购物车商品不存在!");
                }

                if (model.CommodityCount > dto.CommodityCount)
                {
                    model.CommodityCount -= dto.CommodityCount;
                }
                else
                {
                    db.ShoppingTrolleys.Remove(model);
                }

                if (await db.SaveChangesAsync(token) <= 0)
                {
                    throw new NotImplementedException("数据操作失败!");
                }
            }
        }
        public async Task <List <ShoppingTrolley> > GetAllIncludeAsync(ShoppingTrolleyDto dto, CancellationToken token = default)
        {
            using (var db = new GuoGuoCommunityContext())
            {
                if (!Guid.TryParse(dto.ShopId, out var ShopId))
                {
                    throw new NotImplementedException("店铺ID无效!");
                }
                //if (!Guid.TryParse(dto.OwnerCertificationRecordId, out var ocrId))
                //{
                //    throw new NotImplementedException("业主ID无效!");
                //}
                var user = await db.Users.Where(x => x.Id.ToString() == dto.OperationUserId && x.IsDeleted == false).FirstOrDefaultAsync(token);

                if (user == null)
                {
                    throw new NotImplementedException("创建人信息不存在!");
                }
                return(await db.ShoppingTrolleys.Include(x => x.ShopCommodity.GoodsType.Shop).Where(item => item.ShopCommodity.GoodsType.ShopId == ShopId && item.CreateOperationUserId == user.Id && item.ShopCommodity.IsDeleted == false && item.ShopCommodity.SalesTypeValue == SalesType.Shelf.Value).ToListAsync(token));
            }
        }
 public Task <List <ShoppingTrolley> > GetListIncludeAsync(ShoppingTrolleyDto dto, CancellationToken token = default)
 {
     throw new NotImplementedException();
 }