Browse Source

Merge branch 'master' of http://code.qiyue666.com/pengcong001/bbwy

AddValidOverTime
506583276@qq.com 2 years ago
parent
commit
40e44ec463
  1. 356
      BBWY.JDSDK/Request/AdsIbgUniversalJosServiceOrderQueryRequest.cs
  2. 21
      BBWY.JDSDK/Request/SellerDeliverySendPromiseTemplateJsfServiceQuerySendTemplateByCategoryRequest.cs
  3. 2
      BBWY.JDSDK/Request/SkuWriteUpdateSkusRequest.cs
  4. 11
      BBWY.JDSDK/Response/SellerDeliverySendPromiseTemplateJsfServiceQuerySendTemplateByCategoryResponse.cs
  5. 2
      BBWY.Server.Business/EvaluationAssistant/EvaluationAssistantBusiness.cs
  6. 71
      BBWY.Server.Business/PlatformSDK/JDBusiness.cs
  7. 40
      BBWY.Server.Business/PurchaseOrderV2/BatchPurchase/BatchPurchaseBusiness.cs
  8. 2
      BBWY.Server.Model/Db/PurchaseOrder/PurchaseOrderV2.cs
  9. 13
      BBWY.Test/BBWY.Test.csproj
  10. 14
      BBWY.Test/NLog.config
  11. 50
      BBWY.Test/Program.cs
  12. 35
      BBWY.Test/Properties/NLogManager.cs

356
BBWY.JDSDK/Request/AdsIbgUniversalJosServiceOrderQueryRequest.cs

