Zxd.Core/code/Zxd.Core.Domain/FinishedProductDomain.cs

635 lines
30 KiB
C#

using System;
using Microsoft.Extensions.Configuration;
using Zxd.Core.Domain.Dto;
using Zxd.Core.Domain.Response;
using Zxd.Domain.Impl;
using Zxd.Entity.Crm;
namespace Zxd.Domain
{
/// <summary>
/// 成品产品
/// </summary>
public class FinishedProductDomain : IFinishedProductDomain
{
private readonly IBaseRepository<CrmDbContext> _crmRepository;
private readonly IBaseRepository<ZxdDbContext> _zxdRepository;
private readonly IRedisManager _redisManager;
private readonly IConfiguration _configuration;
private readonly IDeptmentDomain _deptmentDomain;
private readonly IHttpClient _httpClient;
private readonly IMapper _mapper;
private readonly SystemConfig _systemConfig;
public FinishedProductDomain(IBaseRepository<CrmDbContext> crmRepository,
IBaseRepository<ZxdDbContext> zxdRepository,
IRedisManager redisManager,
IConfiguration configuration,
IDeptmentDomain deptmentDomain,
IMapper mapper,
IHttpClient httpClient)
{
_crmRepository = crmRepository;
_zxdRepository = zxdRepository;
_redisManager = redisManager;
_deptmentDomain = deptmentDomain;
_mapper = mapper;
_httpClient = httpClient;
_configuration = configuration;
_systemConfig = _configuration.GetSection("SystemConfig").Get<SystemConfig>();
}
private async Task<List<WxSzzyProduct>> GetProductTypeList()
{
var key = CacheKeys.ProductTypeList;
var data = new List<WxSzzyProduct>();
if (!await _redisManager.ExistsAsync(key))
{
data = await _zxdRepository.GetRepository<WxSzzyProduct>().QueryListAsync();
await _redisManager.SetAsync(key, data, TimeSpan.FromHours(1));
}
else
{
data = await _redisManager.GetListAsync<WxSzzyProduct>(key);
}
return data;
}
public async Task<List<SelectItem>> GetProductSeriesSelect()
{
var list = await GetProductTypeList();
var data = new List<SelectItem>();
list = list.Where(x => x.Level == 1).ToList();
foreach (var item in list)
{
data.Add(new SelectItem(item.ProductId, item.ProductName ?? ""));
}
return data;
}
public async Task<List<SelectItem>> GetProductCategorySelect(int? productSeriesId)
{
var list = await GetProductTypeList();
var data = new List<SelectItem>();
list = list.Where(x => x.Level == 2).If(productSeriesId != null, x => x.Where(x => x.Parentid == productSeriesId)).ToList();
foreach (var item in list)
{
data.Add(new SelectItem(item.ProductId, item.ProductName ?? ""));
}
return data;
}
/// <summary>
/// 成品产品明细
/// </summary>
/// <param name="productid"></param>
/// <returns></returns>
/// <exception cref="ApiException"></exception>
public async Task<FinishedProductDetailDto> GetFinishedProductDetail(int productid)
{
var finishProductDetail = await _zxdRepository.GetRepository<FinishedProduct>().Query()
.Where(x => x.Id == productid)
.Select(x => new FinishedProductDetailDto
{
Id = x.Id,
StandardProductId = x.StandardProductId,
ProductSeriesId = x.ProductSeriesId,
ProductCategoryId = x.ProductCategoryId,
Day = x.Day,
Deptid = x.Deptid,
Discount = x.Discount,
AutoOpen = x.AutoOpen,
BuyOnline = x.BuyOnline,
Coefficient = x.Coefficient,
Custom = x.Custom,
Give = x.Give,
OpenCondition = x.OpenCondition,
OtherClassify = x.OtherClassify,
ProductCode = x.ProductCode,
ProductName = x.ProductName,
ProductPrice = x.ProducPrice,
ProductServerType = x.ProductServerType,
Remark = x.Remark,
Upgrade = x.Upgrade,
Status = x.Status,
DiscounSections = x.DiscounSections,
GiveProducts = x.GiveProducts,
CustomPrices = x.CustomPrices
})
.FirstOrDefaultAsync();
if (finishProductDetail == null)
{
throw new ApiException("成品产品不存在或已删除!");
}
var standardProduct = await _zxdRepository.GetRepository<StandardProduct>().Query()
.Where(x => x.Id == finishProductDetail.StandardProductId)
.FirstOrDefaultAsync();
if (standardProduct == null)
{
throw new ApiException("基准产品不存在或已删除!");
}
var productTypeList = await GetProductTypeList();
finishProductDetail.ProductSeries = productTypeList.Where(x => x.ProductId == finishProductDetail.ProductSeriesId).Select(x => x.ProductName).FirstOrDefault();
finishProductDetail.ProductCategory = productTypeList.Where(x => x.ProductId == finishProductDetail.ProductCategoryId).Select(x => x.ProductName).FirstOrDefault();
var deptments = await _deptmentDomain.GetDeptments();
finishProductDetail.Department = deptments.First(y => y.Id == finishProductDetail.Deptid).Title;
if (!string.IsNullOrEmpty(standardProduct.ProductCode))
{
var baseProduct = await _zxdRepository.GetRepository<BaseProduct>().FirstOrDefaultAsync(x => x.Code == standardProduct.ProductCode);
finishProductDetail.StandardProductDay = baseProduct.Day.ToString();
finishProductDetail.StandardProductName = baseProduct.Name;
finishProductDetail.StandardProductPrice = (decimal)baseProduct.Price;
finishProductDetail.StandardProductType = standardProduct.StandardType.GetDescription();
finishProductDetail.StandardProductModules = new List<string> { $"{baseProduct.Name}【{baseProduct.Moduleid}】【{baseProduct.Day}】" };
}
if (!string.IsNullOrEmpty(standardProduct.ProductPackageCode))
{
var baseProductPackage = await _zxdRepository.GetRepository<BaseProductPackage>().FirstOrDefaultAsync(x => x.Code == standardProduct.ProductPackageCode);
finishProductDetail.StandardProductDay = string.Join("/", baseProductPackage.BaseProductPackageRelations.Select(x => x.Day).ToList());
finishProductDetail.StandardProductName = baseProductPackage.Name;
finishProductDetail.StandardProductPrice = (decimal)baseProductPackage.Price;
finishProductDetail.StandardProductType = standardProduct.StandardType.GetDescription();
finishProductDetail.StandardProductModules = baseProductPackage.BaseProductPackageRelations.Select(x => $"{x.ProductName}【{x.Moduleid}】【{x.Day}】").ToList();
}
return finishProductDetail;
}
/// <summary>
/// 基准产品信息
/// </summary>
/// <param name="productid"></param>
/// <returns></returns>
/// <exception cref="ApiException"></exception>
public async Task<StandardProductInfoDto> GetStandardProduct(int productid)
{
var standardProduct = await _zxdRepository.GetRepository<StandardProduct>().Query()
.Where(x => x.Id == productid)
.FirstOrDefaultAsync();
if (standardProduct == null)
{
throw new ApiException("基准产品不存在或已删除!");
}
if (!string.IsNullOrEmpty(standardProduct.ProductCode))
{
var baseProduct = await _zxdRepository.GetRepository<BaseProduct>().FirstOrDefaultAsync(x => x.Code == standardProduct.ProductCode);
return new StandardProductInfoDto
{
Price = $"{baseProduct.Price:0.00}",
Day = baseProduct.Day.ToString(),
ProductName = baseProduct.Name,
ProductCode = baseProduct.Code,
ProductType = standardProduct.StandardType.GetDescription(),
Module = new List<string> { $"{baseProduct.Name}【{baseProduct.Moduleid}】【{baseProduct.Day}】" }
};
}
if (!string.IsNullOrEmpty(standardProduct.ProductPackageCode))
{
var baseProductPackage = await _zxdRepository.GetRepository<BaseProductPackage>().Query().Include(x => x.BaseProductPackageRelations)
.FirstOrDefaultAsync(x => x.Code == standardProduct.ProductPackageCode);
return new StandardProductInfoDto
{
Price = $"{baseProductPackage.Price:0.00}",
Day = string.Join("/", baseProductPackage.BaseProductPackageRelations.Select(x => x.Day).ToList()),
ProductName = baseProductPackage.Name,
ProductCode = baseProductPackage.Code,
ProductType = standardProduct.StandardType.GetDescription(),
Module = baseProductPackage.BaseProductPackageRelations.Select(x => $"{x.ProductName}【{x.Moduleid}】【{x.Day}】").ToList()
};
}
return new StandardProductInfoDto();
}
/// <summary>
/// 修改成品产品
/// </summary>
/// <param name="dto"></param>
/// <returns></returns>
/// <exception cref="ApiException"></exception>
public async Task EditFinishedProduct(EditFinishedProductDto dto)
{
var finishedProduct = await _zxdRepository.GetRepository<FinishedProduct>().Query()
.Include(x => x.StandardProduct)
.FirstOrDefaultAsync(x => x.Id == dto.Id);
if (finishedProduct == null)
{
throw new ApiException("成品产品不存在或已删除!");
}
//finishedProduct.ProductTypeId = dto.ProductTypeId;
finishedProduct.ProductCategoryId = dto.ProductCategoryId;
finishedProduct.ProductSeriesId = dto.ProductSeriesId;
finishedProduct.ProductServerType = dto.ProductServerType;
finishedProduct.AutoOpen = dto.AutoOpen;
finishedProduct.BuyOnline = dto.BuyOnline;
finishedProduct.Custom = dto.Custom;
finishedProduct.Give = dto.Give;
finishedProduct.Discount = dto.Discount;
finishedProduct.OpenCondition = dto.OpenCondition;
finishedProduct.OtherClassify = dto.OtherClassify;
finishedProduct.Remark = dto.Remark;
finishedProduct.Status = dto.Status;
finishedProduct.Upgrade = dto.Upgrade;
finishedProduct.CustomPrices = dto.CustomPrices;
finishedProduct.DiscounSections = dto.DiscounSections;
finishedProduct.GiveProducts = dto.GiveProducts;
var productCode = !string.IsNullOrEmpty(finishedProduct.StandardProduct.ProductCode) ?
finishedProduct.StandardProduct.ProductCode : finishedProduct.StandardProduct.ProductPackageCode;
var addVirtualProduct = new AddVirtualProductDto
{
OutProductCode = productCode,
Day = finishedProduct.Day,
Price = finishedProduct.ProducPrice,
Num = finishedProduct.Coefficient,
ProductName = finishedProduct.ProductName,
BasicPorductCode = productCode,
ProductCode = finishedProduct.ProductCode
};
if (!string.IsNullOrEmpty(finishedProduct.StandardProduct.ProductCode))
{
var result = await _httpClient.PostAsync<AddVirtualProductResult>(_systemConfig.GetAddVirtualProduct(), addVirtualProduct);
if (result.Result)
{
finishedProduct.ProductCode = result.ProductCode;
}
else
{
throw new ApiException($"优品接口请求错误:{result.Retmsg}");
}
}
else
{
var result = await _httpClient.PostAsync<AddVirtualProductResult>(_systemConfig.GetAddVirtualPackage(), addVirtualProduct);
if (result.Result)
{
finishedProduct.ProductCode = result.ProductCode;
}
else
{
throw new ApiException($"优品接口请求错误:{result.Retmsg}");
}
}
await _zxdRepository.GetRepository<FinishedProduct>().UpdateAsync(finishedProduct);
}
/// <summary>
/// 创建成品产品
/// </summary>
/// <param name="dto"></param>
/// <returns></returns>
/// <exception cref="ApiException"></exception>
public async Task CreateFinishedProduct(CreateFinishedProductDto dto)
{
if (!dto.FinishedProductDetails.Any())
{
throw new ApiException("请正确填写产品信息!");
}
var product = await _crmRepository.GetRepository<Product>().Query()
.Where(x => x.Id == dto.ProductCode)
.FirstOrDefaultAsync();
var productPackage = await _zxdRepository.GetRepository<BaseProductPackage>().Query()
.Where(x => x.Code == dto.ProductCode)
.Include(x => x.BaseProductPackageRelations)
.FirstOrDefaultAsync();
using var transaction = await _zxdRepository.BeginTransactionAsync();
try
{
foreach (var finishedProductDetail in dto.FinishedProductDetails)
{
var finishedProduct = new FinishedProduct
{
Deptid = finishedProductDetail.Deptid,
Day = finishedProductDetail.Day,
ProducPrice = finishedProductDetail.Price,
ProductName = finishedProductDetail.ProductName,
Coefficient = finishedProductDetail.Coefficient,
Discount = dto.Discount,
AutoOpen = dto.AutoOpen,
BuyOnline = dto.BuyOnline,
Custom = dto.Custom,
CustomPrices = dto.CustomPrices,
OtherClassify = dto.OtherClassify,
DiscounSections = dto.DiscounSections,
GiveProducts = dto.GiveProducts,
Give = dto.Give,
OpenCondition = dto.OpenCondition,
ProductServerType = (ProductServerType)dto.ProductServerType,
ProductCategoryId = dto.ProductCategoryId,
ProductSeriesId = dto.ProductSeriesId,
Remark = dto.Remark,
StandardProductId = dto.StandardProductId,
Status = (ProductStatus)dto.Status,
Upgrade = dto.Upgrade,
};
finishedProduct.Module = product != null ? product.Moduleid
: productPackage != null ? string.Join(",", productPackage.BaseProductPackageRelations.Select(x => x.Moduleid).ToList())
: null;
var addVirtualProduct = new AddVirtualProductDto
{
OutProductCode = dto.ProductCode,
Day = finishedProduct.Day,
Price = finishedProduct.ProducPrice,
Num = finishedProduct.Coefficient,
ProductName = finishedProduct.ProductName,
BasicPorductCode = dto.ProductCode
};
if (product != null)
{
var result = await _httpClient.PostAsync<AddVirtualProductResult>(_systemConfig.GetAddVirtualProduct(), addVirtualProduct);
if (result.Result)
{
finishedProduct.ProductCode = result.ProductCode;
}
else
{
throw new ApiException($"优品接口请求错误:{result.Retmsg}");
}
}
else
{
var result = await _httpClient.PostAsync<AddVirtualProductResult>(_systemConfig.GetAddVirtualPackage(), addVirtualProduct);
if (result.Result)
{
finishedProduct.ProductCode = result.ProductCode;
}
else
{
throw new ApiException($"优品接口请求错误:{result.Retmsg}");
}
}
await _zxdRepository.GetRepository<FinishedProduct>().InsertAsync(finishedProduct);
}
await transaction.CommitAsync();
}
catch (Exception ex)
{
await transaction.RollbackAsync();
await transaction.DisposeAsync();
Log.Error(ex, "批量添加成品产品错误!");
throw;
}
}
/// <summary>
/// 成品产品分页
/// </summary>
/// <param name="dto"></param>
/// <returns></returns>
public async Task<PageResult<FinishedProductDto>> FinishedProductPage(SearchFinishedProductDto dto)
{
var query = _zxdRepository.GetRepository<FinishedProduct>().Query()
.If(dto.Deptid != null, x => x.Where(x => x.Deptid == dto.Deptid))
.If(!string.IsNullOrEmpty(dto.Name), x => x.Where(x => x.ProductName.Contains(dto.Name)))
.If(dto.Price != null, x => x.Where(x => x.ProducPrice == dto.Price))
.If(!string.IsNullOrEmpty(dto.ProductCode), x => x.Where(x => x.ProductCode == dto.ProductCode))
.If(dto.Day != null, x => x.Where(x => x.Day.Contains(dto.Day.Value.ToString())))
.If(!string.IsNullOrEmpty(dto.Module), x => x.Where(x => x.Module.Contains(dto.Module)))
.If(dto.Status != null, x => x.Where(x => x.Status == dto.Status))
.Include(x => x.StandardProduct);
var total = await query.CountAsync();
var deptments = await _deptmentDomain.GetDeptments();
var data = await query
.Select(x => new FinishedProductDto
{
Id = x.Id,
Deptid = x.Deptid,
ProducDay = x.Day,
AutoOpen = x.AutoOpen ? "是" : "否",
ProducPrice = x.ProducPrice,
ProductName = x.ProductName,
ProductServerType = x.ProductServerType.GetDescription(),
StandardProductId = x.StandardProductId,
ProductCategoryId = x.ProductCategoryId,
ProductSeriesId = x.ProductSeriesId,
Status = x.Status.GetDescription()
})
.Skip((dto.PageIndex - 1) * dto.PageSize)
.Take(dto.PageSize)
.ToListAsync();
var productTypeList = await GetProductTypeList();
var standardProductList = await _zxdRepository.GetRepository<StandardProduct>().Query()
.Where(x => data.Select(x => x.StandardProductId).Contains(x.Id))
.ToListAsync();
var productCodes = standardProductList.Where(x => !string.IsNullOrEmpty(x.ProductCode)).Select(x => x.ProductCode).ToList();
var productPackageCodes = standardProductList.Where(x => !string.IsNullOrEmpty(x.ProductPackageCode)).Select(x => x.ProductPackageCode).ToList();
var baseProductList = await _zxdRepository.GetRepository<BaseProduct>().Query()
.Where(x => productCodes.Contains(x.Code)).ToListAsync();
var baseProductPackageList = await _zxdRepository.GetRepository<BaseProductPackage>().Query()
.Where(x => productPackageCodes.Contains(x.Code)).Include(x => x.BaseProductPackageRelations).ToListAsync();
data.ForEach(x =>
{
x.Department = deptments.First(y => y.Id == x.Deptid).Title;
x.ProductSeries = productTypeList.Where(y => y.ProductId == x.ProductSeriesId).Select(y => y.ProductName).FirstOrDefault();
x.ProductCategory = productTypeList.Where(y => y.ProductId == x.ProductCategoryId).Select(y => y.ProductName).FirstOrDefault();
var standardProduct = standardProductList.First(y => y.Id == x.StandardProductId);
if (!string.IsNullOrEmpty(standardProduct.ProductCode))
{
var baseProduct = baseProductList.First(y => y.Code == standardProduct.ProductCode);
x.StandardProductModules = new List<string> { $"{baseProduct.Name}【{baseProduct.Moduleid}】【{baseProduct.Day}】" };
}
if (!string.IsNullOrEmpty(standardProduct.ProductPackageCode))
{
var baseProductPackage = baseProductPackageList.First(y => y.Code == standardProduct.ProductCode);
x.StandardProductModules = baseProductPackage.BaseProductPackageRelations.Select(x => $"{x.ProductName}【{x.Moduleid}】【{x.Day}】").ToList();
}
});
return new PageResult<FinishedProductDto>(dto.PageIndex, dto.PageSize, total, data);
}
/// <summary>
/// 获取赠送产品设置
/// </summary>
/// <param name="productCode"></param>
/// <returns></returns>
public async Task<List<ProductActiveDto>> GetActives(string? productCode)
{
var finishedProduct = await _zxdRepository.GetRepository<FinishedProduct>().FirstOrDefaultAsync(x => x.ProductCode == productCode);
if (finishedProduct == null)
{
throw new ApiException("成品产品不存在或已删除!");
}
var activeList = await _zxdRepository.GetRepository<WxOrderActive>().Query()
.Where(x => x.ProductCode == finishedProduct.ProductCode)
.Where(x => x.Isdelete == 0)
.ToListAsync();
if (activeList == null || !activeList.Any()) return new List<ProductActiveDto>();
var activeids = activeList.Select(x => x.Id).ToList();
var productGiftList = await _zxdRepository.GetRepository<WxSzzySubProductGift>().Query()
.Where(x => x.SubProductId == finishedProduct.Id)
.Where(x => activeids.Contains(x.Activeid))
.OrderByDescending(x => x.Id)
.Select(x => new SubProductGiftDto
{
GiftDays = x.GiftDays,
Activeid = x.Activeid,
GiftDaysName = x.GiftDaysName,
GiftName = x.GiftName,
Id = x.Id,
IsDefault = x.IsDefault,
Sort = x.Sort,
SubProductId = x.SubProductId,
SubProductName = x.SubProductName,
Type = x.Type
}).ToListAsync();
var data = activeList.Select(x => new ProductActiveDto
{
Id = x.Id,
ActiveCode = x.ActiveCode,
Name = x.Activename,
ActiveType = x.ActiveType,
GiftType = string.IsNullOrEmpty(x.Giftype) ? "" : x.Giftype.Replace("[Order]", "【下单时赠送】").Replace("[HandGif]", "【下单后赠送】"),
Giftype = x.Giftype,
Deptid = x.Deptid,
IsFollowOrder = x.IsFollowOrder,
GiftList = productGiftList.Where(y => y.Activeid == x.Id).ToList()
}).ToList();
return data;
}
/// <summary>
/// 创建或修改成品产品的赠送产品
/// </summary>
/// <param name="dto"></param>
/// <returns></returns>
public async Task CreateOrEditActive(CreateOrEditActiveDto dto)
{
if (dto.Id != null && dto.Id > 0)
{
var active = await _zxdRepository.GetRepository<WxOrderActive>().FirstOrDefaultAsync(x => x.Id == dto.Id);
active.IsFollowOrder = dto.IsFollowOrder;
active.Giftype = dto.GifType;
await _zxdRepository.GetRepository<WxOrderActive>().UpdateAsync(active);
return;
}
var finishedProduct = await _zxdRepository.GetRepository<FinishedProduct>().FirstOrDefaultAsync(x => x.ProductCode == dto.ProductCode);
if (finishedProduct == null)
{
throw new ApiException("成品产品不存在或已删除!");
}
var giveProduct = await _zxdRepository.GetRepository<FinishedProduct>().FirstOrDefaultAsync(x => x.ProductCode == dto.ActiveCode);
if (giveProduct == null)
{
throw new ApiException("赠送的成品产品不存在或已删除!");
}
var orderActive = new WxOrderActive
{
ProductName = finishedProduct.ProductName,
Activename = giveProduct.ProductName,
IsFollowOrder = dto.IsFollowOrder,
ProductCode = dto.ProductCode,
Deptid = dto.Deptid,
ActiveCode = dto.ActiveCode,
MinCount = 1,
ProductId = finishedProduct.Id,
Isdelete = 0,
Giftype = dto.GifType,
};
await _zxdRepository.GetRepository<WxOrderActive>().InsertAsync(orderActive);
}
/// <summary>
/// 删除品产品的赠送产品
/// </summary>
/// <param name="id"></param>
/// <returns></returns>
/// <exception cref="ApiException"></exception>
public async Task DeleteActive(int? id)
{
if (id == null || id == 0)
{
throw new ApiException("id不能为空或者为0");
}
var active = await _zxdRepository.GetRepository<WxOrderActive>().FirstOrDefaultAsync(x => x.Id == id);
active.Isdelete = 1;
await _zxdRepository.GetRepository<WxOrderActive>().UpdateAsync(active);
}
/// <summary>
/// 创建或修改赠送产品
/// </summary>
/// <param name="dto"></param>
/// <returns></returns>
/// <exception cref="ApiException"></exception>
public async Task CreateOrEditProductGift(CreateOrEditProducGiftDto dto)
{
if (dto.Id != null && dto.Id > 0)
{
var productGift = await _zxdRepository.GetRepository<WxSzzySubProductGift>().FirstOrDefaultAsync(x => x.Id == dto.Id);
productGift.GiftDays = dto.GiftDays;
productGift.GiftDaysName = dto.GiftDays == 0 ? "不赠送" : $"赠送{dto.GiftDays}天";
productGift.Sort = dto.Sort;
productGift.IsDefault = dto.IsDefault;
productGift.GiftName = dto.GiftName;
await _zxdRepository.GetRepository<WxSzzySubProductGift>().UpdateAsync(productGift);
return;
}
var deptments = await _deptmentDomain.GetDeptments();
var active = await _zxdRepository.GetRepository<WxOrderActive>().FirstOrDefaultAsync(x => x.Id == dto.Activeid);
var deptment = deptments.FirstOrDefault(x => x.Id == active.Deptid);
if (deptment == null || deptment.DeptmentCampains == null || !deptment.DeptmentCampains.Any())
{
throw new ApiException($"找不到deptid:{active.Deptid} 的事业部");
}
var finishedProduct = await _zxdRepository.GetRepository<FinishedProduct>().FirstOrDefaultAsync(x => x.ProductCode == active.ProductCode);
var subProductGift = new WxSzzySubProductGift
{
Sort = dto.Sort,
Deptid = active.Deptid,
GiftDays = dto.GiftDays,
SubProductId = finishedProduct.Id,
GiftDaysName = dto.GiftDays == 0 ? "不赠送" : $"赠送{dto.GiftDays}天",
IsDefault = dto.IsDefault,
Activeid = dto.Activeid,
Channel = deptment.DeptmentCampains.First().StartCampainId,
GiftName = dto.GiftName,
SubProductName = finishedProduct.ProductName,
Type = 1
};
await _zxdRepository.GetRepository<WxSzzySubProductGift>().InsertAsync(subProductGift);
}
/// <summary>
/// 删除赠送产品
/// </summary>
/// <param name="id"></param>
/// <returns></returns>
/// <exception cref="ApiException"></exception>
public async Task DeleteProductGift(int? id)
{
if (id == null || id == 0)
{
throw new ApiException("id不能为空或者为0");
}
var productGift = await _zxdRepository.GetRepository<WxSzzySubProductGift>().FirstOrDefaultAsync(x => x.Id == id);
await _zxdRepository.GetRepository<WxSzzySubProductGift>().DeleteAsync(productGift);
}
}
}