|
- package svc
-
- import (
- "applet/app/db"
- "applet/app/db/model"
- "applet/app/utils"
- "applet/app/utils/cache"
- "fmt"
- "time"
- )
-
- func PlayletOrderSettle() {
- 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": time.Unix(month["start"], 0).Format("2006-01-02 15:04:05"),
- "p": "1",
- "size": "100",
- }
- playletSaleOrderDb := db.PlayletSaleOrderDb{}
- playletSaleOrderDb.Set()
- order := playletSaleOrderDb.GetPlayletVideoOrderList(arg)
- if len(order) == 0 {
- return
- }
- fmt.Println(utils.SerializeStr(order))
-
- for _, v := range order {
- fmt.Println("=================00")
- // 加锁 防止并发提取
- mutexKey := fmt.Sprintf("playlet_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 == "" || v.Uid == "0" {
- fmt.Println("=================3")
-
- continue
- }
- masterDb := db.MasterDb{}
- masterDb.Set()
- master := masterDb.GetMaster(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 utils.StrToFloat64(v.Commission) <= 0 {
- v.SettleTime = int(time.Now().Unix())
- playletSaleOrderDb.PlayletVideoOrderUpdate(v.Id, &v)
- fmt.Println("=================6")
-
- continue
- }
- oldAmount := amount.LastMonthAmount
- amount.LastMonthAmount = utils.Float64ToStr(utils.StrToFloat64(amount.LastMonthAmount) + utils.StrToFloat64(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: v.Commission,
- AfterAmount: amount.LastMonthAmount,
- Platform: "playlet",
- Oid: v.Oid,
- Title: "短剧订单结算",
- FlowType: "playlet_settle",
- ExtendUid: v.ExtendUid,
- }
- masterLastMonthAmountFlowDb := db.MasterLastMonthAmountFlowDb{}
- masterLastMonthAmountFlowDb.Set()
- masterLastMonthAmountFlowDb.MasterLastMonthAmountFlowInsert(&tmp)
- v.SettleTime = int(time.Now().Unix())
- playletSaleOrderDb.PlayletVideoOrderUpdate(v.Id, &v)
- }
- return
- }
|