Browse Source

1.订单接口取消原有售后信息

2.售后表新增多个字段
qianyi
shanji 3 years ago
parent
commit
28828d38ef
  1. 28
      BBWY.Server.API/Controllers/AfterSaleOrderController.cs
  2. 74
      BBWY.Server.Business/AfterSaleOrder/AfterSaleOrderBusiness.cs
  3. 18
      BBWY.Server.Business/Order/OrderBusiness.cs
  4. 8
      BBWY.Server.Business/Sync/AfterSaleOrderSyncBusiness.cs
  5. 5
      BBWY.Server.Business/Sync/RefundOrderSyncBusiness.cs
  6. 131
      BBWY.Server.Model/Db/Aftersaleorder.cs
  7. 13
      BBWY.Server.Model/Db/Order/AfterSaleOrder.cs
  8. 27
      BBWY.Server.Model/Dto/Request/AfterSaleOrder/SearchAfterSaleOrderRequest.cs
  9. 13
      BBWY.Server.Model/Dto/Response/AfterSaleOrder/AfterSaleOrderListResponse.cs
  10. 6
      BBWY.Server.Model/Dto/Response/AfterSaleOrder/AfterSaleOrderResponse.cs
  11. 38
      BBWY.Test/Program.cs

28
BBWY.Server.API/Controllers/AfterSaleOrderController.cs

@ -0,0 +1,28 @@
using BBWY.Server.Business;
using BBWY.Server.Model.Dto;
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc;
namespace BBWY.Server.API.Controllers
{
public class AfterSaleOrderController : BaseApiController
{
private AfterSaleOrderBusiness afterSaleOrderBusiness;
public AfterSaleOrderController(IHttpContextAccessor httpContextAccessor, AfterSaleOrderBusiness afterSaleOrderBusiness) : base(httpContextAccessor)
{
this.afterSaleOrderBusiness = afterSaleOrderBusiness;
}
/// <summary>
/// 获取服务单列表
/// </summary>
/// <param name="request"></param>
/// <returns></returns>
[HttpPost]
public AfterSaleOrderListResponse GetAfterSaleOrderList([FromBody] SearchAfterSaleOrderRequest request)
{
return afterSaleOrderBusiness.GetAfterSaleOrderList(request);
}
}
}

74
BBWY.Server.Business/AfterSaleOrder/AfterSaleOrderBusiness.cs

@ -0,0 +1,74 @@
using BBWY.Common.Models;
using BBWY.Server.Model.Db;
using BBWY.Server.Model.Dto;
using BBWY.Server.Model.Dto.Request;
using System;
using System.Collections.Generic;
using System.Text;
using Yitter.IdGenerator;
namespace BBWY.Server.Business
{
public class AfterSaleOrderBusiness : BaseBusiness, IDenpendency
{
public AfterSaleOrderBusiness(IFreeSql fsql, NLog.ILogger logger, IIdGenerator idGenerator) : base(fsql, logger, idGenerator)
{
}
public AfterSaleOrderListResponse GetAfterSaleOrderList(SearchAfterSaleOrderRequest request)
{
var select = fsql.Select<AfterSaleOrder, OrderSku>().InnerJoin((aso, osku) => aso.SkuId == osku.SkuId);
if (!string.IsNullOrEmpty(request.ServiceId))
{
select = select.Where((aso, osku) => aso.ServiceId == request.ServiceId);
}
else
{
select = select.WhereIf(request.StartDate != null, (aso, osku) => aso.ApplyTime >= request.StartDate)
.WhereIf(request.EndDate != null, (aso, osku) => aso.ApplyTime <= request.EndDate)
.WhereIf(!string.IsNullOrEmpty(request.Spu), (aso, osku) => aso.ProductId == request.Spu)
.WhereIf(!string.IsNullOrEmpty(request.Sku), (aso, osku) => aso.SkuId == request.Sku)
.WhereIf(!string.IsNullOrEmpty(request.OrderId), (aso, osku) => aso.OrderId == request.OrderId);
}
select = select.Where((aso, osku) => aso.ShopId == request.ShopId)
.OrderByDescending((aso, osku) => aso.CreateTime)
.Count(out var total)
.Page(request.PageIndex, request.PageSize);
var list = select.ToList((aso, osku) => new AfterSaleOrderResponse
{
Id = aso.Id,
ApplyTime = aso.ApplyTime,
ConsumableAmount = aso.ConsumableAmount,
CreateTime = aso.CreateTime,
DeliveryExpressFreight = aso.DeliveryExpressFreight,
FirstFreight = aso.FirstFreight,
InStorageAmount = aso.InStorageAmount,
Logo = osku.Logo,
OrderId = aso.OrderId,
OutStorageAmount = aso.OutStorageAmount,
ProductHealth = aso.ProductHealth,
ProductId = aso.ProductId,
ProductResult = aso.ProductResult,
RefundAmount = aso.RefundAmount,
RefundInStorageAmount = aso.RefundInStorageAmount,
RefundPurchaseAmount = aso.RefundPurchaseAmount,
RefundTime = aso.RefundTime,
ReissueAfterSaleAmount = aso.ReissueAfterSaleAmount,
ReissueFreight = aso.ReissueFreight,
ReissueProductAmount = aso.ReissueProductAmount,
ServiceId = aso.ServiceId,
ServiceResult = aso.ServiceResult,
ShopId = aso.ShopId,
SkuId = aso.SkuId,
Title = osku.Title
});
return new AfterSaleOrderListResponse()
{
Count = total,
Items = list
};
}
}
}

