fixed 完善商品的添加与修改逻辑

This commit is contained in:
lwh 2023-06-26 22:29:40 +08:00
parent a82b7aadfb
commit ebb19f01b7
17 changed files with 413 additions and 129 deletions

View File

@ -39,8 +39,7 @@ namespace ARW.Model.Dto.Business.GoodsManager.GoodsServicess.GoodsServicesRels
/// </summary>
public class GoodsServicesRelQueryDto : PagerInfo
{
public string ids { get; set; }
public long GoodsGuid { get; set; }
}

View File

@ -61,7 +61,7 @@ namespace ARW.Model.Dto.Business.GoodsManager.GoodsSpecs.GoodsSkus
public class GoodsSkuQueryDto : PagerInfo
{
public string ids { get; set; }
public long GoodsGuid { get; set; }
}

View File

@ -127,7 +127,9 @@ namespace ARW.Model.Dto.Business.GoodsManager.Goodss
public class GoodsQueryDto : PagerInfo
{
public long? ShopGuid { get; set; }
public long ShopGuid { get; set; }
public string ShopName { get; set; }
public long? GoodsCategoryGuid { get; set; }

View File

@ -134,7 +134,7 @@ namespace ARW.Model.Models.Business.GoodsManager.Goodss
/// </summary>
[EpplusTableColumn(Header = "商品规格(1单规格 2多规格)")]
[SugarColumn(ColumnName = "goods_spec_type")]
public string GoodsSpecType { get; set; }
public int GoodsSpecType { get; set; }
/// <summary>

View File

@ -27,11 +27,11 @@ namespace ARW.Model.Vo.Business.GoodsManager.GoodsSpecs.GoodsSkus
[JsonConverter(typeof(ValueToStringConverter))]
public long GoodsGuid { get; set; }
public string SpecValue { get; set; }
/// <summary>
/// 描述 :规格值ID
/// </summary>
public int SpecValueId { get; set; }
public string SpecSecondValue { get; set; }
public string SpecThirdValue { get; set; }
/// <summary>
@ -69,11 +69,5 @@ namespace ARW.Model.Vo.Business.GoodsManager.GoodsSpecs.GoodsSkus
/// </summary>
public decimal GoodsSkuWeight { get; set; }
/// <summary>
/// 描述 :SKU的规格属性(json格式)
/// </summary>
public string GoodsSkuProps { get; set; }
}
}

View File

@ -0,0 +1,47 @@
using Newtonsoft.Json;
using OfficeOpenXml.Attributes;
using SqlSugar;
using System;
using System.Collections.Generic;
namespace ARW.Model.Vo.Business.GoodsManager.Goodss
{
/// <summary>
/// 商品规格列表展示对象
///
/// @author lwh
/// @date 2023-06-26
/// </summary>
public class GoodsSpecListVo
{
/// <summary>
/// 描述 :规格组Id
/// </summary>
public int SpecId { get; set; }
/// <summary>
/// 描述 :规格组名称
/// </summary>
public string SpecName { get; set; }
/// <summary>
/// 描述 :规格值列表
/// </summary>
public List<SpecValueItem> Props { get; set; }
}
public class SpecValueItem
{
public int SpecId { get; set; }
public int SpecValueId { get; set; }
public string SpecValueName { get; set; }
}
}

View File

@ -0,0 +1,34 @@
using ARW.Model.Models.Business.GoodsManager.GoodsSpecs.GoodsSkus;
using ARW.Model.Vo.Business.GoodsManager.GoodsSpecs.GoodsSkus;
using Newtonsoft.Json;
using OfficeOpenXml.Attributes;
using SqlSugar;
using System;
using System.Collections.Generic;
namespace ARW.Model.Vo.Business.GoodsManager.Goodss
{
/// <summary>
/// 商品规格列表展示对象
///
/// @author lwh
/// @date 2023-06-26
/// </summary>
public class GoodsSpecSkutVo
{
/// <summary>
/// 描述 :规格列表
/// </summary>
public List<GoodsSpecListVo> GoodsSpecList { get; set; }
/// <summary>
/// 描述 :Sku列表
/// </summary>
public List<GoodsSkuVo> SkuList { get; set; }
}
}

View File

