作者 庄敏学

object_table改为双主键

@@ -114,10 +114,10 @@ func DeleteObjectTable(ctx context.Context, svcCtx *svc.ServiceContext, conn tra @@ -114,10 +114,10 @@ func DeleteObjectTable(ctx context.Context, svcCtx *svc.ServiceContext, conn tra
114 return err 114 return err
115 } 115 }
116 //是否远程已删除 116 //是否远程已删除
117 - objectTable, err := svcCtx.ObjectTableRepository.FindOne(ctx, conn, sourceId) 117 + objectTable, err := svcCtx.ObjectTableRepository.FindOneByTableId(ctx, conn, sourceId)
118 if err == nil && objectTable.Id > 0 && objectTable.RemoteDeleted == 1 { 118 if err == nil && objectTable.Id > 0 && objectTable.RemoteDeleted == 1 {
119 //删除表 119 //删除表
120 - _, err = svcCtx.ObjectTableRepository.Delete(ctx, conn, &domain.ObjectTable{Id: sourceId}) 120 + _, err = svcCtx.ObjectTableRepository.Delete(ctx, conn, &domain.ObjectTable{Id: sourceId, TableType: objectTable.TableType})
121 if err != nil { 121 if err != nil {
122 return err 122 return err
123 } 123 }
@@ -126,6 +126,48 @@ func DeleteObjectTable(ctx context.Context, svcCtx *svc.ServiceContext, conn tra @@ -126,6 +126,48 @@ func DeleteObjectTable(ctx context.Context, svcCtx *svc.ServiceContext, conn tra
126 if err != nil { 126 if err != nil {
127 return err 127 return err
128 } 128 }
  129 + //删除分组
  130 + err = DeleteObjectGroup(ctx, svcCtx, conn, objectTable.CompanyId, objectTable.ParentId)
  131 + if err != nil {
  132 + return err
  133 + }
  134 + }
  135 + }
  136 + return nil
  137 +}
  138 +
  139 +// DeleteObjectGroup 删除分组
  140 +func DeleteObjectGroup(ctx context.Context, svcCtx *svc.ServiceContext, conn transaction.Conn, companyId int64, parentId int) error {
  141 + //分组下是否有数据
  142 + _, list, err := svcCtx.ObjectTableRepository.Find(ctx, conn, domain.NewQueryOptions().WithKV("companyId", companyId).WithKV("parentId", parentId))
  143 + if err != nil {
  144 + return err
  145 + }
  146 + if len(list) > 0 {
  147 + return nil
  148 + }
  149 + _, items, err := svcCtx.ObjectTableRepository.Find(
  150 + ctx, conn,
  151 + domain.NewQueryOptions().
  152 + WithKV("companyId", companyId).
  153 + WithKV("id", parentId).
  154 + WithKV("flag", "Group"),
  155 + )
  156 + if err != nil {
  157 + return err
  158 + }
  159 + if len(items) > 0 {
  160 + for _, item := range items {
  161 + //删除分组
  162 + _, err = svcCtx.ObjectTableRepository.Delete(ctx, conn, item)
  163 + if err != nil {
  164 + return err
  165 + }
  166 + //递归删除上级分组
  167 + err = DeleteObjectGroup(ctx, svcCtx, conn, companyId, item.ParentId)
  168 + if err != nil {
  169 + return err
  170 + }
129 } 171 }
130 } 172 }
131 return nil 173 return nil
@@ -132,9 +132,20 @@ func (l *SyncTableLogic) getFields(list []*domain.ObjectTable) []*domain.ObjectF @@ -132,9 +132,20 @@ func (l *SyncTableLogic) getFields(list []*domain.ObjectTable) []*domain.ObjectF
132 for _, item := range list { 132 for _, item := range list {
133 accessToken, _ := types.TableAccessToken{CompanyId: item.CompanyId}.GenerateToken() 133 accessToken, _ := types.TableAccessToken{CompanyId: item.CompanyId}.GenerateToken()
134 if item.TableId > 0 { 134 if item.TableId > 0 {
135 - response, err := l.svcCtx.ByteMetadataService.TableInfo(l.ctx, &bytelib.TableInfoRequest{  
136 - Token: accessToken,  
137 - TableId: item.TableId, 135 + //response, err := l.svcCtx.ByteMetadataService.TableInfo(l.ctx, &bytelib.TableInfoRequest{
  136 + // Token: accessToken,
  137 + // TableId: item.TableId,
  138 + //})
  139 + response, err := l.svcCtx.ByteMetadataService.TableDataPreview(l.ctx, &bytelib.TableDataPreviewRequest{
  140 + Token: accessToken,
  141 + ObjectId: int64(item.TableId),
  142 + ObjectType: bytelib.ObjectMetaTable,
  143 + Where: &bytelib.TableQueryWhere{
  144 + PageNumber: 1,
  145 + PageSize: 1,
  146 + },
  147 + UseCache: false,
  148 + HiddenData: false,
138 }) 149 })
139 if err == nil { 150 if err == nil {
140 fields = append(fields, &domain.ObjectField{ 151 fields = append(fields, &domain.ObjectField{
@@ -9,20 +9,20 @@ import ( @@ -9,20 +9,20 @@ import (
9 ) 9 )
10 10
11 type ObjectTable struct { 11 type ObjectTable struct {
12 - Id int `json:"id" gorm:"primaryKey"` // ID  
13 - TableId int `json:"tableId" gorm:"index:idx_object_table_id"` //表ID  
14 - Name string `json:"name"` //表名  
15 - TableType string `json:"tableType" gorm:"index:idx_object_table_type"` //模块  
16 - CompanyId int64 `json:"companyId" gorm:"index:idx_object_table_company"` //公司id  
17 - ParentId int `json:"parentId" gorm:"default:0"` //父id  
18 - Flag string `json:"flag"` //分组:Group 集合:Set  
19 - Version int `json:",omitempty"` //版本  
20 - IsLocal bool `json:"isLocal" gorm:"default:false"` //是否有本地存储  
21 - RemoteDeleted int `json:"remoteDeleted"` //远端删除  
22 - IsDel soft_delete.DeletedAt `gorm:"softDelete:flag,DeletedAtField:DeletedAt"` //删除标记  
23 - CreatedAt int64 `json:",omitempty"` //创建时间  
24 - UpdatedAt int64 `json:",omitempty"` //更新时间  
25 - DeletedAt int64 `json:",omitempty"` //删除时间 12 + Id int `json:"id" gorm:"primaryKey;autoIncrement:false"` // ID
  13 + TableId int `json:"tableId" gorm:"index:idx_object_table_id"` //表ID
  14 + Name string `json:"name"` //表名
  15 + TableType string `json:"tableType" gorm:"primaryKey;autoIncrement:false;index:idx_object_table_type"` //模块
  16 + CompanyId int64 `json:"companyId" gorm:"index:idx_object_table_company"` //公司id
  17 + ParentId int `json:"parentId" gorm:"default:0"` //父id
  18 + Flag string `json:"flag"` //分组:Group 集合:Set
  19 + Version int `json:",omitempty"` //版本
  20 + IsLocal bool `json:"isLocal" gorm:"default:false"` //是否有本地存储
  21 + RemoteDeleted int `json:"remoteDeleted"` //远端删除
  22 + IsDel soft_delete.DeletedAt `gorm:"softDelete:flag,DeletedAtField:DeletedAt"` //删除标记
  23 + CreatedAt int64 `json:",omitempty"` //创建时间
  24 + UpdatedAt int64 `json:",omitempty"` //更新时间
  25 + DeletedAt int64 `json:",omitempty"` //删除时间
26 } 26 }
27 27
28 func (m *ObjectTable) TableName() string { 28 func (m *ObjectTable) TableName() string {