Browse Source

初稿-链接-数据自动审核

Ethan 1 month ago
parent
commit
2b37d01b46
5 changed files with 271 additions and 0 deletions
  1. 36 0
      app/entity/data_info.go
  2. 37 0
      app/entity/link_info.go
  3. 36 0
      app/entity/sketch_info.go
  4. 158 0
      app/schedule/auto_task_execute.go
  5. 4 0
      main.go

+ 36 - 0
app/entity/data_info.go

@@ -0,0 +1,36 @@
+// Code generated by sql2gorm. DO NOT EDIT.
+package entity
+
+import (
+	"time"
+)
+
+type DataInfo struct {
+	DataID            int64     `gorm:"column:data_id;primary_key;AUTO_INCREMENT"` // 脚本id
+	TaskID            string    `gorm:"column:task_id;NOT NULL"`                   // 任务id
+	PlayNumber        int64     `gorm:"column:play_number;NOT NULL"`               // 播放量/阅读量
+	LikeNumber        int64     `gorm:"column:like_number;NOT NULL"`               // 点赞数
+	CommentNumber     int64     `gorm:"column:comment_number;NOT NULL"`            // 评论数
+	CollectNumber     int64     `gorm:"column:collect_number;NOT NULL"`            // 收藏数
+	PhotoUrl          string    `gorm:"column:photo_url;NOT NULL"`                 // 数据截图url
+	ReviseOpinion     string    `gorm:"column:revise_opinion"`                     // 审核意见
+	IsSubmit          int64     `gorm:"column:is_submit;NOT NULL"`                 // 是否提交
+	IsReview          int64     `gorm:"column:is_review;default:0;NOT NULL"`       // 是否审核
+	IsOk              int64     `gorm:"column:is_ok;NOT NULL"`                     // 是否合格
+	CreateAt          time.Time `gorm:"column:create_at;NOT NULL"`                 // 创建时间
+	SubmitAt          time.Time `gorm:"column:submit_at"`                          // 提交时间
+	AgreeAt           time.Time `gorm:"column:agree_at"`                           // 同意时间
+	RejectAt          time.Time `gorm:"column:reject_at"`                          // 驳回时间
+	AutoAgreeAt       time.Time `gorm:"column:auto_agree_at"`                      // 结案自动处理时间
+	AutoDataBreakAt   time.Time `gorm:"column:auto_data_break_at"`                 // 结案违约自动处理时间
+	BOperator         string    `gorm:"column:b_operator"`                         // 操作人id
+	BOperatorType     int64     `gorm:"column:b_operator_type;default:0"`          // 商家操作人类型,1商家用户,2商家子账号,3管理后台
+	ForwardNumber     int64     `gorm:"column:forward_number;default:0;NOT NULL"`
+	DataMissingStatus int64     `gorm:"column:data_missing_status"` // 未传数据违约状态,0无违约,1有违约
+	TalentID          string    `gorm:"column:talent_id;NOT NULL"`
+	TaskType          int64     `gorm:"column:task_type;NOT NULL"` // 任务类型(1种草 2本地生活)
+}
+
+func (m *DataInfo) TableName() string {
+	return "younggee_data_info"
+}

+ 37 - 0
app/entity/link_info.go

