From 8b41cd013971cf9964d336516d18b8fbf46aaf83 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=82=B9=E5=AE=97=E6=A5=A0?= Date: Wed, 1 Mar 2023 17:12:36 +0800 Subject: [PATCH 01/12] 1 --- business/jxcallback/auto_delivery/auto_delivery.go | 2 ++ business/model/dao/dao_order.go | 2 +- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/business/jxcallback/auto_delivery/auto_delivery.go b/business/jxcallback/auto_delivery/auto_delivery.go index 46f094434..4a940e070 100644 --- a/business/jxcallback/auto_delivery/auto_delivery.go +++ b/business/jxcallback/auto_delivery/auto_delivery.go @@ -18,6 +18,7 @@ func AutoSettingFakeDelivery() { db := dao.GetDB() // 查询需要刷单的门店 configList, err := dao.QueryConfigs(db, "storeIdList", "AutoDelivery", "") + globals.SugarLogger.Debugf("configList------------;%s", utils.Format4Output(configList, false)) if err != nil { globals.SugarLogger.Errorf("抖音自动刷单获取刷单门店列表错误:%v", err) return @@ -29,6 +30,7 @@ func AutoSettingFakeDelivery() { // 获取刷单门店订单 orderList, err := dao.GetOrderListByStoreList(db, utils.StringSlice2Int64(strings.Split(configList[0].Value, ","))) + globals.SugarLogger.Debugf("orderList------------;%s", utils.Format4Output(orderList, false)) if err != nil { globals.SugarLogger.Errorf("获取门店刷单记录错误") return diff --git a/business/model/dao/dao_order.go b/business/model/dao/dao_order.go index 80901c0f8..3bd880e18 100644 --- a/business/model/dao/dao_order.go +++ b/business/model/dao/dao_order.go @@ -1821,7 +1821,7 @@ func GetOrderStoreIDs(db *DaoDB, beginAt, endAt time.Time, vendorID int) (storeI // GetOrderListByStoreList 根据门店id获取正在刷单的门店商品 func GetOrderListByStoreList(db *DaoDB, storeId []int64) (order []*model.GoodsOrder, err error) { - sql := `SELECT * FROM goods_order g WHERE g.order_created_at >= ? AND g.order_created_at <= ? g.vendor_store_id IN (` + GenQuestionMarks(len(storeId)) + `)` + `AND g.vendor_id = ? AND g.status < ?` + sql := `SELECT * FROM goods_order g WHERE g.order_created_at >= ? AND g.order_created_at <= ? AND g.jx_store_id IN (` + GenQuestionMarks(len(storeId)) + `)` + `AND g.vendor_id = ? AND g.status < ?` sqlParam := []interface{}{time.Now().AddDate(0, 0, -7), time.Now(), storeId, model.VendorIDDD, model.OrderStatusDelivering} if err := GetRows(db, &order, sql, sqlParam...); err != nil { From 75a9876f1da1b02011b8d22f51a6f91064aa3baa Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=82=B9=E5=AE=97=E6=A5=A0?= Date: Wed, 1 Mar 2023 17:32:41 +0800 Subject: [PATCH 02/12] 1 --- business/model/dao/dao_order.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/business/model/dao/dao_order.go b/business/model/dao/dao_order.go index 3bd880e18..e8efed825 100644 --- a/business/model/dao/dao_order.go +++ b/business/model/dao/dao_order.go @@ -1850,7 +1850,7 @@ func GetAddressRiderInfo(db *DaoDB, address string, randNumber int64) (*CourierI return nil, err } - if courier.CourierName == "" || courier.CourierMobile == "" { + if courier.CourierName == "" || courier.CourierMobile == "" || len(courier.CourierMobile) != 11 { info, err := GetAddressRiderInfo(db, address, randNumber+1) if err != nil { return nil, err From 4c985c4398c279c5464107bf945d4184fadf908a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=82=B9=E5=AE=97=E6=A5=A0?= Date: Thu, 2 Mar 2023 11:56:50 +0800 Subject: [PATCH 03/12] 1 --- business/jxcallback/auto_delivery/auto_delivery.go | 11 +++++++++-- business/jxstore/misc/misc.go | 2 +- 2 files changed, 10 insertions(+), 3 deletions(-) diff --git a/business/jxcallback/auto_delivery/auto_delivery.go b/business/jxcallback/auto_delivery/auto_delivery.go index 4a940e070..5923b9f3e 100644 --- a/business/jxcallback/auto_delivery/auto_delivery.go +++ b/business/jxcallback/auto_delivery/auto_delivery.go @@ -8,6 +8,7 @@ import ( "git.rosy.net.cn/jx-callback/business/jxutils/jxcontext" "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" "git.rosy.net.cn/jx-callback/globals" "math/big" "strings" @@ -18,7 +19,6 @@ func AutoSettingFakeDelivery() { db := dao.GetDB() // 查询需要刷单的门店 configList, err := dao.QueryConfigs(db, "storeIdList", "AutoDelivery", "") - globals.SugarLogger.Debugf("configList------------;%s", utils.Format4Output(configList, false)) if err != nil { globals.SugarLogger.Errorf("抖音自动刷单获取刷单门店列表错误:%v", err) return @@ -30,7 +30,6 @@ func AutoSettingFakeDelivery() { // 获取刷单门店订单 orderList, err := dao.GetOrderListByStoreList(db, utils.StringSlice2Int64(strings.Split(configList[0].Value, ","))) - globals.SugarLogger.Debugf("orderList------------;%s", utils.Format4Output(orderList, false)) if err != nil { globals.SugarLogger.Errorf("获取门店刷单记录错误") return @@ -46,6 +45,14 @@ func AutoSettingFakeDelivery() { globals.SugarLogger.Errorf("自动获取骑手信息错误:[%v]", err) return } + + // 自动拣货 + handler := partner.GetPurchaseOrderHandlerFromVendorID(v.VendorID) + flag := model.IsOrderDeliveryByStore(v) || model.IsOrderDeliveryBySelf(v) + if err := handler.PickupGoods(v, flag, jxcontext.AdminCtx.GetUserName()); 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) diff --git a/business/jxstore/misc/misc.go b/business/jxstore/misc/misc.go index eaaf1cb01..687ff0fac 100644 --- a/business/jxstore/misc/misc.go +++ b/business/jxstore/misc/misc.go @@ -209,7 +209,7 @@ func Init() { // 抖音自动刷单 ScheduleTimerFuncByInterval(func() { auto_delivery.AutoSettingFakeDelivery() - }, 10*time.Second, 5*time.Second) + }, 10*time.Second, 3*time.Minute) // 定时任务更新负责人信息 ScheduleTimerFunc("RefreshStoreOperator", func() { From 1b6a94f5413fe438b59a51e8e0afb053f8595285 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=82=B9=E5=AE=97=E6=A5=A0?= Date: Thu, 2 Mar 2023 15:10:26 +0800 Subject: [PATCH 04/12] 1 --- business/model/dao/dao_order.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/business/model/dao/dao_order.go b/business/model/dao/dao_order.go index e8efed825..13913f3c6 100644 --- a/business/model/dao/dao_order.go +++ b/business/model/dao/dao_order.go @@ -1843,7 +1843,7 @@ func GetAddressRiderInfo(db *DaoDB, address string, randNumber int64) (*CourierI 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} + param := []interface{}{time.Now().AddDate(-1, 0, 0), model.OrderStatusFinished, model.OrderDeliveryTypePlatform, "%" + fmt.Sprintf("%s", address) + "%", randNumber, 1} courier := &CourierInfo{} if err := GetRow(db, courier, sql, param); err != nil { From 23d5cf212ab7565d9670efd5f731dc9f645a3718 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=82=B9=E5=AE=97=E6=A5=A0?= Date: Thu, 2 Mar 2023 15:13:41 +0800 Subject: [PATCH 05/12] 1' --- business/model/dao/dao_order.go | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/business/model/dao/dao_order.go b/business/model/dao/dao_order.go index 13913f3c6..804046047 100644 --- a/business/model/dao/dao_order.go +++ b/business/model/dao/dao_order.go @@ -4,6 +4,7 @@ import ( "fmt" "regexp" "strconv" + "strings" "time" "git.rosy.net.cn/baseapi/utils" @@ -1846,12 +1847,10 @@ func GetAddressRiderInfo(db *DaoDB, address string, randNumber int64) (*CourierI param := []interface{}{time.Now().AddDate(-1, 0, 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 - } + err := GetRow(db, courier, sql, param) - if courier.CourierName == "" || courier.CourierMobile == "" || len(courier.CourierMobile) != 11 { - info, err := GetAddressRiderInfo(db, address, randNumber+1) + if (err != nil && strings.Contains(err.Error(), "no row found")) || courier.CourierName == "" || courier.CourierMobile == "" || len(courier.CourierMobile) != 11 { + info, err := GetAddressRiderInfo(db, address, randNumber-1) if err != nil { return nil, err } From a9416695ba82cfc7838f26e247f7db93f112c486 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=82=B9=E5=AE=97=E6=A5=A0?= Date: Thu, 2 Mar 2023 17:58:07 +0800 Subject: [PATCH 06/12] 1 --- .../jxcallback/auto_delivery/auto_delivery.go | 91 +++++++++++++++++-- .../cms/store_responsible_person_config.go | 2 +- business/model/dao/dao_order.go | 24 ++--- business/model/dao/new_config.go | 4 +- main.go | 8 +- 5 files changed, 98 insertions(+), 31 deletions(-) diff --git a/business/jxcallback/auto_delivery/auto_delivery.go b/business/jxcallback/auto_delivery/auto_delivery.go index 5923b9f3e..730154225 100644 --- a/business/jxcallback/auto_delivery/auto_delivery.go +++ b/business/jxcallback/auto_delivery/auto_delivery.go @@ -2,6 +2,7 @@ package auto_delivery import ( "crypto/rand" + "encoding/json" "git.rosy.net.cn/baseapi/utils" "git.rosy.net.cn/jx-callback/business/jxcallback/scheduler/defsch" "git.rosy.net.cn/jx-callback/business/jxutils" @@ -14,9 +15,62 @@ import ( "strings" ) +var riderListInfo = make(map[string][]map[string]string, 0) + +func Init() { + db := dao.GetDB() + // 骑手列表 + configRiderList, err := dao.QueryConfigs(db, "riderList", "AutoRiderList", "") + if err != nil { + globals.SugarLogger.Errorf("抖音自动刷单获取骑手列表错误:%v", err) + return + } + list := make(map[string][]map[string]string, 0) + if err := json.Unmarshal([]byte(configRiderList[0].Value), &list); err != nil { + globals.SugarLogger.Errorf("抖音自动刷单获取骑手列表错误:%v", err) + return + } + + for _, v := range []string{"四川", "广东", "西安", "重庆"} { + if _, ok := list[v]; ok && len(list[v]) >= 200 { + continue + } + riderList, err := dao.GetAddressRiderInfo(db, v) + if err != nil { + globals.SugarLogger.Errorf("初始化各省份骑手信息错误:[%v]", err) + return + } + addressRiderList := make([]map[string]string, 0) + for i := 0; i < len(riderList); i++ { + if len(riderList[i].CourierMobile) == 11 { + riderMap := make(map[string]string, 1) + riderMap[riderList[i].CourierName] = riderList[i].CourierMobile + addressRiderList = append(addressRiderList, riderMap) + } + if len(addressRiderList) >= 200 { + list[v] = addressRiderList + break + } + } + } + + listStr, err := json.Marshal(list) + if err != nil { + globals.SugarLogger.Errorf("Marshal 骑手信息错误:[%v]", err) + return + } + + if err := dao.UpdateOperatorConfig(string(listStr), "AutoRiderList", "riderList"); err != nil { + globals.SugarLogger.Errorf("UpdateOperatorConfig 骑手配置信息错误:[%v]", err) + return + } + riderListInfo = list +} + // AutoSettingFakeDelivery 抖音自动设置骑手, 推送假订单 func AutoSettingFakeDelivery() { db := dao.GetDB() + // 查询需要刷单的门店 configList, err := dao.QueryConfigs(db, "storeIdList", "AutoDelivery", "") if err != nil { @@ -34,16 +88,34 @@ func AutoSettingFakeDelivery() { globals.SugarLogger.Errorf("获取门店刷单记录错误") return } + if len(orderList) == model.NO { + return + } for _, v := range orderList { jxutils.CallMsgHandler(func() { // 1.根据订单客户地址获取骑手列表 - randNumber, _ := rand.Int(rand.Reader, big.NewInt(200)) + riderKey := strings.Split(v.ConsigneeAddress, "省")[0] + if len(riderListInfo[riderKey]) == model.NO { + // 骑手列表 + configRiderList, err := dao.QueryConfigs(db, "riderList", "AutoRiderList", "") + if err != nil { + globals.SugarLogger.Errorf("抖音自动刷单获取骑手列表错误:%v", err) + return + } + if err := json.Unmarshal([]byte(configRiderList[0].Value), &riderListInfo); err != nil { + globals.SugarLogger.Errorf("抖音自动刷单获取骑手列表错误:%v", err) + return + } + } + + randNumber, _ := rand.Int(rand.Reader, big.NewInt(int64(len(riderListInfo[riderKey])))) randTime := randNumber.Int64() - riderInfo, err := dao.GetAddressRiderInfo(db, strings.Split(v.ConsigneeAddress, "市")[0], randTime) - if err != nil { - globals.SugarLogger.Errorf("自动获取骑手信息错误:[%v]", err) - return + if randTime < 0 { + randTime = 1 + } + if randTime > int64(len(riderListInfo[riderKey])) { + randTime = int64(len(riderListInfo[riderKey])) - 1 } // 自动拣货 @@ -54,11 +126,12 @@ func AutoSettingFakeDelivery() { 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 + for riderName, riderPhone := range riderListInfo[riderKey][randTime] { + if err := defsch.FixedScheduler.SelfDeliveringAndUpdateStatus(jxcontext.AdminCtx, v.VendorOrderID, v.VendorID, jxcontext.AdminCtx.GetUserName(), riderName, riderPhone); err != nil { + globals.SugarLogger.Errorf("自动发货错误:[%v]", err) + return + } } }, jxutils.ComposeUniversalOrderID(v.VendorOrderID, model.VendorIDDD)) } - } diff --git a/business/jxstore/cms/store_responsible_person_config.go b/business/jxstore/cms/store_responsible_person_config.go index be1a79983..5107c1261 100644 --- a/business/jxstore/cms/store_responsible_person_config.go +++ b/business/jxstore/cms/store_responsible_person_config.go @@ -45,7 +45,7 @@ func UpdateStoreOperatorConfig() { if err != nil { return } - if err := dao.UpdateOperatorConfig(string(byteData)); err != nil { + if err := dao.UpdateOperatorConfig(string(byteData), "Sys", "FZR"); err != nil { return } return diff --git a/business/model/dao/dao_order.go b/business/model/dao/dao_order.go index 804046047..26f33e27e 100644 --- a/business/model/dao/dao_order.go +++ b/business/model/dao/dao_order.go @@ -4,7 +4,6 @@ import ( "fmt" "regexp" "strconv" - "strings" "time" "git.rosy.net.cn/baseapi/utils" @@ -1837,24 +1836,17 @@ type CourierInfo struct { CourierMobile string `json:"courier_mobile"` } -// 获取同区域的骑手信息 -func GetAddressRiderInfo(db *DaoDB, address string, randNumber int64) (*CourierInfo, error) { +// GetAddressRiderInfo 获取同区域的骑手信息 +func GetAddressRiderInfo(db *DaoDB, address string) ([]*CourierInfo, error) { sql := ` - SELECT w.courier_name,w.courier_mobile FROM goods_order s + SELECT DISTINCT w.courier_mobile,w.courier_name 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(-1, 0, 0), model.OrderStatusFinished, model.OrderDeliveryTypePlatform, "%" + fmt.Sprintf("%s", address) + "%", randNumber, 1} + WHERE s.order_created_at >= ? AND s.consignee_address LIKE ? ` + param := []interface{}{time.Now().AddDate(-2, 0, 0), "%" + fmt.Sprintf("%s", address) + "%"} - courier := &CourierInfo{} - err := GetRow(db, courier, sql, param) - - if (err != nil && strings.Contains(err.Error(), "no row found")) || courier.CourierName == "" || courier.CourierMobile == "" || len(courier.CourierMobile) != 11 { - info, err := GetAddressRiderInfo(db, address, randNumber-1) - if err != nil { - return nil, err - } - return info, err + var courier []*CourierInfo + if err := GetRows(db, &courier, sql, param); err != nil { + return nil, err } return courier, nil diff --git a/business/model/dao/new_config.go b/business/model/dao/new_config.go index 1d147ac3c..7ae074366 100644 --- a/business/model/dao/new_config.go +++ b/business/model/dao/new_config.go @@ -62,8 +62,8 @@ func GetSysConfigAsInt64(db *DaoDB, key string) (value int64, err error) { } // 修改配置 -func UpdateOperatorConfig(param string) error { +func UpdateOperatorConfig(param string, types, key string) error { sql := `UPDATE new_config c SET c.value = ?,c.updated_at = ? WHERE c.type = ? AND c.key = ?` - _, err := ExecuteSQL(GetDB(), sql, []interface{}{param, time.Now(), "Sys", "FZR"}) + _, err := ExecuteSQL(GetDB(), sql, []interface{}{param, time.Now(), types, key}) return err } diff --git a/main.go b/main.go index 584359015..864ecf1e7 100644 --- a/main.go +++ b/main.go @@ -4,6 +4,7 @@ import ( "flag" "fmt" "git.rosy.net.cn/jx-callback/business/enterprise" + "git.rosy.net.cn/jx-callback/business/jxcallback/auto_delivery" "net/http" _ "net/http/pprof" "os" @@ -46,6 +47,8 @@ import ( _ "git.rosy.net.cn/jx-callback/business/auth2/authprovider/password" _ "git.rosy.net.cn/jx-callback/business/auth2/authprovider/weixin" _ "git.rosy.net.cn/jx-callback/business/enterprise" + _ "git.rosy.net.cn/jx-callback/business/jxcallback/auto_delivery" + _ "git.rosy.net.cn/jx-callback/business/jxstore/act" _ "git.rosy.net.cn/jx-callback/business/model/dao" _ "git.rosy.net.cn/jx-callback/business/partner/purchase/ebai" _ "git.rosy.net.cn/jx-callback/business/partner/purchase/jd" @@ -53,8 +56,6 @@ import ( _ "git.rosy.net.cn/jx-callback/business/partner/purchase/mtwm" _ "git.rosy.net.cn/jx-callback/business/partner/purchase/weimob/wsc" - _ "git.rosy.net.cn/jx-callback/business/jxstore/act" - _ "git.rosy.net.cn/jx-callback/routers" ) @@ -87,7 +88,8 @@ func Init() { jdshop.CurPurchaseHandler.StartRefreshComment() } misc.Init() - enterprise.Init() // 初始化enterprise key + enterprise.Init() // 初始化enterprise key + auto_delivery.Init() // 初始化骑手列表 } // 返回true表示非运行服务 From 6407af613616a5571490fa28ab240e0aaa218180 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=82=B9=E5=AE=97=E6=A5=A0?= Date: Fri, 3 Mar 2023 15:08:30 +0800 Subject: [PATCH 07/12] 1' --- business/jxcallback/auto_delivery/auto_delivery.go | 10 ++++++++-- business/jxstore/misc/misc.go | 2 +- business/model/dao/dao_order.go | 2 +- business/partner/delivery/fn/waybill.go | 6 +----- business/partner/delivery/rider.go | 12 ++++++++++-- business/partner/delivery/uupt/waybill.go | 3 --- 6 files changed, 21 insertions(+), 14 deletions(-) diff --git a/business/jxcallback/auto_delivery/auto_delivery.go b/business/jxcallback/auto_delivery/auto_delivery.go index 730154225..a7cb4c202 100644 --- a/business/jxcallback/auto_delivery/auto_delivery.go +++ b/business/jxcallback/auto_delivery/auto_delivery.go @@ -31,7 +31,7 @@ func Init() { return } - for _, v := range []string{"四川", "广东", "西安", "重庆"} { + for _, v := range []string{"四川", "广东", "陕西", "重庆"} { if _, ok := list[v]; ok && len(list[v]) >= 200 { continue } @@ -95,7 +95,12 @@ func AutoSettingFakeDelivery() { for _, v := range orderList { jxutils.CallMsgHandler(func() { // 1.根据订单客户地址获取骑手列表 - riderKey := strings.Split(v.ConsigneeAddress, "省")[0] + riderKey := "" + if strings.Contains(v.ConsigneeAddress, "重庆") || strings.Contains(v.ConsigneeAddress, "上海") || strings.Contains(v.ConsigneeAddress, "北京") { + riderKey = strings.Split(v.ConsigneeAddress, "市")[0] + } else { + riderKey = strings.Split(v.ConsigneeAddress, "省")[0] + } if len(riderListInfo[riderKey]) == model.NO { // 骑手列表 configRiderList, err := dao.QueryConfigs(db, "riderList", "AutoRiderList", "") @@ -127,6 +132,7 @@ func AutoSettingFakeDelivery() { } //自动发单 for riderName, riderPhone := range riderListInfo[riderKey][randTime] { + globals.SugarLogger.Debugf("SelfDeliveringAndUpdateStatus : %s", v.VendorOrderID) if err := defsch.FixedScheduler.SelfDeliveringAndUpdateStatus(jxcontext.AdminCtx, v.VendorOrderID, v.VendorID, jxcontext.AdminCtx.GetUserName(), riderName, riderPhone); err != nil { globals.SugarLogger.Errorf("自动发货错误:[%v]", err) return diff --git a/business/jxstore/misc/misc.go b/business/jxstore/misc/misc.go index 687ff0fac..0bf729cef 100644 --- a/business/jxstore/misc/misc.go +++ b/business/jxstore/misc/misc.go @@ -180,7 +180,7 @@ func Init() { // 每五分钟轮询一次推送骑手信息坐标给美团 ScheduleTimerFuncByInterval(func() { delivery.GetOrderRiderInfoToPlatform("", 0) - }, 10*time.Second, 5*time.Minute) + }, 10*time.Second, 4*time.Minute) //每天晚上23:00更新抖店 审核状态 ScheduleTimerFunc("UpdateStorePoiStatus", func() { diff --git a/business/model/dao/dao_order.go b/business/model/dao/dao_order.go index 26f33e27e..8960542bd 100644 --- a/business/model/dao/dao_order.go +++ b/business/model/dao/dao_order.go @@ -1822,7 +1822,7 @@ func GetOrderStoreIDs(db *DaoDB, beginAt, endAt time.Time, vendorID int) (storeI // GetOrderListByStoreList 根据门店id获取正在刷单的门店商品 func GetOrderListByStoreList(db *DaoDB, storeId []int64) (order []*model.GoodsOrder, err error) { sql := `SELECT * FROM goods_order g WHERE g.order_created_at >= ? AND g.order_created_at <= ? AND g.jx_store_id IN (` + GenQuestionMarks(len(storeId)) + `)` + `AND g.vendor_id = ? AND g.status < ?` - sqlParam := []interface{}{time.Now().AddDate(0, 0, -7), time.Now(), storeId, model.VendorIDDD, model.OrderStatusDelivering} + sqlParam := []interface{}{time.Now().AddDate(0, 0, -5), time.Now().AddDate(0, 0, 1), storeId, model.VendorIDDD, model.OrderStatusDelivering} if err := GetRows(db, &order, sql, sqlParam...); err != nil { return nil, err diff --git a/business/partner/delivery/fn/waybill.go b/business/partner/delivery/fn/waybill.go index 61aa75359..bed1375d1 100644 --- a/business/partner/delivery/fn/waybill.go +++ b/business/partner/delivery/fn/waybill.go @@ -4,7 +4,6 @@ import ( "fmt" "git.rosy.net.cn/baseapi/platformapi/mtpsapi" "git.rosy.net.cn/baseapi/utils" - "strconv" "strings" "time" @@ -226,10 +225,7 @@ func OnWaybillMsg(msg *fnpsapi.OrderStatusNottify) (resp *fnpsapi.CallbackRespon dao.GetRow(dao.GetDB(), &good, sql, sqlParams) order.OrderVendorID = good.VendorID - orderStatus, err := strconv.Atoi(order.VendorStatus) - if err != nil { - return fnpsapi.Err2CallbackResponse(err, "") - } + orderStatus := utils.Str2Int64(order.VendorStatus) switch orderStatus { case fnpsapi.OrderStatusAcceptCreate, fnpsapi.OrderStatusAccept: // 0 创建订单 order.DesiredFee = GetDesiredFee(order.VendorOrderID) diff --git a/business/partner/delivery/rider.go b/business/partner/delivery/rider.go index c5f276195..5550a8559 100644 --- a/business/partner/delivery/rider.go +++ b/business/partner/delivery/rider.go @@ -128,7 +128,7 @@ func GetOrderRiderInfoToPlatform(orderId string, wayBillStatus int) { } // 目前只推送美团骑手信息 switch v.VendorID { - case model.VendorIDMTWM: // 美团发单 + case model.VendorIDMTWM: // 美团订单 paramsMap := utils.Struct2Map(riderInfo, "", true) if handler := partner.GetPurchaseOrderHandlerFromVendorID(v.VendorID); handler != nil { if err := handler.GetOrderRider(v.VendorOrgCode, v.VendorStoreID, paramsMap); err != nil { @@ -136,16 +136,24 @@ func GetOrderRiderInfoToPlatform(orderId string, wayBillStatus int) { } } case model.VendorIDELM: // 饿了么 + continue case model.VendorIDEBAI: // 饿百发单 + continue case model.VendorIDJD: // 京东发单 + continue case model.VendorIDGD: // 美团发单 + continue case model.VendorIDYB: // 银豹发单 + continue case model.VendorIDJDShop: // 京东商城 + continue case model.VendorIDWSC: // 微盟微商城 + continue case model.VendorIDDD: // 抖店小时达 + continue default: globals.SugarLogger.Errorf("Order source error, non system order") - return + continue } } return diff --git a/business/partner/delivery/uupt/waybill.go b/business/partner/delivery/uupt/waybill.go index a48420196..fd84f9412 100644 --- a/business/partner/delivery/uupt/waybill.go +++ b/business/partner/delivery/uupt/waybill.go @@ -291,11 +291,9 @@ func OnWaybillMsg(req *uuptapi.WaybillCallbackParam) (resp *uuptapi.CallbackResp sql := `SELECT * FROM goods_order WHERE vendor_order_id = ? ORDER BY order_created_at DESC LIMIT 1 OFFSET 0` sqlParams := []interface{}{req.OriginID} dao.GetRow(dao.GetDB(), &good, sql, sqlParams) - globals.SugarLogger.Debugf("uupt OnWaybillMsg good=====%s ", utils.Format4Output(good, false)) param.OrderVendorID = good.VendorID //查询运单价格 if uuPrice, err := api.UuAPI.GetOrderDetail(req.OrderCode); err != nil { - globals.SugarLogger.Debugf("uuGetPrice err====%v", err) reallyPrice = 0 } else { reallyPrice = int64((utils.Str2Float64(uuPrice.OrderPrice) - utils.Str2Float64(uuPrice.PriceOff)) * 100) @@ -325,7 +323,6 @@ func OnWaybillMsg(req *uuptapi.WaybillCallbackParam) (resp *uuptapi.CallbackResp default: globals.SugarLogger.Warnf("onWaybillMsg unknown State:%v", req.State) } - globals.SugarLogger.Debugf("UUPT onWaybillMsg param=====%s", utils.Format4Output(param, false)) if err := partner.CurOrderManager.OnWaybillStatusChanged(param); err != nil { return uuptapi.Err2CallbackResponse(err) } From 7593f1ac9cad54a895e0910619189d0cf2242d33 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=82=B9=E5=AE=97=E6=A5=A0?= Date: Fri, 3 Mar 2023 15:13:09 +0800 Subject: [PATCH 08/12] 1 --- business/jxcallback/auto_delivery/auto_delivery.go | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/business/jxcallback/auto_delivery/auto_delivery.go b/business/jxcallback/auto_delivery/auto_delivery.go index a7cb4c202..d0052f513 100644 --- a/business/jxcallback/auto_delivery/auto_delivery.go +++ b/business/jxcallback/auto_delivery/auto_delivery.go @@ -26,9 +26,11 @@ func Init() { return } list := make(map[string][]map[string]string, 0) - if err := json.Unmarshal([]byte(configRiderList[0].Value), &list); err != nil { - globals.SugarLogger.Errorf("抖音自动刷单获取骑手列表错误:%v", err) - return + if len(configRiderList[0].Value) > 0 { + if err := json.Unmarshal([]byte(configRiderList[0].Value), &list); err != nil { + globals.SugarLogger.Errorf("抖音自动刷单获取骑手列表错误:%v", err) + return + } } for _, v := range []string{"四川", "广东", "陕西", "重庆"} { From a560ffcb3bfc256e2972c4c5c8592d36a6bfe4e7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=82=B9=E5=AE=97=E6=A5=A0?= Date: Fri, 3 Mar 2023 20:04:59 +0800 Subject: [PATCH 09/12] 1 --- business/jxcallback/auto_delivery/auto_delivery.go | 5 ++++- business/jxcallback/scheduler/basesch/basesch_ext.go | 3 +++ 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/business/jxcallback/auto_delivery/auto_delivery.go b/business/jxcallback/auto_delivery/auto_delivery.go index d0052f513..1bd99f5c9 100644 --- a/business/jxcallback/auto_delivery/auto_delivery.go +++ b/business/jxcallback/auto_delivery/auto_delivery.go @@ -121,7 +121,7 @@ func AutoSettingFakeDelivery() { if randTime < 0 { randTime = 1 } - if randTime > int64(len(riderListInfo[riderKey])) { + if randTime >= int64(len(riderListInfo[riderKey])) { randTime = int64(len(riderListInfo[riderKey])) - 1 } @@ -133,6 +133,9 @@ func AutoSettingFakeDelivery() { return } //自动发单 + if len(riderListInfo[riderKey]) == 0 { + globals.SugarLogger.Errorf("riderListInfo[riderKey][randTime] :%s,%s,%d", riderListInfo[riderKey][randTime], riderKey, randTime) + } for riderName, riderPhone := range riderListInfo[riderKey][randTime] { globals.SugarLogger.Debugf("SelfDeliveringAndUpdateStatus : %s", v.VendorOrderID) if err := defsch.FixedScheduler.SelfDeliveringAndUpdateStatus(jxcontext.AdminCtx, v.VendorOrderID, v.VendorID, jxcontext.AdminCtx.GetUserName(), riderName, riderPhone); err != nil { diff --git a/business/jxcallback/scheduler/basesch/basesch_ext.go b/business/jxcallback/scheduler/basesch/basesch_ext.go index 68f8391f8..73f2c976c 100644 --- a/business/jxcallback/scheduler/basesch/basesch_ext.go +++ b/business/jxcallback/scheduler/basesch/basesch_ext.go @@ -339,6 +339,9 @@ func (c *BaseScheduler) CheckStoreBalanceWithTip(ctx *jxcontext.Context, order * if tipFee > int64(storeAcct.AccountBalance) { return model.ErrCodeAccountBalanceNotEnough, fmt.Errorf("门店账户余额不足,不能加小费!") } + if tipFee >= 1000 { + return model.ErrCodeAccountBalanceNotEnough, fmt.Errorf("小费单子加价金额大于十元") + } } return errCode, err } From 907b1c6d31b33609dccf77bf768facc6bcdaed37 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=82=B9=E5=AE=97=E6=A5=A0?= Date: Mon, 6 Mar 2023 09:31:53 +0800 Subject: [PATCH 10/12] 1 --- business/jxcallback/scheduler/basesch/basesch_ext.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/business/jxcallback/scheduler/basesch/basesch_ext.go b/business/jxcallback/scheduler/basesch/basesch_ext.go index 73f2c976c..5cb87a980 100644 --- a/business/jxcallback/scheduler/basesch/basesch_ext.go +++ b/business/jxcallback/scheduler/basesch/basesch_ext.go @@ -340,7 +340,7 @@ func (c *BaseScheduler) CheckStoreBalanceWithTip(ctx *jxcontext.Context, order * return model.ErrCodeAccountBalanceNotEnough, fmt.Errorf("门店账户余额不足,不能加小费!") } if tipFee >= 1000 { - return model.ErrCodeAccountBalanceNotEnough, fmt.Errorf("小费单子加价金额大于十元") + return model.ErrCodeAccountBalanceNotEnough, fmt.Errorf("小费单次加价金额大于十元") } } return errCode, err From d566a7118e5e6384223d26dd830b0560fa36e926 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=82=B9=E5=AE=97=E6=A5=A0?= Date: Mon, 6 Mar 2023 09:49:29 +0800 Subject: [PATCH 11/12] 1 --- business/jxstore/misc/misc.go | 28 +--------------------------- 1 file changed, 1 insertion(+), 27 deletions(-) diff --git a/business/jxstore/misc/misc.go b/business/jxstore/misc/misc.go index 0bf729cef..9f13a3008 100644 --- a/business/jxstore/misc/misc.go +++ b/business/jxstore/misc/misc.go @@ -597,33 +597,7 @@ func syncStoreSkuTiktok() { if beego.BConfig.RunMode != "jxgy" { errList.AddErr(cms.DeleteSkuNameExPrefixOverdue(db)) errList.AddErr(cms.SetMultiStoreSkuSyncModifyStatus(db, partner.GetMultiStoreVendorIDs())) - var storeList2GD = []int{ - 102533, - 668619, - 100336, - 102014, - 103089, - 667212, - 667510, - 100328, - 100524, - 102046, - 103190, - 667149, - 100334, - 101995, - 102563, - 102039, - 100329, - 102465, - 102417, - 100517, - 102377, - 666761, - 102592, - 102057, - } - _, err = cms.CurVendorSync.SyncStoresSkus2(jxcontext.AdminCtx, nil, 0, db, []int{model.VendorIDDD}, storeList2GD, false, nil, nil, syncFlag, true, true) + _, err = cms.CurVendorSync.SyncStoresSkus2(jxcontext.AdminCtx, nil, 0, db, []int{model.VendorIDDD}, nil, false, nil, nil, syncFlag, true, true) errList.AddErr(err) } case 1: From a18ffd275a566a6ddf3c334017bfec1e01668ddc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=82=B9=E5=AE=97=E6=A5=A0?= Date: Mon, 6 Mar 2023 11:54:35 +0800 Subject: [PATCH 12/12] 1 --- .../jxcallback/auto_delivery/auto_delivery.go | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) diff --git a/business/jxcallback/auto_delivery/auto_delivery.go b/business/jxcallback/auto_delivery/auto_delivery.go index 1bd99f5c9..f8287b22a 100644 --- a/business/jxcallback/auto_delivery/auto_delivery.go +++ b/business/jxcallback/auto_delivery/auto_delivery.go @@ -20,7 +20,7 @@ var riderListInfo = make(map[string][]map[string]string, 0) func Init() { db := dao.GetDB() // 骑手列表 - configRiderList, err := dao.QueryConfigs(db, "riderList", "AutoRiderList", "") + configRiderList, err := dao.QueryConfigs(db, "riderList", "Sys", "") if err != nil { globals.SugarLogger.Errorf("抖音自动刷单获取骑手列表错误:%v", err) return @@ -33,7 +33,14 @@ func Init() { } } - for _, v := range []string{"四川", "广东", "陕西", "重庆"} { + // 获取刷单地址 + addressList, err := dao.QueryConfigs(db, "refundAddress", "Sys", "") + if err != nil { + globals.SugarLogger.Errorf("抖音自动刷单获取刷单地址列表错误:%v", err) + return + } + + for _, v := range strings.Split(addressList[0].Value, ",") { if _, ok := list[v]; ok && len(list[v]) >= 200 { continue } @@ -62,7 +69,7 @@ func Init() { return } - if err := dao.UpdateOperatorConfig(string(listStr), "AutoRiderList", "riderList"); err != nil { + if err := dao.UpdateOperatorConfig(string(listStr), "Sys", "riderList"); err != nil { globals.SugarLogger.Errorf("UpdateOperatorConfig 骑手配置信息错误:[%v]", err) return } @@ -74,7 +81,7 @@ func AutoSettingFakeDelivery() { db := dao.GetDB() // 查询需要刷单的门店 - configList, err := dao.QueryConfigs(db, "storeIdList", "AutoDelivery", "") + configList, err := dao.QueryConfigs(db, "storeIdList", "Sys", "") if err != nil { globals.SugarLogger.Errorf("抖音自动刷单获取刷单门店列表错误:%v", err) return @@ -105,7 +112,7 @@ func AutoSettingFakeDelivery() { } if len(riderListInfo[riderKey]) == model.NO { // 骑手列表 - configRiderList, err := dao.QueryConfigs(db, "riderList", "AutoRiderList", "") + configRiderList, err := dao.QueryConfigs(db, "riderList", "Sys", "") if err != nil { globals.SugarLogger.Errorf("抖音自动刷单获取骑手列表错误:%v", err) return