package controllers import ( "encoding/json" "fmt" "hongze/hongze_chart_lib/models" "hongze/hongze_chart_lib/models/response" "hongze/hongze_chart_lib/services/data" "hongze/hongze_chart_lib/services/excel" "hongze/hongze_chart_lib/utils" "time" ) // ExcelInfoController excel表格 type ExcelInfoController struct { BaseAuthController } // GetTableDetail // @Title 获取表格表详情 // @Description 获取表格表详情接口 // @Param UniqueCode query string true "表格表唯一编码,如果是管理后台访问,传固定字符串:7c69b590249049942070ae9dcd5bf6dc" // @Success 200 {object} response.ExcelTableDetailResp // @router /detail [get] func (this *ExcelInfoController) GetTableDetail() { br := new(models.BaseResponse).Init() defer func() { this.Data["json"] = br this.ServeJSON() }() uniqueCode := this.GetString("UniqueCode") if uniqueCode == "" { br.Msg = "参数错误" br.ErrMsg = "参数错误,uniqueCode is empty" return } key := utils.HZ_CHART_LIB_EXCEL_TABLE_DETAIL + ":" + uniqueCode resp := new(response.ExcelTableDetailResp) //判断是否有缓存 if utils.Re == nil { if utils.Re == nil && utils.Rc.IsExist(key) { if data, err1 := utils.Rc.RedisBytes(key); err1 == nil { err := json.Unmarshal(data, &resp) if err == nil && resp != nil { br.Ret = 200 br.Success = true br.Msg = "获取成功" br.Data = resp fmt.Println("source redis") return } } } } excelInfo, err := models.GetExcelInfoByUniqueCode(uniqueCode) if err != nil { if err.Error() == utils.ErrNoRow() { br.Msg = "该表格已被删除,请刷新页面" br.ErrMsg = "该表格已被删除,请刷新页面,Err:" + err.Error() return } br.Msg = "获取失败" br.ErrMsg = "获取表格表信息失败,Err:" + err.Error() return } var tableData excel.TableData if excelInfo.Source == 1 { luckySheetData, err := excel.GetLuckySheetData(excelInfo.Content) if err != nil { br.Msg = "获取失败" br.ErrMsg = "获取excel数据失败,Err:" + err.Error() return } tableData, err = luckySheetData.GetTableDataByLuckySheetDataStr() if err != nil { br.Msg = "获取失败" br.ErrMsg = "转换成table失败,Err:" + err.Error() return } } else { var tableDataConfig data.TableDataConfig err = json.Unmarshal([]byte(excelInfo.Content), &tableDataConfig) if err != nil { br.Msg = "获取失败" br.ErrMsg = "表格json转结构体失败,Err:" + err.Error() return } result, err := data.GetDataByTableDataConfig(tableDataConfig) if err != nil { br.Msg = "获取失败" br.ErrMsg = "获取最新的表格数据失败,Err:" + err.Error() return } tableData, err = excel.GetTableDataByCustomData(excelInfo.ExcelType, result) if err != nil { br.Msg = "获取失败" br.ErrMsg = "转换成table失败,Err:" + err.Error() return } } tableData = excel.HandleTableCell(tableData) resp.TableInfo = tableData resp.Source = excelInfo.Source resp.ExcelType = excelInfo.ExcelType resp.ExcelName = excelInfo.ExcelName resp.ExcelImage = excelInfo.ExcelImage resp.UniqueCode = excelInfo.UniqueCode if utils.Re == nil { data, _ := json.Marshal(resp) utils.Rc.Put(key, data, 10*time.Minute) } br.Ret = 200 br.Success = true br.Msg = "获取成功" br.Data = resp }