作者 Administrator

合并分支 'dev' 到 'master'

Dev



查看合并请求 !1
@@ -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
@@ -3,11 +3,13 @@ Host: 0.0.0.0 @@ -3,11 +3,13 @@ Host: 0.0.0.0
3 Port: 8080 3 Port: 8080
4 Verbose: true 4 Verbose: true
5 HostName: http://sumifcc-bchart-dev.sumifcc.com 5 HostName: http://sumifcc-bchart-dev.sumifcc.com
  6 +Timeout: 30000
6 7
7 Log: 8 Log:
8 Mode: file 9 Mode: file
9 Encoding: plain 10 Encoding: plain
10 Level: debug # info 11 Level: debug # info
  12 + MaxContentLength: 5120 # 5KB
11 13
12 JwtAuth: 14 JwtAuth:
13 AccessSecret: digital-platform 15 AccessSecret: digital-platform
@@ -3,6 +3,7 @@ Host: 0.0.0.0 @@ -3,6 +3,7 @@ Host: 0.0.0.0
3 Port: 8081 3 Port: 8081
4 Verbose: true 4 Verbose: true
5 HostName: http://sumifcc-bchart-dev.sumifcc.com 5 HostName: http://sumifcc-bchart-dev.sumifcc.com
  6 +Timeout: 30000
6 7
7 Log: 8 Log:
8 #Mode: file 9 #Mode: file
@@ -10,6 +11,7 @@ Log: @@ -10,6 +11,7 @@ Log:
10 Level: debug # info 11 Level: debug # info
11 MaxSize: 1 # 2MB 12 MaxSize: 1 # 2MB
12 TimeFormat: 2006-01-02 15:04:05.000 13 TimeFormat: 2006-01-02 15:04:05.000
  14 + MaxContentLength: 5120 # 5KB
