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") }