From 8a68269c8f02afebe130949add70b993e33b4bdf Mon Sep 17 00:00:00 2001 From: Administrator Date: Sat, 4 May 2024 00:59:14 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E4=BA=86bug:1.=E5=8F=91?= =?UTF-8?q?=E9=80=81=E9=80=BB=E8=BE=91=E4=B9=8B=E5=90=8E=E6=9C=AA=E5=AF=B9?= =?UTF-8?q?=E8=BF=94=E5=9B=9E=E4=BD=93=E5=81=9A=E6=A0=A1=E9=AA=8C=EF=BC=8C?= =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E7=8A=B6=E6=80=81=E7=A0=81=E8=BE=93=E5=87=BA?= =?UTF-8?q?=E3=80=822.=E5=8E=BB=E6=8E=89=E5=BE=AA=E7=8E=AF=E5=AE=9A?= =?UTF-8?q?=E6=97=B6=E5=99=A8=E5=AF=BC=E8=87=B4=E7=9A=84bug=203.=E6=AF=8F?= =?UTF-8?q?=E6=AC=A1=E6=89=A7=E8=A1=8C=E5=AE=8C=E6=88=90=E5=90=8E=E8=BE=93?= =?UTF-8?q?=E5=87=BA=E8=B7=9D=E7=A6=BB=E4=B8=8B=E6=AC=A1=E6=89=A7=E8=A1=8C?= =?UTF-8?q?=E7=9A=84=E6=97=B6=E9=97=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- cmd/main.go | 68 ++++++++++++++++++++------------------------- qywechat/send.go | 11 +++++--- tools/checktime.go | 57 ++++++++++++++++++++++--------------- 周报.xlsx | Bin 7081 -> 6531 bytes 4 files changed, 71 insertions(+), 65 deletions(-) diff --git a/cmd/main.go b/cmd/main.go index 7041c1b..25ef980 100644 --- a/cmd/main.go +++ b/cmd/main.go @@ -3,13 +3,12 @@ package main import ( "flag" "fmt" + "github.com/jasonlvhit/gocron" "log" "time" "week/moonshot" "week/qywechat" "week/tools" - - "github.com/jasonlvhit/gocron" ) var maxRetries = 0 @@ -29,50 +28,43 @@ _/ ____\______ ____ _____ _____ ____ __ _ _______ ____ ____ flag.BoolVar(&liveMode, "livemode", false, "即时模式默认关闭") flag.Parse() if !liveMode { - fmt.Println("目前是定时任务模式") - if maxRetries < 3 { - for { - remainingTime := tools.RemainingTimeUntilNextFriday17() - if remainingTime <= 0 { - break // 当剩余时间小于等于0时跳出循环 - } - fmt.Printf("距离执行定时任务还剩 %d小时 %d分钟 %d秒\n", int(remainingTime.Hours()), int(remainingTime.Minutes())%60, int(remainingTime.Seconds())%60) - time.Sleep(time.Minute * 10) // 等待10分钟,然后更新 - } - // 定义任务,每周五的五点执行 - gocron.Every(1).Friday().At("17:00").Do(job) - // 开始定时任务 - <-gocron.Start() - - } else { - log.Fatalln("最大重试次数已到达3,退出") - } + log.Println("目前是定时任务模式") + // 定义任务,每周五的五点执行 + gocron.Every(1).Friday().At("17:00").Do(job) + // 开始定时任务 + <-gocron.Start() } else { - fmt.Println("目前是即时任务模式") + log.Println("目前是即时任务模式") job() } } func job() { - nowDate := now.Format("2006-01-02 15:04:05") + " " + now.Weekday().String() - log.Printf("开始执行任务,当前时间是:%v", nowDate) + //最多重试3次 + if maxRetries < 3 { + nowDate := now.Format("2006-01-02 15:04:05") + " " + now.Weekday().String() + log.Printf("开始执行任务,当前时间是:%v", nowDate) - err := moonshot.CreateExcel() - if err != nil { - maxRetries++ - log.Printf("执行失败,开始第%v次重试...", maxRetries) - log.Println("----------------------------------------------------------------------") - job() + err := moonshot.CreateExcel() + if err != nil { + maxRetries++ + log.Printf("执行失败,开始第%v次重试...", maxRetries) + log.Println("----------------------------------------------------------------------") + job() + } + repContent, err := moonshot.AiChat() + if err != nil { + maxRetries++ + log.Printf("执行失败,开始第%v次重试...", maxRetries) + log.Println("----------------------------------------------------------------------") + job() + } + qywechat.Send(repContent) + log.Printf("任务执行成功,当前时间是:%v", nowDate) + log.Printf("等待下次任务执行:%v", tools.TimeUntilFriday()) + } else { + log.Fatalln("最大重试次数已到达3,退出") } - repContent, err := moonshot.AiChat() - if err != nil { - maxRetries++ - log.Printf("执行失败,开始第%v次重试...", maxRetries) - log.Println("----------------------------------------------------------------------") - job() - } - qywechat.Send(repContent) - } diff --git a/qywechat/send.go b/qywechat/send.go index 4cf3d67..e227904 100644 --- a/qywechat/send.go +++ b/qywechat/send.go @@ -37,11 +37,14 @@ func Send(repContent string) { fmt.Println(repContent) resp, err := http.Post(webhookURL, "application/json", strings.NewReader(repContent)) if err != nil { - log.Fatalf("发送企业微信机器人失败,错误是: %v", err) + log.Printf("发送企业微信机器人失败,错误是: %v", err) } defer resp.Body.Close() - body, _ := io.ReadAll(resp.Body) - fmt.Println(resp.StatusCode, string(body)) - log.Println("发送企业微信机器人成功") + body, err := io.ReadAll(resp.Body) + if err != nil { + log.Printf("发送企业微信机器人失败,错误是: %v", err) + } + + log.Printf("发送企业微信机器人完成,状态码为:%v,返回体为:%v", resp.StatusCode, string(body)) } diff --git a/tools/checktime.go b/tools/checktime.go index 8fe9357..af2f185 100644 --- a/tools/checktime.go +++ b/tools/checktime.go @@ -1,29 +1,40 @@ package tools -import ( - "time" -) +import "time" -// 计算时间差值 +func TimeUntilFriday() time.Duration { + today := time.Now() + weekday := today.Weekday() + switch weekday { + case time.Monday: + friday := time.Date(today.Year(), today.Month(), today.Day()+4, 17, 0, 0, 0, today.Location()) + return friday.Sub(today) + case time.Tuesday: + friday := time.Date(today.Year(), today.Month(), today.Day()+3, 17, 0, 0, 0, today.Location()) + return friday.Sub(today) + case time.Wednesday: + friday := time.Date(today.Year(), today.Month(), today.Day()+2, 17, 0, 0, 0, today.Location()) + return friday.Sub(today) + case time.Thursday: + friday := time.Date(today.Year(), today.Month(), today.Day()+1, 17, 0, 0, 0, today.Location()) + return friday.Sub(today) + case time.Friday: + friday := time.Date(today.Year(), today.Month(), today.Day(), 17, 0, 0, 0, today.Location()) + if friday.Sub(today) > 0 { + return friday.Sub(today) + } else if friday.Sub(today) < 0 { + friday = time.Date(today.Year(), today.Month(), today.Day()+7, 17, 0, 0, 0, today.Location()) + return friday.Sub(today) + } else { + return 0 + } + case time.Saturday: + friday := time.Date(today.Year(), today.Month(), today.Day(), 17, 0, 0, 0, today.Location()) + return friday.Sub(today) + case time.Sunday: + friday := time.Date(today.Year(), today.Month(), today.Day()+5, 17, 0, 0, 0, today.Location()) + return friday.Sub(today) -func RemainingTimeUntilNextFriday17() time.Duration { - // 获取当前时间 - now := time.Now() - - // 计算下一个周五的时间 - nextFriday := now.AddDate(0, 0, (int(time.Friday)-int(now.Weekday())+7)%7) - - // 如果今天是周五,则直接返回距离今天17点的时间 - if now.Weekday() == time.Friday { - today17 := time.Date(now.Year(), now.Month(), now.Day(), 17, 0, 0, 0, now.Location()) - return today17.Sub(now) } - - // 构造下一个周五 17 点的时间 - nextFriday17 := time.Date(nextFriday.Year(), nextFriday.Month(), nextFriday.Day(), 17, 0, 0, 0, nextFriday.Location()) - - // 计算时间差 - duration := nextFriday17.Sub(now) - - return duration + return 0 } diff --git a/周报.xlsx b/周报.xlsx index cc59ec212c97be8f0d7053aa5a95a8b14843a209..4f8d5ec11c532020f9f4055a99d93c20316d6c16 100644 GIT binary patch delta 746 zcmVPZ-DVzgMwY6K}GBhCd3JUz+q4w5PT)WEo%r`$uLm z92F5kSmdCwAT0%&PoOlZj!CGtDq)D$m?anhZ-_LiR=j&TfNpWrq zB?wkzKku;Fc@D{<62fxC&%b=}e96PF2mbRBqH!rHE)zc=)ii%~RS<|6MN*L16cx!S zDIQi5Qcxo{B@q#bnn1x2i6W#)alvV~y96nSWu6n2q^$XQ7tbYSyqQGLzOMs5f&)G+ z0R1-T$2jB@w17{T)gIU3^gXonr+aR%)9!j&e6_fc`hSh1=?=8-ro-aw=TM(~%&}@_ za&j?gzJ>l347(;Gn?<73jBFrvOH7IxJe3eVXoA+hrKD?@dpTAsm`35j9P8+;oByE*J2l#Ennnu_doh26)LU3CyizdzW&C$8F|B2SyrqR8Zy#KsjTv%RNo6Vi93WAzY zmPE1?PM}R&GK5G>BsNiz1S~4Dpy80$>-IPVNkn2CtBwta+p*%dyO*5~yUVo^jm4sh zO_d{a&7Xfce~+_2;2chu+r6QNJz>x9aP0H~^7{PoG(Un|&%DjjgC^)7u*#|#TDyfx zXEyhvx_NufN|(^wh5i-YX+le<-7_$ZH@`}w_g@;h$-WNd%MeP?Z z&|2OczhlRh>9A-T1^T4{EuEEmkkx6u&1!{5trZyv(E{HB00960P)i30F9tWHgaQBn zs{{Z5kQ%c>3m^{)F9tWHgaQBns|1s58d3rR36sDYIRfzwllvM!0kp c7aA5&O9ci10000A015zr0ssK*761SM0Nv_Xg8%>k delta 1279 zcmVs(O`NwUy=Kjg7*W zSzKAYg7vb1%>qsxV*@eR#%Ajjme>v~UNAoJBTx@olqp=U;P~L;Oa(&I?bvvEc zgWue|vHIYi4U2y&91TYOEd7&Ltm8B(Nmj9C9qd5&6wDOGIV_v|S*S~-Ak$n@)odSNQ6(jb zoke<%6lAk;_%<%ueotk@$m6XJq}#NV;jVevgJhaiHjsb5aa9~q71GSSM}+Pv&2w1? zIf+lJR=h;^TV|{NHZDTBMsjVaT#%dw2Wz;Z!1_MCOd_hqr#F%D%Qa&0mWHzlTEo#x8riDia|25m7`~$5vSKz8 zqkiJMkKN+(dj558nf!cv^TvN~-(C@(mI^ZtNidD-C$2e}`Y<{o~{`GfO|yuby+ z-2eXn=)se(9=kcGW6}SV9sOncG+&q`7|ubp?y+XZ`nQ*H}Ks%|mNfLPp1p z(p^b<6gFb3Tg^hNec z;T_G)bs@h^N)p?EbOj1obRmP*H&f@NBvF5y{tL22-EIzdk$%FYWuMlX3Tc@Nv7?dl zCeAhRi#AqT6#q?|#i6x_iyfMJEIM6^XCZ$K^>JQ3&OoSw@sc@AnGF%Ns#TWBWu26y zP64K*HKY35_ z6^W={r)gvrsK63K7vkyTB*43zDPa7LjY;4gMKQ*VmJf7gWYH9~a&#~wA z%X8}Qdn*1Q+y_&X6NK38uK@r6|Nl@+2MF)-tVF5=001@$vI#s73h(l)M5+V;05%Gf pMi^28C<~LC7&!tL5R=syKLXVilNK2}0-qO?QyD4-6Bz&i006B4acKYm