13 15
14 JwtAuth: 16 JwtAuth:
15 AccessSecret: digital-platform 17 AccessSecret: digital-platform
@@ -32,7 +32,7 @@ func (l *SearchTableByModuleLogic) SearchTableByModule(req *types.SearchTableByM @@ -32,7 +32,7 @@ func (l *SearchTableByModuleLogic) SearchTableByModule(req *types.SearchTableByM
32 list, err := l.svcCtx.ByteMetadataService.ObjectTableSearch(l.ctx, bytelib.ObjectTableSearchRequest{ 32 list, err := l.svcCtx.ByteMetadataService.ObjectTableSearch(l.ctx, bytelib.ObjectTableSearchRequest{
33 Token: req.Token, 33 Token: req.Token,
34 TableTypes: []string{bytelib.MainTable, bytelib.SubTable, bytelib.SideTable}, 34 TableTypes: []string{bytelib.MainTable, bytelib.SubTable, bytelib.SideTable},
35 - Module: bytelib.ModuleDigitalCenter, 35 + Module: bytelib.ModuleChartTemplate,
36 }) 36 })
37 if err != nil { 37 if err != nil {
38 batchError.Add(err) 38 batchError.Add(err)
@@ -52,7 +52,7 @@ func (l *SearchTableByModuleLogic) SearchTableByModule(req *types.SearchTableByM @@ -52,7 +52,7 @@ func (l *SearchTableByModuleLogic) SearchTableByModule(req *types.SearchTableByM
52 }, func() { 52 }, func() {
53 list, err := l.svcCtx.ByteMetadataService.ObjectTableSearch(l.ctx, bytelib.ObjectTableSearchRequest{ 53 list, err := l.svcCtx.ByteMetadataService.ObjectTableSearch(l.ctx, bytelib.ObjectTableSearchRequest{
54 Token: req.Token, 54 Token: req.Token,
55 - TableTypes: []string{bytelib.CalculateItem, bytelib.CalculateSet}, 55 + TableTypes: []string{bytelib.CalculateItem},
56 Module: bytelib.ModuleCalculateCenter, 56 Module: bytelib.ModuleCalculateCenter,
57 ReturnGroupItem: true, 57 ReturnGroupItem: true,
58 ExcludeTables: []int{0}, 58 ExcludeTables: []int{0},
@@ -60,7 +60,19 @@ func (l *SearchTableByModuleLogic) SearchTableByModule(req *types.SearchTableByM @@ -60,7 +60,19 @@ func (l *SearchTableByModuleLogic) SearchTableByModule(req *types.SearchTableByM
60 if err != nil { 60 if err != nil {
61 batchError.Add(err) 61 batchError.Add(err)
62 } 62 }
63 - result["计算模块"] = newList(list) 63 + result["计算项"] = newList(list)
  64 + }, func() {
  65 + list, err := l.svcCtx.ByteMetadataService.ObjectTableSearch(l.ctx, bytelib.ObjectTableSearchRequest{
  66 + Token: req.Token,
  67 + TableTypes: []string{bytelib.CalculateSet},
  68 + Module: bytelib.ModuleCalculateCenter,
  69 + ReturnGroupItem: true,
  70 + ExcludeTables: []int{0},
  71 + })
  72 + if err != nil {
  73 + batchError.Add(err)
  74 + }
  75 + result["计算集"] = newList(list)
64 }) 76 })
65 if err = batchError.Err(); err != nil { 77 if err = batchError.Err(); err != nil {
66 logx.Error(err) 78 logx.Error(err)
@@ -42,6 +42,7 @@ func NewAppPageItem(appPage *domain.AppPage, charts []*domain.Chart) AppPageItem @@ -42,6 +42,7 @@ func NewAppPageItem(appPage *domain.AppPage, charts []*domain.Chart) AppPageItem
42 Id: appPage.Id, 42 Id: appPage.Id,
43 Name: appPage.Name, 43 Name: appPage.Name,
44 Cover: appPage.Cover, 44 Cover: appPage.Cover,
  45 + UpdatedAt: appPage.UpdatedAt,
45 } 46 }
46 for _, id := range appPage.Charts { 47 for _, id := range appPage.Charts {
47 if v, ok := chartsMap[id]; ok { 48 if v, ok := chartsMap[id]; ok {
@@ -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
@@ -153,6 +154,13 @@ type Title struct { @@ -153,6 +154,13 @@ type Title struct {
153 type TableAbility struct { 154 type TableAbility struct {
154 FilterSwitch bool `json:"filterSwitch,optional"` // 表筛选功能开关 155 FilterSwitch bool `json:"filterSwitch,optional"` // 表筛选功能开关
155 DimensionList []Dimension `json:"dimensionList,optional"` // 维度列表 156 DimensionList []Dimension `json:"dimensionList,optional"` // 维度列表
  157 + CardSwitch bool `json:"cardSwitch,optional"` // 顺序标识开关
  158 + CardIdent string `json:"cardIdent,optional"` // 顺序标识
  159 + CardOrderList []CardOrderItem `json:"cardOrderList,optional"` // 卡片列表顺序
  160 +}
  161 +
  162 +type CardOrderItem struct {
  163 + CardId string `json:"cardId,optional"`
156 } 164 }
157 165
158 type Series struct { 166 type Series struct {
@@ -291,6 +299,7 @@ type AppPageItem struct { @@ -291,6 +299,7 @@ type AppPageItem struct {
291 Name string `json:"name,optional"` // 名称 299 Name string `json:"name,optional"` // 名称
292 Cover string `json:"cover,optional"` // 封面 300 Cover string `json:"cover,optional"` // 封面
293 Charts []AppPageChartItem `json:"charts,optional"` // 图表 301 Charts []AppPageChartItem `json:"charts,optional"` // 图表
  302 + UpdatedAt int64 `json:"updatedAt,optional"` //更新时间
294 } 303 }
295 304
296 type AppPageChartItem struct { 305 type AppPageChartItem struct {
@@ -162,7 +162,7 @@ func (repository *AppPageRepository) Find(ctx context.Context, conn transaction. @@ -162,7 +162,7 @@ func (repository *AppPageRepository) Find(ctx context.Context, conn transaction.
162 total int64 162 total int64
163 ) 163 )
164 queryFunc := func() (interface{}, error) { 164 queryFunc := func() (interface{}, error) {
165 - tx = tx.Model(&ms).Order("id desc") 165 + tx = tx.Model(&ms).Order("updated_at desc")
166 if v, ok := queryOptions["tenantId"]; ok { 166 if v, ok := queryOptions["tenantId"]; ok {
167 tx.Where("tenant_id = ?", v) 167 tx.Where("tenant_id = ?", v)
168 } 168 }
@@ -119,7 +119,7 @@ func (repository *ChartRepository) Find(ctx context.Context, conn transaction.Co @@ -119,7 +119,7 @@ func (repository *ChartRepository) Find(ctx context.Context, conn transaction.Co
119 total int64 119 total int64
120 ) 120 )
121 queryFunc := func() (interface{}, error) { 121 queryFunc := func() (interface{}, error) {
122 - tx = tx.Model(&ms).Order("id desc") //.Order("pid asc").Order("sort asc") 122 + tx = tx.Model(&ms).Order("updated_at desc") //.Order("pid asc").Order("sort asc")
123 if v, ok := queryOptions["ids"]; ok { 123 if v, ok := queryOptions["ids"]; ok {
124 tx.Where("id in (?)", v) 124 tx.Where("id in (?)", v)
125 } 125 }
@@ -63,6 +63,13 @@ type Title struct { @@ -63,6 +63,13 @@ type Title struct {
63 type TableAbility struct { 63 type TableAbility struct {
64 FilterSwitch bool `json:"filterSwitch,optional"` // 表筛选功能开关 64 FilterSwitch bool `json:"filterSwitch,optional"` // 表筛选功能开关
65 DimensionList []Dimension `json:"dimensionList,optional"` // 维度列表 65 DimensionList []Dimension `json:"dimensionList,optional"` // 维度列表
  66 + CardSwitch bool `json:"cardSwitch,optional"` // 顺序标识开关
  67 + CardIdent string `json:"cardIdent,optional"` // 顺序标识
  68 + CardOrderList []CardOrderItem `json:"cardOrderList,optional"` // 卡片列表顺序
  69 +}
  70 +
  71 +type CardOrderItem struct {
  72 + CardId string `json:"cardId,optional"`
66 } 73 }
67 74
68 type Series struct { 75 type Series struct {
@@ -75,7 +75,7 @@ type TableData struct { @@ -75,7 +75,7 @@ type TableData struct {
75 //数据 75 //数据
76 Grid *TableDataGrid `json:"grid,optional"` 76 Grid *TableDataGrid `json:"grid,optional"`
77 //字段 77 //字段
78 - Fields []*Field `json:"fields"` 78 + Fields []*Field `json:"fields,optional"`
79 } 79 }
80 80
81 type TableDataGrid struct { 81 type TableDataGrid struct {
@@ -12,10 +12,11 @@ var ( @@ -12,10 +12,11 @@ var (
12 ) 12 )
13 13
14 const ( 14 const (
15 - ModuleAll = ModuleDigitalCenter | ModuleQuerySetCenter | ModuleCalculateCenter 15 + ModuleAll = ModuleDigitalCenter | ModuleQuerySetCenter | ModuleCalculateCenter | ModuleChartTemplate
16 ModuleDigitalCenter = 1 16 ModuleDigitalCenter = 1
17 ModuleQuerySetCenter = 2 17 ModuleQuerySetCenter = 2
18 ModuleCalculateCenter = 4 18 ModuleCalculateCenter = 4
  19 + ModuleChartTemplate = 8
19 ) 20 )
20 21
21 const ( 22 const (
@@ -94,6 +94,7 @@ type ( @@ -94,6 +94,7 @@ type (
94 Name string `json:"name,optional"` // 名称 94 Name string `json:"name,optional"` // 名称
95 Cover string `json:"cover,optional"` // 封面 95 Cover string `json:"cover,optional"` // 封面
96 Charts []AppPageChartItem `json:"charts,optional"`// 图表 96 Charts []AppPageChartItem `json:"charts,optional"`// 图表
  97 + UpdatedAt int64 `json:"updatedAt,optional"` //更新时间
97 } 98 }
98 AppPageChartItem struct{ 99 AppPageChartItem struct{
99 ChartId int64 `json:"chartId"` // 图表ID 100 ChartId int64 `json:"chartId"` // 图表ID
1 -  
2 syntax = "v1" 1 syntax = "v1"
3 2
4 info( 3 info(
@@ -60,106 +59,106 @@ type ( @@ -60,106 +59,106 @@ 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 } 64 }
66 65
67 - ChartSaveRequest struct{  
68 - Pid int64 `json:"pid,optional"`// 父级ID  
69 - Type string `json:"type"`// 类型 report:报表 group:分组 chart:图表  
70 - Name string `json:"name,optional"`// 名称 66 + ChartSaveRequest {
  67 + Pid int64 `json:"pid,optional"` // 父级ID
  68 + Type string `json:"type"` // 类型 report:报表 group:分组 chart:图表
  69 + Name string `json:"name,optional"` // 名称
71 ChartType string `json:"chartType"` // 图表类型 70 ChartType string `json:"chartType"` // 图表类型
72 Cover string `json:"cover,optional"` // 封面 71 Cover string `json:"cover,optional"` // 封面
73 ChartProperty ChartProperty `json:"property"` // 图表属性 72 ChartProperty ChartProperty `json:"property"` // 图表属性
74 } 73 }
75 - ChartSaveResponse struct{ 74 + ChartSaveResponse {
76 Chart ChartItem `json:"chart"` 75 Chart ChartItem `json:"chart"`
77 } 76 }
78 77
79 - ChartSaveAsRequest struct{ 78 + ChartSaveAsRequest {
80 ChartId int64 `json:"chartId"` // 图表Id 79 ChartId int64 `json:"chartId"` // 图表Id
81 - Name string `json:"name"`// 名称 80 + Name string `json:"name"` // 名称
82 } 81 }
83 - ChartSaveAsResponse struct{ 82 + ChartSaveAsResponse {
84 Chart ChartItem `json:"chart"` 83 Chart ChartItem `json:"chart"`
85 } 84 }
86 85
87 - ChartDeleteRequest struct{ 86 + ChartDeleteRequest {
88 Id int64 `path:"id"` 87 Id int64 `path:"id"`
89 } 88 }
90 ChartDeleteResponse struct{} 89 ChartDeleteResponse struct{}
91 90
92 - ChartUpdateRequest struct{ 91 + ChartUpdateRequest {
93 Id int64 `path:"id"` 92 Id int64 `path:"id"`
94 Cover string `json:"cover,optional"` // 封面 93 Cover string `json:"cover,optional"` // 封面
95 ChartProperty ChartProperty `json:"property"` // 图表属性 94 ChartProperty ChartProperty `json:"property"` // 图表属性
96 } 95 }
97 ChartUpdateResponse struct{} 96 ChartUpdateResponse struct{}
98 97
99 - ChartSearchRequest struct { 98 + ChartSearchRequest {
100 IncludeTypes []string `json:"includeTypes,optional"` //包含的类型: 类型 report:报表 group:分组 chart:图表(未指定返回所有) 99 IncludeTypes []string `json:"includeTypes,optional"` //包含的类型: 类型 report:报表 group:分组 chart:图表(未指定返回所有)
101 DataStyle string `json:"dataStyle,optional"` // 数据样式 tree:树形 flat:平铺 100 DataStyle string `json:"dataStyle,optional"` // 数据样式 tree:树形 flat:平铺
102 } 101 }
103 - ChartSearchResponse{ 102 + ChartSearchResponse {
104 List []ChartItem `json:"list"` 103 List []ChartItem `json:"list"`
105 Total int64 `json:"total"` 104 Total int64 `json:"total"`
106 } 105 }
107 - ChartUpdateSortRequest struct{ 106 + ChartUpdateSortRequest {
108 Id int64 `json:"id"` 107 Id int64 `json:"id"`
109 Pid int64 `json:"pid"` 108 Pid int64 `json:"pid"`
110 Index int `json:"index"` // 元素下标 109 Index int `json:"index"` // 元素下标
111 } 110 }
112 ChartUpdateSortResponse struct{} 111 ChartUpdateSortResponse struct{}
113 - ChartRenameRequest struct{ 112 + ChartRenameRequest {
114 Id int64 `json:"id"` 113 Id int64 `json:"id"`
115 - Name string `json:"name"`// 名称 114 + Name string `json:"name"` // 名称
116 } 115 }
117 ChartRenameResponse struct{} 116 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"`// 名称 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"` // 名称
124 Cover string `json:"cover,optional"` // 封面 123 Cover string `json:"cover,optional"` // 封面
125 ChartType string `json:"chartType,optional"` // 图表类型 124 ChartType string `json:"chartType,optional"` // 图表类型
  125 + UpdatedAt int `json:"updatedAt,optional"` // 更新时间
126 ChartProperty *ChartProperty `json:"property,optional,omitempty"` //属性 126 ChartProperty *ChartProperty `json:"property,optional,omitempty"` //属性
127 } 127 }
128 - LoadChartDataRequest struct{ 128 + LoadChartDataRequest {
129 ChartId int64 `json:"chartId"` 129 ChartId int64 `json:"chartId"`
130 } 130 }
131 - LoadChartDataResponse struct{  
132 - 131 + LoadChartDataResponse {
133 } 132 }
134 ) 133 )
135 134
136 -type(  
137 - ChartComponentSearchRequest{ 135 +type (
  136 + ChartComponentSearchRequest {
138 Name string `json:"name,optional"` 137 Name string `json:"name,optional"`
139 } 138 }
140 - ChartComponentSearchResponse{ 139 + ChartComponentSearchResponse {
141 List []ChartComponentItem `json:"list"` 140 List []ChartComponentItem `json:"list"`
142 Total int64 `json:"total"` 141 Total int64 `json:"total"`
143 } 142 }
144 - ChartComponentItem struct{  
145 - Name string `json:"name,optional"`// 名称  
146 - Code string `json:"code,optional"`// 编码 143 + ChartComponentItem {
  144 + Name string `json:"name,optional"` // 名称
  145 + Code string `json:"code,optional"` // 编码
147 Cover string `json:"cover,optional"` // 封面 146 Cover string `json:"cover,optional"` // 封面
148 - Desc string `json:"desc,optional"`// 描述 147 + Desc string `json:"desc,optional"` // 描述
149 } 148 }
150 ) 149 )
151 150
152 -type(  
153 - ChartProperty struct { 151 +type (
  152 + ChartProperty {
154 Title Title `json:"title,optional"` // 标题 153 Title Title `json:"title,optional"` // 标题
155 TableAbility TableAbility `json:"table,optional"` // 表筛选功能 154 TableAbility TableAbility `json:"table,optional"` // 表筛选功能
156 Series []Series `json:"series,optional"` // 系列(数据源) 155 Series []Series `json:"series,optional"` // 系列(数据源)
157 Other Other `json:"other,optional"` // 其他额外配置 156 Other Other `json:"other,optional"` // 其他额外配置
158 } 157 }
159 - Other struct { 158 + Other {
160 Quarter *Quarter `json:"quarter,optional,omitempty"` // 四分图 159 Quarter *Quarter `json:"quarter,optional,omitempty"` // 四分图
161 } 160 }
162 - Quarter struct { 161 + Quarter {
163 XAxisLabel string `json:"xAxisLabel"` // x轴标签名 162 XAxisLabel string `json:"xAxisLabel"` // x轴标签名
164 XAxisFirstLabel string `json:"xAxisFirstLabel"` // 签名1 163 XAxisFirstLabel string `json:"xAxisFirstLabel"` // 签名1
165 XAxisSecondLabel string `json:"xAxisSecondLabel"` // 签名2 164 XAxisSecondLabel string `json:"xAxisSecondLabel"` // 签名2
@@ -170,10 +169,10 @@ type( @@ -170,10 +169,10 @@ type(
170 AreaColor bool `json:"areaColor"` // 颜色 169 AreaColor bool `json:"areaColor"` // 颜色
171 SeriesList []QuarterSeries `json:"seriesList"` // 图形系列 170 SeriesList []QuarterSeries `json:"seriesList"` // 图形系列
172 } 171 }
173 - QuarterSeries struct { 172 + QuarterSeries {
174 SeriesValue string `json:"seriesValue"` 173 SeriesValue string `json:"seriesValue"`
175 } 174 }
176 - Title struct { 175 + Title {
177 TitleSwitch bool `json:"titleSwitch,optional"` // 组件标题开关 176 TitleSwitch bool `json:"titleSwitch,optional"` // 组件标题开关
178 IntroduceSwitch bool `json:"introduceSwitch,optional"` // 组件说明开关 177 IntroduceSwitch bool `json:"introduceSwitch,optional"` // 组件说明开关
179 TitleType string `json:"titleType"` // 标题类型 178 TitleType string `json:"titleType"` // 标题类型
@@ -187,11 +186,17 @@ type( @@ -187,11 +186,17 @@ type(
187 HeadingAlign string `json:"headingAlign,optional"` // 主标题 文本对齐方式 left center right 186 HeadingAlign string `json:"headingAlign,optional"` // 主标题 文本对齐方式 left center right
188 SubAlign string `json:"subAlign,optional"` // 副标题 文本对齐方式 left center right 187 SubAlign string `json:"subAlign,optional"` // 副标题 文本对齐方式 left center right
189 } 188 }
190 - TableAbility struct { 189 + TableAbility {
191 FilterSwitch bool `json:"filterSwitch,optional"` // 表筛选功能开关 190 FilterSwitch bool `json:"filterSwitch,optional"` // 表筛选功能开关
192 DimensionList []Dimension `json:"dimensionList,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"`
193 } 198 }
194 - Series struct {// 图表类型 (记录型表格:RecordTable-1 总体指标:MetricsCard-1 容器卡片:ContainerCard-1 四分图:QuarterChart-1) 199 + Series { // 图表类型 (记录型表格:RecordTable-1 总体指标:MetricsCard-1 容器卡片:ContainerCard-1 四分图:QuarterChart-1)
195 Name string `json:"name"` // 名称 (例如 指标1、指标2) 200 Name string `json:"name"` // 名称 (例如 指标1、指标2)
196 SourceFrom string `json:"from,options=[ByteBank,User]"` // 数据源类型 ByteBank:字库 User:用户自定义 201 SourceFrom string `json:"from,options=[ByteBank,User]"` // 数据源类型 ByteBank:字库 User:用户自定义
197 DataSourceId int64 `json:"dataSourceId,optional,omitempty"` // 数据源ID(from值为ByteBank时有值) 202 DataSourceId int64 `json:"dataSourceId,optional,omitempty"` // 数据源ID(from值为ByteBank时有值)
@@ -201,12 +206,12 @@ type( @@ -201,12 +206,12 @@ type(
201 TargetNum string `json:"targetNum,optional,omitempty"` // 指标数值 206 TargetNum string `json:"targetNum,optional,omitempty"` // 指标数值
202 TargetUnit string `json:"targetUnit,optional,omitempty"` // 指标单位 207 TargetUnit string `json:"targetUnit,optional,omitempty"` // 指标单位
203 } 208 }
204 - Expression struct { 209 + Expression {
205 Operator string `json:"operator"` // 操作符号 <,>,==,<>,<=,>= 210 Operator string `json:"operator"` // 操作符号 <,>,==,<>,<=,>=
206 CompareValue string `json:"compareValue"` // 比较值 211 CompareValue string `json:"compareValue"` // 比较值
207 ToValue string `json:"toValue"` // 显示值(转为) 212 ToValue string `json:"toValue"` // 显示值(转为)
208 } 213 }
209 - Dimension struct{ 214 + Dimension {
210 Name string `json:"name,optional,omitempty"` 215 Name string `json:"name,optional,omitempty"`
211 Value string `json:"dimensionVal,optional"` 216 Value string `json:"dimensionVal,optional"`
212 } 217 }