template name

This commit is contained in:
richboo111
2022-11-07 09:26:15 +08:00
7 changed files with 143 additions and 63 deletions

View File

@@ -346,15 +346,15 @@ const (
)
const (
RiderGetOrder = "骑手接单"
RiderToStore = "骑手到店"
RiderGetOrderDelivering = "骑手配送中"
RiderGetOrderDelivered = "骑手配送完成"
RiderGetOrderCanceled = "骑手取消"
RiderGetOrder = "骑手 %s (%s) 已接单"
RiderToStore = "骑手 %s (%s) 已到店"
RiderGetOrderDelivering = "骑手 %s (%s) 配送中"
RiderGetOrderDelivered = "骑手 %s (%s) 已送达"
RiderGetOrderCanceled = "骑手 %s (%s) 已取消"
RiderGetOrderDeliverFailed = "骑手配送异常"
RiderGetOrderDeliverOther = "其他待处理信息"
RiderWaitRider = "待接单,正在分配骑手"
RiderWaitGetGoods = "已经分配骑手,待取货"
RiderWaitGetGoods = "骑手 %s (%s) 已接单"
)
const (

View File

@@ -2,7 +2,9 @@ package dao
import (
"errors"
"fmt"
"sort"
"strings"
"time"
"git.rosy.net.cn/baseapi/utils"
@@ -1582,42 +1584,41 @@ func QueryStoreBindInfo(storeID int) (*model.FreightTemplate, error) {
//向FreightTemplate 插入数据
func InsertIntoFreightTemplate(storeID int, vendorStoreID string, templateID, warehouseID, fenceID, tradeLimitID int64) error {
var (
sqlStr = []string{}
sqlStr []string
tStr = ""
sqlParams = []interface{}{}
sqlParams []interface{}
)
if storeID == 0 && utils.Str2Int(vendorStoreID) == 0 {
return errors.New("storeID,vendorStoreID 必传")
}
if _, err := ExecuteSQL(GetDB(), "SELECT COUNT(*) FROM freight_template a WHERE a.store_id = ? AND a.vendor_store_id = ?", storeID, vendorStoreID); err != nil {
if _, err := ExecuteSQL(GetDB(), "INSERT INTO freight_template (store_id,vendor_store_id,created_at,updated_at) VALUES (?,?,?,?)", storeID, vendorStoreID, time.Now(), time.Now()); err != nil {
return err
}
}
sql := `UPDATE freight_template a SET `
if templateID != 0 {
sqlStr = append(sqlStr, " UPDATE freight_template a SET a.template_id = ? ")
sqlParams = append(sqlParams, templateID)
templateIDSql := ` a.template_id = ? `
sqlParams = append(sqlParams, templateIDSql)
sqlStr = append(sqlStr, sql)
}
if warehouseID != 0 {
sqlStr = append(sqlStr, " UPDATE freight_template a SET a.warehouse_id = ? ")
sqlParams = append(sqlParams, warehouseID)
warehouseIDSql := ` a.warehouse_id = ? `
sqlParams = append(sqlParams, warehouseIDSql)
sqlStr = append(sqlStr, sql)
}
if fenceID != 0 {
sqlStr = append(sqlStr, " UPDATE freight_template a SET a.fence_id = ? ")
sqlParams = append(sqlParams, fenceID)
fenceIDSql := ` a.fence_id = ?`
sqlParams = append(sqlParams, fenceIDSql)
sqlStr = append(sqlStr, sql)
}
if tradeLimitID != 0 {
sqlStr = append(sqlStr, " UPDATE freight_template a SET a.fence_id = ? ")
sqlParams = append(sqlParams, tradeLimitID)
sql += ` a.fence_id = ? `
sqlParams = append(sqlParams, templateID)
sqlStr = append(sqlStr, sql)
}
tStr = "WHERE a.store_id = ? AND a.vendor_store_id = ?"
sqlParams = append(sqlParams, storeID, vendorStoreID)
for _, v := range sqlStr {
v += tStr
if _, err := ExecuteSQL(GetDB(), v, sqlParams); err != nil {
return err
}
v = ""
}
return nil
tStr2 := sql + strings.Join(sqlStr, ",") + tStr
_, err := ExecuteSQL(GetDB(), tStr2, sqlParams...)
fmt.Println(tStr2)
return err
}

View File

@@ -97,7 +97,56 @@ func (c *DeliveryHandler) onWaybillMsg(msg *dadaapi.CallbackMsg) (retVal *dadaap
order.Status = model.WaybillStatusUnknown
}
err := dadaapi.Err2CallbackResponse(partner.CurOrderManager.OnWaybillStatusChanged(order), utils.Int2Str(order.Status))
defer delivery.GetOrderRiderInfoToPlatform(order.VendorOrderID, order.Status) // 骑手位置更新
defer func(order *model.Waybill) {
delivery.GetOrderRiderInfoToPlatform(order.VendorOrderID, order.Status) // 骑手位置更新
}(order)
if order.OrderVendorID == model.VendorIDDD {
result := &mtpsapi.RiderInfo{
OrderId: order.VendorOrderID,
ThirdCarrierOrderId: order.VendorOrderID,
CourierName: order.CourierName,
CourierPhone: order.CourierMobile,
LogisticsProviderCode: "10002",
LogisticsStatus: order.Status,
OpCode: "",
}
switch order.Status {
case dadaapi.OrderStatusWaitingForAccept: // 待接单,召唤骑手
result.LogisticsStatus = model.WaybillStatusNew
result.LogisticsContext = model.RiderWaitRider
case dadaapi.OrderStatusAccepted: // 待取货
result.LogisticsStatus = model.WaybillStatusCourierAssigned // 分配骑手
result.LogisticsContext = model.RiderWaitGetGoods
case dadaapi.OrderStatusDelivering: // 配送中
result.LogisticsStatus = model.WaybillStatusDelivering
result.LogisticsContext = model.RiderGetOrderDelivering
case dadaapi.OrderStatusFinished: // 完成
result.LogisticsStatus = model.WaybillStatusDelivered
result.LogisticsContext = model.RiderGetOrderDelivered
case dadaapi.OrderStatusCanceled: // 取消
result.LogisticsStatus = model.WaybillStatusCanceled
result.LogisticsContext = model.RiderGetOrderCanceled
case 8: // 指派单,不处理
result.LogisticsStatus = 0
result.LogisticsContext = model.RiderGetOrderDeliverOther
case 9: // 配送异常返回值
result.LogisticsStatus = model.WaybillStatusDeliverFailed
result.LogisticsContext = model.RiderGetOrderDeliverFailed
case 10: // 妥投异常之物品返回完成 - 不处理
result.LogisticsStatus = 0
result.LogisticsContext = model.RiderGetOrderDeliverOther
case dadaapi.OrderStatusReturningInOrder: // 骑手到店
result.LogisticsStatus = model.WaybillStatusCourierArrived
result.LogisticsContext = model.RiderToStore
case dadaapi.OrderStatusAddOrderFailed: // 创建达达运单失败 - 不处理
result.LogisticsStatus = model.WaybillStatusFailed
result.LogisticsContext = model.RiderGetOrderDeliverOther
default:
result.LogisticsStatus = 0
result.LogisticsContext = model.RiderGetOrderDeliverOther
}
delivery.PullTiktokRiderInfo(result)
}
return err
}

View File

@@ -86,17 +86,6 @@ func GetOrderRiderInfoToPlatform(orderId string, wayBillStatus int) {
riderInfo.CourierName = "石锋"
riderInfo.CourierPhone = "18048531223"
riderInfo.LogisticsProviderCode = "10017"
if wayBillStatus == model.WaybillStatusNew {
riderInfo.LogisticsStatus = model.WaybillStatusNew
riderInfo.LogisticsContext = "呼叫骑手,新建运单"
} else if wayBillStatus == model.WaybillStatusCanceled {
riderInfo.LogisticsStatus = model.WaybillStatusCanceled
riderInfo.LogisticsContext = "取消骑手"
} else {
riderInfo.LogisticsStatus = model.WaybillStatusDeliverFailed
riderInfo.LogisticsContext = "配送异常,等待恢复"
}
}
riderInfo.ThirdCarrierOrderId = v.VendorWaybillID
@@ -131,14 +120,6 @@ func GetOrderRiderInfoToPlatform(orderId string, wayBillStatus int) {
continue
}
if v.VendorID == model.VendorIDDD && (riderInfo.LogisticsStatus == 100 || riderInfo.LogisticsStatus == 0 || riderInfo.LogisticsStatus == 20) {
riderInfo.CourierName = ""
riderInfo.CourierPhone = ""
}
if riderInfo.LogisticsStatus != 22 && riderInfo.LogisticsStatus != 120 && riderInfo.LogisticsStatus != 0 {
riderInfo.LogisticsContext += fmt.Sprintf("[%s:%s]", riderInfo.CourierName, riderInfo.CourierPhone)
}
if riderInfo.Longitude == "" {
riderInfo.Longitude = utils.Float64ToStr(utils.Int2Float64(v.ConsigneeLng) / 1000000)
}
@@ -162,15 +143,6 @@ func GetOrderRiderInfoToPlatform(orderId string, wayBillStatus int) {
case model.VendorIDJDShop: // 京东商城
case model.VendorIDWSC: // 微盟微商城
case model.VendorIDDD: // 抖店小时达
// 呼叫骑手的时候推送发货
// 抖店由于发配送时运单id已经固定了,我们系统在重新发货,或者运单号发生改变时去推送信息时.抖店只识别第一个运单号所以在这儿修改成发单时的第一个运单号!
riderInfo.ThirdCarrierOrderId = riderInfo.OrderId
paramsMap := utils.Struct2Map(riderInfo, "", true)
if handler := partner.GetPurchaseOrderHandlerFromVendorID(v.VendorID); handler != nil {
if err := handler.GetOrderRider(v.VendorOrgCode, v.VendorStoreID, paramsMap); err != nil {
globals.SugarLogger.Errorf("Error pushing tiktok rider information :%s--%s--%v", riderInfo.OrderId, riderInfo.ThirdCarrierOrderId, err)
}
}
default:
globals.SugarLogger.Errorf("Order source error, non system order")
return
@@ -179,6 +151,57 @@ func GetOrderRiderInfoToPlatform(orderId string, wayBillStatus int) {
return
}
func PullTiktokRiderInfo(riderInfo *mtpsapi.RiderInfo) {
switch riderInfo.LogisticsStatus {
case 5: // 呼叫骑手
riderInfo.LogisticsStatus = 0
riderInfo.OpCode = tiktok_api.TiktokLogisticsStatusCALLRIDER
case 12: // 骑手接单
riderInfo.LogisticsStatus = 12
riderInfo.OpCode = tiktok_api.TiktokLogisticsORDERRECEIVED
case 15: // 到店
riderInfo.LogisticsStatus = 15
riderInfo.OpCode = tiktok_api.TiktokLogisticsRIDERARRIVED
case 20: //配送中
riderInfo.LogisticsStatus = 20
riderInfo.OpCode = tiktok_api.TiktokLogisticsRIDERPICKUP
case 110: // 完成
riderInfo.LogisticsStatus = 40
riderInfo.OpCode = tiktok_api.TiktokLogisticsDELIVERED
case 105: // 完成
riderInfo.LogisticsStatus = 40
riderInfo.OpCode = tiktok_api.TiktokLogisticsDELIVERED
case 115: // 取消
riderInfo.CourierName = ""
riderInfo.CourierPhone = ""
riderInfo.LogisticsStatus = 100
riderInfo.OpCode = tiktok_api.TiktokLogisticsCANCELDELIVERY
case 22, 0, 120: // 异常配送
riderInfo.LogisticsStatus = 22
riderInfo.OpCode = tiktok_api.TiktokLogisticsINDDELIVERYEXCEPTION
}
if riderInfo.CourierPhone == "" {
riderInfo.CourierPhone = "18981810000"
}
if riderInfo.CourierName == "" {
riderInfo.CourierName = "暂无"
}
if riderInfo.LogisticsStatus != 22 && riderInfo.LogisticsStatus != 120 && riderInfo.LogisticsStatus != 0 {
riderInfo.LogisticsContext += fmt.Sprintf("[%s:%s]", riderInfo.CourierName, riderInfo.CourierPhone)
}
// 呼叫骑手的时候推送发货
// 抖店由于发配送时运单id已经固定了,我们系统在重新发货,或者运单号发生改变时去推送信息时.抖店只识别第一个运单号所以在这儿修改成发单时的第一个运单号!
paramsMap := utils.Struct2Map(riderInfo, "", true)
if handler := partner.GetPurchaseOrderHandlerFromVendorID(model.VendorIDDD); handler != nil {
if err := handler.GetOrderRider("", "", paramsMap); err != nil {
globals.SugarLogger.Errorf("PullTiktokRiderInfo Err %s", err.Error())
}
}
}
//将以过期订单状态为配送中的订单修改为完成状态
func UpdateOrder2Complete() {
sql := `UPDATE goods_order g SET g.status=110 WHERE g.status=20 AND g.order_created_at < ?`
@@ -266,7 +289,10 @@ func UpdateFakeWayBillToTiktok() {
continue
}
riderInfo.LogisticsContext += fmt.Sprintf("[%s:%s]", riderInfo.CourierName, riderInfo.CourierPhone)
if riderInfo.LogisticsContext != model.RiderGetOrderDeliverFailed && riderInfo.LogisticsContext != model.RiderGetOrderDeliverOther && riderInfo.LogisticsContext != model.RiderWaitRider {
riderInfo.LogisticsContext = fmt.Sprintf(riderInfo.LogisticsContext, riderInfo.CourierName, riderInfo.CourierPhone)
}
// 推送骑手信息
paramsMap := utils.Struct2Map(riderInfo, "", true)
if handler := partner.GetPurchaseOrderHandlerFromVendorID(model.VendorIDDD); handler != nil {

View File

@@ -60,6 +60,7 @@ var (
)
func (c *PurchaseHandler) OnOrderMsg(a *jdapi.API, msg *jdapi.CallbackOrderMsg) (retVal *jdapi.CallbackResponse) {
globals.SugarLogger.Debug("===================京东订单 := %s", utils.Format4Output(msg, false))
primaryID := msg.BillID
primaryID += utils.Int64ToStr(time.Now().Unix())
jxutils.CallMsgHandler(func() {
@@ -203,8 +204,10 @@ func (c *PurchaseHandler) getOrder(a *jdapi.API, orderID string) (order *model.G
switch taskIndex {
case 0:
orderMap, err = a.QuerySingleOrder(orderID)
globals.SugarLogger.Debugf("===========================new order order Mao%s", utils.Format4Output(orderMap, false))
if err == nil {
order = c.Map2Order(orderMap)
globals.SugarLogger.Debugf("===========================new really order Mao%s", utils.Format4Output(order, false))
if configs, err := dao.QueryConfigs(dao.GetDB(), "jdStorePageCookie", model.ConfigTypeCookie, ""); err == nil {
//a.SetJdCookie(configs[0].Value)
a.SetCookieWithStr(configs[0].Value)

View File

@@ -453,8 +453,8 @@ func CreateFreightTemplate(storeCode int) (int64, error) {
}}
param.Columns = columns
} else {
param.Template.TemplateName += "固定运费模板"
param.Columns = nil
param.Template.TemplateName += "固定运费模板"
}
globals.SugarLogger.Debugf("param.Template.TemplateName===============%s", param.Template.TemplateName)
resp, err := getAPI(storeDetail.VendorOrgCode, storeCode, storeDetail.VendorStoreID).FreightTemplateCreate(param)

View File

@@ -133,7 +133,7 @@ func (p *PurchaseHandler) createOrUpdateStoreSkus(ctx *jxcontext.Context, storeI
Weight: utils.Int2Float64(storeSku.Weight),
DeliveryDelayDay: tiktokShop.DeliveryDelayDayToDay,
PresellType: tiktokShop.SendGoodsTypeNow,
Supply7dayReturn: 0, // 是否支持7天无理由0不支持1支持2支持拆封后不支持
Supply7dayReturn: 2, // 是否支持7天无理由0不支持1支持2支持拆封后不支持
Mobile: storeDetail.Tel1,
Commit: true,
Specs: "重量|" + utils.Float64ToStr(float64(storeSku.SpecQuality)) + storeSku.SpecUnit,
@@ -392,7 +392,7 @@ func GetDeliveryTemp(api *tiktokShop.API, vendorStoreID string, storeDetail *dao
productProvince := utils.Str2Int64(utils.Int2Str(storeDetail.ProvinceCode)[0:2])
tempDetail := &freightTemplate_create_request.FreightTemplateCreateParam{
Template: &freightTemplate_create_request.Template{
TemplateName: storeDetail.Name + "_" + utils.Int64ToStr(rand.Int63n(int64(storeDetail.ID))) + "_",
TemplateName: storeDetail.Name + utils.Int64ToStr(rand.Int63n(int64(storeDetail.ID))),
ProductProvince: productProvince,
ProductCity: int64(storeDetail.CityCode),
CalculateType: 2,
@@ -445,6 +445,7 @@ func GetDeliveryTemp(api *tiktokShop.API, vendorStoreID string, storeDetail *dao
return 0, err
}
freightId = temp.TemplateId
dao.InsertIntoFreightTemplate(storeDetail.Store.ID, storeDetail.VendorStoreID, freightId, 0, 0, 0)
}
globals.SugarLogger.Debugf("freightId =last %d", freightId)
return freightId, nil