1
This commit is contained in:
196
controllers/tiktok_delivery.go
Normal file
196
controllers/tiktok_delivery.go
Normal file
@@ -0,0 +1,196 @@
|
||||
package controllers
|
||||
|
||||
import (
|
||||
"encoding/json"
|
||||
"git.rosy.net.cn/baseapi/platformapi/tiktok_shop/tiktok_api"
|
||||
"git.rosy.net.cn/baseapi/utils"
|
||||
"git.rosy.net.cn/jx-callback/business/model/dao"
|
||||
"git.rosy.net.cn/jx-callback/globals"
|
||||
"github.com/astaxie/beego/server/web"
|
||||
"io/ioutil"
|
||||
"time"
|
||||
)
|
||||
|
||||
type LogisticsController struct {
|
||||
web.Controller
|
||||
}
|
||||
|
||||
//#region 美团物流注册(发货完成时注册)
|
||||
|
||||
// LogisticsRegisterReq 注册接口请求参数
|
||||
type LogisticsRegisterReq struct {
|
||||
TrackNo string `json:"track_no"` // 运单号
|
||||
CallbackUrl string `json:"callback_url"` // 回调地址
|
||||
Company string `json:"company"` //物流公司编码
|
||||
}
|
||||
|
||||
// LogisticsRegisterResp 响应接口
|
||||
type LogisticsRegisterResp struct {
|
||||
Result bool `json:"result"`
|
||||
ReturnCode string `json:"return_code"`
|
||||
Message string `json:"message"`
|
||||
}
|
||||
|
||||
// LogisticsRegister 即时配轨迹订阅接口
|
||||
func (c *LogisticsController) LogisticsRegister() {
|
||||
body, _ := ioutil.ReadAll(c.Ctx.Request.Body)
|
||||
|
||||
register := &LogisticsRegisterReq{}
|
||||
if err := json.Unmarshal(body, register); err != nil {
|
||||
globals.SugarLogger.Debugf("小时达订阅接口类型转换异常:%s", err)
|
||||
c.Data["json"] = LogisticsRegisterResp{
|
||||
Result: false,
|
||||
ReturnCode: "1007",
|
||||
Message: err.Error(),
|
||||
}
|
||||
c.ServeJSON()
|
||||
return
|
||||
}
|
||||
if register.TrackNo == "" {
|
||||
c.Data["json"] = LogisticsRegisterResp{
|
||||
Result: false,
|
||||
ReturnCode: "1002",
|
||||
Message: "单号不存在",
|
||||
}
|
||||
c.ServeJSON()
|
||||
return
|
||||
}
|
||||
// 查询订单的运单是否存在
|
||||
data, err := dao.GetWayBillsByWayBillId(dao.GetDB(), register.TrackNo)
|
||||
if err != nil {
|
||||
globals.SugarLogger.Debugf("根据单号查询运单数据错误:%s", err)
|
||||
}
|
||||
if len(data) <= 0 {
|
||||
globals.SugarLogger.Debugf("单号存在但是本地数据不存,推送平台运单号错误,或者运单错误:%s", err)
|
||||
c.Data["json"] = LogisticsRegisterResp{
|
||||
Result: false,
|
||||
ReturnCode: "1002",
|
||||
Message: "单号不存在",
|
||||
}
|
||||
c.ServeJSON()
|
||||
return
|
||||
}
|
||||
|
||||
c.Data["json"] = LogisticsRegisterResp{
|
||||
Result: true,
|
||||
ReturnCode: "200",
|
||||
Message: "",
|
||||
}
|
||||
c.ServeJSON()
|
||||
return
|
||||
}
|
||||
|
||||
//#endregion
|
||||
|
||||
//#region 保底物流信息更新
|
||||
|
||||
// LogisticsQueryReq 请求参数
|
||||
type LogisticsQueryReq struct {
|
||||
TrackNo string `json:"track_no"` // 运单号
|
||||
Company string `json:"company"` // 物流商编码
|
||||
PhoneLastFour string `json:"phone_last_four"` // 手机号后4位
|
||||
}
|
||||
|
||||
// LogisticsQueryRest 响应参数
|
||||
type LogisticsQueryRest struct {
|
||||
Result bool `json:"result"` // 结果
|
||||
ReturnCode string `json:"return_code"` // 错误码
|
||||
Message string `json:"message"` // 错误消息
|
||||
Data LogisticsQueryData `json:"data"` // 轨迹数据
|
||||
}
|
||||
|
||||
type LogisticsQueryData struct {
|
||||
Timestamp string `json:"timestamp"` // 当前系统时间
|
||||
TrackNo string `json:"track_no"` // 运单号
|
||||
Traces []TracesList `json:"traces"` // 轨迹列表
|
||||
}
|
||||
|
||||
type TracesList struct {
|
||||
Timestamp string `json:"timestamp"` // 当前系统时间
|
||||
// 事件编码
|
||||
Opcode string `json:"opcode"`
|
||||
// 文案
|
||||
Content string `json:"content"`
|
||||
// 骑手信息
|
||||
Rider RiderInfo `json:"rider"`
|
||||
// 三方运力公司,顺丰同城 sftc 闪送 shansong 达达 dada UU uupt 美团 meituan 蜂鸟 fengniao
|
||||
ThirdPartyCompany string `json:"third_party_company"`
|
||||
// 异常编码
|
||||
ExceptionCode string `json:"exception_code"`
|
||||
// 异常原因
|
||||
ExceptionDesc string `json:"exception_desc"`
|
||||
// 取消编码
|
||||
CancelCode string `json:"cancel_code"`
|
||||
// 取消原因
|
||||
CancelDesc string `json:"cancel_desc"`
|
||||
}
|
||||
type RiderInfo struct {
|
||||
Name string `json:"name"` // 骑手姓名
|
||||
Mobile string `json:"mobile"` // 骑手电话号码
|
||||
}
|
||||
|
||||
// LogisticsQuery 即时配保底查询接口
|
||||
func (c *LogisticsController) LogisticsQuery() {
|
||||
body, _ := ioutil.ReadAll(c.Ctx.Request.Body)
|
||||
param := &LogisticsQueryReq{}
|
||||
if err := json.Unmarshal(body, param); err != nil {
|
||||
c.Data["json"] = LogisticsQueryRest{
|
||||
Result: false,
|
||||
ReturnCode: "1005",
|
||||
Message: "数据解析错误",
|
||||
}
|
||||
c.ServeJSON()
|
||||
return
|
||||
}
|
||||
|
||||
if param.TrackNo == "" {
|
||||
c.Data["json"] = LogisticsQueryRest{
|
||||
Result: false,
|
||||
ReturnCode: "1002",
|
||||
Message: "运单账号不存在",
|
||||
}
|
||||
c.ServeJSON()
|
||||
}
|
||||
|
||||
// 查询订单的运单是否存在
|
||||
data, err := dao.GetWayBillsByWayBillId(dao.GetDB(), param.TrackNo)
|
||||
if err != nil {
|
||||
globals.SugarLogger.Debugf("根据单号查询运单数据错误:%s", err)
|
||||
}
|
||||
if len(data) <= 0 {
|
||||
globals.SugarLogger.Debugf("单号存在但是本地数据不存,推送平台运单号错误,或者运单错误:%s", err)
|
||||
c.Data["json"] = LogisticsRegisterResp{
|
||||
Result: false,
|
||||
ReturnCode: "1002",
|
||||
Message: "单号不存在",
|
||||
}
|
||||
c.ServeJSON()
|
||||
return
|
||||
}
|
||||
|
||||
returnParam := &LogisticsQueryRest{
|
||||
Result: true,
|
||||
ReturnCode: "200",
|
||||
Message: "正常",
|
||||
Data: LogisticsQueryData{
|
||||
Timestamp: utils.Time2Str(time.Now()),
|
||||
TrackNo: param.TrackNo,
|
||||
Traces: []TracesList{{
|
||||
Opcode: "ORDER_RECEIVED",
|
||||
Timestamp: utils.Time2Str(time.Now()),
|
||||
Content: "抖音定时保底更新",
|
||||
ThirdPartyCompany: tiktok_api.TiktokExpressCode,
|
||||
ExceptionCode: "",
|
||||
ExceptionDesc: "",
|
||||
CancelCode: "",
|
||||
CancelDesc: "",
|
||||
Rider: RiderInfo{Name: data[0].CourierName, Mobile: data[0].CourierMobile},
|
||||
}},
|
||||
},
|
||||
}
|
||||
|
||||
c.Data["json"] = returnParam
|
||||
c.ServeJSON()
|
||||
}
|
||||
|
||||
//#endregion
|
||||
Reference in New Issue
Block a user