Browse Source

超时未处理标签定时任务

Jianghan 1 year ago
parent
commit
d5a789558c
4 changed files with 113 additions and 18 deletions
  1. 4 2
      config.json
  2. 29 16
      config/config.go
  3. 3 0
      timetask/timetask.go
  4. 77 0
      top/topnet.go

+ 4 - 2
config.json

@@ -25,7 +25,7 @@
 	},
 	},
 	"tidb":{
 	"tidb":{
 		"dbName": "crm",
 		"dbName": "crm",
-	    "address": "192.168.3.14:4000",
+	    "address": "192.168.3.149:14000",
 	    "userName": "root",
 	    "userName": "root",
 	    "passWord": "=PDT49#80Z!RVv52_z",
 	    "passWord": "=PDT49#80Z!RVv52_z",
 		"maxOpenConns": 5,
 		"maxOpenConns": 5,
@@ -34,5 +34,7 @@
 	"taskRule":"0 */5 * * * *",
 	"taskRule":"0 */5 * * * *",
 	"ruleTime": 600,
 	"ruleTime": 600,
 	"entid":26220,
 	"entid":26220,
-	"Appid":"jyJS9XQAIBAgVTSUhLDT56"
+	"appid":"jyJS9XQAIBAgVTSUhLDT56",
+	"taskTimeout": "0 0 1 * * ?",
+	"timeoutMode": 0
 }
 }

+ 29 - 16
config/config.go

