Browse Source

订单业绩统计接口

qianyi
shanji 3 years ago
parent
commit
037633338c
  1. 37
      BBWY.JDSDK/Domain/ResponseMessage.cs
  2. 163
      BBWY.JDSDK/Request/AdsIbgUniversalJosServiceSkuQueryRequest.cs
  3. 16
      BBWY.JDSDK/Response/AdsIbgUniversalJosServiceSkuQueryResponse.cs
  4. 40
      BBWY.Server.Business/Statistics/StatisticsBusiness.cs
  5. 2
      BBWY.Server.Model/Dto/Response/Statistics/OrderAchievementResponse.cs
  6. 40
      BBWY.Test/Program.cs

37
BBWY.JDSDK/Domain/ResponseMessage.cs

@ -0,0 +1,37 @@
using System;
using System.Xml.Serialization;
using System.Collections.Generic;
using Newtonsoft.Json;
using Jd.Api.Domain;
namespace Jd.Api.Domain
{
[Serializable]
public class ResponseMessage:JdObject{
[JsonProperty("msg")]
public string
msg
{ get; set; }
[JsonProperty("code")]
public string
code
{ get; set; }
[JsonProperty("success")]
public bool
success
{ get; set; }
[JsonProperty("data")]
public PageList
data
{ get; set; }
[JsonProperty("logId")]
public List<string>
logId
{ get; set; }
}
}

163
BBWY.JDSDK/Request/AdsIbgUniversalJosServiceSkuQueryRequest.cs

@ -0,0 +1,163 @@
using System;
using System.Collections.Generic;
using Jd.Api.Response;
using Jd.Api.Util;
namespace Jd.Api.Request
{
public class AdsIbgUniversalJosServiceSkuQueryRequest : JdRequestBase<AdsIbgUniversalJosServiceSkuQueryResponse>
{
public string
businessType
{get; set;}
public string
clickStartDay
{get; set;}
public string
clickEndDay
{get; set;}
public string
orderStartDay
{get; set;}
public string
orderEndDay
{get; set;}
public string
myself
{get; set;}
public string
orderStatus
{get; set;}
public string
province
{get; set;}
public string
areaId
{get; set;}
public string
isDaily
{get; set;}
public string
startDay
{get; set;}
public string
endDay
{get; set;}
public string
orderStatusCategory
{get; set;}
public string
clickOrOrderCaliber
{get; set;}
public string
campaignId
{get; set;}
public string
clickOrOrderDay
{get; set;}
public string
page
{get; set;}
public string
pageSize
{get; set;}
public string
filters
{get; set;}
public string
platform
{get; set;}
public string
giftFlag
{get; set;}
public string
authType
{get; set;}
public string
accessPin
{get; set;}
public override string ApiName
{
get{return "jingdong.ads.ibg.UniversalJosService.sku.query";}
}
protected override void PrepareParam(IDictionary<String, Object> parameters)
{
parameters.Add("businessType", this. businessType
);
parameters.Add("clickStartDay", this. clickStartDay
);
parameters.Add("clickEndDay", this. clickEndDay
);
parameters.Add("orderStartDay", this. orderStartDay
);
parameters.Add("orderEndDay", this. orderEndDay
);
parameters.Add("myself", this. myself
);
parameters.Add("orderStatus", this. orderStatus
);
parameters.Add("province", this. province
);
parameters.Add("areaId", this. areaId
);
parameters.Add("isDaily", this. isDaily
);
parameters.Add("startDay", this. startDay
);
parameters.Add("endDay", this. endDay
);
parameters.Add("orderStatusCategory", this. orderStatusCategory
);
parameters.Add("clickOrOrderCaliber", this. clickOrOrderCaliber
);
parameters.Add("campaignId", this. campaignId
);
parameters.Add("clickOrOrderDay", this. clickOrOrderDay
);
parameters.Add("page", this. page
);
parameters.Add("pageSize", this. pageSize
);
parameters.Add("filters", this. filters
);
parameters.Add("platform", this. platform
);
parameters.Add("giftFlag", this. giftFlag
);
parameters.Add("authType", this. authType
);
parameters.Add("accessPin", this. accessPin
);
}
}
}

16
BBWY.JDSDK/Response/AdsIbgUniversalJosServiceSkuQueryResponse.cs

@ -0,0 +1,16 @@
using System;
using System.Xml.Serialization;
using System.Collections.Generic;
using Newtonsoft.Json;
using Jd.Api.Domain;
namespace Jd.Api.Response
{
public class AdsIbgUniversalJosServiceSkuQueryResponse:JdResponse{
[JsonProperty("returnType")]
public ResponseMessage
returnType
{ get; set; }
}
}

40
BBWY.Server.Business/Statistics/StatisticsBusiness.cs

