diff --git a/business/jxstore/misc/misc.go b/business/jxstore/misc/misc.go index 7c85a0fcb..f24f72715 100644 --- a/business/jxstore/misc/misc.go +++ b/business/jxstore/misc/misc.go @@ -205,6 +205,11 @@ func Init() { delivery.UpdateFakeWayBillToTiktok() }, 10*time.Second, 5*time.Second) + // 抖音自动刷单 + ScheduleTimerFuncByInterval(func() { + delivery.AutoSettingFakeDelivery() + }, 10*time.Second, 5*time.Second) + // 定时任务更新负责人信息 ScheduleTimerFunc("RefreshStoreOperator", func() { cms.UpdateStoreOperatorConfig() diff --git a/business/model/dao/dao_order.go b/business/model/dao/dao_order.go index da4f0504e..80901c0f8 100644 --- a/business/model/dao/dao_order.go +++ b/business/model/dao/dao_order.go @@ -1830,3 +1830,33 @@ func GetOrderListByStoreList(db *DaoDB, storeId []int64) (order []*model.GoodsOr return order, nil } + +type CourierInfo struct { + CourierName string `json:"courier_name"` + CourierMobile string `json:"courier_mobile"` +} + +// 获取同区域的骑手信息 +func GetAddressRiderInfo(db *DaoDB, address string, randNumber int64) (*CourierInfo, error) { + sql := ` + SELECT w.courier_name,w.courier_mobile FROM goods_order s + LEFT JOIN waybill w ON s.vendor_order_id = w.vendor_order_id AND w.courier_name <>"" AND w.courier_mobile <>"" + WHERE s.order_created_at >= ? AND s.status = ? AND s.delivery_type = ? AND s.consignee_address LIKE ? + LIMIT ?,? ` + param := []interface{}{time.Now().AddDate(0, -3, 0), model.OrderStatusFinished, model.OrderDeliveryTypePlatform, "%" + fmt.Sprintf("%s", address) + "%", randNumber, 1} + + courier := &CourierInfo{} + if err := GetRow(db, courier, sql, param); err != nil { + return nil, err + } + + if courier.CourierName == "" || courier.CourierMobile == "" { + info, err := GetAddressRiderInfo(db, address, randNumber+1) + if err != nil { + return nil, err + } + return info, err + } + + return courier, nil +} diff --git a/business/model/dao/thing_map.go b/business/model/dao/thing_map.go index e4150734b..24bf0b549 100644 --- a/business/model/dao/thing_map.go +++ b/business/model/dao/thing_map.go @@ -83,7 +83,7 @@ func GetThingToTiktokMapList(db *DaoDB, vendorId int, thingId int64, vendorOrgCo // DeleteThingToTiktokMapList 删除同步关联关系 func DeleteThingToTiktokMapList(vendorId int, vendorThingId string, skuId int) error { - sql := ` DELETE FROM thing_map t1 WHERE t1.vendor_thing_id = ? AND t1.vendor_id = ? AND t1.thing_id = ? ` + sql := ` DELETE FROM thing_map WHERE vendor_thing_id = ? AND vendor_id = ? AND thing_id = ? ` param := []interface{}{vendorThingId, vendorId, skuId} _, err := ExecuteSQL(GetDB(), sql, param...) return err diff --git a/business/partner/delivery/rider.go b/business/partner/delivery/rider.go index d3f1d61bf..be90ae39d 100644 --- a/business/partner/delivery/rider.go +++ b/business/partner/delivery/rider.go @@ -3,7 +3,11 @@ package delivery import ( "crypto/rand" "fmt" + "git.rosy.net.cn/jx-callback/business/jxcallback/scheduler/defsch" + "git.rosy.net.cn/jx-callback/business/jxutils" + "git.rosy.net.cn/jx-callback/business/jxutils/jxcontext" "math/big" + "strings" "time" "git.rosy.net.cn/baseapi/platformapi/mtpsapi" @@ -323,35 +327,43 @@ func UpdateFakeWayBillToTiktok() { } -// -//// AutoSettingFakeDelivery 自动设置骑手, 推送假订单 -//func AutoSettingFakeDelivery() { -// db := dao.GetDB() -// // 查询需要刷单的门店 -// configList, err := dao.QueryConfigs(db, "storeIdList", "AutoDelivery", "") -// if err != nil { -// globals.SugarLogger.Errorf("抖音自动刷单获取刷单门店列表错误:%v", err) -// return -// } -// if len(configList) != model.YES { -// globals.SugarLogger.Errorf("newConfig 刷单门店设置异常") -// return -// } -// -// // 获取刷单门店订单 -// orderList, err := dao.GetOrderListByStoreList(db, utils.StringSlice2Int64(strings.Split(configList[0].Value, ","))) -// if err != nil { -// globals.SugarLogger.Errorf("获取门店刷单记录错误") -// return -// } -// -// for _, v := range orderList { -// jxutils.CallMsgHandler(func() { -// // 获取骑手信息 -// -// // 自动发单 -// err = defsch.FixedScheduler.SelfDeliveringAndUpdateStatus(params.Ctx, params.VendorOrderID, params.VendorID, params.Ctx.GetUserName(), params.CourierName, params.CourierMobile) -// }, jxutils.ComposeUniversalOrderID(v.VendorOrderID, model.VendorIDDD)) -// } -// -//} +// AutoSettingFakeDelivery 自动设置骑手, 推送假订单 +func AutoSettingFakeDelivery() { + db := dao.GetDB() + // 查询需要刷单的门店 + configList, err := dao.QueryConfigs(db, "storeIdList", "AutoDelivery", "") + if err != nil { + globals.SugarLogger.Errorf("抖音自动刷单获取刷单门店列表错误:%v", err) + return + } + if len(configList) != model.YES { + globals.SugarLogger.Errorf("newConfig 刷单门店设置异常") + return + } + + // 获取刷单门店订单 + orderList, err := dao.GetOrderListByStoreList(db, utils.StringSlice2Int64(strings.Split(configList[0].Value, ","))) + if err != nil { + globals.SugarLogger.Errorf("获取门店刷单记录错误") + return + } + + for _, v := range orderList { + jxutils.CallMsgHandler(func() { + // 1.根据订单客户地址获取骑手列表 + randNumber, _ := rand.Int(rand.Reader, big.NewInt(200)) + randTime := randNumber.Int64() + riderInfo, err := dao.GetAddressRiderInfo(db, strings.Split(v.ConsigneeAddress, "市")[0], randTime) + if err != nil { + globals.SugarLogger.Errorf("自动获取骑手信息错误:[%v]", err) + return + } + // 自动发单 + if err := defsch.FixedScheduler.SelfDeliveringAndUpdateStatus(jxcontext.AdminCtx, v.VendorOrderID, v.VendorID, jxcontext.AdminCtx.GetUserName(), riderInfo.CourierName, riderInfo.CourierMobile); err != nil { + globals.SugarLogger.Errorf("自动发货错误:[%v]", err) + return + } + }, jxutils.ComposeUniversalOrderID(v.VendorOrderID, model.VendorIDDD)) + } + +}