From e35eb71e464b432c3df8fc5e57457c9bf95c3637 Mon Sep 17 00:00:00 2001 From: lwh <2679599887@qq.com> Date: Tue, 5 Sep 2023 01:30:58 +0800 Subject: [PATCH] =?UTF-8?q?feat=20=E6=B7=BB=E5=8A=A0=E5=8F=91=E8=B4=A7?= =?UTF-8?q?=EF=BC=8C=E8=AE=A2=E5=8D=95=E6=94=B9=E4=BB=B7=EF=BC=8C=E5=AE=A1?= =?UTF-8?q?=E6=A0=B8=E5=8F=96=E6=B6=88=E8=AE=A2=E5=8D=95=E7=9A=84=E6=8E=A5?= =?UTF-8?q?=E5=8F=A3=EF=BC=8C=E4=BF=AE=E6=94=B9=E8=AE=A2=E5=8D=95=E8=AF=A6?= =?UTF-8?q?=E6=83=85=E6=8E=A5=E5=8F=A3=E7=9A=84bug=EF=BC=8C=E5=88=9D?= =?UTF-8?q?=E5=A7=8B=E5=8C=96=E8=AE=A2=E5=8D=95api=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ARW.Common/Tools.cs | 11 + .../Dto/Api/OrderManage/Orders/OrderApiDto.cs | 40 ++ .../Business/GoodsManager/Goodss/GoodsDto.cs | 4 + .../OrderManage/Orders/OrderCancelOrderDto.cs | 22 ++ .../OrderManage/Orders/OrderChangePriceDto.cs | 24 ++ .../OrderManage/Orders/OrderDeliverDto.cs | 26 ++ .../Business/OrderManage/Orders/OrderDto.cs | 8 +- .../Business/GoodsManager/Goodss/Goods.cs | 7 + .../Vo/Api/OrderManage/Orders/OrderApiVo.cs | 348 ++++++++++++++++++ .../Business/GoodsManager/Goodss/GoodsVo.cs | 7 + .../OrderManage/Orders/OrderDetailVo.cs | 140 +++++++ .../OrderManage/Orders/OrderGoodsVo.cs | 13 + .../OrderManage/Orders/OrderReceiveVo.cs | 40 ++ .../GoodsManager/Goodss/GoodsServiceApi.cs | 1 + .../OrderManage/Orders/OrderServiceApi.cs | 155 ++++++++ .../OrderManage/Orders/IOrderServiceApi.cs | 36 ++ .../Custom/Regions/RegionService.cs | 21 ++ .../GoodsManager/Goodss/GoodsService.cs | 1 + .../OrderManage/Orders/OrderService.cs | 251 +++++++++++-- .../Custom/Regions/IRegionService.cs | 11 +- .../OrderManage/Orders/IOrderService.cs | 38 +- .../OrderManage/Orders/OrderApiController.cs | 81 ++++ .../OrderManage/Orders/OrderController.cs | 88 ++++- 23 files changed, 1331 insertions(+), 42 deletions(-) create mode 100644 ARW.Model/Dto/Api/OrderManage/Orders/OrderApiDto.cs create mode 100644 ARW.Model/Dto/Business/OrderManage/Orders/OrderCancelOrderDto.cs create mode 100644 ARW.Model/Dto/Business/OrderManage/Orders/OrderChangePriceDto.cs create mode 100644 ARW.Model/Dto/Business/OrderManage/Orders/OrderDeliverDto.cs create mode 100644 ARW.Model/Vo/Api/OrderManage/Orders/OrderApiVo.cs create mode 100644 ARW.Model/Vo/Business/OrderManage/Orders/OrderDetailVo.cs create mode 100644 ARW.Model/Vo/Business/OrderManage/Orders/OrderReceiveVo.cs create mode 100644 ARW.Service/Api/BusinessService/OrderManage/Orders/OrderServiceApi.cs create mode 100644 ARW.Service/Api/IBusinessService/OrderManage/Orders/IOrderServiceApi.cs create mode 100644 ARW.WebApi/Controllers/Api/OrderManage/Orders/OrderApiController.cs diff --git a/ARW.Common/Tools.cs b/ARW.Common/Tools.cs index 947ac4a..cf8832d 100644 --- a/ARW.Common/Tools.cs +++ b/ARW.Common/Tools.cs @@ -187,5 +187,16 @@ namespace ARW.Common } } + + + public static T JsonToVo(string json) + { + json = json.Remove(0, 1); + json = json.Substring(0, json.Length - 1); + var data = JsonConvert.DeserializeObject(json); + + return data; + } + } } diff --git a/ARW.Model/Dto/Api/OrderManage/Orders/OrderApiDto.cs b/ARW.Model/Dto/Api/OrderManage/Orders/OrderApiDto.cs new file mode 100644 index 0000000..fcd5a8f --- /dev/null +++ b/ARW.Model/Dto/Api/OrderManage/Orders/OrderApiDto.cs @@ -0,0 +1,40 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel.DataAnnotations; +using ARW.Model.Models.Business.OrderManage.Orders; + +namespace ARW.Model.Dto.Api.OrderManage.Orders +{ + + /// + /// 订单查询对象Api + /// + /// @author lwh + /// @date 2023-09-01 + /// + public class OrderQueryDtoApi : PagerInfo + { + public string OrderNumber { get; set; } + public int? PayType { get; set; } + public int? PayStatus { get; set; } + public int? DeliveryType { get; set; } + public string LogisticsTrackingNumber { get; set; } + public int? DeliveryStatus { get; set; } + public int? ReceiptStatus { get; set; } + public int? OrderStatus { get; set; } + } + + + /// + /// 订单详情输入对象Api + /// + /// @author lwh + /// @date 2023-09-01 + /// + public class OrderDtoApi + { + [Required(ErrorMessage = "OrderGuid不能为空")] + public long OrderGuid { get; set; } + } + +} diff --git a/ARW.Model/Dto/Business/GoodsManager/Goodss/GoodsDto.cs b/ARW.Model/Dto/Business/GoodsManager/Goodss/GoodsDto.cs index 5ddea76..94b5c8c 100644 --- a/ARW.Model/Dto/Business/GoodsManager/Goodss/GoodsDto.cs +++ b/ARW.Model/Dto/Business/GoodsManager/Goodss/GoodsDto.cs @@ -4,6 +4,8 @@ using System.ComponentModel.DataAnnotations; using System.Reflection.Metadata.Ecma335; using ARW.Model.Models.Business.GoodsManager.Goodss; using Microsoft.AspNetCore.Mvc.RazorPages.Infrastructure; +using MimeKit; +using OfficeOpenXml.Attributes; namespace ARW.Model.Dto.Business.GoodsManager.Goodss { @@ -61,6 +63,8 @@ namespace ARW.Model.Dto.Business.GoodsManager.Goodss [Required(ErrorMessage = "图片不能为空")] public string GoodsPicture { get; set; } + public decimal GoodsWeight { get; set; } + public decimal GoodsPriceLowest { get; set; } [Required(ErrorMessage = "价格(最高)不能为空")] diff --git a/ARW.Model/Dto/Business/OrderManage/Orders/OrderCancelOrderDto.cs b/ARW.Model/Dto/Business/OrderManage/Orders/OrderCancelOrderDto.cs new file mode 100644 index 0000000..ec06044 --- /dev/null +++ b/ARW.Model/Dto/Business/OrderManage/Orders/OrderCancelOrderDto.cs @@ -0,0 +1,22 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel.DataAnnotations; +using ARW.Model.Models.Business.OrderManage.Orders; + +namespace ARW.Model.Dto.Business.OrderManage.Orders +{ + /// + /// 审核取消订单输入对象 + /// + /// @author lwh + /// @date 2023-08-29 + /// + public class OrderCancelOrderDto + { + public long OrderGuid { get; set; } + + public bool IsAgree { get; set; } + + } + +} diff --git a/ARW.Model/Dto/Business/OrderManage/Orders/OrderChangePriceDto.cs b/ARW.Model/Dto/Business/OrderManage/Orders/OrderChangePriceDto.cs new file mode 100644 index 0000000..d74dc70 --- /dev/null +++ b/ARW.Model/Dto/Business/OrderManage/Orders/OrderChangePriceDto.cs @@ -0,0 +1,24 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel.DataAnnotations; +using ARW.Model.Models.Business.OrderManage.Orders; + +namespace ARW.Model.Dto.Business.OrderManage.Orders +{ + /// + /// 订单改价输入对象 + /// + /// @author lwh + /// @date 2023-08-29 + /// + public class OrderChangePriceDto + { + public long OrderGuid { get; set; } + + public decimal OrderAmount { get; set; } + + public decimal ExpressPrice { get; set; } + + } + +} diff --git a/ARW.Model/Dto/Business/OrderManage/Orders/OrderDeliverDto.cs b/ARW.Model/Dto/Business/OrderManage/Orders/OrderDeliverDto.cs new file mode 100644 index 0000000..2f7124c --- /dev/null +++ b/ARW.Model/Dto/Business/OrderManage/Orders/OrderDeliverDto.cs @@ -0,0 +1,26 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel.DataAnnotations; +using ARW.Model.Models.Business.OrderManage.Orders; + +namespace ARW.Model.Dto.Business.OrderManage.Orders +{ + /// + /// 订单发货输入对象 + /// + /// @author lwh + /// @date 2023-08-29 + /// + public class OrderDeliverDto + { + public long OrderGuid { get; set; } + + public long? LogisticsCompanyGuid { get; set; } + + public string LogisticsCompany { get; set; } + + public string LogisticsTrackingNumber { get; set; } + + } + +} diff --git a/ARW.Model/Dto/Business/OrderManage/Orders/OrderDto.cs b/ARW.Model/Dto/Business/OrderManage/Orders/OrderDto.cs index c9ccf26..3621274 100644 --- a/ARW.Model/Dto/Business/OrderManage/Orders/OrderDto.cs +++ b/ARW.Model/Dto/Business/OrderManage/Orders/OrderDto.cs @@ -113,7 +113,7 @@ namespace ARW.Model.Dto.Business.OrderManage.Orders /// @author lwh /// @date 2023-08-29 /// - public class OrderQueryDto : PagerInfo + public class OrderQueryDto : PagerInfo { public string OrderNumber { get; set; } @@ -131,11 +131,15 @@ namespace ARW.Model.Dto.Business.OrderManage.Orders public int? ReceiptStatus { get; set; } public int? OrderStatus { get; set; } - + public string ids { get; set; } } + public class OrderDetailDto + { + public int OrderId { get; set; } + } } diff --git a/ARW.Model/Models/Business/GoodsManager/Goodss/Goods.cs b/ARW.Model/Models/Business/GoodsManager/Goodss/Goods.cs index bb77dce..d667d81 100644 --- a/ARW.Model/Models/Business/GoodsManager/Goodss/Goods.cs +++ b/ARW.Model/Models/Business/GoodsManager/Goodss/Goods.cs @@ -154,6 +154,13 @@ namespace ARW.Model.Models.Business.GoodsManager.Goodss [SugarColumn(ColumnName = "goods_price_highest")] public decimal GoodsPriceHighest { get; set; } + /// + /// 描述 :商品重量 + /// 空值 : false + /// + [EpplusTableColumn(Header = "商品重量")] + [SugarColumn(ColumnName = "goods_weight")] + public decimal GoodsWeight { get; set; } /// /// 描述 :划线价格(最低) diff --git a/ARW.Model/Vo/Api/OrderManage/Orders/OrderApiVo.cs b/ARW.Model/Vo/Api/OrderManage/Orders/OrderApiVo.cs new file mode 100644 index 0000000..fe96c6a --- /dev/null +++ b/ARW.Model/Vo/Api/OrderManage/Orders/OrderApiVo.cs @@ -0,0 +1,348 @@ +using Newtonsoft.Json; +using OfficeOpenXml.Attributes; +using SqlSugar; +using System; + +namespace ARW.Model.Vo.Api.OrderManage.Orders +{ + /// + /// 订单展示对象Api + /// + /// @author lwh + /// @date 2023-09-01 + /// + public class OrderVoApi + { + + + /// + /// 描述 : + /// + [EpplusIgnore] + public int OrderId { get; set; } + + + /// + /// 描述 : + /// + [JsonConverter(typeof(ValueToStringConverter))] + [EpplusIgnore] + public long OrderGuid { get; set; } + + + /// + /// 描述 :商品guid + /// + [JsonConverter(typeof(ValueToStringConverter))] + [EpplusTableColumn(Header = "商品guid")] + public long GoodsGuid { get; set; } + + + /// + /// 描述 :订单流水guid + /// + [JsonConverter(typeof(ValueToStringConverter))] + [EpplusTableColumn(Header = "订单流水guid")] + public long PaymentGuid { get; set; } + + + /// + /// 描述 :客户guid + /// + [JsonConverter(typeof(ValueToStringConverter))] + [EpplusTableColumn(Header = "客户guid")] + public long CustomerGuid { get; set; } + + + /// + /// 描述 :店铺guid + /// + [JsonConverter(typeof(ValueToStringConverter))] + [EpplusIgnore] + public long? ShopGuid { get; set; } + + + /// + /// 描述 :订单号 + /// + [EpplusTableColumn(Header = "订单号")] + public string OrderNumber { get; set; } + + + /// + /// 描述 :商品总金额 + /// + [EpplusTableColumn(Header = "商品总金额")] + public decimal GoodsTotalAmoun { get; set; } + + + /// + /// 描述 :订单金额 + /// + [EpplusTableColumn(Header = "订单金额")] + public decimal OrderAmount { get; set; } + + + /// + /// 描述 :优惠券guid + /// + [JsonConverter(typeof(ValueToStringConverter))] + [EpplusIgnore] + public long? CouponGuid { get; set; } + + + /// + /// 描述 :优惠券抵扣金额 + /// + [EpplusIgnore] + public decimal CouponMoney { get; set; } + + + /// + /// 描述 :积分抵扣金额 + /// + [EpplusIgnore] + public decimal PointsMoney { get; set; } + + + /// + /// 描述 :积分抵扣数量 + /// + [EpplusIgnore] + public decimal PointsNum { get; set; } + + + /// + /// 描述 :实际付款金额(包含运费) + /// + [EpplusTableColumn(Header = "实际付款金额(包含运费)")] + public decimal PayPrice { get; set; } + + + /// + /// 描述 :后台修改的订单金额(差价) + /// + [EpplusIgnore] + public decimal UpdatePrice { get; set; } + + + /// + /// 描述 :买家留言 + /// + [EpplusIgnore] + public string OrderRemark { get; set; } + + + /// + /// 描述 :支付方式(1微信支付 2余额支付) + /// + [EpplusTableColumn(Header = "支付方式(1微信支付 2余额支付)")] + public int PayType { get; set; } + + + /// + /// 描述 :付款状态(1未付款 2已付款) + /// + [EpplusTableColumn(Header = "付款状态(1未付款 2已付款)")] + public int PayStatus { get; set; } + + + /// + /// 描述 :付款时间 + /// + [EpplusTableColumn(Header = "付款时间", NumberFormat = "yyyy-MM-dd HH:mm:ss")] + public DateTime? PayTime { get; set; } + + + /// + /// 描述 :配送方式(1快递配送) + /// + [EpplusTableColumn(Header = "配送方式(1快递配送)")] + public int DeliveryType { get; set; } + + + /// + /// 描述 :运费金额 + /// + [EpplusTableColumn(Header = "运费金额")] + public decimal ExpressPrice { get; set; } + + + /// + /// 描述 :物流公司guid + /// + [JsonConverter(typeof(ValueToStringConverter))] + [EpplusIgnore] + public long? LogisticsCompanyGuid { get; set; } + + + /// + /// 描述 :物流公司 + /// + [EpplusIgnore] + public string LogisticsCompany { get; set; } + + + /// + /// 描述 :物流单号 + /// + [EpplusIgnore] + public string LogisticsTrackingNumber { get; set; } + + + /// + /// 描述 :发货状态(1未发货 2已发货) + /// + [EpplusTableColumn(Header = "发货状态(1未发货 2已发货)")] + public int DeliveryStatus { get; set; } + + + /// + /// 描述 :发货时间 + /// + [EpplusIgnore] + public DateTime? DeliveryTime { get; set; } + + + /// + /// 描述 :收货状态(1未收货 2已收货) + /// + [EpplusTableColumn(Header = "收货状态(1未收货 2已收货)")] + public int ReceiptStatus { get; set; } + + + /// + /// 描述 :收货时间 + /// + [EpplusIgnore] + public DateTime? ReceiptTime { get; set; } + + + /// + /// 描述 :订单状态(1进行中 2取消 3待取消 4已完成) + /// + [EpplusTableColumn(Header = "订单状态(1进行中 2取消 3待取消 4已完成)")] + public int OrderStatus { get; set; } + + + /// + /// 描述 :赠送的积分数量 + /// + [EpplusIgnore] + public decimal PointsBonus { get; set; } + + + /// + /// 描述 :订单是否已结算(1未结算 2已结算) + /// + [EpplusTableColumn(Header = "订单是否已结算(1未结算 2已结算)")] + public int IsSettled { get; set; } + + + /// + /// 描述 :微信支付交易号 + /// + [EpplusIgnore] + public string TransactionId { get; set; } + + + /// + /// 描述 :是否已评价(1否 2是) + /// + [EpplusTableColumn(Header = "是否已评价(1否 2是)")] + public int IsComment { get; set; } + + + /// + /// 描述 :订单来源(1普通订单) + /// + [EpplusTableColumn(Header = "订单来源(1普通订单)")] + public int OrderSource { get; set; } + + } + + + /// + /// 订单详情展示对象Api + /// + public class OrderApiDetailsVo + { + [EpplusIgnore] + public int OrderId { get; set; } + [JsonConverter(typeof(ValueToStringConverter))] + [EpplusIgnore] + public long OrderGuid { get; set; } + [JsonConverter(typeof(ValueToStringConverter))] + [EpplusTableColumn(Header = "商品guid")] + public long GoodsGuid { get; set; } + [JsonConverter(typeof(ValueToStringConverter))] + [EpplusTableColumn(Header = "订单流水guid")] + public long PaymentGuid { get; set; } + [JsonConverter(typeof(ValueToStringConverter))] + [EpplusTableColumn(Header = "客户guid")] + public long CustomerGuid { get; set; } + [JsonConverter(typeof(ValueToStringConverter))] + [EpplusIgnore] + public long? ShopGuid { get; set; } + [EpplusTableColumn(Header = "订单号")] + public string OrderNumber { get; set; } + [EpplusTableColumn(Header = "商品总金额")] + public decimal GoodsTotalAmoun { get; set; } + [EpplusTableColumn(Header = "订单金额")] + public decimal OrderAmount { get; set; } + [JsonConverter(typeof(ValueToStringConverter))] + [EpplusIgnore] + public long? CouponGuid { get; set; } + [EpplusIgnore] + public decimal CouponMoney { get; set; } + [EpplusIgnore] + public decimal PointsMoney { get; set; } + [EpplusIgnore] + public decimal PointsNum { get; set; } + [EpplusTableColumn(Header = "实际付款金额(包含运费)")] + public decimal PayPrice { get; set; } + [EpplusIgnore] + public decimal UpdatePrice { get; set; } + [EpplusIgnore] + public string OrderRemark { get; set; } + [EpplusTableColumn(Header = "支付方式(1微信支付 2余额支付)")] + public int PayType { get; set; } + [EpplusTableColumn(Header = "付款状态(1未付款 2已付款)")] + public int PayStatus { get; set; } + [EpplusTableColumn(Header = "付款时间", NumberFormat = "yyyy-MM-dd HH:mm:ss")] + public DateTime? PayTime { get; set; } + [EpplusTableColumn(Header = "配送方式(1快递配送)")] + public int DeliveryType { get; set; } + [EpplusTableColumn(Header = "运费金额")] + public decimal ExpressPrice { get; set; } + [JsonConverter(typeof(ValueToStringConverter))] + [EpplusIgnore] + public long? LogisticsCompanyGuid { get; set; } + [EpplusIgnore] + public string LogisticsCompany { get; set; } + [EpplusIgnore] + public string LogisticsTrackingNumber { get; set; } + [EpplusTableColumn(Header = "发货状态(1未发货 2已发货)")] + public int DeliveryStatus { get; set; } + [EpplusIgnore] + public DateTime? DeliveryTime { get; set; } + [EpplusTableColumn(Header = "收货状态(1未收货 2已收货)")] + public int ReceiptStatus { get; set; } + [EpplusIgnore] + public DateTime? ReceiptTime { get; set; } + [EpplusTableColumn(Header = "订单状态(1进行中 2取消 3待取消 4已完成)")] + public int OrderStatus { get; set; } + [EpplusIgnore] + public decimal PointsBonus { get; set; } + [EpplusTableColumn(Header = "订单是否已结算(1未结算 2已结算)")] + public int IsSettled { get; set; } + [EpplusIgnore] + public string TransactionId { get; set; } + [EpplusTableColumn(Header = "是否已评价(1否 2是)")] + public int IsComment { get; set; } + [EpplusTableColumn(Header = "订单来源(1普通订单)")] + public int OrderSource { get; set; } + + } + +} diff --git a/ARW.Model/Vo/Business/GoodsManager/Goodss/GoodsVo.cs b/ARW.Model/Vo/Business/GoodsManager/Goodss/GoodsVo.cs index 8a08b10..36e895e 100644 --- a/ARW.Model/Vo/Business/GoodsManager/Goodss/GoodsVo.cs +++ b/ARW.Model/Vo/Business/GoodsManager/Goodss/GoodsVo.cs @@ -122,6 +122,13 @@ namespace ARW.Model.Vo.Business.GoodsManager.Goodss [EpplusTableColumn(Header = "商品图片")] public string GoodsPicture { get; set; } + /// + /// 描述 :商品重量 + /// 空值 : false + /// + [EpplusTableColumn(Header = "商品重量")] + public decimal GoodsWeight { get; set; } + /// /// 描述 :价格(最低) diff --git a/ARW.Model/Vo/Business/OrderManage/Orders/OrderDetailVo.cs b/ARW.Model/Vo/Business/OrderManage/Orders/OrderDetailVo.cs new file mode 100644 index 0000000..c6b2b78 --- /dev/null +++ b/ARW.Model/Vo/Business/OrderManage/Orders/OrderDetailVo.cs @@ -0,0 +1,140 @@ +using Newtonsoft.Json; +using OfficeOpenXml.Attributes; +using SqlSugar; +using System; +using System.Collections.Generic; + +namespace ARW.Model.Vo.Business.OrderManage.Orders +{ + /// + /// 订单详情展示对象Api + /// + public class OrderDetailsVo + { + public int OrderId { get; set; } + + [JsonConverter(typeof(ValueToStringConverter))] + public long OrderGuid { get; set; } + + public string CustomerPhone { get; set; } + + [EpplusTableColumn(Header = "订单号")] + public string OrderNumber { get; set; } + + [EpplusTableColumn(Header = "商品总金额")] + public decimal GoodsTotalAmoun { get; set; } + + [EpplusTableColumn(Header = "订单金额")] + public decimal OrderAmount { get; set; } + + [JsonConverter(typeof(ValueToStringConverter))] + public long? CouponGuid { get; set; } + + [EpplusIgnore] + public decimal CouponMoney { get; set; } + + [EpplusIgnore] + public decimal PointsMoney { get; set; } + + [EpplusIgnore] + public decimal PointsNum { get; set; } + + [EpplusTableColumn(Header = "实际付款金额(包含运费)")] + public decimal PayPrice { get; set; } + + [EpplusIgnore] + public decimal UpdatePrice { get; set; } + + [EpplusIgnore] + public string OrderRemark { get; set; } + + [EpplusTableColumn(Header = "支付方式(1微信支付 2余额支付)")] + public int PayType { get; set; } + + [EpplusTableColumn(Header = "付款状态(1未付款 2已付款)")] + public int PayStatus { get; set; } + + [EpplusTableColumn(Header = "付款时间", NumberFormat = "yyyy-MM-dd HH:mm:ss")] + public DateTime? PayTime { get; set; } + + + [EpplusTableColumn(Header = "配送方式(1快递配送)")] + public int DeliveryType { get; set; } + + + [EpplusTableColumn(Header = "运费金额")] + public decimal ExpressPrice { get; set; } + + + [JsonConverter(typeof(ValueToStringConverter))] + [EpplusIgnore] + public long? LogisticsCompanyGuid { get; set; } + + + [EpplusIgnore] + public string LogisticsCompany { get; set; } + + + [EpplusIgnore] + public string LogisticsTrackingNumber { get; set; } + + + [EpplusTableColumn(Header = "发货状态(1未发货 2已发货)")] + public int DeliveryStatus { get; set; } + + + [EpplusIgnore] + public DateTime? DeliveryTime { get; set; } + + + [EpplusTableColumn(Header = "收货状态(1未收货 2已收货)")] + public int ReceiptStatus { get; set; } + + + [EpplusIgnore] + public DateTime? ReceiptTime { get; set; } + + + [EpplusTableColumn(Header = "订单状态(1进行中 2取消 3待取消 4已完成)")] + public int OrderStatus { get; set; } + + + [EpplusIgnore] + public decimal PointsBonus { get; set; } + + + [EpplusTableColumn(Header = "订单是否已结算(1未结算 2已结算)")] + public int IsSettled { get; set; } + + + [EpplusIgnore] + public string TransactionId { get; set; } + + + [EpplusTableColumn(Header = "是否已评价(1否 2是)")] + public int IsComment { get; set; } + + + [EpplusTableColumn(Header = "订单来源(1普通订单)")] + public int OrderSource { get; set; } + + + /// + /// 下单时间 + /// + public DateTime CreateTime { get; set; } + + /// + /// 商品信息 + /// + public List GoodsInfoList { get; set; } + + + /// + /// 收货信息 + /// + public OrderReceiveVo OrderReceive { get; set; } + + } + +} diff --git a/ARW.Model/Vo/Business/OrderManage/Orders/OrderGoodsVo.cs b/ARW.Model/Vo/Business/OrderManage/Orders/OrderGoodsVo.cs index 83ab388..ce22fdb 100644 --- a/ARW.Model/Vo/Business/OrderManage/Orders/OrderGoodsVo.cs +++ b/ARW.Model/Vo/Business/OrderManage/Orders/OrderGoodsVo.cs @@ -31,6 +31,10 @@ namespace ARW.Model.Vo.Business.OrderManage.Orders /// public string GoodsSpecName { get; set; } + /// + /// 描述 :编码 + /// + public string GoodsCoding { get; set; } /// /// 商品单价 @@ -43,5 +47,14 @@ namespace ARW.Model.Vo.Business.OrderManage.Orders /// public int GoodsTotalNum { get; set; } + /// + /// 商品总价 + /// + public decimal GoodsTotalPrice { get; set; } + + /// + /// 商品重量 + /// + public decimal GoodsWeight { get; set;} } } diff --git a/ARW.Model/Vo/Business/OrderManage/Orders/OrderReceiveVo.cs b/ARW.Model/Vo/Business/OrderManage/Orders/OrderReceiveVo.cs new file mode 100644 index 0000000..3df280c --- /dev/null +++ b/ARW.Model/Vo/Business/OrderManage/Orders/OrderReceiveVo.cs @@ -0,0 +1,40 @@ +using Newtonsoft.Json; +using OfficeOpenXml.Attributes; +using SqlSugar; +using System; + +namespace ARW.Model.Vo.Business.OrderManage.Orders +{ + /// + /// 订单展示对象 + /// + /// @author lwh + /// @date 2023-09-03 + /// + public class OrderReceiveVo + { + + /// + /// 描述 :收货人姓名 + /// + public string ConsigneeName { get; set; } + + + /// + /// 描述 :联系电话 + /// + public string Phone { get; set; } + + + /// + /// 地区 + /// + public string Region { get; set; } + + /// + /// 描述 :详细地址 + /// + public string Detail { get; set; } + + } +} diff --git a/ARW.Service/Api/BusinessService/GoodsManager/Goodss/GoodsServiceApi.cs b/ARW.Service/Api/BusinessService/GoodsManager/Goodss/GoodsServiceApi.cs index 704c10b..01e3736 100644 --- a/ARW.Service/Api/BusinessService/GoodsManager/Goodss/GoodsServiceApi.cs +++ b/ARW.Service/Api/BusinessService/GoodsManager/Goodss/GoodsServiceApi.cs @@ -21,6 +21,7 @@ using ARW.Repository.Business.GoodsManager.GoodsSpecs.GoodsSkus; using ARW.Model.Models.Business.GoodsManager.GoodsCategorys; using ARW.Repository.Business.GoodsManager.GoodsCategorys; using System; +using ARW.Common; namespace ARW.Service.Api.BusinessService.GoodsManager.Goodss { diff --git a/ARW.Service/Api/BusinessService/OrderManage/Orders/OrderServiceApi.cs b/ARW.Service/Api/BusinessService/OrderManage/Orders/OrderServiceApi.cs new file mode 100644 index 0000000..505af8b --- /dev/null +++ b/ARW.Service/Api/BusinessService/OrderManage/Orders/OrderServiceApi.cs @@ -0,0 +1,155 @@ +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 ARW.Model; +using ARW.Repository; +using ARW.Repository.Business.OrderManage.Orders; +using ARW.Service.Api.IBusinessService.OrderManage.Orders; +using ARW.Model.Dto.Api.OrderManage.Orders; +using ARW.Model.Models.Business.OrderManage.Orders; +using ARW.Model.Vo.Api.OrderManage.Orders; + +namespace ARW.Service.Api.BusinessService.OrderManage.Orders +{ + /// + /// 订单接口实现类Api + /// + /// @author lwh + /// @date 2023-09-01 + /// + [AppService(ServiceType = typeof(IOrderServiceApi), ServiceLifetime = LifeTime.Transient)] + public class OrderServiceImplApi : BaseService, IOrderServiceApi + { + private readonly OrderRepository _OrderRepository; + + public OrderServiceImplApi(OrderRepository OrderRepository) + { + this._OrderRepository = OrderRepository; + } + + #region Api接口代码 + + + /// + /// 查询订单列表(Api) + /// + /// + /// + public async Task> GetOrderListApi(OrderQueryDtoApi parm) + { + //开始拼装查询条件d + var predicate = Expressionable.Create(); + + predicate = predicate.AndIF(!string.IsNullOrEmpty(parm.OrderNumber), s => s.OrderNumber.Contains(parm.OrderNumber)); + predicate = predicate.AndIF(parm.PayType != null, s => s.PayType == parm.PayType); + predicate = predicate.AndIF(parm.PayStatus != null, s => s.PayStatus == parm.PayStatus); + predicate = predicate.AndIF(parm.DeliveryType != null, s => s.DeliveryType == parm.DeliveryType); + predicate = predicate.AndIF(!string.IsNullOrEmpty(parm.LogisticsTrackingNumber), s => s.LogisticsTrackingNumber.Contains(parm.LogisticsTrackingNumber)); + predicate = predicate.AndIF(parm.DeliveryStatus != null, s => s.DeliveryStatus == parm.DeliveryStatus); + predicate = predicate.AndIF(parm.ReceiptStatus != null, s => s.ReceiptStatus == parm.ReceiptStatus); + predicate = predicate.AndIF(parm.OrderStatus != null, s => s.OrderStatus == parm.OrderStatus); + var query = _OrderRepository + .Queryable() + .Where(predicate.ToExpression()) + .OrderBy(s => s.Create_time, OrderByType.Desc) + .Select(s => new OrderVoApi + { + OrderId = s.OrderId, + OrderGuid = s.OrderGuid, + PaymentGuid = s.PaymentGuid, + CustomerGuid = s.CustomerGuid, + OrderNumber = s.OrderNumber, + GoodsTotalAmoun = s.GoodsTotalAmoun, + OrderAmount = s.OrderAmount, + CouponGuid = s.CouponGuid, + CouponMoney = s.CouponMoney, + PointsMoney = s.PointsMoney, + PointsNum = s.PointsNum, + PayPrice = s.PayPrice, + UpdatePrice = s.UpdatePrice, + OrderRemark = s.OrderRemark, + PayType = s.PayType, + PayStatus = s.PayStatus, + PayTime = s.PayTime, + DeliveryType = s.DeliveryType, + ExpressPrice = s.ExpressPrice, + LogisticsCompanyGuid = s.LogisticsCompanyGuid, + LogisticsCompany = s.LogisticsCompany, + LogisticsTrackingNumber = s.LogisticsTrackingNumber, + DeliveryStatus = s.DeliveryStatus, + DeliveryTime = s.DeliveryTime, + ReceiptStatus = s.ReceiptStatus, + ReceiptTime = s.ReceiptTime, + OrderStatus = s.OrderStatus, + PointsBonus = s.PointsBonus, + IsSettled = s.IsSettled, + TransactionId = s.TransactionId, + IsComment = s.IsComment, + OrderSource = s.OrderSource, + }); + + + return await query.ToPageAsync(parm); + } + + /// + /// 查询订单详情(Api) + /// + /// + /// + public async Task GetOrderDetails(OrderDtoApi parm) + { + + var query = _OrderRepository + .Queryable() + .Where(s => s.OrderGuid == parm.OrderGuid) + .Select(s => new OrderApiDetailsVo + { + OrderId = s.OrderId, + OrderGuid = s.OrderGuid, + PaymentGuid = s.PaymentGuid, + CustomerGuid = s.CustomerGuid, + OrderNumber = s.OrderNumber, + GoodsTotalAmoun = s.GoodsTotalAmoun, + OrderAmount = s.OrderAmount, + CouponGuid = s.CouponGuid, + CouponMoney = s.CouponMoney, + PointsMoney = s.PointsMoney, + PointsNum = s.PointsNum, + PayPrice = s.PayPrice, + UpdatePrice = s.UpdatePrice, + OrderRemark = s.OrderRemark, + PayType = s.PayType, + PayStatus = s.PayStatus, + PayTime = s.PayTime, + DeliveryType = s.DeliveryType, + ExpressPrice = s.ExpressPrice, + LogisticsCompanyGuid = s.LogisticsCompanyGuid, + LogisticsCompany = s.LogisticsCompany, + LogisticsTrackingNumber = s.LogisticsTrackingNumber, + DeliveryStatus = s.DeliveryStatus, + DeliveryTime = s.DeliveryTime, + ReceiptStatus = s.ReceiptStatus, + ReceiptTime = s.ReceiptTime, + OrderStatus = s.OrderStatus, + PointsBonus = s.PointsBonus, + IsSettled = s.IsSettled, + TransactionId = s.TransactionId, + IsComment = s.IsComment, + OrderSource = s.OrderSource, + }).Take(1); + + + return await query.ToJsonAsync(); + } + + + #endregion + + } +} diff --git a/ARW.Service/Api/IBusinessService/OrderManage/Orders/IOrderServiceApi.cs b/ARW.Service/Api/IBusinessService/OrderManage/Orders/IOrderServiceApi.cs new file mode 100644 index 0000000..6658f23 --- /dev/null +++ b/ARW.Service/Api/IBusinessService/OrderManage/Orders/IOrderServiceApi.cs @@ -0,0 +1,36 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using ARW.Model; +using ARW.Model.Dto.Api.OrderManage.Orders; +using ARW.Model.Models.Business.OrderManage.Orders; +using ARW.Model.Vo.Api.OrderManage.Orders; + +namespace ARW.Service.Api.IBusinessService.OrderManage.Orders +{ + /// + /// 订单接口类Api + /// + /// @author lwh + /// @date 2023-09-01 + /// + public interface IOrderServiceApi : IBaseService + { + /// + /// 获取订单分页列表(Api) + /// + /// + /// + Task> GetOrderListApi(OrderQueryDtoApi parm); + + /// + /// 获取订单详情(Api) + /// + /// + /// + Task GetOrderDetails(OrderDtoApi parm); + + } +} diff --git a/ARW.Service/Business/BusinessService/Custom/Regions/RegionService.cs b/ARW.Service/Business/BusinessService/Custom/Regions/RegionService.cs index be84c5a..6080adb 100644 --- a/ARW.Service/Business/BusinessService/Custom/Regions/RegionService.cs +++ b/ARW.Service/Business/BusinessService/Custom/Regions/RegionService.cs @@ -162,6 +162,27 @@ namespace ARW.Service.Business.BusinessService.Custom.Regions + /// + /// 获取省市区完整名称 + /// + /// 省id + /// 市id + /// 区id + /// + public async Task GetRegionFullName(int provinceId, int cityId, int regionId) + { + var regionName = ""; + var province = await _RegionRepository.GetFirstAsync(s => s.RegionId == provinceId); + regionName += province.RegionName; + var city = await _RegionRepository.GetFirstAsync(s => s.RegionId == cityId); + regionName += city.RegionName; + var region = await _RegionRepository.GetFirstAsync(s => s.RegionId == regionId); + regionName += region.RegionName; + + return regionName; + } + + #region Excel处理 diff --git a/ARW.Service/Business/BusinessService/GoodsManager/Goodss/GoodsService.cs b/ARW.Service/Business/BusinessService/GoodsManager/Goodss/GoodsService.cs index d2f64a0..9f67a40 100644 --- a/ARW.Service/Business/BusinessService/GoodsManager/Goodss/GoodsService.cs +++ b/ARW.Service/Business/BusinessService/GoodsManager/Goodss/GoodsService.cs @@ -157,6 +157,7 @@ namespace ARW.Service.Business.BusinessService.GoodsManager.Goodss GoodsAloneGradeEquity = s.GoodsAloneGradeEquity, GoodsShelfStatus = s.GoodsShelfStatus, GoodsSort = s.GoodsSort, + GoodsWeight = s.GoodsWeight, CreateTime = s.Create_time.ToString("yyyy-MM-dd HH:mm") }); diff --git a/ARW.Service/Business/BusinessService/OrderManage/Orders/OrderService.cs b/ARW.Service/Business/BusinessService/OrderManage/Orders/OrderService.cs index aa2b03d..42f2864 100644 --- a/ARW.Service/Business/BusinessService/OrderManage/Orders/OrderService.cs +++ b/ARW.Service/Business/BusinessService/OrderManage/Orders/OrderService.cs @@ -20,6 +20,15 @@ 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; +using ARW.Model.Dto.Api.OrderManage.Orders; +using ARW.Model.Vo.Api.OrderManage.Orders; +using Aliyun.OSS; +using Senparc.Weixin.WxOpen.AdvancedAPIs.WxApp.WxAppJson; +using ARW.Common; +using Org.BouncyCastle.Crypto.Prng; +using Senparc.CO2NET.Extensions; +using ARW.Repository.Business.OrderManage.OrderCustomerAddreses; +using ARW.Service.Business.IBusinessService.Custom.Regions; namespace ARW.Service.Business.BusinessService.OrderManage.Orders { @@ -34,15 +43,19 @@ namespace ARW.Service.Business.BusinessService.OrderManage.Orders { private readonly OrderRepository _OrderRepository; private readonly OrderGoodsRepository _OrderGoodsRepository; + private readonly OrderCustomerAddressRepository _OrderCustomerAddressRepository; private readonly GoodsRepository _GoodsRepository; private readonly IGoodsSkuService _GoodsSkuService; + private readonly IRegionService _RegionService; - public OrderServiceImpl(OrderRepository OrderRepository, GoodsRepository goodsRepository, IGoodsSkuService goodsSkuService, OrderGoodsRepository orderGoodsRepository) + public OrderServiceImpl(OrderRepository OrderRepository, GoodsRepository goodsRepository, IGoodsSkuService goodsSkuService, OrderGoodsRepository orderGoodsRepository, OrderCustomerAddressRepository orderCustomerAddressRepository, IRegionService regionService) { this._OrderRepository = OrderRepository; _GoodsRepository = goodsRepository; _GoodsSkuService = goodsSkuService; _OrderGoodsRepository = orderGoodsRepository; + _OrderCustomerAddressRepository = orderCustomerAddressRepository; + _RegionService = regionService; } #region 业务逻辑代码 @@ -94,32 +107,8 @@ namespace ARW.Service.Business.BusinessService.OrderManage.Orders foreach (var item in list.Result) { - // 获取商品信息 - 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); - } - - + // 获取订单商品信息 + item.GoodsInfoList = await GetOrderGoodsList(item.OrderGuid); } @@ -127,6 +116,147 @@ namespace ARW.Service.Business.BusinessService.OrderManage.Orders } + /// + /// 查询订单详情 + /// + /// + /// + public async Task GetOrderDetails(OrderDetailDto parm) + { + + var query = _OrderRepository + .Queryable() + .LeftJoin((s, c) => s.CustomerGuid == c.CustomerGuid) + .Where(s => s.OrderId == parm.OrderId) + .Select((s, c) => new OrderDetailsVo + { + OrderId = s.OrderId, + OrderGuid = s.OrderGuid, + CustomerPhone = c.CustomerMobilePhoneNumber, + OrderNumber = s.OrderNumber, + GoodsTotalAmoun = s.GoodsTotalAmoun, + OrderAmount = s.OrderAmount, + CouponGuid = s.CouponGuid, + CouponMoney = s.CouponMoney, + PointsMoney = s.PointsMoney, + PointsNum = s.PointsNum, + PayPrice = s.PayPrice, + UpdatePrice = s.UpdatePrice, + OrderRemark = s.OrderRemark, + PayType = s.PayType, + PayStatus = s.PayStatus, + PayTime = s.PayTime, + DeliveryType = s.DeliveryType, + ExpressPrice = s.ExpressPrice, + LogisticsCompanyGuid = s.LogisticsCompanyGuid, + LogisticsCompany = s.LogisticsCompany, + LogisticsTrackingNumber = s.LogisticsTrackingNumber, + DeliveryStatus = s.DeliveryStatus, + DeliveryTime = s.DeliveryTime, + ReceiptStatus = s.ReceiptStatus, + ReceiptTime = s.ReceiptTime, + OrderStatus = s.OrderStatus, + PointsBonus = s.PointsBonus, + IsSettled = s.IsSettled, + TransactionId = s.TransactionId, + IsComment = s.IsComment, + OrderSource = s.OrderSource, + CreateTime = s.Create_time + }).Take(1); + + var json = await query.ToJsonAsync(); + if (json != "[]") + { + var data = Tools.JsonToVo(json); + data.GoodsInfoList = await GetOrderGoodsList(data.OrderGuid); + data.OrderReceive = await GetOrderReceive(data.OrderGuid); + + json = data.ToJson(); + } + + return json; + } + + + + /// + /// 发货 + /// + /// + public async Task Deliver(OrderDeliverDto parm) + { + var isUpdate = await _OrderRepository.UpdateAsync(s => new Order + { + LogisticsCompanyGuid = parm.LogisticsCompanyGuid, + LogisticsCompany = parm.LogisticsCompany, + LogisticsTrackingNumber = parm.LogisticsTrackingNumber, + DeliveryStatus = 2, + DeliveryTime = DateTime.Now, + Update_time = DateTime.Now + }, f => f.OrderGuid == parm.OrderGuid); + + if (isUpdate) + return "发货成功"; + else + throw new CustomException("发货失败"); + + } + + + /// + /// 订单改价 + /// + /// + public async Task ChangePrice(OrderChangePriceDto parm) + { + var isUpdate = await _OrderRepository.UpdateAsync(s => new Order + { + UpdatePrice = parm.ExpressPrice + parm.OrderAmount, + Update_time = DateTime.Now + }, f => f.OrderGuid == parm.OrderGuid); + + if (isUpdate) + return "改价成功"; + else + throw new CustomException("改价失败"); + + } + + + /// + /// 审核取消订单 + /// + /// + public async Task CancelOrder(OrderCancelOrderDto parm) + { + if (parm.IsAgree) + { + var isUpdate = await _OrderRepository.UpdateAsync(s => new Order + { + OrderStatus = 2, + Update_time = DateTime.Now + }, f => f.OrderGuid == parm.OrderGuid); + + if (isUpdate) + return "通过申请成功"; + else + throw new CustomException("通过申请失败"); + } + else + { + var isUpdate = await _OrderRepository.UpdateAsync(s => new Order + { + OrderStatus = 1, + Update_time = DateTime.Now + }, f => f.OrderGuid == parm.OrderGuid); + + if (isUpdate) + return "拒绝申请成功"; + else + throw new CustomException("拒绝申请失败"); + } + + } /// @@ -161,6 +291,73 @@ namespace ARW.Service.Business.BusinessService.OrderManage.Orders #endregion + #region 封装方法 + + /// + /// 获取商品订单列表 + /// + /// 订单guid + /// + /// + public async Task> GetOrderGoodsList(long orderGuid) + { + var goodsInfoList = new List(); + + var orderGoodsList = await _OrderGoodsRepository.GetListAsync(s => s.OrderGuid == 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; + 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; + orderGoodsInfo.GoodsCoding = goods.GoodsCoding; + } + else + { + orderGoodsInfo.GoodsPrice = goods.GoodsPriceHighest; + orderGoodsInfo.GoodsWeight = goods.GoodsWeight; + } + orderGoodsInfo.GoodsTotalPrice = orderGoodsInfo.GoodsPrice * orderGoodsInfo.GoodsTotalNum; + + goodsInfoList.Add(orderGoodsInfo); + } + + return goodsInfoList; + } + + + /// + /// 获取收货信息 + /// + /// + /// + public async Task GetOrderReceive(long orderGuid) + { + var orderReceive = new OrderReceiveVo(); + var receive = await _OrderCustomerAddressRepository.GetFirstAsync(s => s.OrderGuid == orderGuid); + if (receive != null) + { + orderReceive.ConsigneeName = receive.ConsigneeName; + orderReceive.Phone = receive.Phont; + orderReceive.Detail = receive.Detail; + + // 获取地区名称 + orderReceive.Region = await _RegionService.GetRegionFullName(receive.ProvinceId, receive.CityId, receive.RegionId); + } + + return orderReceive; + } + + #endregion #endregion diff --git a/ARW.Service/Business/IBusinessService/Custom/Regions/IRegionService.cs b/ARW.Service/Business/IBusinessService/Custom/Regions/IRegionService.cs index bf9ea00..3168d0a 100644 --- a/ARW.Service/Business/IBusinessService/Custom/Regions/IRegionService.cs +++ b/ARW.Service/Business/IBusinessService/Custom/Regions/IRegionService.cs @@ -33,8 +33,8 @@ namespace ARW.Service.Business.IBusinessService.Custom.Regions /// Task> GetRegionList(RegionQueryDto parm); - - /// + + /// /// 添加或修改省市区数据表 /// /// @@ -54,7 +54,12 @@ namespace ARW.Service.Business.IBusinessService.Custom.Regions /// /// 省市区编码 /// - Task GetRegionId(string RegionCode,int level); + Task GetRegionId(string RegionCode, int level); + /// + /// 获取省市区完整名称 + /// + /// + Task GetRegionFullName(int provinceId, int CityId, int regionId); } } diff --git a/ARW.Service/Business/IBusinessService/OrderManage/Orders/IOrderService.cs b/ARW.Service/Business/IBusinessService/OrderManage/Orders/IOrderService.cs index 791e534..b498322 100644 --- a/ARW.Service/Business/IBusinessService/OrderManage/Orders/IOrderService.cs +++ b/ARW.Service/Business/IBusinessService/OrderManage/Orders/IOrderService.cs @@ -4,6 +4,7 @@ using System.Linq; using System.Text; using System.Threading.Tasks; using ARW.Model; +using ARW.Model.Dto.Api.OrderManage.Orders; using ARW.Model.Dto.Business.OrderManage.Orders; using ARW.Model.Models.Business.OrderManage.Orders; using ARW.Model.Vo.Business.OrderManage.Orders; @@ -18,15 +19,23 @@ namespace ARW.Service.Business.IBusinessService.OrderManage.Orders /// public interface IOrderService : IBaseService { - /// + /// /// 获取订单分页列表 /// /// /// Task> GetOrderList(OrderQueryDto parm); - - /// + + /// + /// 获取订单详情(Api) + /// + /// + /// + Task GetOrderDetails(OrderDetailDto parm); + + + /// /// 添加或修改订单 /// /// @@ -34,6 +43,29 @@ namespace ARW.Service.Business.IBusinessService.OrderManage.Orders Task AddOrUpdateOrder(Order parm); + /// + /// 发货 + /// + /// + /// + Task Deliver(OrderDeliverDto parm); + + + /// + /// 订单改价 + /// + /// + /// + Task ChangePrice(OrderChangePriceDto parm); + + + /// + /// 审核取消订单 + /// + /// + /// + Task CancelOrder(OrderCancelOrderDto parm); + /// /// Excel导出 diff --git a/ARW.WebApi/Controllers/Api/OrderManage/Orders/OrderApiController.cs b/ARW.WebApi/Controllers/Api/OrderManage/Orders/OrderApiController.cs new file mode 100644 index 0000000..576cd15 --- /dev/null +++ b/ARW.WebApi/Controllers/Api/OrderManage/Orders/OrderApiController.cs @@ -0,0 +1,81 @@ +using Infrastructure; +using Infrastructure.Attribute; +using Infrastructure.Enums; +using Infrastructure.Model; +using Mapster; +using Microsoft.AspNetCore.Http; +using Microsoft.AspNetCore.Mvc; +using ARW.Admin.WebApi.Extensions; +using ARW.Admin.WebApi.Filters; +using ARW.Common; +using ARW.Admin.WebApi.Controllers; +using ARW.Model.Dto.Api.OrderManage.Orders; +using ARW.Service.Api.IBusinessService.OrderManage.Orders; +using ARW.Model.Models.Business.OrderManage.Orders; +using ARW.Model.Vo.Api.OrderManage.Orders; +using Microsoft.AspNetCore.Authorization; +using Geocoding; + +namespace ARW.WebApi.Controllers.Api.OrderManage.Orders +{ + /// + /// 订单控制器Api + /// + /// @author lwh + /// @date 2023-09-01 + /// + [Verify] + [Route("api/[controller]")] + public class OrderApiController : BaseController + { + private readonly IOrderServiceApi _OrderServiceApi; + + /// + /// 依赖注入 + /// + /// 订单订单Api服务 + public OrderApiController(IOrderServiceApi OrderServiceApi) + { + _OrderServiceApi = OrderServiceApi; + } + + + /// + /// 获取订单列表(Api) + /// + /// 查询参数 + /// + [HttpGet("getOrderList")] + public async Task GetOrderListApi([FromQuery] OrderQueryDtoApi parm) + { + var res = await _OrderServiceApi.GetOrderListApi(parm); + return SUCCESS(res); + } + + /// + /// 获取Order详情(Api) + /// + /// 查询参数 + /// + [HttpGet("getOrderDetails")] + public async Task GetOrderDetails([FromQuery] OrderDtoApi parm) + { + //if (parm == null) throw new CustomException("参数错误!"); + + var res = await _OrderServiceApi.GetOrderDetails(parm); + + if (res != "[]") + { + res = res.Remove(0, 1); + res = res.Substring(0, res.Length - 1); + var data = res.FromJSON(); + return SUCCESS(data); + } + else + { + return SUCCESS(res); + } + } + + } +} diff --git a/ARW.WebApi/Controllers/Business/OrderManage/Orders/OrderController.cs b/ARW.WebApi/Controllers/Business/OrderManage/Orders/OrderController.cs index 8594067..792a462 100644 --- a/ARW.WebApi/Controllers/Business/OrderManage/Orders/OrderController.cs +++ b/ARW.WebApi/Controllers/Business/OrderManage/Orders/OrderController.cs @@ -15,7 +15,8 @@ using ARW.Model.Models.Business.OrderManage.Orders; using ARW.Model.Vo.Business.OrderManage.Orders; using Microsoft.AspNetCore.Authorization; using ARW.Admin.WebApi.Framework; - +using ARW.Service.Api.IBusinessService.OrderManage.Orders; +using Geocoding; namespace ARW.WebApi.Controllers.Business.OrderManage.Orders { @@ -54,6 +55,79 @@ namespace ARW.WebApi.Controllers.Business.OrderManage.Orders return SUCCESS(res); } + + /// + /// 获取订单详情 + /// + /// 查询参数 + /// + [HttpGet("getOrderDetails")] + public async Task GetOrderDetails([FromQuery] OrderDetailDto parm) + { + //if (parm == null) throw new CustomException("参数错误!"); + + var res = await _OrderService.GetOrderDetails(parm); + + if (res != "[]") + { + var data = res.FromJSON(); + return SUCCESS(data); + } + else + { + return SUCCESS(res); + } + } + + + /// + /// 发货 + /// + /// + /// + [HttpPost("deliver")] + [Log(Title = "发货", BusinessType = BusinessType.ADDORUPDATE)] + public async Task Deliver([FromBody] OrderDeliverDto parm) + { + if (parm == null) { throw new CustomException("请求参数错误"); } + + var res = await _OrderService.Deliver(parm); + return SUCCESS(res); + } + + + /// + /// 订单改价 + /// + /// + /// + [HttpPost("changePrice")] + [Log(Title = "订单改价", BusinessType = BusinessType.ADDORUPDATE)] + public async Task ChangePrice([FromBody] OrderChangePriceDto parm) + { + if (parm == null) { throw new CustomException("请求参数错误"); } + + var res = await _OrderService.ChangePrice(parm); + return SUCCESS(res); + } + + + /// + /// 审核取消订单 + /// + /// + /// + [HttpPost("cancelOrder")] + [Log(Title = "审核取消订单", BusinessType = BusinessType.ADDORUPDATE)] + public async Task CancelOrder([FromBody] OrderCancelOrderDto parm) + { + if (parm == null) { throw new CustomException("请求参数错误"); } + + var res = await _OrderService.CancelOrder(parm); + return SUCCESS(res); + } + + /// /// 添加或修改订单 /// @@ -66,7 +140,7 @@ namespace ARW.WebApi.Controllers.Business.OrderManage.Orders { if (parm == null) { throw new CustomException("请求参数错误"); } - var modal = new Order(); + var modal = new Order(); if (parm.OrderId != 0) modal = parm.Adapt().ToUpdate(HttpContext); else modal = parm.Adapt().ToCreate(HttpContext); @@ -88,16 +162,16 @@ namespace ARW.WebApi.Controllers.Business.OrderManage.Orders var response = _OrderService.Delete(idsArr); return SUCCESS("删除成功!"); } - - - /// + + + /// /// 导出订单 /// /// [Log(Title = "订单导出", BusinessType = BusinessType.EXPORT, IsSaveResponseData = false)] [HttpGet("exportOrder")] [ActionPermissionFilter(Permission = "business:order:export")] - public async Task ExportExcel([FromQuery] OrderQueryDto parm) + public async Task ExportExcel([FromQuery] OrderQueryDto parm) { parm.PageSize = 10000; var list = await _OrderService.GetOrderList(parm); @@ -116,7 +190,7 @@ namespace ARW.WebApi.Controllers.Business.OrderManage.Orders data = selectDataList; } - + // 导出数据处理 var handleData = await _OrderService.HandleExportData(data);