Browse Source

更新

master
huangjiajun 1 year ago
parent
commit
532818d4c6
21 changed files with 1138 additions and 28 deletions
  1. +14
    -0
      app/db/model/tik_tok_plan_team.go
  2. +10
    -0
      app/db/official/db_master_list_cfg.go
  3. +105
    -0
      app/es/md/es_mapping_tilk_tok_task.go
  4. +76
    -0
      app/es/md/es_mapping_tpdaren.go
  5. +315
    -0
      app/hdl/hdl_file_upload.go
  6. +4
    -0
      app/router/router.go
  7. +33
    -27
      app/task/init.go
  8. +5
    -0
      app/task/md/cron_key.go
  9. +80
    -0
      app/task/md/md_tik_tok_task.go
  10. +24
    -0
      app/task/md/md_tpdaren.go
  11. +27
    -0
      app/task/svc/svc_dianzhong_kuaishou_money.go
  12. +165
    -0
      app/task/svc/svc_tik_tok_task.go
  13. +94
    -0
      app/task/svc/svc_tik_tok_task_money.go
  14. +49
    -0
      app/task/svc/svc_tik_tok_task_relate.go
  15. +22
    -0
      app/task/task_dianzhong_kuaishou_money.go
  16. +22
    -0
      app/task/task_tik_tok_task.go
  17. +22
    -0
      app/task/task_tik_tok_task_money.go
  18. +22
    -0
      app/task/task_tik_tok_task_money_by_yestday.go
  19. +22
    -0
      app/task/task_tik_tok_task_relate.go
  20. +25
    -0
      app/utils/string.go
  21. +2
    -1
      go.mod

+ 14
- 0
app/db/model/tik_tok_plan_team.go View File

@@ -0,0 +1,14 @@
package model

import (
"time"
)

type TikTokPlanTeam struct {
Id int `json:"id" xorm:"not null pk autoincr INT(11)"`
TeamId string `json:"team_id" xorm:"VARCHAR(255)"`
Ext string `json:"ext" xorm:"VARCHAR(255)"`
TikTokId string `json:"tik_tok_id" xorm:"VARCHAR(255)"`
IsShow int `json:"is_show" xorm:"default 0 INT(1)"`
Time time.Time `json:"time" xorm:"DATETIME"`
}

+ 10
- 0
app/db/official/db_master_list_cfg.go View File

@@ -25,3 +25,13 @@ func MasterListCfgGetKeyAll(key string) *[]model.MasterListCfg {
} }
return &cfgList return &cfgList
} }
func MasterListCfgSave(uid, key, val string) {
var cfgList model.MasterListCfg
has, err := db.Db.Where("`k`=? and uid=?", key, uid).Get(&cfgList)
if err != nil || has == false {
return
}
cfgList.V = val
db.Db.Where("`k`=? and uid=?", key, uid).Update(&cfgList)
return
}

+ 105
- 0
app/es/md/es_mapping_tilk_tok_task.go View File

@@ -0,0 +1,105 @@
package md

const ZhiosTikTokTaskEsIndex = "zhios_tik_tok_task"
const ZhiosTikTokTaskDetailEsIndex = "zhios_tik_tok_task_detail"
const ZhiosTikTokTaskEsMapping = `
{
"settings" : {
"number_of_shards" : 2,
"number_of_replicas" : 1
},
"mappings":{
"properties":{
"task_ids":{
"type": "text"
}
}
}
}`
const ZhiosTikTokTaskDetailEsMapping = `
{
"settings" : {
"number_of_shards" : 2,
"number_of_replicas" : 1
},
"mappings":{
"properties":{
"appid":{
"type": "keyword"
},
"task_start_time":{
"type": "integer"
},
"task_end_time":{
"type": "integer"
},
"page_type":{
"type": "integer"
},
"start_page":{
"type": "keyword"
},
"task_desc":{
"type": "keyword"
},
"task_icon":{
"type": "keyword"
},
"task_name":{
"type": "keyword"
},
"anchor_title":{
"type": "keyword"
},
"status":{
"type": "integer"
},
"task_tags":{
"type": "keyword"
},
"task_settle_type":{
"type": "integer"
},
"task_id":{
"type": "keyword"
},
"refer_ma_captures":{
"type": "keyword"
},
"refer_video_captures":{
"type": "keyword"
},
"refer_videos":{
"type": "keyword"
},
"refer_gids":{
"type": "keyword"
},
"task_refund_period":{
"type": "integer"
},
"payment_allocate_ratio":{
"type": "integer"
},
"platform_address_app":{
"type": "keyword"
},
"platform_address_web":{
"type": "keyword"
},
"reject_reason":{
"type": "keyword"
},
"task_type":{
"type": "integer"
},
"video_id":{
"type": "integer"
},
"oriented_talent_rel_list":{
"type": "text"
}

}
}
}`

+ 76
- 0
app/es/md/es_mapping_tpdaren.go View File

@@ -1,6 +1,7 @@
package md package md


const ZhiosTpdarenEsIndex = "zhios_tpdaren" const ZhiosTpdarenEsIndex = "zhios_tpdaren"
const ZhiosTpdarenEsIndexNew = "zhios_tpdaren_new"
const ZhiosTpdarenEsMapping = ` const ZhiosTpdarenEsMapping = `
{ {
"settings" : { "settings" : {
@@ -15,6 +16,7 @@ const ZhiosTpdarenEsMapping = `
"is_hot":{ "is_hot":{
"type": "integer" "type": "integer"
}, },
"video_type":{ "video_type":{
"type": "keyword" "type": "keyword"
}, },
@@ -69,3 +71,77 @@ const ZhiosTpdarenEsMapping = `
} }
} }
}` }`
const ZhiosTpdarenNewEsMapping = `
{
"settings" : {
"number_of_shards" : 2,
"number_of_replicas" : 1
},
"mappings":{
"properties":{
"id":{
"type": "keyword"
},
"is_close":{
"type": "integer"
},
"is_hot":{
"type": "integer"
},
"video_type":{
"type": "keyword"
},
"cate":{
"type": "keyword"
},
"appid":{
"type": "keyword"
},
"description":{
"type": "keyword"
},
"episode":{
"type": "integer"
},
"channel_theater_id":{
"type": "integer"
},
"douyin_theater_id":{
"type": "integer"
},
"kuaishou_theater_id":{
"type": "integer"
},
"update_time":{
"type": "integer"
},
"image_url":{
"type": "keyword"
},
"is_end":{
"type": "integer"
},
"pay_episode":{
"type": "integer"
},
"material":{
"type": "keyword"
},
"online_time":{
"type": "keyword"
},
"time":{
"type": "integer"
},
"type":{
"type": "keyword"
},
"title":{
"type": "keyword"
},
"data":{
"type": "text"
}
}
}
}`

