package svc import ( "applet/app/db" "applet/app/db/model" offical "applet/app/db/official" "applet/app/utils" "code.fnuoos.com/go_rely_warehouse/zyos_go_third_party_api.git/hw" "encoding/json" "fmt" "strings" "time" ) func HwLoop(method string) { all := offical.MasterListCfgGetKeyAll("hw_share_code") if all == nil { return } for _, v := range *all { if v.V == "" { continue } data := offical.MasterListCfgGetOneData(v.Uid, "hw_own_open") if data != "1" && utils.StrToInt(v.Uid) > 0 { continue } p := 1 for true { count := GetHwOrder(p, method, v.Uid) if count < 50 { break } p++ } } } func GetHwOrder(p int, method, uid string) int { hwShareCode := offical.MasterListCfgGetOneData(uid, "hw_share_code") hwSecret := offical.MasterListCfgGetOneData(uid, "hw_secret") router := "" switch method { case "starbucks": router = "https://ot.jfshou.cn/sbkplus/queryStarbucksOrder" break case "movie": router = "https://ot.jfshou.cn/ticket/query/order/list" break case "mcdonald": router = "https://ot.jfshou.cn/api/queryMcOrder" break case "nayuki": router = "https://ot.jfshou.cn/api/nayuki/order/queryOrdersByUser" break case "luckin": router = "https://ot.jfshou.cn/privilege-api/luckin/external/queryOrder" break case "pizza": router = "https://ot.jfshou.cn/privilege-api/pizzaHut/external/queryOrder" break case "pagoda": router = "https://ot.jfshou.cn/privilege-api/pagoda/external/queryOrder" break case "burger_king": router = "https://ot.jfshou.cn/privilege-api/burgerKing/external/queryOrder" break case "heytea": router = "https://ot.jfshou.cn/privilege-api/heytea/external/queryOrder" break case "to_kfc": router = "https://ot.jfshou.cn/api/queryOrder" break case "wallace": router = "https://ot.jfshou.cn/privilege-api/wallace/external/queryOrder" break case "flowerCake": router = "https://ot.jfshou.cn/privilege-api/flowercake/external/queryOrder" break case "delivery": router = "https://ot.jfshou.cn/privilege-api/expressDelivery/external/queryOrder" break case "tourism": router = "https://ot.jfshou.cn/privilege-api/tourism/external/queryOrder" break } endTime := time.Now().Unix() startTime := endTime - 86400 params := map[string]string{ "start_time": time.Unix(startTime, 0).Format("2006-01-02 15:04:05"), "end_time": time.Unix(endTime, 0).Format("2006-01-02 15:04:05"), "time_type": "1", "page_number": utils.IntToStr(p), "page_size": "50", } params["share_code"] = hwShareCode params["timestamp"] = utils.Int64ToStr(time.Now().UnixNano() / 1e6) order, takeList := hw.HwSendOrder(router, params, hwSecret) count := 0 if order != "" && order != "[]" { var list = make([]map[string]interface{}, 0) json.Unmarshal([]byte(order), &list) count = len(list) for _, v := range list { AddOrder(method, v) } } if takeList != "" && takeList != "[]" { var list = make([]map[string]interface{}, 0) json.Unmarshal([]byte(takeList), &list) for _, v := range list { AddOrder(method, v) } } return count } func AddOrder(method string, order map[string]interface{}) { statusArr := map[string]string{"FINISHED": "订单成功", "GENERATE_SUCCESS": "订单成功", "WAIT_GENERATE": "订单付款", "WAIT_PAY": "创建订单", "CLOSED": "订单失效", "CANCELED": "订单失效", "FAIL": "订单失效", "CLOSE": "订单失效", "RETURNED": "订单失效", "UNPAID": "创建订单", "PAYED": "订单付款", "DEALING": "订单付款", "SENDING": "订单付款", "ORDER_RECEIVED": "订单付款", "RECEIVED": "订单成功", "RECEIVED_ORDER": "订单付款", "WAITING_RECEIVED": "订单付款", "WAIT_OUT_MEAL": "订单付款", "MAKING": "订单付款", "ARRIVED": "订单成功", "COMPLETE": "订单成功", "REFUNDED": "订单退款", "OUT_MEAL": "订单成功"} userId := order["extra"] if strings.Contains(utils.AnyToString(userId), "m") == false { return } isShare := 0 if strings.Contains(utils.AnyToString(userId), "share") { isShare = 1 userId = strings.ReplaceAll(utils.AnyToString(userId), "share", "") } split := strings.Split(utils.AnyToString(userId), "s") mid := strings.ReplaceAll(split[0], "m", "") splitSecond := strings.Split(split[1], "p") puid := splitSecond[1] uid := splitSecond[0] if utils.AnyToFloat64(order["total_rebate"]) == 0 { order["total_rebate"] = order["rebate"] } if (order["product_detail"] == nil || order["product_detail"] == "" || order["product_detail"] == "") && order["product_name"] != nil { order["product_detail"] = order["product_name"] } if (order["product_detail"] == nil || order["product_detail"] == "" || order["product_detail"] == "") && order["cinema_name"] != nil { order["product_detail"] = utils.AnyToString(order["cinema_name"]) + "-" + utils.AnyToString(order["movie_name"]) } if (order["product_detail"] == nil || order["product_detail"] == "" || order["product_detail"] == "-" || order["product_detail"] == "") && order["delivery_brand_name"] != "" { order["product_detail"] = utils.AnyToString(order["delivery_brand_name"]) + "-" + utils.AnyToString(order["delivery_goods_name"]) } var ord = &model.HwOrder{ Oid: utils.AnyToString(order["order_no"]), Info: utils.AnyToString(order["product_detail"]), Commission: utils.AnyToFloat64(order["total_rebate"]), Type: method, TakePhoneNumber: utils.AnyToString(order["take_phone_number"]), RestaurantAddress: utils.AnyToString(order["restaurant_address"]), Uid: utils.StrToInt(mid), Payment: utils.AnyToFloat64(order["settle_price"]), Status: statusArr[utils.AnyToString(order["order_status"])], CreateTime: int(utils.TimeStdParseUnix(utils.AnyToString(order["order_time"]))), Data: utils.SerializeStr(order), UpdateTime: int(utils.TimeStdParseUnix(utils.AnyToString(order["modify_time"]))), Zuid: uid, Extra: utils.AnyToString(order["extra"]), Code: utils.AnyToString(order["code"]), UserId: utils.AnyToString(order["user_id"]), IsShare: isShare, OutMealTime: int(utils.TimeStdParseUnix(utils.AnyToString(order["out_meal_time"]))), ExtendUid: puid, } if order["modify_time"] == "" || order["modify_time"] == nil { ord.UpdateTime = int(time.Now().Unix()) } if order["refund_time"] != "" && order["refund_time"] != nil { ord.RefundTime = int(utils.TimeStdParseUnix(utils.AnyToString(order["refund_time"]))) } one := db.GetHwOrderByOne(ord.Oid, utils.IntToStr(ord.Uid), ord.Type) if one == nil { insertOne, err := db.ZhimengDb.InsertOne(ord) fmt.Println(insertOne) fmt.Println(err) } else { ord.SettleTime = one.SettleTime db.ZhimengDb.Where("id=?", one.Id).AllCols().Update(ord) } return }