123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313 |
- package service
- import (
- "encoding/json"
- "fmt"
- "time"
- "xiaoniaokuaiyan.com/xiaoniao/entity"
- "xiaoniaokuaiyan.com/xiaoniao/util"
- "xiaoniaokuaiyan.com/xiaoniao/util/jdlclient"
- "xiaoniaokuaiyan.com/xiaoniao/util/jdlclient/request"
- )
- /**
- * @Author: qz
- * @Date: 2022/6/23 18:17
- * @Description:
- */
- type JDLService struct{}
- func (*JDLService) Calendar(p *entity.JDLParams) (interface{}, error) {
- req := &request.StandardCalendarRequest{
- SenderProvince: p.SenderProvince,
- SenderCity: p.SenderCity,
- SenderDistrict: p.SenderDistrict,
- SenderStreetName: "",
- SenderDetailAddress: p.SenderDetailAddress,
- ReceiverProvince: p.ReceiverProvince,
- ReceiverCity: p.ReceiverCity,
- ReceiverDistrict: p.ReceiverDistrict,
- ReceiverStreetName: "",
- ReceiverDetailAddress: p.ReceiverDetailAddress,
- ProductCode: "ed-m-0001",
- QueryStartDate: time.Now().Format("2006-01-02"),
- QueryDays: 3,
- MiniInterval: 2,
- HighInterval: 4,
- ShowFirstHour: false,
- IsConsumer: true,
- }
- c := jdlclient.GetJDLClient()
- b, err := c.DoRequest(req)
- if err != nil {
- return "JDL查询日历错误", err
- }
- result := map[string]interface{}{}
- json.Unmarshal(b, &result)
- if code, ok := result["code"].(float64); ok {
- if code == 1 {
- return result["data"], nil
- } else {
- return string(b), fmt.Errorf("JDL查询日历错误")
- }
- }
- return string(b), fmt.Errorf("JDL查询日历错误")
- }
- func (*JDLService) PuckUpOrder(p *entity.JDLParams) (string, error) {
- b, _ := json.Marshal(p)
- fmt.Println(string(b))
- req := &request.CheckBlindAreaRequest{
- SenderProvince: p.SenderProvince,
- SenderCity: p.SenderCity,
- SenderDistrict: p.SenderDistrict,
- SenderDetailAddress: p.SenderDetailAddress,
- ReceiverProvince: p.ReceiverProvince,
- ReceiverCity: p.ReceiverCity,
- ReceiverDistrict: p.ReceiverDistrict,
- ReceiverDetailAddress: p.ReceiverDetailAddress,
- ProductCode: "ed-m-0001",
- }
- c := jdlclient.GetJDLClient()
- b, err := c.DoRequest(req)
- if err != nil {
- return "JDL区域校验错误", err
- }
- result := map[string]interface{}{}
- json.Unmarshal(b, &result)
- //e.g. {"result":"1","error_msg":"success"}
- if code, ok := result["result"].(string); ok {
- if code == "1" {
- } else {
- return string(b), fmt.Errorf("1::区域校验错误")
- }
- } else {
- return string(b), fmt.Errorf("1::区域校验错误")
- }
- cCode := p.CustomerCode
- if len(cCode) == 0 {
- cCode = c.CustomerCode
- }
- req2 := &request.ReceivePickUpOrder{
- BackAddress: p.ReceiverDetailAddress,
- //CustomerCode: c.CustomerCode,
- CustomerCode: cCode,
- CustomerContract: p.ReceiverName, //"小鸟快验",
- CustomerTel: p.ReceiverMobile, //"4001365360",
- Desp: "无",
- GoodsDtoList: []request.GoodsDtoList{{
- ProductCount: 1,
- ProductName: "文件",
- }},
- IsGuaranteeValue: false,
- OrderID: p.XnCode,
- PickupAddress: p.SenderDetailAddress,
- PickupStartTime: p.SendStart,
- PickupEndTime: p.SendEnd,
- PickupName: p.SenderName,
- PickupTel: p.SenderMobile,
- PromiseTimeType: 1,
- Remark: p.Remark,
- Volume: 10,
- Weight: 0.2,
- FreightSettleType: 0,
- }
- //e.g. {"code":100,"messsage":"成功","pickUpCode":"QWD00000000001"}
- b, err = c.DoRequest(req2)
- var pickUpCode string
- if err != nil {
- return "JDL下单错误", err
- }
- result2 := map[string]interface{}{}
- json.Unmarshal(b, &result2)
- if code, ok := result2["code"].(float64); ok {
- if code == 100 {
- pickUpCode = result2["pickUpCode"].(string)
- } else {
- return string(b), fmt.Errorf("2::JDL下单错误")
- }
- } else {
- return string(b), fmt.Errorf("2::JDL下单错误")
- }
- go DoLog(pickUpCode, req2.GetBody(), p.XnCode, string(b))
- return pickUpCode, nil
- }
- func (*JDLService) PuckUpOrderV2(p *entity.JDLParams) (string, error) {
- b, _ := json.Marshal(p)
- fmt.Println(string(b))
- req := &request.CheckBlindAreaRequest{
- SenderProvince: p.SenderProvince,
- SenderCity: p.SenderCity,
- SenderDistrict: p.SenderDistrict,
- SenderDetailAddress: p.SenderDetailAddress,
- ReceiverProvince: p.ReceiverProvince,
- ReceiverCity: p.ReceiverCity,
- ReceiverDistrict: p.ReceiverDistrict,
- ReceiverDetailAddress: p.ReceiverDetailAddress,
- ProductCode: "ed-m-0001",
- }
- c := jdlclient.GetJDLClient()
- b, err := c.DoRequest(req)
- if err != nil {
- return "JDL区域校验错误", err
- }
- result := map[string]interface{}{}
- json.Unmarshal(b, &result)
- //e.g. {"result":"1","error_msg":"success"}
- if code, ok := result["result"].(string); ok {
- if code == "1" {
- } else {
- return string(b), fmt.Errorf("1::区域校验错误")
- }
- } else {
- return string(b), fmt.Errorf("1::区域校验错误")
- }
- cCode := p.CustomerCode
- if len(cCode) == 0 {
- cCode = c.CustomerCode
- }
- req2 := &request.ReceivePickUpOrder{
- BackAddress: p.ReceiverDetailAddress,
- //CustomerCode: c.CustomerCode,
- CustomerCode: cCode,
- CustomerContract: p.ReceiverName, //"小鸟快验",
- CustomerTel: p.ReceiverMobile, //"4001365360",
- Desp: "无",
- GoodsDtoList: []request.GoodsDtoList{{
- ProductCount: 1,
- ProductName: "文件",
- }},
- IsGuaranteeValue: false,
- OrderID: p.XnCode,
- PickupAddress: p.SenderDetailAddress,
- PickupStartTime: p.SendStart,
- PickupEndTime: p.SendEnd,
- PickupName: p.SenderName,
- PickupTel: p.SenderMobile,
- PromiseTimeType: 1,
- Remark: p.Remark,
- Volume: 10,
- Weight: 0.2,
- FreightSettleType: 0,
- }
- ////e.g. {"code":100,"messsage":"成功","pickUpCode":"QWD00000000001"}
- req3 := &request.WayBillDto{
- PickupEndTime: p.SendEnd,
- PickupStartTime: p.SendStart,
- CustomerCode: cCode,
- GoodsDtoList: []request.GoodsDtoList{{
- ProductCount: 1,
- ProductName: "文件",
- }},
- GoodsType: 1,
- OrderID: p.XnCode,
- PackageCount: 1,
- PromiseTimeType: 24,
- ReceiveAddress: p.ReceiverDetailAddress,
- ReceiveMobile: p.ReceiverMobile,
- ReceiveName: p.ReceiverName,
- SalePlat: "0030001",
- SenderAddress: p.SenderDetailAddress,
- SenderMobile: p.SenderMobile,
- SenderName: p.SenderName,
- AddedService: "settleType:0",
- Vloumn: 0,
- Weight: 0,
- Remark: p.Remark,
- }
- b, err = c.DoRequest(req3)
- var pickUpCode string
- ////e.g. {{
- // "deliveryId":"JDVA00000000001",
- // "needRetry":false, ,
- // "promiseTimeType":1,
- // "resultCode":100,
- // "resultMessage":"成功",
- // "transType":1
- //}}
- if err != nil {
- return "JDL下单错误", err
- }
- result2 := map[string]interface{}{}
- json.Unmarshal(b, &result2)
- if code, ok := result2["resultCode"].(float64); ok {
- if code == 100 {
- pickUpCode = result2["deliveryId"].(string)
- } else {
- return string(b), fmt.Errorf("2::JDL下单错误")
- }
- } else {
- return string(b), fmt.Errorf("2::JDL下单错误")
- }
- go DoLog(pickUpCode, req2.GetBody(), p.XnCode, string(b))
- return pickUpCode, nil
- }
- func DoLog(pickUpcode, content, xnCode, result string) {
- db := util.GetSqlDB()
- _, err := db.Exec("insert into t_jdl_log(pick_up_code,content,xn_code,remark)values(?,?,?,?)", pickUpcode, content, xnCode, result)
- if err != nil {
- fmt.Println(err)
- }
- }
- func (*JDLService) Cancel(pickUpCode, customerCode string) (string, error) {
- c := jdlclient.GetJDLClient()
- req := &request.PickUpOrderCancelRequest{
- PickUpCode: pickUpCode,
- EndReasonName: "客户取消服务单,终止取件",
- EndReason: 19,
- Source: "JOS",
- //CustomerCode: c.CustomerCode,
- CustomerCode: customerCode,
- }
- b, err := c.DoRequest(req)
- if err != nil {
- return "", err
- }
- return string(b), nil
- }
- func (*JDLService) CancelV2(pickUpCode, customerCode string) (string, error) {
- c := jdlclient.GetJDLClient()
- req := &request.WayBillCancel{
- CancelOperator: "admin",
- CancelReasonCode: 1,
- CancelTime: time.Now().UnixNano() / 1e6,
- DeliveryID: pickUpCode,
- InterceptReason: "客户取消服务单,终止取件",
- VendorCode: customerCode,
- }
- b, err := c.DoRequest(req)
- if err != nil {
- return "", err
- }
- return string(b), nil
- }
- func (*JDLService) GetTraceInfo(pickUpCode, customerCode string) (interface{}, error) {
- c := jdlclient.GetJDLClient()
- //req := &request.DynamicTraceInfo{c.CustomerCode, pickUpCode, "pin"}
- req := &request.DynamicTraceInfo{customerCode, pickUpCode, "pin"}
- b, err := c.DoRequest(req)
- if err != nil {
- return "", err
- }
- result := map[string]interface{}{}
- json.Unmarshal(b, &result)
- if data, ok := result["data"]; ok {
- return data, nil
- }
- return string(b), fmt.Errorf("code not equal 100")
- }
|