+ 315
- 0
app/hdl/hdl_file_upload.go View File

@@ -3,11 +3,21 @@ package hdl
import ( import (
"applet/app/db" "applet/app/db"
"applet/app/e" "applet/app/e"
md2 "applet/app/es/md"
"applet/app/lib/validate" "applet/app/lib/validate"
"applet/app/svc" "applet/app/svc"
"applet/app/task/md"
"applet/app/utils" "applet/app/utils"
"bufio"
"code.fnuoos.com/go_rely_warehouse/zyos_go_es.git/es"
"encoding/csv"
"encoding/json"
"fmt"
"github.com/gin-gonic/gin" "github.com/gin-gonic/gin"
"github.com/mcuadros/go-defaults" "github.com/mcuadros/go-defaults"
"github.com/syyongx/php2go"
"strings"
"time"
) )


func ImgReqUpload(c *gin.Context) { func ImgReqUpload(c *gin.Context) {
@@ -50,3 +60,308 @@ func ImgReqUpload(c *gin.Context) {
e.OutSuc(c, my1, nil) e.OutSuc(c, my1, nil)


} }

func File(c *gin.Context) {
rFile, _ := c.FormFile("file")
file, err := rFile.Open()
if err != nil {
c.String(400, "文件格式错误")
return
}
//es.CreateIndexIfNotExists(md2.ZhiosTpdarenEsIndexNew, md2.ZhiosTpdarenNewEsMapping)

defer file.Close()
reader := csv.NewReader(bufio.NewReader(file))
i := 0
for {
line, err := reader.Read()
if err != nil {
c.String(400, err.Error())
return
}
if line[0] == "上架时间" {
i++
continue
}
//line 就是每一行的内容
fmt.Println(line)
t := time.Now()
var tmp md.TpdarenNew
material := ""
if strings.Contains(line[4], " 提取码") == false {
material = line[4]
} else {
ex := strings.Split(line[4], " 提取码: ")
material = ex[0]
if strings.Contains(material, "?pwd=") == false {
material += "?pwd=" + ex[1]
}

}
material = strings.ReplaceAll(material, "链接:", "")
material = strings.ReplaceAll(material, " ", "")
tmp = md.TpdarenNew{
Description: line[5],
Episode: utils.StrToInt(line[9]),
Cate: line[6],
ImageUrl: line[12],
IsEnd: 0,
PayEpisode: utils.StrToInt(line[10]),
Material: material,
OnlineTime: time.Date(t.Year(), time.Month(utils.StrToInt(strings.ReplaceAll(line[0], "月", ""))), 1, 0, 0, 0, 0, t.Location()).Format("2006-01-02 15:04:05"),
Type: "dianzhong",
Title: line[2],
Data: utils.SerializeStr(line),
DouyinTheaterId: 1,
KuaishouTheaterId: 2,
UpdateTime: int(time.Now().Unix()) - i*10,
Time: int(time.Date(t.Year(), time.Month(utils.StrToInt(strings.ReplaceAll(line[0], "月", ""))), 1, 0, 0, 0, 0, t.Location()).Unix()),
Appid: "31517",
Id: line[1],
IsClose: 0,
}

i++
var uniqueId = ""
tmp.VideoType = "douyin"
uniqueId = php2go.Md5(tmp.Appid + "_" + tmp.Type + "_" + tmp.VideoType + "_" + tmp.Id)
commAdd(uniqueId, tmp)

tmp.VideoType = "kuaishou"
uniqueId = php2go.Md5(tmp.Appid + "_" + tmp.Type + "_" + tmp.VideoType + "_" + tmp.Id)
commAdd(uniqueId, tmp)
}

}
func FileTwo(c *gin.Context) {
rFile, _ := c.FormFile("file")
file, err := rFile.Open()
if err != nil {
c.String(400, "文件格式错误")
return
}
//es.CreateIndexIfNotExists(md2.ZhiosTpdarenEsIndexNew, md2.ZhiosTpdarenNewEsMapping)

defer file.Close()
reader := csv.NewReader(bufio.NewReader(file))
i := 0
for {
i++
line, err := reader.Read()
if err != nil {
c.String(400, err.Error())
return
}
if line[0] == "上架时间" {
continue
}
//line 就是每一行的内容
fmt.Println(line)
t := time.Now()
var tmp md.TpdarenNew
material := ""
if strings.Contains(line[6], " 提取码") == false {
material = line[6]
} else {
ex := strings.Split(line[6], " 提取码")
material = ex[0]
if strings.Contains(material, "?pwd=") == false {
material += "?pwd=" + ex[1]
}
}
if i > 318 && strings.ReplaceAll(line[0], "月", "") == "12" {
line[0] = "1"
}
material = strings.ReplaceAll(material, "链接:", "")
tmp = md.TpdarenNew{
Description: line[7],
Episode: utils.StrToInt(line[11]),
Cate: line[8],
ImageUrl: line[14],
IsEnd: 0,
PayEpisode: utils.StrToInt(line[12]),
Material: material,
OnlineTime: time.Date(t.Year(), time.Month(utils.StrToInt(strings.ReplaceAll(line[0], "月", ""))), 1, 0, 0, 0, 0, t.Location()).Format("2006-01-02 15:04:05"),
Type: "dianzhong",
Title: line[2],
Data: utils.SerializeStr(line),
DouyinTheaterId: 1,
KuaishouTheaterId: 2,
UpdateTime: int(time.Now().Unix()) - i*10,
Time: int(time.Date(t.Year(), time.Month(utils.StrToInt(strings.ReplaceAll(line[0], "月", ""))), 1, 0, 0, 0, 0, t.Location()).Unix()),
Appid: "31517",
Id: line[1],
IsClose: 0,
}

var uniqueId = ""
if utils.InArr(line[4], []string{"上架", "微信小程序下架", "乔陌漓,颜汐落"}) {

tmp.VideoType = "douyin"
uniqueId = php2go.Md5(tmp.Appid + "_" + tmp.Type + "_" + tmp.VideoType + "_" + tmp.Id)
commAdd(uniqueId, tmp)
}
if utils.InArr(line[4], []string{"上架", "微信小程序下架", "乔陌漓,颜汐落", "抖音下架", "抖音下架、其他媒体上架"}) {
tmp.VideoType = "kuaishou"
uniqueId = php2go.Md5(tmp.Appid + "_" + tmp.Type + "_" + tmp.VideoType + "_" + tmp.Id)
commAdd(uniqueId, tmp)
}
}

}
func FileSecond(c *gin.Context) {
rFile, _ := c.FormFile("file")
file, err := rFile.Open()
if err != nil {
c.String(400, "文件格式错误")
return
}
//es.CreateIndexIfNotExists(md2.ZhiosTpdarenEsIndexNew, md2.ZhiosTpdarenNewEsMapping)

defer file.Close()
reader := csv.NewReader(bufio.NewReader(file))
i := 0
day := 10
for {

line, err := reader.Read()
if err != nil {
c.String(400, err.Error())
return
}
if len(line) < 4 {
continue
}
if line[3] == "剧集ID" || line[3] == "" {
i++
continue
}
//line 就是每一行的内容
fmt.Println(line)
t := time.Now()
var tmp md.TpdarenNew
material := ""
if strings.Contains(line[6], " 提取码") == false {
material = line[6]
} else {
ex := strings.Split(line[6], " 提取码")
material = ex[0]
if strings.Contains(material, "?pwd=") == false {
material += "?pwd=" + ex[1]
}
}
material = strings.ReplaceAll(material, "链接:", "")

tmp = md.TpdarenNew{
Description: line[7],
Episode: utils.StrToInt(line[11]),
Cate: line[8],
ImageUrl: line[14],
IsEnd: 0,
PayEpisode: utils.StrToInt(line[12]),
Material: material,
OnlineTime: time.Date(t.Year(), time.Month(day), 1, 0, 0, 0, 0, t.Location()).Format("2006-01-02 15:04:05"),
Type: "dianzhong",
Title: line[4],
Data: utils.SerializeStr(line),
DouyinTheaterId: 1,
KuaishouTheaterId: 2,
UpdateTime: int(time.Now().Unix()) - i*10,
Time: int(time.Date(t.Year(), time.Month(day), 1, 0, 0, 0, 0, t.Location()).Unix()),
Appid: "31517",
Id: line[3],
IsClose: 0,
}
i++
var uniqueId = ""

tmp.VideoType = "douyin"
uniqueId = php2go.Md5(tmp.Appid + "_" + tmp.Type + "_" + tmp.VideoType + "_" + tmp.Id)
commAdd(uniqueId, tmp)

tmp.VideoType = "kuaishou"
uniqueId = php2go.Md5(tmp.Appid + "_" + tmp.Type + "_" + tmp.VideoType + "_" + tmp.Id)
commAdd(uniqueId, tmp)
}

}
func FileDown(c *gin.Context) {
rFile, _ := c.FormFile("file")
file, err := rFile.Open()
if err != nil {
c.String(400, "文件格式错误")
return
}

defer file.Close()
reader := csv.NewReader(bufio.NewReader(file))
i := 0
for {
line, err := reader.Read()
if err != nil {
c.String(400, err.Error())
return
}
if line[1] == "ID" {
continue
}

//line 就是每一行的内容
fmt.Println(line)
tmp := md.TpdarenNew{
Type: "dianzhong",
Appid: "31517",
Id: line[1],
}
tmp.IsClose = 1

i++
var uniqueId = ""
if utils.InArr(line[3], []string{"快手下架", "版权到期", "全平台下架", "版权到期,全平台下架", "只能H5用"}) {
tmp.VideoType = "kuaishou"
uniqueId = php2go.Md5(tmp.Appid + "_" + tmp.Type + "_" + tmp.VideoType + "_" + tmp.Id)
fmt.Println(uniqueId)
commDown(uniqueId, tmp)
}
if utils.InArr(line[3], []string{"抖音下架", "版权到期", "全平台下架", "版权到期,全平台下架", "只能H5用", "抖音/微信下架"}) {

tmp.VideoType = "douyin"
uniqueId = php2go.Md5(tmp.Appid + "_" + tmp.Type + "_" + tmp.VideoType + "_" + tmp.Id)
fmt.Println(uniqueId)
commDown(uniqueId, tmp)
}

}

}
func commAdd(uniqueId string, tmp md.TpdarenNew) {
doc, _ := es.FirstDoc(md2.ZhiosTpdarenEsIndexNew, uniqueId)
if doc == nil {
createDocRet, err := es.CreateDoc(md2.ZhiosTpdarenEsIndexNew, uniqueId, tmp)
if err != nil {
return
}
fmt.Printf("CreateDoc ==> %+v \n\n", createDocRet)
} else {
createDocRet, err := es.UpdateDoc(md2.ZhiosTpdarenEsIndexNew, uniqueId, tmp)
if err != nil {
return
}
fmt.Printf("CreateDoc ==> %+v \n\n", createDocRet)
}
}
func commDown(uniqueId string, tmp md.TpdarenNew) {
doc, _ := es.FirstDoc(md2.ZhiosTpdarenEsIndexNew, uniqueId)
if doc == nil {

} else {
var tmpDoc md.TpdarenNew
json.Unmarshal(doc.Source, &tmpDoc)
tmpDoc.IsClose = tmp.IsClose
createDocRet, err := es.UpdateDoc(md2.ZhiosTpdarenEsIndexNew, uniqueId, tmpDoc)
if err != nil {
return
}
fmt.Printf("CreateDoc ==> %+v \n\n", createDocRet)
}
}

+ 4
- 0
app/router/router.go View File

@@ -64,6 +64,10 @@ func routeInternal(r *gin.RouterGroup) {
} }
func routeZhimeng(r *gin.RouterGroup) { func routeZhimeng(r *gin.RouterGroup) {
r.GET("/test", hdl.Order) r.GET("/test", hdl.Order)
r.POST("/file", hdl.File)
r.POST("/file_two", hdl.FileTwo)
r.POST("/file_second", hdl.FileSecond)
r.POST("/file_down", hdl.FileDown)
r.GET("/authorizationCode", hdl.GetAuthorizationCode) r.GET("/authorizationCode", hdl.GetAuthorizationCode)
r.GET("/token", hdl.GetToken) r.GET("/token", hdl.GetToken)
r.POST("/rToken", hdl.RefreshToken) r.POST("/rToken", hdl.RefreshToken)


+ 33
- 27
app/task/init.go View File

@@ -83,32 +83,38 @@ func doTask(fnName string) func() {


// 增加自动任务队列 // 增加自动任务队列
func initTasks() { func initTasks() {
jobs[taskMd.ZhimengCronPlayletVideoOrder] = taskPlayletVideoOrder //
jobs[taskMd.ZhimengCronPlayletVideoOrderYesterDay] = taskPlayletVideoOrderYesterday //
jobs[taskMd.ZhimengCronPlayletVideoOrderMonth] = taskPlayletVideoOrderMonth //
jobs[taskMd.ZhimengCronPlayletAdvOrderMonth] = taskPlayletAdvOrderMonth //
jobs[taskMd.ZhimengCronPlayletAdvOrder] = taskPlayletAdvOrder //
jobs[taskMd.ZhimengCronPlayletAdvOrderYesterDay] = taskPlayletAdvOrderYesterday //
jobs[taskMd.ZhimengCronPlayletAdvOrderYesterDayToMoney] = taskPlayletAdvOrderYesterdayToMoney //
jobs[taskMd.ZhimengCronPlayletGoods] = taskPlayletGoods //
jobs[taskMd.ZhimengCronPlayletOrderSettle] = taskPlayletOrderSettle //
jobs[taskMd.ZhimengCronHwOrderSettle] = taskHwOrderSettle //
jobs[taskMd.ZhimengCronMasterMonthSettle] = taskMasterMonthSettle //
jobs[taskMd.ZhimengCronHwStarbucksOrder] = taskHwStarbucksOrder //
jobs[taskMd.ZhimengCronHwMovieOrder] = taskHwMovieOrder //
jobs[taskMd.ZhimengCronHwMcdonaldOrder] = taskHwMcdonaldOrder //
jobs[taskMd.ZhimengCronHwNayukiOrder] = taskHwNayukiOrder //
jobs[taskMd.ZhimengCronHwLuckinOrder] = taskHwLuckinOrder //
jobs[taskMd.ZhimengCronHwPizzaOrder] = taskHwPizzaOrder //
jobs[taskMd.ZhimengCronHwPagodaOrder] = taskHwPagodaOrder //
jobs[taskMd.ZhimengCronHwBurgerKingOrder] = taskHwBurgerKingOrder //
jobs[taskMd.ZhimengCronHwHeyteaOrder] = taskHwHeyteaOrder //
jobs[taskMd.ZhimengCronHwToKfcOrder] = taskHwToKfcOrder //
jobs[taskMd.ZhimengCronHwWallaceOrder] = taskHwWallaceOrder //
jobs[taskMd.ZhimengCronHwFlowerCakeOrder] = taskHwFlowerCakeOrder //
jobs[taskMd.ZhimengCronHwDeliveryOrder] = taskHwDeliveryOrder //
jobs[taskMd.ZhimengCronHwTourismOrder] = taskHwTourismOrder //
jobs[taskMd.ZhimengCronTikTokLocalLifeOrder] = taskTikTokLocalLifeOrder //
jobs[taskMd.ZhimengCronTikTokLocalLifeOrderSettle] = taskTikTokLocalLifeOrderSettle //

jobs[taskMd.ZhimengCronTikTokTask] = taskTikTokTask //
jobs[taskMd.ZhimengCronTikTokTaskRelate] = taskTikTokTaskRelate //
jobs[taskMd.ZhimengCronTikTokTaskMoney] = taskTikTokTaskMoney //
jobs[taskMd.ZhimengCronTikTokTaskMoneyByYestday] = taskTikTokTaskMoneyByYestday //
jobs[taskMd.ZhimengCronDianzhongKuaishouMoney] = taskDianzhongKuaishouMoney //
//jobs[taskMd.ZhimengCronPlayletVideoOrder] = taskPlayletVideoOrder //
//jobs[taskMd.ZhimengCronPlayletVideoOrderYesterDay] = taskPlayletVideoOrderYesterday //
//jobs[taskMd.ZhimengCronPlayletVideoOrderMonth] = taskPlayletVideoOrderMonth //
//jobs[taskMd.ZhimengCronPlayletAdvOrderMonth] = taskPlayletAdvOrderMonth //
//jobs[taskMd.ZhimengCronPlayletAdvOrder] = taskPlayletAdvOrder //
//jobs[taskMd.ZhimengCronPlayletAdvOrderYesterDay] = taskPlayletAdvOrderYesterday //
//jobs[taskMd.ZhimengCronPlayletAdvOrderYesterDayToMoney] = taskPlayletAdvOrderYesterdayToMoney //
//jobs[taskMd.ZhimengCronPlayletGoods] = taskPlayletGoods //
jobs[taskMd.ZhimengCronPlayletOrderSettle] = taskPlayletOrderSettle //
jobs[taskMd.ZhimengCronHwOrderSettle] = taskHwOrderSettle //
jobs[taskMd.ZhimengCronMasterMonthSettle] = taskMasterMonthSettle //
jobs[taskMd.ZhimengCronHwStarbucksOrder] = taskHwStarbucksOrder //
jobs[taskMd.ZhimengCronHwMovieOrder] = taskHwMovieOrder //
jobs[taskMd.ZhimengCronHwMcdonaldOrder] = taskHwMcdonaldOrder //
jobs[taskMd.ZhimengCronHwNayukiOrder] = taskHwNayukiOrder //
jobs[taskMd.ZhimengCronHwLuckinOrder] = taskHwLuckinOrder //
jobs[taskMd.ZhimengCronHwPizzaOrder] = taskHwPizzaOrder //
jobs[taskMd.ZhimengCronHwPagodaOrder] = taskHwPagodaOrder //
jobs[taskMd.ZhimengCronHwBurgerKingOrder] = taskHwBurgerKingOrder //
jobs[taskMd.ZhimengCronHwHeyteaOrder] = taskHwHeyteaOrder //
jobs[taskMd.ZhimengCronHwToKfcOrder] = taskHwToKfcOrder //
jobs[taskMd.ZhimengCronHwWallaceOrder] = taskHwWallaceOrder //
jobs[taskMd.ZhimengCronHwFlowerCakeOrder] = taskHwFlowerCakeOrder //
jobs[taskMd.ZhimengCronHwDeliveryOrder] = taskHwDeliveryOrder //
jobs[taskMd.ZhimengCronHwTourismOrder] = taskHwTourismOrder //
jobs[taskMd.ZhimengCronTikTokLocalLifeOrder] = taskTikTokLocalLifeOrder //
jobs[taskMd.ZhimengCronTikTokLocalLifeOrderSettle] = taskTikTokLocalLifeOrderSettle //


} }

+ 5
- 0
app/task/md/cron_key.go View File

@@ -1,6 +1,11 @@
package md package md


const ( const (
ZhimengCronTikTokTaskRelate = "zhimeng_cron_tik_tok_relate"
ZhimengCronTikTokTask = "zhimeng_cron_tik_tok_task" //短剧订单
ZhimengCronTikTokTaskMoney = "zhimeng_cron_tik_tok_task_money" //短剧订单
ZhimengCronTikTokTaskMoneyByYestday = "zhimeng_cron_tik_tok_task_money_by_yestday"
ZhimengCronDianzhongKuaishouMoney = "zhimeng_cron_dianzhong_kuaishou_money"
ZhimengCronPlayletVideoOrder = "zhimeng_cron_playlet_video_order" //短剧订单 ZhimengCronPlayletVideoOrder = "zhimeng_cron_playlet_video_order" //短剧订单
ZhimengCronPlayletAdvOrder = "zhimeng_cron_playlet_adv_order" //短剧广告订单 ZhimengCronPlayletAdvOrder = "zhimeng_cron_playlet_adv_order" //短剧广告订单
ZhimengCronPlayletVideoOrderYesterDay = "zhimeng_cron_playlet_video_order_yesterday" ZhimengCronPlayletVideoOrderYesterDay = "zhimeng_cron_playlet_video_order_yesterday"


+ 80
- 0
app/task/md/md_tik_tok_task.go View File

@@ -0,0 +1,80 @@
package md

type TikTokTaskDetail struct {
AnchorTitle string `json:"anchor_title"`
Appid string `json:"appid"`
PaymentAllocateRatio int `json:"payment_allocate_ratio"`
PlatformAddressApp string `json:"platform_address_app"`
PlatformAddressWeb string `json:"platform_address_web"`
ReferMaCaptures []string `json:"refer_ma_captures"`
ReferVideoCaptures []string `json:"refer_video_captures"`
RejectReason string `json:"reject_reason"`
StartPage string `json:"start_page"`
Status int `json:"status"`
TaskDesc string `json:"task_desc"`
TaskEndTime int `json:"task_end_time"`
TaskIcon string `json:"task_icon"`
TaskId int64 `json:"task_id"`
TaskName string `json:"task_name"`
TaskRefundPeriod int `json:"task_refund_period"`
TaskSettleType int `json:"task_settle_type"`
TaskStartTime int `json:"task_start_time"`
TaskTags []string `json:"task_tags"`
TaskType int `json:"task_type"`
OrientedTalentRelList []struct {
CooperationState int `json:"cooperation_state"`
DouyinId string `json:"douyin_id"`
CancelOperator int `json:"cancel_operator,omitempty"`
} `json:"oriented_talent_rel_list"`
}
type TikTokTaskDetailSecond struct {
AnchorTitle string `json:"anchor_title"`
Appid string `json:"appid"`
PaymentAllocateRatio int `json:"payment_allocate_ratio"`
PlatformAddressApp string `json:"platform_address_app"`
PlatformAddressWeb string `json:"platform_address_web"`
ReferMaCaptures string `json:"refer_ma_captures"`
ReferVideoCaptures string `json:"refer_video_captures"`
RejectReason string `json:"reject_reason"`
StartPage string `json:"start_page"`
Status int `json:"status"`
TaskDesc string `json:"task_desc"`
TaskEndTime int `json:"task_end_time"`
TaskIcon string `json:"task_icon"`
TaskId int64 `json:"task_id"`
VideoId string `json:"video_id"`
TaskName string `json:"task_name"`
TaskRefundPeriod int `json:"task_refund_period"`
TaskSettleType int `json:"task_settle_type"`
TaskStartTime int `json:"task_start_time"`
TaskTags string `json:"task_tags"`
TaskType int `json:"task_type"`
OrientedTalentRelList string `json:"oriented_talent_rel_list"`
}

type TikTokTaskOrder struct {
VideoId int64 `json:"VideoId"`
TaskId int `json:"TaskId"`
TaskName string `json:"TaskName"`
PublishTime int `json:"PublishTime"`
Author string `json:"Author"`
DouyinID string `json:"DouyinID"`
VideoTitle string `json:"VideoTitle"`
MicroAppTitle string `json:"MicroAppTitle"`
VideoLink string `json:"VideoLink"`
AgentID string `json:"AgentID"`
TalentProfit1D int `json:"TalentProfit1d"`
GMV1D int `json:"GMV1d"`
RefundGMV1D int `json:"RefundGMV1d"`
AdShareCost1D int `json:"AdShareCost1d"`
FeedAdShareCost1D int `json:"FeedAdShareCost1d"`
BillingRefundGMV1D int `json:"BillingRefundGMV1d"`
BillingGMV1D int `json:"BillingGMV1d"`
Date string `json:"date"`
}
type TikTokTaskRelate struct {
AgencyTalentUid string `json:"agency_talent_uid"`
AgentId int64 `json:"agent_id"`
BindTime int `json:"bind_time"`
DouyinId string `json:"douyin_id"`
}

+ 24
- 0
app/task/md/md_tpdaren.go View File

@@ -22,6 +22,30 @@ type Tpdaren struct {
ShareTitle string `json:"share_title"` ShareTitle string `json:"share_title"`
Appid string `json:"appid"` Appid string `json:"appid"`
} }
type TpdarenNew struct {
Id string `json:"id"`
Description string `json:"description"`
Cate string `json:"cate"`
Episode int `json:"episode"`
ImageUrl string `json:"image_url"`
IsEnd int `json:"is_end"`
IsClose int `json:"is_close"`
IsHot int `json:"is_hot"`
PayEpisode int `json:"pay_episode"`
Material string `json:"material"`
OnlineTime string `json:"online_time"`
Type string `json:"type"`
Title string `json:"title"`
Data string `json:"data"`
VideoType string `json:"video_type"`
ChannelTheaterId int `json:"channel_theater_id"`
DouyinTheaterId int `json:"douyin_theater_id"`
KuaishouTheaterId int `json:"kuaishou_theater_id"`
UpdateTime int `json:"update_time"`
Time int `json:"time"`
ShareTitle string `json:"share_title"`
Appid string `json:"appid"`
}
type TpdarenList struct { type TpdarenList struct {
Title string `json:"title"` Title string `json:"title"`
Description string `json:"description"` Description string `json:"description"`


+ 27
- 0
app/task/svc/svc_dianzhong_kuaishou_money.go View File

@@ -0,0 +1,27 @@
package svc

import (
zhios_third_party_utils "code.fnuoos.com/go_rely_warehouse/zyos_go_third_party_api.git/utils"
"fmt"
"github.com/syyongx/php2go"
"strings"
"time"
)

func DianzhongKuaishouMoney() {
clientId := "10007095"
token := "n7crx2j6kFBDEsko9m"
endTime := time.Now().Unix()
startTime := endTime - 3600
timestamp := zhios_third_party_utils.Int64ToStr(time.Now().UnixNano() / 1e6)
param := map[string]string{
"clientId": clientId,
"sdate": zhios_third_party_utils.Int64ToStr(startTime),
"edate": zhios_third_party_utils.Int64ToStr(endTime),
"timestamp": timestamp,
"signKey": strings.ToLower(php2go.Md5(clientId + token + timestamp)), //签名秘钥(小写md5(clientId+接口token+timestamp)),
}
post, err := zhios_third_party_utils.CurlPost("https://routine.wqxsw.com/flames/channel/query/order", zhios_third_party_utils.SerializeStr(param), nil)
fmt.Println(string(post))
fmt.Println(err)
}

+ 165
- 0
app/task/svc/svc_tik_tok_task.go View File

@@ -0,0 +1,165 @@
package svc

import (
offical "applet/app/db/official"
md2 "applet/app/es/md"
"applet/app/task/md"
"applet/app/utils"
"applet/app/utils/cache"
"code.fnuoos.com/go_rely_warehouse/zyos_go_es.git/es"
"code.fnuoos.com/go_rely_warehouse/zyos_go_third_party_api.git/tik_tok"
zhios_third_party_utils "code.fnuoos.com/go_rely_warehouse/zyos_go_third_party_api.git/utils"
"encoding/json"
"fmt"
"github.com/jinzhu/copier"
"github.com/tidwall/gjson"
"strings"
"time"
)

func TikTokTask() {
//doc, _ := es.FirstDoc(md2.ZhiosTikTokTaskEsIndex, "tik_tok_task_tt99fdef4006c36ff001")
//fmt.Println(string(doc.Source))
//return
//es.CreateIndexIfNotExists(md2.ZhiosTikTokTaskEsIndex, md2.ZhiosTikTokTaskEsMapping)
//es.CreateIndexIfNotExists(md2.ZhiosTikTokTaskDetailEsIndex, md2.ZhiosTikTokTaskDetailEsMapping)
appidList := offical.MasterListCfgGetOneData("0", "tik_tok_task_appid")
split := strings.Split(appidList, ";")
for _, v := range split {
appidTime := offical.MasterListCfgGetOneData("0", "tik_tok_task_appid_time_"+v)
if appidTime == "" {
appidTime = utils.Int64ToStr(time.Now().Unix())
}
startTime := utils.StrToInt64(appidTime)
endTime := startTime + 7*86400
if endTime > time.Now().Unix() {
endTime = time.Now().Unix()
}
param := map[string]interface{}{
"appid": v,
"create_start_time": startTime,
"create_end_time": endTime,
}
api, _ := tik_tok.TaskApi("query_app_task_id/", TikTokTaskToken(), zhios_third_party_utils.SerializeStr(param))
taskIds := gjson.Get(api, "data.task_ids").String()
fmt.Println(taskIds)
if taskIds == "" || taskIds == "[]" {
fmt.Println(endTime)
offical.MasterListCfgSave("0", "tik_tok_task_appid_time_"+v, utils.Int64ToStr(endTime))
continue
}
commAddTask("tik_tok_task_"+v, taskIds)
var tmp = make([]int64, 0)
json.Unmarshal([]byte(taskIds), &tmp)
getTaskDetail(v, tmp)
fmt.Println(endTime)
offical.MasterListCfgSave("0", "tik_tok_task_appid_time_"+v, utils.Int64ToStr(endTime))
}
}
func getTaskDetail(appId string, tmp []int64) {
for _, v := range tmp {
param := map[string]interface{}{
"appid": appId,
"query_params_type": "1",
"query_params_content": utils.Int64ToStr(v),
"page_no": "1",
"page_size": "10",
}
api, _ := tik_tok.TaskApi("query_task_info/", TikTokTaskToken(), zhios_third_party_utils.SerializeStr(param))
detail := gjson.Get(api, "data.tasks").String()
if detail == "" {
fmt.Println("失败", v)
continue
}
var tmpDetail = make([]md.TikTokTaskDetail, 0)
json.Unmarshal([]byte(detail), &tmpDetail)
for _, v1 := range tmpDetail {
var tmpIn md.TikTokTaskDetailSecond
err := copier.Copy(&tmpIn, &v1)
fmt.Println(err)
tmpIn.OrientedTalentRelList = utils.SerializeStr(v1.OrientedTalentRelList)
tmpIn.ReferMaCaptures = utils.SerializeStr(v1.ReferMaCaptures)
tmpIn.TaskTags = utils.SerializeStr(v1.TaskTags)
tmpIn.ReferVideoCaptures = utils.SerializeStr(v1.ReferVideoCaptures)
ex := strings.Split(tmpIn.StartPage, "bookId=")
if len(ex) > 1 {
exSecond := strings.Split(ex[1], "&")
tmpIn.VideoId = exSecond[0]
}
if tmpIn.VideoId == "" {
fmt.Println("失败", tmpIn)
continue
}
commAddTaskDetail(utils.Int64ToStr(tmpIn.TaskId), tmpIn)
}
}
}
func commAddTask(uniqueId string, taskIds string) {
doc, _ := es.FirstDoc(md2.ZhiosTikTokTaskEsIndex, uniqueId)
if doc == nil {
var tmpData = map[string]string{
"task_ids": taskIds,
}
createDocRet, err := es.CreateDoc(md2.ZhiosTikTokTaskEsIndex, uniqueId, tmpData)
if err != nil {
return
}
fmt.Printf("CreateDoc ==> %+v \n\n", createDocRet)
} else {
source := doc.Source
tmpData := make(map[string]string)
json.Unmarshal(source, &tmpData)

var tmpOld = make([]int64, 0)
json.Unmarshal([]byte(tmpData["task_ids"]), &tmpOld)

var tmp = make([]int64, 0)
json.Unmarshal([]byte(taskIds), &tmp)
tmp = utils.MergeArr(tmpOld, tmp)
tmp = utils.UniqueArr(tmp)
tmpData = map[string]string{
"task_ids": utils.SerializeStr(tmp),
}
createDocRet, err := es.UpdateDoc(md2.ZhiosTikTokTaskEsIndex, uniqueId, tmpData)
if err != nil {
return
}
fmt.Printf("CreateDoc ==> %+v \n\n", createDocRet)
}
}
func commAddTaskDetail(uniqueId string, tmp md.TikTokTaskDetailSecond) {
doc, _ := es.FirstDoc(md2.ZhiosTikTokTaskDetailEsIndex, uniqueId)
if doc == nil {

createDocRet, err := es.CreateDoc(md2.ZhiosTikTokTaskDetailEsIndex, uniqueId, tmp)
if err != nil {
return
}
fmt.Printf("CreateDoc ==> %+v \n\n", createDocRet)
} else {
createDocRet, err := es.UpdateDoc(md2.ZhiosTikTokTaskDetailEsIndex, uniqueId, tmp)
if err != nil {
return
}
fmt.Printf("CreateDoc ==> %+v \n\n", createDocRet)
}
}

func TikTokTaskToken() string {
tikTokOpenAppkey := offical.MasterListCfgGetOneData("0", "tik_tok_task_open_appkey")
tikTokOpenAppSecret := offical.MasterListCfgGetOneData("0", "tik_tok_task_open_app_secret")
args := map[string]string{
"appkey": tikTokOpenAppkey,
"appSecret": tikTokOpenAppSecret,
}
key := "tikTok_client_" + args["appkey"]
tokeStr, err := cache.GetString(key)
if tokeStr == "" || err != nil {
token := tik_tok.GetClientToken(args)
if token["tik_tok_acc_token"] != "" {
tokeStr = token["tik_tok_acc_token"]
cache.SetEx(key, token["tik_tok_acc_token"], utils.StrToInt(token["expires_in"]))
}
}
return tokeStr
}

+ 94
- 0
app/task/svc/svc_tik_tok_task_money.go View File

@@ -0,0 +1,94 @@
package svc

import (
"applet/app/db"
"applet/app/db/model"
"applet/app/task/md"
"applet/app/utils"
"code.fnuoos.com/go_rely_warehouse/zyos_go_third_party_api.git/tik_tok"
zhios_third_party_utils "code.fnuoos.com/go_rely_warehouse/zyos_go_third_party_api.git/utils"
"encoding/json"
"fmt"
"github.com/tidwall/gjson"
"strings"
"time"
)

func TikTokTaskMoney(types string) {
endTime := time.Now().Unix()
startTime := endTime - 89*86400
now := zhios_third_party_utils.GetTimeRange("today")
if types == "yestday" {
now["start"] = now["start"] - 10
}
if types == "now" {
now["start"] = now["start"] - 10 - 86400
}
date := time.Unix(now["start"], 0).Format("2006-01-02")
p := 1
for {
param := map[string]interface{}{
"page_no": p,
"page_size": 100,
"video_publish_start_time": startTime,
"billing_date": date,
"video_publish_end_time": endTime,
}
api, _ := tik_tok.TaskApi("query_agency_video_daily_data/", TikTokTaskToken(), zhios_third_party_utils.SerializeStr(param))
fmt.Println(api)
orderStr := gjson.Get(api, "data.results").String()
if orderStr == "" {
break
}
var order = make([]md.TikTokTaskOrder, 0)
json.Unmarshal([]byte(orderStr), &order)
for _, v := range order {
discount := v.BillingGMV1D - v.BillingRefundGMV1D
if discount < 0 {
discount = 0
}
commission := discount - v.TalentProfit1D - discount*15
fee := discount - commission
oid := "douyin" + zhios_third_party_utils.Int64ToStr(v.VideoId) + date
oid = strings.ReplaceAll(oid, "_", "")
oid = strings.ReplaceAll(oid, "-", "")
oid = strings.ReplaceAll(oid, " ", "")
oid = strings.ReplaceAll(oid, ":", "")
var tikTokData model.TikTokPlanTeam
db.ZhimengDb.Where("team_id=? and tik_tok_id=?", v.AgentID, v.DouyinID).Get(&tikTokData)
if tikTokData.Id == 0 || tikTokData.Ext == "" {
continue
}
split := strings.Split(tikTokData.Ext, "_")
var tmp = model.PlayletSaleOrder{
Uid: split[0],
SubUid: utils.StrToInt(split[1]),
Data: utils.SerializeStr(v),
Oid: oid,
Amount: utils.Float64ToStr(float64(discount) / 100),
Commission: utils.Float64ToStr(float64(commission) / 100),
CreateTime: utils.TimeParseStd(date + " 00:00:00"),
UpdateTime: time.Now(),
Title: v.VideoTitle,
VideoType: "douyin",
PlatformType: "dianzhong",
GoodsType: "playlet",
OrdType: "video",
ExtendUid: v.DouyinID + "_" + v.AgentID,
PlatformFee: utils.Float64ToStr(float64(fee) / 100),
}
playletSaleOrderDb := db.PlayletSaleOrderDb{}
playletSaleOrderDb.Set()
ord := playletSaleOrderDb.GetPlayletVideoOrderByOid(tmp.Oid, tmp.OrdType)
tmp.Status = "订单付款"
if ord != nil {
playletSaleOrderDb.PlayletVideoOrderUpdate(ord.Id, &tmp)
} else {
tmp.CustomOid = utils.OrderUUID(tmp.SubUid)
playletSaleOrderDb.PlayletVideoOrderInsert(&tmp)
}
}
p++
}
return
}

+ 49
- 0
app/task/svc/svc_tik_tok_task_relate.go View File

@@ -0,0 +1,49 @@
package svc

import (
"applet/app/db"
"applet/app/db/model"
"applet/app/task/md"
"applet/app/utils"
"code.fnuoos.com/go_rely_warehouse/zyos_go_third_party_api.git/tik_tok"
zhios_third_party_utils "code.fnuoos.com/go_rely_warehouse/zyos_go_third_party_api.git/utils"
"encoding/json"
"github.com/tidwall/gjson"
"time"
)

func TikTokTaskRelate() {
p := 1
for {
param := map[string]interface{}{
"page_no": p,
"page_size": 100,
}
api, _ := tik_tok.TaskApi("get_agency_user_bind_record/", TikTokTaskToken(), zhios_third_party_utils.SerializeStr(param))
user := gjson.Get(api, "data.results").String()
if user == "" {
break
}
var userData = make([]md.TikTokTaskRelate, 0)
json.Unmarshal([]byte(user), &userData)
if len(userData) == 0 {
break
}
for _, v := range userData {
var tmp model.TikTokPlanTeam
db.ZhimengDb.Where("team_id=? and tik_tok_id=?", v.AgentId, v.DouyinId).Get(&tmp)
if tmp.Id == 0 {
tmp = model.TikTokPlanTeam{
TeamId: utils.Int64ToStr(v.AgentId),
Ext: v.AgencyTalentUid,
TikTokId: v.DouyinId,
IsShow: 1,
Time: time.Unix(int64(v.BindTime), 0),
}
db.ZhimengDb.Insert(&tmp)
}
}
p++
}

}

+ 22
- 0
app/task/task_dianzhong_kuaishou_money.go View File

@@ -0,0 +1,22 @@
package task

import (
"applet/app/task/svc"
"math/rand"
"time"
)

//
func taskDianzhongKuaishouMoney() {
for {
if len(ch) > workerNum {
time.Sleep(time.Millisecond * time.Duration(rand.Intn(1000)))
} else {
goto START
}
}
START:
ch <- 1
svc.DianzhongKuaishouMoney()
<-ch
}

+ 22
- 0
app/task/task_tik_tok_task.go View File

@@ -0,0 +1,22 @@
package task

import (
"applet/app/task/svc"
"math/rand"
"time"
)

//
func taskTikTokTask() {
for {
if len(ch) > workerNum {
time.Sleep(time.Millisecond * time.Duration(rand.Intn(1000)))
} else {
goto START
}
}
START:
ch <- 1
svc.TikTokTask()
<-ch
}

+ 22
- 0
app/task/task_tik_tok_task_money.go View File

@@ -0,0 +1,22 @@
package task

import (
"applet/app/task/svc"
"math/rand"
"time"
)

//
func taskTikTokTaskMoney() {
for {
if len(ch) > workerNum {
time.Sleep(time.Millisecond * time.Duration(rand.Intn(1000)))
} else {
goto START
}
}
START:
ch <- 1
svc.TikTokTaskMoney("now")
<-ch
}

+ 22
- 0
app/task/task_tik_tok_task_money_by_yestday.go View File

@@ -0,0 +1,22 @@
package task

import (
"applet/app/task/svc"
"math/rand"
"time"
)

//
func taskTikTokTaskMoneyByYestday() {
for {
if len(ch) > workerNum {
time.Sleep(time.Millisecond * time.Duration(rand.Intn(1000)))
} else {
goto START
}
}
START:
ch <- 1
svc.TikTokTaskMoney("yestday")
<-ch
}

+ 22
- 0
app/task/task_tik_tok_task_relate.go View File

@@ -0,0 +1,22 @@
package task

import (
"applet/app/task/svc"
"math/rand"
"time"
)

//
func taskTikTokTaskRelate() {
for {
if len(ch) > workerNum {
time.Sleep(time.Millisecond * time.Duration(rand.Intn(1000)))
} else {
goto START
}
}
START:
ch <- 1
svc.TikTokTaskRelate()
<-ch
}

+ 25
- 0
app/utils/string.go View File

@@ -153,3 +153,28 @@ func JoinStringsInASCII(data map[string]string, sep string, onlyValues, includeE
} }
return strings.Join(list, sep) return strings.Join(list, sep)
} }

// 合并数组
func MergeArr(a, b []int64) []int64 {
var arr []int64
for _, i := range a {
arr = append(arr, i)
}
for _, j := range b {
arr = append(arr, j)
}
return arr
}

// 去重
func UniqueArr(m []int64) []int64 {
d := make([]int64, 0)
tempMap := make(map[int64]bool, len(m))
for _, v := range m { // 以值作为键名
if tempMap[v] == false {
tempMap[v] = true
d = append(d, v)
}
}
return d
}

+ 2
- 1
go.mod View File

@@ -4,7 +4,7 @@ go 1.15


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.20231018082154-13bedd001842
code.fnuoos.com/go_rely_warehouse/zyos_go_third_party_api.git v1.1.21-0.20231023083145-a61813d50051
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
@@ -19,6 +19,7 @@ require (
github.com/go-redis/redis v6.15.9+incompatible github.com/go-redis/redis v6.15.9+incompatible
github.com/go-sql-driver/mysql v1.6.0 github.com/go-sql-driver/mysql v1.6.0
github.com/gomodule/redigo v2.0.0+incompatible github.com/gomodule/redigo v2.0.0+incompatible
github.com/jinzhu/copier v0.3.5
github.com/makiuchi-d/gozxing v0.1.1 github.com/makiuchi-d/gozxing v0.1.1
github.com/mcuadros/go-defaults v1.2.0 github.com/mcuadros/go-defaults v1.2.0
github.com/qiniu/api.v7/v7 v7.8.2 github.com/qiniu/api.v7/v7 v7.8.2


Loading…
Cancel
Save