正在显示
13 个修改的文件
包含
379 行增加
和
190 行删除
| 1 | package main | 1 | package main |
| 2 | 2 | ||
| 3 | import ( | 3 | import ( |
| 4 | + "encoding/json" | ||
| 4 | "flag" | 5 | "flag" |
| 6 | + "fmt" | ||
| 5 | "github.com/golang-jwt/jwt/v4/request" | 7 | "github.com/golang-jwt/jwt/v4/request" |
| 6 | "github.com/zeromicro/go-queue/kq" | 8 | "github.com/zeromicro/go-queue/kq" |
| 7 | "github.com/zeromicro/go-zero/core/logx" | 9 | "github.com/zeromicro/go-zero/core/logx" |
| @@ -10,6 +12,7 @@ import ( | @@ -10,6 +12,7 @@ import ( | ||
| 10 | "gitlab.fjmaimaimai.com/allied-creation/sumifcc-bchart/cmd/chart-server/interanl/pkg/domain" | 12 | "gitlab.fjmaimaimai.com/allied-creation/sumifcc-bchart/cmd/chart-server/interanl/pkg/domain" |
| 11 | "net/http" | 13 | "net/http" |
| 12 | "strings" | 14 | "strings" |
| 15 | + "time" | ||
| 13 | 16 | ||
| 14 | "gitlab.fjmaimaimai.com/allied-creation/sumifcc-bchart/cmd/chart-server/api/internal/config" | 17 | "gitlab.fjmaimaimai.com/allied-creation/sumifcc-bchart/cmd/chart-server/api/internal/config" |
| 15 | "gitlab.fjmaimaimai.com/allied-creation/sumifcc-bchart/cmd/chart-server/api/internal/handler" | 18 | "gitlab.fjmaimaimai.com/allied-creation/sumifcc-bchart/cmd/chart-server/api/internal/handler" |
| @@ -67,26 +70,26 @@ func main() { | @@ -67,26 +70,26 @@ func main() { | ||
| 67 | func startConsume(c config.Config) { | 70 | func startConsume(c config.Config) { |
| 68 | svcCtx := svc.NewServiceContext(c) | 71 | svcCtx := svc.NewServiceContext(c) |
| 69 | go func() { | 72 | go func() { |
| 70 | - //for { | ||
| 71 | - // notice := &domain.ObjectNotice{ | ||
| 72 | - // CompanyId: 1594869884284571648, | ||
| 73 | - // TableId: 1573, | ||
| 74 | - // TableType: "主表", | ||
| 75 | - // ObjectType: "导入模块", | ||
| 76 | - // Event: "table.data.edit", | ||
| 77 | - // TableAffectedList: []int{1573}, | ||
| 78 | - // DataChanged: true, | ||
| 79 | - // StructChanged: true, | ||
| 80 | - // MetaData: domain.ObjectNoticeMetaData{ | ||
| 81 | - // Module: 0, | ||
| 82 | - // Status: 0, | ||
| 83 | - // }, | ||
| 84 | - // } | ||
| 85 | - // mBytes, _ := json.Marshal(notice) | ||
| 86 | - // err := kq.NewPusher(c.KqConsumerConf.Brokers, c.KqConsumerConf.Topic).Push(string(mBytes)) | ||
| 87 | - // fmt.Println(err) | ||
| 88 | - // time.Sleep(10 * 10 * time.Second) | ||
| 89 | - //} | 73 | + for { |
| 74 | + notice := &domain.ObjectNotice{ | ||
| 75 | + CompanyId: 1594869884284571648, | ||
| 76 | + TableId: 1573, | ||
| 77 | + TableType: "主表", | ||
| 78 | + ObjectType: "导入模块", | ||
| 79 | + Event: "table.data.edit", | ||
| 80 | + TableAffectedList: []int{1573}, | ||
| 81 | + DataChanged: true, | ||
| 82 | + StructChanged: true, | ||
| 83 | + MetaData: domain.ObjectNoticeMetaData{ | ||
| 84 | + Module: 0, | ||
| 85 | + Status: 0, | ||
| 86 | + }, | ||
| 87 | + } | ||
| 88 | + mBytes, _ := json.Marshal(notice) | ||
| 89 | + err := kq.NewPusher(c.KqConsumerConf.Brokers, c.KqConsumerConf.Topic).Push(string(mBytes)) | ||
| 90 | + fmt.Println(err) | ||
| 91 | + time.Sleep(10 * 10 * time.Second) | ||
| 92 | + } | ||
| 90 | }() | 93 | }() |
| 91 | go func() { | 94 | go func() { |
| 92 | 95 |
| @@ -4,6 +4,7 @@ import ( | @@ -4,6 +4,7 @@ import ( | ||
| 4 | "context" | 4 | "context" |
| 5 | "encoding/json" | 5 | "encoding/json" |
| 6 | "fmt" | 6 | "fmt" |
| 7 | + "github.com/pkg/errors" | ||
| 7 | "github.com/zeromicro/go-zero/core/stores/redis" | 8 | "github.com/zeromicro/go-zero/core/stores/redis" |
| 8 | "gitlab.fjmaimaimai.com/allied-creation/sumifcc-bchart/cmd/chart-server/api/internal/svc" | 9 | "gitlab.fjmaimaimai.com/allied-creation/sumifcc-bchart/cmd/chart-server/api/internal/svc" |
| 9 | "gitlab.fjmaimaimai.com/allied-creation/sumifcc-bchart/cmd/chart-server/api/internal/types" | 10 | "gitlab.fjmaimaimai.com/allied-creation/sumifcc-bchart/cmd/chart-server/api/internal/types" |
| @@ -39,7 +40,9 @@ func (logic *ByteNoticeLogic) Consume(key, value string) error { | @@ -39,7 +40,9 @@ func (logic *ByteNoticeLogic) Consume(key, value string) error { | ||
| 39 | return err | 40 | return err |
| 40 | } | 41 | } |
| 41 | //处理消息 | 42 | //处理消息 |
| 42 | - err = logic.handleNotice(notice) | 43 | + err = transaction.UseTrans(logic.ctx, logic.conn.DB(), func(ctx context.Context, conn transaction.Conn) error { |
| 44 | + return logic.handleNotice(conn, notice) | ||
| 45 | + }, true) | ||
| 43 | //更新处理结果 | 46 | //更新处理结果 |
| 44 | if err != nil { | 47 | if err != nil { |
| 45 | notice.Status = domain.ObjectNoticeStatusError | 48 | notice.Status = domain.ObjectNoticeStatusError |
| @@ -53,10 +56,10 @@ func (logic *ByteNoticeLogic) Consume(key, value string) error { | @@ -53,10 +56,10 @@ func (logic *ByteNoticeLogic) Consume(key, value string) error { | ||
| 53 | } | 56 | } |
| 54 | 57 | ||
| 55 | // handleNotice 处理消息 | 58 | // handleNotice 处理消息 |
| 56 | -func (logic *ByteNoticeLogic) handleNotice(notice *domain.ObjectNotice) error { | 59 | +func (logic *ByteNoticeLogic) handleNotice(conn transaction.Conn, notice *domain.ObjectNotice) error { |
| 57 | //是否删除消息 | 60 | //是否删除消息 |
| 58 | if notice.IsDeletedEvent() { | 61 | if notice.IsDeletedEvent() { |
| 59 | - return logic.handleDelete(notice) | 62 | + return logic.handleDelete(conn, notice) |
| 60 | } | 63 | } |
| 61 | accessToken, _ := types.TableAccessToken{CompanyId: notice.CompanyId}.GenerateToken() | 64 | accessToken, _ := types.TableAccessToken{CompanyId: notice.CompanyId}.GenerateToken() |
| 62 | //结构变更 | 65 | //结构变更 |
| @@ -100,17 +103,25 @@ func (logic *ByteNoticeLogic) handleNotice(notice *domain.ObjectNotice) error { | @@ -100,17 +103,25 @@ func (logic *ByteNoticeLogic) handleNotice(notice *domain.ObjectNotice) error { | ||
| 100 | CompanyId: notice.CompanyId, | 103 | CompanyId: notice.CompanyId, |
| 101 | ParentId: item.ParentId, | 104 | ParentId: item.ParentId, |
| 102 | Flag: item.Flag, | 105 | Flag: item.Flag, |
| 103 | - Fields: tableInfo.Fields, | ||
| 104 | }) | 106 | }) |
| 105 | //父级节点 | 107 | //父级节点 |
| 106 | objectTables = append(objectTables, logic.getParents(notice.CompanyId, item.ParentId, list.List)...) | 108 | objectTables = append(objectTables, logic.getParents(notice.CompanyId, item.ParentId, list.List)...) |
| 107 | } | 109 | } |
| 108 | } | 110 | } |
| 109 | - err = logic.saveTables(objectTables) | 111 | + err = logic.saveTables(conn, objectTables) |
| 110 | if err != nil { | 112 | if err != nil { |
| 111 | return err | 113 | return err |
| 112 | } | 114 | } |
| 113 | } | 115 | } |
| 116 | + //保存字段 | ||
| 117 | + _, err = logic.saveFields(conn, &domain.ObjectField{ | ||
| 118 | + Id: int64(tableInfo.TableId), | ||
| 119 | + Name: tableInfo.Name, | ||
| 120 | + Fields: tableInfo.Fields, | ||
| 121 | + }) | ||
| 122 | + if err != nil { | ||
| 123 | + return err | ||
| 124 | + } | ||
| 114 | } | 125 | } |
| 115 | //数据变更 | 126 | //数据变更 |
| 116 | if notice.DataChanged { | 127 | if notice.DataChanged { |
| @@ -136,10 +147,15 @@ func (logic *ByteNoticeLogic) handleNotice(notice *domain.ObjectNotice) error { | @@ -136,10 +147,15 @@ func (logic *ByteNoticeLogic) handleNotice(notice *domain.ObjectNotice) error { | ||
| 136 | acquire, err := lock.Acquire() | 147 | acquire, err := lock.Acquire() |
| 137 | fmt.Println(acquire, err) | 148 | fmt.Println(acquire, err) |
| 138 | defer lock.Release() | 149 | defer lock.Release() |
| 139 | - err = transaction.UseTrans(logic.ctx, logic.conn.DB(), func(ctx context.Context, conn transaction.Conn) error { | ||
| 140 | - return logic.svcCtx.ObjectTableDataRepository.InsertWithTableData(logic.ctx, conn, bytelib.TableData(tableDataPreview)) | ||
| 141 | - }, true) | ||
| 142 | - fmt.Println(err) | 150 | + err = logic.svcCtx.ObjectTableDataRepository.InsertWithTableData(logic.ctx, conn, bytelib.TableData(tableDataPreview)) |
| 151 | + if err != nil { | ||
| 152 | + return err | ||
| 153 | + } | ||
| 154 | + //更新标记本地存储 | ||
| 155 | + err = logic.updateTableWithLocal(conn, int(tableDataPreview.ObjectId)) | ||
| 156 | + if err != nil { | ||
| 157 | + return err | ||
| 158 | + } | ||
| 143 | } | 159 | } |
| 144 | return nil | 160 | return nil |
| 145 | } | 161 | } |
| @@ -156,7 +172,6 @@ func (logic *ByteNoticeLogic) getParents(companyId int64, parentId int, list []* | @@ -156,7 +172,6 @@ func (logic *ByteNoticeLogic) getParents(companyId int64, parentId int, list []* | ||
| 156 | CompanyId: companyId, | 172 | CompanyId: companyId, |
| 157 | ParentId: item.ParentId, | 173 | ParentId: item.ParentId, |
| 158 | Flag: item.Flag, | 174 | Flag: item.Flag, |
| 159 | - Fields: item.Fields, | ||
| 160 | }) | 175 | }) |
| 161 | if item.ParentId > 0 { | 176 | if item.ParentId > 0 { |
| 162 | result = append(result, logic.getParents(companyId, item.ParentId, list)...) | 177 | result = append(result, logic.getParents(companyId, item.ParentId, list)...) |
| @@ -167,11 +182,11 @@ func (logic *ByteNoticeLogic) getParents(companyId int64, parentId int, list []* | @@ -167,11 +182,11 @@ func (logic *ByteNoticeLogic) getParents(companyId int64, parentId int, list []* | ||
| 167 | } | 182 | } |
| 168 | 183 | ||
| 169 | // handleDelete 删除 | 184 | // handleDelete 删除 |
| 170 | -func (logic *ByteNoticeLogic) handleDelete(notice *domain.ObjectNotice) error { | ||
| 171 | - objectTable, err := logic.svcCtx.ObjectTableRepository.FindOneByTableId(logic.ctx, logic.conn, notice.TableId) | 185 | +func (logic *ByteNoticeLogic) handleDelete(conn transaction.Conn, notice *domain.ObjectNotice) error { |
| 186 | + objectTable, err := logic.svcCtx.ObjectTableRepository.FindOneByTableId(logic.ctx, conn, notice.TableId) | ||
| 172 | if err == nil && objectTable.Id > 0 { | 187 | if err == nil && objectTable.Id > 0 { |
| 173 | objectTable.RemoteDeleted = 1 | 188 | objectTable.RemoteDeleted = 1 |
| 174 | - _, err := logic.svcCtx.ObjectTableRepository.Update(logic.ctx, logic.conn, objectTable) | 189 | + _, err := logic.svcCtx.ObjectTableRepository.Update(logic.ctx, conn, objectTable) |
| 175 | if err != nil { | 190 | if err != nil { |
| 176 | return err | 191 | return err |
| 177 | } | 192 | } |
| @@ -180,26 +195,46 @@ func (logic *ByteNoticeLogic) handleDelete(notice *domain.ObjectNotice) error { | @@ -180,26 +195,46 @@ func (logic *ByteNoticeLogic) handleDelete(notice *domain.ObjectNotice) error { | ||
| 180 | } | 195 | } |
| 181 | 196 | ||
| 182 | // saveTables 保存表结构 | 197 | // saveTables 保存表结构 |
| 183 | -func (logic *ByteNoticeLogic) saveTables(tables []*domain.ObjectTable) error { | ||
| 184 | - err := transaction.UseTrans(logic.ctx, logic.conn.DB(), func(ctx context.Context, conn transaction.Conn) error { | ||
| 185 | - if len(tables) > 0 { | ||
| 186 | - for _, item := range tables { | ||
| 187 | - objectTable, err := logic.svcCtx.ObjectTableRepository.FindOne(logic.ctx, conn, item.Id) | ||
| 188 | - if err == nil && objectTable.Id > 0 { | ||
| 189 | - item.Id = objectTable.Id | ||
| 190 | - _, err := logic.svcCtx.ObjectTableRepository.Update(logic.ctx, conn, item) | ||
| 191 | - if err != nil { | ||
| 192 | - return err | ||
| 193 | - } | ||
| 194 | - } else { | ||
| 195 | - _, err := logic.svcCtx.ObjectTableRepository.Insert(logic.ctx, conn, item) | ||
| 196 | - if err != nil { | ||
| 197 | - return err | ||
| 198 | - } | 198 | +func (logic *ByteNoticeLogic) saveTables(conn transaction.Conn, tables []*domain.ObjectTable) error { |
| 199 | + if len(tables) > 0 { | ||
| 200 | + for _, item := range tables { | ||
| 201 | + objectTable, err := logic.svcCtx.ObjectTableRepository.FindOne(logic.ctx, conn, item.Id) | ||
| 202 | + if err == nil && objectTable.Id > 0 { | ||
| 203 | + item.Id = objectTable.Id | ||
| 204 | + item.Version = objectTable.Version + 1 | ||
| 205 | + _, err := logic.svcCtx.ObjectTableRepository.Update(logic.ctx, conn, item) | ||
| 206 | + if err != nil { | ||
| 207 | + return err | ||
| 208 | + } | ||
| 209 | + } else { | ||
| 210 | + _, err := logic.svcCtx.ObjectTableRepository.Insert(logic.ctx, conn, item) | ||
| 211 | + if err != nil { | ||
| 212 | + return err | ||
| 199 | } | 213 | } |
| 200 | } | 214 | } |
| 201 | } | 215 | } |
| 202 | - return nil | ||
| 203 | - }, true) | ||
| 204 | - return err | 216 | + } |
| 217 | + return nil | ||
| 218 | +} | ||
| 219 | + | ||
| 220 | +// saveFields 保存表字段 | ||
| 221 | +func (logic *ByteNoticeLogic) saveFields(conn transaction.Conn, objectField *domain.ObjectField) (*domain.ObjectField, error) { | ||
| 222 | + mField, err := logic.svcCtx.ObjectFieldRepository.FindOne(logic.ctx, conn, objectField.Id) | ||
| 223 | + if err == nil && mField.Id > 0 { //已存在 - 更新 | ||
| 224 | + objectField.Version = mField.Version + 1 | ||
| 225 | + return logic.svcCtx.ObjectFieldRepository.Update(logic.ctx, conn, objectField) | ||
| 226 | + } else { | ||
| 227 | + return logic.svcCtx.ObjectFieldRepository.Insert(logic.ctx, conn, objectField) | ||
| 228 | + } | ||
| 229 | +} | ||
| 230 | + | ||
| 231 | +// updateTableWithLocal 更新表标记本地存储 | ||
| 232 | +func (logic *ByteNoticeLogic) updateTableWithLocal(conn transaction.Conn, tableId int) error { | ||
| 233 | + objectTable, err := logic.svcCtx.ObjectTableRepository.FindOneByTableId(logic.ctx, conn, tableId) | ||
| 234 | + if err == nil && objectTable.Id > 0 { | ||
| 235 | + objectTable.IsLocal = true | ||
| 236 | + _, err = logic.svcCtx.ObjectTableRepository.Update(logic.ctx, conn, objectTable) | ||
| 237 | + return err | ||
| 238 | + } | ||
| 239 | + return errors.New("表不存在") | ||
| 205 | } | 240 | } |
| @@ -8,6 +8,7 @@ import ( | @@ -8,6 +8,7 @@ import ( | ||
| 8 | "gitlab.fjmaimaimai.com/allied-creation/sumifcc-bchart/cmd/chart-server/api/internal/svc" | 8 | "gitlab.fjmaimaimai.com/allied-creation/sumifcc-bchart/cmd/chart-server/api/internal/svc" |
| 9 | "gitlab.fjmaimaimai.com/allied-creation/sumifcc-bchart/cmd/chart-server/api/internal/types" | 9 | "gitlab.fjmaimaimai.com/allied-creation/sumifcc-bchart/cmd/chart-server/api/internal/types" |
| 10 | "gitlab.fjmaimaimai.com/allied-creation/sumifcc-bchart/cmd/chart-server/interanl/pkg/gateway/bytelib" | 10 | "gitlab.fjmaimaimai.com/allied-creation/sumifcc-bchart/cmd/chart-server/interanl/pkg/gateway/bytelib" |
| 11 | + "gitlab.fjmaimaimai.com/allied-creation/sumifcc-bchart/pkg/contextdata" | ||
| 11 | "gitlab.fjmaimaimai.com/allied-creation/sumifcc-bchart/pkg/xerr" | 12 | "gitlab.fjmaimaimai.com/allied-creation/sumifcc-bchart/pkg/xerr" |
| 12 | ) | 13 | ) |
| 13 | 14 | ||
| @@ -29,50 +30,70 @@ func (l *SearchTableByModuleLogic) SearchTableByModule(req *types.SearchTableByM | @@ -29,50 +30,70 @@ func (l *SearchTableByModuleLogic) SearchTableByModule(req *types.SearchTableByM | ||
| 29 | var result = make(map[string]interface{}) | 30 | var result = make(map[string]interface{}) |
| 30 | var batchError errorx.BatchError | 31 | var batchError errorx.BatchError |
| 31 | fx.Parallel(func() { | 32 | fx.Parallel(func() { |
| 32 | - list, err := l.svcCtx.ByteMetadataService.ObjectTableSearch(l.ctx, bytelib.ObjectTableSearchRequest{ | ||
| 33 | - Token: req.Token, | ||
| 34 | - TableTypes: []string{bytelib.MainTable, bytelib.SubTable, bytelib.SideTable}, | ||
| 35 | - Module: bytelib.ModuleDigitalCenter | bytelib.ModuleChartTemplate, // TODO:字库更新完改为只查 bytelib.ModuleChartTemplate | ||
| 36 | - }) | ||
| 37 | - if err != nil { | ||
| 38 | - batchError.Add(err) | 33 | + mResp, err := l.getTableByLocal([]string{bytelib.MainTable, bytelib.SubTable, bytelib.SideTable}) |
| 34 | + if err == nil { | ||
| 35 | + result["导入模块"] = mResp | ||
| 36 | + } else { | ||
| 37 | + list, err := l.svcCtx.ByteMetadataService.ObjectTableSearch(l.ctx, bytelib.ObjectTableSearchRequest{ | ||
| 38 | + Token: req.Token, | ||
| 39 | + TableTypes: []string{bytelib.MainTable, bytelib.SubTable, bytelib.SideTable}, | ||
| 40 | + Module: bytelib.ModuleDigitalCenter | bytelib.ModuleChartTemplate, // TODO:字库更新完改为只查 bytelib.ModuleChartTemplate | ||
| 41 | + }) | ||
| 42 | + if err != nil { | ||
| 43 | + batchError.Add(err) | ||
| 44 | + } | ||
| 45 | + result["导入模块"] = newList(list) | ||
| 39 | } | 46 | } |
| 40 | - result["导入模块"] = newList(list) | ||
| 41 | }, func() { | 47 | }, func() { |
| 42 | - list, err := l.svcCtx.ByteMetadataService.ObjectTableSearch(l.ctx, bytelib.ObjectTableSearchRequest{ | ||
| 43 | - Token: req.Token, | ||
| 44 | - TableTypes: []string{bytelib.SchemaTable}, | ||
| 45 | - Module: bytelib.ModuleQuerySetCenter, | ||
| 46 | - ReturnGroupItem: true, | ||
| 47 | - }) | ||
| 48 | - if err != nil { | ||
| 49 | - batchError.Add(err) | 48 | + mResp, err := l.getTableByLocal([]string{bytelib.SchemaTable}) |
| 49 | + if err == nil { | ||
| 50 | + result["拆解模块"] = mResp | ||
| 51 | + } else { | ||
| 52 | + list, err := l.svcCtx.ByteMetadataService.ObjectTableSearch(l.ctx, bytelib.ObjectTableSearchRequest{ | ||
| 53 | + Token: req.Token, | ||
| 54 | + TableTypes: []string{bytelib.SchemaTable}, | ||
| 55 | + Module: bytelib.ModuleQuerySetCenter, | ||
| 56 | + ReturnGroupItem: true, | ||
| 57 | + }) | ||
| 58 | + if err != nil { | ||
| 59 | + batchError.Add(err) | ||
| 60 | + } | ||
| 61 | + result["拆解模块"] = newList(list) | ||
| 50 | } | 62 | } |
| 51 | - result["拆解模块"] = newList(list) | ||
| 52 | }, func() { | 63 | }, func() { |
| 53 | - list, err := l.svcCtx.ByteMetadataService.ObjectTableSearch(l.ctx, bytelib.ObjectTableSearchRequest{ | ||
| 54 | - Token: req.Token, | ||
| 55 | - TableTypes: []string{bytelib.CalculateItem}, | ||
| 56 | - Module: bytelib.ModuleCalculateCenter, | ||
| 57 | - ReturnGroupItem: true, | ||
| 58 | - ExcludeTables: []int{0}, | ||
| 59 | - }) | ||
| 60 | - if err != nil { | ||
| 61 | - batchError.Add(err) | 64 | + mResp, err := l.getTableByLocal([]string{bytelib.CalculateItem}) |
| 65 | + if err == nil { | ||
| 66 | + result["计算项"] = mResp | ||
| 67 | + } else { | ||
| 68 | + list, err := l.svcCtx.ByteMetadataService.ObjectTableSearch(l.ctx, bytelib.ObjectTableSearchRequest{ | ||
| 69 | + Token: req.Token, | ||
| 70 | + TableTypes: []string{bytelib.CalculateItem}, | ||
| 71 | + Module: bytelib.ModuleCalculateCenter, | ||
| 72 | + ReturnGroupItem: true, | ||
| 73 | + ExcludeTables: []int{0}, | ||
| 74 | + }) | ||
| 75 | + if err != nil { | ||
| 76 | + batchError.Add(err) | ||
| 77 | + } | ||
| 78 | + result["计算项"] = newList(list) | ||
| 62 | } | 79 | } |
| 63 | - result["计算项"] = newList(list) | ||
| 64 | }, func() { | 80 | }, 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) | 81 | + mResp, err := l.getTableByLocal([]string{bytelib.CalculateSet}) |
| 82 | + if err == nil { | ||
| 83 | + result["计算集"] = mResp | ||
| 84 | + } else { | ||
| 85 | + list, err := l.svcCtx.ByteMetadataService.ObjectTableSearch(l.ctx, bytelib.ObjectTableSearchRequest{ | ||
| 86 | + Token: req.Token, | ||
| 87 | + TableTypes: []string{bytelib.CalculateSet}, | ||
| 88 | + Module: bytelib.ModuleCalculateCenter, | ||
| 89 | + ReturnGroupItem: true, | ||
| 90 | + ExcludeTables: []int{0}, | ||
| 91 | + }) | ||
| 92 | + if err != nil { | ||
| 93 | + batchError.Add(err) | ||
| 94 | + } | ||
| 95 | + result["计算集"] = newList(list) | ||
| 74 | } | 96 | } |
| 75 | - result["计算集"] = newList(list) | ||
| 76 | }) | 97 | }) |
| 77 | if err = batchError.Err(); err != nil { | 98 | if err = batchError.Err(); err != nil { |
| 78 | logx.Error(err) | 99 | logx.Error(err) |
| @@ -88,3 +109,30 @@ func newList(r bytelib.ObjectTableSearchResponse) interface{} { | @@ -88,3 +109,30 @@ func newList(r bytelib.ObjectTableSearchResponse) interface{} { | ||
| 88 | "list": r.List, | 109 | "list": r.List, |
| 89 | } | 110 | } |
| 90 | } | 111 | } |
| 112 | + | ||
| 113 | +func (l *SearchTableByModuleLogic) getTableByLocal(modules []string) (types.SearchTableByModuleResponse, error) { | ||
| 114 | + tenantId := contextdata.GetTenantFromCtx(l.ctx) | ||
| 115 | + response := types.SearchTableByModuleResponse{ | ||
| 116 | + Count: 0, | ||
| 117 | + List: make([]types.SearchTableByModuleItem, 0), | ||
| 118 | + } | ||
| 119 | + total, list, err := l.svcCtx.ObjectTableRepository.Find(l.ctx, l.svcCtx.DefaultDBConn(), map[string]interface{}{ | ||
| 120 | + "companyId": tenantId, | ||
| 121 | + "tableType": modules, | ||
| 122 | + }) | ||
| 123 | + if err != nil { | ||
| 124 | + return response, err | ||
| 125 | + } | ||
| 126 | + response.Count = int(total) | ||
| 127 | + for _, item := range list { | ||
| 128 | + response.List = append(response.List, types.SearchTableByModuleItem{ | ||
| 129 | + Id: item.Id, | ||
| 130 | + TableId: item.TableId, | ||
| 131 | + TableType: item.TableType, | ||
| 132 | + Name: item.Name, | ||
| 133 | + ParentId: item.ParentId, | ||
| 134 | + Flag: item.Flag, | ||
| 135 | + }) | ||
| 136 | + } | ||
| 137 | + return response, nil | ||
| 138 | +} |
| @@ -2,6 +2,8 @@ package table | @@ -2,6 +2,8 @@ package table | ||
| 2 | 2 | ||
| 3 | import ( | 3 | import ( |
| 4 | "context" | 4 | "context" |
| 5 | + "github.com/jinzhu/copier" | ||
| 6 | + "gitlab.fjmaimaimai.com/allied-creation/sumifcc-bchart/cmd/chart-server/interanl/pkg/domain" | ||
| 5 | "gitlab.fjmaimaimai.com/allied-creation/sumifcc-bchart/cmd/chart-server/interanl/pkg/gateway/bytelib" | 7 | "gitlab.fjmaimaimai.com/allied-creation/sumifcc-bchart/cmd/chart-server/interanl/pkg/gateway/bytelib" |
| 6 | "gitlab.fjmaimaimai.com/allied-creation/sumifcc-bchart/pkg/xerr" | 8 | "gitlab.fjmaimaimai.com/allied-creation/sumifcc-bchart/pkg/xerr" |
| 7 | 9 | ||
| @@ -32,9 +34,55 @@ func (l *SearchTableDataLogic) SearchTableData(req *types.SearchTableDataRequest | @@ -32,9 +34,55 @@ func (l *SearchTableDataLogic) SearchTableData(req *types.SearchTableDataRequest | ||
| 32 | "fields": nil, | 34 | "fields": nil, |
| 33 | "total": 0, | 35 | "total": 0, |
| 34 | "data": make([]string, 0), | 36 | "data": make([]string, 0), |
| 37 | + "local": false, | ||
| 35 | } | 38 | } |
| 36 | return | 39 | return |
| 37 | } | 40 | } |
| 41 | + resp, err = l.getLocal(req) | ||
| 42 | + if err == nil { | ||
| 43 | + return resp, nil | ||
| 44 | + } | ||
| 45 | + return l.getRemote(req) | ||
| 46 | +} | ||
| 47 | + | ||
| 48 | +// getLocal 获取本地数据 | ||
| 49 | +func (l *SearchTableDataLogic) getLocal(req *types.SearchTableDataRequest) (interface{}, error) { | ||
| 50 | + conn := l.svcCtx.DefaultDBConn() | ||
| 51 | + conditions := make([]*domain.TableDataCondition, 0) | ||
| 52 | + _ = copier.Copy(&conditions, req.Condition) | ||
| 53 | + //查询表数据 | ||
| 54 | + objectTable, err := l.svcCtx.ObjectTableRepository.FindOneByTableId(l.ctx, conn, req.ObjectId) | ||
| 55 | + if err != nil || objectTable.Id <= 0 { | ||
| 56 | + return nil, xerr.NewErrMsg("表不存在") | ||
| 57 | + } | ||
| 58 | + if !objectTable.IsLocal { | ||
| 59 | + return nil, xerr.NewErrMsg("未保存到本地存储") | ||
| 60 | + } | ||
| 61 | + //查询表字段 | ||
| 62 | + objectField, err := l.svcCtx.ObjectFieldRepository.FindOne(l.ctx, conn, int64(req.ObjectId)) | ||
| 63 | + if err != nil || objectField.Id <= 0 { | ||
| 64 | + return nil, xerr.NewErrMsg("表字段不存在") | ||
| 65 | + } | ||
| 66 | + //表数据 | ||
| 67 | + total, list, err := l.svcCtx.ObjectTableDataRepository.Find(l.ctx, conn, req.ObjectId, &domain.ObjectTableDataQuery{ | ||
| 68 | + Page: req.PageNumber, | ||
| 69 | + Size: req.PageSize, | ||
| 70 | + Conditions: conditions, | ||
| 71 | + }) | ||
| 72 | + if err != nil { | ||
| 73 | + return nil, xerr.NewErrMsg("查询表数据失败") | ||
| 74 | + } | ||
| 75 | + return map[string]interface{}{ | ||
| 76 | + "objectId": req.ObjectId, | ||
| 77 | + "fields": removeIdField(objectField.Fields), | ||
| 78 | + "total": total, | ||
| 79 | + "data": list, | ||
| 80 | + "local": true, | ||
| 81 | + }, nil | ||
| 82 | +} | ||
| 83 | + | ||
| 84 | +// getRemote 获取远程字库数据 | ||
| 85 | +func (l *SearchTableDataLogic) getRemote(req *types.SearchTableDataRequest) (resp interface{}, err error) { | ||
| 38 | tableDataPreviewRequest := &bytelib.TableDataPreviewRequest{ | 86 | tableDataPreviewRequest := &bytelib.TableDataPreviewRequest{ |
| 39 | Token: req.Token, | 87 | Token: req.Token, |
| 40 | ObjectType: bytelib.ObjectMetaTable, | 88 | ObjectType: bytelib.ObjectMetaTable, |
| @@ -53,6 +101,7 @@ func (l *SearchTableDataLogic) SearchTableData(req *types.SearchTableDataRequest | @@ -53,6 +101,7 @@ func (l *SearchTableDataLogic) SearchTableData(req *types.SearchTableDataRequest | ||
| 53 | "fields": removeIdField(response.Fields), | 101 | "fields": removeIdField(response.Fields), |
| 54 | "total": response.Grid.Total, | 102 | "total": response.Grid.Total, |
| 55 | "data": response.Grid.List, | 103 | "data": response.Grid.List, |
| 104 | + "local": false, | ||
| 56 | } | 105 | } |
| 57 | return | 106 | return |
| 58 | } | 107 | } |
| @@ -24,6 +24,7 @@ type ServiceContext struct { | @@ -24,6 +24,7 @@ type ServiceContext struct { | ||
| 24 | AppPageRepository domain.AppPageRepository | 24 | AppPageRepository domain.AppPageRepository |
| 25 | ObjectNoticeRepository domain.ObjectNoticeRepository | 25 | ObjectNoticeRepository domain.ObjectNoticeRepository |
| 26 | ObjectTableRepository domain.ObjectTableRepository | 26 | ObjectTableRepository domain.ObjectTableRepository |
| 27 | + ObjectFieldRepository domain.ObjectFieldRepository | ||
| 27 | ObjectTableDataRepository domain.ObjectTableDataRepository | 28 | ObjectTableDataRepository domain.ObjectTableDataRepository |
| 28 | 29 | ||
| 29 | ByteMetadataService bytelib.ByteMetadataService | 30 | ByteMetadataService bytelib.ByteMetadataService |
| @@ -45,6 +46,7 @@ func NewServiceContext(c config.Config) *ServiceContext { | @@ -45,6 +46,7 @@ func NewServiceContext(c config.Config) *ServiceContext { | ||
| 45 | AppPageRepository: repository.NewAppPageRepository(cache.NewCachedRepository(mlCache)), | 46 | AppPageRepository: repository.NewAppPageRepository(cache.NewCachedRepository(mlCache)), |
| 46 | ObjectNoticeRepository: repository.NewObjectNoticeRepository(cache.NewCachedRepository(mlCache)), | 47 | ObjectNoticeRepository: repository.NewObjectNoticeRepository(cache.NewCachedRepository(mlCache)), |
| 47 | ObjectTableRepository: repository.NewObjectTableRepository(cache.NewCachedRepository(mlCache)), | 48 | ObjectTableRepository: repository.NewObjectTableRepository(cache.NewCachedRepository(mlCache)), |
| 49 | + ObjectFieldRepository: repository.NewObjectFieldRepository(cache.NewCachedRepository(mlCache)), | ||
| 48 | ObjectTableDataRepository: repository.NewObjectTableDataRepository(), | 50 | ObjectTableDataRepository: repository.NewObjectTableDataRepository(), |
| 49 | 51 | ||
| 50 | ByteMetadataService: bytelib.ByteMetadataService{ | 52 | ByteMetadataService: bytelib.ByteMetadataService{ |
| @@ -189,6 +189,18 @@ type SearchTableByModuleRequest struct { | @@ -189,6 +189,18 @@ type SearchTableByModuleRequest struct { | ||
| 189 | } | 189 | } |
| 190 | 190 | ||
| 191 | type SearchTableByModuleResponse struct { | 191 | type SearchTableByModuleResponse struct { |
| 192 | + Count int `json:"count"` | ||
| 193 | + List []SearchTableByModuleItem `json:"list"` | ||
| 194 | +} | ||
| 195 | + | ||
| 196 | +type SearchTableByModuleItem struct { | ||
| 197 | + Id int `json:"id"` //ID | ||
| 198 | + TableId int `json:"tableId"` //表ID | ||
| 199 | + Name string `json:"name"` //表名 | ||
| 200 | + TableType string `json:"tableType"` //表类型 | ||
| 201 | + ParentId int `json:"parentId"` //父级ID | ||
| 202 | + Flag string `json:"flag"` //分组:Group 集合:Set | ||
| 203 | + IsLocal bool `json:"isLocal"` //是否本地存储 | ||
| 192 | } | 204 | } |
| 193 | 205 | ||
| 194 | type SearchTableFieldOptionalValuesRequest struct { | 206 | type SearchTableFieldOptionalValuesRequest struct { |
| @@ -12,7 +12,7 @@ import ( | @@ -12,7 +12,7 @@ import ( | ||
| 12 | type ObjectField struct { | 12 | type ObjectField struct { |
| 13 | Id int64 `json:"id" gorm:"primaryKey"` // ID | 13 | Id int64 `json:"id" gorm:"primaryKey"` // ID |
| 14 | Name string `json:"name"` //表名 | 14 | Name string `json:"name"` //表名 |
| 15 | - Fields []*bytelib.Field `json:"fields"` //表字段 | 15 | + Fields []*bytelib.Field `json:"fields" gorm:"serializer:json"` //表字段 |
| 16 | Version int `json:",omitempty"` //版本 | 16 | Version int `json:",omitempty"` //版本 |
| 17 | IsDel soft_delete.DeletedAt `gorm:"softDelete:flag,DeletedAtField:DeletedAt"` //删除标记 | 17 | IsDel soft_delete.DeletedAt `gorm:"softDelete:flag,DeletedAtField:DeletedAt"` //删除标记 |
| 18 | CreatedAt int64 `json:",omitempty"` //创建时间 | 18 | CreatedAt int64 `json:",omitempty"` //创建时间 |
| @@ -3,7 +3,6 @@ package models | @@ -3,7 +3,6 @@ package models | ||
| 3 | import ( | 3 | import ( |
| 4 | "fmt" | 4 | "fmt" |
| 5 | "gitlab.fjmaimaimai.com/allied-creation/sumifcc-bchart/cmd/chart-server/interanl/pkg/domain" | 5 | "gitlab.fjmaimaimai.com/allied-creation/sumifcc-bchart/cmd/chart-server/interanl/pkg/domain" |
| 6 | - "gitlab.fjmaimaimai.com/allied-creation/sumifcc-bchart/cmd/chart-server/interanl/pkg/gateway/bytelib" | ||
| 7 | "gorm.io/gorm" | 6 | "gorm.io/gorm" |
| 8 | "gorm.io/plugin/soft_delete" | 7 | "gorm.io/plugin/soft_delete" |
| 9 | "time" | 8 | "time" |
| @@ -18,7 +17,7 @@ type ObjectTable struct { | @@ -18,7 +17,7 @@ type ObjectTable struct { | ||
| 18 | ParentId int `json:"parentId" gorm:"default:0"` //父id | 17 | ParentId int `json:"parentId" gorm:"default:0"` //父id |
| 19 | Flag string `json:"flag"` //分组:Group 集合:Set | 18 | Flag string `json:"flag"` //分组:Group 集合:Set |
| 20 | Version int `json:",omitempty"` //版本 | 19 | Version int `json:",omitempty"` //版本 |
| 21 | - Fields []*bytelib.Field `json:"fields" gorm:"serializer:json"` //表字段 | 20 | + IsLocal bool `json:"isLocal" gorm:"default:false"` //是否有本地存储 |
| 22 | RemoteDeleted int `json:"remoteDeleted"` //远端删除 | 21 | RemoteDeleted int `json:"remoteDeleted"` //远端删除 |
| 23 | IsDel soft_delete.DeletedAt `gorm:"softDelete:flag,DeletedAtField:DeletedAt"` //删除标记 | 22 | IsDel soft_delete.DeletedAt `gorm:"softDelete:flag,DeletedAtField:DeletedAt"` //删除标记 |
| 24 | CreatedAt int64 `json:",omitempty"` //创建时间 | 23 | CreatedAt int64 `json:",omitempty"` //创建时间 |
| @@ -120,9 +120,28 @@ func (repository *ObjectTableDataRepository) InsertWithTableData(ctx context.Con | @@ -120,9 +120,28 @@ func (repository *ObjectTableDataRepository) InsertWithTableData(ctx context.Con | ||
| 120 | return nil | 120 | return nil |
| 121 | } | 121 | } |
| 122 | 122 | ||
| 123 | -// FindAll 获取表内所有数据 | ||
| 124 | -func (repository *ObjectTableDataRepository) FindAll(ctx context.Context, conn transaction.Conn, tableId int) { | ||
| 125 | - | 123 | +// Find 获取表内所有数据 |
| 124 | +func (repository *ObjectTableDataRepository) Find(ctx context.Context, conn transaction.Conn, tableId int, query *domain.ObjectTableDataQuery) (int64, []map[string]interface{}, error) { | ||
| 125 | + tx := conn.DB().Table(fmt.Sprintf("data.%v", tableId)) | ||
| 126 | + if len(query.Conditions) > 0 { | ||
| 127 | + for _, item := range query.Conditions { | ||
| 128 | + if item.FieldName == "" { | ||
| 129 | + continue | ||
| 130 | + } | ||
| 131 | + if item.Like != "" { | ||
| 132 | + tx = tx.Where(item.FieldName+" like ?", item.Like) | ||
| 133 | + } | ||
| 134 | + if len(item.In) > 0 { | ||
| 135 | + tx = tx.Where(item.FieldName+" in ?", item.In) | ||
| 136 | + } | ||
| 137 | + if item.Order != "" { | ||
| 138 | + tx = tx.Order(item.FieldName + " " + item.Order) | ||
| 139 | + } | ||
| 140 | + } | ||
| 141 | + } | ||
| 142 | + list := make([]map[string]interface{}, 0) | ||
| 143 | + total, tx := transaction.PaginationAndCount(ctx, tx, domain.NewQueryOptions().WithOffsetLimit(query.Page, query.Size), &list) | ||
| 144 | + return total, list, tx.Error | ||
| 126 | } | 145 | } |
| 127 | 146 | ||
| 128 | func NewObjectTableDataRepository() domain.ObjectTableDataRepository { | 147 | func NewObjectTableDataRepository() domain.ObjectTableDataRepository { |
| @@ -113,19 +113,12 @@ func (repository *ObjectTableRepository) FindOne(ctx context.Context, conn trans | @@ -113,19 +113,12 @@ func (repository *ObjectTableRepository) FindOne(ctx context.Context, conn trans | ||
| 113 | 113 | ||
| 114 | func (repository *ObjectTableRepository) FindOneByTableId(ctx context.Context, conn transaction.Conn, tableId int) (*domain.ObjectTable, error) { | 114 | func (repository *ObjectTableRepository) FindOneByTableId(ctx context.Context, conn transaction.Conn, tableId int) (*domain.ObjectTable, error) { |
| 115 | var ( | 115 | var ( |
| 116 | - err error | ||
| 117 | - tx = conn.DB() | ||
| 118 | - m = new(models.ObjectTable) | 116 | + tx = conn.DB() |
| 117 | + m = new(models.ObjectTable) | ||
| 119 | ) | 118 | ) |
| 120 | - queryFunc := func() (interface{}, error) { | ||
| 121 | - tx = tx.Model(m).Where("table_id = ?", tableId).First(m) | ||
| 122 | - if errors.Is(tx.Error, gorm.ErrRecordNotFound) { | ||
| 123 | - return nil, domain.ErrNotFound | ||
| 124 | - } | ||
| 125 | - return m, tx.Error | ||
| 126 | - } | ||
| 127 | - if _, err = repository.Query(queryFunc); err != nil { | ||
| 128 | - return nil, err | 119 | + tx = tx.Model(m).Where("table_id = ?", tableId).First(m) |
| 120 | + if errors.Is(tx.Error, gorm.ErrRecordNotFound) { | ||
| 121 | + return nil, domain.ErrNotFound | ||
| 129 | } | 122 | } |
| 130 | return repository.ModelToDomainModel(m) | 123 | return repository.ModelToDomainModel(m) |
| 131 | } | 124 | } |
| @@ -139,6 +132,12 @@ func (repository *ObjectTableRepository) Find(ctx context.Context, conn transact | @@ -139,6 +132,12 @@ func (repository *ObjectTableRepository) Find(ctx context.Context, conn transact | ||
| 139 | ) | 132 | ) |
| 140 | queryFunc := func() (interface{}, error) { | 133 | queryFunc := func() (interface{}, error) { |
| 141 | tx = tx.Model(&ms).Order("id desc") | 134 | tx = tx.Model(&ms).Order("id desc") |
| 135 | + if v, ok := queryOptions["companyId"]; ok { | ||
| 136 | + tx = tx.Where("company_id = ?", v) | ||
| 137 | + } | ||
| 138 | + if v, ok := queryOptions["tableTypeIn"]; ok { | ||
| 139 | + tx = tx.Where("table_type in ?", v) | ||
| 140 | + } | ||
| 142 | if total, tx = transaction.PaginationAndCount(ctx, tx, queryOptions, &ms); tx.Error != nil { | 141 | if total, tx = transaction.PaginationAndCount(ctx, tx, queryOptions, &ms); tx.Error != nil { |
| 143 | return dms, tx.Error | 142 | return dms, tx.Error |
| 144 | } | 143 | } |
| @@ -8,20 +8,20 @@ import ( | @@ -8,20 +8,20 @@ import ( | ||
| 8 | ) | 8 | ) |
| 9 | 9 | ||
| 10 | type ObjectTable struct { | 10 | type ObjectTable struct { |
| 11 | - Id int `json:"id"` // ID | ||
| 12 | - TableId int `json:"tableId" ` //表ID | ||
| 13 | - Name string `json:"name"` //表名 | ||
| 14 | - TableType string `json:"tableType" ` //模块 | ||
| 15 | - CompanyId int64 `json:"companyId"` //公司id | ||
| 16 | - ParentId int `json:"parentId"` //父id | ||
| 17 | - Flag string `json:"flag"` //分组:Group 集合:Set | ||
| 18 | - Fields []*bytelib.Field `json:"fields" gorm:"serializer:json"` //表字段 | ||
| 19 | - Version int `json:"version,omitempty"` //版本 | ||
| 20 | - RemoteDeleted int `json:"remoteDeleted"` //远端删除 | ||
| 21 | - IsDel soft_delete.DeletedAt `json:"isDel,omitempty"` //删除标记 | ||
| 22 | - CreatedAt int64 `json:"createdAt,omitempty"` //创建时间 | ||
| 23 | - UpdatedAt int64 `json:"updatedAt,omitempty"` //更新时间 | ||
| 24 | - DeletedAt int64 `json:"deletedAt,omitempty"` //删除时间 | 11 | + Id int `json:"id"` // ID |
| 12 | + TableId int `json:"tableId" ` //表ID | ||
| 13 | + Name string `json:"name"` //表名 | ||
| 14 | + TableType string `json:"tableType" ` //模块 | ||
| 15 | + CompanyId int64 `json:"companyId"` //公司id | ||
| 16 | + ParentId int `json:"parentId"` //父id | ||
| 17 | + Flag string `json:"flag"` //分组:Group 集合:Set | ||
| 18 | + Version int `json:"version,omitempty"` //版本 | ||
| 19 | + IsLocal bool `json:"isLocal"` //是否有本地存储 | ||
| 20 | + RemoteDeleted int `json:"remoteDeleted"` //远端删除 | ||
| 21 | + IsDel soft_delete.DeletedAt `json:"isDel,omitempty"` //删除标记 | ||
| 22 | + CreatedAt int64 `json:"createdAt,omitempty"` //创建时间 | ||
| 23 | + UpdatedAt int64 `json:"updatedAt,omitempty"` //更新时间 | ||
| 24 | + DeletedAt int64 `json:"deletedAt,omitempty"` //删除时间 | ||
| 25 | } | 25 | } |
| 26 | 26 | ||
| 27 | type ObjectTableRepository interface { | 27 | type ObjectTableRepository interface { |
| @@ -34,8 +34,22 @@ type ObjectTableRepository interface { | @@ -34,8 +34,22 @@ type ObjectTableRepository interface { | ||
| 34 | Find(ctx context.Context, conn transaction.Conn, queryOptions map[string]interface{}) (int64, []*ObjectTable, error) | 34 | Find(ctx context.Context, conn transaction.Conn, queryOptions map[string]interface{}) (int64, []*ObjectTable, error) |
| 35 | } | 35 | } |
| 36 | 36 | ||
| 37 | +type ObjectTableDataQuery struct { | ||
| 38 | + Page int | ||
| 39 | + Size int | ||
| 40 | + Conditions []*TableDataCondition | ||
| 41 | +} | ||
| 42 | + | ||
| 43 | +type TableDataCondition struct { | ||
| 44 | + FieldName string `json:"field"` // 条件字段 | ||
| 45 | + Like string `json:"like"` // 模糊匹配 | ||
| 46 | + In []string `json:"in"` // 匹配多个值 | ||
| 47 | + Order string `json:"order"` // 排序 ASC DESC 默认ASC | ||
| 48 | +} | ||
| 49 | + | ||
| 37 | type ObjectTableDataRepository interface { | 50 | type ObjectTableDataRepository interface { |
| 38 | InsertWithTableData(ctx context.Context, conn transaction.Conn, tableDataPreview bytelib.TableData) error | 51 | InsertWithTableData(ctx context.Context, conn transaction.Conn, tableDataPreview bytelib.TableData) error |
| 52 | + Find(ctx context.Context, conn transaction.Conn, tableId int, query *ObjectTableDataQuery) (int64, []map[string]interface{}, error) | ||
| 39 | } | 53 | } |
| 40 | 54 | ||
| 41 | func (m *ObjectTable) Identify() interface{} { | 55 | func (m *ObjectTable) Identify() interface{} { |
| 1 | syntax = "v1" | 1 | syntax = "v1" |
| 2 | 2 | ||
| 3 | info( | 3 | info( |
| 4 | - title: "天联字库图表模板" | ||
| 5 | - desc: "图表模板" | ||
| 6 | - author: "小火箭" | ||
| 7 | - email: "email" | ||
| 8 | - version: "v1" | 4 | + title: "天联字库图表模板" |
| 5 | + desc: "图表模板" | ||
| 6 | + author: "小火箭" | ||
| 7 | + email: "email" | ||
| 8 | + version: "v1" | ||
| 9 | ) | 9 | ) |
| 10 | 10 | ||
| 11 | @server( | 11 | @server( |
| 12 | - prefix: v1 | ||
| 13 | - group: table | ||
| 14 | - //jwt: JwtAuth | ||
| 15 | - //middleware: Authority | 12 | + prefix: v1 |
| 13 | + group: table | ||
| 14 | + //jwt: JwtAuth | ||
| 15 | + //middleware: Authority | ||
| 16 | ) | 16 | ) |
| 17 | service Core { | 17 | service Core { |
| 18 | - @doc "源数据表-字段可选值" | ||
| 19 | - @handler searchTableFieldOptionalValues | ||
| 20 | - post /table/field-optional-values (SearchTableByModuleRequest) returns (SearchTableByModuleResponse) | 18 | + @doc "源数据表-字段可选值" |
| 19 | + @handler searchTableFieldOptionalValues | ||
| 20 | + post /table/field-optional-values (SearchTableByModuleRequest) returns (SearchTableByModuleResponse) | ||
| 21 | 21 | ||
| 22 | - @doc "源数据表-详情" | ||
| 23 | - @handler getTableDetail | ||
| 24 | - get /table/:tableId (GetTableDetailRequest) returns (GetTableDetailResponse) | 22 | + @doc "源数据表-详情" |
| 23 | + @handler getTableDetail | ||
| 24 | + get /table/:tableId (GetTableDetailRequest) returns (GetTableDetailResponse) | ||
| 25 | 25 | ||
| 26 | - @doc "源数据表-数据" | ||
| 27 | - @handler searchTableData | ||
| 28 | - post /table/data (SearchTableDataRequest) returns (SearchTableDataResponse) | 26 | + @doc "源数据表-数据" |
| 27 | + @handler searchTableData | ||
| 28 | + post /table/data (SearchTableDataRequest) returns (SearchTableDataResponse) | ||
| 29 | } | 29 | } |
| 30 | 30 | ||
| 31 | @server( | 31 | @server( |
| 32 | - prefix: v1 | ||
| 33 | - group: table | ||
| 34 | - jwt: JwtAuth | ||
| 35 | - //middleware: Authority | 32 | + prefix: v1 |
| 33 | + group: table | ||
| 34 | + jwt: JwtAuth | ||
| 35 | + //middleware: Authority | ||
| 36 | ) | 36 | ) |
| 37 | service Core { | 37 | service Core { |
| 38 | - @doc "源数据表-按模块搜索" | ||
| 39 | - @handler searchTableByModule | ||
| 40 | - post /table/search-by-module (SearchTableByModuleRequest) returns (SearchTableByModuleResponse) | 38 | + @doc "源数据表-按模块搜索" |
| 39 | + @handler searchTableByModule | ||
| 40 | + post /table/search-by-module (SearchTableByModuleRequest) returns (SearchTableByModuleResponse) | ||
| 41 | } | 41 | } |
| 42 | 42 | ||
| 43 | type ( | 43 | type ( |
| 44 | - SearchTableByModuleRequest struct{ | ||
| 45 | - Token string `header:"x-mmm-accesstoken,optional"` | ||
| 46 | - } | ||
| 47 | - SearchTableByModuleResponse struct{ | 44 | + SearchTableByModuleRequest { |
| 45 | + Token string `header:"x-mmm-accesstoken,optional"` | ||
| 46 | + } | ||
| 47 | + SearchTableByModuleResponse { | ||
| 48 | + Count int `json:"count"` | ||
| 49 | + List []SearchTableByModuleItem `json:"list"` | ||
| 50 | + } | ||
| 51 | + SearchTableByModuleItem { | ||
| 52 | + Id int `json:"id"` //ID | ||
| 53 | + TableId int `json:"tableId"` //表ID | ||
| 54 | + Name string `json:"name"` //表名 | ||
| 55 | + TableType string `json:"tableType"` //表类型 | ||
| 56 | + ParentId int `json:"parentId"` //父级ID | ||
| 57 | + Flag string `json:"flag"` //分组:Group 集合:Set | ||
| 58 | + IsLocal bool `json:"isLocal"` //是否本地存储 | ||
| 59 | + } | ||
| 48 | 60 | ||
| 49 | - } | 61 | + SearchTableFieldOptionalValuesRequest { |
| 62 | + Token string `header:"x-mmm-accesstoken,optional"` | ||
| 63 | + ObjectId int `json:"objectId"` // 对象ID | ||
| 64 | + Field string `json:"field"` // 当前选择的字段 | ||
| 65 | + //SqlName string `json:"sqlName,optional"` // 字段SqlName | ||
| 66 | + // Match string `json:"match"` | ||
| 67 | + //PageNumber int `json:"pageNumber,optional"` // 分页数 | ||
| 68 | + //PageSize int `json:"pageSize,optional"` // 页码 | ||
| 69 | + Condition []*Condition `json:"conditions,optional"` // 条件 | ||
| 70 | + } | ||
| 71 | + SearchTableFieldOptionalValuesResponse { | ||
| 72 | + Values []string `json:"values"` | ||
| 73 | + Total int64 `json:"total"` | ||
| 74 | + } | ||
| 75 | + Condition { | ||
| 76 | + FieldName string `json:"field"` // 条件字段 | ||
| 77 | + //SqlName string `json:"sqlName,optional"` // 字段SqlName | ||
| 78 | + Like string `json:"like,optional"` // 模糊匹配 | ||
| 79 | + In []string `json:"in,optional"` // 匹配多个值 | ||
| 80 | + Order string `json:"order,optional,options=ASC||DESC"` // 排序 ASC DESC 默认ASC | ||
| 81 | + } | ||
| 50 | 82 | ||
| 51 | - SearchTableFieldOptionalValuesRequest struct{ | ||
| 52 | - Token string `header:"x-mmm-accesstoken,optional"` | ||
| 53 | - ObjectId int `json:"objectId"` // 对象ID | ||
| 54 | - Field string `json:"field"` // 当前选择的字段 | ||
| 55 | - //SqlName string `json:"sqlName,optional"` // 字段SqlName | ||
| 56 | - // Match string `json:"match"` | ||
| 57 | - //PageNumber int `json:"pageNumber,optional"` // 分页数 | ||
| 58 | - //PageSize int `json:"pageSize,optional"` // 页码 | ||
| 59 | - Condition []*Condition `json:"conditions,optional"` // 条件 | ||
| 60 | - } | ||
| 61 | - SearchTableFieldOptionalValuesResponse struct{ | ||
| 62 | - Values []string `json:"values"` | ||
| 63 | - Total int64 `json:"total"` | ||
| 64 | - } | ||
| 65 | - Condition struct { | ||
| 66 | - FieldName string `json:"field"` // 条件字段 | ||
| 67 | - //SqlName string `json:"sqlName,optional"` // 字段SqlName | ||
| 68 | - Like string `json:"like,optional"` // 模糊匹配 | ||
| 69 | - In []string `json:"in,optional"` // 匹配多个值 | ||
| 70 | - Order string `json:"order,optional,options=ASC||DESC"` // 排序 ASC DESC 默认ASC | ||
| 71 | - } | 83 | + GetTableDetailRequest { |
| 84 | + Token string `header:"x-mmm-accesstoken,optional"` | ||
| 85 | + TableId int `path:"tableId"` // 表ID | ||
| 86 | + } | ||
| 87 | + GetTableDetailResponse { | ||
| 88 | + } | ||
| 72 | 89 | ||
| 73 | - GetTableDetailRequest struct { | ||
| 74 | - Token string `header:"x-mmm-accesstoken,optional"` | ||
| 75 | - TableId int `path:"tableId"` // 表ID | ||
| 76 | - } | ||
| 77 | - GetTableDetailResponse struct{ | ||
| 78 | - | ||
| 79 | - } | ||
| 80 | - | ||
| 81 | - SearchTableDataRequest struct{ | ||
| 82 | - Token string `header:"x-mmm-accesstoken,optional"` | ||
| 83 | - ObjectId int `json:"objectId,optional"` // 对象ID | ||
| 84 | - PageNumber int `json:"page,optional"` // 分页数 | ||
| 85 | - PageSize int `json:"size,optional"` // 页码 | ||
| 86 | - Condition []*Condition `json:"conditions,optional"` // 条件 | ||
| 87 | - } | ||
| 88 | - SearchTableDataResponse struct{ | ||
| 89 | - | ||
| 90 | - } | 90 | + SearchTableDataRequest { |
| 91 | + Token string `header:"x-mmm-accesstoken,optional"` | ||
| 92 | + ObjectId int `json:"objectId,optional"` // 对象ID | ||
| 93 | + PageNumber int `json:"page,optional"` // 分页数 | ||
| 94 | + PageSize int `json:"size,optional"` // 页码 | ||
| 95 | + Condition []*Condition `json:"conditions,optional"` // 条件 | ||
| 96 | + } | ||
| 97 | + SearchTableDataResponse { | ||
| 98 | + } | ||
| 91 | ) | 99 | ) |
-
请 注册 或 登录 后发表评论