package customerform import ( "appPlatform/overall/publicmethod" "encoding/json" "fmt" "strings" "gorm.io/gorm" ) /* * @ 作者: 秦东 @ 时间: 2025-01-03 08:58:14 @ 功能: 获取指定数据表所有字段 @ 参数 # @ 返回值 # @ 方法原型 # */ func GainFormAllField(sqlDb *gorm.DB, formName string) (fieldAry []Result, err error) { sqlStr := fmt.Sprintf("SHOW FULL COLUMNS FROM `%v`", formName) err = sqlDb.Raw(sqlStr).Scan(&fieldAry).Error return } func GainFormAllFieldList(sqlDb *gorm.DB, formName string) (fieldList []Result, err error) { sqlStr := fmt.Sprintf("SHOW FULL COLUMNS FROM `%v`", formName) err = sqlDb.Raw(sqlStr).Scan(&fieldList).Error for i, v := range fieldList { attFiled := strings.Split(v.Type, " ") if len(attFiled) >= 2 { fieldList[i].Attribute = attFiled[1] fieldList[i].Type = attFiled[0] } if v.Field == "id" { fieldList[i].Comment = "Id" } patternInfo := strings.Split(v.Type, "(") if len(patternInfo) >= 1 { fieldList[i].Pattern = patternInfo[0] } } return } /* * @ 作者: 秦东 @ 时间: 2025-01-03 09:09:54 @ 功能: 处理数据源数据表 @ 参数 # @ 返回值 # @ 方法原型 # */ func (c *CustomerFormMaster) CreateActiveFormTable(sqlDb *gorm.DB, formName string) (relevance string, err error) { tableFieldList, err := GainFormAllField(sqlDb, formName) //获取当前主表的字段 var tableFormSqlAry FormTableSql tableFormSqlAry.TableSubUnitAnalysis(c.Form.DataSourceConfig.TableKey, c.List, true, tableFieldList) jsonStr, _ := json.Marshal(tableFormSqlAry) fmt.Printf("数据表-----》%v\n", string(jsonStr)) // 存在要新增或修改的主表字段 if len(tableFormSqlAry.MasterSql) > 0 { CreateDataSourceFormFiled(sqlDb, c.Form.DataSourceConfig.TableKey, c.Form.FormName, true, tableFormSqlAry.MasterSql) //添加主表字段 } sunFormNameAry := make(map[string]string) var sunTableNameAry []string //当存在子表时进行子表操作 if len(tableFormSqlAry.SunSql) > 0 { for _, v := range tableFormSqlAry.SunSql { if len(v.SqlAry) > 0 { sunFormTableName := v.TableName if !publicmethod.IsInTrue[string](sunFormTableName, sunTableNameAry) { sunTableNameAry = append(sunTableNameAry, sunFormTableName) sunFormNameAry[v.TableName] = sunFormTableName } else { sunFormTableName = fmt.Sprintf("%v%v", v.TableName, publicmethod.GetUUid(1)) sunTableNameAry = append(sunTableNameAry, sunFormTableName) sunFormNameAry[v.TableName] = sunFormTableName } err = CreateDataSourceForm(sqlDb, sunFormTableName, fmt.Sprintf("%v(%v)子表", c.Form.FormName, c.Form.Name), "InnoDB", false) // fmt.Printf("%v------->%v------->%v\n", sunFormTableName, err, v.SqlAry) if err == nil { CreateDataSourceFormFiled(sqlDb, sunFormTableName, fmt.Sprintf("%v(%v)子表", c.Form.FormName, c.Form.Name), false, v.SqlAry) } } } } if len(sunFormNameAry) > 0 { relevanceByte, _ := json.Marshal(sunFormNameAry) relevance = string(relevanceByte) } return }