From 6b1d76b8b2856e78d0d3e4b87cdfcc76d29686b2 Mon Sep 17 00:00:00 2001 From: Administrator Date: Wed, 1 May 2024 20:03:20 +0800 Subject: [PATCH] first commit --- .idea/.gitignore | 8 ++ .idea/modules.xml | 8 ++ .idea/vcs.xml | 6 + .idea/week.iml | 9 ++ Dockerfile | 7 + cmd/main.go | 42 ++++++ go.mod | 25 ++++ go.sum | 98 ++++++++++++++ moonshot/function.go | 311 +++++++++++++++++++++++++++++++++++++++++++ qywechat/send.go | 33 +++++ run.sh | 14 ++ tools/algorithm.go | 12 ++ tools/checktime.go | 18 +++ tools/excel.go | 44 ++++++ udesk/base.go | 35 +++++ udesk/function.go | 188 ++++++++++++++++++++++++++ udesk/geturl.go | 17 +++ udesk/method.go | 37 +++++ 周报.xlsx | Bin 0 -> 70661 bytes 19 files changed, 912 insertions(+) create mode 100644 .idea/.gitignore create mode 100644 .idea/modules.xml create mode 100644 .idea/vcs.xml create mode 100644 .idea/week.iml create mode 100644 Dockerfile create mode 100644 cmd/main.go create mode 100644 go.mod create mode 100644 go.sum create mode 100644 moonshot/function.go create mode 100644 qywechat/send.go create mode 100644 run.sh create mode 100644 tools/algorithm.go create mode 100644 tools/checktime.go create mode 100644 tools/excel.go create mode 100644 udesk/base.go create mode 100644 udesk/function.go create mode 100644 udesk/geturl.go create mode 100644 udesk/method.go create mode 100644 周报.xlsx diff --git a/.idea/.gitignore b/.idea/.gitignore new file mode 100644 index 0000000..35410ca --- /dev/null +++ b/.idea/.gitignore @@ -0,0 +1,8 @@ +# 默认忽略的文件 +/shelf/ +/workspace.xml +# 基于编辑器的 HTTP 客户端请求 +/httpRequests/ +# Datasource local storage ignored files +/dataSources/ +/dataSources.local.xml diff --git a/.idea/modules.xml b/.idea/modules.xml new file mode 100644 index 0000000..dafcd3d --- /dev/null +++ b/.idea/modules.xml @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/.idea/vcs.xml b/.idea/vcs.xml new file mode 100644 index 0000000..94a25f7 --- /dev/null +++ b/.idea/vcs.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/.idea/week.iml b/.idea/week.iml new file mode 100644 index 0000000..5e764c4 --- /dev/null +++ b/.idea/week.iml @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..4f3a2a4 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,7 @@ +FROM alpine:latest +USER root +RUN apk --no-cache add tzdata +ENV TZ=Asia/Shanghai +COPY ai-week /usr/local/bin +RUN chmod +x /usr/local/bin/ai-week +ENTRYPOINT ["ai-week"] \ No newline at end of file diff --git a/cmd/main.go b/cmd/main.go new file mode 100644 index 0000000..00f5920 --- /dev/null +++ b/cmd/main.go @@ -0,0 +1,42 @@ +package main + +import ( + "log" + "time" + "week/moonshot" + "week/qywechat" + + "github.com/jasonlvhit/gocron" +) + +var maxRetries = 3 + +func main() { + now := time.Now() + nowDate := now.Format("2006-01-02 15:04:05") + " " + now.Weekday().String() + log.Printf("等待执行定时任务中...当前时间是:%s", nowDate) + if maxRetries != 0 { + // 定义任务,每周五的五点执行 + gocron.Every(1).Friday().At("17:00").Do(job) + // 开始定时任务 + <-gocron.Start() + + } else { + log.Fatalln("最大重试次数已到达3,退出") + } +} + +func job() { + err := moonshot.CreateExcel() + if err != nil { + job() + maxRetries-- + } + repContent, err := moonshot.AiChat() + if err != nil { + job() + maxRetries-- + } + qywechat.Send(repContent) + +} diff --git a/go.mod b/go.mod new file mode 100644 index 0000000..1aa2985 --- /dev/null +++ b/go.mod @@ -0,0 +1,25 @@ +module week + +go 1.22.2 + +require ( + github.com/PuerkitoBio/goquery v1.9.1 + github.com/google/uuid v1.6.0 + github.com/jasonlvhit/gocron v0.0.1 + github.com/tidwall/gjson v1.17.1 + github.com/xuri/excelize/v2 v2.8.1 +) + +require ( + github.com/andybalholm/cascadia v1.3.2 // indirect + github.com/mohae/deepcopy v0.0.0-20170929034955-c48cc78d4826 // indirect + github.com/richardlehane/mscfb v1.0.4 // indirect + github.com/richardlehane/msoleps v1.0.3 // indirect + github.com/tidwall/match v1.1.1 // indirect + github.com/tidwall/pretty v1.2.0 // indirect + github.com/xuri/efp v0.0.0-20231025114914-d1ff6096ae53 // indirect + github.com/xuri/nfp v0.0.0-20230919160717-d98342af3f05 // indirect + golang.org/x/crypto v0.19.0 // indirect + golang.org/x/net v0.21.0 // indirect + golang.org/x/text v0.14.0 // indirect +) diff --git a/go.sum b/go.sum new file mode 100644 index 0000000..72fc95b --- /dev/null +++ b/go.sum @@ -0,0 +1,98 @@ +github.com/PuerkitoBio/goquery v1.9.1 h1:mTL6XjbJTZdpfL+Gwl5U2h1l9yEkJjhmlTeV9VPW7UI= +github.com/PuerkitoBio/goquery v1.9.1/go.mod h1:cW1n6TmIMDoORQU5IU/P1T3tGFunOeXEpGP2WHRwkbY= +github.com/andybalholm/cascadia v1.3.2 h1:3Xi6Dw5lHF15JtdcmAHD3i1+T8plmv7BQ/nsViSLyss= +github.com/andybalholm/cascadia v1.3.2/go.mod h1:7gtRlve5FxPPgIgX36uWBX58OdBsSS6lUvCFb+h7KvU= +github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= +github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo= +github.com/go-redis/redis v6.15.5+incompatible/go.mod h1:NAIEuMOZ/fxfXJIrKDQDz8wamY7mA7PouImQ2Jvg6kA= +github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= +github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0= +github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= +github.com/hpcloud/tail v1.0.0/go.mod h1:ab1qPbhIpdTxEkNHXyeSf5vhxWSCs/tWer42PpOxQnU= +github.com/jasonlvhit/gocron v0.0.1 h1:qTt5qF3b3srDjeOIR4Le1LfeyvoYzJlYpqvG7tJX5YU= +github.com/jasonlvhit/gocron v0.0.1/go.mod h1:k9a3TV8VcU73XZxfVHCHWMWF9SOqgoku0/QlY2yvlA4= +github.com/mohae/deepcopy v0.0.0-20170929034955-c48cc78d4826 h1:RWengNIwukTxcDr9M+97sNutRR1RKhG96O6jWumTTnw= +github.com/mohae/deepcopy v0.0.0-20170929034955-c48cc78d4826/go.mod h1:TaXosZuwdSHYgviHp1DAtfrULt5eUgsSMsZf+YrPgl8= +github.com/onsi/ginkgo v1.6.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= +github.com/onsi/ginkgo v1.10.1/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= +github.com/onsi/gomega v1.7.0/go.mod h1:ex+gbHU/CVuBBDIJjb2X0qEXbFg53c61hWP/1CpauHY= +github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= +github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= +github.com/richardlehane/mscfb v1.0.4 h1:WULscsljNPConisD5hR0+OyZjwK46Pfyr6mPu5ZawpM= +github.com/richardlehane/mscfb v1.0.4/go.mod h1:YzVpcZg9czvAuhk9T+a3avCpcFPMUWm7gK3DypaEsUk= +github.com/richardlehane/msoleps v1.0.1/go.mod h1:BWev5JBpU9Ko2WAgmZEuiz4/u3ZYTKbjLycmwiWUfWg= +github.com/richardlehane/msoleps v1.0.3 h1:aznSZzrwYRl3rLKRT3gUk9am7T/mLNSnJINvN0AQoVM= +github.com/richardlehane/msoleps v1.0.3/go.mod h1:BWev5JBpU9Ko2WAgmZEuiz4/u3ZYTKbjLycmwiWUfWg= +github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= +github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4= +github.com/stretchr/testify v1.8.4 h1:CcVxjf3Q8PM0mHUKJCdn+eZZtm5yQwehR5yeSVQQcUk= +github.com/stretchr/testify v1.8.4/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo= +github.com/tidwall/gjson v1.17.1 h1:wlYEnwqAHgzmhNUFfw7Xalt2JzQvsMx2Se4PcoFCT/U= +github.com/tidwall/gjson v1.17.1/go.mod h1:/wbyibRr2FHMks5tjHJ5F8dMZh3AcwJEMf5vlfC0lxk= +github.com/tidwall/match v1.1.1 h1:+Ho715JplO36QYgwN9PGYNhgZvoUSc9X2c80KVTi+GA= +github.com/tidwall/match v1.1.1/go.mod h1:eRSPERbgtNPcGhD8UCthc6PmLEQXEWd3PRB5JTxsfmM= +github.com/tidwall/pretty v1.2.0 h1:RWIZEg2iJ8/g6fDDYzMpobmaoGh5OLl4AXtGUGPcqCs= +github.com/tidwall/pretty v1.2.0/go.mod h1:ITEVvHYasfjBbM0u2Pg8T2nJnzm8xPwvNhhsoaGGjNU= +github.com/xuri/efp v0.0.0-20231025114914-d1ff6096ae53 h1:Chd9DkqERQQuHpXjR/HSV1jLZA6uaoiwwH3vSuF3IW0= +github.com/xuri/efp v0.0.0-20231025114914-d1ff6096ae53/go.mod h1:ybY/Jr0T0GTCnYjKqmdwxyxn2BQf2RcQIIvex5QldPI= +github.com/xuri/excelize/v2 v2.8.1 h1:pZLMEwK8ep+CLIUWpWmvW8IWE/yxqG0I1xcN6cVMGuQ= +github.com/xuri/excelize/v2 v2.8.1/go.mod h1:oli1E4C3Pa5RXg1TBXn4ENCXDV5JUMlBluUhG7c+CEE= +github.com/xuri/nfp v0.0.0-20230919160717-d98342af3f05 h1:qhbILQo1K3mphbwKh1vNm4oGezE1eF9fQWmNiIpSfI4= +github.com/xuri/nfp v0.0.0-20230919160717-d98342af3f05/go.mod h1:WwHg+CVyzlv/TX9xqBFXEZAuxOPxn2k1GNHwG41IIUQ= +github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY= +golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= +golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= +golang.org/x/crypto v0.19.0 h1:ENy+Az/9Y1vSrlrvBSyna3PITt4tiZLf7sgCjZBX7Wo= +golang.org/x/crypto v0.19.0/go.mod h1:Iy9bg/ha4yyC70EfRS8jz+B6ybOBKMaSxLj6P6oBDfU= +golang.org/x/image v0.14.0 h1:tNgSxAFe3jC4uYqvZdTr84SZoM1KfwdC9SKIFrLjFn4= +golang.org/x/image v0.14.0/go.mod h1:HUYqC05R2ZcZ3ejNQsIHQDQiwWM4JBqmm6MKANTp4LE= +golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4= +golang.org/x/mod v0.8.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= +golang.org/x/net v0.0.0-20180906233101-161cd47e91fd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= +golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= +golang.org/x/net v0.6.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs= +golang.org/x/net v0.9.0/go.mod h1:d48xBJpPfHeWQsugry2m+kC02ZBRGRgulfHnEXEuWns= +golang.org/x/net v0.21.0 h1:AQyQV4dYCvJ7vGmJyKki9+PBdyvhkSd8EIx/qb0AYv4= +golang.org/x/net v0.21.0/go.mod h1:bIjVDfnllIU7BJ2DNgfnXvpSvtn8VRwhlsaeUTyUS44= +golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.1.0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sys v0.0.0-20180909124046-d0be0721c37e/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.7.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= +golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= +golang.org/x/term v0.5.0/go.mod h1:jMB1sMXY+tzblOD4FWmEbocvup2/aLOaQEp7JmGp78k= +golang.org/x/term v0.7.0/go.mod h1:P32HKFT3hSsZrRxla30E9HqToFYAQPCMs/zFMBUFqPY= +golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= +golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= +golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= +golang.org/x/text v0.7.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= +golang.org/x/text v0.9.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8= +golang.org/x/text v0.14.0 h1:ScX5w1eTa3QqT8oi6+ziP7dTV1S2+ALU0bI+0zXKWiQ= +golang.org/x/text v0.14.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU= +golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc= +golang.org/x/tools v0.6.0/go.mod h1:Xwgl3UAJ/d3gWutnCtw505GrjyAbvKui8lOU390QaIU= +golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/fsnotify.v1 v1.4.7/go.mod h1:Tz8NjZHkW78fSQdbUxIjBTcgA1z1m8ZHf0WmKUhAMys= +gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7/go.mod h1:dt/ZhP58zS4L8KSrWDmTeBkI65Dw0HsyUHuEVlX15mw= +gopkg.in/yaml.v2 v2.2.1/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= +gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= diff --git a/moonshot/function.go b/moonshot/function.go new file mode 100644 index 0000000..7cd7646 --- /dev/null +++ b/moonshot/function.go @@ -0,0 +1,311 @@ +package moonshot + +import ( + "bytes" + "encoding/json" + "fmt" + "github.com/PuerkitoBio/goquery" + "github.com/tidwall/gjson" + "io" + "log" + "mime/multipart" + "net/http" + "os" + "strings" + "week/tools" + "week/udesk" +) + +//请求月之暗面所需要的常量 + +const ( + MoonshotFileApiUrl = "https://api.moonshot.cn/v1/files/" + moonshotApiKey = "sk-DwKNLIVfGFi5CUocISixedd2kLcNzYVRFShbScKtbxMNOPkQ" +) + +// 上传文件 + +func ReqMoonShotFileSendApi() *string { + filePath := "./周报.xlsx" + // 打开文件 + file, err := os.Open(filePath) + if err != nil { + log.Printf("打开周报excel失败,错误是:%v", err) + } + defer file.Close() + + // 创建一个缓冲区 + body := &bytes.Buffer{} + writer := multipart.NewWriter(body) + + // 创建一个文件表单字段 + part, err := writer.CreateFormFile("file", filePath) + if err != nil { + log.Printf("写文件缓存失败,错误是%v", err) + + } + + // 将文件内容拷贝到表单字段 + _, err = io.Copy(part, file) + if err != nil { + log.Printf("拷贝文件到缓存失败,错误是%v", err) + + } + + // 添加其他表单字段 + writer.WriteField("purpose", "file-extract") + + // 完成表单写入 + writer.Close() + + // 创建 HTTP 请求 + req, err := http.NewRequest("POST", MoonshotFileApiUrl, body) + if err != nil { + log.Printf("请求月之暗面api过程,创建http请求失败,错误是:%s", err) + + } + + // 设置请求头 + req.Header.Set("Content-Type", writer.FormDataContentType()) + req.Header.Set("Authorization", "Bearer "+moonshotApiKey) + + // 发送请求 + client := &http.Client{} + resp, err := client.Do(req) + if err != nil { + log.Printf("请求月之暗面api过程,请求失败,错误是:%s", err) + + } + defer resp.Body.Close() + + // 读取响应 + responseBody, err := io.ReadAll(resp.Body) + if err != nil { + log.Printf("请求月之暗面api过程,读取响应失败,错误是:%s", err) + + } + + // 打印响应内容 + fileId := gjson.Get(string(responseBody), "id").String() + log.Printf("文件上传成功,你上传的文件id是:%s", fileId) + return &fileId +} + +// 删除文件 + +func ReqMoonShotFileDeleteApi(fileID *string) { + // 设置 API endpoint + url := fmt.Sprintf(MoonshotFileApiUrl + *fileID) + + // 创建 HTTP 请求 + req, err := http.NewRequest("DELETE", url, nil) + if err != nil { + log.Printf("调用月之暗面删除文件api过程,创建http请求失败,错误是%v", err) + return + } + + // 设置请求头(如果需要的话) + req.Header.Set("Authorization", "Bearer "+moonshotApiKey) + + // 发送请求 + client := &http.Client{} + resp, err := client.Do(req) + if err != nil { + log.Printf("调用月之暗面删除文件api过程,发送http请求失败,错误是%v", err) + return + } + defer resp.Body.Close() + + // 检查响应状态码 + if resp.StatusCode == http.StatusOK { + log.Printf("请求月之暗面删除文件api成功~") + } else { + log.Println("请求月之暗面删除文件api失败>_<, http状态码是:", resp.StatusCode) + } +} + +// 开启ai对话主函数 + +func AiChat() (string, error) { + fileId := ReqMoonShotFileSendApi() + contentStr := GetFileContent(fileId) + // 设置 API endpoint + url := "https://api.moonshot.cn/v1/chat/completions" + + // 构造请求体 + requestBody := map[string]interface{}{ + "model": "moonshot-v1-128k", + "messages": []map[string]string{ + {"role": "system", "content": contentStr}, + {"role": "user", "content": "帮忙分析下工单中的错别字,告诉我对应的工单id"}, + }, + "temperature": 0.2, + } + + // 将请求体转换为 JSON 格式 + jsonBody, err := json.Marshal(requestBody) + if err != nil { + log.Printf("开启会话过程,将请求体转换为json格式失败,错误是:%v", err) + return "", err + } + + // 创建 HTTP 请求 + req, err := http.NewRequest("POST", url, bytes.NewBuffer(jsonBody)) + if err != nil { + log.Printf("开启会话过程,创建请求失败,错误是:%v", err) + return "", err + + } + + // 设置请求头 + req.Header.Set("Content-Type", "application/json") + req.Header.Set("Authorization", "Bearer "+moonshotApiKey) + + // 发送请求 + client := &http.Client{} + resp, err := client.Do(req) + if err != nil { + log.Printf("开启会话过程,发送请求失败,错误是:%v:", err) + return "", err + + } + defer resp.Body.Close() + + // 读取响应 + responseBody := new(bytes.Buffer) + _, err = responseBody.ReadFrom(resp.Body) + if err != nil { + log.Printf("开启会话过程,读取响应失败,错误是:%v:", err) + return "", err + } + + defer ReqMoonShotFileDeleteApi(fileId) //对话后清空文件 + // 打印响应内容 + jsonData := responseBody.String() + repFromAi := gjson.Get(jsonData, "choices.#.message.content").String() + repFromAi = strings.Replace(repFromAi, "\\n", "\n", -1) + repFromAi = strings.Replace(repFromAi, "\\", "", -1) + repFromAi = strings.Replace(repFromAi, "[", "", -1) + repFromAi = strings.Replace(repFromAi, "]", "", -1) + repFromAi = strings.Replace(repFromAi, "\"", "", 1) + log.Println(repFromAi) + return repFromAi, nil +} + +// 获取文件内容 + +func GetFileContent(fileID *string) string { + + // 设置 API endpoint + url := fmt.Sprintf(MoonshotFileApiUrl + *fileID + "/content") + + // 创建 HTTP 请求 + req, err := http.NewRequest("GET", url, nil) + if err != nil { + log.Printf("月之暗面api,获取文件内容过程,创建http请求,错误是:%v:", err) + + } + + // 设置请求头 + req.Header.Set("Authorization", "Bearer "+moonshotApiKey) + + // 发送请求 + client := &http.Client{} + resp, err := client.Do(req) + if err != nil { + log.Printf("月之暗面api,获取文件内容过程,发送请求,错误是:%v", err) + + } + defer resp.Body.Close() + + // 读取响应内容 + content, err := io.ReadAll(resp.Body) + if err != nil { + log.Printf("月之暗面api,获取文件内容过程,读取响应失败,错误是:%v", err) + + } + contentStr := string(content) + // 打印文件内容 + fmt.Println(contentStr) + return contentStr +} + +// 根据工单id循环获取工单回复内容 + +func CreateExcel() error { + totalPages, err := udesk.GetUdeskTicketId() + if err != nil { + return err + } + id, err := udesk.LoopGetTicketId(totalPages) + if err != nil { + return err + } + contentMap := make(map[string][]string) + j := 1 + for _, v := range id { + + idUrl := fmt.Sprintf("https://servicecenter-alauda.udesk.cn/open_api_v1/tickets/%v/replies?", v) + repliesUrl := udesk.Geturlstring(idUrl) + resp, err := http.Get(repliesUrl) + if err != nil { + // 处理错误 + log.Printf("获取工单过滤器下的回复信息失败,发送请求过程,错误是:%v\n", err) + return err + } + defer func(Body io.ReadCloser) { + err := Body.Close() + if err != nil { + + } + }(resp.Body) + body, err := io.ReadAll(resp.Body) + if err != nil { + // 处理错误 + log.Printf("获取工单过滤器下的回复信息失败,读取返回体过程,错误是:%v\n", err) + return err + } + jsonData := string(body) + repliesContent := gjson.Get(jsonData, "replies.#.content").String() + repliesContent = strings.Trim(repliesContent, "[]") + //repliesContent = trimHtml(repliesContent) + //查找回复内容和配图 + doc, err := goquery.NewDocumentFromReader(strings.NewReader(repliesContent)) + var s = make([]string, 0) + doc.Find("p,img").Each(func(i int, selection *goquery.Selection) { + imgSrc, exists := selection.Attr("src") + if exists { + s = append(s, imgSrc) + s = append(s, "\n") + } + s = append(s, selection.Text()) + s = append(s, "\n") + }) + + //跳过没有回复内容的工单,即运维服务,减少给模型的错误条件 + if len(s) == 0 { + continue + } + + repliesContentSlice := tools.ReverseSlice(s) + + cloudId := udesk.Id2CloudId(v) + log.Printf("正在处理map中的第%v个数据,键是%v\n", j, v) + if cloudId == "" { + contentMap[v] = repliesContentSlice + } else { + contentMap[cloudId] = repliesContentSlice + } + log.Printf("第%v个数据数据处理完成\n", j) + j++ + } + log.Printf("所有回复数据处理完成,map中键的数量:%v\n", len(contentMap)) + //fmt.Printf("map的值:%v\n", contentMap) //回复内容的map,待办:将这个map中的建存储第一列,将这个map中的值作为第二列存储 + // 生成excel表格内容为id --> 回复内容 + // 保存到某地 + tools.CreateNewExcel(contentMap) //创建了excel + //sk-DwKNLIVfGFi5CUocISixedd2kLcNzYVRFShbScKtbxMNOPkQ + //卡点,如何根据文件内容获取回复,目前这个结构只能开启单轮对话 + return nil + +} diff --git a/qywechat/send.go b/qywechat/send.go new file mode 100644 index 0000000..7acb64a --- /dev/null +++ b/qywechat/send.go @@ -0,0 +1,33 @@ +package qywechat + +import ( + "bytes" + "log" + "net/http" +) + +//企业微信机器人发送 + +const webhookURL = "https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=7b50e0c4-8a35-4f29-b652-25e1d6142c2b" + +func Send(repContent string) { + // 替换为你的企业微信机器人Webhook URL + + // 创建消息体 + requestBody := []byte(`{ + "msgtype": "text", + "text": { + "content": "` + repContent + `" + } + }`) + + // 发送HTTP POST请求到企业微信机器人Webhook + resp, err := http.Post(webhookURL, "application/json", bytes.NewBuffer(requestBody)) + if err != nil { + log.Fatalf("Failed to send message: %v", err) + } + defer resp.Body.Close() + + log.Println("Message sent successfully!") + +} diff --git a/run.sh b/run.sh new file mode 100644 index 0000000..7fa2d61 --- /dev/null +++ b/run.sh @@ -0,0 +1,14 @@ +#!/usr/bin/env bash +#安装golang1.22.2 +wget https://golang.google.cn/dl/go1.22.2.linux-amd64.tar.gz +tar -zxvf go1.22.2.linux-amd64.tar.gz -C /usr/local/ +go env -w GO111MODULE=on +go env -w GOPROXY=https://goproxy.cn,direct +go version +#编译 +cd ./cmd +CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -o ../ai-week +#镜像 +docker build -t ai-week:v2 . +sleep 3 +docker run --name week -d --restart always ai-week:v2 diff --git a/tools/algorithm.go b/tools/algorithm.go new file mode 100644 index 0000000..71a6bed --- /dev/null +++ b/tools/algorithm.go @@ -0,0 +1,12 @@ +package tools + +// 反转切片 + +func ReverseSlice(s []string) []string { + length := len(s) + reversed := make([]string, length) + for i, v := range s { + reversed[length-i-1] = v + } + return reversed +} diff --git a/tools/checktime.go b/tools/checktime.go new file mode 100644 index 0000000..ef6a306 --- /dev/null +++ b/tools/checktime.go @@ -0,0 +1,18 @@ +package tools + +import ( + "fmt" + "time" +) + +// 当前时间是否为周五5点 +func CheckTime() bool { + nowTime := time.Now() + if nowTime.Weekday().String() == "Friday" && nowTime.Format("15:04:05") == "17:00:00" { + fmt.Println("当前时间是周五5点") + return true + } else { + fmt.Println("当前时间不是周五5点") + return false + } +} diff --git a/tools/excel.go b/tools/excel.go new file mode 100644 index 0000000..fac100a --- /dev/null +++ b/tools/excel.go @@ -0,0 +1,44 @@ +package tools + +import ( + "fmt" + "github.com/xuri/excelize/v2" + "log" + "strconv" +) + +//创建excel文件,覆盖写即可 + +func CreateNewExcel(data map[string][]string) { // 示例的 map + + // 创建一个新的 Excel 文件 + f := excelize.NewFile() + + // 设置工作表的名称 + index, err := f.NewSheet("Sheet1") + if err != nil { + return + } + + // 在第一行,第一列写入标题 + f.SetCellValue("Sheet1", "A1", "工单id") + f.SetCellValue("Sheet1", "B1", "工单回复") + + //遍历 map,将键和值写入 Excel 表格 + row := 2 + for key, value := range data { + fmt.Println(row, key, value) + fmt.Println("A"+strconv.Itoa(row), "B"+strconv.Itoa(row)) + f.SetCellValue("Sheet1", "A"+strconv.Itoa(row), key) + f.SetCellValue("Sheet1", "B"+strconv.Itoa(row), value) + row++ + } + + // 设置工作表为默认激活状态 + f.SetActiveSheet(index) + + // 保存 Excel 文件 + if err := f.SaveAs("周报.xlsx"); err != nil { + log.Fatal(err) + } +} diff --git a/udesk/base.go b/udesk/base.go new file mode 100644 index 0000000..4030953 --- /dev/null +++ b/udesk/base.go @@ -0,0 +1,35 @@ +package udesk + +const ( + Email = "hbqi@alauda.io" + Sign_version = "v2" + Password = "Ye_qiu@123" + Auth_token_url = "https://servicecenter-alauda.udesk.cn/open_api_v1/log_in" +) + +//获取鉴权token的账号密码请求体对象 + +type RequestUdeskBody struct { + Email string `json:"email"` + Password string `json:"password"` +} + +//udesk鉴权接口返回token对象 + +type UdeskToken struct { + Code string `json:"code"` + Open_api_auth_token string `json:"open_api_auth_token"` +} + +// 定义认证对象 +type Authobj struct { + Email, + Timestamp, + Sign, + Nonce, + Sign_version string +} + +//全局声明返回体对象 + +var u = newRespUdeskBody() diff --git a/udesk/function.go b/udesk/function.go new file mode 100644 index 0000000..cee94fd --- /dev/null +++ b/udesk/function.go @@ -0,0 +1,188 @@ +package udesk + +import ( + "bytes" + "crypto/sha256" + "encoding/hex" + "encoding/json" + "fmt" + "github.com/google/uuid" + "github.com/tidwall/gjson" + "io" + "log" + "net/http" + "strconv" + "strings" + "time" +) + +//新建请求体对象 + +func newReqUdeskToken() RequestUdeskBody { + return RequestUdeskBody{ + Email: Email, + Password: Password, + } +} + +// 新建返回体对象 +func newRespUdeskBody() UdeskToken { + return UdeskToken{ + Code: "", + Open_api_auth_token: "", + } +} + +//获取Unix时间戳 + +func GetTimeStamp() string { + return strconv.FormatInt(time.Now().Unix(), 10) +} + +//获取nonce + +func GetNonce() string { + randomUUID := uuid.New() + nonce := randomUUID.String() + return nonce +} + +// sha256转换函数 +func calculateSHA256(input string) string { + // 将字符串转换为字节数组 + inputBytes := []byte(input) + + // 创建SHA-256哈希对象 + hasher := sha256.New() + + // 将字节数组写入哈希对象 + hasher.Write(inputBytes) + + // 计算哈希值并返回 + hashInBytes := hasher.Sum(nil) + hashString := hex.EncodeToString(hashInBytes) + + return hashString +} + +// 获取鉴权token对象 + +func GetUdeskAuthToken() UdeskToken { + reqBody := newReqUdeskToken() + jsonData, err := json.Marshal(reqBody) + if err != nil { + fmt.Printf("获取udesk管理员token过程中转换请求体json失败,错误是:%v", err) + } + payload := bytes.NewBufferString(string(jsonData)) + resp, err := http.Post(Auth_token_url, "application/json", payload) + if err != nil { + fmt.Printf("获取udesk管理员token过程中请求获取token接口失败,错误是:%v", err) + } + defer func(Body io.ReadCloser) { + err := Body.Close() + if err != nil { + return + } + }(resp.Body) + body, err := io.ReadAll(resp.Body) + if err != nil { + fmt.Printf("获取udesk管理员token过程中获取token接口响应失败,错误是:%v", err) + } + json.Unmarshal(body, &u) + return u +} + +//把udeskid转换为cloudid + +func Id2CloudId(id string) string { + detailUrl := Geturlstring("https://servicecenter-alauda.udesk.cn/open_api_v1/tickets/detail?") + "&id=" + id + resp, err := http.Get(detailUrl) + if err != nil { + // 处理错误 + log.Printf("获取工单过滤器下的cloudid失败,发送请求过程,错误是:%v", err) + + } + defer func(Body io.ReadCloser) { + err := Body.Close() + if err != nil { + + } + }(resp.Body) + body, err := io.ReadAll(resp.Body) + if err != nil { + // 处理错误 + log.Printf("获取工单过滤器下的cloudid失败,读取返回体过程,错误是:%v", err) + + } + jsonData := string(body) + cloudId := gjson.Get(jsonData, "ticket.custom_fields.TextField_219254").String() + return cloudId +} + +//* 获取工单过滤器下的符合条件的工单id * + +// 获取工单总共的页数 + +func GetUdeskTicketId() (*int64, error) { + filterUrl := Geturlstring("https://servicecenter-alauda.udesk.cn/open_api_v1/tickets/tickets_in_filter?filter_id=16523464&") + resp, err := http.Get(filterUrl) + if err != nil { + // 处理错误 + log.Printf("获取工单过滤器下的工单信息失败,发送请求过程,错误是:%v", err) + return nil, err + } + defer func(Body io.ReadCloser) { + err := Body.Close() + if err != nil { + + } + }(resp.Body) + body, err := io.ReadAll(resp.Body) + if err != nil { + // 处理错误 + log.Printf("获取工单过滤器下的工单信息失败,读取返回体过程,错误是:%v", err) + return nil, err + } + jsonData := string(body) + //fmt.Println(jsonData) + totalPages := gjson.Get(jsonData, "meta.total_pages").Int() + return &totalPages, nil + +} + +// 根据上面获取的页数,分别请求接口,取到工单id切片 + +func LoopGetTicketId(totalPages *int64) ([]string, error) { + var idSlice = make([]string, 0) + for i := int64(1); i <= *totalPages; i++ { + getIdUrl := Geturlstring("https://servicecenter-alauda.udesk.cn/open_api_v1/tickets/tickets_in_filter?filter_id=16523464&") + "&page=" + strconv.FormatInt(i, 10) + resp, err := http.Get(getIdUrl) + if err != nil { + // 处理错误 + log.Printf("获取工单过滤器下的工单id失败,发送请求过程,错误是:%v", err) + return nil, err + } + defer func(Body io.ReadCloser) { + err := Body.Close() + if err != nil { + log.Printf("获取工单过滤器下的工单id失败,关闭返回体,错误是:%v", err) + } + }(resp.Body) + body, err := io.ReadAll(resp.Body) + if err != nil { + // 处理错误 + log.Printf("获取工单过滤器下的工单id失败,读取返回体过程,错误是:%v", err) + return nil, err + } + jsonData := string(body) + ticketIdstr := gjson.Get(jsonData, "contents.#.ticket.id").String() + sliceStr := strings.Trim(ticketIdstr, "[]") + numbers := strings.Split(sliceStr, ",") + log.Printf("处理id切片中...第%v次处理...\n", i) + idSlice = append(idSlice, numbers...) + log.Printf("%T,%v", idSlice, idSlice) + + } + log.Println("处理完成~owo~") + return idSlice, nil +} diff --git a/udesk/geturl.go b/udesk/geturl.go new file mode 100644 index 0000000..80706cd --- /dev/null +++ b/udesk/geturl.go @@ -0,0 +1,17 @@ +package udesk + +import "strings" + +//最终请求的url后缀拼接 + +func Geturlstring(url string) string { + var authobj = u.getAuthobj() //必须要同步处理timestamp和sign的关系,否则会鉴权失败,所以从同一个结构体中取值 + var builder strings.Builder + builder.WriteString(url) + builder.WriteString("email=" + authobj.Email) + builder.WriteString("×tamp=" + authobj.Timestamp) + builder.WriteString("&sign=" + authobj.Sign) + builder.WriteString("&nonce=" + authobj.Nonce) + builder.WriteString("&sign_version=" + authobj.Sign_version) + return builder.String() +} diff --git a/udesk/method.go b/udesk/method.go new file mode 100644 index 0000000..dd6c8b1 --- /dev/null +++ b/udesk/method.go @@ -0,0 +1,37 @@ +package udesk + +import ( + "strings" +) + +//获取token字符串 + +func (UdeskToken) getTokenString() string { + token := GetUdeskAuthToken().Open_api_auth_token + return token +} + +//计算sign并返回authobj + +func (UdeskToken) getAuthobj() Authobj { + token := u.getTokenString() + timestamp := GetTimeStamp() + nonce := GetNonce() + var builder strings.Builder + builder.WriteString(Email + "&") + builder.WriteString(token + "&") + builder.WriteString(timestamp + "&") + builder.WriteString(nonce + "&") + builder.WriteString(Sign_version) + str2sha256 := builder.String() + hashResult := calculateSHA256(str2sha256) + //fmt.Println(str2sha256) + return Authobj{ + Email: Email, + Timestamp: timestamp, + Sign: hashResult, + Nonce: nonce, + Sign_version: Sign_version, + } + +} diff --git a/周报.xlsx b/周报.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..74bdf66c69598016d5fb9479e4a3c8e514fae0e0 GIT binary patch literal 70661 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

_v38q&l}e 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 z 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 ZKf4B$B`**d;NnBzbqxqURs={Q=s&5D?HT|8 literal 0 HcmV?d00001