18
BBWY.Server.Business/Order/OrderBusiness.cs

@ -156,14 +156,6 @@ namespace BBWY.Server.Business
ReissueAfterSaleAmount = oct.ReissueAfterSaleAmount,
ReissueFreight = oct.ReissueFreight,
ReissueProductAmount = oct.ReissueProductAmount
//BuyerAccount = ods.BuyerAccount,
//DeliveryFreight = ods.DeliveryFreight,
//PurchaseOrderId = ods.PurchaseOrderId,
//PurchasePlatform = ods.PurchasePlatform,
//SellerAccount = ods.SellerAccount,
//OrderDropShippingSkuAmount = ods.SkuAmount,
//OrderDropShippingPurchaseFreight = ods.PurchaseFreight,
});
var orderList = orderSourceList.Map<IList<OrderResponse>>();
@ -206,11 +198,11 @@ namespace BBWY.Server.Business
order.OrderCostDetailList = orderCostDetailList.Where(ocd => ocd.OrderId == order.Id).ToList();
#endregion
#region 处理售后信息
var afterSaleOrderList = fsql.Select<AfterSaleOrder>().Where(aso => orderIdList.Contains(aso.OrderId)).ToList<AfterSaleOrderResponse>();
foreach (var order in orderList)
order.AfterSaleOrderList = afterSaleOrderList.Where(aso => aso.OrderId == order.Id).ToList();
#endregion
//#region 处理售后信息
//var afterSaleOrderList = fsql.Select<AfterSaleOrder>().Where(aso => orderIdList.Contains(aso.OrderId)).ToList<AfterSaleOrderResponse>();
//foreach (var order in orderList)
// order.AfterSaleOrderList = afterSaleOrderList.Where(aso => aso.OrderId == order.Id).ToList();
//#endregion
#region 翻译仓库Id
foreach (var order in orderList)

8
BBWY.Server.Business/Sync/AfterSaleOrderSyncBusiness.cs

@ -1,4 +1,5 @@
using BBWY.Common.Http;
using BBWY.Common.Extensions;
using BBWY.Common.Http;
using BBWY.Common.Models;
using BBWY.Server.Model;
using BBWY.Server.Model.Db;
@ -76,7 +77,7 @@ namespace BBWY.Server.Business
{
var orderId = afterOrderJToken.Value<string>("orderId");
var skuId = afterOrderJToken.Value<string>("skuId");
var serviceId = afterOrderJToken.Value<long>("serviceId");
var serviceId = afterOrderJToken.Value<string>("serviceId");
var processResult = processResultDic[afterOrderJToken.Value<int>("processResult")];
var afterOrder = afterOrders.FirstOrDefault(aso => aso.ServiceId == serviceId);
@ -96,7 +97,8 @@ namespace BBWY.Server.Business
SkuId = skuId,
ShopId = shopId,
ServiceResult = processResult,
ServiceId = serviceId
ServiceId = serviceId,
ApplyTime = afterOrderJToken.Value<long>("applyTime").StampToDateTime()
});
}
else

5
BBWY.Server.Business/Sync/RefundOrderSyncBusiness.cs