@ -6,193 +6,193 @@ namespace Jd.Api.Request
{
public class AdsIbgUniversalJosServiceOrderQueryRequest : JdRequestBase<AdsIbgUniversalJosServiceOrderQueryResponse>
{
public string
clickStartDay
{get; set;}
public string
orderType
{get; set;}
public string
orderStartDay
{get; set;}
public string
orderStatus
{get; set;}
public string
pageSize
{get; set;}
public string
platform
{get; set;}
public string
adGroupId
{get; set;}
public string
paymentType
{get; set;}
public string
activityId
{get; set;}
public string
mediaGroupId
{get; set;}
public string
province
{get; set;}
public string
clickOrOrderDay
{get; set;}
public string
clickOrOrderCaliber
{get; set;}
public string
orderEndDay
{get; set;}
public string
clickEndDay
{get; set;}
public string
giftFlag
{get; set;}
public string
campaignId
{get; set;}
public string
deliveryType
{get; set;}
public string
mediaType
{get; set;}
public string
impressionOrClickEffect
{get; set;}
public string
posPackageId
{get; set;}
public string
page
{get; set;}
public string
startDay
{get; set;}
public string
endDay
{get; set;}
public string
myself
{get; set;}
public string
businessType
{get; set;}
public string
accessPin
{get; set;}
public string
authType
{get; set;}
public string
deliverySystemType
{get; set;}
public string
jdMediaUserId
{get; set;}
public override string ApiName
{
get{return "jingdong.ads.ibg.UniversalJosService.order.query";}
}
protected override void PrepareParam(IDictionary<String, Object> parameters)
{
parameters.Add("clickStartDay", this. clickStartDay
);
parameters.Add("orderType", this. orderType
);
parameters.Add("orderStartDay", this. orderStartDay
);
parameters.Add("orderStatus", this. orderStatus
);
parameters.Add("pageSize", this. pageSize
);
parameters.Add("platform", this. platform
);
parameters.Add("adGroupId", this. adGroupId
);
parameters.Add("paymentType", this. paymentType
);
parameters.Add("activityId", this. activityId
);
parameters.Add("mediaGroupId", this. mediaGroupId
);
parameters.Add("province", this. province
);
parameters.Add("clickOrOrderDay", this. clickOrOrderDay
);
parameters.Add("clickOrOrderCaliber", this. clickOrOrderCaliber
);
parameters.Add("orderEndDay", this. orderEndDay
);
parameters.Add("clickEndDay", this. clickEndDay
);
parameters.Add("giftFlag", this. giftFlag
);
parameters.Add("campaignId", this. campaignId
);
parameters.Add("deliveryType", this. deliveryType
);
parameters.Add("mediaType", this. mediaType
);
parameters.Add("impressionOrClickEffect", this. impressionOrClickEffect
public string
clickStartDay
{ get; set; }
public string
orderType
{ get; set; }
public string
orderStartDay
{ get; set; }
public string
orderStatus
{ get; set; }
public string
pageSize
{ get; set; }
public string
platform
{ get; set; }
public string
adGroupId
{ get; set; }
public string
paymentType
{ get; set; }
public string
activityId
{ get; set; }
public string
mediaGroupId
{ get; set; }
public string
province
{ get; set; }
public string
clickOrOrderDay
{ get; set; }
public string
clickOrOrderCaliber
{ get; set; }
public string
orderEndDay
{ get; set; }
public string
clickEndDay
{ get; set; }
public string
giftFlag
{ get; set; }
public string
campaignId
{ get; set; }
public string
deliveryType
{ get; set; }
public string
mediaType
{ get; set; }
public string
impressionOrClickEffect
{ get; set; }
public string
posPackageId
{ get; set; }
public string
page
{ get; set; }
public string
startDay
{ get; set; }
public string
endDay
{ get; set; }
public string
myself
{ get; set; }
public string
businessType
{ get; set; }
public string
accessPin
{ get; set; }
public string
authType
{ get; set; }
public string
deliverySystemType
{ get; set; }
public string
jdMediaUserId
{ get; set; }
public override string ApiName
{
get { return "jingdong.ads.ibg.UniversalJosService.order.query"; }
}
protected override void PrepareParam(IDictionary<String, Object> parameters)
{
parameters.Add("clickStartDay", this.clickStartDay
);
parameters.Add("orderType", this.orderType
);
parameters.Add("orderStartDay", this.orderStartDay
);
parameters.Add("orderStatus", this.orderStatus
);
parameters.Add("pageSize", this.pageSize
);
parameters.Add("platform", this.platform
);
parameters.Add("adGroupId", this.adGroupId
);
parameters.Add("paymentType", this.paymentType
);
parameters.Add("activityId", this.activityId
);
parameters.Add("mediaGroupId", this.mediaGroupId
);
parameters.Add("posPackageId", this. posPackageId
parameters.Add("province", this.province
);
parameters.Add("page", this. page
parameters.Add("clickOrOrderDay", this.clickOrOrderDay
);
parameters.Add("startDay", this. startDay
parameters.Add("clickOrOrderCaliber", this.clickOrOrderCaliber
);
parameters.Add("endDay", this. endDay
parameters.Add("orderEndDay", this.orderEndDay
);
parameters.Add("myself", this. myself
parameters.Add("clickEndDay", this.clickEndDay
);
parameters.Add("businessType", this. businessType
parameters.Add("giftFlag", this.giftFlag
);
parameters.Add("accessPin", this. accessPin
parameters.Add("campaignId", this.campaignId
);
parameters.Add("authType", this. authType
parameters.Add("deliveryType", this.deliveryType
);
parameters.Add("deliverySystemType", this. deliverySystemType
parameters.Add("mediaType", this.mediaType
);
parameters.Add("jdMediaUserId", this. jdMediaUserId
parameters.Add("impressionOrClickEffect", this.impressionOrClickEffect
);
}
parameters.Add("posPackageId", this.posPackageId
);
parameters.Add("page", this.page
);
parameters.Add("startDay", this.startDay
);
parameters.Add("endDay", this.endDay
);
parameters.Add("myself", this.myself
);
parameters.Add("businessType", this.businessType
);
parameters.Add("accessPin", this.accessPin
);
parameters.Add("authType", this.authType
);
parameters.Add("deliverySystemType", this.deliverySystemType
);
parameters.Add("jdMediaUserId", this.jdMediaUserId
);
}
}
}
@ -200,6 +200,6 @@ namespace Jd.Api.Request

21
BBWY.JDSDK/Request/SellerDeliverySendPromiseTemplateJsfServiceQuerySendTemplateByCategoryRequest.cs

@ -0,0 +1,21 @@
using BBWY.JDSDK.Response;
using Jd.Api;
using System.Collections.Generic;
namespace BBWY.JDSDK.Request
{
public class SellerDeliverySendPromiseTemplateJsfServiceQuerySendTemplateByCategoryRequest : JdRequestBase<SellerDeliverySendPromiseTemplateJsfServiceQuerySendTemplateByCategoryResponse>
{
public override string ApiName => "jingdong.seller.delivery.SendPromiseTemplateJsfService.querySendTemplateByCategory";
public int categoryId { get; set; }
public bool dzSku { get; set; }
protected override void PrepareParam(IDictionary<string, object> paramters)
{
paramters.Add("categoryId", this.categoryId);
paramters.Add("dzSku", this.dzSku);
}
}
}

2
BBWY.JDSDK/Request/SkuWriteUpdateSkusRequest.cs

@ -41,6 +41,8 @@ namespace Jd.Api.Request
public string outerId { get; set; }
public List<SkuWriteUpdateSkusItemSaleAttrs> multiCateProps { get; set; }
public int? promiseId { get; set; }
}
public class SkuWriteUpdateSkusItemSaleAttrs

11
BBWY.JDSDK/Response/SellerDeliverySendPromiseTemplateJsfServiceQuerySendTemplateByCategoryResponse.cs

@ -0,0 +1,11 @@
using Jd.Api;
using System;
using System.Collections.Generic;
using System.Text;
namespace BBWY.JDSDK.Response
{
public class SellerDeliverySendPromiseTemplateJsfServiceQuerySendTemplateByCategoryResponse: JdResponse
{
}
}

2
BBWY.Server.Business/EvaluationAssistant/EvaluationAssistantBusiness.cs

@ -654,7 +654,7 @@ namespace BBWY.Server.Business
MainProductSpu = promotionTask.MainProductSpu,
HaveGiftTemplate = promotionTask.GiftTemplateId != null && promotionTask.GiftTemplateId != 0,
DeleteGiftSkuList = startResponse.DeleteGiftSkuList
}, GetYunDingRequestHeader(), HttpMethod.Post, timeOutSeconds: 150);
}, GetYunDingRequestHeader(), HttpMethod.Post, timeOutSeconds: 300);
var errorBack = new Action<long, string>((id, errorMsg) =>
{

71
BBWY.Server.Business/PlatformSDK/JDBusiness.cs

@ -1,5 +1,6 @@
using BBWY.Common.Extensions;
using BBWY.Common.Models;
using BBWY.JDSDK.Request;
using BBWY.Server.Model;
using BBWY.Server.Model.Dto;
using Jd.ACES;
@ -967,6 +968,9 @@ namespace BBWY.Server.Business
var response = jdClient.Execute(req, request.AppToken, DateTime.Now.ToLocalTime());
if (response.Json == null)
response.Json = JObject.Parse(response.Body);
nLogManager.Default().Info($"获取销售属性 任务Id {request.Id} 返回内容 {response.Body} 模板sku数量 {request.GiftTemplateSkuList.Count()}");
var colorProperty = response.Json["jingdong_category_read_findAttrsByCategoryIdUnlimitCate_responce"]["findattrsbycategoryidunlimitcate_result"].FirstOrDefault(j => j["attrValueList"] != null && j["attrValueList"].Count() > 0);
if (colorProperty == null)
{
@ -999,15 +1003,16 @@ namespace BBWY.Server.Business
barCode = request.MainProductBarCode,
outerId = $"{request.OuterId}{(i + 1).ToString().PadLeft(3, '0')}",
saleAttrs = new List<SkuWriteUpdateSkusItemSaleAttrs>()
{
new SkuWriteUpdateSkusItemSaleAttrs()
{
type = "com.jd.pop.ware.ic.api.domain.Prop",
attrId = colorProperty.Value<string>("attId"),
attrValues = new List<string>() { colorProperty.Value<string>("id") },
index = takeColorIndex
new SkuWriteUpdateSkusItemSaleAttrs()
{
type = "com.jd.pop.ware.ic.api.domain.Prop",
attrId = colorProperty.Value<string>("attId"),
attrValues = new List<string>() { colorProperty.Value<string>("id") },
index = takeColorIndex
}
}
}
//promiseId = 30603710 //固定时效模板Id 48小时发货
};
p.multiCateProps = new List<SkuWriteUpdateSkusItemSaleAttrs>();
@ -1065,14 +1070,52 @@ namespace BBWY.Server.Business
res.Json = JObject.Parse(res.Body);
if (res.IsError)
{
RollBackWhenStartPromotionError(request.AppKey, request.AppSecret, request.AppToken, null, request.MainProductSpu, request.FullTitle, brandName, false);
var errorMsg = res.Body.Contains("en_desc") ?
res.Json["error_response"].Value<string>("en_desc") :
(string.IsNullOrEmpty(res.ErrorMsg) ? res.ErrMsg : res.ErrorMsg);
if (errorMsg.Contains("此类目发货时效必填"))
{
int? promiseId = null;
#region 查询时效模板
{
var shixiaoReq = new SellerDeliverySendPromiseTemplateJsfServiceQuerySendTemplateByCategoryRequest();
shixiaoReq.categoryId = int.Parse(request.MainProductCategoryId);
shixiaoReq.dzSku = true;
var shixiaoRes = jdClient.Execute(shixiaoReq, request.AppToken, DateTime.Now.ToLocalTime());
if (shixiaoRes.IsError)
{
RollBackWhenStartPromotionError(request.AppKey, request.AppSecret, request.AppToken, null, request.MainProductSpu, request.FullTitle, brandName, false);
throw new BusinessException($"查询时效模板失败-{(string.IsNullOrEmpty(shixiaoRes.ErrorMsg) ? shixiaoRes.ErrMsg : shixiaoRes.ErrorMsg)}");
}
if (shixiaoRes.Json == null)
shixiaoRes.Json = JObject.Parse(shixiaoRes.Body);
var shixiaoJToken = shixiaoRes.Json["jingdong_seller_delivery_SendPromiseTemplateJsfService_querySendTemplateByCategory_responce"]["returnType"]["bizResponse"]["promiseTemplateDtoList"].Children().FirstOrDefault();
if (shixiaoJToken == null)
{
RollBackWhenStartPromotionError(request.AppKey, request.AppSecret, request.AppToken, null, request.MainProductSpu, request.FullTitle, brandName, false);
throw new BusinessException($"查询时效模板失败-未查询到时效模板");
}
promiseId = shixiaoJToken.Value<int>("templateId");
}
#endregion
if (res.Body.Contains("en_desc"))
throw new BusinessException($"上架sku失败-{res.Json["error_response"].Value<string>("en_desc")}");
foreach (var skuParam in req.skus)
skuParam.promiseId = promiseId;
res = jdClient.Execute(req, request.AppToken, DateTime.Now.ToLocalTime());
if (res.IsError)
{
errorMsg = res.Body.Contains("en_desc") ?
res.Json["error_response"].Value<string>("en_desc") :
(string.IsNullOrEmpty(res.ErrorMsg) ? res.ErrMsg : res.ErrorMsg);
RollBackWhenStartPromotionError(request.AppKey, request.AppSecret, request.AppToken, null, request.MainProductSpu, request.FullTitle, brandName, false);
throw new BusinessException($"上架sku失败-{errorMsg}");
}
}
else
throw new BusinessException($"上架sku失败-{(string.IsNullOrEmpty(res.ErrorMsg) ? res.ErrMsg : res.ErrorMsg)}");
/*{"error_response":{"code":"501","en_desc":"com.jd.bk.saf.exception.SafJosException:京东价超出该类目允许范围:12.15-39437元!#821c1c3b382f476abeb21f1f515274c7(Solution reference: https://jos.jd.com/commondoc?listId=171)","zh_desc":"调用参数错误(解决方案参考: https://jos.jd.com/commondoc?listId=171)"}}*/
{
RollBackWhenStartPromotionError(request.AppKey, request.AppSecret, request.AppToken, null, request.MainProductSpu, request.FullTitle, brandName, false);
throw new BusinessException($"上架sku失败-{errorMsg}");
}
}
var newSkuList = res.Json["jingdong_sku_write_updateSkus_responce"]["skuList"].ToList().Select(x => x.Value<string>("skuId")).ToList();
@ -1249,7 +1292,7 @@ namespace BBWY.Server.Business
public override void StartJDPromotionDelayTask(StartPromotionTaskDelayRequest request)
{
Thread.Sleep(30 * 1000);
Thread.Sleep(60 * 1000);
try
{
CheckJDPromotionTask(request.JDPromotionId, request.AppKey, request.AppSecret, request.AppToken);

40
BBWY.Server.Business/PurchaseOrderV2/BatchPurchase/BatchPurchaseBusiness.cs

@ -1047,27 +1047,29 @@ namespace BBWY.Server.Business
var platformSDKBusiness = platformSDKBusinessList.FirstOrDefault(p => p.Platform == request.Platform);
var payOrderResponse = platformSDKBusiness.CancelPurchaseOrder(request);
if (payOrderResponse.Success)//取消成功
if (!payOrderResponse.Success)//取消成功
{
//var order = fsql.Select<PurchaseOrderV2>().Where(p => p.Id == request.OrderId).ToOne();
fsql.Update<PurchaseOrderV2>(request.OrderId)
.Set(po => po.OrderState, Enums.PurchaseOrderState.)
.ExecuteAffrows();
try
{
var qikuResponse = restApiService.SendRequest("http://qiku.qiyue666.com/",
$"/api/PackPurchaseTask/CancelOrderPackTask?orderId={request.OrderId}",
null,
null,
HttpMethod.Post);
if (qikuResponse.StatusCode != System.Net.HttpStatusCode.OK)
throw new Exception(qikuResponse.Content);
}
catch (Exception ex)
{
nLogManager.GetLogger($"取消打包任务-{request.OrderId}").Error(ex, JsonConvert.SerializeObject(request));
}
if (!payOrderResponse.Msg.Contains("订单已删除"))
throw new BusinessException(payOrderResponse.Msg);
}
//var order = fsql.Select<PurchaseOrderV2>().Where(p => p.Id == request.OrderId).ToOne();
fsql.Update<PurchaseOrderV2>(request.OrderId)
.Set(po => po.OrderState, Enums.PurchaseOrderState.)
.ExecuteAffrows();
try
{
var qikuResponse = restApiService.SendRequest("http://qiku.qiyue666.com/",
$"/api/PackPurchaseTask/CancelOrderPackTask?orderId={request.OrderId}",
null,
null,
HttpMethod.Post);
if (qikuResponse.StatusCode != System.Net.HttpStatusCode.OK)
throw new Exception(qikuResponse.Content);
}
catch (Exception ex)
{
nLogManager.GetLogger($"取消打包任务-{request.OrderId}").Error(ex, JsonConvert.SerializeObject(request));
}
}

2
BBWY.Server.Model/Db/PurchaseOrder/PurchaseOrderV2.cs

@ -174,7 +174,7 @@ namespace BBWY.Server.Model.Db
/// <summary>
/// 备注信息
/// </summary>
[Column(StringLength = 1000)]
public string Remark { get; set; }
/// <summary>

13
BBWY.Test/BBWY.Test.csproj

@ -5,10 +5,23 @@
<TargetFramework>netcoreapp3.1</TargetFramework>
</PropertyGroup>
<ItemGroup>
<None Remove="NLog.config" />
</ItemGroup>
<ItemGroup>
<Content Include="NLog.config">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
<ExcludeFromSingleFile>true</ExcludeFromSingleFile>
<CopyToPublishDirectory>PreserveNewest</CopyToPublishDirectory>
</Content>
</ItemGroup>
<ItemGroup>
<PackageReference Include="FreeSql" Version="2.6.100" />
<PackageReference Include="FreeSql.Provider.MySql" Version="2.6.100" />
<PackageReference Include="Newtonsoft.Json" Version="13.0.1" />
<PackageReference Include="NLog" Version="4.7.12" />
</ItemGroup>
<ItemGroup>

14
BBWY.Test/NLog.config

@ -0,0 +1,14 @@
<nlog xmlns="http://www.nlog-project.org/schemas/NLog.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<targets>
<target name="errorFile" xsi:type="File" fileName="${basedir}/logs/${logger}/error/${shortdate}.txt"
layout="${longdate} | ${level:uppercase=false} ${newline}${message} ${newline}${onexception:${exception:format=tostring} ${newline}${stacktrace} ${newline}${newline}"
autoFlush="true"/>
<target name="infoFile" xsi:type="File" fileName="${basedir}/logs/${logger}/info/${shortdate}.txt"
layout="${longdate} | ${level:uppercase=false} ${newline}${message} ${newline}"
autoFlush="true"/>
</targets>
<rules>
<logger name="*" level="Error" writeTo="errorFile"/>
<logger name="*" level="Info" writeTo="infoFile" />
</rules>
</nlog>

50
BBWY.Test/Program.cs

@ -1,5 +1,6 @@
using BBWY._1688SDK.entity.Order;
using BBWY.Common.Models;
using BBWY.Server.Business;
using com.alibaba.openapi.client;
using com.alibaba.openapi.client.policy;
using Jd.Api;
@ -63,50 +64,11 @@ namespace BBWY.Test
{
var request = new { AppKey = "1074007", AppSecret = "0r9u4Fc9zK", AppToken = "8093fdc5-6adc-46c7-b640-87218c1dcccd" };
var client = GetSyncAPIClient(request.AppKey, request.AppSecret);
RequestPolicy reqPolicy = new RequestPolicy();
reqPolicy.HttpMethod = "POST";
reqPolicy.NeedAuthorization = false;
reqPolicy.RequestSendTimestamp = false;
reqPolicy.UseHttps = false;
reqPolicy.UseSignture = true;
reqPolicy.AccessPrivateApi = false;
Request _request = new Request();
APIId apiId = new APIId
{
Name = "alibaba.trade.pay.protocolPay.preparePay",
NamespaceValue = "com.alibaba.trade",
Version = 1
};
_request.ApiId = apiId;
//var param = new
//{
// orderId = 3494275885416167358
//};
//var param = new tradeWithholdPreparePayParam()
//{
// orderId = 3494275885416167358
//};
var param = new
{
tradeWithholdPreparePayParam = new
{
orderId = 3494275885416167358
}
};
_request.RequestEntity = param;
if (!string.IsNullOrEmpty(request.AppToken))
_request.AccessToken = request.AppToken;
var result = client.NewRequest(_request, reqPolicy);
if (result.Value<bool>("success") != true)
throw new BusinessException(result.Value<string>("message"));
Console.WriteLine(JsonConvert.SerializeObject(result));
var nNogManager = new NLogManager();
var pid = Process.GetCurrentProcess().Id;
var message = $"{pid}-{Guid.NewGuid()}";
Console.WriteLine(message);
nNogManager.GetLogger(pid.ToString()).Info(message);
}
Console.ReadKey();

35
BBWY.Test/Properties/NLogManager.cs

@ -0,0 +1,35 @@
using NLog;
using System.Collections.Concurrent;
using System.Collections.Generic;
namespace BBWY.Server.Business
{
public class NLogManager
{
private ConcurrentDictionary<string, ILogger> loggerDictionary;
private string defaultLoggerName = "default";
public NLogManager()
{
loggerDictionary = new ConcurrentDictionary<string, ILogger>();
loggerDictionary.TryAdd("default", NLog.LogManager.GetLogger(defaultLoggerName));
}
public ILogger Default()
{
return loggerDictionary[defaultLoggerName];
}
public ILogger GetLogger(string loggerName)
{
if (string.IsNullOrEmpty(loggerName))
return Default();
if (!loggerDictionary.TryGetValue(loggerName, out ILogger logger))
{
logger = NLog.LogManager.GetLogger(loggerName);
loggerDictionary.TryAdd(loggerName, logger);
}
return logger;
}
}
}
Loading…
Cancel
Save