作者 yangfu

Merge branch 'test'

@@ -36,7 +36,7 @@ func (tableEventService *TableEventService) DigitalPlatformEventSubscribe(ctx *d @@ -36,7 +36,7 @@ func (tableEventService *TableEventService) DigitalPlatformEventSubscribe(ctx *d
36 data := cmd.EventTable 36 data := cmd.EventTable
37 tableId := 0 37 tableId := 0
38 switch data.Type { 38 switch data.Type {
39 - case domain.TableDataImportEvent, domain.TableDataEditEvent, domain.TableDeleteEvent: 39 + case domain.TableDataImportEvent, domain.TableDataEditEvent, domain.TableDeleteEvent, domain.TableStructEditEvent:
40 tableId = data.Table.TableId 40 tableId = data.Table.TableId
41 case domain.QuerySetUpdateEvent, domain.QuerySetUpdateRenameEvent: 41 case domain.QuerySetUpdateEvent, domain.QuerySetUpdateRenameEvent:
42 tableId = data.QuerySet.QuerySetInfo.BindTableId 42 tableId = data.QuerySet.QuerySetInfo.BindTableId
@@ -102,7 +102,7 @@ func (tableEventService *TableEventService) DigitalPlatformEventSubscribe(ctx *d @@ -102,7 +102,7 @@ func (tableEventService *TableEventService) DigitalPlatformEventSubscribe(ctx *d
102 102
103 querySetRepository, _, _ := factory.FastPgQuerySet(transactionContext, 0) 103 querySetRepository, _, _ := factory.FastPgQuerySet(transactionContext, 0)
104 var mapTableQuerySet = make(map[int]*domain.QuerySet) 104 var mapTableQuerySet = make(map[int]*domain.QuerySet)
105 - if len(tree) > 0 && cmd.EventTable.QuerySet != nil { 105 + if len(tree) > 0 { // && cmd.EventTable.QuerySet != nil
106 _, querySets, _ := querySetRepository.Find(map[string]interface{}{ 106 _, querySets, _ := querySetRepository.Find(map[string]interface{}{
107 "types": []string{domain.SchemaTable.ToString(), domain.CalculateItem.ToString(), domain.CalculateSet.ToString()}, 107 "types": []string{domain.SchemaTable.ToString(), domain.CalculateItem.ToString(), domain.CalculateSet.ToString()},
108 "bindTableIds": tree, 108 "bindTableIds": tree,
@@ -37,7 +37,7 @@ func (tableEventService *TableEventService) Handler(ctx *domain.Context, cmd *co @@ -37,7 +37,7 @@ func (tableEventService *TableEventService) Handler(ctx *domain.Context, cmd *co
37 data := cmd.EventTable 37 data := cmd.EventTable
38 tableId := 0 38 tableId := 0
39 switch data.Type { 39 switch data.Type {
40 - case domain.TableDataImportEvent, domain.TableDataEditEvent, domain.TableDeleteEvent: 40 + case domain.TableDataImportEvent, domain.TableDataEditEvent, domain.TableDeleteEvent, domain.TableStructEditEvent:
41 tableId = data.Table.TableId 41 tableId = data.Table.TableId
42 case domain.QuerySetUpdateEvent: 42 case domain.QuerySetUpdateEvent:
43 tableId = data.QuerySet.QuerySetInfo.BindTableId 43 tableId = data.QuerySet.QuerySetInfo.BindTableId
@@ -92,7 +92,7 @@ func (tableEventService *TableEventService) HandlerTableAffectedMarkToConflictSt @@ -92,7 +92,7 @@ func (tableEventService *TableEventService) HandlerTableAffectedMarkToConflictSt
92 data := cmd.EventTable 92 data := cmd.EventTable
93 tableId := 0 93 tableId := 0
94 switch data.Type { 94 switch data.Type {
95 - case domain.TableDataEditEvent: 95 + case domain.TableStructEditEvent, domain.TableDeleteEvent:
96 tableId = data.Table.TableId 96 tableId = data.Table.TableId
97 case domain.QuerySetUpdateEvent, domain.QuerySetUpdateRenameEvent: 97 case domain.QuerySetUpdateEvent, domain.QuerySetUpdateRenameEvent:
98 tableId = data.QuerySet.QuerySetInfo.BindTableId 98 tableId = data.QuerySet.QuerySetInfo.BindTableId
@@ -25,7 +25,15 @@ type FileDto struct { @@ -25,7 +25,15 @@ type FileDto struct {
25 // 表ID 25 // 表ID
26 TableId int `json:"tableId"` 26 TableId int `json:"tableId"`
27 // 允许表生成标识 1:允许生成分表 0:不允许 27 // 允许表生成标识 1:允许生成分表 0:不允许
28 - AllowTableGenerateFlag int `json:"allowTableGenerateFlag"` 28 + AllowTableGenerateFlag int `json:"-"`
  29 + // 允许表处理标识 1:允许 0:不允许
  30 + AllowTableProcessFlag int `json:"-"`
  31 + // 允许表导出标识 1:允许 0:不允许
  32 + AllowTableExportFlag int `json:"-"`
  33 + // 标志位 1:可校验 2:可分表生成 4:导出
  34 + Flag int `json:"-"`
  35 + // 标志位 1:可校验 2:可分表生成 4:导出
  36 + Flags []int `json:"flags"`
29 } 37 }
30 38
31 func (d *FileDto) Load(f *domain.File) *FileDto { 39 func (d *FileDto) Load(f *domain.File) *FileDto {
@@ -40,13 +48,40 @@ func (d *FileDto) Load(f *domain.File) *FileDto { @@ -40,13 +48,40 @@ func (d *FileDto) Load(f *domain.File) *FileDto {
40 d.Time = xtime.New(f.UpdatedAt).Local().Format("2006-01-02 15:04:05") 48 d.Time = xtime.New(f.UpdatedAt).Local().Format("2006-01-02 15:04:05")
41 d.HeaderRow = domain.GetHeaderRow(f.FileInfo.HeaderRow) 49 d.HeaderRow = domain.GetHeaderRow(f.FileInfo.HeaderRow)
42 d.AppKey = f.AppKey 50 d.AppKey = f.AppKey
  51 + //d.AllowTableProcessFlag = 1
  52 + //d.AllowTableExportFlag = 1
  53 + d.AddFlag(5) // 默认可以 校验、导出
43 if len(f.AppKey) > 0 && f.FileInfo.TableId > 0 { 54 if len(f.AppKey) > 0 && f.FileInfo.TableId > 0 {
44 d.TableId = f.FileInfo.TableId 55 d.TableId = f.FileInfo.TableId
45 - d.AllowTableGenerateFlag = 1 56 + //d.AllowTableGenerateFlag = 1
  57 + d.AddFlag(2) // 可分表生成
  58 + d.RemoveFlag(1) // 不可校验
  59 + //d.RemoveFlag(4) // 不可校验
  60 + //d.AllowTableProcessFlag = 0
  61 + //d.AllowTableExportFlag = 0
  62 + }
  63 + for i := 1; i <= 4; i = i << 1 {
  64 + if i&d.Flag == i {
  65 + d.Flags = append(d.Flags, i)
  66 + }
46 } 67 }
47 return d 68 return d
48 } 69 }
49 70
  71 +func (d *FileDto) AddFlag(flag int) {
  72 + if d.Flag&flag == flag {
  73 + return
  74 + }
  75 + d.Flag |= flag
  76 +}
  77 +
  78 +func (d *FileDto) RemoveFlag(flag int) {
  79 + if d.Flag&flag != flag {
  80 + return
  81 + }
  82 + d.Flag ^= flag
  83 +}
  84 +
50 type AppDto struct { 85 type AppDto struct {
51 AppId int64 `json:"appId"` 86 AppId int64 `json:"appId"`
52 AppKey string `json:"appKey"` 87 AppKey string `json:"appKey"`
@@ -15,7 +15,7 @@ type CreateQuerySetCommand struct { @@ -15,7 +15,7 @@ type CreateQuerySetCommand struct {
15 // 标识 15 // 标识
16 Flag string `cname:"标识" json:"flag" valid:"Required"` 16 Flag string `cname:"标识" json:"flag" valid:"Required"`
17 // 名称 17 // 名称
18 - Name string `cname:"名称" json:"name" valid:"Required"` 18 + Name string `cname:"名称" json:"name"`
19 // 父级ID 19 // 父级ID
20 ParentId int `cname:"父级ID" json:"parentId,omitempty"` 20 ParentId int `cname:"父级ID" json:"parentId,omitempty"`
21 } 21 }
@@ -98,8 +98,10 @@ func (querySetService *QuerySetService) CreateQuerySet(ctx *domain.Context, crea @@ -98,8 +98,10 @@ func (querySetService *QuerySetService) CreateQuerySet(ctx *domain.Context, crea
98 Name: createQuerySetCommand.Name, 98 Name: createQuerySetCommand.Name,
99 ParentId: createQuerySetCommand.ParentId, 99 ParentId: createQuerySetCommand.ParentId,
100 } 100 }
101 -  
102 svr, _ := factory.FastQuerySetServices(transactionContext) 101 svr, _ := factory.FastQuerySetServices(transactionContext)
  102 + if len(createQuerySetCommand.Name) == 0 {
  103 + createQuerySetCommand.Name = fmt.Sprintf("%s%s", domain.EnumsDescription(domain.ObjectTypeMap, createQuerySetCommand.Type), utils.Krand(5, utils.KC_RAND_KIND_NUM))
  104 + }
103 var querySet *domain.QuerySet 105 var querySet *domain.QuerySet
104 if querySet, err = svr.Create(ctx, newQuerySet); err != nil { 106 if querySet, err = svr.Create(ctx, newQuerySet); err != nil {
105 return nil, factory.FastError(err) 107 return nil, factory.FastError(err)
@@ -35,7 +35,7 @@ func (d *TableDto) Load(m *domain.Table) *TableDto { @@ -35,7 +35,7 @@ func (d *TableDto) Load(m *domain.Table) *TableDto {
35 d.Modules = make([]int, 0) 35 d.Modules = make([]int, 0)
36 if m.TableInfo != nil { 36 if m.TableInfo != nil {
37 //d.Module = m.TableInfo.ApplyOnModule 37 //d.Module = m.TableInfo.ApplyOnModule
38 - for i := 1; i <= 3; i++ { 38 + for i := 1; i <= 4; i++ {
39 if m.TableInfo.ApplyOnModule&(1<<(i-1)) > 0 { 39 if m.TableInfo.ApplyOnModule&(1<<(i-1)) > 0 {
40 d.Modules = append(d.Modules, 1<<(i-1)) 40 d.Modules = append(d.Modules, 1<<(i-1))
41 } 41 }
@@ -24,7 +24,7 @@ type SearchTableQuery struct { @@ -24,7 +24,7 @@ type SearchTableQuery struct {
24 // 返回结构信息 24 // 返回结构信息
25 ReturnDetailStructInfo bool `cname:"返回具体的结构信息 默认不返回" json:"returnDetailStructInfo"` 25 ReturnDetailStructInfo bool `cname:"返回具体的结构信息 默认不返回" json:"returnDetailStructInfo"`
26 // 排除分组项,只返回一级列表;默认 false 不排除,连分组也返回 26 // 排除分组项,只返回一级列表;默认 false 不排除,连分组也返回
27 - ReturnGroupItem bool `cname:"排除分组" json:"returnGroupItem"` 27 + ReturnGroupItem *bool `cname:"排除分组" json:"returnGroupItem"`
28 // 排除指定表 28 // 排除指定表
29 ExcludeTables []int `cname:"排除指定表" json:"excludeTables"` 29 ExcludeTables []int `cname:"排除指定表" json:"excludeTables"`
30 Context *domain.Context 30 Context *domain.Context
1 package service 1 package service
2 2
3 import ( 3 import (
4 - "fmt"  
5 "github.com/linmadan/egglib-go/core/application" 4 "github.com/linmadan/egglib-go/core/application"
6 "gitlab.fjmaimaimai.com/allied-creation/character-library-metadata-bastion/pkg/application/factory" 5 "gitlab.fjmaimaimai.com/allied-creation/character-library-metadata-bastion/pkg/application/factory"
7 "gitlab.fjmaimaimai.com/allied-creation/character-library-metadata-bastion/pkg/application/table/dto" 6 "gitlab.fjmaimaimai.com/allied-creation/character-library-metadata-bastion/pkg/application/table/dto"
@@ -56,7 +55,7 @@ func (tableService *TableService) TableObjectSearch(searchQuery *query.SearchTab @@ -56,7 +55,7 @@ func (tableService *TableService) TableObjectSearch(searchQuery *query.SearchTab
56 querySetMapById = make(map[int]*domain.QuerySet) 55 querySetMapById = make(map[int]*domain.QuerySet)
57 querySetMapByTableId = make(map[int]*domain.QuerySet) 56 querySetMapByTableId = make(map[int]*domain.QuerySet)
58 ) 57 )
59 - if searchQuery.ReturnGroupItem { 58 + if searchQuery.ReturnGroupItem != nil && *searchQuery.ReturnGroupItem {
60 for _, qs := range querySets { 59 for _, qs := range querySets {
61 querySetMapById[qs.QuerySetId] = qs 60 querySetMapById[qs.QuerySetId] = qs
62 } 61 }
@@ -84,6 +83,10 @@ func (tableService *TableService) TableObjectSearch(searchQuery *query.SearchTab @@ -84,6 +83,10 @@ func (tableService *TableService) TableObjectSearch(searchQuery *query.SearchTab
84 if filterTableByFilterRule(t, searchQuery) { 83 if filterTableByFilterRule(t, searchQuery) {
85 continue 84 continue
86 } 85 }
  86 + // 默认关闭的都不返回(拆解、计算)
  87 + if t.Status == domain.StatusOff {
  88 + continue
  89 + }
87 if !domain.TableType(t.TableType).TableIsSplitByGroup() { 90 if !domain.TableType(t.TableType).TableIsSplitByGroup() {
88 response = append(response, t) 91 response = append(response, t)
89 continue 92 continue
@@ -121,9 +124,10 @@ func (tableService *TableService) TableObjectSearch(searchQuery *query.SearchTab @@ -121,9 +124,10 @@ func (tableService *TableService) TableObjectSearch(searchQuery *query.SearchTab
121 sort.Slice(response, func(i, j int) bool { 124 sort.Slice(response, func(i, j int) bool {
122 item1 := response[i] 125 item1 := response[i]
123 item2 := response[j] 126 item2 := response[j]
124 - k1 := fmt.Sprintf("%v-%v-%v", item1.TableType, item1.ParentId, item1.Id)  
125 - k2 := fmt.Sprintf("%v-%v-%v", item2.TableType, item2.ParentId, item2.Id)  
126 - return k1 < k2 127 + //k1 := fmt.Sprintf("%v-%v-%v", item1.TableType, item1.ParentId, item1.Id)
  128 + //k2 := fmt.Sprintf("%v-%v-%v", item2.TableType, item2.ParentId, item2.Id)
  129 + //return k1 < k2
  130 + return item1.Id < item2.Id
127 }) 131 })
128 return map[string]interface{}{ 132 return map[string]interface{}{
129 "count": len(response), 133 "count": len(response),
@@ -540,8 +540,9 @@ const ( @@ -540,8 +540,9 @@ const (
540 ) 540 )
541 541
542 const ( 542 const (
543 - ModuleAll = ModuleDigitalCenter | ModuleQuerySetCenter | ModuleCalculateCenter 543 + ModuleAll = ModuleDigitalCenter | ModuleQuerySetCenter | ModuleCalculateCenter | ModuleChartTemplate
544 ModuleDigitalCenter = 1 544 ModuleDigitalCenter = 1
545 ModuleQuerySetCenter = 2 545 ModuleQuerySetCenter = 2
546 ModuleCalculateCenter = 4 546 ModuleCalculateCenter = 4
  547 + ModuleChartTemplate = 8
547 ) 548 )
@@ -10,6 +10,7 @@ func (et EventType) ToString() string { @@ -10,6 +10,7 @@ func (et EventType) ToString() string {
10 10
11 const ( 11 const (
12 TableDataEditEvent EventType = "table.data.edit" 12 TableDataEditEvent EventType = "table.data.edit"
  13 + TableStructEditEvent EventType = "table.struct.edit"
13 TableDataImportEvent EventType = "table.data.import" 14 TableDataImportEvent EventType = "table.data.import"
14 TableDeleteEvent EventType = "table.delete" 15 TableDeleteEvent EventType = "table.delete"
15 QuerySetUpdateEvent EventType = "table.query.set.update" 16 QuerySetUpdateEvent EventType = "table.query.set.update"
@@ -50,6 +50,13 @@ type LayoutCellData struct { @@ -50,6 +50,13 @@ type LayoutCellData struct {
50 50
51 func (l *LayoutRuleItem) LayoutCells() []*LayoutCell { 51 func (l *LayoutRuleItem) LayoutCells() []*LayoutCell {
52 var cells = make([]*LayoutCell, 0) 52 var cells = make([]*LayoutCell, 0)
  53 + // 排序
  54 + sort.SliceStable(l.Cells, func(i, j int) bool {
  55 + if l.Cells[i].Position.X == l.Cells[j].Position.X {
  56 + return l.Cells[i].Position.Y < l.Cells[j].Position.Y
  57 + }
  58 + return l.Cells[i].Position.X < l.Cells[j].Position.X
  59 + })
53 for _, item := range l.Cells { 60 for _, item := range l.Cells {
54 item.X = item.Position.X 61 item.X = item.Position.X
55 item.Y = item.Position.Y 62 item.Y = item.Position.Y
1 package domain 1 package domain
2 2
3 type TableInfo struct { 3 type TableInfo struct {
4 - // 应用于模块 1:数控中心 2:拆解模块 4:计算模块 4 + // 应用于模块 1:数控中心 2:拆解模块 4:计算模块 8:图表模板
5 ApplyOnModule int `json:"module"` 5 ApplyOnModule int `json:"module"`
6 // 依赖关联的表 6 // 依赖关联的表
7 DependencyTables []int `json:"dependencyTables"` 7 DependencyTables []int `json:"dependencyTables"`
@@ -43,14 +43,16 @@ func (ptr *QuerySetService) Create(ctx *domain.Context, qs *domain.QuerySet) (*d @@ -43,14 +43,16 @@ func (ptr *QuerySetService) Create(ctx *domain.Context, qs *domain.QuerySet) (*d
43 Name: qs.Name, 43 Name: qs.Name,
44 ParentId: qs.ParentId, 44 ParentId: qs.ParentId,
45 PinName: pinFull(qs.Name), 45 PinName: pinFull(qs.Name),
46 - Status: domain.StatusOn, 46 + Status: domain.StatusOff,
47 QuerySetInfo: &domain.QuerySetInfo{}, 47 QuerySetInfo: &domain.QuerySetInfo{},
48 QueryComponents: make([]*domain.QueryComponent, 0), 48 QueryComponents: make([]*domain.QueryComponent, 0),
49 CreatedAt: time.Now(), 49 CreatedAt: time.Now(),
50 UpdatedAt: time.Now(), 50 UpdatedAt: time.Now(),
51 Context: ctx, 51 Context: ctx,
52 } 52 }
53 - 53 + if qs.Flag == domain.FlagGroup {
  54 + newQuerySet.Status = domain.StatusOn
  55 + }
54 querySetRepository, err := repository.NewQuerySetRepository(ptr.transactionContext) 56 querySetRepository, err := repository.NewQuerySetRepository(ptr.transactionContext)
55 // check parent 57 // check parent
56 options := map[string]interface{}{ 58 options := map[string]interface{}{
@@ -1039,7 +1041,7 @@ func copyQuerySet(qs *domain.QuerySet, t string, groupId int, name string) *doma @@ -1039,7 +1041,7 @@ func copyQuerySet(qs *domain.QuerySet, t string, groupId int, name string) *doma
1039 Name: name, 1041 Name: name,
1040 PinName: pinFull(name), 1042 PinName: pinFull(name),
1041 ParentId: groupId, 1043 ParentId: groupId,
1042 - Status: qs.Status, 1044 + Status: domain.StatusOff,
1043 QuerySetInfo: qs.QuerySetInfo, 1045 QuerySetInfo: qs.QuerySetInfo,
1044 QueryComponents: qs.QueryComponents, 1046 QueryComponents: qs.QueryComponents,
1045 Sort: 0, 1047 Sort: 0,
@@ -303,7 +303,9 @@ func DataLayout(res *domain.DataTable, cells []*domain.LayoutCell) (*domain.Data @@ -303,7 +303,9 @@ func DataLayout(res *domain.DataTable, cells []*domain.LayoutCell) (*domain.Data
303 dt.processed = append(dt.processed, cell) 303 dt.processed = append(dt.processed, cell)
304 dt.LastCell = cell 304 dt.LastCell = cell
305 } 305 }
306 - dt.Shrink() 306 + if err := dt.Shrink(); err != nil {
  307 + return nil, err
  308 + }
307 return dt.DataTable, nil 309 return dt.DataTable, nil
308 } 310 }
309 311
@@ -419,7 +421,7 @@ func (d *DataLayoutDataTable) BlockData(cells *domain.LayoutCell) ([]string, int @@ -419,7 +421,7 @@ func (d *DataLayoutDataTable) BlockData(cells *domain.LayoutCell) ([]string, int
419 return values, len(values) 421 return values, len(values)
420 } 422 }
421 423
422 -func (d *DataLayoutDataTable) Shrink() { 424 +func (d *DataLayoutDataTable) Shrink() error {
423 x := d.PointEnd.X - d.PointBegin.X 425 x := d.PointEnd.X - d.PointBegin.X
424 y := d.PointEnd.Y - d.PointBegin.Y 426 y := d.PointEnd.Y - d.PointBegin.Y
425 data := make([][]string, x+1) 427 data := make([][]string, x+1)
@@ -443,6 +445,26 @@ func (d *DataLayoutDataTable) Shrink() { @@ -443,6 +445,26 @@ func (d *DataLayoutDataTable) Shrink() {
443 SQLType: domain.String.ToString(), 445 SQLType: domain.String.ToString(),
444 }) 446 })
445 } 447 }
  448 + // 默认计算集第一行作为标题
  449 + //if len(data) >= 1 {
  450 + // d.DataTable.Data = data[1:]
  451 + // columnMap := collection.NewSet()
  452 + // for i := 0; i < len(data[0]); i++ {
  453 + // if len(data[0][i]) == 0 {
  454 + // return fmt.Errorf("计算集标题第%d列不能为空", i+1)
  455 + // }
  456 + // if columnMap.Contains(data[0][i]) {
  457 + // return fmt.Errorf("计算集第%d列重复:%v", i+1, data[0][i])
  458 + // }
  459 + // columnMap.Add(data[0][i])
  460 + // d.DataTable.Fields = append(d.DataTable.Fields, &domain.Field{
  461 + // Name: data[0][i],
  462 + // SQLName: fmt.Sprintf("col%d", i),
  463 + // SQLType: domain.String.ToString(),
  464 + // })
  465 + // }
  466 + //}
  467 + return nil
446 } 468 }
447 469
448 func (d *DataLayoutDataTable) Expand(cell *domain.LayoutCell, length int) error { 470 func (d *DataLayoutDataTable) Expand(cell *domain.LayoutCell, length int) error {
@@ -66,7 +66,7 @@ func (ptr *UpdateTableStructService) UpdateTableStruct(ctx *domain.Context, tabl @@ -66,7 +66,7 @@ func (ptr *UpdateTableStructService) UpdateTableStruct(ctx *domain.Context, tabl
66 } 66 }
67 } 67 }
68 defer func() { 68 defer func() {
69 - AsyncEvent(domain.NewEventTable(ctx, domain.TableDataEditEvent).WithTable(table)) 69 + AsyncEvent(domain.NewEventTable(ctx, domain.TableStructEditEvent).WithTable(table))
70 }() 70 }()
71 // 日志 71 // 日志
72 if err = FastLog(ptr.transactionContext, domain.CommonLog, table.TableId, &SubTableEditLog{ 72 if err = FastLog(ptr.transactionContext, domain.CommonLog, table.TableId, &SubTableEditLog{
  1 +package utils
  2 +
  3 +import (
  4 + "math/rand"
  5 + "time"
  6 +)
  7 +
  8 +const (
  9 + KC_RAND_KIND_NUM = 0 // 纯数字
  10 + KC_RAND_KIND_LOWER = 1 // 小写字母
  11 + KC_RAND_KIND_UPPER = 2 // 大写字母
  12 + KC_RAND_KIND_ALL = 3 // 数字、大小写字母
  13 +)
  14 +
  15 +// 随机字符串
  16 +func Krand(size int, kind int) string {
  17 + ikind, kinds, result := kind, [][]int{[]int{10, 48}, []int{26, 97}, []int{26, 65}}, make([]byte, size)
  18 + is_all := kind > 2 || kind < 0
  19 + rand.Seed(time.Now().UnixNano())
  20 + for i := 0; i < size; i++ {
  21 + if is_all { // random ikind
  22 + ikind = rand.Intn(3)
  23 + }
  24 + scope, base := kinds[ikind][0], kinds[ikind][1]
  25 + result[i] = uint8(base + rand.Intn(scope))
  26 + }
  27 + return string(result)
  28 +}
@@ -156,6 +156,10 @@ func (controller *TableController) TableObjectSearch() { @@ -156,6 +156,10 @@ func (controller *TableController) TableObjectSearch() {
156 tableService := service.NewTableService(nil) 156 tableService := service.NewTableService(nil)
157 cmd := &query.SearchTableQuery{} 157 cmd := &query.SearchTableQuery{}
158 Must(controller.Unmarshal(cmd)) 158 Must(controller.Unmarshal(cmd))
  159 + defaultReturnGroup := true
  160 + if cmd.ReturnGroupItem == nil {
  161 + cmd.ReturnGroupItem = &defaultReturnGroup
  162 + }
159 cmd.Context = ParseContext(controller.BaseController) 163 cmd.Context = ParseContext(controller.BaseController)
160 data, err := tableService.TableObjectSearch(cmd) 164 data, err := tableService.TableObjectSearch(cmd)
161 controller.Response(data, err) 165 controller.Response(data, err)
@@ -11,6 +11,7 @@ func Start() { @@ -11,6 +11,7 @@ func Start() {
11 11
12 func RegisterEvent() { 12 func RegisterEvent() {
13 event.On(domain.TableDataEditEvent.ToString(), event.ListenerFunc(tableDataChangeHandler), event.High) 13 event.On(domain.TableDataEditEvent.ToString(), event.ListenerFunc(tableDataChangeHandler), event.High)
  14 + event.On(domain.TableStructEditEvent.ToString(), event.ListenerFunc(tableDataChangeHandler), event.High)
14 event.On(domain.TableDataImportEvent.ToString(), event.ListenerFunc(tableDataChangeHandler), event.High) 15 event.On(domain.TableDataImportEvent.ToString(), event.ListenerFunc(tableDataChangeHandler), event.High)
15 event.On(domain.TableDeleteEvent.ToString(), event.ListenerFunc(tableDataChangeHandler), event.High) 16 event.On(domain.TableDeleteEvent.ToString(), event.ListenerFunc(tableDataChangeHandler), event.High)
16 event.On(domain.QuerySetUpdateEvent.ToString(), event.ListenerFunc(tableDataChangeHandler), event.High) 17 event.On(domain.QuerySetUpdateEvent.ToString(), event.ListenerFunc(tableDataChangeHandler), event.High)