package spark import ( "StuAcaWorksAI/proto" "StuAcaWorksAI/service" "StuAcaWorksAI/worker" "encoding/json" "log" "strconv" "time" ) func SparkPPTThemeList(model *proto.ModelParam, req proto.GetSparkPPTThemeReq) (proto.PPTThemeResponse, error) { url := "https://zwapi.xfyun.cn/api/ppt/v2/template/list" headers, err := getSparkRequestHeaders(model.APPID, model.APISecret) if err != nil { log.Println("Spark PPT Theme Error getting headers:", err) return proto.PPTThemeResponse{}, err } //log.Println("Spark PPT Theme headers:", headers) req_ := proto.PPTThemeRequest{ Style: req.Style, Color: req.Color, Industry: req.Industry, PageNum: 1, PageSize: 10, } reqStr, err := json.Marshal(req_) if err != nil { log.Println("Spark PPT Theme Error encoding request:", err) return proto.PPTThemeResponse{}, err } log.Println("Spark PPT Theme req:", string(reqStr)) err, resp := worker.DoPostRequestJSON(url, reqStr, headers) var response proto.PPTThemeResponse if err != nil { log.Println("Spark PPT Theme Error:", err) } else { err = json.Unmarshal(resp, &response) if err != nil { log.Println("Spark PPT Theme Error decoding response:", err) } } log.Println("Spark PPT Theme Response:", string(resp)) //log.Println("Spark PPT Theme Response:", response) return response, err } func getSparkRequestHeaders(appId, apiSecret string) (map[string]string, error) { headers := map[string]string{ "appId": "d3a4647c", "timestamp": strconv.FormatInt(time.Now().Unix(), 10), } algorithm := ApiAuthAlgorithm{} signature := algorithm.GetSignature(appId, apiSecret, time.Now().Unix()) headers["signature"] = signature return headers, nil } // 根据用户输入及文档生成大纲,文档可以是docx、doc、txt、pdf格式 func SparkCreateOutlineByDoc(model *proto.ModelParam, userReq *proto.SparkCreateOutlineRequest) (proto.SparkCreateOutlineResponse, error) { url := "https://zwapi.xfyun.cn/api/ppt/v2/createOutlineByDoc" headers, err := getSparkRequestHeaders(model.APPID, model.APISecret) if err != nil { log.Println("Spark PPT Theme Error getting headers:", err) return proto.SparkCreateOutlineResponse{}, err } log.Println("Spark create outline by doc headers:", headers) req := proto.SparkCreateOutlineByDocRequest{ Query: userReq.Query, FileUrl: userReq.FileUrl, FileName: userReq.FileName, } reqStr, err := json.Marshal(req) if err != nil { log.Println("Spark create outline by doc Error encoding request:", err) } log.Println("Spark create outline by doc req:", string(reqStr)) err, resp := worker.DoPostRequestForm(url, reqStr, headers) //log.Println("Spark create outline by doc Response:", string(resp)) var response proto.SparkCreateOutlineResponse if err != nil { log.Println("Spark create outline by doc Error:", err) } else { err = json.Unmarshal(resp, &response) if err != nil { log.Println("Spark create outline by doc Error decoding response:", err) } } log.Println("Spark create outline by doc Response struct:", response) return response, err } // 根据query生成大纲 func SparkCreateOutline(model *proto.ModelParam, userReq *proto.SparkCreateOutlineRequest) (proto.SparkCreateOutlineResponse, error) { url := "https://zwapi.xfyun.cn/api/ppt/v2/createOutline" headers, err := getSparkRequestHeaders(model.APPID, model.APISecret) if err != nil { log.Println("Spark PPT Theme Error getting headers:", err) return proto.SparkCreateOutlineResponse{}, err } log.Println("Spark create outline by doc headers:", headers) //自定义内容 req := proto.SparkCreateOutlineByDocRequest{ Query: userReq.Query, } reqStr, err := json.Marshal(req) if err != nil { log.Println("Spark create PPT Error encoding request:", err) } log.Println("Spark create PPT req:", string(reqStr)) err, resp := worker.DoPostRequestForm(url, reqStr, headers) log.Println("Spark create PPT Response:", string(resp)) var response proto.SparkCreateOutlineResponse if err != nil { log.Println("Spark create PPT Error:", err) } else { err = json.Unmarshal(resp, &response) if err != nil { log.Println("Spark create PPT Error decoding response:", err) } } log.Println("Spark create PPT Response struct:", response) return response, err } func SparkCreatePPTByOutline(model *proto.ModelParam, userReq *proto.SparkCreatePPTByOutlineUserRequest) (proto.SparkCreatePPTByOutlineResponse, error) { url := "https://zwapi.xfyun.cn/api/ppt/v2/createPptByOutline" headers, err := getSparkRequestHeaders(model.APPID, model.APISecret) if err != nil { log.Println("Spark create ppt by outline Error encoding request:", err) return proto.SparkCreatePPTByOutlineResponse{}, err } log.Println("Spark create ppt by outline headers:", headers) req := proto.SparkCreatePptByOutlineRequest{ Query: userReq.Query, FileUrl: userReq.FileUrl, FileName: userReq.FileName, Outline: userReq.Outline, } reqStr, err := json.Marshal(req) if err != nil { log.Println("Spark create ppt by outline Error encoding request:", err) } log.Println("Spark create ppt by outline req:", string(reqStr)) err, resp := worker.DoPostRequestJSON(url, reqStr, headers) log.Println("Spark create ppt by outline Response:", string(resp)) var response proto.SparkCreatePPTByOutlineResponse if err != nil { log.Println("Spark create ppt by outline Error:", err) } else { err = json.Unmarshal(resp, &response) if err != nil { log.Println("Spark create ppt by outline Error decoding response:", err) } } log.Println("Spark create ppt by outline Response struct:", response) return response, err } func SparkGetPPTInfoBySID(model *proto.ModelParam, userReq *proto.SparkCreatePPTByOutlineUserRequest) (proto.SparkCreatePPTByOutlineResponse, error) { url := "https://zwapi.xfyun.cn/api/ppt/v2/progress?sid=" + userReq.Sid headers, err := getSparkRequestHeaders(model.APPID, model.APISecret) if err != nil { log.Println("Spark create ppt by outline Error encoding request:", err) return proto.SparkCreatePPTByOutlineResponse{}, err } log.Println("Spark create ppt by outline headers:", headers) err, resp := worker.DoGetRequest(url, headers) log.Println("Spark create ppt by outline Response:", string(resp)) var response proto.SparkCreatePPTByOutlineResponse if err != nil { log.Println("Spark create ppt by outline Error:", err) } else { err = json.Unmarshal(resp, &response) if err != nil { log.Println("Spark create ppt by outline Error decoding response:", err) } } log.Println("Spark create ppt by outline Response struct:", response) return response, err } // 处理制作大纲请求 func SparkDoCreateOutline(userReq *proto.SparkCreateOutlineRequest, userID int) (proto.SparkCreateOutlineResponse, error) { var modelParam proto.ModelParam var err error //获取模型 models, funcs, mferr := service.FindFuncModelListByFunctionV2(userReq.Function) if mferr != nil { return proto.SparkCreateOutlineResponse{}, mferr } model := models[0] err = json.Unmarshal([]byte(model.Parameter), &modelParam) if err != nil { return proto.SparkCreateOutlineResponse{}, err } modelParam.Url = model.Url modelParam.System = funcs[0].Info //系统功能 var outline proto.SparkCreateOutlineResponse //获取主题列表 if userReq.FileUrl == "" { outline, err = SparkCreateOutline(&modelParam, userReq) //根据query生成大纲 } else { outline, err = SparkCreateOutlineByDoc(&modelParam, userReq) //根据文档生成大纲 } //进行保存 return outline, err } // 处理制作PPT请求 func SparkDoCreatePPTByOutline(userReq *proto.SparkCreatePPTByOutlineUserRequest, userID int) { }