package svc import ( "applet/app/db" "applet/app/db/model" "applet/app/utils" "applet/app/utils/cache" "fmt" "time" ) func HwOrderSettle() { day := time.Now().Day() if day < 20 { return } month := utils.GetTimeRange("current_month") fmt.Println(month) arg := map[string]string{ "status": "订单成功", "sort": "id desc", "is_to_settle": "1", "is_commission": "1", "to_settle_time": utils.Int64ToStr(month["start"]), "p": "1", "size": "100", } order := db.GetHwOrderList(arg) if len(order) == 0 { return } fmt.Println(utils.SerializeStr(order)) platformMap := map[string]string{ "starbucks": "星巴克", "movie": "电影", "mcdonald": "麦当劳", "nayuki": "奈雪", "luckin": "瑞幸咖啡", "pizza": "必胜客", "pagoda": "百果园", "burger_king": "汉堡王", "heytea": "喜茶", "to_kfc": "肯德基", "wallace": "华莱士", "flowerCake": "鲜花", "delivery": "比价寄", "tourism": "出游", } for _, v := range order { fmt.Println("=================00") // 加锁 防止并发提取 mutexKey := fmt.Sprintf("hw_order_settle3:%d", v.Id) withdrawAvailable, err := cache.Do("SET", mutexKey, 1, "EX", 1800, "NX") if err != nil { fmt.Println("=================0") fmt.Println(err) continue } if withdrawAvailable != "OK" { fmt.Println("=================1") continue } if v.SettleTime > 0 { fmt.Println("=================2") continue } //加到上月结算 if v.Uid == 0 { fmt.Println("=================3") continue } masterDb := db.MasterDb{} masterDb.Set() master := masterDb.GetMaster(utils.IntToStr(v.Uid)) if master == nil { fmt.Println("=================4") continue } masterAmountDb := db.MasterAmountDb{} masterAmountDb.Set() amount := masterAmountDb.GetMasterAmountByExtendUid(utils.IntToStr(master.Id), v.ExtendUid, "playlet") if amount == nil { fmt.Println("=================5") continue } if v.Commission <= 0 { v.SettleTime = int(time.Now().Unix()) db.ZhimengDb.Where("id=?", v.Id).Update(&v) continue } oldAmount := amount.LastMonthAmount amount.LastMonthAmount = utils.Float64ToStr(utils.StrToFloat64(amount.LastMonthAmount) + v.Commission) update := masterAmountDb.MasterAmountUpdate(amount.Id, amount) if update == false { fmt.Println("=================7") continue } var tmp = model.MasterLastMonthAmountFlow{ Uid: utils.IntToStr(master.Id), Time: time.Now(), BeforeAmount: oldAmount, Amount: utils.Float64ToStr(v.Commission), AfterAmount: amount.LastMonthAmount, Platform: v.Type, Oid: v.Oid, Title: platformMap[v.Type] + "结算", FlowType: v.Type + "_settle", ExtendUid: v.ExtendUid, } masterLastMonthAmountFlowDb := db.MasterLastMonthAmountFlowDb{} masterLastMonthAmountFlowDb.Set() masterLastMonthAmountFlowDb.MasterLastMonthAmountFlowInsert(&tmp) v.SettleTime = int(time.Now().Unix()) db.ZhimengDb.Where("id=?", v.Id).Update(&v) } return }