2024-05-18 01:46:35 +08:00
|
|
|
|
package filter
|
|
|
|
|
|
|
|
|
|
import (
|
2024-05-20 01:00:09 +08:00
|
|
|
|
"aiweek/option"
|
2024-05-18 01:46:35 +08:00
|
|
|
|
"aiweek/tools"
|
|
|
|
|
"aiweek/udesk/auth"
|
|
|
|
|
"fmt"
|
|
|
|
|
"github.com/tidwall/gjson"
|
|
|
|
|
"io"
|
|
|
|
|
"log"
|
|
|
|
|
"net/http"
|
|
|
|
|
"strconv"
|
|
|
|
|
"strings"
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
//* 获取工单过滤器下的符合条件的工单id *
|
|
|
|
|
|
|
|
|
|
// 获取工单总共的页数
|
|
|
|
|
|
|
|
|
|
func GetUdeskTicketId(filterId string) (*int64, error) {
|
|
|
|
|
filterUrl := fmt.Sprintf("https://servicecenter-alauda.udesk.cn/open_api_v1/tickets/tickets_in_filter?filter_id=%v&", filterId)
|
|
|
|
|
filterUrl = auth.Geturlstring(filterUrl)
|
|
|
|
|
resp, err := http.Get(filterUrl)
|
|
|
|
|
if err != nil {
|
|
|
|
|
// 处理错误
|
|
|
|
|
log.Printf("获取工单过滤器下的工单信息失败,发送请求过程,错误是:%v", err)
|
|
|
|
|
return nil, err
|
|
|
|
|
}
|
|
|
|
|
defer resp.Body.Close()
|
|
|
|
|
body, err := io.ReadAll(resp.Body)
|
|
|
|
|
if err != nil {
|
|
|
|
|
// 处理错误
|
|
|
|
|
log.Printf("获取工单过滤器下的工单信息失败,读取返回体过程,错误是:%v", err)
|
|
|
|
|
return nil, err
|
|
|
|
|
}
|
|
|
|
|
jsonData := string(body)
|
|
|
|
|
totalPages := gjson.Get(jsonData, "meta.total_pages").Int()
|
|
|
|
|
return &totalPages, nil
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// 根据上面获取的页数,分别请求接口,取到工单id切片
|
|
|
|
|
|
|
|
|
|
func LoopGetTicketId(totalPages *int64, filterId string) ([]string, error) {
|
|
|
|
|
var idSlice = make([]string, 0)
|
|
|
|
|
for i := int64(1); i <= *totalPages; i++ {
|
|
|
|
|
filterUrl := fmt.Sprintf("https://servicecenter-alauda.udesk.cn/open_api_v1/tickets/tickets_in_filter?filter_id=%v", filterId)
|
|
|
|
|
getIdUrl := auth.Geturlstring(filterUrl+"&") + "&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
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
//把udeskid转换为cloudid
|
|
|
|
|
|
|
|
|
|
func Id2CloudId(id string) string {
|
|
|
|
|
detailUrl := auth.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 resp.Body.Close()
|
|
|
|
|
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
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
//获取上周到上上周的工单
|
|
|
|
|
|
|
|
|
|
func GetWeeklyTicket() []string {
|
2024-05-20 01:00:09 +08:00
|
|
|
|
sevenDayPages, err := GetUdeskTicketId(option.UDESK_FILTER7D)
|
2024-05-18 01:46:35 +08:00
|
|
|
|
if err != nil {
|
|
|
|
|
log.Printf("获取7天的工单过滤器中的page信息失败!错误是%v", err)
|
|
|
|
|
}
|
2024-05-20 01:00:09 +08:00
|
|
|
|
fourteenDayPages, err := GetUdeskTicketId(option.UDSK_FILTER14D)
|
2024-05-18 01:46:35 +08:00
|
|
|
|
if err != nil {
|
|
|
|
|
log.Printf("获取14天的工单过滤器中的page信息失败!错误是%v", err)
|
|
|
|
|
}
|
2024-05-20 01:00:09 +08:00
|
|
|
|
sevenDaytTickets, err := LoopGetTicketId(sevenDayPages, option.UDESK_FILTER7D)
|
2024-05-18 01:46:35 +08:00
|
|
|
|
if err != nil {
|
|
|
|
|
log.Printf("获取7天的工单过滤器中的ticket信息失败!错误是%v", err)
|
|
|
|
|
}
|
2024-05-20 01:00:09 +08:00
|
|
|
|
fourteenDaytickets, err := LoopGetTicketId(fourteenDayPages, option.UDSK_FILTER14D)
|
2024-05-18 01:46:35 +08:00
|
|
|
|
if err != nil {
|
|
|
|
|
log.Printf("获取14天的工单过滤器中的ticket信息失败!错误是%v", err)
|
|
|
|
|
}
|
|
|
|
|
fmt.Println("7天", sevenDaytTickets)
|
|
|
|
|
fmt.Println("14天", fourteenDaytickets)
|
|
|
|
|
weeklyTicket := tools.ExcludeSlice(sevenDaytTickets, fourteenDaytickets)
|
|
|
|
|
fmt.Println("上周到上上周的工单:", weeklyTicket)
|
|
|
|
|
return weeklyTicket
|
|
|
|
|
|
|
|
|
|
}
|