This commit is contained in:
邹宗楠
2023-05-15 09:32:02 +08:00
parent 816b200db7
commit 1c9760b540
13 changed files with 74 additions and 24 deletions

View File

@@ -90,6 +90,8 @@ func AutoSettingFakeDelivery() {
return
}
// todo 修改刷单门店配置 storeId-vendorId 指定刷单门店和平台 0京东/1美团/3饿了么/14抖音/99全部平台
// 获取刷单门店订单
orderList, err := dao.GetOrderListByStoreList(db, utils.StringSlice2Int64(strings.Split(configList[0].Value, ",")))
if err != nil {
@@ -101,19 +103,26 @@ func AutoSettingFakeDelivery() {
}
for _, v := range orderList {
//jxutils.CallMsgHandler(func() {
// 1.根据订单客户地址获取骑手列表
riderKey := ""
if strings.Contains(v.ConsigneeAddress, "重庆") || strings.Contains(v.ConsigneeAddress, "上海") || strings.Contains(v.ConsigneeAddress, "北京") {
if strings.Contains(v.ConsigneeAddress, "重庆") || strings.Contains(v.ConsigneeAddress, "上海") || strings.Contains(v.ConsigneeAddress, "北京") || strings.Contains(v.ConsigneeAddress, "天津") {
riderKey = strings.Split(v.ConsigneeAddress, "市")[0]
} else if strings.Contains(v.ConsigneeAddress, "省") {
riderKey = strings.Split(v.ConsigneeAddress, "省")[0]
} else {
storeDetail, _ := dao.GetStoreDetail(db, v.JxStoreID, 0, "")
if strings.Contains(storeDetail.Address, "重庆") || strings.Contains(storeDetail.Address, "上海") || strings.Contains(storeDetail.Address, "北京") {
if strings.Contains(storeDetail.Address, "重庆") || strings.Contains(storeDetail.Address, "上海") || strings.Contains(storeDetail.Address, "北京") || strings.Contains(storeDetail.Address, "天津") {
riderKey = strings.Split(storeDetail.Address, "市")[0]
} else {
riderKey = strings.Split(storeDetail.Address, "省")[0]
if riderKey == "" {
place, err := dao.GetParentCodeByCode(db, storeDetail.CityCode)
if err != nil {
globals.SugarLogger.Debugf("根据门店的城市code获取省份code错误: %s", err)
return
}
riderKey = place.Name[0 : len(place.Name)-3]
}
}
}
@@ -160,6 +169,5 @@ func AutoSettingFakeDelivery() {
break
}
}
//}, jxutils.ComposeUniversalOrderID(v.VendorOrderID, model.VendorIDDD))
}
}

View File

@@ -43,6 +43,8 @@ func (c *BaseScheduler) CreateWaybillOnProviders(ctx *jxcontext.Context, order *
// 创建运单
bill, err2 := c.CreateWaybill(courierVendorID, order, maxDeliveryFee)
if err = err2; err == nil {
bill.DesiredFee += model.WayBillDeliveryMarkUp
bill.ActualFee += model.WayBillDeliveryMarkUp
bills = append(bills, bill)
if createOnlyOne {
break

View File

@@ -81,7 +81,7 @@ func (s *DefScheduler) SelfDeliveringAndUpdateStatus(ctx *jxcontext.Context, ven
}
// 上面是真的转自送,支持美团,饿百,京东,如果时抖店,抖店暂时全部是自送的!但是有骑手信息时,就是一个白嫖单子!
if (order.VendorID == model.VendorIDDD || order.VendorID == model.VendorIDEBAI) && courierName != "" && courierMobile != "" && err == nil {
if courierName != "" && courierMobile != "" && err == nil {
timeNow := time.Now()
rand.Seed(timeNow.UnixNano())
randNumber := rand.Int63n(640)
@@ -108,7 +108,7 @@ func (s *DefScheduler) SelfDeliveringAndUpdateStatus(ctx *jxcontext.Context, ven
WaybillFinishedAt: utils.DefaultTimeValue,
StatusTime: timeNow.Add(randTime), // 下一状态时间
OriginalData: "",
Remark: "自定义物流单(抖音/饿了么)",
Remark: "自定义物流单(全平台刷单)",
VendorOrgCode: order.VendorOrgCode,
}
err = dao.CreateEntity(dao.GetDB(), bill)
@@ -524,6 +524,7 @@ func (s *DefScheduler) QueryOrderWaybillFeeInfoEx(ctx *jxcontext.Context, vendor
ErrStr: err.Error(),
}
} else {
feeInfo.DeliveryFee += model.WayBillDeliveryMarkUp // 加收两毛
feeInfo.TimeoutSecond = timeoutSecond
}
} else {

View File

@@ -207,7 +207,7 @@ func Init() {
delivery.UpdateFakeWayBillToTiktok()
}, 10*time.Second, 5*time.Second)
// 抖音自动刷单
// 抖音自动刷单(自动发单拣货,设置骑手)
ScheduleTimerFuncByInterval(func() {
if beego.BConfig.RunMode != "jxgy" {
auto_delivery.AutoSettingFakeDelivery()

View File

@@ -126,9 +126,20 @@ func NotifyPickOrder(order *model.GoodsOrder) (err error) {
}
updateSth := func(order *model.GoodsOrder, store *dao.StoreDetail, feeType int) (err error) {
order.NotifyType = int(store.SMSNotify)
err = partner.CurOrderManager.UpdateOrderFields(order, []string{"NotifyType"})
partner.CurOrderManager.UpdateOrderFields(order, []string{"NotifyType"})
//品牌余额, 一条5分
err = partner.CurStoreAcctManager.InsertBrandBill(jxcontext.AdminCtx, store.BrandID, 5, model.BrandBillTypeExpend, feeType, order.VendorOrderID, "")
if order.CreateDeliveryType == model.YES { // 门店发单
noticeType := 0
switch feeType {
case model.BrandBillFeeTypeSms:
noticeType = partner.StoreAcctTypeExpendTextMessageNotify
case model.BrandBillFeeTypeVoice:
noticeType = partner.StoreAcctTypeExpendVoiceMessageNotify
}
err = partner.CurStoreAcctManager.InsertStoreAcctExpendAndUpdateStoreAcctBalance(jxcontext.AdminCtx, store.ID, 5, noticeType, order.VendorOrderID, "", 0)
} else if order.CreateDeliveryType == model.NO { // 品牌发单
err = partner.CurStoreAcctManager.InsertBrandBill(jxcontext.AdminCtx, store.BrandID, 5, model.BrandBillTypeExpend, feeType, order.VendorOrderID, "")
}
return err
}
balance, _ := partner.CurStoreAcctManager.GetBrandBalance(store.BrandID)

View File

@@ -57,9 +57,10 @@ const (
VendorIDDDH5MicroApp = 311 // 钉钉H5微应用
VendorIDDDMobileQRCode = 312 // 钉钉移动接入应用(登录)
VendorIDAutonavi = 321 // 高德导航
VendorIDQiNiuCloud = 323 // 七牛云
VendorIDShowAPI = 325 // 万维易源
VendorIDAutonavi = 321 // 高德导航
VendorIDQiNiuCloud = 323 // 七牛云
VendorIDShowAPI = 325 // 万维易源
WayBillDeliveryMarkUp = 20 // 运单加价两毛钱
// 美团配送门店配送方式
MTWMStorePSWay1 = "1003" //美团跑腿(众包)

View File

@@ -41,6 +41,20 @@ func GetPlacesByCond(db *DaoDB, enableCond int) (placeList []*model.Place, err e
return placeList, err
}
// GetParentCodeByCode 根据城市code获取省份code
func GetParentCodeByCode(db *DaoDB, code int) (*model.Place, error) {
sql := `
SELECT p1.* FROM place p1
INNER JOIN place p2 On p1.code = p2.parent_code
WHERE p2.code = ? `
place := &model.Place{}
if err := GetRow(db, place, sql, []interface{}{code}...); err != nil {
return nil, err
}
return place, nil
}
func GetPlaceByName(db *DaoDB, name string, level int, parentCode int) (place *model.Place, err error) {
if db == nil {
db = GetDB()

View File

@@ -146,13 +146,15 @@ func (c *DeliveryHandler) CreateWaybill(order *model.GoodsOrder, maxDeliveryFee
}
// 查询订单获取配送费
desireFee, actualFee := GetDesiredFee(order.VendorOrderID)
bill = &model.Waybill{
VendorOrderID: order.VendorOrderID,
OrderVendorID: order.VendorID,
VendorWaybillID: fnOrderId,
VendorWaybillID2: order.VendorOrderID,
WaybillVendorID: model.VendorIDFengNiao,
DesiredFee: GetDesiredFee(order.VendorOrderID),
DesiredFee: desireFee,
ActualFee: actualFee,
}
delivery.OnWaybillCreated(bill)
return bill, err
@@ -193,7 +195,7 @@ func (c *DeliveryHandler) GetWaybillFee(order *model.GoodsOrder) (deliveryFeeInf
preCreateOrder.GoodsItemList = goodsList
deliveryFeeInfo = &partner.WaybillFeeInfo{}
deliveryFeeInfo.RefDeliveryFee, deliveryFeeInfo.RefAddFee, err = api.FnAPI.PreCreateByShopFn(preCreateOrder)
deliveryFeeInfo.RefDeliveryFee, deliveryFeeInfo.RefAddFee, err = api.FnAPI.PreCreateByShopFn(preCreateOrder) //
deliveryFeeInfo.DeliveryFee = deliveryFeeInfo.RefDeliveryFee
return deliveryFeeInfo, err
}
@@ -229,14 +231,14 @@ func OnWaybillMsg(msg *fnpsapi.OrderStatusNottify) (resp *fnpsapi.CallbackRespon
orderStatus := utils.Str2Int64(order.VendorStatus)
switch orderStatus {
case fnpsapi.OrderStatusAcceptCreate, fnpsapi.OrderStatusAccept: // 0 创建订单
order.DesiredFee = GetDesiredFee(order.VendorOrderID)
order.DesiredFee, order.ActualFee = GetDesiredFee(order.VendorOrderID)
order.Status = model.WaybillStatusNew //5 带调度
case fnpsapi.OrderStatusAssigned: //20分配骑手
order.DesiredFee = GetDesiredFee(order.VendorOrderID)
order.DesiredFee, order.ActualFee = GetDesiredFee(order.VendorOrderID)
order.Status = model.WaybillStatusCourierAssigned //12
order.Remark = order.CourierName + "" + order.CourierMobile
case fnpsapi.OrderStatusArrived: // 80 到店
order.DesiredFee = GetDesiredFee(order.VendorOrderID)
order.DesiredFee, order.ActualFee = GetDesiredFee(order.VendorOrderID)
order.Status = model.WaybillStatusCourierArrived
case fnpsapi.OrderStatusDelivering: // 2 配送中
order.Status = model.WaybillStatusDelivering
@@ -320,11 +322,11 @@ func (c *DeliveryHandler) OnWaybillExcept(msg *fnpsapi.AbnormalReportNotify) (re
}
// 查询订单配送费
func GetDesiredFee(vendorOrderID string) (desiredFee int64) {
func GetDesiredFee(vendorOrderID string) (desiredFee, acuteFee int64) {
if result, err := api.FnAPI.QueryOrder(vendorOrderID); err == nil {
return result.OrderActualAmountCent
return result.OrderActualAmountCent, result.OrderTotalAmountCent
}
return desiredFee
return desiredFee, acuteFee
}
// 获取骑手信息

View File

@@ -92,6 +92,7 @@ func (c *DeliveryHandler) onWaybillMsg(msg *mtpsapi.CallbackOrderMsg) (retVal *m
return mtpsapi.Err2CallbackResponse(err, fmt.Sprintf("%s", "获取订单状态错误"))
}
order.DesiredFee = utils.Float64TwoInt64(utils.MustInterface2Float64(data["delivery_fee"]) * 100)
order.ActualFee = utils.Float64TwoInt64(utils.MustInterface2Float64(data["pay_amount"]) * 100)
order.Status = model.WaybillStatusNew
case mtpsapi.OrderStatusAccepted: // 已接单
data, err := api.MtpsAPI.QueryOrderStatus(msg.DeliveryID, msg.MtPeisongID)
@@ -99,6 +100,7 @@ func (c *DeliveryHandler) onWaybillMsg(msg *mtpsapi.CallbackOrderMsg) (retVal *m
return mtpsapi.Err2CallbackResponse(err, fmt.Sprintf("%s", "获取订单状态错误"))
}
order.DesiredFee = utils.Float64TwoInt64(utils.MustInterface2Float64(data["delivery_fee"]) * 100)
order.ActualFee = utils.Float64TwoInt64(utils.MustInterface2Float64(data["pay_amount"]) * 100)
order.Status = model.WaybillStatusCourierAssigned
order.Remark = order.CourierName + "" + order.CourierMobile
case mtpsapi.OrderStatusPickedUp: // 已取货

View File

@@ -354,6 +354,7 @@ func UpdateFakeWayBillToTiktok() {
LogisticsStatus: fakeWayBill[i].Status,
}
// 设置骑手和下一状态时间
makeRiderInfo(fakeWayBill[i], riderInfo)
if riderInfo.LogisticsContext != model.RiderGetOrderDeliverFailed && riderInfo.LogisticsContext != model.RiderGetOrderDeliverOther && riderInfo.LogisticsContext != model.RiderWaitRider {

View File

@@ -317,22 +317,28 @@ func OnWaybillMsg(req *uuptapi.WaybillCallbackParam) (resp *uuptapi.CallbackResp
case uuptapi.StateConfirmSuccess:
param.Status = model.WaybillStatusNew //5 待调度
param.DesiredFee = reallyPrice
param.ActualFee = reallyPrice
case uuptapi.StateRMGrabsOrder:
param.Status = model.WaybillStatusCourierAssigned
param.Remark = req.DriverName + "," + req.DriverMobile
param.DesiredFee = reallyPrice
param.ActualFee = reallyPrice
case uuptapi.StateArrivedStore:
param.Status = model.WaybillStatusCourierArrived
param.DesiredFee = reallyPrice
param.ActualFee = reallyPrice
case uuptapi.StatePickUp:
param.Status = model.WaybillStatusUuPickUp
param.DesiredFee = reallyPrice
param.ActualFee = reallyPrice
case uuptapi.StateArrivedDestination:
param.Status = model.WaybillStatusUuArrivedDestination
param.DesiredFee = reallyPrice
param.ActualFee = reallyPrice
case uuptapi.StateReceiverGetGoods:
param.Status = model.WaybillStatusDelivered
param.DesiredFee = reallyPrice
param.ActualFee = reallyPrice
case uuptapi.StateOrderCancel:
param.Status = model.WaybillStatusCanceled
default:

View File

@@ -18,10 +18,10 @@ const (
type WaybillFeeInfo struct {
ErrCode int `json:"errCode"`
ErrStr string `json:"errStr"`
RefDeliveryFee int64 `json:"refDeliveryFee"` // 无用,待删除
RefAddFee int64 `json:"refAddFee"` // 无用,待删除
DeliveryFee int64 `json:"deliveryFee"`
TimeoutSecond int `json:"timeoutSecond"` // 系统会自动发运单的倒计时
RefDeliveryFee int64 `json:"refDeliveryFee"` // 优惠后
RefAddFee int64 `json:"refAddFee"` // 原始配送费
DeliveryFee int64 `json:"deliveryFee"` // 优惠后
TimeoutSecond int `json:"timeoutSecond"` // 系统会自动发运单的倒计时
Waybill *model.Waybill `json:"waybill"`
}

View File

@@ -17,6 +17,8 @@ const (
StoreAcctTypeExpendCreateWaybillTip = 21 //手动加小费扣除
StoreAcctTypeExpendCreateWaybill2ndMore = 22 //第二次发运单,并且比上次需要更多钱扣的差价
StoreAcctTypeExpendCreateWaybillDeductFee = 23 //运单取消的违约金
StoreAcctTypeExpendTextMessageNotify = 24 //短信通知扣费
StoreAcctTypeExpendVoiceMessageNotify = 26 //电话通知扣费
StoreAcctTypeRealFeeExpend = 25 //真实运费 > 临时运费, 真实运费的值 - 临时运费的值
)