From a1728bf765c6166b573fc85498c75f45f92d9806 Mon Sep 17 00:00:00 2001 From: lwh <2679599887@qq.com> Date: Fri, 1 Sep 2023 16:20:38 +0800 Subject: [PATCH] =?UTF-8?q?fixed=20=E4=BF=AE=E6=94=B9=E8=AE=A2=E5=8D=95?= =?UTF-8?q?=E5=88=97=E8=A1=A8=E6=9F=A5=E8=AF=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../OrderManage/OrderGoodss/OrderGoodsDto.cs | 60 ++++++++++++ .../OrderManage/OrderGoodss/OrderGoods.cs | 91 ++++++++++++++++++ .../Business/OrderManage/Orders/Order.cs | 10 -- .../OrderManage/OrderGoodss/OrderGoodsVo.cs | 69 ++++++++++++++ .../OrderManage/Orders/OrderGoodsVo.cs | 6 ++ .../Vo/Business/OrderManage/Orders/OrderVo.cs | 3 +- .../OrderGoodss/OrderGoodsRepository.cs | 20 ++++ .../GoodsSpecs/GoodsSkus/GoodsSkuService.cs | 2 +- .../OrderGoodss/OrderGoodsService.cs | 95 +++++++++++++++++++ .../OrderManage/Orders/OrderService.cs | 48 ++++++---- .../GoodsSpecs/GoodsSkus/IGoodsSkuService.cs | 2 +- .../OrderGoodss/IOrderGoodsService.cs | 41 ++++++++ 12 files changed, 417 insertions(+), 30 deletions(-) create mode 100644 ARW.Model/Dto/Business/OrderManage/OrderGoodss/OrderGoodsDto.cs create mode 100644 ARW.Model/Models/Business/OrderManage/OrderGoodss/OrderGoods.cs create mode 100644 ARW.Model/Vo/Business/OrderManage/OrderGoodss/OrderGoodsVo.cs create mode 100644 ARW.Repository/Business/OrderManage/OrderGoodss/OrderGoodsRepository.cs create mode 100644 ARW.Service/Business/BusinessService/OrderManage/OrderGoodss/OrderGoodsService.cs create mode 100644 ARW.Service/Business/IBusinessService/OrderManage/OrderGoodss/IOrderGoodsService.cs diff --git a/ARW.Model/Dto/Business/OrderManage/OrderGoodss/OrderGoodsDto.cs b/ARW.Model/Dto/Business/OrderManage/OrderGoodss/OrderGoodsDto.cs new file mode 100644 index 0000000..1915915 --- /dev/null +++ b/ARW.Model/Dto/Business/OrderManage/OrderGoodss/OrderGoodsDto.cs @@ -0,0 +1,60 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel.DataAnnotations; +using ARW.Model.Models.Business.OrderManage.OrderGoodss; + +namespace ARW.Model.Dto.Business.OrderManage.OrderGoodss +{ + /// + /// 订单商品记录输入对象 + /// + /// @author lwh + /// @date 2023-09-01 + /// + public class OrderGoodsDto + { + + public int OrderGoodsId { get; set; } + + public long OrderGoodsGuid { get; set; } + + [Required(ErrorMessage = "订单guid不能为空")] + public long OrderGuid { get; set; } + + [Required(ErrorMessage = "商品guid不能为空")] + public long GoodsGuid { get; set; } + + public int? GoodsSkuId { get; set; } + + [Required(ErrorMessage = "商品单价不能为空")] + public decimal GoodsPrice { get; set; } + + [Required(ErrorMessage = "商品购买数量不能为空")] + public int GoodsTotalNum { get; set; } + + [Required(ErrorMessage = "商品总额(单价 × 数量)不能为空")] + public decimal GoodsTotalAmoun { get; set; } + + + + + + } + + + /// + /// 订单商品记录查询对象 + /// + /// @author lwh + /// @date 2023-09-01 + /// + public class OrderGoodsQueryDto : PagerInfo + { + + public string ids { get; set; } + } + + + + +} diff --git a/ARW.Model/Models/Business/OrderManage/OrderGoodss/OrderGoods.cs b/ARW.Model/Models/Business/OrderManage/OrderGoodss/OrderGoods.cs new file mode 100644 index 0000000..b44add6 --- /dev/null +++ b/ARW.Model/Models/Business/OrderManage/OrderGoodss/OrderGoods.cs @@ -0,0 +1,91 @@ +using System; +using System.Collections.Generic; +using SqlSugar; +using OfficeOpenXml.Attributes; +using Newtonsoft.Json; + +namespace ARW.Model.Models.Business.OrderManage.OrderGoodss +{ + /// + /// 订单商品记录,数据实体对象 + /// + /// @author lwh + /// @date 2023-09-01 + /// + [SugarTable("tb_order_goods")] + public class OrderGoods : BusinessBase + { + + /// + /// 描述 : + /// 空值 : false + /// + [SugarColumn(IsPrimaryKey = true, IsIdentity = true, ColumnName = "order_goods_id")] + public int OrderGoodsId { get; set; } + + + /// + /// 描述 : + /// 空值 : false + /// + [JsonConverter(typeof(ValueToStringConverter))] + [SugarColumn(IsPrimaryKey = true, IsIdentity = false, ColumnName = "order_goods_guid")] + public long OrderGoodsGuid { get; set; } + + + /// + /// 描述 :订单guid + /// 空值 : false + /// + [JsonConverter(typeof(ValueToStringConverter))] + [SugarColumn(ColumnName = "order_guid")] + public long OrderGuid { get; set; } + + + /// + /// 描述 :商品guid + /// 空值 : false + /// + [JsonConverter(typeof(ValueToStringConverter))] + [SugarColumn(ColumnName = "goods_guid")] + public long GoodsGuid { get; set; } + + + /// + /// 描述 :商品sku唯一标识 + /// 空值 : true + /// + [SugarColumn(ColumnName = "goods_sku_id")] + public int? GoodsSkuId { get; set; } + + + /// + /// 描述 :商品单价 + /// 空值 : false + /// + [SugarColumn(ColumnName = "goods_price")] + public decimal GoodsPrice { get; set; } + + + /// + /// 描述 :商品购买数量 + /// 空值 : false + /// + [SugarColumn(ColumnName = "goods_total_num")] + public int GoodsTotalNum { get; set; } + + + /// + /// 描述 :商品总额(单价 × 数量) + /// 空值 : false + /// + [SugarColumn(ColumnName = "goods_total_amoun")] + public decimal GoodsTotalAmoun { get; set; } + + + + + + + } +} \ No newline at end of file diff --git a/ARW.Model/Models/Business/OrderManage/Orders/Order.cs b/ARW.Model/Models/Business/OrderManage/Orders/Order.cs index 4f507ba..c47e0e4 100644 --- a/ARW.Model/Models/Business/OrderManage/Orders/Order.cs +++ b/ARW.Model/Models/Business/OrderManage/Orders/Order.cs @@ -55,16 +55,6 @@ namespace ARW.Model.Models.Business.OrderManage.Orders public long CustomerGuid { get; set; } - /// - /// 描述 :店铺guid - /// 空值 : true - /// - [EpplusTableColumn(Header = "店铺guid")] - [JsonConverter(typeof(ValueToStringConverter))] - [SugarColumn(ColumnName = "shop_guid")] - public long? ShopGuid { get; set; } - - /// /// 描述 :订单号 /// 空值 : false diff --git a/ARW.Model/Vo/Business/OrderManage/OrderGoodss/OrderGoodsVo.cs b/ARW.Model/Vo/Business/OrderManage/OrderGoodss/OrderGoodsVo.cs new file mode 100644 index 0000000..32656e3 --- /dev/null +++ b/ARW.Model/Vo/Business/OrderManage/OrderGoodss/OrderGoodsVo.cs @@ -0,0 +1,69 @@ +using Newtonsoft.Json; +using OfficeOpenXml.Attributes; +using SqlSugar; +using System; + +namespace ARW.Model.Vo.Business.OrderManage.OrderGoodss +{ + /// + /// 订单商品记录展示对象 + /// + /// @author lwh + /// @date 2023-09-01 + /// + public class OrderGoodsVo + { + + + /// + /// 描述 : + /// + public int OrderGoodsId { get; set; } + + + /// + /// 描述 : + /// + [JsonConverter(typeof(ValueToStringConverter))] + public long OrderGoodsGuid { get; set; } + + + /// + /// 描述 :订单guid + /// + [JsonConverter(typeof(ValueToStringConverter))] + public long OrderGuid { get; set; } + + + /// + /// 描述 :商品guid + /// + [JsonConverter(typeof(ValueToStringConverter))] + public long GoodsGuid { get; set; } + + + /// + /// 描述 :商品sku唯一标识 + /// + public int? GoodsSkuId { get; set; } + + + /// + /// 描述 :商品单价 + /// + public decimal GoodsPrice { get; set; } + + + /// + /// 描述 :商品购买数量 + /// + public int GoodsTotalNum { get; set; } + + + /// + /// 描述 :商品总额(单价 × 数量) + /// + public decimal GoodsTotalAmoun { get; set; } + + } +} diff --git a/ARW.Model/Vo/Business/OrderManage/Orders/OrderGoodsVo.cs b/ARW.Model/Vo/Business/OrderManage/Orders/OrderGoodsVo.cs index c8f3828..83ab388 100644 --- a/ARW.Model/Vo/Business/OrderManage/Orders/OrderGoodsVo.cs +++ b/ARW.Model/Vo/Business/OrderManage/Orders/OrderGoodsVo.cs @@ -37,5 +37,11 @@ namespace ARW.Model.Vo.Business.OrderManage.Orders /// public decimal GoodsPrice { get; set; } + + /// + /// 购买数量 + /// + public int GoodsTotalNum { get; set; } + } } diff --git a/ARW.Model/Vo/Business/OrderManage/Orders/OrderVo.cs b/ARW.Model/Vo/Business/OrderManage/Orders/OrderVo.cs index c3af8ce..1a85115 100644 --- a/ARW.Model/Vo/Business/OrderManage/Orders/OrderVo.cs +++ b/ARW.Model/Vo/Business/OrderManage/Orders/OrderVo.cs @@ -2,6 +2,7 @@ using Newtonsoft.Json; using OfficeOpenXml.Attributes; using SqlSugar; using System; +using System.Collections.Generic; namespace ARW.Model.Vo.Business.OrderManage.Orders { @@ -32,7 +33,7 @@ namespace ARW.Model.Vo.Business.OrderManage.Orders /// /// 商品信息 /// - public OrderGoodsVo GoodsInfo { get; set; } + public List GoodsInfoList { get; set; } /// diff --git a/ARW.Repository/Business/OrderManage/OrderGoodss/OrderGoodsRepository.cs b/ARW.Repository/Business/OrderManage/OrderGoodss/OrderGoodsRepository.cs new file mode 100644 index 0000000..6ef00c8 --- /dev/null +++ b/ARW.Repository/Business/OrderManage/OrderGoodss/OrderGoodsRepository.cs @@ -0,0 +1,20 @@ +using System; +using Infrastructure.Attribute; +using ARW.Repository.System; +using ARW.Model.Models.Business.OrderManage.OrderGoodss; + +namespace ARW.Repository.Business.OrderManage.OrderGoodss +{ + /// + /// 订单商品记录仓储 + /// + /// @author lwh + /// @date 2023-09-01 + /// + [AppService(ServiceLifetime = LifeTime.Transient)] + public class OrderGoodsRepository : BaseRepository + { + #region 业务逻辑代码 + #endregion + } +} \ No newline at end of file diff --git a/ARW.Service/Business/BusinessService/GoodsManager/GoodsSpecs/GoodsSkus/GoodsSkuService.cs b/ARW.Service/Business/BusinessService/GoodsManager/GoodsSpecs/GoodsSkus/GoodsSkuService.cs index 72f6356..a789536 100644 --- a/ARW.Service/Business/BusinessService/GoodsManager/GoodsSpecs/GoodsSkus/GoodsSkuService.cs +++ b/ARW.Service/Business/BusinessService/GoodsManager/GoodsSpecs/GoodsSkus/GoodsSkuService.cs @@ -153,7 +153,7 @@ namespace ARW.Service.Business.BusinessService.GoodsManager.GoodsSpecs.GoodsSkus /// /// /// - public async Task GetSpecValueFullName(int skuId) + public async Task GetSpecValueFullName(int? skuId) { var str = ""; // 从数据库中查询规格值名称 diff --git a/ARW.Service/Business/BusinessService/OrderManage/OrderGoodss/OrderGoodsService.cs b/ARW.Service/Business/BusinessService/OrderManage/OrderGoodss/OrderGoodsService.cs new file mode 100644 index 0000000..12020c4 --- /dev/null +++ b/ARW.Service/Business/BusinessService/OrderManage/OrderGoodss/OrderGoodsService.cs @@ -0,0 +1,95 @@ +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 Infrastructure; +using ARW.Model; +using ARW.Repository; +using ARW.Repository.Business.OrderManage.OrderGoodss; +using ARW.Service.Business.IBusinessService.OrderManage.OrderGoodss; +using ARW.Model.Dto.Business.OrderManage.OrderGoodss; +using ARW.Model.Models.Business.OrderManage.OrderGoodss; +using ARW.Model.Vo.Business.OrderManage.OrderGoodss; + +namespace ARW.Service.Business.BusinessService.OrderManage.OrderGoodss +{ + /// + /// 订单商品记录接口实现类 + /// + /// @author lwh + /// @date 2023-09-01 + /// + [AppService(ServiceType = typeof(IOrderGoodsService), ServiceLifetime = LifeTime.Transient)] + public class OrderGoodsServiceImpl : BaseService, IOrderGoodsService + { + private readonly OrderGoodsRepository _OrderGoodsRepository; + + public OrderGoodsServiceImpl(OrderGoodsRepository OrderGoodsRepository) + { + this._OrderGoodsRepository = OrderGoodsRepository; + } + + #region 业务逻辑代码 + + + /// + /// 查询订单商品记录分页列表 + /// + public async Task> GetOrderGoodsList(OrderGoodsQueryDto parm) + { + //开始拼装查询条件d + var predicate = Expressionable.Create(); + + var query = _OrderGoodsRepository + .Queryable() + .Where(predicate.ToExpression()) + .OrderBy(s => s.Update_time,OrderByType.Desc) + .Select(s => new OrderGoodsVo + { + OrderGoodsId = s.OrderGoodsId, + OrderGoodsGuid = s.OrderGoodsGuid, + OrderGuid = s.OrderGuid, + GoodsGuid = s.GoodsGuid, + GoodsSkuId = s.GoodsSkuId, + GoodsPrice = s.GoodsPrice, + GoodsTotalNum = s.GoodsTotalNum, + GoodsTotalAmoun = s.GoodsTotalAmoun, + }); + + + return await query.ToPageAsync(parm); + } + + /// + /// 添加或修改订单商品记录 + /// + public async Task AddOrUpdateOrderGoods(OrderGoods model) + { + if (model.OrderGoodsId != 0) + { + var response = await _OrderGoodsRepository.UpdateAsync(model); + return "修改成功!"; + } + else + { + + var response = await _OrderGoodsRepository.InsertReturnSnowflakeIdAsync(model); + return "添加成功!"; + } + } + + #region Excel处理 + + + #endregion + + + +#endregion + + } +} diff --git a/ARW.Service/Business/BusinessService/OrderManage/Orders/OrderService.cs b/ARW.Service/Business/BusinessService/OrderManage/Orders/OrderService.cs index d877116..aa2b03d 100644 --- a/ARW.Service/Business/BusinessService/OrderManage/Orders/OrderService.cs +++ b/ARW.Service/Business/BusinessService/OrderManage/Orders/OrderService.cs @@ -18,6 +18,8 @@ using ARW.Repository.Business.GoodsManager.Goodss; using ARW.Repository.Business.GoodsManager.GoodsSpecs.GoodsSkus; using ARW.Service.Business.IBusinessService.GoodsManager.GoodsSpecs.GoodsSkus; using ARW.Model.Models.Business.Custom.Customers; +using ARW.Repository.Business.OrderManage.OrderGoodss; +using ARW.Model.Models.Business.GoodsManager.Goodss; namespace ARW.Service.Business.BusinessService.OrderManage.Orders { @@ -31,14 +33,16 @@ namespace ARW.Service.Business.BusinessService.OrderManage.Orders public class OrderServiceImpl : BaseService, IOrderService { private readonly OrderRepository _OrderRepository; + private readonly OrderGoodsRepository _OrderGoodsRepository; private readonly GoodsRepository _GoodsRepository; private readonly IGoodsSkuService _GoodsSkuService; - public OrderServiceImpl(OrderRepository OrderRepository, GoodsRepository goodsRepository, IGoodsSkuService goodsSkuService) + public OrderServiceImpl(OrderRepository OrderRepository, GoodsRepository goodsRepository, IGoodsSkuService goodsSkuService, OrderGoodsRepository orderGoodsRepository) { this._OrderRepository = OrderRepository; _GoodsRepository = goodsRepository; _GoodsSkuService = goodsSkuService; + _OrderGoodsRepository = orderGoodsRepository; } #region 业务逻辑代码 @@ -90,23 +94,33 @@ namespace ARW.Service.Business.BusinessService.OrderManage.Orders foreach (var item in list.Result) { - // 获取商品信息 - //var goods = await _GoodsRepository.GetFirstAsync(s => s.GoodsGuid == item.GoodsGuid) ?? throw new CustomException("商品不存在"); - //item.GoodsInfo = new OrderGoodsVo(); - //item.GoodsInfo.GoodsName = goods.GoodsName; - //item.GoodsInfo.GoodsPicture = goods.GoodsPicture; - //if (item.GoodsSkuId != 0) - //{ - // var specName = await _GoodsSkuService.GetSpecValueFullName(item.GoodsSkuId); - // var sku = await _GoodsSkuService.GetByIdAsync(item.GoodsSkuId); - // item.GoodsInfo.GoodsSpecName = specName; - // item.GoodsInfo.GoodsPrice = sku.GoodsSkuPrice; - //} - //else - //{ - // item.GoodsInfo.GoodsPrice = goods.GoodsPriceHighest; - //} + item.GoodsInfoList = new List(); + var orderGoodsList = await _OrderGoodsRepository.GetListAsync(s => s.OrderGuid == item.OrderGuid); + if (orderGoodsList.Count <= 0) throw new CustomException("订单商品不存在"); + foreach (var orderGoods in orderGoodsList) + { + var goods = await _GoodsRepository.GetFirstAsync(s => s.GoodsGuid == orderGoods.GoodsGuid) ?? throw new CustomException("商品不存在"); + var orderGoodsInfo = new OrderGoodsVo(); + orderGoodsInfo.GoodsName = goods.GoodsName; + orderGoodsInfo.GoodsPicture = goods.GoodsPicture; + orderGoodsInfo.GoodsTotalNum = orderGoods.GoodsTotalNum; + if (orderGoods.GoodsSkuId != null) + { + var specName = await _GoodsSkuService.GetSpecValueFullName(orderGoods.GoodsSkuId); + var sku = await _GoodsSkuService.GetByIdAsync(orderGoods.GoodsSkuId); + orderGoodsInfo.GoodsSpecName = specName; + orderGoodsInfo.GoodsPrice = sku.GoodsSkuPrice; + } + else + { + orderGoodsInfo.GoodsPrice = goods.GoodsPriceHighest; + } + item.GoodsInfoList.Add(orderGoodsInfo); + } + + + } return list; diff --git a/ARW.Service/Business/IBusinessService/GoodsManager/GoodsSpecs/GoodsSkus/IGoodsSkuService.cs b/ARW.Service/Business/IBusinessService/GoodsManager/GoodsSpecs/GoodsSkus/IGoodsSkuService.cs index 6691796..46fd241 100644 --- a/ARW.Service/Business/IBusinessService/GoodsManager/GoodsSpecs/GoodsSkus/IGoodsSkuService.cs +++ b/ARW.Service/Business/IBusinessService/GoodsManager/GoodsSpecs/GoodsSkus/IGoodsSkuService.cs @@ -34,7 +34,7 @@ namespace ARW.Service.Business.IBusinessService.GoodsManager.GoodsSpecs.GoodsSku /// /// /// - Task GetSpecValueFullName(int skuId); + Task GetSpecValueFullName(int? skuId); } } diff --git a/ARW.Service/Business/IBusinessService/OrderManage/OrderGoodss/IOrderGoodsService.cs b/ARW.Service/Business/IBusinessService/OrderManage/OrderGoodss/IOrderGoodsService.cs new file mode 100644 index 0000000..827b45c --- /dev/null +++ b/ARW.Service/Business/IBusinessService/OrderManage/OrderGoodss/IOrderGoodsService.cs @@ -0,0 +1,41 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using ARW.Model; +using ARW.Model.Dto.Business.OrderManage.OrderGoodss; +using ARW.Model.Models.Business.OrderManage.OrderGoodss; +using ARW.Model.Vo.Business.OrderManage.OrderGoodss; + +namespace ARW.Service.Business.IBusinessService.OrderManage.OrderGoodss +{ + /// + /// 订单商品记录接口类 + /// + /// @author lwh + /// @date 2023-09-01 + /// + public interface IOrderGoodsService : IBaseService + { + /// + /// 获取订单商品记录分页列表 + /// + /// + /// + Task> GetOrderGoodsList(OrderGoodsQueryDto parm); + + + /// + /// 添加或修改订单商品记录 + /// + /// + /// + Task AddOrUpdateOrderGoods(OrderGoods parm); + + + + + + } +}