@ -67,7 +67,7 @@ namespace BBWY.Server.Business
var refundAmount = refundOrderJToken.Value<decimal>("refoundAmount");
var refundCompleteTime = refundOrderJToken.Value<long>("completeTime").StampToDateTime();
var serviceId = long.Parse(refundOrderJToken["sameOrderServiceBill"]["serviceId"].ToString());
var serviceId = refundOrderJToken["sameOrderServiceBill"]["serviceId"].ToString();
var afterOrder = afterOrders.FirstOrDefault(aso => aso.ServiceId == serviceId);
if (afterOrder == null)
@ -85,7 +85,8 @@ namespace BBWY.Server.Business
RefundTime = refundCompleteTime,
SkuId = skuId,
ShopId = shopId,
ServiceId = serviceId
ServiceId = serviceId,
ApplyTime = long.Parse(refundOrderJToken["sameOrderServiceBill"]["afsApplyTime"].ToString()).StampToDateTime()
});
}
else if (afterOrder.RefundAmount == 0)

131
BBWY.Server.Model/Db/Aftersaleorder.cs

@ -1,131 +0,0 @@
using FreeSql.DatabaseModel;using System;
using System.Collections;
using System.Collections.Generic;
using System.Linq;
using System.Reflection;
using System.Threading.Tasks;
using Newtonsoft.Json;
using FreeSql.DataAnnotations;
namespace BBWY.Server.Model.Db {
[JsonObject(MemberSerialization.OptIn), Table(Name = "aftersaleorder", DisableSyncStructure = true)]
public partial class Aftersaleorder {
[JsonProperty, Column(IsPrimary = true)]
public long Id { get; set; }
/// <summary>
/// 耗材费
/// </summary>
[JsonProperty, Column(DbType = "decimal(18,2)")]
public decimal? ConsumableAmount { get; set; } = 0.00M;
[JsonProperty, Column(DbType = "datetime")]
public DateTime? CreateTime { get; set; }
/// <summary>
/// 发货快递费
/// </summary>
[JsonProperty, Column(DbType = "decimal(18,2)")]
public decimal? DeliveryExpressFreight { get; set; } = 0.00M;
/// <summary>
/// 头程费
/// </summary>
[JsonProperty, Column(DbType = "decimal(18,2)")]
public decimal? FirstFreight { get; set; } = 0.00M;
/// <summary>
/// 入仓操作费
/// </summary>
[JsonProperty, Column(DbType = "decimal(18,2)")]
public decimal? InStorageAmount { get; set; } = 0.00M;
[JsonProperty, Column(StringLength = 50)]
public string OrderId { get; set; }
/// <summary>
/// 出仓操作费
/// </summary>
[JsonProperty, Column(DbType = "decimal(18,2)")]
public decimal? OutStorageAmount { get; set; } = 0.00M;
/// <summary>
/// 商品情况
/// </summary>
[JsonProperty, Column(DbType = "int(1)")]
public int? ProductHealth { get; set; }
[JsonProperty, Column(StringLength = 50)]
public string ProductId { get; set; }
/// <summary>
/// 商品处理方式
/// </summary>
[JsonProperty, Column(DbType = "int(255)")]
public int? ProductResult { get; set; }
/// <summary>
/// 退款金额
/// </summary>
[JsonProperty, Column(DbType = "decimal(20,2)")]
public decimal? RefundAmount { get; set; } = 0.00M;
/// <summary>
/// 退货入仓操作费
/// </summary>
[JsonProperty, Column(DbType = "decimal(18,2)")]
public decimal? RefundInStorageAmount { get; set; } = 0.00M;
/// <summary>
/// 退款采购成本
/// </summary>
[JsonProperty, Column(DbType = "decimal(18,2)")]
public decimal? RefundPurchaseAmount { get; set; } = 0.00M;
/// <summary>
/// 退款时间
/// </summary>
[JsonProperty, Column(DbType = "datetime")]
public DateTime? RefundTime { get; set; }
/// <summary>
/// 售后补发成本
/// </summary>
[JsonProperty, Column(DbType = "decimal(20,2)")]
public decimal? ReissueAfterSaleAmount { get; set; } = 0.00M;
/// <summary>
/// 补发快递费
/// </summary>
[JsonProperty, Column(DbType = "decimal(20,2)")]
public decimal? ReissueFreight { get; set; } = 0.00M;
/// <summary>
/// 补发货款成本
/// </summary>
[JsonProperty, Column(DbType = "decimal(20,2)")]
public decimal? ReissueProductAmount { get; set; } = 0.00M;
/// <summary>
/// 服务单号
/// </summary>
[JsonProperty]
public long? ServiceId { get; set; }
/// <summary>
/// 服务单处理结果
/// </summary>
[JsonProperty, Column(DbType = "int(1)")]
public int? ServiceResult { get; set; }
[JsonProperty]
public long? ShopId { get; set; }
[JsonProperty, Column(StringLength = 50)]
public string SkuId { get; set; }
}
}

