fixed 完善商品的添加与修改逻辑
This commit is contained in:
parent
a82b7aadfb
commit
ebb19f01b7
@ -39,8 +39,7 @@ namespace ARW.Model.Dto.Business.GoodsManager.GoodsServicess.GoodsServicesRels
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
public class GoodsServicesRelQueryDto : PagerInfo
|
public class GoodsServicesRelQueryDto : PagerInfo
|
||||||
{
|
{
|
||||||
|
public long GoodsGuid { get; set; }
|
||||||
public string ids { get; set; }
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -61,7 +61,7 @@ namespace ARW.Model.Dto.Business.GoodsManager.GoodsSpecs.GoodsSkus
|
|||||||
public class GoodsSkuQueryDto : PagerInfo
|
public class GoodsSkuQueryDto : PagerInfo
|
||||||
{
|
{
|
||||||
|
|
||||||
public string ids { get; set; }
|
public long GoodsGuid { get; set; }
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -127,7 +127,9 @@ namespace ARW.Model.Dto.Business.GoodsManager.Goodss
|
|||||||
public class GoodsQueryDto : PagerInfo
|
public class GoodsQueryDto : PagerInfo
|
||||||
{
|
{
|
||||||
|
|
||||||
public long? ShopGuid { get; set; }
|
public long ShopGuid { get; set; }
|
||||||
|
|
||||||
|
public string ShopName { get; set; }
|
||||||
|
|
||||||
public long? GoodsCategoryGuid { get; set; }
|
public long? GoodsCategoryGuid { get; set; }
|
||||||
|
|
||||||
|
@ -134,7 +134,7 @@ namespace ARW.Model.Models.Business.GoodsManager.Goodss
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
[EpplusTableColumn(Header = "商品规格(1单规格 2多规格)")]
|
[EpplusTableColumn(Header = "商品规格(1单规格 2多规格)")]
|
||||||
[SugarColumn(ColumnName = "goods_spec_type")]
|
[SugarColumn(ColumnName = "goods_spec_type")]
|
||||||
public string GoodsSpecType { get; set; }
|
public int GoodsSpecType { get; set; }
|
||||||
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
|
@ -27,11 +27,11 @@ namespace ARW.Model.Vo.Business.GoodsManager.GoodsSpecs.GoodsSkus
|
|||||||
[JsonConverter(typeof(ValueToStringConverter))]
|
[JsonConverter(typeof(ValueToStringConverter))]
|
||||||
public long GoodsGuid { get; set; }
|
public long GoodsGuid { get; set; }
|
||||||
|
|
||||||
|
public string SpecValue { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
public string SpecSecondValue { get; set; }
|
||||||
/// 描述 :规格值ID
|
|
||||||
/// </summary>
|
public string SpecThirdValue { get; set; }
|
||||||
public int SpecValueId { get; set; }
|
|
||||||
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
@ -69,11 +69,5 @@ namespace ARW.Model.Vo.Business.GoodsManager.GoodsSpecs.GoodsSkus
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
public decimal GoodsSkuWeight { get; set; }
|
public decimal GoodsSkuWeight { get; set; }
|
||||||
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// 描述 :SKU的规格属性(json格式)
|
|
||||||
/// </summary>
|
|
||||||
public string GoodsSkuProps { get; set; }
|
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
47
ARW.Model/Vo/Business/GoodsManager/Goodss/GoodsSpecListVo.cs
Normal file
47
ARW.Model/Vo/Business/GoodsManager/Goodss/GoodsSpecListVo.cs
Normal 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; }
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
34
ARW.Model/Vo/Business/GoodsManager/Goodss/GoodsSpecSkutVo.cs
Normal file
34
ARW.Model/Vo/Business/GoodsManager/Goodss/GoodsSpecSkutVo.cs
Normal 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; }
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
@ -2,6 +2,7 @@ using Newtonsoft.Json;
|
|||||||
using OfficeOpenXml.Attributes;
|
using OfficeOpenXml.Attributes;
|
||||||
using SqlSugar;
|
using SqlSugar;
|
||||||
using System;
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
|
||||||
namespace ARW.Model.Vo.Business.GoodsManager.Goodss
|
namespace ARW.Model.Vo.Business.GoodsManager.Goodss
|
||||||
{
|
{
|
||||||
@ -106,7 +107,7 @@ namespace ARW.Model.Vo.Business.GoodsManager.Goodss
|
|||||||
/// 空值 : false
|
/// 空值 : false
|
||||||
/// </summary>
|
/// </summary>
|
||||||
[EpplusTableColumn(Header = "商品规格")]
|
[EpplusTableColumn(Header = "商品规格")]
|
||||||
public string GoodsSpecType { get; set; }
|
public int GoodsSpecType { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 描述 :图片
|
/// 描述 :图片
|
||||||
@ -239,5 +240,8 @@ namespace ARW.Model.Vo.Business.GoodsManager.Goodss
|
|||||||
[EpplusTableColumn(Header = "排序")]
|
[EpplusTableColumn(Header = "排序")]
|
||||||
public int GoodsSort { get; set; }
|
public int GoodsSort { get; set; }
|
||||||
|
|
||||||
|
|
||||||
|
public List<string> GoodsServicesIds { get; set; }
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -62,7 +62,18 @@ namespace ARW.Service.Business.BusinessService.GoodsManager.GoodsServicess.Goods
|
|||||||
return await query.ToPageAsync(parm);
|
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>
|
/// <summary>
|
||||||
/// 新增商品服务与承诺关系
|
/// 新增商品服务与承诺关系
|
||||||
|
@ -14,6 +14,12 @@ using ARW.Service.Business.IBusinessService.GoodsManager.GoodsSpecs.GoodsSkus;
|
|||||||
using ARW.Model.Dto.Business.GoodsManager.GoodsSpecs.GoodsSkus;
|
using ARW.Model.Dto.Business.GoodsManager.GoodsSpecs.GoodsSkus;
|
||||||
using ARW.Model.Models.Business.GoodsManager.GoodsSpecs.GoodsSkus;
|
using ARW.Model.Models.Business.GoodsManager.GoodsSpecs.GoodsSkus;
|
||||||
using ARW.Model.Vo.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
|
namespace ARW.Service.Business.BusinessService.GoodsManager.GoodsSpecs.GoodsSkus
|
||||||
{
|
{
|
||||||
@ -27,71 +33,128 @@ namespace ARW.Service.Business.BusinessService.GoodsManager.GoodsSpecs.GoodsSkus
|
|||||||
public class GoodsSkuServiceImpl : BaseService<GoodsSku>, IGoodsSkuService
|
public class GoodsSkuServiceImpl : BaseService<GoodsSku>, IGoodsSkuService
|
||||||
{
|
{
|
||||||
private readonly GoodsSkuRepository _GoodsSkuRepository;
|
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;
|
this._GoodsSkuRepository = GoodsSkuRepository;
|
||||||
|
_GoodsSpecRelRepository = goodsSpecRelRepository;
|
||||||
|
_SpecRepository = specRepository;
|
||||||
|
_SpecValueRepository = specValueRepository;
|
||||||
}
|
}
|
||||||
|
|
||||||
#region 业务逻辑代码
|
#region 业务逻辑代码
|
||||||
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// 查询商品规格分页列表
|
|
||||||
/// </summary>
|
|
||||||
public async Task<PagedInfo<GoodsSkuVo>> GetGoodsSkuList(GoodsSkuQueryDto parm)
|
|
||||||
{
|
|
||||||
//开始拼装查询条件d
|
|
||||||
var predicate = Expressionable.Create<GoodsSku>();
|
|
||||||
|
|
||||||
var query = _GoodsSkuRepository
|
/// <summary>
|
||||||
.Queryable()
|
/// 获取商品Sku
|
||||||
.Where(predicate.ToExpression())
|
/// </summary>
|
||||||
.OrderBy(s => s.Create_time,OrderByType.Asc)
|
/// <param name="parm"></param>
|
||||||
.Select(s => new GoodsSkuVo
|
/// <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
|
||||||
{
|
{
|
||||||
GoodsSkuId = s.GoodsSkuId,
|
SpecId = spec.SpecId,
|
||||||
GoodsGuid = s.GoodsGuid,
|
SpecName = spec.SpecName,
|
||||||
SpecValueId = s.SpecValueId,
|
Props = new List<SpecValueItem>()
|
||||||
GoodsSkuImg = s.GoodsSkuImg,
|
};
|
||||||
GoodsSkuSkuCode = s.GoodsSkuSkuCode,
|
goodsSpecListVo.Props.AddRange(specValues.Where(sv => sv.SpecId == spec.SpecId));
|
||||||
GoodsSkuPrice = s.GoodsSkuPrice,
|
|
||||||
GoodsSkuLinePrice = s.GoodsSkuLinePrice,
|
|
||||||
GoodsSkuStockNum = s.GoodsSkuStockNum,
|
|
||||||
GoodsSkuWeight = s.GoodsSkuWeight,
|
|
||||||
GoodsSkuProps = s.GoodsSkuProps,
|
|
||||||
});
|
|
||||||
|
|
||||||
|
|
||||||
return await query.ToPageAsync(parm);
|
goodsSpecSkutVo.GoodsSpecList.Add(goodsSpecListVo);
|
||||||
|
}
|
||||||
|
|
||||||
|
// 获取Sku列表
|
||||||
|
var skuList = await _GoodsSkuRepository.GetListAsync(s => s.GoodsGuid == parm.GoodsGuid);
|
||||||
|
goodsSpecSkutVo.SkuList = await GetSkuListWithSpecValuesAsync(skuList);
|
||||||
|
|
||||||
|
return goodsSpecSkutVo;
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
private async Task<List<SpecValueItem>> GetSpecValuesAsync(List<int> specValueIds)
|
||||||
/// 添加或修改商品规格
|
|
||||||
/// </summary>
|
|
||||||
public async Task<string> AddOrUpdateGoodsSku(GoodsSku model)
|
|
||||||
{
|
{
|
||||||
if (model.GoodsSkuId != 0)
|
var specValues = await _SpecValueRepository.GetListAsync(sv => specValueIds.Contains(sv.SpecValueId));
|
||||||
{
|
return specValues.Select(sv => new SpecValueItem
|
||||||
var response = await _GoodsSkuRepository.UpdateAsync(model);
|
|
||||||
return "修改成功!";
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
{
|
||||||
|
SpecId = sv.SpecId,
|
||||||
|
SpecValueId = sv.SpecValueId,
|
||||||
|
SpecValueName = sv.SpecValueName
|
||||||
|
}).ToList();
|
||||||
|
}
|
||||||
|
|
||||||
var response = await _GoodsSkuRepository.InsertReturnSnowflakeIdAsync(model);
|
private async Task<List<GoodsSkuVo>> GetSkuListWithSpecValuesAsync(List<GoodsSku> skuList)
|
||||||
return "添加成功!";
|
{
|
||||||
|
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>
|
||||||
|
/// <param name="specValueId"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
public string GetSpecValueName(int specValueId)
|
||||||
|
{
|
||||||
|
// 从数据库中查询规格值名称
|
||||||
|
var specValue = _SpecValueRepository.GetById(specValueId);
|
||||||
|
if (specValue != null)
|
||||||
|
{
|
||||||
|
return specValue.SpecValueName;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
return string.Empty;
|
||||||
}
|
}
|
||||||
|
|
||||||
#region Excel处理
|
#region Excel处理
|
||||||
|
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
#endregion
|
|
||||||
|
#endregion
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -69,10 +69,11 @@ namespace ARW.Service.Business.BusinessService.GoodsManager.Goodss
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
public async Task<PagedInfo<GoodsVo>> GetGoodsList(GoodsQueryDto parm)
|
public async Task<PagedInfo<GoodsVo>> GetGoodsList(GoodsQueryDto parm)
|
||||||
{
|
{
|
||||||
|
|
||||||
//开始拼装查询条件d
|
//开始拼装查询条件d
|
||||||
var predicate = Expressionable.Create<Goods>();
|
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(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.GoodsName), s => s.GoodsName.Contains(parm.GoodsName));
|
||||||
predicate = predicate.AndIF(!string.IsNullOrEmpty(parm.GoodsCoding), s => s.GoodsCoding.Contains(parm.GoodsCoding));
|
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()
|
.Queryable()
|
||||||
.LeftJoin<Shop>((s, c) => s.ShopGuid == c.ShopGuid)
|
.LeftJoin<Shop>((s, c) => s.ShopGuid == c.ShopGuid)
|
||||||
.Where(predicate.ToExpression())
|
.Where(predicate.ToExpression())
|
||||||
|
.WhereIF(!string.IsNullOrEmpty(parm.ShopName), (s, c) => c.ShopName.Contains(parm.ShopName))
|
||||||
.OrderBy(s => s.GoodsSort, OrderByType.Asc)
|
.OrderBy(s => s.GoodsSort, OrderByType.Asc)
|
||||||
.Select((s, c) => new GoodsVo
|
.Select((s, c) => new GoodsVo
|
||||||
{
|
{
|
||||||
@ -114,26 +116,32 @@ namespace ARW.Service.Business.BusinessService.GoodsManager.Goodss
|
|||||||
GoodsAloneGradeEquity = s.GoodsAloneGradeEquity,
|
GoodsAloneGradeEquity = s.GoodsAloneGradeEquity,
|
||||||
GoodsShelfStatus = s.GoodsShelfStatus,
|
GoodsShelfStatus = s.GoodsShelfStatus,
|
||||||
GoodsSort = s.GoodsSort,
|
GoodsSort = s.GoodsSort,
|
||||||
|
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
||||||
return await query.ToPageAsync(parm);
|
return await query.ToPageAsync(parm);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 添加或修改商品
|
/// 添加或修改商品
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public async Task<string> AddOrUpdateGoods(Goods model)
|
public async Task<string> AddOrUpdateGoods(Goods model)
|
||||||
{
|
{
|
||||||
|
try
|
||||||
if (model.GoodsId != 0)
|
|
||||||
{
|
{
|
||||||
var response = await _GoodsRepository.UpdateAsync(model);
|
if (model.GoodsId != 0)
|
||||||
return "修改成功!";
|
{
|
||||||
}
|
await UseTranAsync(async () =>
|
||||||
else
|
{
|
||||||
{
|
await HandleBeforeUpdate(model);
|
||||||
try
|
var response = await _GoodsRepository.UpdateAsync(model);
|
||||||
|
});
|
||||||
|
return "修改成功!";
|
||||||
|
}
|
||||||
|
else
|
||||||
{
|
{
|
||||||
await UseTranAsync(async () =>
|
await UseTranAsync(async () =>
|
||||||
{
|
{
|
||||||
@ -142,18 +150,19 @@ namespace ARW.Service.Business.BusinessService.GoodsManager.Goodss
|
|||||||
model.GoodsGuid = response;
|
model.GoodsGuid = response;
|
||||||
await HandleAfterAdd(model);
|
await HandleAfterAdd(model);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
return "添加成功!";
|
||||||
}
|
}
|
||||||
catch (Exception)
|
}
|
||||||
{
|
catch (Exception)
|
||||||
|
{
|
||||||
|
|
||||||
throw;
|
throw;
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
return "添加成功!";
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
#region Excel处理
|
#region Excel处理
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 数据导入处理
|
/// 数据导入处理
|
||||||
@ -255,6 +264,8 @@ namespace ARW.Service.Business.BusinessService.GoodsManager.Goodss
|
|||||||
{
|
{
|
||||||
// 单规格(最高价格 最高划线价格 = 最低价格 最低划线价格)
|
// 单规格(最高价格 最高划线价格 = 最低价格 最低划线价格)
|
||||||
model = HandleSingleSpec(model);
|
model = HandleSingleSpec(model);
|
||||||
|
|
||||||
|
// 计算价格和库存总量
|
||||||
model = HandlMultipleSpecCompute(model);
|
model = HandlMultipleSpecCompute(model);
|
||||||
|
|
||||||
return model;
|
return model;
|
||||||
@ -271,7 +282,7 @@ namespace ARW.Service.Business.BusinessService.GoodsManager.Goodss
|
|||||||
// 服务与承诺处理
|
// 服务与承诺处理
|
||||||
await HandleAddGoodsService(model);
|
await HandleAddGoodsService(model);
|
||||||
|
|
||||||
// 多规格
|
// 多规格处理
|
||||||
await HandleAddMultiSpec(model);
|
await HandleAddMultiSpec(model);
|
||||||
|
|
||||||
}
|
}
|
||||||
@ -315,7 +326,7 @@ namespace ARW.Service.Business.BusinessService.GoodsManager.Goodss
|
|||||||
public async Task HandleAddMultiSpec(Goods model)
|
public async Task HandleAddMultiSpec(Goods model)
|
||||||
{
|
{
|
||||||
// 多规格
|
// 多规格
|
||||||
if (model.GoodsSpecType == "2")
|
if (model.GoodsSpecType == 2)
|
||||||
{
|
{
|
||||||
// 添加规格组和规格值
|
// 添加规格组和规格值
|
||||||
var index = 1;
|
var index = 1;
|
||||||
@ -402,59 +413,73 @@ namespace ARW.Service.Business.BusinessService.GoodsManager.Goodss
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
#region 修改处理
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 找出改规格组的所有规格值
|
/// 商品修改前处理
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="sku"></param>
|
/// <param name="model">商品Model</param>
|
||||||
/// <param name="spec"></param>
|
|
||||||
/// <param name="level"></param>
|
|
||||||
/// <returns></returns>
|
/// <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,
|
var specList = await _GoodsSpecRelService.GetListAsync(s => s.GoodsGuid == model.GoodsGuid);
|
||||||
3 => sku.SpecThirdValue,
|
foreach (var item in specList)
|
||||||
_ => null
|
|
||||||
};
|
|
||||||
|
|
||||||
if (specValueName != null)
|
|
||||||
{
|
|
||||||
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);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
await _GoodsSpecRelService.DeleteAsync(s => s.GoodsGuid == model.GoodsGuid);
|
||||||
|
await _GoodsSkuService.DeleteAsync(s => s.GoodsGuid == model.GoodsGuid);
|
||||||
|
// 再重新添加该商品的规格
|
||||||
|
await HandleAddMultiSpec(model);
|
||||||
|
|
||||||
|
// 计算价格和库存总量
|
||||||
|
model = HandlMultipleSpecCompute(model);
|
||||||
}
|
}
|
||||||
|
|
||||||
return 0;
|
// 删除所有关于该商品的服务与承诺
|
||||||
|
await _GoodsServicesRelIService.DeleteAsync(s => s.GoodsGuid == model.GoodsGuid);
|
||||||
|
// 再重新添加该商品的服务与承诺
|
||||||
|
await HandleAddGoodsService(model);
|
||||||
|
|
||||||
|
return model;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
|
||||||
|
#region 公共方法
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 添加商品单规格处理
|
/// 商品单规格处理
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="model">商品Model</param>
|
/// <param name="model">商品Model</param>
|
||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
public Goods HandleSingleSpec(Goods model)
|
public Goods HandleSingleSpec(Goods model)
|
||||||
{
|
{
|
||||||
// 单规格
|
// 单规格
|
||||||
if (model.GoodsSpecType == "1")
|
if (model.GoodsSpecType == 1)
|
||||||
{
|
{
|
||||||
// 价格
|
// 价格
|
||||||
model.GoodsPriceLowest = model.GoodsPriceHighest;
|
model.GoodsPriceLowest = model.GoodsPriceHighest;
|
||||||
|
|
||||||
// 划线价格
|
// 划线价格
|
||||||
if (model.GoodsDashedPriceHighest != 0)
|
model.GoodsDashedPriceLowest = model.GoodsDashedPriceHighest;
|
||||||
{
|
|
||||||
model.GoodsDashedPriceLowest = model.GoodsDashedPriceHighest;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return model;
|
return model;
|
||||||
@ -462,14 +487,14 @@ namespace ARW.Service.Business.BusinessService.GoodsManager.Goodss
|
|||||||
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 添加商品计算多规格处理
|
/// 商品计算多规格处理
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="model">商品Model</param>
|
/// <param name="model">商品Model</param>
|
||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
public Goods HandlMultipleSpecCompute(Goods model)
|
public Goods HandlMultipleSpecCompute(Goods model)
|
||||||
{
|
{
|
||||||
// 单规格
|
// 单规格
|
||||||
if (model.GoodsSpecType == "2")
|
if (model.GoodsSpecType == 2)
|
||||||
{
|
{
|
||||||
decimal lowestPrice = decimal.MaxValue;
|
decimal lowestPrice = decimal.MaxValue;
|
||||||
decimal highestPrice = decimal.MinValue;
|
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
|
#endregion
|
||||||
|
@ -23,6 +23,15 @@ namespace ARW.Service.Business.IBusinessService.GoodsManager.GoodsServicess.Good
|
|||||||
Task<PagedInfo<GoodsServicesRelVo>> GetGoodsServicesRelList(GoodsServicesRelQueryDto parm);
|
Task<PagedInfo<GoodsServicesRelVo>> GetGoodsServicesRelList(GoodsServicesRelQueryDto parm);
|
||||||
|
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 获取当前商品的服务与承诺Id
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="parm"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
Task<List<int>> GetCurrentGoodsServicesRel(GoodsServicesRelQueryDto parm);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 新增商品服务与承诺关系
|
/// 新增商品服务与承诺关系
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
@ -4,8 +4,10 @@ using System.Linq;
|
|||||||
using System.Text;
|
using System.Text;
|
||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
using ARW.Model;
|
using ARW.Model;
|
||||||
|
using ARW.Model.Dto.Business.GoodsManager.Goodss;
|
||||||
using ARW.Model.Dto.Business.GoodsManager.GoodsSpecs.GoodsSkus;
|
using ARW.Model.Dto.Business.GoodsManager.GoodsSpecs.GoodsSkus;
|
||||||
using ARW.Model.Models.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;
|
using ARW.Model.Vo.Business.GoodsManager.GoodsSpecs.GoodsSkus;
|
||||||
|
|
||||||
namespace ARW.Service.Business.IBusinessService.GoodsManager.GoodsSpecs.GoodsSkus
|
namespace ARW.Service.Business.IBusinessService.GoodsManager.GoodsSpecs.GoodsSkus
|
||||||
@ -18,23 +20,12 @@ namespace ARW.Service.Business.IBusinessService.GoodsManager.GoodsSpecs.GoodsSku
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
public interface IGoodsSkuService : IBaseService<GoodsSku>
|
public interface IGoodsSkuService : IBaseService<GoodsSku>
|
||||||
{
|
{
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 获取商品规格分页列表
|
/// 获取商品Sku
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="parm"></param>
|
/// <param name="parm"></param>
|
||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
Task<PagedInfo<GoodsSkuVo>> GetGoodsSkuList(GoodsSkuQueryDto parm);
|
Task<GoodsSpecSkutVo> GetGoodsSkuList(GoodsSkuQueryDto parm);
|
||||||
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// 添加或修改商品规格
|
|
||||||
/// </summary>
|
|
||||||
/// <param name="parm"></param>
|
|
||||||
/// <returns></returns>
|
|
||||||
Task<string> AddOrUpdateGoodsSku(GoodsSku parm);
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -25,8 +25,8 @@ namespace ARW.Service.Business.IBusinessService.GoodsManager.Goodss
|
|||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
Task<PagedInfo<GoodsVo>> GetGoodsList(GoodsQueryDto parm);
|
Task<PagedInfo<GoodsVo>> GetGoodsList(GoodsQueryDto parm);
|
||||||
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 添加或修改商品
|
/// 添加或修改商品
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="parm"></param>
|
/// <param name="parm"></param>
|
||||||
|
@ -15,7 +15,13 @@ using ARW.Model.Models.Business.GoodsManager.Goodss;
|
|||||||
using ARW.Model.Vo.Business.GoodsManager.Goodss;
|
using ARW.Model.Vo.Business.GoodsManager.Goodss;
|
||||||
using Microsoft.AspNetCore.Authorization;
|
using Microsoft.AspNetCore.Authorization;
|
||||||
using ARW.Admin.WebApi.Framework;
|
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
|
namespace ARW.WebApi.Controllers.Business.GoodsManager.Goodss
|
||||||
{
|
{
|
||||||
@ -30,14 +36,30 @@ namespace ARW.WebApi.Controllers.Business.GoodsManager.Goodss
|
|||||||
public class GoodsController : BaseController
|
public class GoodsController : BaseController
|
||||||
{
|
{
|
||||||
private readonly IGoodsService _GoodsService;
|
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>
|
||||||
/// 依赖注入
|
/// 依赖注入
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="GoodsService">商品服务</param>
|
/// <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;
|
_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);
|
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>
|
||||||
/// 添加或修改商品
|
/// 添加或修改商品
|
||||||
/// </summary>
|
/// </summary>
|
||||||
@ -81,14 +128,30 @@ namespace ARW.WebApi.Controllers.Business.GoodsManager.Goodss
|
|||||||
[HttpDelete("{ids}")]
|
[HttpDelete("{ids}")]
|
||||||
[ActionPermissionFilter(Permission = "business:goods:delete")]
|
[ActionPermissionFilter(Permission = "business:goods:delete")]
|
||||||
[Log(Title = "商品删除", BusinessType = BusinessType.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 不能为空")); }
|
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);
|
var response = _GoodsService.Delete(idsArr);
|
||||||
return SUCCESS("删除成功!");
|
return SUCCESS("删除成功!");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 导入商品
|
/// 导入商品
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
@ -125,7 +125,7 @@ $end
|
|||||||
|
|
||||||
<template #footer>
|
<template #footer>
|
||||||
<div key="dialog-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>
|
<el-button @click="handleResetClick(formRef)">重置</el-button>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
@ -195,6 +195,7 @@ $end
|
|||||||
|
|
||||||
|
|
||||||
// -基础参数
|
// -基础参数
|
||||||
|
const loadingStatus = ref(false)
|
||||||
const labelWidth = 100;
|
const labelWidth = 100;
|
||||||
const formRef = ref();
|
const formRef = ref();
|
||||||
const { proxy } = getCurrentInstance()
|
const { proxy } = getCurrentInstance()
|
||||||
@ -240,6 +241,7 @@ const handleAddClick = async (formEl) => {
|
|||||||
if (!valid) {
|
if (!valid) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
loadingStatus.value = true
|
||||||
|
|
||||||
$foreach(item in genTable.Columns)
|
$foreach(item in genTable.Columns)
|
||||||
$if(item.HtmlType == "map")
|
$if(item.HtmlType == "map")
|
||||||
@ -259,6 +261,7 @@ $end
|
|||||||
if (code == 200) {
|
if (code == 200) {
|
||||||
modal.msgSuccess('添加成功')
|
modal.msgSuccess('添加成功')
|
||||||
closeDialog();
|
closeDialog();
|
||||||
|
loadingStatus.value = false
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
@ -126,7 +126,7 @@ $end
|
|||||||
|
|
||||||
<template #footer>
|
<template #footer>
|
||||||
<div class="dialog-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>
|
<el-button @click="handleResetClick(formRef)">重置</el-button>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
@ -216,6 +216,7 @@ const props = defineProps({
|
|||||||
done: Function,
|
done: Function,
|
||||||
});
|
});
|
||||||
|
|
||||||
|
const loadingStatus = ref(false)
|
||||||
const labelWidth = 100;
|
const labelWidth = 100;
|
||||||
const formRef = ref();
|
const formRef = ref();
|
||||||
const { proxy } = getCurrentInstance()
|
const { proxy } = getCurrentInstance()
|
||||||
@ -251,6 +252,7 @@ const handleEditClick = async (formEl) => {
|
|||||||
if (!valid) {
|
if (!valid) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
loadingStatus.value = true
|
||||||
|
|
||||||
$foreach(item in genTable.Columns)
|
$foreach(item in genTable.Columns)
|
||||||
$if(item.HtmlType == "map")
|
$if(item.HtmlType == "map")
|
||||||
@ -270,6 +272,7 @@ $end
|
|||||||
if (code == 200) {
|
if (code == 200) {
|
||||||
modal.msgSuccess('修改成功')
|
modal.msgSuccess('修改成功')
|
||||||
closeDialog();
|
closeDialog();
|
||||||
|
loadingStatus.value = false
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user