@@ -0,0 +1,37 @@
+// Code generated by sql2gorm. DO NOT EDIT.
+package entity
+
+import (
+	"time"
+)
+
+// 种草任务链接信息
+type LinkInfo struct {
+	LinkID  int64  `gorm:"column:link_id;primary_key;AUTO_INCREMENT"` // 链接id
+	TaskID  string `gorm:"column:task_id;NOT NULL"`                   // 任务id
+	LinkUrl string `gorm:"column:link_url;NOT NULL"`                  // 上传链接url
+
+	PhotoUrl        string    `gorm:"column:photo_url;NOT NULL"`           // 上传截图url
+	ReviseOpinion   string    `gorm:"column:revise_opinion"`               // 审核意见
+	IsSubmit        int64     `gorm:"column:is_submit;NOT NULL"`           // 是否提交
+	IsReview        int64     `gorm:"column:is_review;default:0;NOT NULL"` // 是否审核
+	IsOk            int64     `gorm:"column:is_ok;NOT NULL"`               // 是否合格
+	CreateAt        time.Time `gorm:"column:create_at"`                    // 创建时间
+	SubmitAt        time.Time `gorm:"column:submit_at"`                    // 提交时间
+	AgreeAt         time.Time `gorm:"column:agree_at"`                     // 同意时间
+	RejectAt        time.Time `gorm:"column:reject_at"`                    // 驳回时间
+	AutoAgreeAt     time.Time `gorm:"column:auto_agree_at"`                // 发布审核自动处理时间
+	AutoDataBreakAt time.Time `gorm:"column:auto_data_break_at"`           // 结案违约自动处理时间
+	AutoLinkBreakAt time.Time `gorm:"column:auto_link_break_at"`           // 链接违约自动处理时间
+	BOperator       string    `gorm:"column:b_operator;NOT NULL"`          // 操作人id
+	BOperatorType   int64     `gorm:"column:b_operator_type;default:0"`    // 商家操作人类型,1商家用户,2商家子账号,3管理后台
+	//LinkType          int64       `gorm:"column:link_type;default:0;NOT NULL"` // 1、2分别表示种草和本地生活
+	PlatformID        int64  `gorm:"column:platform_id;NOT NULL"` // 平台id
+	TalentID          string `gorm:"column:talent_id;NOT NULL"`   // 达人id
+	LinkMissingStatus int64  `gorm:"column:link_missing_status"`  // 未发作品违约状态,0无违约,1有违约
+	TaskType          int64  `gorm:"column:task_type;NOT NULL"`   // 任务类型(1种草 2本地生活)
+}
+
+func (m *LinkInfo) TableName() string {
+	return "younggee_link_info"
+}

+ 36 - 0
app/entity/sketch_info.go

@@ -0,0 +1,36 @@
+// Code generated by sql2gorm. DO NOT EDIT.
+package entity
+
+import (
+	"time"
+)
+
+// 种草任务初稿信息
+type SketchInfo struct {
+	SketchID          int64     `gorm:"column:sketch_id;primary_key;AUTO_INCREMENT"` // 初稿id
+	TaskID            string    `gorm:"column:task_id;NOT NULL"`                     // 任务id
+	Title             string    `gorm:"column:title"`                                // 标题
+	Type              int64     `gorm:"column:type"`                                 // 初稿形式,1为图片,2为视频
+	Content           string    `gorm:"column:content"`                              // 正文
+	ReviseOpinion     string    `gorm:"column:revise_opinion"`                       // 反馈意见
+	IsSubmit          int64     `gorm:"column:is_submit;NOT NULL"`                   // 是否提交
+	IsReview          int64     `gorm:"column:is_review;default:0;NOT NULL"`         // 是否审核
+	IsOk              int64     `gorm:"column:is_ok;NOT NULL"`                       // 是否合格(0,不合格,1合格
+	CreateAt          time.Time `gorm:"column:create_at;NOT NULL"`                   // 创建时间
+	AgreeAt           time.Time `gorm:"column:agree_at"`                             // 同意时间
+	RejectAt          time.Time `gorm:"column:reject_at"`                            // 驳回时间
+	SubmitAt          time.Time `gorm:"column:submit_at"`                            // 提交时间
+	AutoAgreeAt       time.Time `gorm:"column:auto_agree_at"`                        // 初稿自动审核时间
+	AutoLinkBreakAt   time.Time `gorm:"column:auto_link_break_at"`                   // 链接违约自动处理时间
+	AutoSketchBreakAt time.Time `gorm:"column:auto_sketch_break_at"`                 // 初稿违约自动处理时间
+	BOperator         string    `gorm:"column:b_operator"`                           // 商家确定达人操作人ID
+
+	BOperatorType       int64  `gorm:"column:b_operator_type;default:0"` // 商家操作人类型,1商家用户,2商家子账号,3管理后台
+	TalentID            string `gorm:"column:talent_id;NOT NULL"`
+	SketchMissingStatus int64  `gorm:"column:sketch_missing_status"` // 未传初稿违约状态,0无违约,1有违约
+	TaskType            int64  `gorm:"column:task_type;NOT NULL"`    // 任务类型(1种草 2本地生活)
+}
+
+func (m *SketchInfo) TableName() string {
+	return "younggee_sketch_info"
+}

