From 1bbebdb773ca50167affd3c5c5fd5b53c8f16943 Mon Sep 17 00:00:00 2001 From: richboo111 Date: Thu, 29 Dec 2022 18:14:55 +0800 Subject: [PATCH 1/5] dyps cancelwaybill --- business/jxcallback/scheduler/basesch/basesch.go | 7 ------- business/jxcallback/scheduler/defsch/defsch.go | 9 +++++++++ business/jxcallback/scheduler/defsch/defsch_ext.go | 4 ---- business/partner/delivery/tiktok_store/waybill.go | 7 +++---- globals/beegodb/beegodb.go | 2 ++ globals/globals.go | 1 + 6 files changed, 15 insertions(+), 15 deletions(-) diff --git a/business/jxcallback/scheduler/basesch/basesch.go b/business/jxcallback/scheduler/basesch/basesch.go index e68dab1c9..863c9a35c 100644 --- a/business/jxcallback/scheduler/basesch/basesch.go +++ b/business/jxcallback/scheduler/basesch/basesch.go @@ -241,27 +241,20 @@ func (c *BaseScheduler) CreateWaybill(platformVendorID int, order *model.GoodsOr func (c *BaseScheduler) CancelWaybill(bill *model.Waybill, cancelReasonID int, cancelReason string) (err error) { // 部分快递平台在取消成功后有时会不发运单取消消息过来(比如达达,904200512000442),为避免二次取消报错,添加状态判断 - globals.SugarLogger.Debugf("BaseScheduler CancelWaybill bill======%s", utils.Format4Output(bill, false)) if c.IsReallyCallPlatformAPI && bill.OrderVendorID != bill.WaybillVendorID && bill.Status != model.WaybillStatusCanceled { - globals.SugarLogger.Debugf("bill.OrderVendorID====%d, bill.WaybillVendorID====%d , bill.Status====%d", bill.OrderVendorID, bill.WaybillVendorID, bill.Status) - globals.SugarLogger.Debugf("handlerInfo====%s", utils.Format4Output(partner.GetDeliveryPlatformFromVendorID(bill.WaybillVendorID), false)) if handlerInfo := partner.GetDeliveryPlatformFromVendorID(bill.WaybillVendorID); handlerInfo != nil { if err = utils.CallFuncLogErrorWithInfo(func() error { if err := handlerInfo.Handler.CancelWaybill(bill, cancelReasonID, cancelReason); err != nil { - globals.SugarLogger.Debugf("BaseScheduler CancelWaybill err========%v", err) return err } order, _ := partner.CurOrderManager.LoadOrder(bill.VendorOrderID, bill.OrderVendorID) - globals.SugarLogger.Debugf("BaseScheduler CancelWaybill order=========%s", utils.Format4Output(order, false)) return orderman.ResetCreateWaybillFee(nil, order) }, "CancelWaybill bill:%v", bill); err == nil { bill.Status = model.WaybillStatusCanceled bill.DeliveryFlag |= model.WaybillDeliveryFlagMaskActiveCancel - globals.SugarLogger.Debugf("bill.Status===========%d,bill.DeliveryFlag===========%d", bill.Status, bill.DeliveryFlag) _, err = dao.UpdateEntity(nil, bill, "Status", "DeliveryFlag") } } } - globals.SugarLogger.Debugf("BaseScheduler CancelWaybill return bill.VendorWaybillID=%s,err==========%v", bill.VendorWaybillID, err) return err } diff --git a/business/jxcallback/scheduler/defsch/defsch.go b/business/jxcallback/scheduler/defsch/defsch.go index 8bea09133..9e0269144 100644 --- a/business/jxcallback/scheduler/defsch/defsch.go +++ b/business/jxcallback/scheduler/defsch/defsch.go @@ -1005,6 +1005,15 @@ func (s *DefScheduler) solutionJdsOrder(bill *model.Waybill) (err error) { } func (s *DefScheduler) cancelOtherWaybills(savedOrderInfo *WatchOrderInfo, bill2Keep *model.Waybill, cancelReasonID int, cancelReason string) (err error) { + //特殊处理抖音运力取消 + if savedOrderInfo.order.VendorID == model.VendorIDDD { + savedOrderInfo.waybills[0] = &model.Waybill{ + VendorOrderID: savedOrderInfo.order.VendorOrderID, + VendorWaybillID: savedOrderInfo.order.VendorWaybillID, + WaybillVendorID: model.VendorIDDYPS, + OrderVendorID: model.VendorIDDD, + } + } for _, v := range savedOrderInfo.waybills { if v.Status < model.WaybillStatusEndBegin && !model.IsWaybillPlatformOwn(v) && diff --git a/business/jxcallback/scheduler/defsch/defsch_ext.go b/business/jxcallback/scheduler/defsch/defsch_ext.go index b75fa516b..3981239eb 100644 --- a/business/jxcallback/scheduler/defsch/defsch_ext.go +++ b/business/jxcallback/scheduler/defsch/defsch_ext.go @@ -418,10 +418,6 @@ func (s *DefScheduler) CancelAll3rdWaybills(ctx *jxcontext.Context, vendorOrderI err = func() (err error) { // 取消三方运单,取消各平台单号信息,间隔一段时间后定时任务重新调度 savedOrderInfo := s.loadSavedOrderByID(vendorOrderID, vendorID, true) - if vendorID == model.VendorIDDD { - globals.SugarLogger.Debugf("CancelAll3rdWaybills vendorOrderID=%s vendorID=%d", vendorOrderID, vendorID) - globals.SugarLogger.Debugf("CancelAll3rdWaybills savedOrderInfo=%s", utils.Format4Output(savedOrderInfo, false)) - } if savedOrderInfo != nil { err = s.cancelOtherWaybills(savedOrderInfo, nil, partner.CancelWaybillReasonOther, partner.CancelWaybillReasonStrActive) } else { diff --git a/business/partner/delivery/tiktok_store/waybill.go b/business/partner/delivery/tiktok_store/waybill.go index b9272888f..8ab7a6ab5 100644 --- a/business/partner/delivery/tiktok_store/waybill.go +++ b/business/partner/delivery/tiktok_store/waybill.go @@ -106,13 +106,12 @@ func (c *DeliveryHandler) CreateWaybill(order *model.GoodsOrder, maxDeliveryFee } func (c *DeliveryHandler) CancelWaybill(bill *model.Waybill, cancelReasonID int, cancelReason string) (err error) { - globals.SugarLogger.Debugf("进入DYPS CancelWaybill") - if localOrder, _, err := dao.GetOrders(dao.GetDB(), []int64{utils.Str2Int64(bill.VendorOrderID)}, false, false, "", "", false, []int{0}, false, "", nil, 0, 0); err != nil { + params := make(map[string]interface{}, 0) + params["vendorOrderID"] = bill.VendorOrderID + if localOrder, _, err := dao.GetOrders(dao.GetDB(), nil, false, false, "", "", false, []int{0}, false, "", params, 0, 0); err != nil { return errors.New("取消运单时,获取平台门店ID失败,请重试") } else { - globals.SugarLogger.Debugf("localOrder=%s", utils.Format4Output(localOrder, false)) if err = getAPI(bill.VendorOrgCode).ShopOrderDispatcher(utils.Str2Int64(localOrder[0].VendorStoreID), bill.VendorOrderID, tiktok_api.DispatcherFeeTypeCancel); err != nil { - globals.SugarLogger.Debugf("抖音配送取消运力失败:%v", err) return fmt.Errorf("抖音配送取消运力失败:%v", err) } bill.Status = model.WaybillStatusCanceled diff --git a/globals/beegodb/beegodb.go b/globals/beegodb/beegodb.go index 1e3d30fa6..3791b0645 100644 --- a/globals/beegodb/beegodb.go +++ b/globals/beegodb/beegodb.go @@ -12,6 +12,7 @@ import ( func Init() { // set default database // orm.RegisterDataBase(aliasName, driverName, dataSource, params) + orm.RegisterDataBase("default", "mysql", web.AppConfig.DefaultString("dbConnectStr", "")) orm.RegisterDataBase("c4beta", "mysql", "ubuntu:WebServer@1@tcp(111.231.218.230:3306)/jxd_dev_0?charset=utf8mb4&loc=Local&parseTime=true") orm.RegisterDataBase("api", "mysql", "root:WebServer@1@tcp(127.0.0.1:3306)/api?charset=utf8mb4&loc=Local&parseTime=true") @@ -24,6 +25,7 @@ func Init() { //orm.RegisterDataBase("default", "mysql", "root:123456@tcp(127.0.0.1:3306)/jxd_dev_0?charset=utf8mb4&loc=Local&parseTime=true") //orm.RegisterDataBase("c4beta", "mysql", "root:123456@tcp(127.0.0.1:3306)/jxd_dev_0?charset=utf8mb4&loc=Local&parseTime=true") //orm.RegisterDataBase("api", "mysql", "root:123456@tcp(127.0.0.1:3306)/api?charset=utf8mb4&loc=Local&parseTime=true") + // 开启sql打印 //orm.Debug = true diff --git a/globals/globals.go b/globals/globals.go index 3131c4774..617c6c720 100644 --- a/globals/globals.go +++ b/globals/globals.go @@ -102,6 +102,7 @@ func Init() { SugarLogger.Infof("globals RunMode=%s", web.BConfig.RunMode) ReallyCallPlatformAPI = (web.BConfig.RunMode != "dev" && web.BConfig.RunMode != "test") + //ReallyCallPlatformAPI = true//本地测试用 ReallySendWeixinMsg = ReallyCallPlatformAPI && IsProductEnv() AliKey = web.AppConfig.DefaultString("aliKey", "") From adad91cd52751db64a2d5515730d294d2201805e Mon Sep 17 00:00:00 2001 From: richboo111 Date: Wed, 4 Jan 2023 18:32:37 +0800 Subject: [PATCH 2/5] 1 --- business/jxstore/cms/store.go | 22 +++ business/model/const.go | 5 + business/partner/delivery/rider.go | 2 +- .../partner/delivery/tiktok_store/waybill.go | 7 - business/partner/delivery/uupt/waybill.go | 80 ++++++++++ .../partner/purchase/tiktok_store/order.go | 3 +- .../partner/purchase/tiktok_store/waybill.go | 145 ++++++++++++------ conf/app.conf | 5 + controllers/cms_store.go | 23 +++ 9 files changed, 231 insertions(+), 61 deletions(-) create mode 100644 business/partner/delivery/uupt/waybill.go diff --git a/business/jxstore/cms/store.go b/business/jxstore/cms/store.go index c2001727b..8c44dc7ad 100644 --- a/business/jxstore/cms/store.go +++ b/business/jxstore/cms/store.go @@ -6102,6 +6102,28 @@ func BatchCreateFreeShipTemplate(relInfo map[string][]tiktok_store.RelInfo, ship return "", nil } +//批量配置抖音门店自动呼叫运力 +func SetStoreAutoCallRider(vendorOrgCode string, openIDs, closeIDs []int64) (string, error) { + var errList errlist.ErrList + if len(openIDs) > 0 { + for _, i := range openIDs { + if err := tiktok_store.SetStoreAutoCallRider(vendorOrgCode, tiktok_api.AutoCallRiderOpen, i); err != nil { + errList.AddErr(fmt.Errorf("%d", i)) + } + } + } + if len(closeIDs) > 0 { + for _, j := range closeIDs { + if err := tiktok_store.SetStoreAutoCallRider(vendorOrgCode, tiktok_api.AutoCallRiderClose, j); err != nil { + errList.AddErr(fmt.Errorf("%d", j)) + } + } + } + if errList.GetErrListAsOne() != nil { + return fmt.Sprintf("部分门店设置自动运力失败:%s", utils.Format4Output(errList.GetErrListAsOne(), false)), nil + } + return "", nil +} func GetVendorStoreBind(vendorStoreId string, vendorId int) (int, error) { return dao.GetCodeAndIDByMeiTuan(vendorStoreId, vendorId) } diff --git a/business/model/const.go b/business/model/const.go index b972b3e5f..30a567720 100644 --- a/business/model/const.go +++ b/business/model/const.go @@ -338,6 +338,11 @@ const ( WaybillStatusDelivering = 20 // 配送中 WaybillStatusDeliverFailed = 22 // 配送中失败 + //抖音配送专用 + WaybillStatusRejected = 23 //收货人拒收 + WaybillStatusReturning = 24 //返回中 + WaybillStatusReturned = 25 //已返回 + WaybillStatusEndBegin = 100 // 以下的状态就是结束状态 WaybillStatusDelivered = 105 // todo 这个应该改为110,与订单对应 WaybillStatusCanceled = 115 diff --git a/business/partner/delivery/rider.go b/business/partner/delivery/rider.go index 56a85f632..c177840ee 100644 --- a/business/partner/delivery/rider.go +++ b/business/partner/delivery/rider.go @@ -69,7 +69,7 @@ func GetOrderRiderInfoToPlatform(orderId string, wayBillStatus int) { if v.WaybillVendorID == model.VendorIDDada || v.WaybillVendorID == model.VendorIDFengNiao || v.WaybillVendorID == model.VendorIDDD { riderInfo, err = handlerInfo.Handler.GetRiderInfo(v.VendorOrderID, 0, v.VendorWaybillID) if err != nil { - globals.SugarLogger.Debug("Get Order waybill rider info err FN/DADA :%v", err) + globals.SugarLogger.Debug("Get Order waybill rider info err FN/DADA/DYPS :%v", err) } } else if v.WaybillVendorID == model.VendorIDMTPS { if v.VendorWaybillID != "" { diff --git a/business/partner/delivery/tiktok_store/waybill.go b/business/partner/delivery/tiktok_store/waybill.go index 8ab7a6ab5..f700c9902 100644 --- a/business/partner/delivery/tiktok_store/waybill.go +++ b/business/partner/delivery/tiktok_store/waybill.go @@ -62,9 +62,6 @@ func (c *DeliveryHandler) GetStore(ctx *jxcontext.Context, storeID int, vendorSt VendorStoreID: utils.Int64ToStr(storeInfo.StoreDetail.Store.StoreId), CourierStatus: int(storeInfo.StoreDetail.Store.State), } - globals.SugarLogger.Debugf("storeDetail.Store.Lng====%d,storeDetail.Store.Lat==========%d", storeDetail.Store.Lng, storeDetail.Store.Lat) - } else { - globals.SugarLogger.Debugf("GetStoreDetail err=========%s", err) } globals.SugarLogger.Debugf("DYPS GetStore storeDetail====%s", utils.Format4Output(storeDetail, false)) return storeDetail, err @@ -101,7 +98,6 @@ func (c *DeliveryHandler) CreateWaybill(order *model.GoodsOrder, maxDeliveryFee return nil, err } delivery.OnWaybillCreated(bill) - globals.SugarLogger.Debugf("DYPS CreateWaybill bill======%s", utils.Format4Output(bill, false)) return bill, nil } @@ -127,7 +123,6 @@ func (c *DeliveryHandler) GetWaybillFee(order *model.GoodsOrder) (deliveryFeeInf if err != nil { return nil, errors.New("获取抖音平台账号信息失败,请重试") } - globals.SugarLogger.Debugf("relInfo.VendorStoreID======%s,order.VendorOrderID======%s", relInfo.VendorStoreID, order.VendorOrderID) if dispatcherFee, err := getAPI(relInfo.VendorOrgCode).GetDispatcherInfo(utils.Str2Int64(relInfo.VendorStoreID), order.VendorOrderID, tiktok_api.DispatcherFeeTypeCall); err == nil { deliveryFeeInfo = &partner.WaybillFeeInfo{} deliveryFeeInfo.DeliveryFee = dispatcherFee @@ -189,7 +184,6 @@ func CreateVirtualMobile(shopOrderID int64) (*superm_createVirtualMobile_respons //订单状态回调 func OnWaybillMsg(tag, orderId string, data interface{}) (response *tiktok_api.CallbackResponse) { req := data.(tiktok_api.ShipmentInfoData) - globals.SugarLogger.Debugf("DYPS OnWaybillMsg req============%s", utils.Format4Output(req, false)) param := &model.Waybill{ VendorOrderID: utils.Int64ToStr(req.ShopOrderID), VendorWaybillID: req.TrackNo, @@ -206,7 +200,6 @@ func OnWaybillMsg(tag, orderId string, data interface{}) (response *tiktok_api.C param.StatusTime = time.Now() } dispatcherFee := getDispatcherFee(req.ShopID, utils.Int64ToStr(req.ShopOrderID), tiktok_api.DispatcherFeeTypeCall) - globals.SugarLogger.Debugf("DYPS OnWaybillMsg dispatcherFee=%d req.ShipmentStatus=%d", dispatcherFee, req.ShipmentStatus) switch req.ShipmentStatus { case tiktok_api.ShipmentStatusCalling: //1 骑手呼叫中 param.DesiredFee = dispatcherFee diff --git a/business/partner/delivery/uupt/waybill.go b/business/partner/delivery/uupt/waybill.go new file mode 100644 index 000000000..5fa9baafd --- /dev/null +++ b/business/partner/delivery/uupt/waybill.go @@ -0,0 +1,80 @@ +package uupt + +const ( + //errCode 错误码说明 + ErrorParameter1 = -101 //参数格式校验错误 + ErrorParameter2 = -199 //参数格式校验错误 + ErrorTimestamp = -102 //timestamp错误 + ErrorAppID = -103 //appid无效 + ErrorSignatureCheck = -104 //签名校验失败 + ErrorOpenIDInvalid = -105 //openid无效 + ErrorUnableParseOrigin = -1001 //无法解析起始地 + ErrorUnableParseDestination = -1002 //无法解析目的地 + ErrorCantGetCityInformation = -1003 //无法获取订单城市相关信息 + ErrorOrderCategory = -1004 //订单小类出现错误 + ErrorNoUserInformation = -1005 //没有用户信息 + ErrorCouponID = -1006 //优惠券ID错误 + ErrorPriceToken1 = -2001 //price_token无效 + ErrorPriceToken2 = -2002 //price_token无效 + ErrorPushType = -2003 //push_type错误 + ErrorSpecialType = -2004 //special_type错误 + ErrorCallMeWithTake = -2005 //callMe_withTake错误 + ErrorOrderPrice = -2006 //order_price错误 + ErrorBalancePayMoney = -2007 //balance_payMoney错误 + ErrorOrderTotalMoney = -2008 //订单总金额错误 + ErrorPayMoney = -2009 //支付金额错误 + ErrorUserNotMatch = -2010 //用户不一致 + ErrorWrongPhone = -2011 //手机号错误 + ErrorNotExistBind = -2012 //不存在绑定关系 + ErrorCancelReasonCantEmpty = -4001 //取消原因不能为空 + ErrorOrderNumber1 = -4002 //订单编号无效 + ErrorOrderNumber2 = -5001 //订单编号无效 + ErrorOrderNumber3 = -5002 //订单编号无效 + ErrorOrderNumber4 = -5003 //订单编号无效 + ErrorFrequencyTooFast = -10001 //发送频率过快,请稍候重试 + ErrorNeedCommitVerificationCode = -106 //接口返回base64图片需要提交对应图片验证码 +) + +var ErrCode = map[int]string{ + ErrorParameter1: "参数格式校验错误", + ErrorParameter2: "参数格式校验错误", + ErrorTimestamp: "timestamp错误", + ErrorAppID: "appid无效", + ErrorSignatureCheck: "签名校验失败", + ErrorOpenIDInvalid: "openid无效", + ErrorUnableParseOrigin: "无法解析起始地", + ErrorUnableParseDestination: "无法解析目的地", + ErrorCantGetCityInformation: "无法获取订单城市相关信息", + ErrorOrderCategory: "订单小类出现错误", + ErrorNoUserInformation: "没有用户信息", + ErrorCouponID: "优惠券ID错误", + ErrorPriceToken1: "price_token无效", + ErrorPriceToken2: "price_token无效", + ErrorPushType: "push_type错误", + ErrorSpecialType: "special_type错误", + ErrorCallMeWithTake: "callMe_withTake错误", + ErrorOrderPrice: "order_price错误", + ErrorBalancePayMoney: "balance_payMoney错误", + ErrorOrderTotalMoney: "订单总金额错误", + ErrorPayMoney: "支付金额错误", + ErrorUserNotMatch: "用户不一致", + ErrorWrongPhone: "手机号错误", + ErrorNotExistBind: "不存在绑定关系", + ErrorCancelReasonCantEmpty: "取消原因不能为空", + ErrorOrderNumber1: "订单编号无效", + ErrorOrderNumber2: "订单编号无效", + ErrorOrderNumber3: "订单编号无效", + ErrorOrderNumber4: "订单编号无效", + ErrorFrequencyTooFast: "发送频率过快,请稍候重试", + ErrorNeedCommitVerificationCode: "接口返回base64图片需要提交对应图片验证码", +} +var ( + curDeliveryHandler *DeliveryHandler +) + +type DeliveryHandler struct { +} + +func init() { + //if api. +} diff --git a/business/partner/purchase/tiktok_store/order.go b/business/partner/purchase/tiktok_store/order.go index 2dd4517ca..bad881132 100644 --- a/business/partner/purchase/tiktok_store/order.go +++ b/business/partner/purchase/tiktok_store/order.go @@ -8,7 +8,6 @@ import ( 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" - "git.rosy.net.cn/jx-callback/business/partner/delivery/tiktok_store" "regexp" "strings" "time" @@ -267,7 +266,7 @@ func (c *PurchaseHandler) onOrderMsg(msgId, orderId string, msg interface{}) (re //抖音运单处理 if msgId == tiktokShop.CallbackShipmentInfoChange { //msgId-骑手运单号 orderId-抖音店铺ID msg-回调运单参数 - return tiktok_store.OnWaybillMsg(msgId, orderId, msg) + return c.onWaybillMsg(msgId, orderId, msg) } // 待支付订单将不做处理/支付订单待处理(抖音风控) if msgId == tiktokShop.CallbackCreatedOrderMsgTagId || msgId == tiktokShop.CallbackWaitOrderMsgTagId { diff --git a/business/partner/purchase/tiktok_store/waybill.go b/business/partner/purchase/tiktok_store/waybill.go index ea5895486..e66354716 100644 --- a/business/partner/purchase/tiktok_store/waybill.go +++ b/business/partner/purchase/tiktok_store/waybill.go @@ -1,53 +1,96 @@ package tiktok_store -// -//var ( -// VendorWaybillStatus2StatusMap = map[string]int{ -// mtwmapi.WaybillStatusWait4Delivery: model.WaybillStatusNew, -// mtwmapi.WaybillStatusPending: model.WaybillStatusPending, -// mtwmapi.WaybillStatusAccepted: model.WaybillStatusAccepted, -// mtwmapi.WaybillStatusCourierArrived: model.WaybillStatusCourierArrived, -// mtwmapi.WaybillStatusPickedup: model.WaybillStatusDelivering, -// mtwmapi.WaybillStatusDelivered: model.WaybillStatusDelivered, -// mtwmapi.WaybillStatusCanceled: model.WaybillStatusCanceled, -// } -//) -// -//func (p *PurchaseHandler) GetWaybillStatusFromVendorStatus(vendorStatus string) int { -// if status, ok := VendorWaybillStatus2StatusMap[vendorStatus]; ok { -// return status -// } -// return model.WaybillStatusUnknown -//} -// -//func (c *PurchaseHandler) onWaybillMsg(msg *mtwmapi.CallbackMsg) (response *mtwmapi.CallbackResponse) { -// waybill := c.callbackMsg2Waybill(msg) -// err := partner.CurOrderManager.OnWaybillStatusChanged(waybill) -// if err == nil && waybill.Status == model.WaybillStatusDelivering { -// c.postFakeMsg(waybill.VendorOrderID, FakeMsgType, mtwmapi.OrderStatusDelivering) -// } -// return mtwmapi.Err2CallbackResponse(err, "") -//} -// -//func (c *PurchaseHandler) callbackMsg2Waybill(msg *mtwmapi.CallbackMsg) (retVal *model.Waybill) { -// orderID := GetOrderIDFromMsg(msg) -// vendorStatus := msg.FormData.Get("logistics_status") -// retVal = &model.Waybill{ -// VendorOrderID: orderID, -// OrderVendorID: model.VendorIDMTWM, -// VendorWaybillID: orderID, -// WaybillVendorID: model.VendorIDMTWM, -// CourierName: msg.FormData.Get("dispatcher_name"), -// CourierMobile: msg.FormData.Get("dispatcher_mobile"), -// VendorStatus: vendorStatus, -// Status: c.GetWaybillStatusFromVendorStatus(vendorStatus), -// StatusTime: getTimeFromTimestamp(utils.Str2Int64(msg.FormData.Get("time"))), -// Remark: "", -// -// VendorOrgCode: msg.AppID, -// } -// if retVal.StatusTime == utils.DefaultTimeValue { -// retVal.StatusTime = getTimeFromTimestamp(utils.Str2Int64(msg.FormData.Get("timestamp"))) -// } -// return retVal -//} +import ( + superm_getStoreAutoCallRiderInfo_response "git.rosy.net.cn/baseapi/platformapi/tiktok_shop/sdk-golang/api/superm_getStoreAutoCallRiderInfo/response" + superm_setStoreAutoCallRider_request "git.rosy.net.cn/baseapi/platformapi/tiktok_shop/sdk-golang/api/superm_setStoreAutoCallRider/request" + "git.rosy.net.cn/baseapi/platformapi/tiktok_shop/tiktok_api" + "git.rosy.net.cn/baseapi/utils" + "git.rosy.net.cn/jx-callback/business/model" + "git.rosy.net.cn/jx-callback/business/model/dao" + "git.rosy.net.cn/jx-callback/business/partner" +) + +var ( + VendorWaybillStatus2StatusMap = map[int]int{ + tiktok_api.ShipmentStatusCalling: model.WaybillStatusNew, + tiktok_api.ShipmentStatusReceived: model.WaybillStatusAccepted, + tiktok_api.ShipmentStatusArrived: model.WaybillStatusCourierArrived, + tiktok_api.ShipmentStatusDelivering: model.WaybillStatusDelivering, + tiktok_api.ShipmentStatusRejected: model.WaybillStatusRejected, + tiktok_api.ShipmentStatusReturning: model.WaybillStatusReturning, + tiktok_api.ShipmentStatusReturned: model.WaybillStatusReturned, + tiktok_api.ShipmentStatusDelivered: model.WaybillStatusCanceled, + tiktok_api.ShipmentStatusCanceled: model.WaybillStatusDelivered, + } +) + +func (p *PurchaseHandler) GetWaybillStatusFromVendorStatus(vendorStatus string) int { + if status, ok := VendorWaybillStatus2StatusMap[utils.Str2Int(vendorStatus)]; ok { + return status + } + return model.WaybillStatusUnknown +} + +func (c *PurchaseHandler) onWaybillMsg(tag, orderId string, data interface{}) *tiktok_api.CallbackResponse { + waybill := c.callbackMsg2Waybill(tag, orderId, data) + if localOrder, _, err := dao.GetOrders(dao.GetDB(), nil, false, false, "", "", false, []int{0}, false, "", + map[string]interface{}{ + "vendorOrderID": waybill.VendorOrderID, + }, 0, 0); err == nil { + err := partner.CurOrderManager.OnWaybillStatusChanged(waybill) + if err == nil && waybill.Status == model.WaybillStatusDelivering { + c.postFakeMsg(waybill.VendorOrderID, FakeMsgType, utils.Int2Str(tiktok_api.ShipmentStatusDelivering), localOrder[0].VendorStoreID) + } + return tiktok_api.Err2CallbackResponse(err, "") + } + return tiktok_api.Err2CallbackResponse(nil, "") +} + +func (c *PurchaseHandler) callbackMsg2Waybill(tag, orderId string, data interface{}) (retVal *model.Waybill) { + req := data.(tiktok_api.ShipmentInfoData) + vendorOrgCode, _ := dao.GetStoreDetailForDD(dao.GetDB(), 0, model.VendorIDDD, utils.Int64ToStr(req.ShopID), "") + return &model.Waybill{ + VendorOrderID: utils.Int64ToStr(req.ShopOrderID), + OrderVendorID: model.VendorIDDD, + VendorWaybillID: req.TrackNo, + WaybillVendorID: model.VendorIDDYPS, + CourierName: req.RiderName, + CourierMobile: req.RiderPhone, + VendorStatus: utils.Int64ToStr(req.ShipmentStatus), + Status: c.GetWaybillStatusFromVendorStatus(utils.Int64ToStr(req.ShipmentStatus)), + StatusTime: getTimeFromTimestamp(utils.Str2Int64(req.OccurredTime)), + Remark: "", + VendorOrgCode: vendorOrgCode.VendorOrgCode, + } +} + +//设置自动呼叫运力 +func SetStoreAutoCallRider(vendorOrgCode, opType string, storeID int64) error { + if opType == tiktok_api.AutoCallRiderOpen { + if err := getAPI(vendorOrgCode, 0, "").SetStoreAutoCallRider(&superm_setStoreAutoCallRider_request.SupermSetStoreAutoCallRiderParam{ + StoreID: storeID, + OpType: opType, + ServiceType: tiktok_api.ServiceTypeDelayCall, + DelayTime: tiktok_api.AutoCallDelayTime15, + }); err != nil { + return err + } + } else { + if err := getAPI(vendorOrgCode, 0, "").SetStoreAutoCallRider(&superm_setStoreAutoCallRider_request.SupermSetStoreAutoCallRiderParam{ + StoreID: storeID, + OpType: opType, + }); err != nil { + return err + } + } + return nil +} + +//查询查询自动呼叫运力配置 +func GetStoreAutoCallRiderInfo(vendorOrgCode string, storeID int64) (autoCallInfo *superm_getStoreAutoCallRiderInfo_response.AutoCallInfo, err error) { + if autoCallInfo, err = getAPI(vendorOrgCode, 0, "").GetStoreAutoCallRiderInfo(storeID); err != nil { + return nil, err + } else { + return autoCallInfo, err + } +} diff --git a/conf/app.conf b/conf/app.conf index 02cf56875..f45d085ba 100644 --- a/conf/app.conf +++ b/conf/app.conf @@ -338,6 +338,11 @@ fnCode = "uDEyAmTbrfS2qjYbgi20Jm" fnMerchantId= "51658" fnCallbackURL = "http://callback.jxc4.com/fn/msg" +uuPtAppID="55c4542ae60e4d348edcfc93b06dd302" +uuPtAppKey="76b362c06b1b4baa9e47bab6387a5356" +uuPtOpenId="8d8464e7c9354c1e88a3f5afa2a7922e" + + jxPrintAppID = "1000" jxPrintAppKey = "rfBd56ti2SMtYvSg" diff --git a/controllers/cms_store.go b/controllers/cms_store.go index 6022cfaff..0f880b21f 100644 --- a/controllers/cms_store.go +++ b/controllers/cms_store.go @@ -1544,6 +1544,29 @@ func (c *StoreController) CreateFreeShipTemplates() { }) } +// @Title 批量配置抖音门店自动呼叫运力 +// @Description 批量配置抖音门店自动呼叫运力 +// @Param token header string true "认证token" +// @Param vendorOrgCode formData string true "抖音总账号" +// @Param openIDs formData string true "开启自动运力门店,[]string对象" +// @Param closeIDs formData string true "关闭自动运力门店,[]string对象" +// @Success 200 {object} controllers.CallResult +// @Failure 200 {object} controllers.CallResult +// @router /SetStoreAutoCallRider [post] +func (c *StoreController) SetStoreAutoCallRider() { + c.callSetStoreAutoCallRider(func(params *tStoreSetStoreAutoCallRiderParams) (retVal interface{}, errCode string, err error) { + openIDs := make([]int64, 0) + closeIDs := make([]int64, 0) + if err1 := utils.UnmarshalUseNumber([]byte(params.OpenIDs), &openIDs); err1 == nil { + if err2 := utils.UnmarshalUseNumber([]byte(params.CloseIDs), &closeIDs); err2 == nil { + err = cms.SetStoreAutoCallRider(params.VendorOrgCode, openIDs, closeIDs) + return nil, "", err + } + } + return nil, "", nil + }) +} + // @Title 打印机获取授权账号再京西菜市的绑定关系(其实就是根据平台门店id获取绑定门店id) // @Description 打印机获取授权账号再京西菜市的绑定关系 // @Param token header string true "认证token" From 3bc119ab2165e4155a5505383bcd293b57e64e49 Mon Sep 17 00:00:00 2001 From: richboo111 Date: Thu, 5 Jan 2023 18:31:08 +0800 Subject: [PATCH 3/5] 1 --- business/jxstore/cms/store.go | 11 ++++++- .../partner/purchase/tiktok_store/waybill.go | 24 ++++++++++---- controllers/cms_store.go | 32 +++++++++++++------ globals/beegodb/beegodb.go | 13 ++++---- routers/commentsRouter_controllers.go | 18 +++++++++++ 5 files changed, 75 insertions(+), 23 deletions(-) diff --git a/business/jxstore/cms/store.go b/business/jxstore/cms/store.go index 8c44dc7ad..e3b70c6b7 100644 --- a/business/jxstore/cms/store.go +++ b/business/jxstore/cms/store.go @@ -6120,10 +6120,19 @@ func SetStoreAutoCallRider(vendorOrgCode string, openIDs, closeIDs []int64) (str } } if errList.GetErrListAsOne() != nil { - return fmt.Sprintf("部分门店设置自动运力失败:%s", utils.Format4Output(errList.GetErrListAsOne(), false)), nil + return fmt.Sprintf("部分门店配置自动运力失败:%s", utils.Format4Output(errList.GetErrListAsOne(), false)), nil } return "", nil } + +//辅助函数 +func String2Array(data string) (retVal []int64) { + temp := strings.Split(data, ",") + for _, v := range temp { + retVal = append(retVal, utils.Str2Int64(v)) + } + return retVal +} func GetVendorStoreBind(vendorStoreId string, vendorId int) (int, error) { return dao.GetCodeAndIDByMeiTuan(vendorStoreId, vendorId) } diff --git a/business/partner/purchase/tiktok_store/waybill.go b/business/partner/purchase/tiktok_store/waybill.go index e66354716..bafe98a5f 100644 --- a/business/partner/purchase/tiktok_store/waybill.go +++ b/business/partner/purchase/tiktok_store/waybill.go @@ -1,10 +1,12 @@ package tiktok_store import ( + "errors" superm_getStoreAutoCallRiderInfo_response "git.rosy.net.cn/baseapi/platformapi/tiktok_shop/sdk-golang/api/superm_getStoreAutoCallRiderInfo/response" superm_setStoreAutoCallRider_request "git.rosy.net.cn/baseapi/platformapi/tiktok_shop/sdk-golang/api/superm_setStoreAutoCallRider/request" "git.rosy.net.cn/baseapi/platformapi/tiktok_shop/tiktok_api" "git.rosy.net.cn/baseapi/utils" + "git.rosy.net.cn/baseapi/utils/errlist" "git.rosy.net.cn/jx-callback/business/model" "git.rosy.net.cn/jx-callback/business/model/dao" "git.rosy.net.cn/jx-callback/business/partner" @@ -86,11 +88,21 @@ func SetStoreAutoCallRider(vendorOrgCode, opType string, storeID int64) error { return nil } -//查询查询自动呼叫运力配置 -func GetStoreAutoCallRiderInfo(vendorOrgCode string, storeID int64) (autoCallInfo *superm_getStoreAutoCallRiderInfo_response.AutoCallInfo, err error) { - if autoCallInfo, err = getAPI(vendorOrgCode, 0, "").GetStoreAutoCallRiderInfo(storeID); err != nil { - return nil, err - } else { - return autoCallInfo, err +//批量查询自动呼叫运力配置 +func GetStoreAutoCallRiderInfo(vendorOrgCode string, storeIDs []int64) (autoCallInfos map[int64]*superm_getStoreAutoCallRiderInfo_response.AutoCallInfo, err error) { + if len(storeIDs) == 0 { + return nil, errors.New("门店ID为空,请检查") } + errList := errlist.ErrList{} + for _, i := range storeIDs { + if autoCallInfo, err := getAPI(vendorOrgCode, 0, "").GetStoreAutoCallRiderInfo(i); err != nil { + errList.AddErr(err) + } else { + autoCallInfos[i] = autoCallInfo + } + } + if errList.GetErrListAsOne() != nil { + return nil, errList.GetErrListAsOne() + } + return autoCallInfos, nil } diff --git a/controllers/cms_store.go b/controllers/cms_store.go index 0f880b21f..424ed3944 100644 --- a/controllers/cms_store.go +++ b/controllers/cms_store.go @@ -1548,8 +1548,8 @@ func (c *StoreController) CreateFreeShipTemplates() { // @Description 批量配置抖音门店自动呼叫运力 // @Param token header string true "认证token" // @Param vendorOrgCode formData string true "抖音总账号" -// @Param openIDs formData string true "开启自动运力门店,[]string对象" -// @Param closeIDs formData string true "关闭自动运力门店,[]string对象" +// @Param openIDs formData string true "开启自动运力门店,string对象" +// @Param closeIDs formData string true "关闭自动运力门店,string对象" // @Success 200 {object} controllers.CallResult // @Failure 200 {object} controllers.CallResult // @router /SetStoreAutoCallRider [post] @@ -1557,13 +1557,27 @@ func (c *StoreController) SetStoreAutoCallRider() { c.callSetStoreAutoCallRider(func(params *tStoreSetStoreAutoCallRiderParams) (retVal interface{}, errCode string, err error) { openIDs := make([]int64, 0) closeIDs := make([]int64, 0) - if err1 := utils.UnmarshalUseNumber([]byte(params.OpenIDs), &openIDs); err1 == nil { - if err2 := utils.UnmarshalUseNumber([]byte(params.CloseIDs), &closeIDs); err2 == nil { - err = cms.SetStoreAutoCallRider(params.VendorOrgCode, openIDs, closeIDs) - return nil, "", err - } - } - return nil, "", nil + openIDs = cms.String2Array(params.OpenIDs) + closeIDs = cms.String2Array(params.CloseIDs) + retVal, err = cms.SetStoreAutoCallRider(params.VendorOrgCode, openIDs, closeIDs) + return retVal, "", err + }) +} + +// @Title 批量获取抖音门店自动呼叫运力设置 +// @Description 批量获取抖音门店自动呼叫运力设置 +// @Param token header string true "认证token" +// @Param vendorOrgCode query string true "抖音门店总账号" +// @Param storeIDs query string true "抖音门店IDs" +// @Success 200 {object} controllers.CallResult +// @Failure 200 {object} controllers.CallResult +// @router /GetStoreAutoCallRiderInfo [get] +func (c *StoreController) GetStoreAutoCallRiderInfo() { + c.callGetStoreAutoCallRiderInfo(func(params *tStoreGetStoreAutoCallRiderInfoParams) (retVal interface{}, errCode string, err error) { + storeIDs := make([]int64, 0) + storeIDs = cms.String2Array(params.StoreIDs) + retVal, err = tiktok_store.GetStoreAutoCallRiderInfo(params.VendorOrgCode, storeIDs) + return retVal, "", err }) } diff --git a/globals/beegodb/beegodb.go b/globals/beegodb/beegodb.go index 3791b0645..e73f63809 100644 --- a/globals/beegodb/beegodb.go +++ b/globals/beegodb/beegodb.go @@ -6,25 +6,24 @@ import ( "git.rosy.net.cn/jx-callback/business/model/legacymodel" "git.rosy.net.cn/jx-callback/globals" "github.com/astaxie/beego/client/orm" - "github.com/astaxie/beego/server/web" ) func Init() { // set default database // orm.RegisterDataBase(aliasName, driverName, dataSource, params) - orm.RegisterDataBase("default", "mysql", web.AppConfig.DefaultString("dbConnectStr", "")) - orm.RegisterDataBase("c4beta", "mysql", "ubuntu:WebServer@1@tcp(111.231.218.230:3306)/jxd_dev_0?charset=utf8mb4&loc=Local&parseTime=true") - orm.RegisterDataBase("api", "mysql", "root:WebServer@1@tcp(127.0.0.1:3306)/api?charset=utf8mb4&loc=Local&parseTime=true") + //orm.RegisterDataBase("default", "mysql", web.AppConfig.DefaultString("dbConnectStr", "")) + //orm.RegisterDataBase("c4beta", "mysql", "ubuntu:WebServer@1@tcp(111.231.218.230:3306)/jxd_dev_0?charset=utf8mb4&loc=Local&parseTime=true") + //orm.RegisterDataBase("api", "mysql", "root:WebServer@1@tcp(127.0.0.1:3306)/api?charset=utf8mb4&loc=Local&parseTime=true") // 本地测试服调试 // orm.RegisterDataBase("default", "mysql", web.AppConfig.DefaultString("dbConnectStr", "")) //orm.RegisterDataBase("api", "mysql", "root:WebServer@1@tcp(127.0.0.1:3306)/api?charset=utf8mb4&loc=Local&parseTime=true") //orm.RegisterDataBase("c4beta", "mysql", "ubuntu:WebServer@1@tcp(127.0.0.1:3306)/jxd_dev_0?charset=utf8mb4&loc=Local&parseTime=true") //本地服务器测试用 -ysq - //orm.RegisterDataBase("default", "mysql", "root:123456@tcp(127.0.0.1:3306)/jxd_dev_0?charset=utf8mb4&loc=Local&parseTime=true") - //orm.RegisterDataBase("c4beta", "mysql", "root:123456@tcp(127.0.0.1:3306)/jxd_dev_0?charset=utf8mb4&loc=Local&parseTime=true") - //orm.RegisterDataBase("api", "mysql", "root:123456@tcp(127.0.0.1:3306)/api?charset=utf8mb4&loc=Local&parseTime=true") + orm.RegisterDataBase("default", "mysql", "root:123456@tcp(127.0.0.1:3306)/jxd_dev_0?charset=utf8mb4&loc=Local&parseTime=true") + orm.RegisterDataBase("c4beta", "mysql", "root:123456@tcp(127.0.0.1:3306)/jxd_dev_0?charset=utf8mb4&loc=Local&parseTime=true") + orm.RegisterDataBase("api", "mysql", "root:123456@tcp(127.0.0.1:3306)/api?charset=utf8mb4&loc=Local&parseTime=true") // 开启sql打印 //orm.Debug = true diff --git a/routers/commentsRouter_controllers.go b/routers/commentsRouter_controllers.go index 58042c6c5..2e2136836 100644 --- a/routers/commentsRouter_controllers.go +++ b/routers/commentsRouter_controllers.go @@ -2990,6 +2990,24 @@ func init() { Filters: nil, Params: nil}) + web.GlobalControllerRouter["git.rosy.net.cn/jx-callback/controllers:StoreController"] = append(web.GlobalControllerRouter["git.rosy.net.cn/jx-callback/controllers:StoreController"], + web.ControllerComments{ + Method: "SetStoreAutoCallRider", + Router: `/SetStoreAutoCallRider`, + AllowHTTPMethods: []string{"post"}, + MethodParams: param.Make(), + Filters: nil, + Params: nil}) + + web.GlobalControllerRouter["git.rosy.net.cn/jx-callback/controllers:StoreController"] = append(web.GlobalControllerRouter["git.rosy.net.cn/jx-callback/controllers:StoreController"], + web.ControllerComments{ + Method: "GetStoreAutoCallRiderInfo", + Router: `/GetStoreAutoCallRiderInfo`, + AllowHTTPMethods: []string{"get"}, + MethodParams: param.Make(), + Filters: nil, + Params: nil}) + // 打印机管理系统绑定打印机授权时,检查账号是否已经授权过 web.GlobalControllerRouter["git.rosy.net.cn/jx-callback/controllers:StoreController"] = append(web.GlobalControllerRouter["git.rosy.net.cn/jx-callback/controllers:StoreController"], web.ControllerComments{ From 27c3042d85f851e37198103fa64e005147e4fae5 Mon Sep 17 00:00:00 2001 From: richboo111 Date: Mon, 9 Jan 2023 13:45:59 +0800 Subject: [PATCH 4/5] dyps update --- business/jxstore/cms/store.go | 2 +- controllers/cms_store.go | 6 +++--- globals/beegodb/beegodb.go | 15 ++++++++------- 3 files changed, 12 insertions(+), 11 deletions(-) diff --git a/business/jxstore/cms/store.go b/business/jxstore/cms/store.go index e3b70c6b7..e7ec4a97f 100644 --- a/business/jxstore/cms/store.go +++ b/business/jxstore/cms/store.go @@ -6126,7 +6126,7 @@ func SetStoreAutoCallRider(vendorOrgCode string, openIDs, closeIDs []int64) (str } //辅助函数 -func String2Array(data string) (retVal []int64) { +func String2ArrayInt64(data string) (retVal []int64) { temp := strings.Split(data, ",") for _, v := range temp { retVal = append(retVal, utils.Str2Int64(v)) diff --git a/controllers/cms_store.go b/controllers/cms_store.go index 424ed3944..3dd74d6bc 100644 --- a/controllers/cms_store.go +++ b/controllers/cms_store.go @@ -1557,8 +1557,8 @@ func (c *StoreController) SetStoreAutoCallRider() { c.callSetStoreAutoCallRider(func(params *tStoreSetStoreAutoCallRiderParams) (retVal interface{}, errCode string, err error) { openIDs := make([]int64, 0) closeIDs := make([]int64, 0) - openIDs = cms.String2Array(params.OpenIDs) - closeIDs = cms.String2Array(params.CloseIDs) + openIDs = cms.String2ArrayInt64(params.OpenIDs) + closeIDs = cms.String2ArrayInt64(params.CloseIDs) retVal, err = cms.SetStoreAutoCallRider(params.VendorOrgCode, openIDs, closeIDs) return retVal, "", err }) @@ -1575,7 +1575,7 @@ func (c *StoreController) SetStoreAutoCallRider() { func (c *StoreController) GetStoreAutoCallRiderInfo() { c.callGetStoreAutoCallRiderInfo(func(params *tStoreGetStoreAutoCallRiderInfoParams) (retVal interface{}, errCode string, err error) { storeIDs := make([]int64, 0) - storeIDs = cms.String2Array(params.StoreIDs) + storeIDs = cms.String2ArrayInt64(params.StoreIDs) retVal, err = tiktok_store.GetStoreAutoCallRiderInfo(params.VendorOrgCode, storeIDs) return retVal, "", err }) diff --git a/globals/beegodb/beegodb.go b/globals/beegodb/beegodb.go index e73f63809..b2b3d56a8 100644 --- a/globals/beegodb/beegodb.go +++ b/globals/beegodb/beegodb.go @@ -6,24 +6,25 @@ import ( "git.rosy.net.cn/jx-callback/business/model/legacymodel" "git.rosy.net.cn/jx-callback/globals" "github.com/astaxie/beego/client/orm" + "github.com/astaxie/beego/server/web" ) func Init() { // set default database // orm.RegisterDataBase(aliasName, driverName, dataSource, params) - - //orm.RegisterDataBase("default", "mysql", web.AppConfig.DefaultString("dbConnectStr", "")) - //orm.RegisterDataBase("c4beta", "mysql", "ubuntu:WebServer@1@tcp(111.231.218.230:3306)/jxd_dev_0?charset=utf8mb4&loc=Local&parseTime=true") - //orm.RegisterDataBase("api", "mysql", "root:WebServer@1@tcp(127.0.0.1:3306)/api?charset=utf8mb4&loc=Local&parseTime=true") + //正式服务器 + orm.RegisterDataBase("default", "mysql", web.AppConfig.DefaultString("dbConnectStr", "")) + orm.RegisterDataBase("c4beta", "mysql", "ubuntu:WebServer@1@tcp(111.231.218.230:3306)/jxd_dev_0?charset=utf8mb4&loc=Local&parseTime=true") + orm.RegisterDataBase("api", "mysql", "root:WebServer@1@tcp(127.0.0.1:3306)/api?charset=utf8mb4&loc=Local&parseTime=true") // 本地测试服调试 // orm.RegisterDataBase("default", "mysql", web.AppConfig.DefaultString("dbConnectStr", "")) //orm.RegisterDataBase("api", "mysql", "root:WebServer@1@tcp(127.0.0.1:3306)/api?charset=utf8mb4&loc=Local&parseTime=true") //orm.RegisterDataBase("c4beta", "mysql", "ubuntu:WebServer@1@tcp(127.0.0.1:3306)/jxd_dev_0?charset=utf8mb4&loc=Local&parseTime=true") //本地服务器测试用 -ysq - orm.RegisterDataBase("default", "mysql", "root:123456@tcp(127.0.0.1:3306)/jxd_dev_0?charset=utf8mb4&loc=Local&parseTime=true") - orm.RegisterDataBase("c4beta", "mysql", "root:123456@tcp(127.0.0.1:3306)/jxd_dev_0?charset=utf8mb4&loc=Local&parseTime=true") - orm.RegisterDataBase("api", "mysql", "root:123456@tcp(127.0.0.1:3306)/api?charset=utf8mb4&loc=Local&parseTime=true") + //orm.RegisterDataBase("default", "mysql", "root:123456@tcp(127.0.0.1:3306)/jxd_dev_0?charset=utf8mb4&loc=Local&parseTime=true") + //orm.RegisterDataBase("c4beta", "mysql", "root:123456@tcp(127.0.0.1:3306)/jxd_dev_0?charset=utf8mb4&loc=Local&parseTime=true") + //orm.RegisterDataBase("api", "mysql", "root:123456@tcp(127.0.0.1:3306)/api?charset=utf8mb4&loc=Local&parseTime=true") // 开启sql打印 //orm.Debug = true From 0176f1501b9e552c14f2f18e38e530e495d0eb5f Mon Sep 17 00:00:00 2001 From: richboo111 Date: Mon, 9 Jan 2023 14:53:56 +0800 Subject: [PATCH 5/5] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E6=A0=A1=E9=AA=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- controllers/cms_store.go | 21 +++++++++++++-------- 1 file changed, 13 insertions(+), 8 deletions(-) diff --git a/controllers/cms_store.go b/controllers/cms_store.go index 3dd74d6bc..030674713 100644 --- a/controllers/cms_store.go +++ b/controllers/cms_store.go @@ -1,6 +1,7 @@ package controllers import ( + "errors" "git.rosy.net.cn/baseapi/utils" "git.rosy.net.cn/jx-callback/business/jxstore/cms" "git.rosy.net.cn/jx-callback/business/jxstore/common" @@ -1548,19 +1549,23 @@ func (c *StoreController) CreateFreeShipTemplates() { // @Description 批量配置抖音门店自动呼叫运力 // @Param token header string true "认证token" // @Param vendorOrgCode formData string true "抖音总账号" -// @Param openIDs formData string true "开启自动运力门店,string对象" -// @Param closeIDs formData string true "关闭自动运力门店,string对象" +// @Param openIDs formData string false "开启自动运力门店,string对象" +// @Param closeIDs formData string false "关闭自动运力门店,string对象" // @Success 200 {object} controllers.CallResult // @Failure 200 {object} controllers.CallResult // @router /SetStoreAutoCallRider [post] func (c *StoreController) SetStoreAutoCallRider() { c.callSetStoreAutoCallRider(func(params *tStoreSetStoreAutoCallRiderParams) (retVal interface{}, errCode string, err error) { - openIDs := make([]int64, 0) - closeIDs := make([]int64, 0) - openIDs = cms.String2ArrayInt64(params.OpenIDs) - closeIDs = cms.String2ArrayInt64(params.CloseIDs) - retVal, err = cms.SetStoreAutoCallRider(params.VendorOrgCode, openIDs, closeIDs) - return retVal, "", err + if len(params.OpenIDs) == 0 && len(params.CloseIDs) == 0 { + return nil, "", errors.New("开启/关闭自动运力门店ID不可都为空") + } else { + openIDs := make([]int64, 0) + closeIDs := make([]int64, 0) + openIDs = cms.String2ArrayInt64(params.OpenIDs) + closeIDs = cms.String2ArrayInt64(params.CloseIDs) + retVal, err = cms.SetStoreAutoCallRider(params.VendorOrgCode, openIDs, closeIDs) + return retVal, "", err + } }) }