فهرست منبع

feat:增加到期企业修改状态定时任务

zhangxinlei1996 3 سال پیش
والد
کامیت
492e67f914
1فایلهای تغییر یافته به همراه96 افزوده شده و 0 حذف شده
  1. 96 0
      rpc/timetask/timetask.go

+ 96 - 0
rpc/timetask/timetask.go

@@ -0,0 +1,96 @@
+package timetask
+
+import (
+	"fmt"
+	"log"
+	"strconv"
+	"strings"
+	"time"
+
+	"app.yhyue.com/moapp/jybase/common"
+	"bp.jydev.jianyu360.cn/BaseService/userCenter/entity"
+	"bp.jydev.jianyu360.cn/BaseService/userCenter/rpc/internal/config"
+)
+
+//已到期企业定时任务
+func Run() {
+	if config.ConfigJson.IsRun {
+		go checkEntIsExpire()
+		log.Println(config.ConfigJson.CheckEntIsExpire)
+	}
+}
+
+func checkEntIsExpire() {
+	crontab(false, config.ConfigJson.CheckEntIsExpire, func() {
+		defer common.Catch()
+		log.Println("定时任务更新认证已到期企业开始")
+		now := time.Now().Format(entity.Date_Full_Layout)
+		rdata := entity.Mysql.SelectBySql(`select id,name,phone,auth_endTime from entniche_info where auth_endTime < ? and auth_status =1;`, now)
+		if len(*rdata) > 0 && rdata != nil {
+			log.Println(fmt.Sprintf("本轮更新已到期企业数量为:%v。", len(*rdata)))
+			for _, v := range *rdata {
+				log.Println(fmt.Sprintf("已到期企业id:%v, 企业名称: %s, 企业管理员手机号:%s", v["id"], v["name"], v["phone"]))
+			}
+		}
+		//更新企业
+		ok := entity.Mysql.UpdateOrDeleteBySql(`UPDATE entniche_info SET auth_status=-2 where auth_endTime < ?  and auth_status =1 `, now)
+		if ok < 0 {
+			log.Println("更新已到期企业失败")
+		}
+		log.Println("定时任务更新认证已到期企业结束")
+	})
+}
+
+//
+func crontab(flag bool, c string, f func()) {
+	array := strings.Split(c, ":")
+	if len(array) != 2 {
+		log.Fatalln("定时任务参数错误!", c)
+	}
+	if flag {
+		go f()
+	}
+	now := time.Now()
+	t := time.Date(now.Year(), now.Month(), now.Day(), common.IntAll(array[0]), common.IntAll(array[1]), 0, 0, time.Local)
+	if t.Before(now) {
+		t = t.AddDate(0, 0, 1)
+	}
+	timer := time.NewTimer(t.Sub(now))
+	for {
+		select {
+		case <-timer.C:
+			go f()
+			timer.Reset(24 * time.Hour)
+		}
+	}
+}
+
+//
+func crontabByTicker(flag bool, c string, f func()) {
+	if c == "0" {
+		log.Println("定时任务参数有误:", c)
+		return
+	}
+	countdown := 5 * 60
+	if strings.Contains(c, "h") {
+		cStr := strings.Split(c, "h")[0]
+		countdown, _ = strconv.Atoi(cStr)
+		countdown = countdown * 60 * 60
+	} else {
+		countdown, _ = strconv.Atoi(c)
+		countdown = countdown * 60
+	}
+	if flag {
+		go f()
+	}
+	ticker := time.NewTicker(time.Duration(countdown) * time.Second)
+	go func(t *time.Ticker) {
+		for {
+			select {
+			case <-t.C:
+				go f()
+				fmt.Println("get ticker", time.Now().Format("2006-01-02 15:04:05"))
+			}
+		}
+	}(ticker)
+}