作者 yangfu

Merge branch 'test'

@@ -6,6 +6,7 @@ import ( @@ -6,6 +6,7 @@ import (
6 "gitlab.fjmaimaimai.com/allied-creation/character-library-metadata-bastion/pkg/infrastructure/api/authlib" 6 "gitlab.fjmaimaimai.com/allied-creation/character-library-metadata-bastion/pkg/infrastructure/api/authlib"
7 "gitlab.fjmaimaimai.com/allied-creation/character-library-metadata-bastion/pkg/infrastructure/api/bytelib" 7 "gitlab.fjmaimaimai.com/allied-creation/character-library-metadata-bastion/pkg/infrastructure/api/bytelib"
8 "path/filepath" 8 "path/filepath"
  9 + "sort"
9 "strings" 10 "strings"
10 "time" 11 "time"
11 12
@@ -311,6 +312,9 @@ func (fileService *FileService) SearchAppFile(ctx *domain.Context, listFileQuery @@ -311,6 +312,9 @@ func (fileService *FileService) SearchAppFile(ctx *domain.Context, listFileQuery
311 files = append(files, file) 312 files = append(files, file)
312 } 313 }
313 } 314 }
  315 + sort.SliceStable(files, func(i, j int) bool {
  316 + return files[i].Name < files[j].Name
  317 + })
314 apps = append(apps, &dto.AppDto{ 318 apps = append(apps, &dto.AppDto{
315 AppId: app.AppId, 319 AppId: app.AppId,
316 AppKey: app.AppKey, 320 AppKey: app.AppKey,
@@ -2,14 +2,15 @@ package service @@ -2,14 +2,15 @@ package service
2 2
3 import ( 3 import (
4 "fmt" 4 "fmt"
5 -  
6 "github.com/linmadan/egglib-go/core/application" 5 "github.com/linmadan/egglib-go/core/application"
  6 + "github.com/zeromicro/go-zero/core/collection"
7 "gitlab.fjmaimaimai.com/allied-creation/character-library-metadata-bastion/pkg/application/factory" 7 "gitlab.fjmaimaimai.com/allied-creation/character-library-metadata-bastion/pkg/application/factory"
8 "gitlab.fjmaimaimai.com/allied-creation/character-library-metadata-bastion/pkg/application/table/command" 8 "gitlab.fjmaimaimai.com/allied-creation/character-library-metadata-bastion/pkg/application/table/command"
9 "gitlab.fjmaimaimai.com/allied-creation/character-library-metadata-bastion/pkg/domain" 9 "gitlab.fjmaimaimai.com/allied-creation/character-library-metadata-bastion/pkg/domain"
10 "gitlab.fjmaimaimai.com/allied-creation/character-library-metadata-bastion/pkg/infrastructure/pg" 10 "gitlab.fjmaimaimai.com/allied-creation/character-library-metadata-bastion/pkg/infrastructure/pg"
11 "gitlab.fjmaimaimai.com/allied-creation/character-library-metadata-bastion/pkg/infrastructure/starrocks" 11 "gitlab.fjmaimaimai.com/allied-creation/character-library-metadata-bastion/pkg/infrastructure/starrocks"
12 "gorm.io/gorm" 12 "gorm.io/gorm"
  13 + "sort"
13 ) 14 )
14 15
15 func (tableService *TableService) FieldOptionalValues(ctx *domain.Context, cmd *command.FieldOptionalValuesCommand) (interface{}, error) { 16 func (tableService *TableService) FieldOptionalValues(ctx *domain.Context, cmd *command.FieldOptionalValuesCommand) (interface{}, error) {
@@ -84,6 +85,28 @@ func (tableService *TableService) FieldOptionalValues(ctx *domain.Context, cmd * @@ -84,6 +85,28 @@ func (tableService *TableService) FieldOptionalValues(ctx *domain.Context, cmd *
84 if !domain.SQLType(field.SQLType).IsString() { 85 if !domain.SQLType(field.SQLType).IsString() {
85 match = "" 86 match = ""
86 } 87 }
  88 +
  89 + if table.TableType == domain.CalculateSet.ToString() {
  90 + var querySet *domain.QuerySet
  91 + querySetRepository, _, _ := factory.FastPgQuerySet(transactionContext, 0)
  92 + querySet, err = querySetRepository.FindOne(map[string]interface{}{"BindTableId": cmd.ObjectId})
  93 + if err != nil {
  94 + return nil, factory.FastError(err)
  95 + }
  96 + svr, _ := factory.FastQuerySetServices(transactionContext)
  97 + dataTable, err = svr.LoadCalculateSetData(ctx, querySet, querySet.QueryComponents)
  98 + if err != nil {
  99 + return nil, factory.FastError(err)
  100 + }
  101 + values := removeDuplicate(dataTable.Values(field))
  102 + sort.SliceStable(values, func(i, j int) bool {
  103 + return values[i] < values[j]
  104 + })
  105 + return map[string]interface{}{
  106 + "values": values,
  107 + "total": len(values),
  108 + }, nil
  109 + }
87 options := &starrocks.QueryOptions{ 110 options := &starrocks.QueryOptions{
88 Table: table, 111 Table: table,
89 TableName: table.SQLName, 112 TableName: table.SQLName,
@@ -127,3 +150,15 @@ func (tableService *TableService) FieldOptionalValues(ctx *domain.Context, cmd * @@ -127,3 +150,15 @@ func (tableService *TableService) FieldOptionalValues(ctx *domain.Context, cmd *
127 "total": len(values), 150 "total": len(values),
128 }, nil 151 }, nil
129 } 152 }
  153 +
  154 +func removeDuplicate(inputs []string) []string {
  155 + s := collection.NewSet()
  156 + var result = make([]string, 0)
  157 + for _, input := range inputs {
  158 + if !s.Contains(input) {
  159 + s.Add(input)
  160 + result = append(result, input)
  161 + }
  162 + }
  163 + return result
  164 +}
@@ -33,7 +33,11 @@ func (ptr *AddTableStructService) AddTableStruct(ctx *domain.Context, parentTabl @@ -33,7 +33,11 @@ func (ptr *AddTableStructService) AddTableStruct(ctx *domain.Context, parentTabl
33 } 33 }
34 34
35 // 验证表名是否重复 35 // 验证表名是否重复
36 - duplicateTable, err := tableRepository.FindOne(map[string]interface{}{"context": ctx, "tableName": name}) 36 + duplicateTable, err := tableRepository.FindOne(map[string]interface{}{"context": ctx, "tableName": name, "tableTypes": []string{
  37 + domain.MainTable.ToString(),
  38 + domain.SubTable.ToString(),
  39 + domain.SideTable.ToString(),
  40 + }})
37 if err == nil && duplicateTable != nil { 41 if err == nil && duplicateTable != nil {
38 return nil, fmt.Errorf("表名称重复") 42 return nil, fmt.Errorf("表名称重复")
39 } 43 }