Commit fd554ff1 by 泽锋 李

新增sku特性拉取

parent 7e065802
...@@ -6,6 +6,7 @@ using System.Collections.Generic; ...@@ -6,6 +6,7 @@ using System.Collections.Generic;
using System.Linq; using System.Linq;
using System.Text; using System.Text;
using Dapper; using Dapper;
using System.Threading;
namespace AutoTurnOver.DB namespace AutoTurnOver.DB
{ {
...@@ -896,5 +897,38 @@ where t1.`code`=@code limit 1 ...@@ -896,5 +897,38 @@ where t1.`code`=@code limit 1
return datas; return datas;
} }
public static List<api_bailun_sku_character_response_dto.data_dto> GetSkuCharacterBailun(List<string> skus, int count = 0)
{
try
{
var url = ConfigHelper.GetValue("Sku:character");
var response_json = HttpHelper.Request(url, RequestType.POST, skus.ToJson(), entype: "application/json", timeout: 1000 * 60 * 30);
return response_json.ToObj<api_bailun_sku_character_response_dto>().result;
}
catch (Exception ex)
{
if (count <= 20)
{
Thread.Sleep(10 * 1000);
count++;
return GetSkuCharacterBailun(skus, count);
}
throw new Exception($" 抓取 sku 数据异常:重试次数{count} 参数【{skus.ToJson()}】,message: 【{ex.Message}】,【{ex.StackTrace}】 ");
}
}
/// <summary>
/// 抓取所有产品特性
/// </summary>
/// <returns></returns>
public static List<api_bailun_character_response_dto.data_dto> GetCharacterBailun()
{
var url = ConfigHelper.GetValue("Sku:character_list");
var response_json = HttpHelper.Request(url, RequestType.GET, timeout: 1000 * 60 * 30);
return response_json.ToObj<api_bailun_character_response_dto>().result;
}
} }
} }
...@@ -39,5 +39,108 @@ namespace AutoTurnOver.DB ...@@ -39,5 +39,108 @@ namespace AutoTurnOver.DB
return _connection.Page<dc_base_sku>(sql, search, parameters); return _connection.Page<dc_base_sku>(sql, search, parameters);
} }
public static List<dc_base_sku_character> CharacterAll()
{
return _connection.Query<dc_base_sku_character>(" select * from dc_base_sku_character ").ToList();
}
/// <summary>
/// 同步sku特性
/// </summary>
public static void SynchroSkuCharacter()
{
var task_name = $"SynchroSkuCharacter_v1";
// 查询最后一次成功抓取的记录
var last_task_synchro_log = _connection.QuerySingleOrDefault<task_synchro_log>(" select * from task_synchro_log where task_name=@task_name and status=1 order by end_time desc limit 1 ", new { task_name = task_name });
var new_task_synchro_log = new task_synchro_log
{
create_date = DateTime.Now,
end_time = DateTime.Now.AddMinutes(-2),
status = 0,
task_name = task_name
};
if (last_task_synchro_log != null)
{
new_task_synchro_log.start_time = last_task_synchro_log.end_time.AddMinutes(-1);
}
else
{
new_task_synchro_log.start_time = new DateTime(2016,1,1);
}
new_task_synchro_log.id = _connection.Insert(new_task_synchro_log) ?? 0;
int count = 0;
int page = 1;
int rows = 300;
var character_list = CharacterAll();
var now = DateTime.Now;
while (true)
{
var datas = _connection.Query<string>($@" select bailun_sku from dc_base_sku as t1
where t1.gmt_modified>=@btime and t1.gmt_modified <=@etime
order by t1.gmt_modified asc
limit {(page - 1) * rows},{rows} ", new { btime = new_task_synchro_log.start_time, etime = new_task_synchro_log.end_time }, commandTimeout: 0).ToList();
if (datas.Count <= 0) { break; }
page++;
// 查询所有sku的特性
var characters = ApiUtility.GetSkuCharacterBailun(datas);
foreach (var item in datas)
{
if (!string.IsNullOrWhiteSpace(item))
{
var itemCharacters = characters.FirstOrDefault(s => item.Equals(s.sku, StringComparison.InvariantCultureIgnoreCase));
var character_names = ((itemCharacters == null || string.IsNullOrWhiteSpace(itemCharacters.productCharacter)) ? "" : string.Join(",",
itemCharacters.productCharacter.Split(',').Select(s => (character_list.FirstOrDefault(c => c.key == s) ?? new dc_base_sku_character()).name)
));
_connection.Execute(" update dc_base_sku set character_names=@character_names where bailun_sku=@bailun_sku ",new {
bailun_sku = item,
character_names = character_names
});
}
}
}
new_task_synchro_log.count = count;
new_task_synchro_log.status = 1;
_connection.Update(new_task_synchro_log);
}
/// <summary>
/// 抓取所有特性
/// </summary>
public static void SynchroCharacter()
{
var conn = _connection;
var datas = ApiUtility.GetCharacterBailun();
if (datas != null && datas.Count >= 1)
{
foreach (var item in datas)
{
var db_data = new dc_base_sku_character()
{
key = item.value,
name = item.text,
status = item.status
};
db_data.id = conn.QueryFirstOrDefault<int?>(" select id from dc_base_sku_character where `key`=@key ", new { db_data.key }) ?? 0;
if (db_data.id > 0)
{
conn.Update(db_data);
}
else
{
conn.Insert(db_data);
}
}
}
}
} }
} }
using System;
using System.Collections.Generic;
using System.Text;
namespace AutoTurnOver.Models.ApiDto
{
public class api_bailun_sku_character_response_dto
{
public List<data_dto> result { get; set; }
public class data_dto
{
public string sku { get; set; }
/// <summary>
/// 重量 g
/// </summary>
public decimal weight { get; set; }
public decimal price { get; set; }
public decimal packingPrice { get; set; }
/// <summary>
/// 包装体积 例:33,24,2.4
/// </summary>
public string packingSize { get; set; }
/// <summary>
/// 产品体积 例:33,24,2.4
/// </summary>
public string productSize { get; set; }
/// <summary>
/// 包装名称
/// </summary>
public string packingName { get; set; }
/// <summary>
/// 包装重量
/// </summary>
public decimal packingWeight { get; set; }
/// <summary>
/// 产品特性
/// </summary>
public string productCharacter { get; set; }
}
}
public class api_bailun_character_response_dto
{
public List<data_dto> result { get; set; }
public class data_dto
{
public string value { get; set; }
public string text { get; set; }
public int status { get; set; }
}
}
}
using System;
using System.Collections.Generic;
using System.Text;
namespace AutoTurnOver.Models
{
public class dc_base_sku_character
{
public int id { get; set; }
public string name { get; set; }
public string key { get; set; }
public int status { get; set; }
}
}
...@@ -37,7 +37,7 @@ namespace ResetOutofstock ...@@ -37,7 +37,7 @@ namespace ResetOutofstock
//dc_base_trans_temp_schedule_dao.SynchroTransTempScheduleData(true); //dc_base_trans_temp_schedule_dao.SynchroTransTempScheduleData(true);
//daily.ResetGmvExtendSales(now); //daily.ResetGmvExtendSales(now);
//report.ResetTransExpectArrivaltime(); //report.ResetTransExpectArrivaltime();
dc_base_pps_sell_product_dao.SyncData(); //base_sku_dao.SynchroSkuCharacter();
} }
catch (Exception ex) catch (Exception ex)
{ {
......
...@@ -361,6 +361,50 @@ namespace ResetOutofstock ...@@ -361,6 +361,50 @@ namespace ResetOutofstock
} }
}); });
Task.Factory.StartNew(() =>
{
while (true)
{
try
{
Console.WriteLine($"开始 拉取sku特性,线程Id:{Thread.CurrentThread.ManagedThreadId}{DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")}");
base_sku_dao.SynchroCharacter();
Console.WriteLine($"结束 拉取sku特性,线程Id:{Thread.CurrentThread.ManagedThreadId}{DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")}");
Thread.Sleep(60 * 60 * 1000);
}
catch (Exception ex)
{
Console.WriteLine("拉取sku特性:" + ex.Message);
Console.WriteLine("拉取sku特性:" + ex.StackTrace);
}
}
});
Task.Factory.StartNew(() =>
{
while (true)
{
try
{
Console.WriteLine($"开始 拉取sku特性,线程Id:{Thread.CurrentThread.ManagedThreadId}{DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")}");
base_sku_dao.SynchroSkuCharacter();
Console.WriteLine($"结束 拉取sku特性,线程Id:{Thread.CurrentThread.ManagedThreadId}{DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")}");
Thread.Sleep( 60 * 1000);
}
catch (Exception ex)
{
Console.WriteLine("拉取sku特性:" + ex.Message);
Console.WriteLine("拉取sku特性:" + ex.StackTrace);
}
}
});
......
...@@ -40,5 +40,10 @@ ...@@ -40,5 +40,10 @@
}, },
"Order": { "Order": {
"Bailun_TransferLog": "http://api.wms.bailuntec.com/api/services/app/AllotOrderService/SearchOrderSkuRecord" "Bailun_TransferLog": "http://api.wms.bailuntec.com/api/services/app/AllotOrderService/SearchOrderSkuRecord"
},
"Sku": {
"base": "http://api.skums.bailuntec.com/api/sku/productsku/gmtproductskus",
"character": "http://api.skums.bailuntec.com/api/sku/productsku/productskubyskus",
"character_list": "http://api.skums.bailuntec.com/api/sku/productcommon/getproductdictionarybycode?code=TagsProCharacter"
} }
} }
...@@ -41,5 +41,10 @@ ...@@ -41,5 +41,10 @@
}, },
"Order": { "Order": {
"Bailun_TransferLog": "http://api.wms.bailuntec.com/api/services/app/AllotOrderService/SearchOrderSkuRecord" "Bailun_TransferLog": "http://api.wms.bailuntec.com/api/services/app/AllotOrderService/SearchOrderSkuRecord"
},
"Sku": {
"base": "http://api.skums.bailuntec.com/api/sku/productsku/gmtproductskus",
"character": "http://api.skums.bailuntec.com/api/sku/productsku/productskubyskus",
"character_list": "http://api.skums.bailuntec.com/api/sku/productcommon/getproductdictionarybycode?code=TagsProCharacter"
} }
} }
...@@ -40,5 +40,11 @@ ...@@ -40,5 +40,11 @@
}, },
"Order": { "Order": {
"Bailun_TransferLog": "http://api.wms.bailuntec.com/api/services/app/AllotOrderService/SearchOrderSkuRecord" "Bailun_TransferLog": "http://api.wms.bailuntec.com/api/services/app/AllotOrderService/SearchOrderSkuRecord"
},
"Sku": {
"base": "http://10.0.8.13:8000/api/sku/productsku/gmtproductskus",
"character": "http://10.0.8.13:8000/api/sku/productsku/productskubyskus",
"character_list": "http://10.0.8.13:8000/api/sku/productcommon/getproductdictionarybycode?code=TagsProCharacter"
} }
} }
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment