1
This commit is contained in:
@@ -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))
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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 {
|
||||
|
||||
@@ -207,7 +207,7 @@ func Init() {
|
||||
delivery.UpdateFakeWayBillToTiktok()
|
||||
}, 10*time.Second, 5*time.Second)
|
||||
|
||||
// 抖音自动刷单
|
||||
// 抖音自动刷单(自动发单拣货,设置骑手)
|
||||
ScheduleTimerFuncByInterval(func() {
|
||||
if beego.BConfig.RunMode != "jxgy" {
|
||||
auto_delivery.AutoSettingFakeDelivery()
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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" //美团跑腿(众包)
|
||||
|
||||
@@ -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()
|
||||
|
||||
@@ -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
|
||||
}
|
||||
|
||||
// 获取骑手信息
|
||||
|
||||
@@ -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: // 已取货
|
||||
|
||||
@@ -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 {
|
||||
|
||||
@@ -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:
|
||||
|
||||
@@ -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"`
|
||||
}
|
||||
|
||||
|
||||
@@ -17,6 +17,8 @@ const (
|
||||
StoreAcctTypeExpendCreateWaybillTip = 21 //手动加小费扣除
|
||||
StoreAcctTypeExpendCreateWaybill2ndMore = 22 //第二次发运单,并且比上次需要更多钱扣的差价
|
||||
StoreAcctTypeExpendCreateWaybillDeductFee = 23 //运单取消的违约金
|
||||
StoreAcctTypeExpendTextMessageNotify = 24 //短信通知扣费
|
||||
StoreAcctTypeExpendVoiceMessageNotify = 26 //电话通知扣费
|
||||
StoreAcctTypeRealFeeExpend = 25 //真实运费 > 临时运费, 真实运费的值 - 临时运费的值
|
||||
)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user