@ -52,24 +52,27 @@ namespace BBWY.Server.Business
if (pularizeEndTime != null)
{
//o.StorageType != Enums.StorageType.SD &&
response.PularizeEndDate = pularizeEndDate;
var profit = fsql.Select<Order, OrderCost>().LeftJoin((o, oc) => o.Id == oc.OrderId)
.Where((o, oc) => o.ShopId == request.ShopId &&
o.OrderState != null &&
!invalidOrderStateList.Contains(o.OrderState.Value) && //排除待付款和取消
o.StorageType != Enums.StorageType.SD &&
o.StartTime >= request.StartTime &&
o.StartTime <= pularizeEndTime).Sum((o, oc) => oc.Profit);
//response.Profit = profit;
//计算SD成本
var sdCost = fsql.Select<Order, OrderCost>().LeftJoin((o, oc) => o.Id == oc.OrderId)
.Where((o, oc) => o.ShopId == request.ShopId &&
o.OrderState != null &&
!invalidOrderStateList.Contains(o.OrderState.Value) && //排除待付款和取消
o.StorageType == Enums.StorageType.SD &&
o.StartTime >= request.StartTime &&
o.StartTime <= pularizeEndTime).Sum((o, oc) => oc.Profit);
var profitList = fsql.Select<Order, OrderCost>().LeftJoin((o, oc) => o.Id == oc.OrderId)
.Where((o, oc) => o.ShopId == request.ShopId &&
o.OrderState != null &&
!invalidOrderStateList.Contains(o.OrderState.Value) && //排除待付款和取消
o.StartTime >= request.StartTime &&
o.StartTime <= pularizeEndTime)
.GroupBy((o, oc) => new
{
IsSD = o.StorageType == Enums.StorageType.SD
})
.ToList(g => new
{
g.Key.IsSD,
Value = g.Sum(g.Value.Item2.Profit)
});
var profit = profitList.FirstOrDefault(t => !t.IsSD).Value;
var sdCost = profitList.FirstOrDefault(t => t.IsSD).Value;
response.SDCost = Math.Abs(sdCost);
response.AdvCost = shopPopularizeList.Sum(s => s.Cost) + response.SDCost;
response.Profit = profit - response.AdvCost - response.TaxCost - response.EmployeeCost;
@ -82,9 +85,6 @@ namespace BBWY.Server.Business
}).ToList();
}
//var shopId = request.ShopId.ToString();
//var mdsShop = freeSqlMultiDBManager.MDSfsql.Select<Shops>().Where(s => s.ShopId == shopId).ToOne();
//if (mdsShop != null)

2
BBWY.Server.Model/Dto/Response/Statistics/OrderAchievementResponse.cs

@ -35,7 +35,7 @@ namespace BBWY.Server.Model.Dto
{
get
{
return PurchaseAmount + DeliveryExpressFreight + PlatformCommissionAmount;
return PurchaseAmount + DeliveryExpressFreight + PlatformCommissionAmount + AdvCost;
}
}

40
BBWY.Test/Program.cs

@ -26,35 +26,27 @@ namespace BBWY.Test
{
var appkey = "120EA9EC65AB017567D78CC1139EEEA5";
var appSecret = "866a9877f5f24b03b537483b4defe75d";
var token = "2ace3023200c4ea9aa682bbf8bffee18jztm";
var token = "eda9bd0d9c2b48fba96ebc415669cea7jkmg";//"2ace3023200c4ea9aa682bbf8bffee18jztm";
var startDate = DateTime.Parse("2022-08-01");
var endDate = DateTime.Parse("2022-08-31");
var jdClient = GetJdClient(appkey, appSecret);
var pageIndex = 1;
while (true)
{
var req = new DspPlatformFinanceOpenapiQuerycostdetailsRequest();
req.beginDate = startDate.ToString("yyyy-MM-dd");
req.endDate = endDate.ToString("yyyy-MM-dd");
req.pageNo = pageIndex;
req.pageSize = 100;
req.moneyType = 1;
var response = jdClient.Execute(req, token, DateTime.Now.ToLocalTime());
Console.WriteLine($"pageIndex:{pageIndex}\r\n{JsonConvert.SerializeObject(response)}");
Console.WriteLine();
if (response.Json == null)
response.Json = JsonConvert.DeserializeObject<JObject>(response.Body);
var j = (JArray)response.Json["jingdong_dsp_platform_finance_openapi_querycostdetails_responce"]["returnType"]["data"]["page"]["data"];
if (j == null || !j.HasValues || j.Count < 100)
break;
pageIndex++;
Thread.Sleep(2000);
}
var req = new AdsIbgUniversalJosServiceSkuQueryRequest();
req.businessType = "134217728";
req.clickOrOrderCaliber = "1";
req.clickOrOrderDay = "0";
req.clickStartDay = "2022-09-25";
req.clickEndDay = "2022-09-25";
req.orderStartDay = "2022-09-25";
req.orderEndDay = "2022-09-25";
req.startDay = "2022-09-25";
req.endDay = "2022-09-25";
req.accessPin = "ecmax2017";
var response = jdClient.Execute(req, token, DateTime.Now.ToLocalTime());
Console.WriteLine(JsonConvert.SerializeObject(response));
Console.ReadKey();
}
}

Loading…
Cancel
Save