@ -2,6 +2,7 @@ using Newtonsoft.Json;
using OfficeOpenXml.Attributes;
using SqlSugar;
using System;
using System.Collections.Generic;
namespace ARW.Model.Vo.Business.GoodsManager.Goodss
{
@ -106,7 +107,7 @@ namespace ARW.Model.Vo.Business.GoodsManager.Goodss
/// 空值 : false
/// </summary>
[EpplusTableColumn(Header = "商品规格")]
public string GoodsSpecType { get; set; }
public int GoodsSpecType { get; set; }
/// <summary>
/// 描述 :图片
@ -239,5 +240,8 @@ namespace ARW.Model.Vo.Business.GoodsManager.Goodss
[EpplusTableColumn(Header = "排序")]
public int GoodsSort { get; set; }
public List<string> GoodsServicesIds { get; set; }
}
}

View File

@ -62,7 +62,18 @@ namespace ARW.Service.Business.BusinessService.GoodsManager.GoodsServicess.Goods
return await query.ToPageAsync(parm);
}
/// <summary>
/// 获取当前商品的服务与承诺Id
/// </summary>
/// <param name="parm"></param>
/// <returns></returns>
public async Task<List<int>> GetCurrentGoodsServicesRel(GoodsServicesRelQueryDto parm)
{
var idList = new List<int>();
var goodsServiceList = await _GoodsServicesRelRepository.GetListAsync(s => s.GoodsGuid == parm.GoodsGuid);
if (goodsServiceList.Count > 0) idList = goodsServiceList.Select(s => s.ServiceId).ToList();
return idList;
}
/// <summary>
/// 新增商品服务与承诺关系

View File