13
BBWY.Server.Model/Db/Order/AfterSaleOrder.cs

@ -14,6 +14,12 @@ namespace BBWY.Server.Model.Db
[Column(DbType = "datetime")]
public DateTime? CreateTime { get; set; }
/// <summary>
/// 申请时间
/// </summary>
[Column(DbType = "datetime")]
public DateTime? ApplyTime { get; set; }
[Column(StringLength = 50)]
public string OrderId { get; set; }
@ -68,9 +74,10 @@ namespace BBWY.Server.Model.Db
public string SkuId { get; set; }
/// <summary>
/// 服务单号
/// </summary>
public long? ServiceId { get; set; }
/// 服务单号
/// </summary>
[Column(StringLength = 20)]
public string ServiceId { get; set; }
/// <summary>
/// 退货入仓操作费

27
BBWY.Server.Model/Dto/Request/AfterSaleOrder/SearchAfterSaleOrderRequest.cs

@ -0,0 +1,27 @@
using System;
using System.Collections.Generic;
using System.Text;
namespace BBWY.Server.Model.Dto
{
public class SearchAfterSaleOrderRequest
{
public long ShopId { get; set; }
public string OrderId { get; set; }
public DateTime? StartDate { get; set; }
public DateTime? EndDate { get; set; }
public string Spu { get; set; }
public string Sku { get; set; }
public string ServiceId { get; set; }
public int PageIndex { get; set; }
public int PageSize { get; set; }
}
}

13
BBWY.Server.Model/Dto/Response/AfterSaleOrder/AfterSaleOrderListResponse.cs

@ -0,0 +1,13 @@
using System;
using System.Collections.Generic;
using System.Text;
namespace BBWY.Server.Model.Dto
{
public class AfterSaleOrderListResponse
{
public long Count { get; set; }
public IList<AfterSaleOrderResponse> Items { get; set; }
}
}

6
BBWY.Server.Model/Dto/Response/Order/AfterSaleOrderResponse.cs → BBWY.Server.Model/Dto/Response/AfterSaleOrder/AfterSaleOrderResponse.cs

@ -1,11 +1,11 @@
using BBWY.Server.Model.Db;
using System;
using System.Collections.Generic;
using System.Text;
namespace BBWY.Server.Model.Dto
{
public class AfterSaleOrderResponse : AfterSaleOrder
{
public string Logo { get; set; }
public string Title { get; set; }
}
}

38
BBWY.Test/Program.cs

@ -1,19 +1,8 @@
using BBWY.Common.Models;
using BBWY.JDSDK.Request;
using BBWY.Server.Model.Db;
using BBWY.Server.Model.Dto;
using Jd.Api;
using Jd.Api;
using Jd.Api.Request;
using Jd.Api.Response;
using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Text.RegularExpressions;
using System.Threading.Tasks;
using io = System.IO;
namespace BBWY.Test
{
internal class Program
@ -30,19 +19,26 @@ namespace BBWY.Test
var token = "2ace3023200c4ea9aa682bbf8bffee18jztm";
var jdClient = GetJdClient(appKey, appSecret);
var req = new AscQueryListRequest();
req.buId = "10598776";
req.operatePin = "开发测试";
req.operateNick = "开发测试";
req.pageNumber = "1";
req.pageSize ="50";
//var req = new AscQueryListRequest();
//req.buId = "10598776";
//req.operatePin = "开发测试";
//req.operateNick = "开发测试";
//req.pageNumber = "1";
//req.pageSize ="50";
//req.serviceId = 1472302469;
//AscQueryListResponse response1 = jdClient.Execute(req, token, DateTime.Now.ToLocalTime());
req.orderId = null;
//Console.WriteLine(JsonConvert.SerializeObject(response1));
req.serviceId = 1377757485;
//250134673037
AscQueryListResponse response = jdClient.Execute(req, token, DateTime.Now.ToLocalTime());
AscServiceAndRefundViewRequest req = new AscServiceAndRefundViewRequest();
req.orderId = 250134673037;
req.pageNumber = 1.ToString();
req.pageSize = 10.ToString();
var response = jdClient.Execute(req, token, DateTime.Now.ToLocalTime());
Console.WriteLine(JsonConvert.SerializeObject(response));
Console.ReadKey();
}

Loading…
Cancel
Save