excel_info.go 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293
  1. package controllers
  2. import (
  3. "encoding/json"
  4. "fmt"
  5. "hongze/hongze_chart_lib/models"
  6. "hongze/hongze_chart_lib/models/response"
  7. "hongze/hongze_chart_lib/services/excel"
  8. "hongze/hongze_chart_lib/utils"
  9. "time"
  10. )
  11. // ExcelInfoController excel表格
  12. type ExcelInfoController struct {
  13. BaseAuthController
  14. }
  15. // GetTableDetail
  16. // @Title 获取表格表详情
  17. // @Description 获取表格表详情接口
  18. // @Param UniqueCode query string true "表格表唯一编码,如果是管理后台访问,传固定字符串:7c69b590249049942070ae9dcd5bf6dc"
  19. // @Success 200 {object} response.ExcelTableDetailResp
  20. // @router /detail [get]
  21. func (this *ExcelInfoController) GetTableDetail() {
  22. br := new(models.BaseResponse).Init()
  23. defer func() {
  24. this.Data["json"] = br
  25. this.ServeJSON()
  26. }()
  27. uniqueCode := this.GetString("UniqueCode")
  28. if uniqueCode == "" {
  29. br.Msg = "参数错误"
  30. br.ErrMsg = "参数错误,uniqueCode is empty"
  31. return
  32. }
  33. key := utils.HZ_CHART_LIB_EXCEL_TABLE_DETAIL + ":" + uniqueCode
  34. resp := new(response.ExcelTableDetailResp)
  35. //判断是否有缓存
  36. if utils.Re == nil {
  37. if utils.Re == nil && utils.Rc.IsExist(key) {
  38. if data, err1 := utils.Rc.RedisBytes(key); err1 == nil {
  39. err := json.Unmarshal(data, &resp)
  40. if err == nil && resp != nil {
  41. br.Ret = 200
  42. br.Success = true
  43. br.Msg = "获取成功"
  44. br.Data = resp
  45. fmt.Println("source redis")
  46. return
  47. }
  48. }
  49. }
  50. }
  51. excelInfo, err := models.GetExcelInfoByUniqueCode(uniqueCode)
  52. if err != nil {
  53. if err.Error() == utils.ErrNoRow() {
  54. br.Msg = "该表格已被删除,请刷新页面"
  55. br.ErrMsg = "该表格已被删除,请刷新页面,Err:" + err.Error()
  56. return
  57. }
  58. br.Msg = "获取失败"
  59. br.ErrMsg = "获取表格表信息失败,Err:" + err.Error()
  60. return
  61. }
  62. luckySheetData, err := excel.GetLuckySheetData(excelInfo.Content)
  63. if err != nil {
  64. fmt.Println("err:", err)
  65. return
  66. }
  67. tableData, err := luckySheetData.GetTableDataByLuckySheetDataStr()
  68. if err != nil {
  69. fmt.Println("err:", err)
  70. return
  71. }
  72. tableData = excel.HandleTableCell(tableData)
  73. resp.TableInfo = tableData
  74. resp.ExcelName = excelInfo.ExcelName
  75. resp.ExcelImage = excelInfo.ExcelImage
  76. resp.UniqueCode = excelInfo.UniqueCode
  77. if utils.Re == nil {
  78. data, _ := json.Marshal(resp)
  79. utils.Rc.Put(key, data, 10*time.Minute)
  80. }
  81. br.Ret = 200
  82. br.Success = true
  83. br.Msg = "获取成功"
  84. br.Data = resp
  85. }