This commit is contained in:
邹宗楠
2022-10-14 09:01:15 +08:00
parent 0751c0396e
commit dd0f2ac9e4
5 changed files with 228 additions and 6 deletions

View File

@@ -1397,6 +1397,17 @@ func GetWaybills(db *DaoDB, vendorOrderID string) (waybills []*model.Waybill, er
return waybills, err
}
// GetWayBillsByWayBillId 根据运单id获取运单id
func GetWayBillsByWayBillId(db *DaoDB, vendorWayBillId string) (waybills []*model.Waybill, err error) {
sql := `SELECT *
FROM waybill
WHERE vendor_waybill_id = ?
`
sqlParams := []interface{}{vendorWayBillId}
err = GetRows(db, &waybills, sql, sqlParams)
return waybills, err
}
func GetMatterChildOrders(db *DaoDB, vendorOrderID string) (goods []*model.GoodsOrder, err error) {
sql := `SELECT *
FROM goods_order

View File

@@ -83,12 +83,16 @@ func GetOrderRiderInfoToPlatform(orderId string) {
switch riderInfo.LogisticsStatus {
case 20: //配送中
riderInfo.LogisticsStatus = 20
riderInfo.LogisticsContext = `正在配送中`
case 110: // 完成
riderInfo.LogisticsStatus = 40
riderInfo.LogisticsContext = `配送完成`
case 105: // 完成
riderInfo.LogisticsStatus = 40
riderInfo.LogisticsContext = `被取消`
case 115: // 取消
riderInfo.LogisticsStatus = 100
riderInfo.LogisticsContext = `被取消`
default:
continue
}

View File

@@ -3,6 +3,7 @@ package tiktok_store
import (
"errors"
"fmt"
order_logisticsAdd_request "git.rosy.net.cn/baseapi/platformapi/tiktok_shop/sdk-golang/api/order_logisticsAdd/request"
order_orderDetail_response "git.rosy.net.cn/baseapi/platformapi/tiktok_shop/sdk-golang/api/order_orderDetail/response"
tiktokShop "git.rosy.net.cn/baseapi/platformapi/tiktok_shop/tiktok_api"
"regexp"
@@ -213,7 +214,9 @@ func (p *PurchaseHandler) getOrder(vendorOrgCode, vendorOrderID, vendorStoreID s
// GetOrderRider 商家自配送同步配送信息
func (p *PurchaseHandler) GetOrderRider(vendorOrgCode, vendorStoreID string, param map[string]interface{}) (err error) {
return getAPI(vendorOrgCode, 0, vendorStoreID).OrderStatusAndPsInfo(param)
appKey := `7152420904331429407` // 暂时定死
appSecret := `cc7ba367-2394-4cbb-81c6-26f0e929d1c6` //暂时定死
return tiktokShop.NewExpress(appKey, appSecret, "").OrderStatusAndPsInfo(param)
}
func (p *PurchaseHandler) GetOrder(vendorOrgCode, vendorOrderID, vendorStoreID string) (order *model.GoodsOrder, err error) {
@@ -588,12 +591,19 @@ func (c *PurchaseHandler) Swtich2SelfDelivered(order *model.GoodsOrder, userName
return err
}
// SelfDeliverDelivering 暂无自配送中
// SelfDeliverDelivering 订单在自配送中,表示三方品牌接单,通知抖音已经发货了
func (c *PurchaseHandler) SelfDeliverDelivering(order *model.GoodsOrder, userName string) (err error) {
//if globals.EnableMtwmStoreWrite {
// err = getAPI(order.VendorOrgCode, jxutils.GetSaleStoreIDFromOrder(order), "").OrderDelivering(utils.Str2Int64(order.VendorOrderID))
//}
return err
return getAPI(order.VendorOrgCode, jxutils.GetSaleStoreIDFromOrder(order), "").OrderDelivering(&order_logisticsAdd_request.OrderLogisticsAddParam{
OrderId: order.VendorOrderID,
Company: "",
CompanyCode: "chengdouruoxi",
LogisticsCode: order.VendorWaybillID,
IsRefundReject: false,
IsRejectRefund: false,
SerialNumberList: nil,
AddressId: 0,
StoreId: utils.Str2Int64(order.VendorStoreID),
})
}
// SelfDeliverDelivered 自配搜完成(暂无)

View File

@@ -282,6 +282,7 @@ func (p *PurchaseHandler) createOrUpdateStoreSkus(ctx *jxcontext.Context, storeI
StartSaleType: 0,
PickupMethod: "0",
OuterProductId: utils.Int2Str(storeSku.SkuID), // 本地skuId为外部商品id
//AfterSaleService: map[string]string{"supply_day_return_selector": "7"},
}
globals.SugarLogger.Debugf("====OuterProductId====%d", storeSku.SkuID)
globals.SugarLogger.Debugf("====OuterProductId====%d", storeSku.ID)

View 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