作者 庄敏学

图表列表增加更新时间

@@ -24,6 +24,7 @@ _testmain.go @@ -24,6 +24,7 @@ _testmain.go
24 .log 24 .log
25 .idea 25 .idea
26 .vscode 26 .vscode
  27 +cmd/chart-server/api/go_build_bchart
27 28
28 app.log 29 app.log
29 #go.sum 30 #go.sum
@@ -82,6 +82,7 @@ type ChartItem struct { @@ -82,6 +82,7 @@ type ChartItem struct {
82 Name string `json:"name,optional"` // 名称 82 Name string `json:"name,optional"` // 名称
83 Cover string `json:"cover,optional"` // 封面 83 Cover string `json:"cover,optional"` // 封面
84 ChartType string `json:"chartType,optional"` // 图表类型 84 ChartType string `json:"chartType,optional"` // 图表类型
  85 + UpdatedAt int `json:"updatedAt,optional"` // 更新时间
85 ChartProperty *ChartProperty `json:"property,optional,omitempty"` //属性 86 ChartProperty *ChartProperty `json:"property,optional,omitempty"` //属性
86 } 87 }
87 88
1 -  
2 syntax = "v1" 1 syntax = "v1"
3 2
4 info( 3 info(
5 - title: "天联字库图表模板"  
6 - desc: "图表模板"  
7 - author: "小火箭"  
8 - email: "email"  
9 - version: "v1" 4 + title: "天联字库图表模板"
  5 + desc: "图表模板"
  6 + author: "小火箭"
  7 + email: "email"
  8 + version: "v1"
10 ) 9 )
11 10
12 @server( 11 @server(
13 - prefix: v1  
14 - group: chart  
15 - jwt: JwtAuth  
16 - //middleware: Authority 12 + prefix: v1
  13 + group: chart
  14 + jwt: JwtAuth
  15 + //middleware: Authority
17 ) 16 )
18 service Core { 17 service Core {
19 - @doc "保存图表"  
20 - @handler saveChart  
21 - post /chart (ChartSaveRequest) returns (ChartSaveResponse)  
22 - @doc "图表另存为"  
23 - @handler saveAsChart  
24 - post /chart/saveas (ChartSaveAsRequest) returns (ChartSaveAsResponse)  
25 - @doc "删除图表"  
26 - @handler deleteChart  
27 - delete /chart/:id (ChartDeleteRequest) returns (ChartDeleteResponse)  
28 - @doc "更新图表(配置)"  
29 - @handler updateChart  
30 - put /chart/:id (ChartUpdateRequest) returns (ChartUpdateResponse)  
31 - @doc "搜索图表"  
32 - @handler searchChart  
33 - post /chart/search (ChartSearchRequest) returns (ChartSearchResponse)  
34 - @doc "移动图表"  
35 - @handler updateChartSort  
36 - post /chart/move (ChartUpdateSortRequest) returns (ChartUpdateSortResponse)  
37 - @doc "重命名图表"  
38 - @handler renameChartSort  
39 - post /chart/rename (ChartRenameRequest) returns (ChartRenameResponse) 18 + @doc "保存图表"
  19 + @handler saveChart
  20 + post /chart (ChartSaveRequest) returns (ChartSaveResponse)
  21 + @doc "图表另存为"
  22 + @handler saveAsChart
  23 + post /chart/saveas (ChartSaveAsRequest) returns (ChartSaveAsResponse)
  24 + @doc "删除图表"
  25 + @handler deleteChart
  26 + delete /chart/:id (ChartDeleteRequest) returns (ChartDeleteResponse)
  27 + @doc "更新图表(配置)"
  28 + @handler updateChart
  29 + put /chart/:id (ChartUpdateRequest) returns (ChartUpdateResponse)
  30 + @doc "搜索图表"
  31 + @handler searchChart
  32 + post /chart/search (ChartSearchRequest) returns (ChartSearchResponse)
  33 + @doc "移动图表"
  34 + @handler updateChartSort
  35 + post /chart/move (ChartUpdateSortRequest) returns (ChartUpdateSortResponse)
  36 + @doc "重命名图表"
  37 + @handler renameChartSort
  38 + post /chart/rename (ChartRenameRequest) returns (ChartRenameResponse)
40 39
41 - @doc "搜索图表组件"  
42 - @handler searchChartComponents  
43 - post /chart/components/search(ChartComponentSearchRequest)returns(ChartComponentSearchResponse) 40 + @doc "搜索图表组件"
  41 + @handler searchChartComponents
  42 + post /chart/components/search(ChartComponentSearchRequest)returns(ChartComponentSearchResponse)
44 } 43 }
45 44
46 @server( 45 @server(
47 - prefix: v1  
48 - group: chart 46 + prefix: v1
  47 + group: chart
49 ) 48 )
50 service Core { 49 service Core {
51 - @doc "加载图表数据"  
52 - @handler loadChartData  
53 - post /chart/load-data (LoadChartDataRequest) returns (LoadChartDataResponse)  
54 - @doc "获取图表详情"  
55 - @handler getChart  
56 - get /chart/:id (ChartGetRequest) returns (ChartGetResponse) 50 + @doc "加载图表数据"
  51 + @handler loadChartData
  52 + post /chart/load-data (LoadChartDataRequest) returns (LoadChartDataResponse)
  53 + @doc "获取图表详情"
  54 + @handler getChart
  55 + get /chart/:id (ChartGetRequest) returns (ChartGetResponse)
57 } 56 }
58 57
59 type ( 58 type (
60 - ChartGetRequest { 59 + ChartGetRequest {
61 Id int64 `path:"id"` 60 Id int64 `path:"id"`
62 } 61 }
63 - ChartGetResponse struct{ 62 + ChartGetResponse {
64 Chart ChartItem `json:"chart"` 63 Chart ChartItem `json:"chart"`
65 - }  
66 -  
67 - ChartSaveRequest struct{  
68 - Pid int64 `json:"pid,optional"`// 父级ID  
69 - Type string `json:"type"`// 类型 report:报表 group:分组 chart:图表  
70 - Name string `json:"name,optional"`// 名称  
71 - ChartType string `json:"chartType"` // 图表类型  
72 - Cover string `json:"cover,optional"` // 封面  
73 - ChartProperty ChartProperty `json:"property"` // 图表属性  
74 - }  
75 - ChartSaveResponse struct{  
76 - Chart ChartItem `json:"chart"`  
77 - } 64 + }
78 65
79 - ChartSaveAsRequest struct{  
80 - ChartId int64 `json:"chartId"` // 图表Id  
81 - Name string `json:"name"`// 名称  
82 - }  
83 - ChartSaveAsResponse struct{  
84 - Chart ChartItem `json:"chart"`  
85 - } 66 + ChartSaveRequest {
  67 + Pid int64 `json:"pid,optional"` // 父级ID
  68 + Type string `json:"type"` // 类型 report:报表 group:分组 chart:图表
  69 + Name string `json:"name,optional"` // 名称
  70 + ChartType string `json:"chartType"` // 图表类型
  71 + Cover string `json:"cover,optional"` // 封面
  72 + ChartProperty ChartProperty `json:"property"` // 图表属性
  73 + }
  74 + ChartSaveResponse {
  75 + Chart ChartItem `json:"chart"`
  76 + }
86 77
87 - ChartDeleteRequest struct{  
88 - Id int64 `path:"id"`  
89 - }  
90 - ChartDeleteResponse struct{} 78 + ChartSaveAsRequest {
  79 + ChartId int64 `json:"chartId"` // 图表Id
  80 + Name string `json:"name"` // 名称
  81 + }
  82 + ChartSaveAsResponse {
  83 + Chart ChartItem `json:"chart"`
  84 + }
91 85
92 - ChartUpdateRequest struct{ 86 + ChartDeleteRequest {
93 Id int64 `path:"id"` 87 Id int64 `path:"id"`
94 - Cover string `json:"cover,optional"` // 封面  
95 - ChartProperty ChartProperty `json:"property"` // 图表属性  
96 - }  
97 - ChartUpdateResponse struct{} 88 + }
  89 + ChartDeleteResponse struct{}
98 90
99 - ChartSearchRequest struct {  
100 - IncludeTypes []string `json:"includeTypes,optional"` //包含的类型: 类型 report:报表 group:分组 chart:图表(未指定返回所有)  
101 - DataStyle string `json:"dataStyle,optional"` // 数据样式 tree:树形 flat:平铺  
102 - }  
103 - ChartSearchResponse{  
104 - List []ChartItem `json:"list"`  
105 - Total int64 `json:"total"`  
106 - }  
107 - ChartUpdateSortRequest struct{  
108 - Id int64 `json:"id"`  
109 - Pid int64 `json:"pid"`  
110 - Index int `json:"index"` // 元素下标  
111 - }  
112 - ChartUpdateSortResponse struct{}  
113 - ChartRenameRequest struct{  
114 - Id int64 `json:"id"`  
115 - Name string `json:"name"`// 名称  
116 - }  
117 - ChartRenameResponse struct{}  
118 - ChartItem struct{  
119 - Id int64 `json:"id,optional"`// ID  
120 - Pid int64 `json:"pid,optional"`// 父级ID  
121 - Type string `json:"type,optional"`// 类型 report:报表 group:分组 chart:图表  
122 - Sort int64 `json:"sort,optional"`// 排序  
123 - Name string `json:"name,optional"`// 名称  
124 - Cover string `json:"cover,optional"` // 封面  
125 - ChartType string `json:"chartType,optional"` // 图表类型  
126 - ChartProperty *ChartProperty `json:"property,optional,omitempty"` //属性  
127 - }  
128 - LoadChartDataRequest struct{  
129 - ChartId int64 `json:"chartId"`  
130 - }  
131 - LoadChartDataResponse struct{ 91 + ChartUpdateRequest {
  92 + Id int64 `path:"id"`
  93 + Cover string `json:"cover,optional"` // 封面
  94 + ChartProperty ChartProperty `json:"property"` // 图表属性
  95 + }
  96 + ChartUpdateResponse struct{}
132 97
133 - } 98 + ChartSearchRequest {
  99 + IncludeTypes []string `json:"includeTypes,optional"` //包含的类型: 类型 report:报表 group:分组 chart:图表(未指定返回所有)
  100 + DataStyle string `json:"dataStyle,optional"` // 数据样式 tree:树形 flat:平铺
  101 + }
  102 + ChartSearchResponse {
  103 + List []ChartItem `json:"list"`
  104 + Total int64 `json:"total"`
  105 + }
  106 + ChartUpdateSortRequest {
  107 + Id int64 `json:"id"`
  108 + Pid int64 `json:"pid"`
  109 + Index int `json:"index"` // 元素下标
  110 + }
  111 + ChartUpdateSortResponse struct{}
  112 + ChartRenameRequest {
  113 + Id int64 `json:"id"`
  114 + Name string `json:"name"` // 名称
  115 + }
  116 + ChartRenameResponse struct{}
  117 + ChartItem {
  118 + Id int64 `json:"id,optional"` // ID
  119 + Pid int64 `json:"pid,optional"` // 父级ID
  120 + Type string `json:"type,optional"` // 类型 report:报表 group:分组 chart:图表
  121 + Sort int64 `json:"sort,optional"` // 排序
  122 + Name string `json:"name,optional"` // 名称
  123 + Cover string `json:"cover,optional"` // 封面
  124 + ChartType string `json:"chartType,optional"` // 图表类型
  125 + UpdatedAt int `json:"updatedAt,optional"` // 更新时间
  126 + ChartProperty *ChartProperty `json:"property,optional,omitempty"` //属性
  127 + }
  128 + LoadChartDataRequest {
  129 + ChartId int64 `json:"chartId"`
  130 + }
  131 + LoadChartDataResponse {
  132 + }
134 ) 133 )
135 134
136 -type(  
137 - ChartComponentSearchRequest{  
138 - Name string `json:"name,optional"`  
139 - }  
140 - ChartComponentSearchResponse{  
141 - List []ChartComponentItem `json:"list"`  
142 - Total int64 `json:"total"`  
143 - }  
144 - ChartComponentItem struct{  
145 - Name string `json:"name,optional"`// 名称  
146 - Code string `json:"code,optional"`// 编码  
147 - Cover string `json:"cover,optional"` // 封面  
148 - Desc string `json:"desc,optional"`// 描述  
149 - } 135 +type (
  136 + ChartComponentSearchRequest {
  137 + Name string `json:"name,optional"`
  138 + }
  139 + ChartComponentSearchResponse {
  140 + List []ChartComponentItem `json:"list"`
  141 + Total int64 `json:"total"`
  142 + }
  143 + ChartComponentItem {
  144 + Name string `json:"name,optional"` // 名称
  145 + Code string `json:"code,optional"` // 编码
  146 + Cover string `json:"cover,optional"` // 封面
  147 + Desc string `json:"desc,optional"` // 描述
  148 + }
150 ) 149 )
151 150
152 -type(  
153 - ChartProperty struct {  
154 - Title Title `json:"title,optional"` // 标题  
155 - TableAbility TableAbility `json:"table,optional"` // 表筛选功能  
156 - Series []Series `json:"series,optional"` // 系列(数据源)  
157 - Other Other `json:"other,optional"` // 其他额外配置  
158 - }  
159 - Other struct {  
160 - Quarter *Quarter `json:"quarter,optional,omitempty"` // 四分图  
161 - }  
162 - Quarter struct {  
163 - XAxisLabel string `json:"xAxisLabel"` // x轴标签名  
164 - XAxisFirstLabel string `json:"xAxisFirstLabel"` // 签名1  
165 - XAxisSecondLabel string `json:"xAxisSecondLabel"` // 签名2  
166 - YAxisLabel string `json:"yAxisLabel"` // y轴标签名  
167 - YAxisFirstLabel string `json:"yAxisFirstLabel"` // y标签1  
168 - YAxisSecondLabel string `json:"yAxisSecondLabel"` // y标签2  
169 - Area string `json:"area"` // 图形面积  
170 - AreaColor bool `json:"areaColor"` // 颜色  
171 - SeriesList []QuarterSeries `json:"seriesList"` // 图形系列  
172 - }  
173 - QuarterSeries struct {  
174 - SeriesValue string `json:"seriesValue"`  
175 - }  
176 - Title struct {  
177 - TitleSwitch bool `json:"titleSwitch,optional"` // 组件标题开关  
178 - IntroduceSwitch bool `json:"introduceSwitch,optional"` // 组件说明开关  
179 - TitleType string `json:"titleType"` // 标题类型  
180 - Heading string `json:"heading,optional"` // 主标题  
181 - SubTitle string `json:"subTitle,optional"` // 副标题  
182 - ExplainType string `json:"explainType,optional,options=[text,,file]"` // text file ,options=text||file  
183 - ExplainTxt string `json:"explainTxt,optional"` // 文字说明  
184 - FileName string `json:"fileName,optional"` // 文件名  
185 - FileUrl string `json:"fileUrl,optional"` // 组件图片/视频  
186 - Align string `json:"align,optional"` // 废弃 文本对齐方式 left center right  
187 - HeadingAlign string `json:"headingAlign,optional"` // 主标题 文本对齐方式 left center right  
188 - SubAlign string `json:"subAlign,optional"` // 副标题 文本对齐方式 left center right  
189 - }  
190 - TableAbility struct {  
191 - FilterSwitch bool `json:"filterSwitch,optional"` // 表筛选功能开关  
192 - DimensionList []Dimension `json:"dimensionList,optional"` // 维度列表  
193 - CardSwitch bool `json:"cardSwitch,optional"` // 顺序标识开关  
194 - CardIdent string `json:"cardIdent,optional"` // 顺序标识  
195 - CardOrderList []CardOrderItem `json:"cardOrderList,optional"` // 卡片列表顺序  
196 - }  
197 - CardOrderItem struct {  
198 - CardId string `json:"cardId,optional"`  
199 - }  
200 - Series struct {// 图表类型 (记录型表格:RecordTable-1 总体指标:MetricsCard-1 容器卡片:ContainerCard-1 四分图:QuarterChart-1)  
201 - Name string `json:"name"` // 名称 (例如 指标1、指标2)  
202 - SourceFrom string `json:"from,options=[ByteBank,User]"` // 数据源类型 ByteBank:字库 User:用户自定义  
203 - DataSourceId int64 `json:"dataSourceId,optional,omitempty"` // 数据源ID(from值为ByteBank时有值)  
204 - CustomText string `json:"customText,optional,omitempty"` // 自定义数据文本(from值为User时有值)  
205 - MatchExpressions []Expression `json:"matchExpressions,optional,omitempty"` // 条件匹配表达式(总体指标)  
206 - TargetText string `json:"targetText,optional,omitempty"` // 指标名文本  
207 - TargetNum string `json:"targetNum,optional,omitempty"` // 指标数值  
208 - TargetUnit string `json:"targetUnit,optional,omitempty"` // 指标单位  
209 - }  
210 - Expression struct {  
211 - Operator string `json:"operator"` // 操作符号 <,>,==,<>,<=,>=  
212 - CompareValue string `json:"compareValue"` // 比较值  
213 - ToValue string `json:"toValue"` // 显示值(转为)  
214 - }  
215 - Dimension struct{  
216 - Name string `json:"name,optional,omitempty"`  
217 - Value string `json:"dimensionVal,optional"`  
218 - } 151 +type (
  152 + ChartProperty {
  153 + Title Title `json:"title,optional"` // 标题
  154 + TableAbility TableAbility `json:"table,optional"` // 表筛选功能
  155 + Series []Series `json:"series,optional"` // 系列(数据源)
  156 + Other Other `json:"other,optional"` // 其他额外配置
  157 + }
  158 + Other {
  159 + Quarter *Quarter `json:"quarter,optional,omitempty"` // 四分图
  160 + }
  161 + Quarter {
  162 + XAxisLabel string `json:"xAxisLabel"` // x轴标签名
  163 + XAxisFirstLabel string `json:"xAxisFirstLabel"` // 签名1
  164 + XAxisSecondLabel string `json:"xAxisSecondLabel"` // 签名2
  165 + YAxisLabel string `json:"yAxisLabel"` // y轴标签名
  166 + YAxisFirstLabel string `json:"yAxisFirstLabel"` // y标签1
  167 + YAxisSecondLabel string `json:"yAxisSecondLabel"` // y标签2
  168 + Area string `json:"area"` // 图形面积
  169 + AreaColor bool `json:"areaColor"` // 颜色
  170 + SeriesList []QuarterSeries `json:"seriesList"` // 图形系列
  171 + }
  172 + QuarterSeries {
  173 + SeriesValue string `json:"seriesValue"`
  174 + }
  175 + Title {
  176 + TitleSwitch bool `json:"titleSwitch,optional"` // 组件标题开关
  177 + IntroduceSwitch bool `json:"introduceSwitch,optional"` // 组件说明开关
  178 + TitleType string `json:"titleType"` // 标题类型
  179 + Heading string `json:"heading,optional"` // 主标题
  180 + SubTitle string `json:"subTitle,optional"` // 副标题
  181 + ExplainType string `json:"explainType,optional,options=[text,,file]"` // text file ,options=text||file
  182 + ExplainTxt string `json:"explainTxt,optional"` // 文字说明
  183 + FileName string `json:"fileName,optional"` // 文件名
  184 + FileUrl string `json:"fileUrl,optional"` // 组件图片/视频
  185 + Align string `json:"align,optional"` // 废弃 文本对齐方式 left center right
  186 + HeadingAlign string `json:"headingAlign,optional"` // 主标题 文本对齐方式 left center right
  187 + SubAlign string `json:"subAlign,optional"` // 副标题 文本对齐方式 left center right
  188 + }
  189 + TableAbility {
  190 + FilterSwitch bool `json:"filterSwitch,optional"` // 表筛选功能开关
  191 + DimensionList []Dimension `json:"dimensionList,optional"` // 维度列表
  192 + CardSwitch bool `json:"cardSwitch,optional"` // 顺序标识开关
  193 + CardIdent string `json:"cardIdent,optional"` // 顺序标识
  194 + CardOrderList []CardOrderItem `json:"cardOrderList,optional"` // 卡片列表顺序
  195 + }
  196 + CardOrderItem {
  197 + CardId string `json:"cardId,optional"`
  198 + }
  199 + Series { // 图表类型 (记录型表格:RecordTable-1 总体指标:MetricsCard-1 容器卡片:ContainerCard-1 四分图:QuarterChart-1)
  200 + Name string `json:"name"` // 名称 (例如 指标1、指标2)
  201 + SourceFrom string `json:"from,options=[ByteBank,User]"` // 数据源类型 ByteBank:字库 User:用户自定义
  202 + DataSourceId int64 `json:"dataSourceId,optional,omitempty"` // 数据源ID(from值为ByteBank时有值)
  203 + CustomText string `json:"customText,optional,omitempty"` // 自定义数据文本(from值为User时有值)
  204 + MatchExpressions []Expression `json:"matchExpressions,optional,omitempty"` // 条件匹配表达式(总体指标)
  205 + TargetText string `json:"targetText,optional,omitempty"` // 指标名文本
  206 + TargetNum string `json:"targetNum,optional,omitempty"` // 指标数值
  207 + TargetUnit string `json:"targetUnit,optional,omitempty"` // 指标单位
  208 + }
  209 + Expression {
  210 + Operator string `json:"operator"` // 操作符号 <,>,==,<>,<=,>=
  211 + CompareValue string `json:"compareValue"` // 比较值
  212 + ToValue string `json:"toValue"` // 显示值(转为)
  213 + }
  214 + Dimension {
  215 + Name string `json:"name,optional,omitempty"`
  216 + Value string `json:"dimensionVal,optional"`
  217 + }
219 ) 218 )