From 866aa16bc58463ceda08565b0069e18d81263c3e Mon Sep 17 00:00:00 2001 From: richboo111 Date: Mon, 12 Jun 2023 14:16:00 +0800 Subject: [PATCH 1/2] 1 --- business/jxstore/cms/store.go | 2 +- business/partner/delivery/sfps/waybill.go | 17 +++++++++++++++-- business/partner/delivery/uupt/waybill.go | 12 ++++++++++++ business/partner/purchase/im/im_server.go | 1 + controllers/sfps_callback.go | 6 ++---- 5 files changed, 31 insertions(+), 7 deletions(-) diff --git a/business/jxstore/cms/store.go b/business/jxstore/cms/store.go index 0d30c49f6..880aec838 100644 --- a/business/jxstore/cms/store.go +++ b/business/jxstore/cms/store.go @@ -589,7 +589,7 @@ func GetStores(ctx *jxcontext.Context, keyword string, params map[string]interfa storeIDs2 = append(storeIDs2, k) } } else { - //storeIDs2 = append(storeIDs2, -1) + //storeIDs2 = append(storeIDs2, -1)l // 商家小程序用户切换门店,如果角色storeIDsMap没有数据则查询传入数据 storeIDs2 = append(storeIDs2, int(utils.Interface2Int64WithDefault(params["storeID"], 0))) } diff --git a/business/partner/delivery/sfps/waybill.go b/business/partner/delivery/sfps/waybill.go index e90594724..3f69c94f3 100644 --- a/business/partner/delivery/sfps/waybill.go +++ b/business/partner/delivery/sfps/waybill.go @@ -155,6 +155,8 @@ func (d DeliveryHandler) CreateWaybill(order *model.GoodsOrder, maxDeliveryFee i delivery.OnWaybillCreated(bill) //todo 模拟新运单回调 if _, err = partner.CurOrderManager.LoadWaybill(sfOrderID, model.VendorIDSFPS); fmt.Sprintf("%s", err) == "找不到相应运单" { + //忽略找不到运单错误 + err = nil resp := OnWaybillMsg(sfps2.UrlIndexRiderStatus, sfps2.RiderStatus{ ShopId: utils.Str2Float64(sfps2.SFShopStoreID), SFOrderID: sfOrderID, @@ -254,7 +256,9 @@ func (d DeliveryHandler) GetRiderInfo(orderId string, deliveryId int64, mtPeison sfOrder, err := api.SfPsAPI.GetOrderStatus(order[0].VendorWaybillID) //获取顺丰骑手实时位置 sfRider, err := api.SfPsAPI.GetRiderLatestPosition(sfOrder.OrderID) - + if sfRider == nil { + return nil, errors.New("顺丰派送暂无骑手信息") + } result := &mtpsapi.RiderInfo{ OrderId: orderId, ThirdCarrierOrderId: sfOrder.OrderID, @@ -299,6 +303,15 @@ func (c *DeliveryHandler) GetWaybillTip(ctx *jxcontext.Context, vendorOrgCode, v return api.SfPsAPI.QueryTipFee(vendorWaybillID) } +func (c *DeliveryHandler) GetRidderPosition(ctx *jxcontext.Context, vendorOrgCode, vendorOrderID, vendorWaybillID, vendorWaybillID2 string) (lng, lat float64, err error) { + if rider, err := api.SfPsAPI.GetRiderLatestPosition(vendorWaybillID); err == nil && len(rider.RiderLng) > 0 && len(rider.RiderLat) > 0 { + lng = utils.Str2Float64(rider.RiderLng) + lat = utils.Str2Float64(rider.RiderLat) + return lng, lat, nil + } + return 0, 0, err +} + func (c *DeliveryHandler) UpdateWaybillTip(ctx *jxcontext.Context, vendorOrgCode, vendorStoreID, vendorOrderID, vendorWaybillID, vendorWaybillID2, cityCode string, tipFee int64) (err error) { return api.SfPsAPI.AddTipFee(vendorWaybillID, tipFee) } @@ -396,7 +409,7 @@ func OnWaybillMsg(urlIndex string, msg interface{}) (resp *sfps2.CallbackRespons case sfps2.OrderStatusFinished: result.LogisticsStatus = model.WaybillStatusDelivered result.LogisticsContext = model.RiderGetOrderDelivered - case sfps2.OrderStatusOrderCancel: + case sfps2.OrderStatusOrderCancel, sfps2.OrderStatusRiderCancel: result.LogisticsStatus = model.WaybillStatusCanceled result.LogisticsContext = model.RiderGetOrderCanceled case sfps2.OrderStatusError: diff --git a/business/partner/delivery/uupt/waybill.go b/business/partner/delivery/uupt/waybill.go index 81f5b8c18..00ee86d7b 100644 --- a/business/partner/delivery/uupt/waybill.go +++ b/business/partner/delivery/uupt/waybill.go @@ -259,6 +259,18 @@ func (c *DeliveryHandler) GetDeliverLiquidatedDamages(orderId string, deliverId return api.UuAPI.GetOrderLiquidatedDamages(deliverId, orderId) } +func (c *DeliveryHandler) GetRidderPosition(ctx *jxcontext.Context, vendorOrgCode, vendorOrderID, vendorWaybillID, vendorWaybillID2 string) (lng, lat float64, err error) { + if rider, err := api.UuAPI.GetOrderDetail(vendorWaybillID); err == nil && len(rider.DriverLastloc) > 0 { + te := strings.Split(rider.DriverLastloc, ",") + if len(te) > 0 { + lng = utils.Str2Float64(te[0]) + lat = utils.Str2Float64(te[1]) + } + return lng, lat, nil + } + return 0, 0, err +} + //辅助函数 func getOrderPrice(order *model.GoodsOrder) (orderPrice *uuptapi.GetOrderPriceResp, err error) { store, err := dao.GetStoreDetail(dao.GetDB(), getReallyStoreID(order.StoreID, order.JxStoreID), 0, "") diff --git a/business/partner/purchase/im/im_server.go b/business/partner/purchase/im/im_server.go index ac66503c6..27f5a489a 100644 --- a/business/partner/purchase/im/im_server.go +++ b/business/partner/purchase/im/im_server.go @@ -92,6 +92,7 @@ func PingTimer() { } globals.SugarLogger.Debugf("PingTimer jx clientID ") } else { + fmt.Printf("PingTimer mt心跳,conn%s,%s", conn.ClientId, conn.ClientType) if err := conn.Socket.WriteMessage(websocket.TextMessage, []byte(HeartCheckMsg)); err != nil { fmt.Printf("PingTimer mtHeartBeat err:%v", err) //对美团重新建立连接 diff --git a/controllers/sfps_callback.go b/controllers/sfps_callback.go index 232355efc..209ffb2e1 100644 --- a/controllers/sfps_callback.go +++ b/controllers/sfps_callback.go @@ -24,15 +24,13 @@ func (c *SFPSController) SfOrder() { c.ServeJSON() return } + // 订单回调 for k, v := range msg { callbackResponse = sfps.OnWaybillMsg(k, v) c.Data["data"] = callbackResponse fmt.Printf("SfOrder callbackResponse=%s", utils.Format4Output(callbackResponse, false)) - err := c.ServeJSON() - if err != nil { - fmt.Printf("serveJSON err=%v", err) - } + c.ServeJSON() } } else { c.Abort("404") From 8ae02fcd60aa1fbf19e9c974f28fecbc046e4e3a Mon Sep 17 00:00:00 2001 From: richboo111 Date: Mon, 12 Jun 2023 16:11:34 +0800 Subject: [PATCH 2/2] 1 --- business/jxstore/cms/store.go | 20 +++++++++++++------- business/model/user.go | 12 +++++++----- 2 files changed, 20 insertions(+), 12 deletions(-) diff --git a/business/jxstore/cms/store.go b/business/jxstore/cms/store.go index 0521ca795..a35e06dca 100644 --- a/business/jxstore/cms/store.go +++ b/business/jxstore/cms/store.go @@ -1074,15 +1074,21 @@ func UpdateStore(ctx *jxcontext.Context, storeID int, payload map[string]interfa for k, _ := range valid { if earningInfoMap[k] != "" || marketInfoMap[k] != "" { - menus, _ := dao.GetMenuWithUser(dao.GetDB(), "结算权限", 0, 1, ctx.GetUserID()) - if len(menus) == 0 { - if marketInfoMap[k] != "" { - menus2, _ := dao.GetMenuWithUser(dao.GetDB(), "市场信息", 0, 1, ctx.GetUserID()) - if len(menus2) == 0 { + //增加权限校验 + userRole, err := dao.GetUserRole(dao.GetDB(), []string{ctx.GetUserID()}, []int{model.RoleUpdateSettle}) + if err != nil || len(userRole) == 0 { + return 0, errors.New(fmt.Sprintf("当前用户 [%v] 无权限修改此字段!", ctx.GetUserName())) + } else { + menus, _ := dao.GetMenuWithUser(dao.GetDB(), "结算权限", 0, 1, ctx.GetUserID()) + if len(menus) == 0 { + if marketInfoMap[k] != "" { + menus2, _ := dao.GetMenuWithUser(dao.GetDB(), "市场信息", 0, 1, ctx.GetUserID()) + if len(menus2) == 0 { + return 0, errors.New(fmt.Sprintf("当前用户 [%v] 无权限修改此字段!", ctx.GetUserName())) + } + } else { return 0, errors.New(fmt.Sprintf("当前用户 [%v] 无权限修改此字段!", ctx.GetUserName())) } - } else { - return 0, errors.New(fmt.Sprintf("当前用户 [%v] 无权限修改此字段!", ctx.GetUserName())) } } } diff --git a/business/model/user.go b/business/model/user.go index e915c6d8a..2019314d6 100644 --- a/business/model/user.go +++ b/business/model/user.go @@ -12,11 +12,13 @@ const ( ) const ( - UserTypeConsumer = 1 - UserTypeStoreBoss = 2 - UserTypeOperator = 4 - UserTypeBoss = 8 - UserTypeRole = 16 + UserTypeConsumer = 1 + UserTypeStoreBoss = 2 + UserTypeOperator = 4 + UserTypeBoss = 8 + UserTypeRole = 16 + RoleUpdateSettle = 19 //修改市场权限 + UserTypeNonConsumer = ^1 MemberTypeDiscountCard = 1 //会员折扣卡