@ -14,6 +14,12 @@ using ARW.Service.Business.IBusinessService.GoodsManager.GoodsSpecs.GoodsSkus;
using ARW.Model.Dto.Business.GoodsManager.GoodsSpecs.GoodsSkus;
using ARW.Model.Models.Business.GoodsManager.GoodsSpecs.GoodsSkus;
using ARW.Model.Vo.Business.GoodsManager.GoodsSpecs.GoodsSkus;
using ARW.Model.Dto.Business.GoodsManager.Goodss;
using ARW.Model.Vo.Business.GoodsManager.Goodss;
using ARW.Repository.Business.GoodsManager.GoodsSpecs.GoodsSpecRels;
using ARW.Repository.Business.GoodsManager.GoodsSpecs.Specs;
using ARW.Repository.Business.GoodsManager.GoodsSpecs.SpecValues;
using Dapper;
namespace ARW.Service.Business.BusinessService.GoodsManager.GoodsSpecs.GoodsSkus
{
@ -27,61 +33,118 @@ namespace ARW.Service.Business.BusinessService.GoodsManager.GoodsSpecs.GoodsSkus
public class GoodsSkuServiceImpl : BaseService<GoodsSku>, IGoodsSkuService
{
private readonly GoodsSkuRepository _GoodsSkuRepository;
private readonly GoodsSpecRelRepository _GoodsSpecRelRepository;
private readonly SpecRepository _SpecRepository;
private readonly SpecValueRepository _SpecValueRepository;
public GoodsSkuServiceImpl(GoodsSkuRepository GoodsSkuRepository)
public GoodsSkuServiceImpl(GoodsSkuRepository GoodsSkuRepository, GoodsSpecRelRepository goodsSpecRelRepository, SpecRepository specRepository, SpecValueRepository specValueRepository)
{
this._GoodsSkuRepository = GoodsSkuRepository;
_GoodsSpecRelRepository = goodsSpecRelRepository;
_SpecRepository = specRepository;
_SpecValueRepository = specValueRepository;
}
#region
/// <summary>
/// 获取商品Sku
/// </summary>
/// <param name="parm"></param>
/// <returns></returns>
public async Task<GoodsSpecSkutVo> GetGoodsSkuList(GoodsSkuQueryDto parm)
{
var goodsSpecSkutVo = new GoodsSpecSkutVo();
goodsSpecSkutVo.GoodsSpecList = new List<GoodsSpecListVo>();
// 获取商品的规格组列表
var specIds = (await _GoodsSpecRelRepository.GetListAsync(s => s.GoodsGuid == parm.GoodsGuid))
.Select(item => item.SpecId)
.Distinct()
.ToList();
var specs = await _SpecRepository.GetListAsync(s => specIds.Contains(s.SpecId));
var specValueIds = (await _GoodsSpecRelRepository.GetListAsync(s => s.GoodsGuid == parm.GoodsGuid))
.Where(item => item.SpecValueId != 0)
.Select(item => item.SpecValueId)
.Distinct()
.ToList();
var specValues = await GetSpecValuesAsync(specValueIds);
foreach (var spec in specs)
{
var goodsSpecListVo = new GoodsSpecListVo
{
SpecId = spec.SpecId,
SpecName = spec.SpecName,
Props = new List<SpecValueItem>()
};
goodsSpecListVo.Props.AddRange(specValues.Where(sv => sv.SpecId == spec.SpecId));
goodsSpecSkutVo.GoodsSpecList.Add(goodsSpecListVo);
}
// 获取Sku列表
var skuList = await _GoodsSkuRepository.GetListAsync(s => s.GoodsGuid == parm.GoodsGuid);
goodsSpecSkutVo.SkuList = await GetSkuListWithSpecValuesAsync(skuList);
return goodsSpecSkutVo;
}
private async Task<List<SpecValueItem>> GetSpecValuesAsync(List<int> specValueIds)
{
var specValues = await _SpecValueRepository.GetListAsync(sv => specValueIds.Contains(sv.SpecValueId));
return specValues.Select(sv => new SpecValueItem
{
SpecId = sv.SpecId,
SpecValueId = sv.SpecValueId,
SpecValueName = sv.SpecValueName
}).ToList();
}
private async Task<List<GoodsSkuVo>> GetSkuListWithSpecValuesAsync(List<GoodsSku> skuList)
{
var specValueIds = skuList.SelectMany(sku => new[] { sku.SpecValueId, sku.SpecSecondValueId, sku.SpecThirdValueId })
.Distinct()
.Where(id => id != 0)
.ToList();
var specValues = await GetSpecValuesAsync(specValueIds);
return skuList.Select(sku => new GoodsSkuVo
{
GoodsSkuId = sku.GoodsSkuId,
GoodsGuid = sku.GoodsGuid,
SpecValue = specValues.FirstOrDefault(sv => sv.SpecValueId == sku.SpecValueId)?.SpecValueName,
SpecSecondValue = specValues.FirstOrDefault(sv => sv.SpecValueId == sku.SpecSecondValueId)?.SpecValueName,
SpecThirdValue = specValues.FirstOrDefault(sv => sv.SpecValueId == sku.SpecThirdValueId)?.SpecValueName,
GoodsSkuImg = sku.GoodsSkuImg,
GoodsSkuSkuCode = sku.GoodsSkuSkuCode,
GoodsSkuPrice = sku.GoodsSkuPrice,
GoodsSkuLinePrice = sku.GoodsSkuLinePrice,
GoodsSkuStockNum = sku.GoodsSkuStockNum,
GoodsSkuWeight = sku.GoodsSkuWeight
}).ToList();
}
/// <summary>
/// 查询商品规格分页列表
/// 获取规格值名称
/// </summary>
public async Task<PagedInfo<GoodsSkuVo>> GetGoodsSkuList(GoodsSkuQueryDto parm)
/// <param name="specValueId"></param>
/// <returns></returns>
public string GetSpecValueName(int specValueId)
{
//开始拼装查询条件d
var predicate = Expressionable.Create<GoodsSku>();
var query = _GoodsSkuRepository
.Queryable()
.Where(predicate.ToExpression())
.OrderBy(s => s.Create_time,OrderByType.Asc)
.Select(s => new GoodsSkuVo
// 从数据库中查询规格值名称
var specValue = _SpecValueRepository.GetById(specValueId);
if (specValue != null)
{
GoodsSkuId = s.GoodsSkuId,
GoodsGuid = s.GoodsGuid,
SpecValueId = s.SpecValueId,
GoodsSkuImg = s.GoodsSkuImg,
GoodsSkuSkuCode = s.GoodsSkuSkuCode,
GoodsSkuPrice = s.GoodsSkuPrice,
GoodsSkuLinePrice = s.GoodsSkuLinePrice,
GoodsSkuStockNum = s.GoodsSkuStockNum,
GoodsSkuWeight = s.GoodsSkuWeight,
GoodsSkuProps = s.GoodsSkuProps,
});
return await query.ToPageAsync(parm);
return specValue.SpecValueName;
}
/// <summary>
/// 添加或修改商品规格
/// </summary>
public async Task<string> AddOrUpdateGoodsSku(GoodsSku model)
{
if (model.GoodsSkuId != 0)
{
var response = await _GoodsSkuRepository.UpdateAsync(model);
return "修改成功!";
}
else
{
var response = await _GoodsSkuRepository.InsertReturnSnowflakeIdAsync(model);
return "添加成功!";
}
return string.Empty;
}
#region Excel处理

View File

@ -69,10 +69,11 @@ namespace ARW.Service.Business.BusinessService.GoodsManager.Goodss
/// </summary>
public async Task<PagedInfo<GoodsVo>> GetGoodsList(GoodsQueryDto parm)
{
//开始拼装查询条件d
var predicate = Expressionable.Create<Goods>();
predicate = predicate.AndIF(parm.ShopGuid != null, s => s.ShopGuid == parm.ShopGuid);
predicate = predicate.AndIF(parm.ShopGuid != 0, s => s.ShopGuid == parm.ShopGuid);
predicate = predicate.AndIF(parm.GoodsCategoryGuid != null, s => s.GoodsCategoryGuid == parm.GoodsCategoryGuid);
predicate = predicate.AndIF(!string.IsNullOrEmpty(parm.GoodsName), s => s.GoodsName.Contains(parm.GoodsName));
predicate = predicate.AndIF(!string.IsNullOrEmpty(parm.GoodsCoding), s => s.GoodsCoding.Contains(parm.GoodsCoding));
@ -80,6 +81,7 @@ namespace ARW.Service.Business.BusinessService.GoodsManager.Goodss
.Queryable()
.LeftJoin<Shop>((s, c) => s.ShopGuid == c.ShopGuid)
.Where(predicate.ToExpression())
.WhereIF(!string.IsNullOrEmpty(parm.ShopName), (s, c) => c.ShopName.Contains(parm.ShopName))
.OrderBy(s => s.GoodsSort, OrderByType.Asc)
.Select((s, c) => new GoodsVo
{
@ -114,26 +116,32 @@ namespace ARW.Service.Business.BusinessService.GoodsManager.Goodss
GoodsAloneGradeEquity = s.GoodsAloneGradeEquity,
GoodsShelfStatus = s.GoodsShelfStatus,
GoodsSort = s.GoodsSort,
});
return await query.ToPageAsync(parm);
}
/// <summary>
/// 添加或修改商品
/// </summary>
public async Task<string> AddOrUpdateGoods(Goods model)
{
try
{
if (model.GoodsId != 0)
{
await UseTranAsync(async () =>
{
await HandleBeforeUpdate(model);
var response = await _GoodsRepository.UpdateAsync(model);
});
return "修改成功!";
}
else
{
try
{
await UseTranAsync(async () =>
{
@ -142,17 +150,18 @@ namespace ARW.Service.Business.BusinessService.GoodsManager.Goodss
model.GoodsGuid = response;
await HandleAfterAdd(model);
});
return "添加成功!";
}
}
catch (Exception)
{
throw;
}
}
return "添加成功!";
}
}
#region Excel处理
/// <summary>
@ -255,6 +264,8 @@ namespace ARW.Service.Business.BusinessService.GoodsManager.Goodss
{
// 单规格(最高价格 最高划线价格 = 最低价格 最低划线价格)
model = HandleSingleSpec(model);
// 计算价格和库存总量
model = HandlMultipleSpecCompute(model);
return model;
@ -271,7 +282,7 @@ namespace ARW.Service.Business.BusinessService.GoodsManager.Goodss
// 服务与承诺处理
await HandleAddGoodsService(model);
// 多规格
// 多规格处理
await HandleAddMultiSpec(model);
}
@ -315,7 +326,7 @@ namespace ARW.Service.Business.BusinessService.GoodsManager.Goodss
public async Task HandleAddMultiSpec(Goods model)
{
// 多规格
if (model.GoodsSpecType == "2")
if (model.GoodsSpecType == 2)
{
// 添加规格组和规格值
var index = 1;
@ -402,74 +413,88 @@ namespace ARW.Service.Business.BusinessService.GoodsManager.Goodss
}
#endregion
#region
/// <summary>
/// 找出改规格组的所有规格值
/// 商品修改前处理
/// </summary>
/// <param name="sku"></param>
/// <param name="spec"></param>
/// <param name="level"></param>
/// <param name="model">商品Model</param>
/// <returns></returns>
public async Task<int> GetSpecValueId(SkuDto sku, Spec spec, int level)
public async Task<Goods> HandleBeforeUpdate(Goods model)
{
if (spec == null)
if (model.GoodsSpecType == 1)
{
return 0;
// 单规格(最高价格 最高划线价格 = 最低价格 最低划线价格)
model = HandleSingleSpec(model);
}
var specValueName = level switch
if (model.GoodsSpecType == 2)
{
1 => sku.SpecValue,
2 => sku.SpecSecondValue,
3 => sku.SpecThirdValue,
_ => null
};
if (specValueName != null)
// 删除所有关于该商品的规格
var specList = await _GoodsSpecRelService.GetListAsync(s => s.GoodsGuid == model.GoodsGuid);
foreach (var item in specList)
{
var specValue = await _SpecValueIService.GetFirstAsync(s => s.SpecId == spec.SpecId && s.SpecValueName == specValueName);
if (specValue != null)
{
return specValue.SpecValueId;
}
await _SepcIService.DeleteAsync(s => s.SpecId == item.SpecId);
await _SpecValueIService.DeleteAsync(s => s.SpecId == item.SpecId);
}
return 0;
await _GoodsSpecRelService.DeleteAsync(s => s.GoodsGuid == model.GoodsGuid);
await _GoodsSkuService.DeleteAsync(s => s.GoodsGuid == model.GoodsGuid);
// 再重新添加该商品的规格
await HandleAddMultiSpec(model);
// 计算价格和库存总量
model = HandlMultipleSpecCompute(model);
}
// 删除所有关于该商品的服务与承诺
await _GoodsServicesRelIService.DeleteAsync(s => s.GoodsGuid == model.GoodsGuid);
// 再重新添加该商品的服务与承诺
await HandleAddGoodsService(model);
return model;
}
#endregion
#region
/// <summary>
/// 添加商品单规格处理
/// 商品单规格处理
/// </summary>
/// <param name="model">商品Model</param>
/// <returns></returns>
public Goods HandleSingleSpec(Goods model)
{
// 单规格
if (model.GoodsSpecType == "1")
if (model.GoodsSpecType == 1)
{
// 价格
model.GoodsPriceLowest = model.GoodsPriceHighest;
// 划线价格
if (model.GoodsDashedPriceHighest != 0)
{
model.GoodsDashedPriceLowest = model.GoodsDashedPriceHighest;
}
}
return model;
}
/// <summary>
/// 添加商品计算多规格处理
/// 商品计算多规格处理
/// </summary>
/// <param name="model">商品Model</param>
/// <returns></returns>
public Goods HandlMultipleSpecCompute(Goods model)
{
// 单规格
if (model.GoodsSpecType == "2")
if (model.GoodsSpecType == 2)
{
decimal lowestPrice = decimal.MaxValue;
decimal highestPrice = decimal.MinValue;
@ -513,8 +538,44 @@ namespace ARW.Service.Business.BusinessService.GoodsManager.Goodss
}
#endregion
/// <summary>
/// 找出改规格组的所有规格值
/// </summary>
/// <param name="sku"></param>
/// <param name="spec"></param>
/// <param name="level"></param>
/// <returns></returns>
public async Task<int> GetSpecValueId(SkuDto sku, Spec spec, int level)
{
if (spec == null)
{
return 0;
}
var specValueName = level switch
{
1 => sku.SpecValue,
2 => sku.SpecSecondValue,
3 => sku.SpecThirdValue,
_ => null
};
if (specValueName != null)
{
var specValue = await _SpecValueIService.GetFirstAsync(s => s.SpecId == spec.SpecId && s.SpecValueName == specValueName);
if (specValue != null)
{
return specValue.SpecValueId;
}
}
return 0;
}
#endregion
#endregion

View File

@ -23,6 +23,15 @@ namespace ARW.Service.Business.IBusinessService.GoodsManager.GoodsServicess.Good
Task<PagedInfo<GoodsServicesRelVo>> GetGoodsServicesRelList(GoodsServicesRelQueryDto parm);
/// <summary>
/// 获取当前商品的服务与承诺Id
/// </summary>
/// <param name="parm"></param>
/// <returns></returns>
Task<List<int>> GetCurrentGoodsServicesRel(GoodsServicesRelQueryDto parm);
/// <summary>
/// 新增商品服务与承诺关系
/// </summary>

View File

@ -4,8 +4,10 @@ using System.Linq;
using System.Text;
using System.Threading.Tasks;
using ARW.Model;
using ARW.Model.Dto.Business.GoodsManager.Goodss;
using ARW.Model.Dto.Business.GoodsManager.GoodsSpecs.GoodsSkus;
using ARW.Model.Models.Business.GoodsManager.GoodsSpecs.GoodsSkus;
using ARW.Model.Vo.Business.GoodsManager.Goodss;
using ARW.Model.Vo.Business.GoodsManager.GoodsSpecs.GoodsSkus;
namespace ARW.Service.Business.IBusinessService.GoodsManager.GoodsSpecs.GoodsSkus
@ -19,22 +21,11 @@ namespace ARW.Service.Business.IBusinessService.GoodsManager.GoodsSpecs.GoodsSku
public interface IGoodsSkuService : IBaseService<GoodsSku>
{
/// <summary>
/// 获取商品规格分页列表
/// 获取商品Sku
/// </summary>
/// <param name="parm"></param>
/// <returns></returns>
Task<PagedInfo<GoodsSkuVo>> GetGoodsSkuList(GoodsSkuQueryDto parm);
/// <summary>
/// 添加或修改商品规格
/// </summary>
/// <param name="parm"></param>
/// <returns></returns>
Task<string> AddOrUpdateGoodsSku(GoodsSku parm);
Task<GoodsSpecSkutVo> GetGoodsSkuList(GoodsSkuQueryDto parm);
}

View File

@ -15,7 +15,13 @@ using ARW.Model.Models.Business.GoodsManager.Goodss;
using ARW.Model.Vo.Business.GoodsManager.Goodss;
using Microsoft.AspNetCore.Authorization;
using ARW.Admin.WebApi.Framework;
using ARW.Service.Business.IBusinessService.GoodsManager.GoodsSpecs.GoodsSkus;
using ARW.Model.Dto.Business.GoodsManager.GoodsSpecs.GoodsSkus;
using ARW.Service.Business.IBusinessService.GoodsManager.GoodsServicess.GoodsServicesRels;
using ARW.Model.Dto.Business.GoodsManager.GoodsServicess.GoodsServicesRels;
using ARW.Service.Business.IBusinessService.GoodsManager.GoodsSpecs.GoodsSpecRels;
using ARW.Service.Business.IBusinessService.GoodsManager.GoodsSpecs.Specs;
using ARW.Service.Business.IBusinessService.GoodsManager.GoodsSpecs.SpecValues;
namespace ARW.WebApi.Controllers.Business.GoodsManager.Goodss
{
@ -30,14 +36,30 @@ namespace ARW.WebApi.Controllers.Business.GoodsManager.Goodss
public class GoodsController : BaseController
{
private readonly IGoodsService _GoodsService;
private readonly IGoodsSkuService _GoodsSkuService;
private readonly IGoodsServicesRelService _GoodsServicesRelService;
private readonly ISpecService _SepcIService;
private readonly ISpecValueService _SpecValueIService;
private readonly IGoodsSpecRelService _GoodsSpecRelService;
/// <summary>
/// 依赖注入
/// </summary>
/// <param name="GoodsService">商品服务</param>
public GoodsController(IGoodsService GoodsService)
/// <param name="goodsSkuService">商品Sku服务</param>
/// <param name="goodsServicesRelService">商品服务与承诺服务</param>
/// <param name="sepcIService">规格组服务</param>
/// <param name="specValueIService">规格值服务</param>
/// <param name="goodsSpecRelService">商品规格关系服务</param>
public GoodsController(IGoodsService GoodsService, IGoodsSkuService goodsSkuService, IGoodsServicesRelService goodsServicesRelService, ISpecService sepcIService, ISpecValueService specValueIService, IGoodsSpecRelService goodsSpecRelService)
{
_GoodsService = GoodsService;
_GoodsSkuService = goodsSkuService;
_GoodsServicesRelService = goodsServicesRelService;
_SepcIService = sepcIService;
_SpecValueIService = specValueIService;
_GoodsSpecRelService = goodsSpecRelService;
}
@ -54,6 +76,31 @@ namespace ARW.WebApi.Controllers.Business.GoodsManager.Goodss
return SUCCESS(res);
}
/// <summary>
/// 获取商品Sku
/// </summary>
/// <param name="parm">查询参数</param>
/// <returns></returns>
[HttpGet("getGoodsSkuList")]
public async Task<IActionResult> GetGoodsSkuList([FromQuery] GoodsSkuQueryDto parm)
{
var res = await _GoodsSkuService.GetGoodsSkuList(parm);
return SUCCESS(res);
}
/// <summary>
/// 获取商品服务与承诺
/// </summary>
/// <param name="parm">查询参数</param>
/// <returns></returns>
[HttpGet("getCurrentGoodsServiceList")]
public async Task<IActionResult> GetCurrentGoodsServiceList([FromQuery] GoodsServicesRelQueryDto parm)
{
var res = await _GoodsServicesRelService.GetCurrentGoodsServicesRel(parm);
return SUCCESS(res);
}
/// <summary>
/// 添加或修改商品
/// </summary>
@ -81,14 +128,30 @@ namespace ARW.WebApi.Controllers.Business.GoodsManager.Goodss
[HttpDelete("{ids}")]
[ActionPermissionFilter(Permission = "business:goods:delete")]
[Log(Title = "商品删除", BusinessType = BusinessType.DELETE)]
public IActionResult Delete(string ids)
public async Task<IActionResult> Delete(string ids)
{
long[] idsArr = Tools.SpitLongArrary(ids);
int[] idsArr = Tools.SpitIntArrary(ids);
if (idsArr.Length <= 0) { return ToResponse(ApiResult.Error($"删除失败Id 不能为空")); }
// 删除关于该商品的关联
//var goodsList = await _GoodsService.GetListAsync(s => idsArr.Contains(s.GoodsId));
//var goodsGuids = goodsList.Select(s => s.GoodsGuid).ToList();
//var specList = await _GoodsSpecRelService.GetListAsync(s => goodsGuids.Contains(s.GoodsGuid));
//var specIds = specList.Select(s => s.SpecId).ToList();
//await _SepcIService.DeleteAsync(s => specIds.Contains(s.SpecId));
//await _SpecValueIService.DeleteAsync(s => specIds.Contains(s.SpecId));
//await _GoodsSpecRelService.DeleteAsync(s => goodsGuids.Contains(s.GoodsGuid));
//await _GoodsSkuService.DeleteAsync(s => goodsGuids.Contains(s.GoodsGuid));
//await _GoodsServicesRelService.DeleteAsync(s => goodsGuids.Contains(s.GoodsGuid));
var response = _GoodsService.Delete(idsArr);
return SUCCESS("删除成功!");
}
/// <summary>
/// 导入商品
/// </summary>

View File

@ -125,7 +125,7 @@ $end
<template #footer>
<div key="dialog-footer">
<el-button type="primary" @click="handleAddClick(formRef)">添加</el-button>
<el-button type="primary" @click="handleAddClick(formRef)" :loading="loadingStatus">添加</el-button>
<el-button @click="handleResetClick(formRef)">重置</el-button>
</div>
</template>
@ -195,6 +195,7 @@ $end
// -基础参数
const loadingStatus = ref(false)
const labelWidth = 100;
const formRef = ref();
const { proxy } = getCurrentInstance()
@ -240,6 +241,7 @@ const handleAddClick = async (formEl) => {
if (!valid) {
return;
}
loadingStatus.value = true
$foreach(item in genTable.Columns)
$if(item.HtmlType == "map")
@ -259,6 +261,7 @@ $end
if (code == 200) {
modal.msgSuccess('添加成功')
closeDialog();
loadingStatus.value = false
}
});
};

View File

@ -126,7 +126,7 @@ $end
<template #footer>
<div class="dialog-footer">
<el-button type="primary" @click="handleEditClick(formRef)">编辑</el-button>
<el-button type="primary" @click="handleEditClick(formRef)" :loading="loadingStatus">编辑</el-button>
<el-button @click="handleResetClick(formRef)">重置</el-button>
</div>
</template>
@ -216,6 +216,7 @@ const props = defineProps({
done: Function,
});
const loadingStatus = ref(false)
const labelWidth = 100;
const formRef = ref();
const { proxy } = getCurrentInstance()
@ -251,6 +252,7 @@ const handleEditClick = async (formEl) => {
if (!valid) {
return;
}
loadingStatus.value = true
$foreach(item in genTable.Columns)
$if(item.HtmlType == "map")
@ -270,6 +272,7 @@ $end
if (code == 200) {
modal.msgSuccess('修改成功')
closeDialog();
loadingStatus.value = false
}
});
}