抖音授权登录,小程序门店切换,门店状态改变日志打印!

This commit is contained in:
邹宗楠
2022-04-15 18:09:48 +08:00
parent 852a4f555d
commit df304dcc81
13 changed files with 110 additions and 77 deletions

View File

@@ -6,6 +6,7 @@ import (
"encoding/json"
"errors"
"fmt"
"git.rosy.net.cn/jx-callback/business/jxstore/event"
"io"
"math"
"mime/multipart"
@@ -537,6 +538,7 @@ func GetStores(ctx *jxcontext.Context, keyword string, params map[string]interfa
}
} else {
//storeIDs2 = append(storeIDs2, -1)
// 商家小程序用户切换门店,如果角色storeIDsMap没有数据则查询传入数据
storeIDs2 = append(storeIDs2, int(utils.Interface2Int64WithDefault(params["storeID"], 0)))
}
}
@@ -5262,11 +5264,17 @@ func UpdateOrCreateCourierStoresByBrand(ctx *jxcontext.Context, brandID, vendorI
return hint, err
}
//StoreStatusDisabled = -2
//StoreStatusClosed = -1
//StoreStatusHaveRest = 0
//StoreStatusOpened = 1
// 定时任务更新门店信息,添加storeStatuss参数,只查询和同步营业的门店 1营业0临时休息-1休息-2禁用
func RefreshStoreIsOnline(ctx *jxcontext.Context) (err error) {
var (
db = dao.GetDB()
)
stores, _ := dao.GetStoresMapList(db, []int{model.VendorIDMTWM, model.VendorIDJD, model.VendorIDEBAI}, nil, nil, model.StoreStatusAll, model.StoreIsSyncAll, "", "", "")
stores, _ := dao.GetStoresMapList(db, []int{model.VendorIDMTWM, model.VendorIDJD, model.VendorIDEBAI}, nil, []int{model.StoreStatusOpened, model.StoreStatusHaveRest}, model.StoreStatusAll, model.StoreIsSyncAll, "", "", "")
task := tasksch.NewParallelTask("RefreshStoreBind", tasksch.NewParallelConfig().SetIsContinueWhenError(true), ctx,
func(task *tasksch.ParallelTask, batchItemList []interface{}, params ...interface{}) (retVal interface{}, err error) {
storeMap := batchItemList[0].(*model.StoreMap)
@@ -5278,6 +5286,8 @@ func RefreshStoreIsOnline(ctx *jxcontext.Context) (err error) {
storeMap.IsOnline = -1
}
dao.UpdateEntity(db, storeMap, "IsOnline")
store := fmt.Sprintf("门店id:%d,门店名称:%s,第三方门店状态:%d,本地门店修改后状态:%d,第三方平台Id(美团,饿了么...):%d", store.Store.ID, store.Store.Name, store.Store.Status, storeMap.IsOnline, storeMap.VendorID)
event.AddOperateEvent(ctx, ctx.GetTrackInfo(), store, err.Error(), "", int(time.Now().UnixNano()/1000), "UpdateStore")
}
}
return retVal, err

View File

@@ -2,6 +2,7 @@ package misc
import (
"fmt"
"git.rosy.net.cn/jx-callback/business/partner/delivery"
"sync"
"time"
@@ -388,7 +389,7 @@ func Init() {
})
// 每五分钟轮询一次推送骑手信息坐标给美团
ScheduleTimerFuncByInterval(func() {
//delivery.GetOrderRiderInfoToPlatform("")
delivery.GetOrderRiderInfoToPlatform("")
}, 10*time.Second, 5*time.Minute)
}
if configs, err := dao.QueryConfigs(dao.GetDB(), "ebaiStorePageCookie", model.ConfigTypeCookie, ""); err == nil {

View File

@@ -34,6 +34,7 @@ type GoodsOrderExt struct {
DesiredFee int64 `json:"desiredFee"` // 运单总费用
WaybillCreatedAt time.Time `orm:"type(datetime);index" json:"waybillCreatedAt"`
WaybillFinishedAt time.Time `orm:"type(datetime)" json:"waybillFinishedAt"`
VendorWaybillID2 string `orm:"column(vendor_waybill_id2);size(48)" json:"vendorWaybillID2"` // 某些平台有多个ID比如美团配送当前美团配送的 delivery_id存这里
DistrictName string `json:"districtName"`
CityName string `json:"cityName"`

View File

@@ -821,7 +821,7 @@ func GetOrders(db *DaoDB, ids []int64, isIncludeSku, isIncludeFake bool, fromDat
DISTINCT t1.*,
-- CAST(IF(t1.earning_price <> 0, t1.earning_price, IF(t1.shop_price <> 0 && t1.shop_price < t1.sale_price, t1.shop_price, t1.sale_price) * IF(t1.order_pay_percentage > 0, t1.order_pay_percentage, %d) / 100) AS SIGNED) earning_price,
t2.status waybill_status, t2.courier_name, t2.courier_mobile,
t2.actual_fee, t2.desired_fee, t2.waybill_created_at, t2.waybill_finished_at,
t2.actual_fee, t2.desired_fee, t2.waybill_created_at, t2.waybill_finished_at,t2.vendor_waybill_id2,
t5.pay_percentage, t5.old_pay_percentage, t5.market_man_phone, tu.name market_man_name,
t5.operator_phone, t5.operator_phone2, t5.operator_phone3, tu1.name operator_name, tu2.name operator_name2, tu3.name operator_name3,
t6.vendor_pay_percentage,

View File

@@ -84,7 +84,7 @@ func (c *DeliveryHandler) onWaybillMsg(msg *dadaapi.CallbackMsg) (retVal *dadaap
}
case dadaapi.OrderStatusDelivering:
order.Status = model.WaybillStatusDelivering
//delivery.GetOrderRiderInfoToPlatform(order.VendorOrderID)
delivery.GetOrderRiderInfoToPlatform(order.VendorOrderID)
case dadaapi.OrderStatusFinished:
order.Status = model.WaybillStatusDelivered
case dadaapi.OrderStatusCanceled, dadaapi.OrderStatusExpired:

View File

@@ -2,6 +2,7 @@ package delivery
import (
"fmt"
"git.rosy.net.cn/baseapi/platformapi/mtpsapi"
"math"
"time"
@@ -163,58 +164,58 @@ func OnWaybillCreated(waybill *model.Waybill) {
//40-骑手已送达C端商品已送达B端骑手已送达
//100-配送单已取消C端商家已接单B端配送已取消
//注:若同步配送状态为“配送单已取消”,接口仍支持继续同步配送状态。 说明商家如未上传此信息则平台默认值为20现已要求必传
//func GetOrderRiderInfoToPlatform(orderId string) {
// params := make(map[string]interface{}, 0)
// params["brandID"] = 0
// params["statuss"] = 20
// params["isDateFinish"] = false
// params["isIncludeFake"] = true
// params["mustInvoice"] = false
// params["adjustCount"] = 0
// params["waybillVendorIDs"] = `[101,102,103]`
// if orderId != "" { // 订单id会忽略其他参数
// params["keyword"] = orderId
// }
// //params["offset"] = 0
// //params["pageSize"] = 10000
// // 查询三天内一万条数据
// orders, _, err := dao.GetOrders(dao.GetDB(), nil, false, true, time.Now().Add(-24*3*time.Hour).Format("2006-01-02"), time.Now().Format("2006-01-02"), false, nil, false, "", params, 0, 10000)
// if err != nil {
// globals.SugarLogger.Errorf("GetOrder err :%v", err)
// return
// }
//
// for _, v := range orders {
// var riderInfo *mtpsapi.RiderInfo
// if handlerInfo := partner.GetDeliveryPlatformFromVendorID(v.WaybillVendorID); handlerInfo != nil {
// riderInfo, err = handlerInfo.Handler.GetRiderInfo(v.VendorOrderID, utils.Str2Int64(v.VendorWaybillId2), v.VendorWaybillID)
// if err != nil {
// globals.SugarLogger.Errorf("Get Order waybill rider info err :%v", err)
// continue
// }
// }
//
// // 目前只推送美团骑手信息
// switch v.VendorID {
// case model.VendorIDMTWM: // 美团发单
// paramsMap := utils.Struct2Map(riderInfo, "", true)
// if handler := partner.GetPurchaseOrderHandlerFromVendorID(v.VendorID); handler != nil {
// if err := handler.GetOrderRider(v.VendorOrgCode, v.VendorOrderID, paramsMap); err != nil {
// globals.SugarLogger.Errorf("Error pushing meituan rider information :%v", err)
// }
// }
// case model.VendorIDELM: // 饿了么
// case model.VendorIDEBAI: // 饿百发单
//
// case model.VendorIDJD: // 京东发单
// case model.VendorIDGD: // 美团发单
// case model.VendorIDYB: // 银豹发单
// case model.VendorIDJDShop: // 京东商城
// case model.VendorIDWSC: // 微盟微商城
// default:
// globals.SugarLogger.Errorf("Order source error, non system order")
// return
// }
// }
// return
//}
func GetOrderRiderInfoToPlatform(orderId string) {
params := make(map[string]interface{}, 0)
params["brandID"] = 0
params["statuss"] = 20
params["isDateFinish"] = false
params["isIncludeFake"] = true
params["mustInvoice"] = false
params["adjustCount"] = 0
params["waybillVendorIDs"] = `[101,102,103]`
if orderId != "" { // 订单id会忽略其他参数
params["keyword"] = orderId
}
//params["offset"] = 0
//params["pageSize"] = 10000
// 查询三天内一万条数据
orders, _, err := dao.GetOrders(dao.GetDB(), nil, false, true, time.Now().Add(-24*3*time.Hour).Format("2006-01-02"), time.Now().Format("2006-01-02"), false, nil, false, "", params, 0, 10000)
if err != nil {
globals.SugarLogger.Errorf("GetOrder err :%v", err)
return
}
for _, v := range orders {
var riderInfo *mtpsapi.RiderInfo
if handlerInfo := partner.GetDeliveryPlatformFromVendorID(v.WaybillVendorID); handlerInfo != nil {
riderInfo, err = handlerInfo.Handler.GetRiderInfo(v.VendorOrderID, utils.Str2Int64(v.VendorWaybillID2), v.VendorWaybillID)
if err != nil {
globals.SugarLogger.Errorf("Get Order waybill rider info err :%v", err)
continue
}
}
// 目前只推送美团骑手信息
switch v.VendorID {
case model.VendorIDMTWM: // 美团发单
paramsMap := utils.Struct2Map(riderInfo, "", true)
if handler := partner.GetPurchaseOrderHandlerFromVendorID(v.VendorID); handler != nil {
if err := handler.GetOrderRider(v.VendorOrgCode, v.VendorOrderID, paramsMap); err != nil {
globals.SugarLogger.Errorf("Error pushing meituan rider information :%v", err)
}
}
case model.VendorIDELM: // 饿了么
case model.VendorIDEBAI: // 饿百发单
case model.VendorIDJD: // 京东发单
case model.VendorIDGD: // 美团发单
case model.VendorIDYB: // 银豹发单
case model.VendorIDJDShop: // 京东商城
case model.VendorIDWSC: // 微盟微商城
default:
globals.SugarLogger.Errorf("Order source error, non system order")
return
}
}
return
}

View File

@@ -235,7 +235,7 @@ func OnWaybillMsg(msg *fnpsapi.OrderStatusNottify) (resp *fnpsapi.CallbackRespon
order.Status = model.WaybillStatusCourierArrived
case fnpsapi.OrderStatusDelivering: // 2 配送中
order.Status = model.WaybillStatusDelivering
//delivery.GetOrderRiderInfoToPlatform(order.VendorOrderID)
delivery.GetOrderRiderInfoToPlatform(order.VendorOrderID)
case fnpsapi.OrderStatusDelivered: // 3 已经送达
order.Status = model.WaybillStatusDelivered
case fnpsapi.OrderStatusAcceptCacle: // 4取消订单

View File

@@ -103,7 +103,7 @@ func (c *DeliveryHandler) onWaybillMsg(msg *mtpsapi.CallbackOrderMsg) (retVal *m
order.Remark = order.CourierName + "" + order.CourierMobile
case mtpsapi.OrderStatusPickedUp:
order.Status = model.WaybillStatusDelivering
///delivery.GetOrderRiderInfoToPlatform(order.VendorOrderID)
delivery.GetOrderRiderInfoToPlatform(order.VendorOrderID)
case mtpsapi.OrderStatusDeliverred:
order.Status = model.WaybillStatusDelivered
case mtpsapi.OrderStatusCanceled:

View File

@@ -2,7 +2,9 @@ package ebai
import (
"fmt"
"git.rosy.net.cn/jx-callback/business/jxstore/event"
"strings"
"time"
"git.rosy.net.cn/baseapi/platformapi/autonavi"
"git.rosy.net.cn/baseapi/platformapi/ebaiapi"
@@ -579,6 +581,11 @@ func (c *PurchaseHandler) onShopMsgPush(msg *ebaiapi.CallbackMsg) (response *eba
if err == nil {
err = partner.CurStoreManager.OnStoreStatusChanged(vendorStoreID, model.VendorIDEBAI, storeStatus)
}
// 操作日志(ebai)
ctx := jxcontext.AdminCtx
store := fmt.Sprintf("饿百外卖回调门店改变回调(营业状态/审核状态):门店id:%s,饿百门店状态:%d.]", vendorStoreID, storeStatus)
event.AddOperateEvent(ctx, ctx.GetTrackInfo(), store, err.Error(), "", int(time.Now().UnixNano()/1000), "UpdateStore")
return api.EbaiAPI.Err2CallbackResponse(msg.Cmd, err, nil)
}

View File

@@ -84,7 +84,7 @@ func TestUpdateStore2(t *testing.T) {
// }
func TestSyncQualify(t *testing.T) {
storeDetail, err := dao.GetStoreDetail(dao.GetDB(), 102610, model.VendorIDJD)
storeDetail, err := dao.GetStoreDetail(dao.GetDB(), 102610, model.VendorIDJD, "")
if err != nil {
t.Fatal(err.Error())
}

View File

@@ -48,6 +48,9 @@ func (p *PurchaseHandler) GetOrder(vendorOrgCode, vendorOrderID, vendorStoreID s
Current: 1,
PageSize: 1,
})
if err != nil {
return nil, err
}
return p.Map2Order(utils.Struct2FlatMap(resultOrders)), err
}
func (p *PurchaseHandler) GetOrderStatus(vendorOrgCode, vendorOrderID string) (status int, err error) {
@@ -81,6 +84,10 @@ func (p *PurchaseHandler) AcceptOrRefuseOrder(order *model.GoodsOrder, isAcceptI
}
func (p *PurchaseHandler) PickupGoods(order *model.GoodsOrder, isSelfDelivery bool, userName string) (err error) {
status, err := p.GetOrderStatus(order.VendorOrgCode, order.VendorOrderID2)
if err != nil {
globals.SugarLogger.Debug("jdShop GetOrders err := ", err)
return err
}
//说明此时该订单在平台上已经取消了
if status == model.OrderStatusCanceled {
err = ChangeOrderStatus(order.VendorOrderID, model.OrderStatusCanceled, "订单在京东商城已被取消!")

View File

@@ -4,14 +4,11 @@ import (
"encoding/json"
"errors"
"fmt"
"math"
"regexp"
"strings"
"git.rosy.net.cn/baseapi/platformapi/mtwmapi"
"git.rosy.net.cn/baseapi/utils"
"git.rosy.net.cn/baseapi/utils/errlist"
"git.rosy.net.cn/jx-callback/business/jxcallback/scheduler"
"git.rosy.net.cn/jx-callback/business/jxstore/event"
"git.rosy.net.cn/jx-callback/business/jxutils"
"git.rosy.net.cn/jx-callback/business/jxutils/jxcontext"
"git.rosy.net.cn/jx-callback/business/jxutils/tasksch"
@@ -20,6 +17,10 @@ import (
"git.rosy.net.cn/jx-callback/business/partner"
"git.rosy.net.cn/jx-callback/globals"
"git.rosy.net.cn/jx-callback/globals/api"
"math"
"regexp"
"strings"
"time"
)
var (
@@ -344,11 +345,15 @@ func (p *PurchaseHandler) onStoreStatusChanged(msg *mtwmapi.CallbackMsg) (respon
}
}
}
fmt.Println(storeStatus)
//if err == nil {
// err = partner.CurStoreManager.OnStoreStatusChanged(vendorStoreID, model.VendorIDMTWM, storeStatus)
//}
if err == nil {
err = partner.CurStoreManager.OnStoreStatusChanged(vendorStoreID, model.VendorIDMTWM, storeStatus)
}
response = mtwmapi.Err2CallbackResponse(err, "")
// 操作日志(美团外卖)
ctx := jxcontext.AdminCtx
store := fmt.Sprintf("美团外卖回调门店改变回调(营业状态/审核状态):门店id:%s,美团门店状态:%d.[121营业,120休息,18上线,19下线]", vendorStoreID, int(utils.Str2Int64(msg.FormData.Get("poi_status"))))
event.AddOperateEvent(ctx, ctx.GetTrackInfo(), store, err.Error(), "", int(time.Now().UnixNano()/1000), "UpdateStore")
return response
}

View File

@@ -3,6 +3,7 @@ package api
import (
"git.rosy.net.cn/baseapi/platformapi/jxprintapi"
"git.rosy.net.cn/baseapi/platformapi/qywxapi"
"git.rosy.net.cn/baseapi/platformapi/tiktok"
"time"
"git.rosy.net.cn/baseapi/platformapi/fnpsapi"
@@ -72,12 +73,12 @@ var (
WeixinMiniAPI *weixinapi.API // 小程序
WeixinMiniAPI2 *weixinapi.API // 小程序2
WeixinMiniAPIsc *weixinapi.API //小程序商超
//WeixinMiniAPIPrint *weixinapi.API //小程序打印机
WeixinMiniAPIPrint *weixinapi.API //小程序打印机
WeixinApp *weixinapi.API // app微信登录
WeixinMiniAppID2 string
WeixinMiniAppID3 string
WeixinMiniAppIDsc string
//WeixinMiniPrintAppId string
WeixinMiniPrintAppId string
WxpayAPI *wxpayapi.API // 微信支付API
TLpayAPI *tonglianpayapi.API //通联收银宝api
FnAPI *fnpsapi.API //蜂鸟配送api
@@ -109,7 +110,7 @@ var (
Cacher cache.ICacher
SMSClient *aliyunsmsclient.SmsClient
//TiktokApi *tiktok.API
TiktokApi *tiktok.API
)
func init() {
@@ -253,9 +254,9 @@ func Init() {
if WeixinMiniAppIDsc = beego.AppConfig.DefaultString("weixinMiniAppIDsc", ""); WeixinMiniAppIDsc != "" {
WeixinMiniAPIsc = weixinapi.New(WeixinMiniAppIDsc, beego.AppConfig.DefaultString("weixinMiniSecretsc", ""))
}
//if WeixinMiniPrintAppId = beego.AppConfig.DefaultString("weixinAppIdPrint", ""); WeixinMiniPrintAppId != "" {
// WeixinMiniAPIPrint = weixinapi.New(WeixinMiniPrintAppId, beego.AppConfig.DefaultString("weixinAppSecretPrint", ""))
//}
if WeixinMiniPrintAppId = beego.AppConfig.DefaultString("weixinAppIdPrint", ""); WeixinMiniPrintAppId != "" {
WeixinMiniAPIPrint = weixinapi.New(WeixinMiniPrintAppId, beego.AppConfig.DefaultString("weixinAppSecretPrint", ""))
}
if globals.WxpayNotifyURL != "" {
// WxpayAPI = wxpayapi.New(beego.AppConfig.DefaultString("wxpayAppID"), beego.AppConfig.DefaultString("wxpayAppKey"), beego.AppConfig.DefaultString("wxpayAppMchID"))
@@ -293,5 +294,5 @@ func Init() {
SMSClient = aliyunsmsclient.New("http://dysmsapi.aliyuncs.com/")
QywxAPI = qywxapi.New(beego.AppConfig.DefaultString("qywxID", ""), beego.AppConfig.DefaultString("qywxSecret", ""), "")
//TiktokApi = tiktok.New(beego.AppConfig.DefaultString("tiktokAppSecret", ""), beego.AppConfig.DefaultString("tiktokAppKey", ""))
TiktokApi = tiktok.New(beego.AppConfig.DefaultString("tiktokAppSecret", ""), beego.AppConfig.DefaultString("tiktokAppKey", ""))
}