@@ -83,6 +83,9 @@ func doTask(fnName string) func() { | |||||
// 增加自动任务队列 | // 增加自动任务队列 | ||||
func initTasks() { | func initTasks() { | ||||
jobs[taskMd.ZhimengCronHandankuTongcheng] = taskHandankuTongcheng // | |||||
jobs[taskMd.ZhimengCronHandankuXianyu] = taskHandankuXianyu // | |||||
jobs[taskMd.ZhimengCronTikTokChanxuan] = taskTikTokCsjpChanxuan // | jobs[taskMd.ZhimengCronTikTokChanxuan] = taskTikTokCsjpChanxuan // | ||||
jobs[taskMd.ZhimengCronAli1688] = taskAli1688 // | jobs[taskMd.ZhimengCronAli1688] = taskAli1688 // | ||||
jobs[taskMd.ZhimengCronAli1688ConfirmTime] = taskAli1688ConfirmTime // | jobs[taskMd.ZhimengCronAli1688ConfirmTime] = taskAli1688ConfirmTime // | ||||
@@ -4,6 +4,8 @@ const ( | |||||
ZhimengCronTikTokTaskRelate = "zhimeng_cron_tik_tok_relate" | ZhimengCronTikTokTaskRelate = "zhimeng_cron_tik_tok_relate" | ||||
ZhimengCronTikTokCsjp = "zhimeng_cron_tik_tok_csjp" | ZhimengCronTikTokCsjp = "zhimeng_cron_tik_tok_csjp" | ||||
ZhimengCronTikTokChanxuan = "zhimeng_cron_tik_tok_chanxuan" | ZhimengCronTikTokChanxuan = "zhimeng_cron_tik_tok_chanxuan" | ||||
ZhimengCronHandankuTongcheng = "zhimeng_cron_haodanku_tongcheng" | |||||
ZhimengCronHandankuXianyu = "zhimeng_cron_haodanku_xianyu" | |||||
ZhimengCronAli1688 = "zhimeng_cron_ali1688" | ZhimengCronAli1688 = "zhimeng_cron_ali1688" | ||||
ZhimengCronAli1688ConfirmTime = "zhimeng_cron_ali1688_ConfirmTime" | ZhimengCronAli1688ConfirmTime = "zhimeng_cron_ali1688_ConfirmTime" | ||||
ZhimengCronAli1688SettleTime = "zhimeng_cron_ali1688_SettleTime" | ZhimengCronAli1688SettleTime = "zhimeng_cron_ali1688_SettleTime" | ||||
@@ -0,0 +1,213 @@ | |||||
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/haodanku" | |||||
"fmt" | |||||
"strings" | |||||
"time" | |||||
) | |||||
func HandankuTongcheng() { | |||||
pvdTimeKey := "haodanku_tongcheng_time" | |||||
// 获得最后时间 | |||||
latest := offical.SysCfgByKey(pvdTimeKey) | |||||
if latest == nil { | |||||
offical.DbsSysCfgInserts(pvdTimeKey, time.Now().String()) | |||||
latest = offical.SysCfgByKey(pvdTimeKey) | |||||
} | |||||
// 所有时间都是在操作秒数 | |||||
now := time.Now().Unix() | |||||
timeStr := latest.V | |||||
fmt.Println(timeStr) | |||||
past := utils.TimeParseStd(timeStr).Unix() | |||||
// 如果上次记录超过30天或者 过去时间大于当前时间戳, 把时间设置为此前20分钟 | |||||
if past > now { | |||||
past = now | |||||
} | |||||
var ( | |||||
beginTime int64 = 0 | |||||
endTime int64 = 0 | |||||
pageNo int = 1 | |||||
pageSize int = 50 | |||||
) | |||||
//怕时间不是走最新的 | |||||
leave := now - past | |||||
if leave > 500 { | |||||
leave = 0 | |||||
} | |||||
past = past + leave | |||||
beginTime = past - 20*60 | |||||
endTime = past | |||||
if endTime > now { | |||||
endTime = now | |||||
} | |||||
for { | |||||
var err error | |||||
count := OrdersHaodankuTongchengGet(pageNo, pageSize, beginTime, endTime) | |||||
if err != nil || count == 0 { | |||||
goto ChkArg | |||||
} | |||||
if count > 0 { | |||||
count = pageSize | |||||
} | |||||
// 判断是否分页已经全部取完了 | |||||
if count == pageSize { | |||||
pageNo++ | |||||
fmt.Println("========蝉选下一页========" + utils.IntToStr(pageNo)) | |||||
continue | |||||
} | |||||
ChkArg: | |||||
// 查询完后重置时间, 最后查询时间 | |||||
if endTime < now { | |||||
pageNo = 1 | |||||
offical.DbsSysCfgUpdate(pvdTimeKey, utils.TimeToStr(endTime)) | |||||
beginTime = endTime | |||||
endTime = endTime + 20*60 | |||||
if endTime > now { | |||||
endTime = now | |||||
} | |||||
continue | |||||
} | |||||
break | |||||
} | |||||
offical.DbsSysCfgUpdate(pvdTimeKey, time.Unix(now, 0).Format("2006-01-02 15:04:05")) | |||||
} | |||||
var haodankuStationState = map[string]string{ | |||||
"1": "订单付款", | |||||
"3": "订单退款", | |||||
"2": "订单成功", | |||||
} | |||||
func OrdersHaodankuTongchengGet(page, pageSize int, sTime, eTime int64) int { | |||||
tikTokArgs := map[string]string{ | |||||
"date_type": "4", | |||||
"back": utils.IntToStr(pageSize), | |||||
"min_id": utils.IntToStr(page), | |||||
"start_date": utils.Int64ToStr(time.Unix(sTime, 0).Unix()), | |||||
"end_date": utils.Int64ToStr(time.Unix(eTime, 0).Unix()), | |||||
} | |||||
order := haodanku.HaodankuTontchengOrder(tikTokArgs) | |||||
for _, v := range order { | |||||
if v.ChannelCode == "" { | |||||
continue | |||||
} | |||||
isShare := 0 | |||||
if strings.Contains(v.ChannelCode, "s") { | |||||
isShare = 1 | |||||
} | |||||
v.ChannelCode = strings.ReplaceAll(v.ChannelCode, "o", "") | |||||
v.ChannelCode = strings.ReplaceAll(v.ChannelCode, "s", "") | |||||
ex := strings.Split(v.ChannelCode, "u") | |||||
if len(ex) != 2 { | |||||
continue | |||||
} | |||||
mid := "" | |||||
uid := "" | |||||
one := db.GetLifeOrderByOne1(utils.AnyToString(v.TradeId), "tongcheng") | |||||
if one != nil { | |||||
isShare = one.IsShare | |||||
mid = utils.IntToStr(one.Uid) | |||||
uid = utils.IntToStr(one.StationUid) | |||||
} else { | |||||
mid = ex[0] | |||||
uid = ex[1] | |||||
} | |||||
if mid == "" || uid == "" { | |||||
continue | |||||
} | |||||
var ord = &model.LifeOrder{ | |||||
Oid: utils.StrToInt64(utils.OrderUUID(utils.StrToInt(uid))), | |||||
Uid: utils.StrToInt(mid), | |||||
StationUid: utils.StrToInt(uid), | |||||
PvdOid: utils.AnyToString(v.TradeId), | |||||
PvdParentOid: v.TradeParentId, | |||||
Status: haodankuStationState[v.OrderStatus], | |||||
UpdateTime: int(time.Now().Unix()), | |||||
Commission: v.PredictMoney, | |||||
Title: utils.AnyToString(v.ShopName), | |||||
Payment: v.PayPrice, | |||||
Pvd: "tongcheng", | |||||
Img: "", | |||||
IsShare: isShare, | |||||
Gid: v.TradeId, | |||||
} | |||||
if v.CreateTime != "" { | |||||
ord.CreateTime = int(utils.TimeStdParseUnix(v.CreateTime)) | |||||
} | |||||
if v.EarningTime != "" { | |||||
ord.PlatformSettleTime = int(utils.TimeStdParseUnix(utils.AnyToString(v.EarningTime))) | |||||
} | |||||
if utils.StrToFloat64(v.ActualMoney) > 0 { | |||||
ord.RealCommission = v.ActualMoney | |||||
} | |||||
if v.PaidTime != "" && v.OrderStatus == "3" { | |||||
ord.Status = "订单退款" | |||||
} | |||||
if v.SettledStatus == 1 && v.OrderStatus == "2" && v.EarningTime != "" { | |||||
ord.Status = "订单结算" | |||||
} | |||||
if v.SettledStatus == 2 { | |||||
ord.RealCommission = "0" | |||||
ord.Commission = "0" | |||||
} | |||||
if one == nil { | |||||
insertOne, err := db.ZhimengDb.InsertOne(ord) | |||||
fmt.Println(insertOne) | |||||
fmt.Println(err) | |||||
} else { | |||||
ord.SettleTime = one.SettleTime | |||||
if one.PlatformSettleTime > 0 { | |||||
ord.PlatformSettleTime = one.PlatformSettleTime | |||||
} | |||||
if one.Status == "违规订单" { | |||||
ord.Status = "违规订单" | |||||
} | |||||
if ord.SettleTime > 0 && ord.Status == "订单退款" { | |||||
ord.SettleTime = 0 | |||||
masterDb := db.MasterDb{} | |||||
masterDb.Set() | |||||
master := masterDb.GetMaster(utils.IntToStr(ord.Uid)) | |||||
if master != nil { | |||||
masterAmountDb := db.MasterAmountDb{} | |||||
masterAmountDb.Set() | |||||
amount := masterAmountDb.GetMasterAmountByExtendUid(utils.IntToStr(master.Id), utils.IntToStr(ord.ExtendUid), "playlet") | |||||
if amount != nil { | |||||
oldAmount := amount.Amount | |||||
amount.Amount = utils.Float64ToStr(utils.StrToFloat64(amount.Amount) - utils.StrToFloat64(ord.RealCommission)) | |||||
update := masterAmountDb.MasterAmountUpdate(amount.Id, amount) | |||||
if update { | |||||
var tmp = model.MasterAmountFlow{ | |||||
Uid: utils.IntToStr(ord.Uid), | |||||
Time: time.Now(), | |||||
BeforeAmount: oldAmount, | |||||
Amount: ord.RealCommission, | |||||
AfterAmount: amount.Amount, | |||||
Platform: "playlet", | |||||
Oid: utils.Int64ToStr(ord.Oid), | |||||
Title: "订单退款扣除", | |||||
FlowType: "order_refund_deduct", | |||||
IncomeType: 0, | |||||
ExtendUid: utils.IntToStr(ord.ExtendUid), | |||||
} | |||||
masterAmountFlowDb := db.MasterAmountFlowDb{} | |||||
masterAmountFlowDb.Set() | |||||
masterAmountFlowDb.MasterAmountFlowInsert(&tmp) | |||||
} | |||||
} | |||||
} | |||||
} | |||||
db.ZhimengDb.Where("id=?", one.Id).AllCols().Update(ord) | |||||
} | |||||
} | |||||
return len(order) | |||||
} |
@@ -0,0 +1,212 @@ | |||||
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/haodanku" | |||||
"fmt" | |||||
"strings" | |||||
"time" | |||||
) | |||||
func HandankuXianyu() { | |||||
pvdTimeKey := "haodanku_xianyu_time" | |||||
// 获得最后时间 | |||||
latest := offical.SysCfgByKey(pvdTimeKey) | |||||
if latest == nil { | |||||
offical.DbsSysCfgInserts(pvdTimeKey, time.Now().String()) | |||||
latest = offical.SysCfgByKey(pvdTimeKey) | |||||
} | |||||
// 所有时间都是在操作秒数 | |||||
now := time.Now().Unix() | |||||
timeStr := latest.V | |||||
fmt.Println(timeStr) | |||||
past := utils.TimeParseStd(timeStr).Unix() | |||||
// 如果上次记录超过30天或者 过去时间大于当前时间戳, 把时间设置为此前20分钟 | |||||
if past > now { | |||||
past = now | |||||
} | |||||
var ( | |||||
beginTime int64 = 0 | |||||
endTime int64 = 0 | |||||
pageNo int = 1 | |||||
pageSize int = 50 | |||||
) | |||||
//怕时间不是走最新的 | |||||
leave := now - past | |||||
if leave > 500 { | |||||
leave = 0 | |||||
} | |||||
past = past + leave | |||||
beginTime = past - 20*60 | |||||
endTime = past | |||||
if endTime > now { | |||||
endTime = now | |||||
} | |||||
for { | |||||
var err error | |||||
count := OrdersHaodankuXianyuGet(pageNo, pageSize, beginTime, endTime) | |||||
if err != nil || count == 0 { | |||||
goto ChkArg | |||||
} | |||||
if count > 0 { | |||||
count = pageSize | |||||
} | |||||
// 判断是否分页已经全部取完了 | |||||
if count == pageSize { | |||||
pageNo++ | |||||
fmt.Println("========蝉选下一页========" + utils.IntToStr(pageNo)) | |||||
continue | |||||
} | |||||
ChkArg: | |||||
// 查询完后重置时间, 最后查询时间 | |||||
if endTime < now { | |||||
pageNo = 1 | |||||
offical.DbsSysCfgUpdate(pvdTimeKey, utils.TimeToStr(endTime)) | |||||
beginTime = endTime | |||||
endTime = endTime + 20*60 | |||||
if endTime > now { | |||||
endTime = now | |||||
} | |||||
continue | |||||
} | |||||
break | |||||
} | |||||
offical.DbsSysCfgUpdate(pvdTimeKey, time.Unix(now, 0).Format("2006-01-02 15:04:05")) | |||||
} | |||||
var haodankuXianyuStationState = map[string]string{ | |||||
"4": "订单付款", | |||||
"3": "订单退款", | |||||
"2": "订单成功", | |||||
} | |||||
func OrdersHaodankuXianyuGet(page, pageSize int, sTime, eTime int64) int { | |||||
tikTokArgs := map[string]string{ | |||||
"date_type": "4", | |||||
"back": utils.IntToStr(pageSize), | |||||
"min_id": utils.IntToStr(page), | |||||
"start_date": utils.Int64ToStr(time.Unix(sTime, 0).Unix()), | |||||
"end_date": utils.Int64ToStr(time.Unix(eTime, 0).Unix()), | |||||
} | |||||
order := haodanku.HaodankuXianyuOrder(tikTokArgs) | |||||
for _, v := range order { | |||||
if v.ChannelCode == "" || v.OrderStatus == "1" { | |||||
continue | |||||
} | |||||
isShare := 0 | |||||
if strings.Contains(v.ChannelCode, "s") { | |||||
isShare = 1 | |||||
} | |||||
v.ChannelCode = strings.ReplaceAll(v.ChannelCode, "o", "") | |||||
v.ChannelCode = strings.ReplaceAll(v.ChannelCode, "s", "") | |||||
ex := strings.Split(v.ChannelCode, "u") | |||||
if len(ex) != 2 { | |||||
continue | |||||
} | |||||
mid := "" | |||||
uid := "" | |||||
one := db.GetLifeOrderByOne1(utils.AnyToString(v.TradeId), "xianyu") | |||||
if one != nil { | |||||
isShare = one.IsShare | |||||
mid = utils.IntToStr(one.Uid) | |||||
uid = utils.IntToStr(one.StationUid) | |||||
} else { | |||||
mid = ex[0] | |||||
uid = ex[1] | |||||
} | |||||
if mid == "" || uid == "" { | |||||
continue | |||||
} | |||||
var ord = &model.LifeOrder{ | |||||
Oid: utils.StrToInt64(utils.OrderUUID(utils.StrToInt(uid))), | |||||
Uid: utils.StrToInt(mid), | |||||
StationUid: utils.StrToInt(uid), | |||||
PvdOid: utils.AnyToString(v.TradeId), | |||||
Status: haodankuXianyuStationState[v.OrderStatus], | |||||
UpdateTime: int(time.Now().Unix()), | |||||
Commission: v.PredictMoney, | |||||
Title: utils.AnyToString(v.ItemTitle), | |||||
Payment: v.PayPrice, | |||||
Pvd: "xianyu", | |||||
Img: v.ItemImg, | |||||
IsShare: isShare, | |||||
Gid: v.TradeId, | |||||
} | |||||
if v.CreateTime != "" { | |||||
ord.CreateTime = int(utils.TimeStdParseUnix(v.CreateTime)) | |||||
} | |||||
if v.EarningTime != "" { | |||||
ord.PlatformSettleTime = int(utils.TimeStdParseUnix(utils.AnyToString(v.EarningTime))) | |||||
} | |||||
if utils.StrToFloat64(v.ActualMoney) > 0 { | |||||
ord.RealCommission = v.ActualMoney | |||||
} | |||||
if v.PaidTime != "" && v.OrderStatus == "3" { | |||||
ord.Status = "订单退款" | |||||
} | |||||
if v.SettledStatus == 1 && v.OrderStatus == "2" && v.EarningTime != "" { | |||||
ord.Status = "订单结算" | |||||
} | |||||
if v.SettledStatus == 2 { | |||||
ord.RealCommission = "0" | |||||
ord.Commission = "0" | |||||
} | |||||
if one == nil { | |||||
insertOne, err := db.ZhimengDb.InsertOne(ord) | |||||
fmt.Println(insertOne) | |||||
fmt.Println(err) | |||||
} else { | |||||
ord.SettleTime = one.SettleTime | |||||
if one.PlatformSettleTime > 0 { | |||||
ord.PlatformSettleTime = one.PlatformSettleTime | |||||
} | |||||
if one.Status == "违规订单" { | |||||
ord.Status = "违规订单" | |||||
} | |||||
if ord.SettleTime > 0 && ord.Status == "订单退款" { | |||||
ord.SettleTime = 0 | |||||
masterDb := db.MasterDb{} | |||||
masterDb.Set() | |||||
master := masterDb.GetMaster(utils.IntToStr(ord.Uid)) | |||||
if master != nil { | |||||
masterAmountDb := db.MasterAmountDb{} | |||||
masterAmountDb.Set() | |||||
amount := masterAmountDb.GetMasterAmountByExtendUid(utils.IntToStr(master.Id), utils.IntToStr(ord.ExtendUid), "playlet") | |||||
if amount != nil { | |||||
oldAmount := amount.Amount | |||||
amount.Amount = utils.Float64ToStr(utils.StrToFloat64(amount.Amount) - utils.StrToFloat64(ord.RealCommission)) | |||||
update := masterAmountDb.MasterAmountUpdate(amount.Id, amount) | |||||
if update { | |||||
var tmp = model.MasterAmountFlow{ | |||||
Uid: utils.IntToStr(ord.Uid), | |||||
Time: time.Now(), | |||||
BeforeAmount: oldAmount, | |||||
Amount: ord.RealCommission, | |||||
AfterAmount: amount.Amount, | |||||
Platform: "playlet", | |||||
Oid: utils.Int64ToStr(ord.Oid), | |||||
Title: "订单退款扣除", | |||||
FlowType: "order_refund_deduct", | |||||
IncomeType: 0, | |||||
ExtendUid: utils.IntToStr(ord.ExtendUid), | |||||
} | |||||
masterAmountFlowDb := db.MasterAmountFlowDb{} | |||||
masterAmountFlowDb.Set() | |||||
masterAmountFlowDb.MasterAmountFlowInsert(&tmp) | |||||
} | |||||
} | |||||
} | |||||
} | |||||
db.ZhimengDb.Where("id=?", one.Id).AllCols().Update(ord) | |||||
} | |||||
} | |||||
return len(order) | |||||
} |
@@ -0,0 +1,21 @@ | |||||
package task | |||||
import ( | |||||
"applet/app/task/svc" | |||||
"math/rand" | |||||
"time" | |||||
) | |||||
func taskHandankuTongcheng() { | |||||
for { | |||||
if len(ch) > workerNum { | |||||
time.Sleep(time.Millisecond * time.Duration(rand.Intn(1000))) | |||||
} else { | |||||
goto START | |||||
} | |||||
} | |||||
START: | |||||
ch <- 1 | |||||
svc.HandankuTongcheng() | |||||
<-ch | |||||
} |
@@ -0,0 +1,21 @@ | |||||
package task | |||||
import ( | |||||
"applet/app/task/svc" | |||||
"math/rand" | |||||
"time" | |||||
) | |||||
func taskHandankuXianyu() { | |||||
for { | |||||
if len(ch) > workerNum { | |||||
time.Sleep(time.Millisecond * time.Duration(rand.Intn(1000))) | |||||
} else { | |||||
goto START | |||||
} | |||||
} | |||||
START: | |||||
ch <- 1 | |||||
svc.HandankuXianyu() | |||||
<-ch | |||||
} |
@@ -4,7 +4,7 @@ go 1.19 | |||||
require ( | require ( | ||||
code.fnuoos.com/go_rely_warehouse/zyos_go_es.git v1.0.1-0.20230707081910-52e70aa52998 | code.fnuoos.com/go_rely_warehouse/zyos_go_es.git v1.0.1-0.20230707081910-52e70aa52998 | ||||
code.fnuoos.com/go_rely_warehouse/zyos_go_third_party_api.git v1.1.21-0.20250628020002-5817026668c4 | |||||
code.fnuoos.com/go_rely_warehouse/zyos_go_third_party_api.git v1.1.21-0.20250712085003-8824d2f475c7 | |||||
github.com/360EntSecGroup-Skylar/excelize v1.4.1 | github.com/360EntSecGroup-Skylar/excelize v1.4.1 | ||||
github.com/afex/hystrix-go v0.0.0-20180502004556-fa1af6a1f4f5 | github.com/afex/hystrix-go v0.0.0-20180502004556-fa1af6a1f4f5 | ||||
github.com/boombuler/barcode v1.0.1 | github.com/boombuler/barcode v1.0.1 | ||||