+ 158 - 0
app/schedule/auto_task_execute.go

@@ -0,0 +1,158 @@
+package schedule
+
+import (
+	"github.com/robfig/cron/v3"
+	"log"
+	"time"
+	"youngee_b_api/app/dao"
+	"youngee_b_api/app/entity"
+)
+
+func AutoTaskExecute() error {
+	// 新建一个定时任务对象
+	crontab := cron.New(cron.WithSeconds()) // 精确到秒
+	spec := "0 */10 * * * ?"                //cron表达式,每10分钟一次
+
+	// 添加定时任务
+	// 定时任务1  初稿未审稿自动执行
+	_, err1 := crontab.AddFunc(spec, AutoSketchExecuteTask)
+	if err1 != nil {
+		return err1
+	}
+	// 定时任务2  链接未质检自动执行
+	_, err2 := crontab.AddFunc(spec, AutoLinkExecuteTask)
+	if err2 != nil {
+		return err2
+	}
+	// 定时任务3  数据未质检自动执行
+	_, err3 := crontab.AddFunc(spec, AutoDataExecuteTask)
+	if err3 != nil {
+		return err3
+	}
+
+	// 启动定时器
+	crontab.Start()
+	// 定时任务是另起协程执行的,这里使用 select 简单阻塞.需要根据实际情况进行控制
+	//select {} //阻塞主线程停止
+	return nil
+}
+
+// 定时任务1  初稿未审稿自动执行
+func AutoSketchExecuteTask() {
+	log.Println("AutoSketchExecuteTask running Start, Time :", time.Now())
+	var sketchInfos []*entity.SketchInfo
+	err := dao.Db.Model(&entity.SketchInfo{}).Where("is_review = ? and is_ok = ?", 0, 0).Select("sketch_id, task_id, auto_agree_at, task_type").Find(&sketchInfos).Error
+	if err != nil {
+		log.Println(err.Error())
+		return
+	}
+	var sketchIds []int64
+	var projectTaskIds []string
+	var localTaskIds []string
+	for _, sketchInfo := range sketchInfos {
+		sketchId := sketchInfo.SketchID
+		if time.Now().After(sketchInfo.AgreeAt) {
+			sketchIds = append(sketchIds, sketchId)
+			if sketchInfo.TaskType == 1 {
+				projectTaskIds = append(projectTaskIds, sketchInfo.TaskID)
+			} else if sketchInfo.TaskType == 2 {
+				localTaskIds = append(localTaskIds, sketchInfo.TaskID)
+			}
+		}
+	}
+	dao.Db.Model(&entity.SketchInfo{}).Where("sketch_id in ?", sketchIds).Updates(&entity.SketchInfo{
+		IsReview:      1,
+		IsOk:          1,
+		AgreeAt:       time.Now(),
+		BOperatorType: 1,
+	})
+	dao.Db.Model(&entity.ProjectTaskInfo{}).Where("task_id in ?", projectTaskIds).Updates(&entity.ProjectTaskInfo{
+		TaskStage:    11,
+		SketchStatus: 5,
+	})
+	dao.Db.Model(&entity.LocalLifeTaskInfo{}).Where("task_id in ?", localTaskIds).Updates(&entity.LocalLifeTaskInfo{
+		TaskStage:    11,
+		SketchStatus: 5,
+	})
+	log.Println("AutoSketchExecuteTask running End, Time :", time.Now())
+}
+
+// 定时任务2  链接未质检自动执行
+func AutoLinkExecuteTask() {
+	log.Println("AutoLinkExecuteTask running Start, Time :", time.Now())
+	var LinInfos []*entity.LinkInfo
+	err := dao.Db.Model(&entity.LinkInfo{}).Where("is_review = ? and is_ok = ?", 0, 0).Select("link_id, task_id, auto_agree_at, task_type").Find(&LinInfos).Error
+	if err != nil {
+		log.Println(err.Error())
+		return
+	}
+	var linkIds []int64
+	var projectTaskIds []string
+	var localTaskIds []string
+	for _, LinInfo := range LinInfos {
+		linkId := LinInfo.LinkID
+		if time.Now().After(LinInfo.AgreeAt) {
+			linkIds = append(linkIds, linkId)
+			if LinInfo.TaskType == 1 {
+				projectTaskIds = append(projectTaskIds, LinInfo.TaskID)
+			} else if LinInfo.TaskType == 2 {
+				localTaskIds = append(localTaskIds, LinInfo.TaskID)
+			}
+		}
+	}
+	dao.Db.Model(&entity.LinkInfo{}).Where("link_id in ?", linkIds).Updates(&entity.LinkInfo{
+		IsReview:      1,
+		IsOk:          1,
+		AgreeAt:       time.Now(),
+		BOperatorType: 1,
+	})
+	dao.Db.Model(&entity.ProjectTaskInfo{}).Where("task_id in ?", projectTaskIds).Updates(&entity.ProjectTaskInfo{
+		TaskStage:  13,
+		LinkStatus: 5,
+	})
+	dao.Db.Model(&entity.LocalLifeTaskInfo{}).Where("task_id in ?", localTaskIds).Updates(&entity.LocalLifeTaskInfo{
+		TaskStage:  13,
+		LinkStatus: 5,
+	})
+	log.Println("AutoLinkExecuteTask running End, Time :", time.Now())
+}
+
+// 定时任务3  数据未质检自动执行
+func AutoDataExecuteTask() {
+	log.Println("AutoDataExecuteTask running Start, Time :", time.Now())
+	var dataInfos []*entity.DataInfo
+	err := dao.Db.Model(&entity.DataInfo{}).Where("is_review = ? and is_ok = ?", 0, 0).Select("data_id, task_id, auto_agree_at, task_type").Find(&dataInfos).Error
+	if err != nil {
+		log.Println(err.Error())
+		return
+	}
+	var dataIds []int64
+	var projectTaskIds []string
+	var localTaskIds []string
+	for _, dataInfo := range dataInfos {
+		dataId := dataInfo.DataID
+		if time.Now().After(dataInfo.AgreeAt) {
+			dataIds = append(dataIds, dataId)
+			if dataInfo.TaskType == 1 {
+				projectTaskIds = append(projectTaskIds, dataInfo.TaskID)
+			} else if dataInfo.TaskType == 2 {
+				localTaskIds = append(localTaskIds, dataInfo.TaskID)
+			}
+		}
+	}
+	dao.Db.Model(&entity.DataInfo{}).Where("data_id in ?", dataIds).Updates(&entity.DataInfo{
+		IsReview:      1,
+		IsOk:          1,
+		AgreeAt:       time.Now(),
+		BOperatorType: 1,
+	})
+	dao.Db.Model(&entity.ProjectTaskInfo{}).Where("task_id in ?", projectTaskIds).Updates(&entity.ProjectTaskInfo{
+		TaskStage:  15,
+		DataStatus: 5,
+	})
+	dao.Db.Model(&entity.LocalLifeTaskInfo{}).Where("task_id in ?", localTaskIds).Updates(&entity.LocalLifeTaskInfo{
+		TaskStage:  15,
+		DataStatus: 5,
+	})
+	log.Println("AutoDataExecuteTask running End, Time :", time.Now())
+}

+ 4 - 0
main.go

@@ -40,5 +40,9 @@ func main() {
 	if err4 != nil {
 		log.Println("schedule AutoTaskSettle error:", err4.Error())
 	}
+	err5 := schedule.AutoTaskExecute()
+	if err5 != nil {
+		log.Println("schedule AutoTaskExecute error:", err5.Error())
+	}
 	r.Run(addr) // listen and serve on 0.0.0.0:8080 (for windows "localhost:8080")
 }