schangxiang@126.com
2025-09-19 0821aa23eabe557c0d9ef5dbe6989c68be35d1fe
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
//#region import
import BaseApiService from "../baseApiService";
import { ResultInfo } from "../../public/commonInterface";
import * as crypto from "crypto";
// import { In } from "typeorm";
import { TMSWayBill } from "../../entity/express/tms/tmsWayBill";
import rp = require("request-promise");
// import moment = require("moment");
 
//#endregion
 
/**
 * 获取福州ems,泉州邮政小包分拣码帮助类
 */
export default class sortingCodeHelper extends BaseApiService {
  //#region 福州ems,泉州邮政小包获取分拣码
  public async getSortingCode(wayBill_Id): Promise<ResultInfo> {
    let info: ResultInfo = {
      result: false,
      msg: undefined,
      dynamic: null
    };
    try {
      let wayBillInfo = await this.dbRead
        .createQueryBuilder(TMSWayBill, "t")
        .where(`wayBill_Id=:wayBill_Id`, {
          wayBill_Id: wayBill_Id
        })
        .getOne();
      var sendID = "LDPKJT";
      var appKey = "V6O3P3XHPSO9G8MA";
      var url = "http://139.199.85.254/WMS?RequestType=GetSortingCode";
      var requestData =
        ' { "traceNo":"' + wayBillInfo.expressCode + '","address":"' + wayBillInfo.consigneeAddress + '"}';
      var urlRequestData = encodeURI(requestData);
      var md5 = crypto.createHash("md5");
      var md5Str = md5.update(requestData + appKey, "utf8").digest("hex");
      var b = new Buffer(md5Str);
      var sign = b.toString("base64");
      url += "&SendID=" + sendID + "&RequestData=" + urlRequestData + "&Sign=" + sign;
      // url = "http://139.199.85.254/WMS?RequestType=GetSortingCode&SendID=LDPKJT&RequestData=+%7b+%22traceNo%22%3a%221186538681251%22%2c%22address%22%3a%22%e5%b9%bf%e8%a5%bf%e5%a3%ae%e6%97%8f%e8%87%aa%e6%b2%bb%e5%8c%ba%e9%98%b2%e5%9f%8e%e6%b8%af%e5%b8%82%e4%b8%9c%e5%85%b4%e5%b8%82%e4%b8%9c%e5%85%b4%e8%b7%af%22%7d&Sign=NDdkZmYyMDU2ZGY4MGZhMDhiMTVjY2EzOWVkNGU4NjI=";
      //httpclient总是返回301不知道为什么
      // const result = await this.ctx.curl(url, {
      //   method: 'POST'
      // });
      //使用request-promise请求
      var options = {
        uri: url,
        json: true // Automatically parses the JSON string in the response
      };
      var res = null;
      await rp(options)
        .then(function(repos) {
          res = repos;
          console.log("getSortingCode获得大头笔", repos);
        })
        .catch(function(err) {
          console.log("getSortingCode错误:" + err.message);
          // API call failed...
        });
      // const result = await this.ctx.curl(url, {
      //   // 必须指定 method,支持 POST,PUT 和 DELETE
      //   method: 'POST',
      //   // 不需要设置 contentType,HttpClient 会默认以 application/x-www-form-urlencoded 格式发送请求
      //   data: {
      //     SendID: sendID,
      //     RequestData: urlRequestData,
      //     Sign: sign
      //   },
      //   // 明确告诉 HttpClient 以 JSON 格式处理响应 body
      //   dataType: 'json',
      // });
      // var count = Buffer.from(resutl).toString();
 
      var dynData = res;
      if (dynData.status == "FAILURE") {
        info.dynamic = dynData;
        info.msg = dynData.msg;
        info.result = false;
      } else {
        info.dynamic = dynData;
        info.result = true;
        info.msg = dynData.msg;
      }
    } catch (error) {
      info.msg = error.message;
      info.result = false;
    }
    return info;
  }
 
  //#endregion
}