修改bug
This commit is contained in:
@@ -749,25 +749,34 @@ func (s *DefScheduler) OnWaybillStatusChanged(bill *model.Waybill, isPending boo
|
||||
}
|
||||
|
||||
func (s *DefScheduler) cancelWaybillNotInStoreOpentime(savedOrderInfo *WatchOrderInfo, bill *model.Waybill) (err error) {
|
||||
if savedOrderInfo != nil {
|
||||
//TODO 2020-09-07 不在门店的营业时间内取消运单
|
||||
//TODO 2021-07-26 实时取门店营业时间,运营可能在订单来之后修改门店营业时间
|
||||
storeDetail, _ := partner.CurOrderManager.LoadStoreDetail(jxutils.GetSaleStoreIDFromOrder(savedOrderInfo.order), savedOrderInfo.order.VendorID)
|
||||
if storeDetail != nil {
|
||||
if storeDetail.OpenTime1 != 0 && storeDetail.CloseTime1 != 0 {
|
||||
time1 := jxutils.JxOperationTime2TimeByDate(storeDetail.OpenTime1, time.Now())
|
||||
time2 := jxutils.JxOperationTime2TimeByDate(storeDetail.CloseTime1, time.Now())
|
||||
if time.Now().Sub(time1) < 0 || time.Now().Sub(time2.Add(time.Minute*30)) > 0 {
|
||||
if storeDetail.OpenTime2 != 0 && storeDetail.CloseTime2 != 0 {
|
||||
time3 := jxutils.JxOperationTime2TimeByDate(storeDetail.OpenTime2, time.Now())
|
||||
time4 := jxutils.JxOperationTime2TimeByDate(storeDetail.CloseTime2, time.Now())
|
||||
if time.Now().Sub(time3) < 0 || time.Now().Sub(time4.Add(time.Minute*30)) > 0 {
|
||||
s.CancelWaybill(bill, partner.CancelWaybillReasonNotAcceptIntime, partner.CancelWaybillReasonNotInStoreOpenTime)
|
||||
}
|
||||
} else {
|
||||
s.CancelWaybill(bill, partner.CancelWaybillReasonNotAcceptIntime, partner.CancelWaybillReasonNotInStoreOpenTime)
|
||||
}
|
||||
if savedOrderInfo == nil {
|
||||
return nil
|
||||
}
|
||||
|
||||
//TODO 2020-09-07 不在门店的营业时间内取消运单
|
||||
//TODO 2021-07-26 实时取门店营业时间,运营可能在订单来之后修改门店营业时间
|
||||
storeDetail, _ := partner.CurOrderManager.LoadStoreDetail(jxutils.GetSaleStoreIDFromOrder(savedOrderInfo.order), savedOrderInfo.order.VendorID)
|
||||
if storeDetail == nil {
|
||||
return nil
|
||||
}
|
||||
|
||||
// 系统手动发单,不做营业时间校验
|
||||
if storeDetail.SendOrderType == 1 {
|
||||
return nil
|
||||
}
|
||||
|
||||
if storeDetail.OpenTime1 != 0 && storeDetail.CloseTime1 != 0 {
|
||||
time1 := jxutils.JxOperationTime2TimeByDate(storeDetail.OpenTime1, time.Now())
|
||||
time2 := jxutils.JxOperationTime2TimeByDate(storeDetail.CloseTime1, time.Now())
|
||||
if time.Now().Sub(time1) < 0 || time.Now().Sub(time2.Add(time.Minute*30)) > 0 { // 营业时间
|
||||
if storeDetail.OpenTime2 != 0 && storeDetail.CloseTime2 != 0 { // 休息时间
|
||||
time3 := jxutils.JxOperationTime2TimeByDate(storeDetail.OpenTime2, time.Now())
|
||||
time4 := jxutils.JxOperationTime2TimeByDate(storeDetail.CloseTime2, time.Now())
|
||||
if time.Now().Sub(time3) < 0 || time.Now().Sub(time4.Add(time.Minute*30)) > 0 {
|
||||
s.CancelWaybill(bill, partner.CancelWaybillReasonNotAcceptIntime, partner.CancelWaybillReasonNotInStoreOpenTime)
|
||||
}
|
||||
} else {
|
||||
s.CancelWaybill(bill, partner.CancelWaybillReasonNotAcceptIntime, partner.CancelWaybillReasonNotInStoreOpenTime)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -194,13 +194,15 @@ func (s *DefScheduler) CreateWaybillOnProviders4SavedOrder(ctx *jxcontext.Contex
|
||||
func (s *DefScheduler) CreateWaybillOnProvidersEx(ctx *jxcontext.Context, vendorOrderID string, vendorID int, courierVendorIDs []int, forceCreate bool, maxDeliveryFee int64) (bills []*model.Waybill, errCode string, err error) {
|
||||
savedOrderInfo := s.loadSavedOrderByID(vendorOrderID, vendorID, true)
|
||||
if savedOrderInfo != nil {
|
||||
savedOrderInfo.storeDetail.SendOrderType = 1 // 设置为手动创建订单
|
||||
order := savedOrderInfo.order
|
||||
//1表示为门店发单,需要验证门店账户余额情况
|
||||
if errCode, err = s.CheckStoreBalance(ctx, order, courierVendorIDs); err != nil {
|
||||
return nil, errCode, err
|
||||
}
|
||||
}
|
||||
jxutils.CallMsgHandler(func() {
|
||||
|
||||
billFunc := func() {
|
||||
bills, err = func() (bills []*model.Waybill, err error) {
|
||||
userName := ctx.GetUserName()
|
||||
globals.SugarLogger.Debugf("CreateWaybillOnProvidersEx orderID:%s userName:%s", vendorOrderID, userName)
|
||||
@@ -235,7 +237,9 @@ func (s *DefScheduler) CreateWaybillOnProvidersEx(ctx *jxcontext.Context, vendor
|
||||
globals.SugarLogger.Infof("CreateWaybillOnProvidersEx orderID:%s userName:%s error:%v", vendorOrderID, userName, err)
|
||||
return bills, err
|
||||
}()
|
||||
}, jxutils.ComposeUniversalOrderID(vendorOrderID, vendorID))
|
||||
}
|
||||
|
||||
jxutils.CallMsgHandler(billFunc, jxutils.ComposeUniversalOrderID(vendorOrderID, vendorID))
|
||||
return bills, errCode, err
|
||||
}
|
||||
|
||||
|
||||
@@ -1083,6 +1083,7 @@ func UpdateStore(ctx *jxcontext.Context, storeID int, payload map[string]interfa
|
||||
TryAddStoreBossRole4StoreByMobile(ctx, store.ID, []string{utils.Interface2String(valid["tel1"]), utils.Interface2String(valid["tel2"])})
|
||||
}
|
||||
if syncStatus&model.SyncFlagStoreAddress != 0 || valid["tel1"] != nil || valid["payeeName"] != nil {
|
||||
// 修改门店信息(第三方平台同步)
|
||||
updateCourierStores(ctx, storeID)
|
||||
}
|
||||
}
|
||||
@@ -1249,6 +1250,7 @@ func CreateStore(ctx *jxcontext.Context, storeExt *StoreExt, userName string) (i
|
||||
if globals.IsAddEvent {
|
||||
err = AddEventDetail(db, ctx, model.OperateAdd, store.ID, model.ThingTypeStore, store.ID, "", "")
|
||||
}
|
||||
// 同步门店信息
|
||||
UpdateOrCreateCourierStores(ctx, store.ID, false, false, false)
|
||||
TryAddStoreBossRole4StoreByMobile(ctx, storeExt.ID, []string{storeExt.Tel1, storeExt.Tel2})
|
||||
// InsertStoreCategories(ctx, db, store.ID)
|
||||
@@ -1940,17 +1942,26 @@ func updateCourierStore(ctx *jxcontext.Context, storeDetail *dao.StoreDetail2) (
|
||||
return err
|
||||
}
|
||||
|
||||
// 更新门店信息
|
||||
//VendorIDDada = 101 // 达达配送
|
||||
//VendorIDMTPS = 102 // 美团配送
|
||||
//VendorIDFengNiao = 103 // 蜂鸟配送
|
||||
func updateCourierStores(ctx *jxcontext.Context, storeID int) (err error) {
|
||||
globals.SugarLogger.Debugf("updateCourierStores storeID:%d", storeID)
|
||||
|
||||
db := dao.GetDB()
|
||||
errList := errlist.New()
|
||||
for k, v := range partner.DeliveryPlatformHandlers {
|
||||
fmt.Println("k===================", k)
|
||||
if v.Use4CreateWaybill {
|
||||
if _, ok := v.Handler.(partner.IDeliveryUpdateStoreHandler); ok {
|
||||
storeDetail, err2 := dao.GetStoreDetail2(db, storeID, "", k)
|
||||
fmt.Println("storeDetail.VendorID===================", storeDetail.VendorID)
|
||||
fmt.Println("storeDetail.AuditStatus===================", storeDetail.AuditStatus)
|
||||
fmt.Println("storeDetail.VendorStoreID===================", storeDetail.VendorStoreID)
|
||||
if err = err2; err2 == nil {
|
||||
if storeDetail.VendorStoreID != "" && storeDetail.AuditStatus == model.StoreAuditStatusOnline {
|
||||
// 同步更新门店信息
|
||||
err = updateCourierStore(ctx, storeDetail)
|
||||
if err == nil {
|
||||
//美团配送修改门店信息后要待审核
|
||||
@@ -1970,6 +1981,7 @@ func updateCourierStores(ctx *jxcontext.Context, storeID int) (err error) {
|
||||
return errList.GetErrListAsOne()
|
||||
}
|
||||
|
||||
// ====================================第三方店铺创建=============================
|
||||
func updateOrCreateCourierStore(ctx *jxcontext.Context, storeDetail *dao.StoreDetail2) (isCreated bool, err error) {
|
||||
globals.SugarLogger.Debugf("updateOrCreateCourierStore %s, storeID:%d, vendorStoreID:%s", model.VendorChineseNames[storeDetail.VendorID], storeDetail.ID, storeDetail.VendorStoreID)
|
||||
|
||||
@@ -1985,6 +1997,7 @@ func updateOrCreateCourierStore(ctx *jxcontext.Context, storeDetail *dao.StoreDe
|
||||
remoteStoreDetail, err2 := handlerInfo.Handler.GetStore(ctx, 0, storeDetail.VendorStoreID)
|
||||
if err = err2; err != nil {
|
||||
if handlerInfo.Handler.IsErrStoreNotExist(err) {
|
||||
// 本地门店同步第三方平台
|
||||
storeDetail.VendorStoreID, storeDetail.AuditStatus, err = handlerInfo.Handler.CreateStore(ctx, storeDetail)
|
||||
if err == nil {
|
||||
isCreated = true
|
||||
@@ -2029,6 +2042,7 @@ func UpdateOrCreateCourierStores(ctx *jxcontext.Context, storeID int, isForceUpd
|
||||
}
|
||||
}
|
||||
|
||||
// 定时任务更新或者创建时修改东西
|
||||
task := tasksch.NewParallelTask("UpdateOrCreateCourierStores", tasksch.NewParallelConfig().SetIsContinueWhenError(isContinueWhenError), ctx,
|
||||
func(task *tasksch.ParallelTask, batchItemList []interface{}, params ...interface{}) (retVal interface{}, err error) {
|
||||
var resultList []interface{}
|
||||
|
||||
@@ -67,6 +67,8 @@ type StoreDetail struct {
|
||||
BrandLogo string `json:"brandLogo"`
|
||||
BrandIsOpen int `json:"brandIsOpen"`
|
||||
BrandIsPrint int `json:"brandIsPrint"`
|
||||
|
||||
SendOrderType int `orm:"-" json:"-"` // 临时变量发单类型 1-系统手动发单
|
||||
}
|
||||
|
||||
// 带快递门店信息的
|
||||
|
||||
@@ -73,14 +73,13 @@ type ModelIDCULD struct {
|
||||
// 同步标识掩码
|
||||
const (
|
||||
// general
|
||||
SyncFlagModifiedMask = 1
|
||||
SyncFlagNewMask = 2
|
||||
SyncFlagDeletedMask = 4
|
||||
|
||||
SyncFlagModifiedMask = 1 // 同步标志修改掩码
|
||||
SyncFlagNewMask = 2 // 同步标记新掩码
|
||||
SyncFlagDeletedMask = 4 // 同步标志删除掩码
|
||||
// store only
|
||||
SyncFlagStoreName = 8
|
||||
SyncFlagStoreAddress = 16
|
||||
SyncFlagStoreStatus = 32
|
||||
SyncFlagStoreName = 8 // 同步标志存储名称
|
||||
SyncFlagStoreAddress = 16 // 同步标志存储地址
|
||||
SyncFlagStoreStatus = 32 // 同步标志存储状态
|
||||
|
||||
// sku only
|
||||
SyncFlagSpecMask = 64 // 规格修改,原值32
|
||||
|
||||
@@ -6,32 +6,55 @@ import (
|
||||
"git.rosy.net.cn/jx-callback/business/model"
|
||||
)
|
||||
|
||||
func OnCallbackMsg(msg *mtwmapi.CallbackMsg) (response *mtwmapi.CallbackResponse) {
|
||||
if CurPurchaseHandler != nil {
|
||||
if msg.Cmd == mtwmapi.MsgTypeStoreStatusChanged || msg.Cmd == mtwmapi.MsgTypeStoreAuditStatusChanged {
|
||||
response = CurPurchaseHandler.onStoreStatusChanged(msg)
|
||||
} else if msg.Cmd == mtwmapi.MsgTypePrivateNumberDowngrade {
|
||||
response = CurPurchaseHandler.onNumberDowngrade(msg)
|
||||
} else if msg.Cmd == mtwmapi.MsgTypeStoreBind {
|
||||
//
|
||||
//if msg.Cmd == mtwmapi.MsgTypeStoreStatusChanged || msg.Cmd == mtwmapi.MsgTypeStoreAuditStatusChanged {
|
||||
//response = CurPurchaseHandler.onStoreStatusChanged(msg)
|
||||
//} else if msg.Cmd == mtwmapi.MsgTypePrivateNumberDowngrade {
|
||||
//response = CurPurchaseHandler.onNumberDowngrade(msg)
|
||||
//} else if msg.Cmd == mtwmapi.MsgTypeStoreBind {
|
||||
//
|
||||
//} else {
|
||||
//if orderID := GetOrderIDFromMsg(msg); orderID != "" {
|
||||
//jxutils.CallMsgHandler(func() {
|
||||
//switch msg.Cmd {
|
||||
//case mtwmapi.MsgTypeWaybillStatus:
|
||||
//response = CurPurchaseHandler.onWaybillMsg(msg)
|
||||
//default:
|
||||
//response = CurPurchaseHandler.onOrderMsg(msg)
|
||||
//}
|
||||
//}, jxutils.ComposeUniversalOrderID(orderID, model.VendorIDMTWM))
|
||||
//}
|
||||
///*if msg.Cmd == mtwmapi.MsgTypeOrderRefund || msg.Cmd == mtwmapi.MsgTypeOrderPartialRefund {
|
||||
// utils.CallFuncAsync(func() {
|
||||
// OnFinancialMsg(msg)
|
||||
// })
|
||||
//} */
|
||||
//}
|
||||
|
||||
} else {
|
||||
if orderID := GetOrderIDFromMsg(msg); orderID != "" {
|
||||
jxutils.CallMsgHandler(func() {
|
||||
switch msg.Cmd {
|
||||
case mtwmapi.MsgTypeWaybillStatus:
|
||||
response = CurPurchaseHandler.onWaybillMsg(msg)
|
||||
default:
|
||||
response = CurPurchaseHandler.onOrderMsg(msg)
|
||||
}
|
||||
}, jxutils.ComposeUniversalOrderID(orderID, model.VendorIDMTWM))
|
||||
}
|
||||
/*if msg.Cmd == mtwmapi.MsgTypeOrderRefund || msg.Cmd == mtwmapi.MsgTypeOrderPartialRefund {
|
||||
utils.CallFuncAsync(func() {
|
||||
OnFinancialMsg(msg)
|
||||
})
|
||||
} */
|
||||
}
|
||||
func OnCallbackMsg(msg *mtwmapi.CallbackMsg) (response *mtwmapi.CallbackResponse) {
|
||||
if CurPurchaseHandler == nil {
|
||||
return &mtwmapi.CallbackResponse{Data: "CurPurchaseHandler init fail"}
|
||||
}
|
||||
|
||||
// 获取orderId
|
||||
orderID := GetOrderIDFromMsg(msg)
|
||||
switch {
|
||||
case msg.Cmd == mtwmapi.MsgTypeStoreStatusChanged || msg.Cmd == mtwmapi.MsgTypeStoreAuditStatusChanged:
|
||||
response = CurPurchaseHandler.onStoreStatusChanged(msg)
|
||||
case msg.Cmd == mtwmapi.MsgTypePrivateNumberDowngrade:
|
||||
response = CurPurchaseHandler.onNumberDowngrade(msg)
|
||||
case msg.Cmd == mtwmapi.MsgTypeStoreBind:
|
||||
break
|
||||
case orderID != "" && msg.Cmd == mtwmapi.MsgTypeWaybillStatus:
|
||||
jxutils.CallMsgHandler(func() {
|
||||
if msg.Cmd == mtwmapi.MsgTypeWaybillStatus {
|
||||
response = CurPurchaseHandler.onWaybillMsg(msg)
|
||||
} else {
|
||||
response = CurPurchaseHandler.onOrderMsg(msg)
|
||||
}
|
||||
}, jxutils.ComposeUniversalOrderID(orderID, model.VendorIDMTWM))
|
||||
}
|
||||
|
||||
return response
|
||||
}
|
||||
|
||||
|
||||
@@ -299,6 +299,7 @@ pushMasterSecret= "dGZcR0XGGg7H5Pd7FR3n47"
|
||||
|
||||
fnAppID = "6a3e2073-1850-413b-9eb7-6c342ec36e1c"
|
||||
fnAppSecret = "a8248088-a742-4c33-a0db-03aeae00ca7d"
|
||||
fnMerchantId = "20200818"
|
||||
fnCallbackURL = "http://callback.jxc4.com/fn/msg"
|
||||
|
||||
jxPrintAppID = "1000"
|
||||
@@ -387,6 +388,7 @@ jdShopAppSecret2 = "71e1061ac2f246f6ac27efb900edba12"
|
||||
|
||||
fnAppID = "6a3e2073-1850-413b-9eb7-6c342ec36e1c"
|
||||
fnAppSecret = "a8248088-a742-4c33-a0db-03aeae00ca7d"
|
||||
fnMerchantId = "20200818"
|
||||
fnCallbackURL = "http://callback-jxgy.jxc4.com/fn/msg"
|
||||
|
||||
jxPrintAppID = "1000"
|
||||
@@ -562,6 +564,7 @@ pushMasterSecret= "dGZcR0XGGg7H5Pd7FR3n47"
|
||||
|
||||
fnAppID = "6a3e2073-1850-413b-9eb7-6c342ec36e1c"
|
||||
fnAppSecret = "a8248088-a742-4c33-a0db-03aeae00ca7d"
|
||||
fnMerchantId = "20200818"
|
||||
fnCallbackURL = "http://callback.beta.jxc4.com/fn/msg"
|
||||
|
||||
jxPrintAppID = "1000"
|
||||
|
||||
@@ -368,7 +368,7 @@ func (c *Auth2Controller) ChangePassword() {
|
||||
})
|
||||
}
|
||||
|
||||
// @Title 清除除参数token以外的这个人的token
|
||||
// @Title 清除除参数token以外的这个人的tokenSendStoreMessage
|
||||
// @Description 清除除参数token以外的这个人的token
|
||||
// @Param token header string true "认证token"
|
||||
// @Success 200 {object} controllers.CallResult
|
||||
|
||||
@@ -2,9 +2,7 @@ package controllers
|
||||
|
||||
import (
|
||||
"git.rosy.net.cn/baseapi/platformapi/mtwmapi"
|
||||
"git.rosy.net.cn/baseapi/utils"
|
||||
"git.rosy.net.cn/jx-callback/business/partner/purchase/mtwm"
|
||||
"git.rosy.net.cn/jx-callback/globals"
|
||||
"git.rosy.net.cn/jx-callback/globals/api"
|
||||
"github.com/astaxie/beego/server/web"
|
||||
)
|
||||
@@ -14,14 +12,9 @@ type MtwmController struct {
|
||||
}
|
||||
|
||||
func (c *MtwmController) onCallbackMsg(msgType string) {
|
||||
c.Data["json"] = mtwmapi.Err2CallbackResponse(nil, "")
|
||||
msg, callbackResponse := api.MtwmAPI.GetCallbackMsg(c.Ctx.Request)
|
||||
globals.SugarLogger.Debug(utils.Format4Output(msg, true))
|
||||
if callbackResponse == nil {
|
||||
callbackResponse = mtwm.OnCallbackMsg(msg)
|
||||
if callbackResponse == nil {
|
||||
callbackResponse = mtwmapi.Err2CallbackResponse(nil, "")
|
||||
}
|
||||
}
|
||||
c.Data["json"] = callbackResponse
|
||||
c.ServeJSON()
|
||||
|
||||
@@ -273,7 +273,7 @@ func Init() {
|
||||
AliPayAPI = alipayapi.New(alipayAppID, []byte(beego.AppConfig.DefaultString("alipayPrivateKey", "")))
|
||||
}
|
||||
|
||||
FnAPI = fnpsapi.New(beego.AppConfig.DefaultString("fnAppID", ""), beego.AppConfig.DefaultString("fnAppSecret", ""))
|
||||
FnAPI = fnpsapi.New(beego.AppConfig.DefaultString("fnAppID", ""), beego.AppConfig.DefaultString("fnAppSecret", ""), beego.AppConfig.DefaultString("fnMerchantId", ""))
|
||||
FeieAPI = feieapi.New(beego.AppConfig.DefaultString("feieUser", ""), beego.AppConfig.DefaultString("feieKey", ""))
|
||||
XiaoWMAPI = xiaowmapi.New(beego.AppConfig.DefaultInt("xiaoWMAppID", 0), beego.AppConfig.DefaultString("xiaoWMAppKey", ""))
|
||||
YilianyunAPI = yilianyunapi.New(beego.AppConfig.DefaultString("yilianyunClientID", ""), beego.AppConfig.DefaultString("yilianyunClientSecret", ""))
|
||||
|
||||
Reference in New Issue
Block a user