chart_info.go 22 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481
  1. package data_manage
  2. import (
  3. "eta/eta_hub/utils"
  4. "fmt"
  5. "strings"
  6. "time"
  7. "github.com/beego/beego/v2/client/orm"
  8. "github.com/rdlucklib/rdluck_tools/paging"
  9. )
  10. // ChartInfo 图库主表
  11. type ChartInfo struct {
  12. ChartInfoId int `orm:"column(chart_info_id);pk"`
  13. ChartName string `description:"来源名称"`
  14. ChartNameEn string `description:"英文图表名称"`
  15. ChartClassifyId int `description:"图表分类id"`
  16. SysUserId int `description:"创建人ID"`
  17. SysUserRealName string `description:"创建人姓名"`
  18. UniqueCode string `description:"图表唯一编码"`
  19. DateType int `description:"日期类型:1:00年至今,2:10年至今,3:15年至今,4:21年至今,5:自定义时间,6:起始日期至今,7:18年至今,8:19年至今,9:20年至今,11:22年至今,20:最近N年"`
  20. StartDate string `description:"自定义开始日期"`
  21. EndDate string `description:"自定义结束日期"`
  22. IsSetName int `description:"设置名称"`
  23. EdbInfoIds string `description:"指标id"`
  24. ChartType int `description:"生成样式:1:曲线图,2:季节性图,3:面积图,4:柱状图,5:散点图,6:组合图,7:柱方图,8:商品价格曲线图,9:相关性图"`
  25. Calendar string `description:"公历/农历"`
  26. SeasonStartDate string `description:"季节性图开始日期"`
  27. SeasonEndDate string `description:"季节性图结束日期"`
  28. ChartImage string `description:"图表图片"`
  29. Sort int `description:"排序字段,数字越小越排前面"`
  30. LeftMin string `description:"图表左侧最小值"`
  31. LeftMax string `description:"图表左侧最大值"`
  32. RightMin string `description:"图表右侧最小值"`
  33. RightMax string `description:"图表右侧最大值"`
  34. Disabled int `description:"是否禁用,0:启用,1:禁用,默认:0"`
  35. BarConfig string `description:"柱方图的配置,json数据"`
  36. Source int `description:"1:ETA图库;2:商品价格曲线"`
  37. ExtraConfig string `description:"图表额外配置,json数据"`
  38. SeasonExtraConfig string `description:"季节性图表中的配置,json数据"`
  39. StartYear int `description:"当选择的日期类型为最近N年类型时,即date_type=20, 用start_year表示N"`
  40. CreateTime time.Time `json:"-"description:"创建时间"`
  41. ModifyTime time.Time `json:"-"description:"更新时间"`
  42. }
  43. func (m *ChartInfo) GetItemsByCondition(cond string, pars []interface{}, fieldArr []string, orderRule string) (items []*ChartInfo, err error) {
  44. o := orm.NewOrmUsingDB("data")
  45. fields := strings.Join(fieldArr, ",")
  46. if len(fieldArr) == 0 {
  47. fields = `*`
  48. }
  49. order := `ORDER BY create_time DESC`
  50. if orderRule != "" {
  51. order = ` ORDER BY ` + orderRule
  52. }
  53. sql := fmt.Sprintf(`SELECT %s FROM chart_info WHERE 1=1 %s %s`, fields, cond, order)
  54. _, err = o.Raw(sql, pars).QueryRows(&items)
  55. return
  56. }
  57. func (m *ChartInfo) GetItemTotal(cond string, pars []interface{}) (total int, err error) {
  58. o := orm.NewOrmUsingDB("data")
  59. sql := fmt.Sprintf(`SELECT COUNT(*) FROM chart_info WHERE 1=1 %s`, cond)
  60. err = o.Raw(sql, pars).QueryRow(&total)
  61. return
  62. }
  63. func (m *ChartInfo) GetItemsPageByCondition(cond string, pars []interface{}, fieldArr []string, orderRule string, startSize, pageSize int) (items []*ChartInfo, err error) {
  64. o := orm.NewOrmUsingDB("data")
  65. fields := strings.Join(fieldArr, ",")
  66. if len(fieldArr) == 0 {
  67. fields = `*`
  68. }
  69. order := `ORDER BY create_time DESC`
  70. if orderRule != "" {
  71. order = ` ORDER BY ` + orderRule
  72. }
  73. sql := fmt.Sprintf(`SELECT %s FROM chart_info WHERE 1=1 %s %s`, fields, cond, order)
  74. sql += fmt.Sprintf(` LIMIT %d,%d`, startSize, pageSize)
  75. _, err = o.Raw(sql, pars).QueryRows(&items)
  76. return
  77. }
  78. func (m *ChartInfo) GetItemByCode(code string) (item *ChartInfo, err error) {
  79. o := orm.NewOrmUsingDB("data")
  80. sql := fmt.Sprintf(`SELECT * FROM chart_info WHERE unique_code = ? LIMIT 1`)
  81. err = o.Raw(sql, code).QueryRow(&item)
  82. return
  83. }
  84. // ChartInfoItem 图表信息
  85. type ChartInfoItem struct {
  86. ChartInfoId int `description:"图表ID"`
  87. ChartName string `description:"来源名称"`
  88. ChartNameEn string `description:"英文图表名称"`
  89. ChartClassifyId int `description:"图表分类id"`
  90. UniqueCode string `description:"图表唯一编码"`
  91. DateType int `description:"日期类型:1:00年至今,2:10年至今,3:15年至今,4:年初至今,5:自定义时间" json:"-"`
  92. StartDate string `description:"自定义开始日期"`
  93. EndDate string `description:"自定义结束日期"`
  94. ChartType int `description:"生成样式:1:曲线图,2:季节性图,3:面积图,4:柱状图,5:散点图,6:组合图,7:柱方图,8:商品价格曲线图,9:相关性图"`
  95. Calendar string `description:"公历/农历"`
  96. SeasonStartDate string `description:"季节性图开始日期" json:"-"`
  97. SeasonEndDate string `description:"季节性图开始日期" json:"-"`
  98. ChartImage string `description:"图表图片"`
  99. Sort int `description:"排序字段,数字越小越排前面"`
  100. LeftMin string `description:"图表左侧最小值" json:"-"`
  101. LeftMax string `description:"图表左侧最大值" json:"-"`
  102. RightMin string `description:"图表右侧最小值" json:"-"`
  103. RightMax string `description:"图表右侧最大值" json:"-"`
  104. BarConfig string `description:"柱方图的配置,json数据" json:"-"`
  105. Source int `description:"1:ETA图库;2:商品价格曲线" json:"-"`
  106. ExtraConfig string `description:"图表额外配置,json数据" json:"-"`
  107. SeasonExtraConfig string `description:"季节性图表中的配置,json数据" json:"-"`
  108. StartYear int `description:"当选择的日期类型为最近N年类型时,即date_type=20, 用start_year表示N" json:"-"`
  109. CreateTime string `description:"创建时间"`
  110. ModifyTime string `description:"更新时间"`
  111. }
  112. type ChartInfoItemResp struct {
  113. List []*ChartInfoItem `description:"图表信息"`
  114. Paging *paging.PagingItem `description:"分页信息"`
  115. }
  116. func FormatChartInfo2Item(origin *ChartInfo) (item *ChartInfoItem) {
  117. if origin == nil {
  118. return
  119. }
  120. item = new(ChartInfoItem)
  121. item.ChartInfoId = origin.ChartInfoId
  122. item.ChartName = origin.ChartName
  123. item.ChartNameEn = origin.ChartNameEn
  124. item.ChartClassifyId = origin.ChartClassifyId
  125. item.UniqueCode = origin.UniqueCode
  126. item.DateType = origin.DateType
  127. item.StartDate = origin.StartDate
  128. item.EndDate = origin.EndDate
  129. item.ChartType = origin.ChartType
  130. item.Calendar = origin.Calendar
  131. item.SeasonStartDate = origin.SeasonStartDate
  132. item.SeasonEndDate = origin.SeasonEndDate
  133. item.ChartImage = origin.ChartImage
  134. item.Sort = origin.Sort
  135. item.LeftMin = origin.LeftMin
  136. item.LeftMax = origin.LeftMax
  137. item.RightMin = origin.RightMin
  138. item.RightMax = origin.RightMax
  139. item.BarConfig = origin.BarConfig
  140. item.Source = origin.Source
  141. item.ExtraConfig = origin.ExtraConfig
  142. item.SeasonExtraConfig = origin.SeasonExtraConfig
  143. item.StartYear = origin.StartYear
  144. item.CreateTime = utils.TimeTransferString(utils.FormatDateTime, origin.CreateTime)
  145. item.ModifyTime = utils.TimeTransferString(utils.FormatDateTime, origin.ModifyTime)
  146. return
  147. }
  148. type ChartInfoDetailResp struct {
  149. ChartInfo *ChartInfo `description:"图表信息"`
  150. Status bool `description:"true:图表存在,false:图表不存在" json:"-"`
  151. EdbInfoList []*ChartEdbInfoMapping `description:"指标信息"`
  152. XEdbIdValue []int `description:"柱方图的x轴数据,指标id"`
  153. YDataList []YData `description:"柱方图的y轴数据"`
  154. XDataList []XData `description:"商品价格曲线的X轴数据"`
  155. BarChartInfo BarChartInfoReq `description:"柱方图的配置"`
  156. CorrelationChartInfo *CorrelationInfo `description:"相关性图表信息"`
  157. DataResp interface{} `description:"图表数据,根据图的类型而定的,没有确定的数据格式"`
  158. }
  159. // XData 商品价格曲线的的x轴数据
  160. type XData struct {
  161. Name string `description:"别名"`
  162. NameEn string `description:"英文别名"`
  163. }
  164. // YData 柱方图的y轴数据
  165. type YData struct {
  166. Date string `description:"数据日期"`
  167. ConfigDate time.Time `description:"配置的日期" json:"-"`
  168. Color string `description:"数据颜色"`
  169. Name string `description:"别名"`
  170. NameEn string `description:"英文别名"`
  171. Value []float64 `description:"每个指标的值"`
  172. NoDataEdbList []int `description:"没有数据的指标列表"`
  173. XEdbInfoIdList []int `description:"对应X轴的指标id列表"`
  174. NameList []string `description:"每个值对应的名称"`
  175. EnNameList []string `description:"每个值对应的英文名称"`
  176. EdbValMap map[int]float64 `description:"指标与值的对应" json:"-"`
  177. M []int `description:"对应开始日期的间隔值" json:"-"`
  178. Unit string `description:"中文单位名称"`
  179. UnitEn string `description:"英文单位名称"`
  180. }
  181. // BarChartInfoReq 柱方图预览请求数据
  182. type BarChartInfoReq struct {
  183. EdbInfoIdList []BarChartInfoEdbItemReq `description:"指标信息"`
  184. DateList []BarChartInfoDateReq `description:"日期配置"`
  185. Sort BarChartInfoSortReq `description:"排序"`
  186. XEdbList []BarChartInfoEdbItemReq `description:"X轴选择的指标列表"`
  187. YEdbList []BarChartInfoEdbItemReq `description:"Y轴选择的指标列表"`
  188. Unit string `description:"中文单位"`
  189. UnitEn string `description:"英文单位"`
  190. }
  191. // BarChartInfoEdbItemReq 柱方图预览请求数据(指标相关)
  192. type BarChartInfoEdbItemReq struct {
  193. EdbInfoId int `description:"指标ID"`
  194. Name string `description:"别名"`
  195. NameEn string `description:"英文别名"`
  196. Source int `description:"1:ETA图库;2:商品价格"`
  197. }
  198. // BarChartInfoDateReq 柱方图预览请求数据(日期相关)
  199. type BarChartInfoDateReq struct {
  200. Type int `description:"配置类型"`
  201. Date string `description:"固定日期"`
  202. Value int `description:"N天的值"`
  203. Color string `description:"颜色"`
  204. Name string `description:"别名"`
  205. }
  206. // BarChartInfoSortReq 柱方图预览请求数据(排序相关)
  207. type BarChartInfoSortReq struct {
  208. Sort int `description:"排序类型,0:默认,1:升序,2:降序"`
  209. DateIndex int `description:"日期数据的下标,从0开始"`
  210. }
  211. type CorrelationInfo struct {
  212. LeadValue int `description:"领先值"`
  213. LeadUnit string `description:"领先单位"`
  214. CalculateValue int `description:"计算窗口"`
  215. CalculateUnit string `description:"计算频度"`
  216. StartDate string `description:"开始日期"`
  217. EndDate string `description:"结束日期"`
  218. EdbInfoIdFirst int `description:"A指标ID"`
  219. EdbInfoIdSecond int `description:"B指标ID"`
  220. PeriodData string `description:"X轴-期数数据"`
  221. CorrelationData string `description:"Y轴-相关性系数"`
  222. }
  223. type ChartInfoView struct {
  224. ChartInfoId int `orm:"column(chart_info_id);pk"`
  225. ChartName string `description:"来源名称"`
  226. ChartNameEn string `description:"英文图表名称"`
  227. Unit string `description:"中文单位名称"`
  228. UnitEn string `description:"英文单位名称"`
  229. ChartClassifyId int `description:"图表分类id"`
  230. ChartClassifyName string `description:"图表名称"`
  231. SysUserId int
  232. SysUserRealName string
  233. UniqueCode string `description:"图表唯一编码"`
  234. CreateTime time.Time
  235. ModifyTime time.Time
  236. DateType int `description:"日期类型:1:00年至今,2:10年至今,3:15年至今,4:年初至今,5:自定义时间"`
  237. StartDate string `description:"自定义开始日期"`
  238. EndDate string `description:"自定义结束日期"`
  239. IsSetName int `description:"设置名称"`
  240. EdbInfoIds string `description:"指标id"`
  241. ChartType int `description:"生成样式:1:曲线图,2:季节性图"`
  242. Calendar string `description:"公历/农历"`
  243. SeasonStartDate string `description:"季节性图开始日期"`
  244. SeasonEndDate string `description:"季节性图开始日期"`
  245. ChartImage string `description:"图表图片"`
  246. Sort int `description:"排序字段,数字越小越排前面"`
  247. IsAdd bool `description:"true:已加入我的图库,false:未加入我的图库"`
  248. MyChartId int
  249. MyChartClassifyId string `description:"我的图表分类,多个用逗号隔开"`
  250. ChartClassify []*ChartClassifyView
  251. EdbEndDate string `description:"指标最新更新日期"`
  252. LeftMin string `description:"图表左侧最小值"`
  253. LeftMax string `description:"图表左侧最大值"`
  254. RightMin string `description:"图表右侧最小值"`
  255. RightMax string `description:"图表右侧最大值"`
  256. IsEdit bool `description:"是否有编辑权限"`
  257. IsEnChart bool `description:"是否展示英文标识"`
  258. WarnMsg string `description:"错误信息"`
  259. Disabled int `description:"是否禁用,0:启用,1:禁用,默认:0"`
  260. BarConfig string `description:"柱方图的配置,json数据" json:"-"`
  261. Source int `description:"1:ETA图库;2:商品价格曲线;3:相关性图表"`
  262. //CorrelationLeadUnit string `description:"相关性图表-领先单位"`
  263. ExtraConfig string `description:"图表额外配置,json数据"`
  264. Button ChartViewButton `description:"操作按钮" json:"-"`
  265. SeasonExtraConfig string `description:"季节性图表中的配置,json数据"`
  266. StartYear int `description:"当选择的日期类型为最近N年类型时,即date_type=20, 用start_year表示N"`
  267. }
  268. type ChartViewButton struct {
  269. IsEdit bool `description:"是否有编辑权限"`
  270. IsEnChart bool `description:"是否展示英文标识"`
  271. IsAdd bool `description:"true:已加入我的图库,false:未加入我的图库"`
  272. IsCopy bool `description:"是否有另存为按钮"`
  273. IsSetName int `description:"设置名称"`
  274. }
  275. // SectionScatterReq 截面散点请求
  276. //type SectionScatterReq struct {
  277. // XName string `description:"x轴名称"`
  278. // XNameEn string `description:"x轴名称(英文)"`
  279. // XUnitName string `description:"x轴单位名称"`
  280. // XUnitNameEn string `description:"x轴单位名称(英文)"`
  281. // YName string `description:"y轴名称"`
  282. // YNameEn string `description:"y轴名称(英文)"`
  283. // YUnitName string `description:"y轴单位名称"`
  284. // YUnitNameEn string `description:"y轴单位名称(英文)"`
  285. // XMinValue string `description:"X轴的最小值"`
  286. // XMaxValue string `description:"X轴的最大值"`
  287. // YMinValue string `description:"Y轴的最小值"`
  288. // YMaxValue string `description:"Y轴的最大值"`
  289. // //EdbList []SectionScatterEdbItemReq `description:"指标数据"`
  290. // SeriesList []SectionScatterSeriesItemReq `description:"系列数据"`
  291. //}
  292. // SectionScatterSeriesItemReq 系列的请求
  293. //type SectionScatterSeriesItemReq struct {
  294. // Name string `description:"系列名"`
  295. // NameEn string `description:"系列名(英文名)"`
  296. // IsNameDefault bool `description:"是否使用默认的系列名 false修改过 true默认 影响自动更新"`
  297. // Color string `description:"颜色"`
  298. // EdbInfoList []SectionScatterEdbItemReq
  299. // ShowTrendLine bool `description:"是否展示趋势线"`
  300. // ShowFitEquation bool `description:"是否展示方程式"`
  301. // ShowRSquare bool `description:"是否展示R平方"`
  302. //}
  303. // SectionScatterEdbItemReq 截面散点请求的指标
  304. //type SectionScatterEdbItemReq struct {
  305. // XEdbInfoId int `description:"X轴的指标ID"`
  306. // YEdbInfoId int `description:"Y轴的指标ID"`
  307. // Name string `description:"别名"`
  308. // NameEn string `description:"英文别名"`
  309. // XDateType int `description:"X轴的日期配置类型"`
  310. // XDate string `description:"X轴的日期固定日期"`
  311. // XDateValue int `description:"X轴的日期N天的值"`
  312. // YDateType int `description:"Y轴的日期配置类型"`
  313. // YDate string `description:"Y轴的日期固定日期"`
  314. // YDateValue int `description:"Y轴的日期N天的值"`
  315. // IsShow bool `description:"是否展示"`
  316. //}
  317. // SectionScatterInfoResp 截面散点图数据
  318. //type SectionScatterInfoResp struct {
  319. // XName string `description:"x轴名称"`
  320. // XNameEn string `description:"x轴名称(英文)"`
  321. // XUnitName string `description:"x轴单位名称"`
  322. // XUnitNameEn string `description:"x轴单位名称(英文)"`
  323. // YName string `description:"y轴名称"`
  324. // YNameEn string `description:"y轴名称(英文)"`
  325. // YUnitName string `description:"y轴单位名称"`
  326. // YUnitNameEn string `description:"y轴单位名称(英文)"`
  327. // XMinValue string `description:"X轴的最小值"`
  328. // XMaxValue string `description:"X轴的最大值"`
  329. // YMinValue string `description:"Y轴的最小值"`
  330. // YMaxValue string `description:"Y轴的最大值"`
  331. // DataList []SectionScatterSeriesItemResp `description:"数据列"`
  332. //}
  333. // SectionScatterSeriesItemResp 系列的返回
  334. //type SectionScatterSeriesItemResp struct {
  335. // Name string `description:"系列名"`
  336. // NameEn string `description:"系列名(英文)"`
  337. // IsNameDefault bool `description:"是否使用默认的系列名 false修改过 true默认 影响自动更新"`
  338. // Color string `description:"颜色"`
  339. // EdbInfoList []SectionScatterEdbItemResp
  340. // ShowTrendLine bool `description:"是否展示趋势线"`
  341. // ShowFitEquation bool `description:"是否展示方程式"`
  342. // ShowRSquare bool `description:"是否展示R平方"`
  343. // TrendLine string `description:"方程式"`
  344. // RSquare string `description:"R平方的值(决定系数R2)"`
  345. // TrendLimitData []CoordinatePoint `description:"趋势线的前后坐标点"`
  346. //}
  347. // SectionScatterEdbItemResp 截面散点的返回参数
  348. //type SectionScatterEdbItemResp struct {
  349. // XEdbInfoId int `description:"X轴指标id"`
  350. // XDate string `description:"X轴指标实际日期"`
  351. // XName string `description:"X轴指标名称"`
  352. // XNameEn string `description:"X轴指标英文名称"`
  353. // XValue float64 `description:"X轴实际值"`
  354. // YEdbInfoId int `description:"Y轴指标id"`
  355. // YDate string `description:"Y轴指标实际日期"`
  356. // YName string `description:"Y轴指标名称"`
  357. // YNameEn string `description:"Y轴指标英文名称"`
  358. // YValue float64 `description:"Y轴实际值"`
  359. // IsShow bool `description:"是否展示"`
  360. // Name string `description:"标签名称"`
  361. // NameEn string `description:"英文标签名称"`
  362. //}
  363. // CoordinatePoint 坐标点
  364. //type CoordinatePoint struct {
  365. // X float64
  366. // Y float64
  367. //}
  368. // RollingCorrelationChartDataResp 滚动相关性图
  369. //type RollingCorrelationChartDataResp struct {
  370. // XDateTimeValue []string `description:"滚动相关性图的x轴数据,日期数据"`
  371. // YDataList []YData `description:"滚动相关性图的y轴数据"`
  372. //}
  373. //type EdbDataList struct {
  374. // EdbDataId int `description:" 指标数据ID"`
  375. // EdbInfoId int `description:"指标ID"`
  376. // DataTime string //`json:"-" description:"数据日期"`
  377. // DataTimestamp int64 `description:"数据日期"`
  378. // Value float64 `description:"数据值"`
  379. //}
  380. // EditChartInfoExtraConfig 修改 ETA图库 的 图表额外配置
  381. //func EditChartInfoExtraConfig(chartId int, extraConfig string) (err error) {
  382. // o := orm.NewOrmUsingDB("data")
  383. // var pars []interface{}
  384. // pars = append(pars, extraConfig)
  385. //
  386. // sql := ` UPDATE chart_info
  387. // SET
  388. // modify_time = NOW(),
  389. // extra_config = ?
  390. // `
  391. // sql += `WHERE chart_info_id = ?`
  392. //
  393. // pars = append(pars, chartId)
  394. // _, err = o.Raw(sql, pars).Exec()
  395. // if err != nil {
  396. // fmt.Println("UPDATE chart_info Err:", err.Error())
  397. // return err
  398. // }
  399. //
  400. // return
  401. //}
  402. //type SeasonExtraItem struct {
  403. // ChartLegend []SeasonChartLegend `description:"自定义的图例名称"`
  404. // XStartDate string `description:"横坐标显示的起始日"`
  405. // XEndDate string `description:"横坐标显示的截止日"`
  406. // JumpYear int `description:"横坐标日期是否跨年,1跨年,0不跨年"`
  407. //}
  408. //type SeasonChartLegend struct {
  409. // Name string
  410. // Value string
  411. //}
  412. type QuarterData struct {
  413. Year int
  414. DataList []*EdbDataList
  415. CuttingDataTimestamp int64 `description:"切割的时间戳"`
  416. ChartLegend string
  417. Years string
  418. }
  419. type QuarterXDateItem struct {
  420. StartDate time.Time
  421. EndDate time.Time
  422. ShowName string
  423. ChartLegend string
  424. CuttingDataTimestamp int64 `description:"切割的时间戳"`
  425. }
  426. type QuarterDataList []*QuarterData
  427. func (m QuarterDataList) Len() int {
  428. return len(m)
  429. }
  430. func (m QuarterDataList) Less(i, j int) bool {
  431. return m[i].Years < m[j].Years
  432. }
  433. func (m QuarterDataList) Swap(i, j int) {
  434. m[i], m[j] = m[j], m[i]
  435. }
  436. // ChartDetailApiResponse 图表详情接口响应体
  437. type ChartDetailApiResponse struct {
  438. Ret int
  439. Msg string
  440. ErrMsg string
  441. Data *ChartInfoDetailResp
  442. }