@@ -21,6 +21,7 @@ var (
 	Mgo_Qyfw     *mongodb.MongodbSim
 	Mgo_Qyfw     *mongodb.MongodbSim
 	Middleground *middleground.Middleground
 	Middleground *middleground.Middleground
 	AreaCodeMap  map[string]string
 	AreaCodeMap  map[string]string
+	DateMap      = map[string]int{}
 )
 )
 
 
 const (
 const (
@@ -34,11 +35,13 @@ type config struct {
 		Qfw     *mongo `json:"qfw"`
 		Qfw     *mongo `json:"qfw"`
 		Qyfw    *mongo `json:"jyqyfw"`
 		Qyfw    *mongo `json:"jyqyfw"`
 	} `json:"mongodb"`
 	} `json:"mongodb"`
-	TaskRule string     `json:"taskRule"`
-	RuleTime int        `json:"ruleTime"`
-	Tidb     *mysqlConf `json:"tidb"`
-	EntId    int64      `json:"entId"`
-	Appid    string     `json:"appid"`
+	TaskRule    string     `json:"taskRule"`
+	RuleTime    int        `json:"ruleTime"`
+	Tidb        *mysqlConf `json:"tidb"`
+	EntId       int64      `json:"entId"`
+	Appid       string     `json:"appid"`
+	TaskTimeout string     `json:"taskTimeout"` // 超时未处理标签任务
+	TimeoutMode int        `json:"timeoutMode"` // 0: 自然日, 1: 工作日
 }
 }
 
 
 type mysqlConf struct {
 type mysqlConf struct {
@@ -59,7 +62,6 @@ type mongo struct {
 	Password string
 	Password string
 }
 }
 
 
-//
 func init() {
 func init() {
 
 
 	var ctx = gctx.New()
 	var ctx = gctx.New()
@@ -76,12 +78,13 @@ func init() {
 	Middleground = middleground.NewMiddleground(g.Cfg().MustGet(ctx, "etcd.hosts").Strings()).
 	Middleground = middleground.NewMiddleground(g.Cfg().MustGet(ctx, "etcd.hosts").Strings()).
 		RegUserCenter(g.Cfg().MustGet(ctx, "userCenterKey").String())
 		RegUserCenter(g.Cfg().MustGet(ctx, "userCenterKey").String())
 
 
-		//
+	//
 	AreaCodeMap = InitAreaCode()
 	AreaCodeMap = InitAreaCode()
+	InitDay()
 	log.Println("init end")
 	log.Println("init end")
 }
 }
 
 
-//初始化Tidb
+// 初始化Tidb
 func InitTidb(mysql_addr, mysql_pwd, dbname, username string) {
 func InitTidb(mysql_addr, mysql_pwd, dbname, username string) {
 	Tidb = &mysql.Mysql{
 	Tidb = &mysql.Mysql{
 		Address:      mysql_addr,
 		Address:      mysql_addr,
@@ -95,7 +98,7 @@ func InitTidb(mysql_addr, mysql_pwd, dbname, username string) {
 	log.Println("初始化 tidb1")
 	log.Println("初始化 tidb1")
 }
 }
 
 
-//初始化mongodb
+// 初始化mongodb
 func InitMongoBidding(addr, dbname, username, password string) {
 func InitMongoBidding(addr, dbname, username, password string) {
 	Mgo_Bidding = &mongodb.MongodbSim{
 	Mgo_Bidding = &mongodb.MongodbSim{
 		MongodbAddr: addr,
 		MongodbAddr: addr,
@@ -107,7 +110,7 @@ func InitMongoBidding(addr, dbname, username, password string) {
 	Mgo_Bidding.InitPool()
 	Mgo_Bidding.InitPool()
 }
 }
 
 
-//初始化mongodb
+// 初始化mongodb
 func InitMongoDatatag(addr, dbname string) {
 func InitMongoDatatag(addr, dbname string) {
 	Mgo_Datatag = &mongodb.MongodbSim{
 	Mgo_Datatag = &mongodb.MongodbSim{
 		MongodbAddr: addr,
 		MongodbAddr: addr,
@@ -117,7 +120,7 @@ func InitMongoDatatag(addr, dbname string) {
 	Mgo_Datatag.InitPool()
 	Mgo_Datatag.InitPool()
 }
 }
 
 
-//初始化mongodb
+// 初始化mongodb
 func InitMongoQfw(addr, dbname string) {
 func InitMongoQfw(addr, dbname string) {
 	Mgo_Qfw = &mongodb.MongodbSim{
 	Mgo_Qfw = &mongodb.MongodbSim{
 		MongodbAddr: addr,
 		MongodbAddr: addr,
@@ -127,7 +130,7 @@ func InitMongoQfw(addr, dbname string) {
 	Mgo_Qfw.InitPool()
 	Mgo_Qfw.InitPool()
 }
 }
 
 
-//初始化mongodb
+// 初始化mongodb
 func InitMongoQyfw(addr, dbname string) {
 func InitMongoQyfw(addr, dbname string) {
 	Mgo_Qyfw = &mongodb.MongodbSim{
 	Mgo_Qyfw = &mongodb.MongodbSim{
 		MongodbAddr: addr,
 		MongodbAddr: addr,
@@ -137,10 +140,10 @@ func InitMongoQyfw(addr, dbname string) {
 	Mgo_Qyfw.InitPool()
 	Mgo_Qyfw.InitPool()
 }
 }
 
 
-//5. crm.employ_info表area_code字段存一下,
-//根据城市/省份名称查询crm.d_area_code表的name字段,
-//取城市/省份行政区划代码code字段,有城市存城市的代码,没有城市存省份的代码,
-//d_area_code表数据不会变动,程序启动后表数据加到内存,内存查找就行了
+// 5. crm.employ_info表area_code字段存一下,
+// 根据城市/省份名称查询crm.d_area_code表的name字段,
+// 取城市/省份行政区划代码code字段,有城市存城市的代码,没有城市存省份的代码,
+// d_area_code表数据不会变动,程序启动后表数据加到内存,内存查找就行了
 func InitAreaCode() map[string]string {
 func InitAreaCode() map[string]string {
 	areaCodeMap := map[string]string{}
 	areaCodeMap := map[string]string{}
 	codeArea := Tidb.SelectBySql("SELECT code,name FROM d_Area_code order by id")
 	codeArea := Tidb.SelectBySql("SELECT code,name FROM d_Area_code order by id")
@@ -155,3 +158,13 @@ func InitAreaCode() map[string]string {
 	}
 	}
 	return areaCodeMap
 	return areaCodeMap
 }
 }
+
+func InitDay() {
+	//holidayRecords := Tidb.Find("holiday_records", nil, "", "", -1, -1)
+	holidayRecords := Tidb.SelectBySql("SELECT * FROM Jianyu_subjectdb.holiday_records")
+	if holidayRecords != nil && len(*holidayRecords) > 0 {
+		for _, m := range *holidayRecords {
+			DateMap[qu.ObjToString(m["date"])] = qu.IntAll(m["change"])
+		}
+	}
+}

+ 3 - 0
timetask/timetask.go

@@ -14,6 +14,9 @@ func Run() {
 
 
 	c.AddFunc(Config.TaskRule, top.UsermailETL)
 	c.AddFunc(Config.TaskRule, top.UsermailETL)
 
 
+	top.ExcTopInfo()
+	c.AddFunc(Config.TaskTimeout, top.ExcTopInfo)
+
 	c.Start()
 	c.Start()
 	defer c.Stop()
 	defer c.Stop()
 
 

+ 77 - 0
top/topnet.go

@@ -0,0 +1,77 @@
+package top
+
+import (
+	qu "app.yhyue.com/moapp/jybase/common"
+	"app.yhyue.com/moapp/jybase/date"
+	. "digitalMarketing/config"
+	"log"
+	"time"
+)
+
+// 拓普情报数据 超时未处理标签
+
+func ExcTopInfo() {
+	infos := Tidb.SelectBySql(`select id, source_id, is_dis, follow_state, create_time from employ_info WHERE is_dis = 0 AND follow_state is null AND is_timeout = 0 AND ent_id = ?`, Config.EntId)
+	log.Println("---ExcTopInfo-----", len(*infos))
+	for _, info := range *infos {
+		id := qu.Int64All(info["id"])
+		sid := qu.ObjToString(info["source_id"])
+		t := qu.Int64All(info["create_time"])
+		if isTimeout(t) {
+			Tidb.ExecBySql("UPDATE crm.employ_info SET is_timeout = 1 WHERE id = ?", id)
+			Tidb.ExecBySql("UPDATE crm.topnet_info SET is_timeout = 1 WHERE info_id = ?", sid)
+		}
+	}
+	log.Println("---ExcTopInfo-----, over")
+}
+
+func isTimeout(i int64) bool {
+	now := time.Now().Unix()
+	subTime := int64(0)
+	if Config.TimeoutMode == 0 {
+		subTime = now - 72*60*60*24
+	} else if Config.TimeoutMode == 1 {
+		index, count := 0, 0
+		for {
+			index++
+			previousDay := time.Now().AddDate(0, 0, -index)
+			if isWeekDay(previousDay) {
+				subTime = now - 24*60*60
+				count++
+			}
+			if count == 3 {
+				break
+			}
+		}
+	}
+	if subTime >= i {
+		return true
+	} else {
+		return false
+	}
+}
+
+func isWeekDay(pDay time.Time) (ok bool) {
+	if pDay.Weekday() == time.Sunday {
+		ok = false
+		for k, v := range DateMap {
+			if pDay.Format(date.Date_Short_Layout) == k {
+				if v == 2 {
+					ok = true
+				}
+				break
+			}
+		}
+	} else {
+		ok = true
+		for k, v := range DateMap {
+			if pDay.Format(date.Date_Short_Layout) == k {
+				if v == 1 {
+					ok = false
+				}
+				break
+			}
+		}
+	}
+	return ok
+}