dataHelper.cs 41 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114
  1. using BizCom;
  2. using Castle.ActiveRecord.Framework.Internal;
  3. using Newtonsoft.Json;
  4. using Newtonsoft.Json.Linq;
  5. using NHibernate.Mapping;
  6. using NPOI.POIFS.Properties;
  7. using NPOI.SS.Formula.Functions;
  8. using NPOI.SS.UserModel;
  9. using SiteCore.Handler;
  10. using SiteCore.Redis;
  11. using SiteCore.taobao;
  12. using SiteCore.taoObj;
  13. using SQLData;
  14. using System;
  15. using System.Collections;
  16. using System.Collections.Generic;
  17. using System.Collections.Specialized;
  18. using System.Data;
  19. using System.Diagnostics;
  20. using System.Linq;
  21. using System.Net;
  22. using System.Net.Http;
  23. using System.Net.Http.Headers;
  24. using System.Reflection;
  25. using System.Runtime.Remoting.Messaging;
  26. using System.Runtime.Remoting.Metadata.W3cXsd2001;
  27. using System.Security.Cryptography;
  28. using System.Security.Policy;
  29. using System.Security.Principal;
  30. using System.Text;
  31. using System.Threading.Tasks;
  32. using System.Web;
  33. using System.Web.Routing;
  34. using Utils.Serialization;
  35. using static SiteCore.taoObj.dataShopResponseVo;
  36. using static SiteCore.taoObj.dataSpuInfoResponseVo;
  37. using static SiteCore.taoObj.work_core_vo;
  38. namespace SiteCore.Handler
  39. {
  40. public class dataHelper : BaseHandler, IHttpHandler
  41. {
  42. public void ProcessRequest(HttpContext context)
  43. {
  44. if (UrlParmsCheck("t"))
  45. {
  46. String tname = GetString("t");
  47. MethodInfo method;
  48. Type type = this.GetType();
  49. method = type.GetMethod(tname);
  50. con = context;
  51. if (method == null)
  52. {
  53. conError("找不到对应方法,服务器返回错误");
  54. return;
  55. }
  56. successFlag = false;
  57. context.Response.ContentType = "application/json";
  58. context.Response.Headers.Set("Access-Control-Allow-Origin", "*");
  59. try
  60. {
  61. method.Invoke(this, null);
  62. }
  63. catch (Exception ex)
  64. {
  65. conError("处理接口错误,服务器返回错误");
  66. }
  67. finally
  68. {
  69. }
  70. }
  71. }
  72. public static string GetMD5Hash(string input)
  73. {
  74. // 创建一个MD5对象
  75. using (MD5 md5 = MD5.Create())
  76. {
  77. // 将输入字符串转换为字节数组
  78. byte[] inputBytes = Encoding.UTF8.GetBytes(input);
  79. // 计算输入字节数组的哈希值
  80. byte[] hashBytes = md5.ComputeHash(inputBytes);
  81. // 将字节数组转换为字符串
  82. StringBuilder hashString = new StringBuilder();
  83. foreach (byte b in hashBytes)
  84. {
  85. hashString.AppendFormat("{0:x2}", b);
  86. }
  87. return hashString.ToString();
  88. }
  89. }
  90. Dictionary<string, string> keysMap = new Dictionary<string, string>()
  91. {
  92. {"UzJwXAhiD9","GFyIeZLRIATXMJYnsc5nZPAwK9" },
  93. };
  94. public void productInfo()
  95. {
  96. bool result = checkParams();
  97. if (!result)
  98. {
  99. return;
  100. }
  101. string productName = GetPostString("productName");
  102. string id = GetPostString("id");
  103. if (string.IsNullOrEmpty(productName))
  104. {
  105. returnErrorMsg("参数没有产品名称");
  106. return;
  107. }
  108. if (string.IsNullOrEmpty(id))
  109. {
  110. returnErrorMsg("参数没有产品id");
  111. return;
  112. }
  113. CeErpProduct ceErpProduct = CeErpProduct.GetByName(id);
  114. bool isCreate = false;
  115. if (ceErpProduct == null)
  116. {
  117. ceErpProduct = new CeErpProduct();
  118. isCreate = true;
  119. }
  120. ceErpProduct.uuid = id;
  121. ceErpProduct.PType = productName;
  122. ceErpProduct.UpdateTime = DateTime.Now;
  123. ceErpProduct.UpdateUserName = "朱义义";
  124. if (!isCreate)
  125. {
  126. ceErpProduct.Update();
  127. }
  128. else
  129. {
  130. ceErpProduct.CreateTime = ceErpProduct.UpdateTime;
  131. ceErpProduct.CreateUserName = ceErpProduct.UpdateUserName;
  132. ceErpProduct.Create();
  133. }
  134. returnSuccessMsg("创建成功!");
  135. }
  136. public bool checkParams()
  137. {
  138. string appKey = GetPostString("appKey");
  139. string appSecret = "";
  140. if (!keysMap.ContainsKey(appKey))
  141. {
  142. returnErrorMsg("appKey不存在");
  143. return false;
  144. }
  145. keysMap.TryGetValue(appKey, out appSecret);
  146. if (appSecret == "")
  147. {
  148. returnErrorMsg("appSecret不存在");
  149. return false;
  150. }
  151. double timestamp = GetPostDouble("timestamp");//秒级时间戳
  152. if (timestamp == 0)
  153. {
  154. returnErrorMsg("时间戳不存在");
  155. return false;
  156. }
  157. DateTime dtDateTime = new DateTime(1970, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc);
  158. dtDateTime = dtDateTime.AddSeconds(timestamp).ToLocalTime();
  159. if (dtDateTime != null && dtDateTime.CompareTo(DateTime.Now.AddMinutes(-5)) < 0)
  160. {
  161. returnErrorMsg("请求失效");
  162. return false;
  163. }
  164. string sign = GetPostString("sign");
  165. if (string.IsNullOrEmpty(sign))
  166. {
  167. returnErrorMsg("签名不存在");
  168. return false;
  169. }
  170. string param = appKey + timestamp + appSecret;
  171. string localSign = GetMD5Hash(param);
  172. if (!localSign.Equals(sign))
  173. {
  174. returnErrorMsg("签名错误");
  175. return false;
  176. }
  177. return true;
  178. }
  179. //http://47.114.150.226:88/Handler/dataHelper.ashx?t=get_order_info post请求参数(参数放body中):string tid(淘宝订单号)
  180. public void get_order_info()
  181. {
  182. bool result = checkParams();
  183. if (!result)
  184. {
  185. return;
  186. }
  187. string code = GetPostString("code");
  188. if (string.IsNullOrEmpty(code))
  189. {
  190. returnErrorMsg("参数错误");
  191. return;
  192. }
  193. CeErpTradeCell ceErpTradeCell = CeErpTradeCell.GetByCode(code);
  194. if (ceErpTradeCell == null)
  195. {
  196. returnErrorMsg("查无订单");
  197. return;
  198. }
  199. CeErpTrade ceErpTrade = CeErpTrade.Get(ceErpTradeCell.tid);
  200. Dictionary<string, object> data = new Dictionary<string, object>();
  201. data.Add("ctid", ceErpTradeCell.ctid);
  202. data.Add("isSF", ceErpTradeCell.IsSF);
  203. if (ceErpTrade != null)
  204. {
  205. data.Add("province", ceErpTrade.receiver_state);
  206. }
  207. ReturnSuccess(JsonConvert.SerializeObject(data));
  208. return;
  209. }
  210. //http://47.114.150.226:88/Handler/dataHelper.ashx?t=get_cell_info post请求参数(参数放body中):string tid(淘宝订单号)
  211. public void get_shop_code()
  212. {
  213. bool result = checkParams();
  214. if (!result)
  215. {
  216. return;
  217. }
  218. string name = GetPostString("name");
  219. if (string.IsNullOrEmpty(name))
  220. {
  221. returnErrorMsg("参数错误");
  222. return;
  223. }
  224. string code = "";
  225. string key = "shopName_code_" + name;
  226. if (RedisHelper.HasKey(key))
  227. {
  228. code = RedisHelper.StringGet(key).ToString();
  229. }
  230. if (code == "")
  231. {
  232. CeErpShop shop = CeErpShop.GetShopIdByName(name);
  233. if (shop == null)
  234. {
  235. returnErrorMsg("无店铺");
  236. return;
  237. }
  238. code = shop.SName;
  239. RedisHelper.StringSet(key, code);
  240. }
  241. Dictionary<string, object> data = new Dictionary<string, object>();
  242. data.Add("code", code);
  243. ReturnSuccess(JsonConvert.SerializeObject(data));
  244. return;
  245. }
  246. public void getOrderInfo()
  247. {
  248. string ctid = GetPostString("ctid");
  249. if (string.IsNullOrEmpty(ctid))
  250. {
  251. returnErrorMsg("参数错误");
  252. return;
  253. }
  254. CeErpTradeCell ceErpTradeCell = CeErpTradeCell.GetByCtid(ctid);
  255. if (ceErpTradeCell == null)
  256. {
  257. returnErrorMsg("查无订单");
  258. return;
  259. }
  260. CeErpTrade ceErpTrade = CeErpTrade.Get(ceErpTradeCell.tid);
  261. CeErpProduct ceErpProduct = CeErpProduct.Get(ceErpTradeCell.ProductId);
  262. Dictionary<string, object> data = new Dictionary<string, object>();
  263. data.Add("orderNumber", ctid);
  264. data.Add("customerName", ceErpTrade.buyer_nick);
  265. DateTime dateTime = (DateTime)ceErpTradeCell.pay_time;
  266. data.Add("orderTime", dateTime.ToString("yyyy-MM-dd HH:mm:ss"));
  267. data.Add("commodityName", ceErpProduct.PType);
  268. data.Add("storeName", ceErpTrade.seller_nick);
  269. data.Add("orderRemark", ceErpTradeCell.seller_memo);
  270. string sql = string.Format("SELECT tid FROM [dbo].[view_ErpTradeCell] WITH(NOLOCK) WHERE (buyer_id = '{0}') and seller_nick = '{1}' and OrderState < 5 and IsSample = 0 ", ceErpTrade.buyer_id, ceErpTrade.seller_nick);
  271. DataTable dataTable = DbHelper.DbConn.ExecuteDataset(sql).Tables[0];
  272. int orderCount = 1;
  273. if (dataTable != null && dataTable.Rows != null && dataTable.Rows.Count > 0)
  274. {
  275. orderCount = dataTable.Rows.Count;
  276. }
  277. data.Add("orderCount", orderCount);
  278. ReturnSuccess(JsonConvert.SerializeObject(data));
  279. return;
  280. }
  281. //http://47.114.150.226:88/Handler/dataHelper.ashx?t=get_cell_info post请求参数(参数放body中):string tid(淘宝订单号)
  282. public void get_cell_info()
  283. {
  284. string tid = GetPostString("tid");
  285. string name = GetPostString("nickName");
  286. string where = "";
  287. List<string> rows = new List<string>();
  288. if (!string.IsNullOrEmpty(tid))
  289. {
  290. rows.Add(string.Format(" tid = '{0}' ", tid));
  291. }
  292. if (!string.IsNullOrEmpty(name))
  293. {
  294. rows.Add(string.Format(" buyer_nick = '{0}' ", name));
  295. }
  296. where = string.Join("and", rows);
  297. if (where == "")
  298. {
  299. returnErrorMsg("缺少必要参数");
  300. return;
  301. }
  302. string sql = string.Format("SELECT tid,ctid,payment,ProductName,OrderState,Material,Craft,ProductSize,ProductCount,posCode,seller_nick,buyer_nick,buyer_id,FinishDesignTime FROM [dbo].[view_ErpTradeCell] WHERE {0}", where);
  303. DataTable dataTable = DbHelper.DbConn.ExecuteDataset(sql).Tables[0];
  304. List<Dictionary<string, object>> list = new List<Dictionary<string, object>>();
  305. if (dataTable != null && dataTable.Rows.Count > 0)
  306. {
  307. Dictionary<string, object> data = new Dictionary<string, object>();
  308. foreach (DataRow row in dataTable.Rows)
  309. {
  310. int OrderState = Convert.ToInt32(row["OrderState"]);
  311. string state = "";
  312. if (OrderState < 7)
  313. {
  314. state = "待发货";
  315. }
  316. else if (OrderState == 7)
  317. {
  318. state = "已发货";
  319. }
  320. else if (OrderState == 8)
  321. {
  322. state = "交易完成";
  323. }
  324. else if (OrderState == 9)
  325. {
  326. state = "交易关闭";
  327. }
  328. data = new Dictionary<string, object>();
  329. data.Add("tid", row["tid"]);
  330. data.Add("OrderState", state);
  331. data.Add("state", OrderState);
  332. data.Add("shopCode", row["posCode"]);
  333. data.Add("buyerNick", row["buyer_nick"]);
  334. data.Add("buyerId", row["buyer_id"]);
  335. data.Add("shopName", row["seller_nick"]);
  336. data.Add("ctid", row["ctid"]);
  337. data.Add("payment", row["payment"]);
  338. data.Add("Material", row["Material"]);
  339. data.Add("Craft", row["Craft"]);
  340. data.Add("ProductSize", row["ProductSize"]);
  341. data.Add("ProductCount", row["ProductCount"]);
  342. data.Add("ProductName", row["ProductName"]);
  343. data.Add("FinishDesignTime", row["FinishDesignTime"]);
  344. list.Add(data);
  345. }
  346. }
  347. ReturnSuccess(JsonConvert.SerializeObject(list));
  348. return;
  349. }
  350. public void getOrderInvoiceInfo()
  351. {
  352. string tids = GetPostString("tids");
  353. List<string> list = tids.Split(',').ToList();
  354. return;
  355. }
  356. //http://47.114.150.226:88/Handler/dataHelper.ashx?t=update_spu_info post请求参数(参数放body中):string spuId(淘宝订单号)
  357. public void update_spu_info()
  358. {
  359. string spuId = GetPostString("spuId");
  360. string category = GetPostString("category");
  361. string serialNumber = GetPostString("serialNumber");
  362. string operate = GetPostString("operate");
  363. string designer = GetPostString("designer");
  364. string atta = GetPostString("atta");
  365. string upTime = GetPostString("upTime");
  366. int shopId = GetPostInt("shopId");
  367. if (!string.IsNullOrEmpty(spuId))
  368. {
  369. CeErpTradeSpu spu = CeErpTradeSpu.GetBySpuId(spuId);
  370. if (spu == null)
  371. {
  372. returnErrorMsg("找不到对应id");
  373. return;
  374. }
  375. spu.category = category;
  376. spu.serialNumber = serialNumber;
  377. spu.operate = operate;
  378. spu.designer = designer;
  379. spu.atta = atta;
  380. spu.shopId = shopId;
  381. spu.upTime = DateTime.Parse(upTime);
  382. spu.Update();
  383. returnSuccess("修改成功!");
  384. return;
  385. }
  386. returnErrorMsg("缺少必要参数");
  387. }
  388. static string pUrl = "http://36.140.138.139:688/api/";
  389. static string CLIENT_Id = "xclient";
  390. static string CLIENT_SECRET = "0a417ecce58c31b32364ce19ca8fcd15";
  391. static string USER_ID = "ca2d316357fa4e09b9c2aa9f7b2ca3d9";
  392. public static string getSaleOrderSn()
  393. {
  394. string orderSn = "";
  395. string post_url = "http://api.presales.lingtao8.com/open/order/generateSplitOrderUniqueNos/1";
  396. try
  397. {
  398. string remoteInfo = httpSaleContent(HttpMethod.Get, post_url, new Dictionary<string, string>());
  399. saleOrderResponse dataTokenBean = JsonConvert.DeserializeObject<saleOrderResponse>(remoteInfo);
  400. if ("200".Equals(dataTokenBean.code))
  401. {
  402. orderSn = dataTokenBean.data[0];
  403. }
  404. }
  405. catch (Exception ex)
  406. {
  407. XLog.SaveLog(0, "getSaleOrderSn:" + ex.Message);
  408. }
  409. return orderSn;
  410. }
  411. public static void api_orderBack(string orderNumber, string state, string content)
  412. {
  413. string post_url = "http://api.presales.lingtao8.com/open/order/orderProcessReturn";
  414. //string post_url = "http://admin.lingtao.zmht888.com/prod-api/open/order/orderProcessReturn";
  415. string remoteInfo = "";
  416. string param = JsonConvert.SerializeObject(new
  417. {
  418. orderSplitNo = orderNumber,
  419. errorStatus = state,
  420. reason = content
  421. });
  422. Dictionary<string, string> map = new Dictionary<string, string>();
  423. map.Add("orderSplitNo", orderNumber);
  424. map.Add("errorStatus", state);
  425. map.Add("reason", content);
  426. try
  427. {
  428. remoteInfo = httpSaleContent(HttpMethod.Post, post_url, map);
  429. }
  430. catch (Exception ex)
  431. {
  432. XLog.SaveLog(0, "api_orderBack:" + ex.Message);
  433. }
  434. }
  435. public static long GetTimeStamp()
  436. {
  437. return DateTimeOffset.Now.ToUnixTimeSeconds();
  438. }
  439. public static string getToken()
  440. {
  441. //return "eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJhdWQiOlsiYXBpIl0sInNjb3BlIjpbInJlYWQiLCJ3cml0ZSJdLCJleHAiOjE3MzU5NjU0ODAsImF1dGhvcml0aWVzIjpbIm9wZW5hcGkiXSwianRpIjoiYjY4NTRhZjctZjNmMy00OTU0LTk4ZmUtZDRlZTE4ZDllNzQyIiwiY2xpZW50X2lkIjoieGNsaWVudCJ9.E6U0NVMZPcUypl4P7L5718J1X8UxSJg9R7vZX_oMkuEJ-yelNXuYwu7-eAi1JTgIJ0GuuviQu-KEAH-W7sHb7t-JJJc-wLPMsLKmpwQDG2EpiRK5hW5ZmyUgL8rPuTUawKVP5k8SGrN60sVyXA2zKm4ztEQ39EGudXnam1Lld2w";
  442. string token = "";
  443. if (RedisHelper.HasKey("xclient_token"))
  444. {
  445. token = RedisHelper.StringGet("xclient_token").ToString();
  446. if (RedisHelper.HasKey("token_end"))
  447. {
  448. string token_end = RedisHelper.StringGet("token_end").ToString();
  449. long token_endtime = Convert.ToInt64(token_end);
  450. long currentTime = GetTimeStamp();
  451. if (currentTime <= token_endtime)
  452. {
  453. return token;
  454. }
  455. }
  456. }
  457. string post_url = pUrl + "oauth/token";
  458. WebClient wc = new WebClient();
  459. wc.Encoding = Encoding.GetEncoding("utf-8");
  460. List<string> headers = new List<string>();
  461. headers.Add("grant_type=client_credentials");
  462. headers.Add("client_id=" + CLIENT_Id);
  463. headers.Add("client_secret=" + CLIENT_SECRET);
  464. post_url += "?" + string.Join("&", headers);
  465. NameValueCollection PostVars = new NameValueCollection();
  466. string remoteInfo = "";
  467. try
  468. {
  469. byte[] ret = wc.UploadValues(post_url, "POST", PostVars);
  470. remoteInfo = Encoding.GetEncoding("utf-8").GetString(ret);
  471. //remoteInfo = "{\"access_token\":\"eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJhdWQiOlsiYXBpIl0sInNjb3BlIjpbInJlYWQiLCJ3cml0ZSJdLCJleHAiOjE3MjM3OTk0MTUsImF1dGhvcml0aWVzIjpbIm9wZW5hcGkiXSwianRpIjoiZjdhOGVjNmMtOWUyMS00MDZhLWEzNzktYjI0MTU3OTE0ODJmIiwiY2xpZW50X2lkIjoieGNsaWVudCJ9.EL-El6M9AVXvH_hp9E4wqM17sHwynyJBDcZJHYw4AYdJrYAWHEu78-Gn3Hj4FyfDaIkqNk641XSAfVpTiH_sFeTSl8-glSJEeD7OFKSkoJjrj0_Ft7kFZZs0XAhbgo4m5rI3Qbeq_87_0K5wKqRcygjUee82MFcIDueTcUg3p9c\",\"token_type\":\"bearer\",\"expires_in\":2052,\"scope\":\"read write\",\"jti\":\"f7a8ec6c-9e21-406a-a379-b2415791482f\",\"aud\":[\"api\"],\"exp\":1723799415,\"authorities\":[\"openapi\"],\"client_id\":\"xclient\"}";
  472. dataTokenBean dataTokenBean = JsonConvert.DeserializeObject<dataTokenBean>(remoteInfo);
  473. token = dataTokenBean.access_token;
  474. string timeEnd = dataTokenBean.exp;
  475. RedisHelper.StringSet("xclient_token", token);
  476. RedisHelper.StringSet("token_end", timeEnd);
  477. }
  478. catch (Exception ex)
  479. {
  480. }
  481. return token;
  482. }
  483. /// <summary>
  484. /// 获取店铺信息
  485. /// </summary>
  486. /// <param name="shopId"></param>
  487. /// <returns></returns>
  488. public static shopInfo getShopDataInfo(string shopId)
  489. {
  490. try
  491. {
  492. string post_url = pUrl + "openapi/v3/bo/list";
  493. string param = JsonConvert.SerializeObject(new
  494. {
  495. schemaCode = "Store_01",
  496. userId = USER_ID,
  497. queryCondition = new
  498. {
  499. operatorType = 1,
  500. propertyCode = "ErpshopId",
  501. propertyValue = shopId
  502. }
  503. });
  504. string data = httpContent(post_url, param);
  505. dataShopResponseVo dataResponseVos = JsonConvert.DeserializeObject<dataShopResponseVo>(data);
  506. if (dataResponseVos != null && "0".Equals(dataResponseVos.errcode))
  507. {
  508. if (dataResponseVos.data.bizObjectPage.content.Count > 0)
  509. {
  510. return dataResponseVos.data.bizObjectPage.content[0].data;
  511. }
  512. }
  513. }
  514. catch (Exception ex)
  515. {
  516. }
  517. return null;
  518. }
  519. /// <summary>
  520. /// 获取spu信息
  521. /// </summary>
  522. /// <param name="spuId"></param>
  523. /// <returns></returns>
  524. public static spuInfo getSpuInfo(string spuId)
  525. {
  526. try
  527. {
  528. string post_url = pUrl + "openapi/v3/bo/list";
  529. string param = JsonConvert.SerializeObject(new
  530. {
  531. schemaCode = "lianjieku_01_01",
  532. userId = USER_ID,
  533. queryCondition = new
  534. {
  535. operatorType = 1,
  536. propertyCode = "ShortText1728890649488",
  537. propertyValue = spuId
  538. }
  539. });
  540. string data = httpContent(post_url, param);
  541. dataSpuInfoResponseVo dataResponseVos = JsonConvert.DeserializeObject<dataSpuInfoResponseVo>(data);
  542. if (dataResponseVos != null && "0".Equals(dataResponseVos.errcode))
  543. {
  544. if (dataResponseVos.data.bizObjectPage.content.Count > 0)
  545. {
  546. return dataResponseVos.data.bizObjectPage.content[0].data;
  547. }
  548. }
  549. }
  550. catch (Exception ex)
  551. {
  552. }
  553. return null;
  554. }
  555. /// <summary>
  556. /// 订单发货是否存在
  557. /// </summary>
  558. /// <param name="dataSendOrderBean"></param>
  559. /// <returns></returns>
  560. public static string checkOrderAlready(dataSendOrderBean dataSendOrderBean)
  561. {
  562. try
  563. {
  564. string post_url = pUrl + "openapi/v3/bo/list";
  565. string param = JsonConvert.SerializeObject(new
  566. {
  567. schemaCode = "dingdanfahuo_01",
  568. userId = USER_ID,
  569. queryCondition = new
  570. {
  571. operatorType = 1,
  572. propertyCode = "ShortText1723707899761",
  573. propertyValue = dataSendOrderBean.ShortText1723707899761
  574. }
  575. });
  576. string data = httpContent(post_url, param);
  577. dataShopResponseVo dataResponseVos = JsonConvert.DeserializeObject<dataShopResponseVo>(data);
  578. if (dataResponseVos != null && "0".Equals(dataResponseVos.errcode))
  579. {
  580. if (dataResponseVos.data.bizObjectPage.content.Count > 0)
  581. {
  582. return dataResponseVos.data.bizObjectPage.content[0].bizObjectId;
  583. }
  584. return "";
  585. }
  586. }
  587. catch (Exception ex)
  588. {
  589. }
  590. return "";
  591. }
  592. /// <summary>
  593. /// 车间id获取信息
  594. /// </summary>
  595. /// <param name="supplerId"></param>
  596. /// <returns></returns>
  597. public static string getSupplerDataInfo(string supplerId)
  598. {
  599. try
  600. {
  601. string post_url = pUrl + "openapi/v3/bo/list";
  602. string param = JsonConvert.SerializeObject(new
  603. {
  604. schemaCode = "gongyingshang_01",
  605. userId = USER_ID,
  606. queryCondition = new
  607. {
  608. operatorType = 1,
  609. propertyCode = "ErpSupplierId",
  610. propertyValue = supplerId
  611. }
  612. });
  613. string data = httpContent(post_url, param);
  614. dataShopResponseVo dataResponseVos = JsonConvert.DeserializeObject<dataShopResponseVo>(data);
  615. if (dataResponseVos != null && "0".Equals(dataResponseVos.errcode))
  616. {
  617. if (dataResponseVos.data.bizObjectPage.content.Count > 0)
  618. {
  619. return dataResponseVos.data.bizObjectPage.content[0].data.id;
  620. }
  621. }
  622. }
  623. catch (Exception ex)
  624. {
  625. }
  626. return "";
  627. }
  628. /// <summary>
  629. /// 推送发货信息
  630. /// </summary>
  631. /// <param name="dataSendOrderBean"></param>
  632. /// <returns></returns>
  633. public static dataResponseVo CreateBoFahuo(dataSendOrderBean dataSendOrderBean)
  634. {
  635. string post_url = pUrl + "openapi/v3/bo/create";
  636. shopInfo shop = getShopDataInfo(dataSendOrderBean.RelevanceForm1723191239149);
  637. if (shop != null)
  638. {
  639. dataSendOrderBean.RelevanceForm1723191239149 = shop.id;
  640. }
  641. dataSendOrderBean.RelevanceForm1723191634028 = getSupplerDataInfo(dataSendOrderBean.RelevanceForm1723191634028);
  642. string bizObjectId = checkOrderAlready(dataSendOrderBean);
  643. if (!string.IsNullOrEmpty(bizObjectId))
  644. {
  645. post_url = pUrl + "openapi/v3/bo/update";
  646. dataSendOrderBean.id = bizObjectId;
  647. }
  648. string param = JsonConvert.SerializeObject(new
  649. {
  650. schemaCode = "dingdanfahuo_01",
  651. userId = USER_ID,
  652. data = dataSendOrderBean
  653. });
  654. dataResponseVo dataResponseVos = null;
  655. try
  656. {
  657. string data = httpContent(post_url, param);
  658. dataResponseVos = JsonConvert.DeserializeObject<dataResponseVo>(data);
  659. return dataResponseVos;
  660. }
  661. catch (Exception ex)
  662. {
  663. dataResponseVos = new dataResponseVo();
  664. dataResponseVos.errcode = "1";
  665. dataResponseVos.errmsg = ex.Message;
  666. }
  667. return dataResponseVos;
  668. }
  669. /// <summary>
  670. /// 推送spu信息
  671. /// </summary>
  672. /// <param name="bean"></param>
  673. /// <returns></returns>
  674. public static dataResponseVo sendSpuInfo(dataSendSpuBean bean)
  675. {
  676. string post_url = pUrl + "openapi/v3/bo/create";
  677. shopInfo shop = getShopDataInfo(bean.shopId);
  678. if (shop != null)
  679. {
  680. bean.RelevanceForm1728891053364 = shop.id;
  681. bean.operation = shop.operation;
  682. }
  683. spuInfo info = getSpuInfo(bean.ShortText1728890649488);
  684. if (info != null)
  685. {
  686. return null;
  687. bean.StaffSingle1728891078584 = info.StaffSingle1728891078584;
  688. bean.Date1728891021647 = info.Date1728891021647;
  689. bean.ShortText1729677042659 = info.ShortText1729677067460;
  690. bean.ShortText1728891031267 = info.ShortText1728891031267;
  691. }
  692. string param = JsonConvert.SerializeObject(new
  693. {
  694. schemaCode = "lianjieku_01",
  695. userId = USER_ID,
  696. data = bean
  697. });
  698. dataResponseVo dataResponseVos = null;
  699. try
  700. {
  701. string data = httpContent(post_url, param);
  702. dataResponseVos = JsonConvert.DeserializeObject<dataResponseVo>(data);
  703. return dataResponseVos;
  704. }
  705. catch (Exception ex)
  706. {
  707. dataResponseVos = new dataResponseVo();
  708. dataResponseVos.errcode = "1";
  709. dataResponseVos.errmsg = ex.Message;
  710. }
  711. return dataResponseVos;
  712. }
  713. /// <summary>
  714. /// 主订单数据
  715. /// </summary>
  716. /// <param name="bean"></param>
  717. /// <returns></returns>
  718. public static dataResponseVo sendErpTradeInfo(dataSendTradeBean bean)
  719. {
  720. string post_url = pUrl + "openapi/v3/bo/create";
  721. string bizObjectId = checkErpTradeAlready(bean);
  722. if (!string.IsNullOrEmpty(bizObjectId))
  723. {
  724. post_url = pUrl + "openapi/v3/bo/update";
  725. bean.id = bizObjectId;
  726. }
  727. string param = JsonConvert.SerializeObject(new
  728. {
  729. schemaCode = "zhudingdan_01",
  730. userId = USER_ID,
  731. data = bean
  732. });
  733. dataResponseVo dataResponseVos = null;
  734. try
  735. {
  736. string data = httpContent(post_url, param);
  737. dataResponseVos = JsonConvert.DeserializeObject<dataResponseVo>(data);
  738. return dataResponseVos;
  739. }
  740. catch (Exception ex)
  741. {
  742. dataResponseVos = new dataResponseVo();
  743. dataResponseVos.errcode = "1";
  744. dataResponseVos.errmsg = ex.Message;
  745. }
  746. return dataResponseVos;
  747. }
  748. /// <summary>
  749. /// 校验主订单是否存在
  750. /// </summary>
  751. /// <param name="dataSendOrderBean"></param>
  752. /// <returns></returns>
  753. public static string checkErpTradeAlready(dataSendTradeBean dataSendOrderBean)
  754. {
  755. try
  756. {
  757. string post_url = pUrl + "openapi/v3/bo/list";
  758. string param = JsonConvert.SerializeObject(new
  759. {
  760. schemaCode = "zhudingdan_01",
  761. userId = USER_ID,
  762. queryCondition = new
  763. {
  764. operatorType = 1,
  765. propertyCode = "ShortText1724739958776",
  766. propertyValue = dataSendOrderBean.ShortText1724739958776
  767. }
  768. });
  769. string data = httpContent(post_url, param);
  770. dataShopResponseVo dataResponseVos = JsonConvert.DeserializeObject<dataShopResponseVo>(data);
  771. if (dataResponseVos != null && "0".Equals(dataResponseVos.errcode))
  772. {
  773. if (dataResponseVos.data.bizObjectPage.content.Count > 0)
  774. {
  775. return dataResponseVos.data.bizObjectPage.content[0].bizObjectId;
  776. }
  777. return "";
  778. }
  779. }
  780. catch (Exception ex)
  781. {
  782. }
  783. return "";
  784. }
  785. /// <summary>
  786. /// 拆订单数据
  787. /// </summary>
  788. /// <param name="bean"></param>
  789. /// <returns></returns>
  790. public static dataResponseVo sendErpTradeCellInfo(dataSendTradeCellBean bean)
  791. {
  792. string post_url = pUrl + "openapi/v3/bo/create";
  793. string bizObjectId = checkErpTradeCellAlready(bean);
  794. if (!string.IsNullOrEmpty(bizObjectId))
  795. {
  796. post_url = pUrl + "openapi/v3/bo/update";
  797. bean.id = bizObjectId;
  798. }
  799. string tid_id = checkErpTradeAlready(new dataSendTradeBean(bean.tid));
  800. if (!string.IsNullOrEmpty(tid_id))
  801. {
  802. bean.RelevanceForm1724834153527 = tid_id;
  803. }
  804. shopInfo shop = getShopDataInfo(bean.shopId);
  805. if (shop != null)
  806. {
  807. bean.RelevanceForm1717742363336 = shop.id;
  808. }
  809. string param = JsonConvert.SerializeObject(new
  810. {
  811. schemaCode = "orders_01",
  812. userId = USER_ID,
  813. data = bean
  814. });
  815. dataResponseVo dataResponseVos = null;
  816. try
  817. {
  818. string data = httpContent(post_url, param);
  819. dataResponseVos = JsonConvert.DeserializeObject<dataResponseVo>(data);
  820. return dataResponseVos;
  821. }
  822. catch (Exception ex)
  823. {
  824. dataResponseVos = new dataResponseVo();
  825. dataResponseVos.errcode = "1";
  826. dataResponseVos.errmsg = ex.Message;
  827. }
  828. return dataResponseVos;
  829. }
  830. /// <summary>
  831. /// 校验拆订单是否存在
  832. /// </summary>
  833. /// <param name="dataSendOrderBean"></param>
  834. /// <returns></returns>
  835. public static string checkErpTradeCellAlready(dataSendTradeCellBean dataSendOrderBean)
  836. {
  837. try
  838. {
  839. string post_url = pUrl + "openapi/v3/bo/list";
  840. string param = JsonConvert.SerializeObject(new
  841. {
  842. schemaCode = "orders_01",
  843. userId = USER_ID,
  844. queryCondition = new
  845. {
  846. operatorType = 1,
  847. propertyCode = "ShortText1717720509648",
  848. propertyValue = dataSendOrderBean.ShortText1717720509648
  849. }
  850. });
  851. string data = httpContent(post_url, param);
  852. dataShopResponseVo dataResponseVos = JsonConvert.DeserializeObject<dataShopResponseVo>(data);
  853. if (dataResponseVos != null && "0".Equals(dataResponseVos.errcode))
  854. {
  855. if (dataResponseVos.data.bizObjectPage.content.Count > 0)
  856. {
  857. return dataResponseVos.data.bizObjectPage.content[0].bizObjectId;
  858. }
  859. return "";
  860. }
  861. }
  862. catch (Exception ex)
  863. {
  864. }
  865. return "";
  866. }
  867. /// <summary>
  868. /// 更新数据
  869. /// </summary>
  870. /// <param name="map"></param>
  871. /// <param name="ctid"></param>
  872. /// <returns></returns>
  873. public static dataResponseVo updateErpTradeCell(Dictionary<string, string> map, string ctid)
  874. {
  875. return null;
  876. string post_url = pUrl + "openapi/v3/bo/update";
  877. dataResponseVo dataResponseVos = null;
  878. dataSendTradeCellBean bean = new dataSendTradeCellBean();
  879. if (string.IsNullOrEmpty(ctid))
  880. {
  881. dataResponseVos = new dataResponseVo();
  882. dataResponseVos.errcode = "1";
  883. dataResponseVos.errmsg = "未找到订单";
  884. return dataResponseVos;
  885. }
  886. bean.ShortText1717720509648 = ctid;
  887. string bizObjectId = checkErpTradeCellAlready(bean);
  888. if (string.IsNullOrEmpty(bizObjectId))
  889. {
  890. dataResponseVos = new dataResponseVo();
  891. dataResponseVos.errcode = "1";
  892. dataResponseVos.errmsg = "未找到订单";
  893. return dataResponseVos;
  894. }
  895. map.Add("id", bizObjectId);
  896. string param = JsonConvert.SerializeObject(new
  897. {
  898. schemaCode = "orders_01",
  899. userId = USER_ID,
  900. data = map
  901. });
  902. try
  903. {
  904. string data = httpContent(post_url, param);
  905. dataResponseVos = JsonConvert.DeserializeObject<dataResponseVo>(data);
  906. return dataResponseVos;
  907. }
  908. catch (Exception ex)
  909. {
  910. dataResponseVos = new dataResponseVo();
  911. dataResponseVos.errcode = "1";
  912. dataResponseVos.errmsg = ex.Message;
  913. }
  914. return dataResponseVos;
  915. }
  916. /// <summary>
  917. /// 子订单数据
  918. /// </summary>
  919. /// <param name="bean"></param>
  920. /// <returns></returns>
  921. public static dataResponseVo sendErpTradeOrderInfo(dataSendTradeOrderBean bean)
  922. {
  923. string post_url = pUrl + "openapi/v3/bo/create";
  924. string bizObjectId = checkErpTradeOrderAlready(bean);
  925. if (!string.IsNullOrEmpty(bizObjectId))
  926. {
  927. post_url = pUrl + "openapi/v3/bo/update";
  928. bean.id = bizObjectId;
  929. }
  930. string tid_id = checkErpTradeAlready(new dataSendTradeBean(bean.ShortText1724898549414));
  931. if (!string.IsNullOrEmpty(tid_id))
  932. {
  933. bean.RelevanceForm1724898561483 = tid_id;
  934. }
  935. string param = JsonConvert.SerializeObject(new
  936. {
  937. schemaCode = "zidingdan_01",
  938. userId = USER_ID,
  939. data = bean
  940. });
  941. dataResponseVo dataResponseVos = null;
  942. try
  943. {
  944. string data = httpContent(post_url, param);
  945. dataResponseVos = JsonConvert.DeserializeObject<dataResponseVo>(data);
  946. return dataResponseVos;
  947. }
  948. catch (Exception ex)
  949. {
  950. dataResponseVos = new dataResponseVo();
  951. dataResponseVos.errcode = "1";
  952. dataResponseVos.errmsg = ex.Message;
  953. }
  954. return dataResponseVos;
  955. }
  956. /// <summary>
  957. /// 校验子订单是否存在
  958. /// </summary>
  959. /// <param name="dataSendOrderBean"></param>
  960. /// <returns></returns>
  961. public static string checkErpTradeOrderAlready(dataSendTradeOrderBean dataSendOrderBean)
  962. {
  963. try
  964. {
  965. string post_url = pUrl + "openapi/v3/bo/list";
  966. string param = JsonConvert.SerializeObject(new
  967. {
  968. schemaCode = "zidingdan_01",
  969. userId = USER_ID,
  970. queryCondition = new
  971. {
  972. operatorType = 1,
  973. propertyCode = "ShortText1724898595268",
  974. propertyValue = dataSendOrderBean.ShortText1724898595268
  975. }
  976. });
  977. string data = httpContent(post_url, param);
  978. dataShopResponseVo dataResponseVos = JsonConvert.DeserializeObject<dataShopResponseVo>(data);
  979. if (dataResponseVos != null && "0".Equals(dataResponseVos.errcode))
  980. {
  981. if (dataResponseVos.data.bizObjectPage.content.Count > 0)
  982. {
  983. return dataResponseVos.data.bizObjectPage.content[0].bizObjectId;
  984. }
  985. return "";
  986. }
  987. }
  988. catch (Exception ex)
  989. {
  990. }
  991. return "";
  992. }
  993. static HttpClient client = new HttpClient();
  994. private static string httpSaleContent(HttpMethod httpMethod, string post_url, Dictionary<string, string> map)
  995. {
  996. var request = new HttpRequestMessage
  997. {
  998. Method = httpMethod,
  999. RequestUri = new Uri(post_url),
  1000. Headers =
  1001. {
  1002. { "token", "Zk2ncXqH8hFyA6Rj"},
  1003. }
  1004. };
  1005. if (map.Keys.Count > 0)
  1006. {
  1007. request.Content = new FormUrlEncodedContent(map);
  1008. }
  1009. var task = Task.Run(() =>
  1010. {
  1011. try
  1012. {
  1013. var response = client.SendAsync(request).Result;
  1014. response.EnsureSuccessStatusCode();
  1015. return response.Content.ReadAsStringAsync().Result;
  1016. }
  1017. catch (Exception ex)
  1018. {
  1019. return "";
  1020. }
  1021. });
  1022. return task.Result;
  1023. }
  1024. private static string httpContent(string post_url, string content)
  1025. {
  1026. string token = getToken();
  1027. var request = new HttpRequestMessage
  1028. {
  1029. Method = HttpMethod.Post,
  1030. RequestUri = new Uri(post_url),
  1031. Headers =
  1032. {
  1033. { "Authorization", "Bearer " + token },
  1034. },
  1035. Content = new StringContent(content)
  1036. {
  1037. Headers =
  1038. {
  1039. ContentType = new MediaTypeHeaderValue("application/json")
  1040. }
  1041. }
  1042. };
  1043. var task = Task.Run(() =>
  1044. {
  1045. try
  1046. {
  1047. var response = client.SendAsync(request).Result;
  1048. response.EnsureSuccessStatusCode();
  1049. return response.Content.ReadAsStringAsync().Result;
  1050. }
  1051. catch (Exception e)
  1052. {
  1053. return "";
  1054. }
  1055. });
  1056. return task.Result;
  1057. }
  1058. }
  1059. }