Administrator 1 год назад
Родитель
Сommit
aac55c90b2

+ 32 - 0
create/CreateFile.go

@@ -52,3 +52,35 @@ func DaoCreate(outputPath string) {
 func ApiTsCreate(outputPath string) {
 	BaseCreate(outputPath, "./create/api.ts.tmpl")
 }
+func QueryCreate(outputPath string) {
+	BaseCreate(outputPath, "./create/domainQuery.go.tmpl")
+}
+
+func VueCreate(outputPath string) {
+	BaseCreateVue(outputPath, "./create/back.vue.tmpl")
+}
+func BaseCreateVue(outputPath, tmplUrl string) {
+	tmpl := loadTemplate(tmplUrl)
+
+	for i := range sqlload.CGans {
+		fileName := outputPath + sqlload.CGans[i].Table.Name + ".vue"
+		m := make(map[string]interface{})
+		m["gen"] = sqlload.CGans[i]
+
+		m, err := util.StructToMap(m)
+		if err != nil {
+			panic(err)
+		}
+		file, err := os.OpenFile(fileName, os.O_CREATE|os.O_WRONLY, 0666)
+		os.Truncate(fileName, 0)
+		if err != nil {
+			panic(err)
+		}
+		defer file.Close()
+		err = tmpl.Execute(file, m)
+		if err != nil {
+			panic(err)
+		}
+	}
+
+}

+ 21 - 0
create/CreateModel.go

@@ -0,0 +1,21 @@
+package create
+
+//func Get{{.table.name}}List({{.table.routerName}} domain.{{.table.name}}, pageNum, pageSize int) (vo.BaseListVo, error) {
+//	var arr []domain.{{.table.name}}
+//	Count, err := configs.Engine.Table("{{.table.routerName}}").Limit(pageSize, (pageNum-1)*pageSize).FindAndCount(&arr, &{{.table.routerName}})
+//	var vo vo.BaseListVo
+//	if err != nil {
+//		return vo, err
+//	}
+//	if err != nil {
+//		return vo, err
+//	}
+//	vo.PageNum = pageNum
+//	vo.PageSize = pageSize
+//	vo.List = make([]any, len(arr))
+//	for i, v := range arr {
+//		vo.List[i] = v
+//	}
+//	vo.Total = int(Count)
+//	return vo, nil
+//}

+ 18 - 0
create/api.ts.tmpl

@@ -42,4 +42,22 @@ export class {{.table.name}}{
 		 {{end}}
 	}
 }
+
+{{end}}{{range .gens}}
+export class {{.table.name}}Query{
+    {{range .tableColumns}}
+    {{if eq .queryType "BETWEEN"}}{{smallHump .goField}}Start: {{formatSqlToVueType .columnType}}
+    {{smallHump .goField}}End: {{formatSqlToVueType .columnType}}{{else}}{{smallHump .goField}}: {{formatSqlToVueType .columnType}}{{end}}{{end}}
+
+	static Create(){
+        return new {{.table.name}}({{range .tableColumns}}null,{{end}});
+    }
+
+	constructor({{range .tableColumns}}{{if eq .queryType "BETWEEN"}}{{smallHump .goField}}Start: {{formatSqlToVueType .columnType}},{{smallHump .goField}}End: {{formatSqlToVueType .columnType}},{{else}}{{smallHump .goField}}: {{formatSqlToVueType .columnType}},{{end}}{{end}}) {
+		 {{range .tableColumns}}{{if eq .queryType "BETWEEN"}}this.{{smallHump .goField}}Start = {{smallHump .goField}}Start;
+		 this.{{smallHump .goField}}End = {{smallHump .goField}}End;
+		 {{else}}this.{{smallHump .goField}} = {{smallHump .goField}};
+		 {{end}}{{end}}
+	}
+}
 {{end}}

+ 196 - 0
create/back.vue.tmpl

@@ -0,0 +1,196 @@
+<template>
+  <div class="back-form-container">
+    <div class="back-table-handler">
+      <el-row :gutter="10" class="mb8">
+        <el-col :span="1.5">
+          <el-button type="primary" plain size="small" @click="getList(pageNum)">
+            <el-icon>
+              <RefreshLeft/>
+            </el-icon>
+            <span>刷新</span>
+          </el-button>
+        </el-col>
+        <el-col :span="1.5">
+          <el-button type="primary" plain size="small" @click="openDialog('save', {{ .Table.GenTable.Name }}.Create())">
+            <el-icon>
+              <Plus/>
+            </el-icon>
+            <span>新增</span>
+          </el-button>
+        </el-col>
+        <el-col :span="1.5">
+          <el-button type="danger" plain size="small" @click="deleteByIds()">
+            <el-icon>
+              <Delete/>
+            </el-icon>
+            <span>删除</span>
+          </el-button>
+        </el-col>
+      </el-row>
+    </div>
+
+    <div class="back-table">
+      <el-table v-loading="listLoading" :data="list" @selection-change="selected" border :key="ListKey">
+        <el-table-column type="selection" width="40" align="center"/>
+        {{ range .gen.tableColumns }}
+          {{ $value := smallHump .ColumnName }}
+          {{ $name := .ColumnComment }}
+          {{ if eq $name "" }}
+            {{ $name = $value }}
+          {{ end }}
+          {{ if eq .IsKey "1" }}
+            {{ ElTableColumn $name $value .VueShowType .DictType }}
+          {{ else }}
+            {{ ElTableColumn $name $value .VueShowType .DictType }}
+          {{ end }}
+        {{ end }}
+        <el-table-column label="操作" align="center" fixed="right">
+          <template #default="scope">
+            <el-button link type="primary" @click="openDialog('update', scope.row)">修改</el-button>
+            <el-button link type="danger" @click="deleteById(scope.row.id)">删除</el-button>
+          </template>
+        </el-table-column>
+      </el-table>
+      <div class="pagination-container">
+        <el-pagination
+            background
+            :current-page="pageNum"
+            @current-change="getList"
+            :page-size="pageSize"
+            :page-sizes="[10, 20, 30, 50,100]"
+            :total="total"
+            @size-change="SetPageSized"
+            layout="total, sizes, prev, pager, next"
+        />
+      </div>
+    </div>
+
+    <el-dialog :title="dialogType=='update'?'更改字典类型':'新增字典类型'" v-model="open" width="500px" append-to-body>
+      <el-form ref="dictRef" :model="dialogForm" label-width="80px">
+        {{ range .Columns }}
+          {{ $value := smallHump .ColumnName }}
+          {{ if not (eq (strings.ToLower $value) "id") }}
+            {{ $name := .ColumnComment }}
+            {{ if eq $name "" }}
+              {{ $name = $value }}
+            {{ end }}
+            {{ elDialog $name $value .VueShowType .DictType }}
+          {{ end }}
+        {{ end }}
+      </el-form>
+      <template #footer>
+        <div class="dialog-footer">
+          <el-button type="primary" @click="submitForm()">确 定</el-button>
+          <el-button @click="open=false">取 消</el-button>
+        </div>
+      </template>
+    </el-dialog>
+  </div>
+</template>
+
+<script setup lang="ts">
+import {ref} from "vue";
+import {
+  DeleteBase{{ .Table.GenTable.Name }}ById,
+  {{ .Table.GenTable.Name }},
+  GetBase{{ .Table.GenTable.Name }}ListBy{{ .Table.GenTable.Name }},
+  SaveBase{{ .Table.GenTable.Name }},
+  UpdateBase{{ .Table.GenTable.Name }}
+} from "../../../api/back/BaseBackApi.ts";
+import {ElMessage} from "element-plus";
+import {Delete, Plus, RefreshLeft} from "@element-plus/icons-vue";
+import router from "../../../router";
+import {store} from "../../../state/TokenState.ts";
+
+let listLoading = ref(true)
+let total = ref(0)
+let pageNum = ref(1)
+let pageSize = ref(10)
+let list = ref<{{ .Table.GenTable.Name }}[]>([])
+let ListKey = ref(0)
+//搜索用
+let search = ref<{{ .Table.GenTable.Name }}>({{ .Table.GenTable.Name }}.Create())
+//修改,添加用
+let open = ref(false)
+let dialogType = ref("")//save添加,update修改
+let dialogForm = ref<{{ .Table.GenTable.Name }}>(null)
+let selectItems = ref<{{ .Table.GenTable.Name }}[]>([])
+const selected = (arr: {{ .Table.GenTable.Name }}[]) => {
+  selectItems.value = arr
+}
+
+getList()
+const SetPageSized = (val: number) => {
+  pageSize.value = val
+  getList(pageNum.value)
+}
+
+function openDialog(type: string, row: {{ .Table.GenTable.Name }}) {
+  open.value = true
+  dialogType.value = type
+  if (type==="save"){
+    dialogForm.value = {{ .Table.GenTable.Name }}.Create()
+    return
+  }
+  //深拷贝,不会影响数据
+  dialogForm.value = JSON.parse(JSON.stringify(row))
+}
+
+function deleteByIds() {
+  for (let i = 0; i < selectItems.value.length; i++) {
+      deleteById(selectItems[i].id)
+  }
+}
+
+function deleteById(id) {
+  DeleteBase{{ .Table.GenTable.Name }}ById(id).then(response => {
+    if (response.code == 200) {
+      ElMessage.success("删除成功,id:" + id)
+      getList()
+    } else {
+      ElMessage.error("删除失败,id:" + id)
+    }
+  })
+}
+
+function getList(pn = 1) {
+  pageNum.value = pn
+  GetBase{{ .Table.GenTable.Name }}ListBy{{ .Table.GenTable.Name }}(search.value, pageNum.value, pageSize.value).then(response => {
+    let data = response.data
+    total.value = data.total
+    list.value = response.data.list
+    ListKey.value++
+    listLoading.value = false
+  })
+}
+
+function submitForm() {
+  switch (dialogType.value) {
+    case "update":
+      UpdateBase{{ .Table.GenTable.Name }}(dialogForm.value, dialogForm.value.id).then(response => {
+        if (response.code == 200) {
+          open.value = false
+          getList()
+          ElMessage.success("修改成功")
+        } else {
+          ElMessage.error("修改失败")
+        }
+      })
+      break
+    case "save":
+      SaveBase{{ .Table.GenTable.Name }}(dialogForm.value).then(response => {
+        if (response.code == 200) {
+          open.value = false
+          getList()
+          ElMessage.success("添加成功")
+        } else {
+          ElMessage.error("添加失败")
+        }
+      })
+      break
+    default:
+      break
+  }
+}
+</script>
+{{ end }}

+ 23 - 1
create/dao.go.tmpl

@@ -49,7 +49,29 @@ func Get{{.table.name}}List({{.table.routerName}} domain.{{.table.name}}, pageNu
 	vo.Total = int(Count)
 	return vo, nil
 }
-
+func Get2{{.table.name}}List(query domain.{{.table.name}}Query, pageNum, pageSize int) (vo.BaseListVo, error) {
+	var arr []domain.{{.table.name}}
+	session := configs.Engine.Table("{{.table.routerName}}").Limit(pageSize, (pageNum-1)*pageSize){{range .tableColumns}}{{$defData := "0"}}{{if eq .goType "int"}}{{$defData = "0"}}{{else if eq .goType "int64"}}{{$defData = "0"}}{{else if eq .goType "float64"}}{{$defData = "0"}}{{else if eq .goType "string"}}{{$defData = "\"0\""}}{{else if eq .goType "time.Time"}}{{$defData = "\"0\""}}{{else}}{{$defData = "\"0\""}}{{end}}
+    if query.{{.goField}} != {{$defData}}{
+    {{if eq .queryType "EQ"}}   session.Where("{{.columnName}} = ?", query.{{.goField}}){{else if eq .queryType "NEQ"}}     session.Where("{{.columnName}} != ?", query.{{.goField}}){{else if eq .queryType "GT"}}      session.Where("{{.columnName}} > ?", query.{{.goField}}){{else if eq .queryType "LT"}}      session.Where("{{.columnName}} < ?", query.{{.goField}}){{else if eq .queryType "GTEQ"}}    session.Where("{{.columnName}} >= ?", query.{{.goField}}){{else if eq .queryType "LTEQ"}}    session.Where("{{.columnName}} <= ?", query.{{.goField}}){{else if eq .queryType "LIKE"}}    session.Where("{{.columnName}} like ?", "%"+query.{{.goField}}+"%"){{else if eq .queryType "BETWEEN"}}session.Where("{{.columnName}} between ? and ?", query.{{.goField}}Start, query.{{.goField}}End){{else}}    session.Where("{{.columnName}} = ?", query.{{.goField}}){{end}}
+    }{{end}}
+	Count, err := session.FindAndCount(&arr, &{{.table.routerName}})
+	var vo vo.BaseListVo
+	if err != nil {
+		return vo, err
+	}
+	if err != nil {
+		return vo, err
+	}
+	vo.PageNum = pageNum
+	vo.PageSize = pageSize
+	vo.List = make([]any, len(arr))
+	for i, v := range arr {
+		vo.List[i] = v
+	}
+	vo.Total = int(Count)
+	return vo, nil
+}
 func Save{{.table.name}}({{.table.routerName}} *domain.{{.table.name}}) (domain.{{.table.name}}, error) {
 	_, err := configs.Engine.Table("{{.table.routerName}}").Insert(&{{.table.routerName}})
 	if err != nil {

+ 9 - 0
create/domainQuery.go.tmpl

@@ -0,0 +1,9 @@
+package vo
+
+{{range .gens}}
+type {{bigHump .table.tableName}}Query struct {
+
+    {{range .tableColumns}}
+	{{queryType .goType .goField .queryType .columnName .columnComment}}{{end}}
+}
+{{end}}

+ 6 - 4
main.go

@@ -11,9 +11,11 @@ func init() {
 }
 func main() {
 	sqlload.Load()
-	create.DomainCreate("./output/domain/Domain.go")
-	create.RouterCreate("./output/router/Router.go")
-	create.DaoCreate("./output/dao/Dao.go")
-	create.ApiTsCreate("./output/vue/BaseApi.ts")
+	//create.DomainCreate("./output/domain/Domain.go")
+	//create.RouterCreate("./output/router/Router.go")
+	//create.DaoCreate("./output/dao/Dao.go")
+	//create.ApiTsCreate("./output/vue/BaseApi.ts")
+	//create.QueryCreate("./output/domain/Query.go")
+	create.VueCreate("./output/vue/page/")
 
 }

Разница между файлами не показана из-за своего большого размера
+ 885 - 24
output/dao/Dao.go


+ 71 - 14
output/domain/Domain.go

@@ -21,10 +21,11 @@ type Article struct {
 	CreateTime time.Time `xorm:"create_time" json:"createTime"` //注释:创建时间
 	UpdateBy string `xorm:"update_by" json:"updateBy"` //注释:更新人
 	UpdateTime time.Time `xorm:"update_time" json:"updateTime"` //注释:更新时间
+	Id int64 `xorm:"id" json:"id"` //注释:id
 }
 
 func (receiver Article) String() string {
-	return fmt.Sprint("Article{","Id:",receiver.Id,"ArticleTitle:",receiver.ArticleTitle,"ArticleContent:",receiver.ArticleContent,"State:",receiver.State,"ArticleTagIds:",receiver.ArticleTagIds,"ArticleTopicId:",receiver.ArticleTopicId,"Image:",receiver.Image,"PublishTime:",receiver.PublishTime,"EyeFill:",receiver.EyeFill,"LikeCount:",receiver.LikeCount,"CreateBy:",receiver.CreateBy,"CreateTime:",receiver.CreateTime,"UpdateBy:",receiver.UpdateBy,"UpdateTime:",receiver.UpdateTime,"}")
+	return fmt.Sprint("Article{","Id:",receiver.Id,"ArticleTitle:",receiver.ArticleTitle,"ArticleContent:",receiver.ArticleContent,"State:",receiver.State,"ArticleTagIds:",receiver.ArticleTagIds,"ArticleTopicId:",receiver.ArticleTopicId,"Image:",receiver.Image,"PublishTime:",receiver.PublishTime,"EyeFill:",receiver.EyeFill,"LikeCount:",receiver.LikeCount,"CreateBy:",receiver.CreateBy,"CreateTime:",receiver.CreateTime,"UpdateBy:",receiver.UpdateBy,"UpdateTime:",receiver.UpdateTime,"Id:",receiver.Id,"}")
 }
 
 type ArticleTag struct { 
@@ -134,10 +135,11 @@ type GenTableColumn struct {
 	QueryType string `xorm:"query_type" json:"queryType"` //注释:查询方式
 	VueShowType string `xorm:"vue_show_type" json:"vueShowType"` //注释:前端显示类型
 	DictType string `xorm:"dict_type" json:"dictType"` //注释:字典类型
+	QueryType string `xorm:"query_type" json:"queryType"` //注释:查询方式
 }
 
 func (receiver GenTableColumn) String() string {
-	return fmt.Sprint("GenTableColumn{","Id:",receiver.Id,"TableId:",receiver.TableId,"Sort:",receiver.Sort,"ColumnName:",receiver.ColumnName,"ColumnComment:",receiver.ColumnComment,"ColumnType:",receiver.ColumnType,"GoType:",receiver.GoType,"GoField:",receiver.GoField,"IsKey:",receiver.IsKey,"IsIncrement:",receiver.IsIncrement,"IsRequired:",receiver.IsRequired,"QueryType:",receiver.QueryType,"VueShowType:",receiver.VueShowType,"DictType:",receiver.DictType,"}")
+	return fmt.Sprint("GenTableColumn{","Id:",receiver.Id,"TableId:",receiver.TableId,"Sort:",receiver.Sort,"ColumnName:",receiver.ColumnName,"ColumnComment:",receiver.ColumnComment,"ColumnType:",receiver.ColumnType,"GoType:",receiver.GoType,"GoField:",receiver.GoField,"IsKey:",receiver.IsKey,"IsIncrement:",receiver.IsIncrement,"IsRequired:",receiver.IsRequired,"QueryType:",receiver.QueryType,"VueShowType:",receiver.VueShowType,"DictType:",receiver.DictType,"QueryType:",receiver.QueryType,"}")
 }
 
 type Goods struct { 
@@ -317,6 +319,16 @@ func (receiver UserWallet) String() string {
 	return fmt.Sprint("UserWallet{","Id:",receiver.Id,"UserId:",receiver.UserId,"Balance:",receiver.Balance,"PromotionAmount:",receiver.PromotionAmount,"RechargeAmount:",receiver.RechargeAmount,"}")
 }
 
+type Authority struct { 
+	Id int64 `xorm:"id" json:"id"` //注释:
+	AuthorityName string `xorm:"authority_name" json:"authorityName"` //注释:
+	AuthorityPath string `xorm:"authority_path" json:"authorityPath"` //注释:
+}
+
+func (receiver Authority) String() string {
+	return fmt.Sprint("Authority{","Id:",receiver.Id,"AuthorityName:",receiver.AuthorityName,"AuthorityPath:",receiver.AuthorityPath,"}")
+}
+
 type DictData struct { 
 	Id int64 `xorm:"id" json:"id"` //注释:字典编码
 	Sort int64 `xorm:"sort" json:"sort"` //注释:排序
@@ -363,36 +375,81 @@ func (receiver ManageUser) String() string {
 	return fmt.Sprint("ManageUser{","Id:",receiver.Id,"Name:",receiver.Name,"Username:",receiver.Username,"Password:",receiver.Password,"CreationTime:",receiver.CreationTime,"LoginTime:",receiver.LoginTime,"Status:",receiver.Status,"RoleId:",receiver.RoleId,"Phone:",receiver.Phone,"Email:",receiver.Email,"Avatar:",receiver.Avatar,"}")
 }
 
+type ShopAdviceCarousel struct { 
+	Id int64 `xorm:"id" json:"id"` //注释:
+	Name string `xorm:"name" json:"name"` //注释:广告名称
+	ToId int64 `xorm:"to_id" json:"toId"` //注释:目标id
+	AdviceType string `xorm:"advice_type" json:"adviceType"` //注释:广告类型
+	Sort string `xorm:"sort" json:"sort"` //注释:排序
+	State string `xorm:"state" json:"state"` //注释:状态
+	ShowType string `xorm:"show_type" json:"showType"` //注释:显示类型
+	CreateBy string `xorm:"create_by" json:"createBy"` //注释:创建人
+	CreateTime time.Time `xorm:"create_time" json:"createTime"` //注释:创建时间
+	UpdateBy string `xorm:"update_by" json:"updateBy"` //注释:更新人
+	UpdateTime time.Time `xorm:"update_time" json:"updateTime"` //注释:更新时间
+}
+
+func (receiver ShopAdviceCarousel) String() string {
+	return fmt.Sprint("ShopAdviceCarousel{","Id:",receiver.Id,"Name:",receiver.Name,"ToId:",receiver.ToId,"AdviceType:",receiver.AdviceType,"Sort:",receiver.Sort,"State:",receiver.State,"ShowType:",receiver.ShowType,"CreateBy:",receiver.CreateBy,"CreateTime:",receiver.CreateTime,"UpdateBy:",receiver.UpdateBy,"UpdateTime:",receiver.UpdateTime,"}")
+}
+
 type ShopTopic struct { 
 	Id int64 `xorm:"id" json:"id"` //注释:
-	RoleName string `xorm:"role_name" json:"roleName"` //注释:
+	Sort string `xorm:"sort" json:"sort"` //注释:
+	ParentId int64 `xorm:"parent_id" json:"parentId"` //注释:父级id
+	TopicPageImage string `xorm:"topic_page_image" json:"topicPageImage"` //注释:主题首页图片
+	TopicName string `xorm:"topic_name" json:"topicName"` //注释:主题名称
+	TopicDesc string `xorm:"topic_desc" json:"topicDesc"` //注释:主题描述
+	TypeIds string `xorm:"type_ids" json:"typeIds"` //注释:商品类型id
 }
 
 func (receiver ShopTopic) String() string {
-	return fmt.Sprint("ShopTopic{","Id:",receiver.Id,"RoleName:",receiver.RoleName,"}")
+	return fmt.Sprint("ShopTopic{","Id:",receiver.Id,"Sort:",receiver.Sort,"ParentId:",receiver.ParentId,"TopicPageImage:",receiver.TopicPageImage,"TopicName:",receiver.TopicName,"TopicDesc:",receiver.TopicDesc,"TypeIds:",receiver.TypeIds,"}")
 }
 
-type ShopAdviceCarousel struct { 
-	AuthorityId int64 `xorm:"authority_id" json:"authorityId"` //注释:
-	RoleId int64 `xorm:"role_id" json:"roleId"` //注释:
+type ShopTopicSku struct { 
+	Id int64 `xorm:"id" json:"id"` //注释: 
+	TopicId int64 `xorm:"topic_id" json:"topicId"` //注释:
+	SkuId int64 `xorm:"sku_id" json:"skuId"` //注释:
 }
 
-func (receiver ShopAdviceCarousel) String() string {
-	return fmt.Sprint("ShopAdviceCarousel{","AuthorityId:",receiver.AuthorityId,"RoleId:",receiver.RoleId,"}")
+func (receiver ShopTopicSku) String() string {
+	return fmt.Sprint("ShopTopicSku{","Id:",receiver.Id,"TopicId:",receiver.TopicId,"SkuId:",receiver.SkuId,"}")
 }
 
-type ShopTopicSku struct { 
+type ShopAdviceCarousel struct { 
 	Id int64 `xorm:"id" json:"id"` //注释:
+	Name string `xorm:"name" json:"name"` //注释:广告名称
+	ToId int64 `xorm:"to_id" json:"toId"` //注释:目标id
+	AdviceType string `xorm:"advice_type" json:"adviceType"` //注释:广告类型,用于跳转到对应的页面
 	Sort string `xorm:"sort" json:"sort"` //注释:排序
-	ImageUrl string `xorm:"image_url" json:"imageUrl"` //注释:图片
-	SkuId int64 `xorm:"sku_id" json:"skuId"` //注释:商品规格
-	Show string `xorm:"show" json:"show"` //注释:显示
+	State string `xorm:"state" json:"state"` //注释:状态
+	ShowType string `xorm:"show_type" json:"showType"` //注释:显示类型,carousel轮播图,package,礼包
 	CreateBy string `xorm:"create_by" json:"createBy"` //注释:创建人
 	CreateTime time.Time `xorm:"create_time" json:"createTime"` //注释:创建时间
 	UpdateBy string `xorm:"update_by" json:"updateBy"` //注释:更新人
 	UpdateTime time.Time `xorm:"update_time" json:"updateTime"` //注释:更新时间
+	ImageUrl string `xorm:"image_url" json:"imageUrl"` //注释:图片
+	ToType string `xorm:"to_type" json:"toType"` //注释:目标类型
+}
+
+func (receiver ShopAdviceCarousel) String() string {
+	return fmt.Sprint("ShopAdviceCarousel{","Id:",receiver.Id,"Name:",receiver.Name,"ToId:",receiver.ToId,"AdviceType:",receiver.AdviceType,"Sort:",receiver.Sort,"State:",receiver.State,"ShowType:",receiver.ShowType,"CreateBy:",receiver.CreateBy,"CreateTime:",receiver.CreateTime,"UpdateBy:",receiver.UpdateBy,"UpdateTime:",receiver.UpdateTime,"ImageUrl:",receiver.ImageUrl,"ToType:",receiver.ToType,"}")
+}
+
+type ShopTopicSku struct { 
+	Id int64 `xorm:"id" json:"id"` //注释: 
+	TopicId int64 `xorm:"topic_id" json:"topicId"` //注释:
+	SkuId int64 `xorm:"sku_id" json:"skuId"` //注释:
 }
 
 func (receiver ShopTopicSku) String() string {
-	return fmt.Sprint("ShopTopicSku{","Id:",receiver.Id,"Sort:",receiver.Sort,"ImageUrl:",receiver.ImageUrl,"SkuId:",receiver.SkuId,"Show:",receiver.Show,"CreateBy:",receiver.CreateBy,"CreateTime:",receiver.CreateTime,"UpdateBy:",receiver.UpdateBy,"UpdateTime:",receiver.UpdateTime,"}")
+	return fmt.Sprint("ShopTopicSku{","Id:",receiver.Id,"TopicId:",receiver.TopicId,"SkuId:",receiver.SkuId,"}")
+}
+
+type Authority struct { 
+}
+
+func (receiver Authority) String() string {
+	return fmt.Sprint("Authority{","}")
 }

+ 396 - 12
output/router/Router.go

@@ -253,6 +253,16 @@ func BaseUserWalletRouter(group *gin.RouterGroup) {
 	PushRouter(BaseArticleGroup, "DELETE", "/userWallet", DeleteBaseUserWallet)
 }
 
+func BaseAuthorityRouter(group *gin.RouterGroup) {
+	BaseArticleGroup := group.Group("/back/base")
+	PushRouter(BaseArticleGroup, "GET", "/authority", GetBaseAuthorityById)
+	PushRouter(BaseArticleGroup, "POST", "/authority/list", GetBaseAuthorityList)
+	PushRouter(BaseArticleGroup, "POST", "/authority/in", GetBaseAuthorityListInId)
+	PushRouter(BaseArticleGroup, "POST", "/authority", SaveBaseAuthority)
+	PushRouter(BaseArticleGroup, "PUT", "/authority", UpdateBaseAuthority)
+	PushRouter(BaseArticleGroup, "DELETE", "/authority", DeleteBaseAuthority)
+}
+
 func BaseDictDataRouter(group *gin.RouterGroup) {
 	BaseArticleGroup := group.Group("/back/base")
 	PushRouter(BaseArticleGroup, "GET", "/dictData", GetBaseDictDataById)
@@ -283,6 +293,16 @@ func BaseManageUserRouter(group *gin.RouterGroup) {
 	PushRouter(BaseArticleGroup, "DELETE", "/manageUser", DeleteBaseManageUser)
 }
 
+func BaseShopAdviceCarouselRouter(group *gin.RouterGroup) {
+	BaseArticleGroup := group.Group("/back/base")
+	PushRouter(BaseArticleGroup, "GET", "/shopAdviceCarousel", GetBaseShopAdviceCarouselById)
+	PushRouter(BaseArticleGroup, "POST", "/shopAdviceCarousel/list", GetBaseShopAdviceCarouselList)
+	PushRouter(BaseArticleGroup, "POST", "/shopAdviceCarousel/in", GetBaseShopAdviceCarouselListInId)
+	PushRouter(BaseArticleGroup, "POST", "/shopAdviceCarousel", SaveBaseShopAdviceCarousel)
+	PushRouter(BaseArticleGroup, "PUT", "/shopAdviceCarousel", UpdateBaseShopAdviceCarousel)
+	PushRouter(BaseArticleGroup, "DELETE", "/shopAdviceCarousel", DeleteBaseShopAdviceCarousel)
+}
+
 func BaseShopTopicRouter(group *gin.RouterGroup) {
 	BaseArticleGroup := group.Group("/back/base")
 	PushRouter(BaseArticleGroup, "GET", "/shopTopic", GetBaseShopTopicById)
@@ -293,6 +313,16 @@ func BaseShopTopicRouter(group *gin.RouterGroup) {
 	PushRouter(BaseArticleGroup, "DELETE", "/shopTopic", DeleteBaseShopTopic)
 }
 
+func BaseShopTopicSkuRouter(group *gin.RouterGroup) {
+	BaseArticleGroup := group.Group("/back/base")
+	PushRouter(BaseArticleGroup, "GET", "/shopTopicSku", GetBaseShopTopicSkuById)
+	PushRouter(BaseArticleGroup, "POST", "/shopTopicSku/list", GetBaseShopTopicSkuList)
+	PushRouter(BaseArticleGroup, "POST", "/shopTopicSku/in", GetBaseShopTopicSkuListInId)
+	PushRouter(BaseArticleGroup, "POST", "/shopTopicSku", SaveBaseShopTopicSku)
+	PushRouter(BaseArticleGroup, "PUT", "/shopTopicSku", UpdateBaseShopTopicSku)
+	PushRouter(BaseArticleGroup, "DELETE", "/shopTopicSku", DeleteBaseShopTopicSku)
+}
+
 func BaseShopAdviceCarouselRouter(group *gin.RouterGroup) {
 	BaseArticleGroup := group.Group("/back/base")
 	PushRouter(BaseArticleGroup, "GET", "/shopAdviceCarousel", GetBaseShopAdviceCarouselById)
@@ -313,6 +343,16 @@ func BaseShopTopicSkuRouter(group *gin.RouterGroup) {
 	PushRouter(BaseArticleGroup, "DELETE", "/shopTopicSku", DeleteBaseShopTopicSku)
 }
 
+func BaseAuthorityRouter(group *gin.RouterGroup) {
+	BaseArticleGroup := group.Group("/back/base")
+	PushRouter(BaseArticleGroup, "GET", "/authority", GetBaseAuthorityById)
+	PushRouter(BaseArticleGroup, "POST", "/authority/list", GetBaseAuthorityList)
+	PushRouter(BaseArticleGroup, "POST", "/authority/in", GetBaseAuthorityListInId)
+	PushRouter(BaseArticleGroup, "POST", "/authority", SaveBaseAuthority)
+	PushRouter(BaseArticleGroup, "PUT", "/authority", UpdateBaseAuthority)
+	PushRouter(BaseArticleGroup, "DELETE", "/authority", DeleteBaseAuthority)
+}
+
 
 
  
@@ -2208,6 +2248,92 @@ func DeleteBaseUserWallet(c *gin.Context) {
 	c.JSON(200, CreateResult())
 }
  
+//================Authority ==============================
+func GetBaseAuthorityById(c *gin.Context) {
+	id := c.Query("id")
+	authority, err := manage.GetAuthorityById(cast.ToInt64(id))
+	if err != nil {
+		c.JSON(200, CreateResultError(500, "用户查询不存在"))
+		return
+	}
+	c.JSON(200, CreateResultData(authority))
+	return
+}
+
+func GetBaseAuthorityList(c *gin.Context) {
+	data := share.GetJsonAnyParam(c)
+	param, _ := data("param")
+	pageNum, _ := data("pageNum")
+	pageSize, _ := data("pageSize")
+	authority := domain.Authority{}
+	err := mapstructure.Decode(param, &authority)
+	if err != nil {
+		c.JSON(200, CreateResultError(500, "json转换错误"))
+		return
+	}
+	list, err := manage.GetAuthorityList(authority, cast.ToInt(pageNum), cast.ToInt(pageSize))
+	if err != nil {
+		c.JSON(200, CreateResultError(500, "查询错误"))
+		return
+	}
+	c.JSON(200, CreateResultData(list))
+}
+
+func GetBaseAuthorityListInId(c *gin.Context) {
+	data := share.GetJsonAnyParam(c)
+	idsString, _ := data("ids")
+	var ids []int64
+	err := mapstructure.Decode([]byte(cast.ToString(idsString)), &ids)
+	list, err := manage.GetAuthorityListInId(ids)
+	if err != nil {
+		c.JSON(200, CreateResultError(500, "查询错误"))
+		return
+	}
+	c.JSON(200, CreateResultData(list))
+}
+
+func SaveBaseAuthority(c *gin.Context) {
+	data := share.GetJsonAnyParam(c)
+	authorityParam, _ := data("authority")
+	authority := domain.Authority{}
+	err := mapstructure.Decode(authorityParam, &authority)
+	
+	
+	saveAuthority, err := manage.SaveAuthority(&authority)
+	if err != nil {
+		c.JSON(200, CreateResultError(500, "保存错误"))
+		return
+	}
+	c.JSON(200, CreateResultData(saveAuthority))
+}
+
+func UpdateBaseAuthority(c *gin.Context) {
+	data := share.GetJsonAnyParam(c)
+	authority, _ := data("authority")
+	id, _ := data("id")
+	toMap := UtilStructToMap(cast.ToStringMap(authority))
+	
+    
+    
+    
+	setAuthority, b, err := manage.SetAuthority(toMap, cast.ToInt64(id))
+	if err != nil || !b {
+		c.JSON(200, CreateResultError(500, "修改错误"))
+		return
+	}
+	c.JSON(200, CreateResultData(setAuthority))
+}
+
+func DeleteBaseAuthority(c *gin.Context) {
+	id := c.Query("id")
+	res := manage.DeleteAuthority(cast.ToInt64(id))
+	if !res {
+		c.JSON(200, CreateResultError(500, "删除错误"))
+		return
+	}
+	c.JSON(200, CreateResult())
+}
+ 
 //================DictData 字典数据==============================
 func GetBaseDictDataById(c *gin.Context) {
 	id := c.Query("id")
@@ -2466,6 +2592,92 @@ func DeleteBaseManageUser(c *gin.Context) {
 	c.JSON(200, CreateResult())
 }
  
+//================ShopAdviceCarousel ==============================
+func GetBaseShopAdviceCarouselById(c *gin.Context) {
+	id := c.Query("id")
+	shopAdviceCarousel, err := manage.GetShopAdviceCarouselById(cast.ToInt64(id))
+	if err != nil {
+		c.JSON(200, CreateResultError(500, "用户查询不存在"))
+		return
+	}
+	c.JSON(200, CreateResultData(shopAdviceCarousel))
+	return
+}
+
+func GetBaseShopAdviceCarouselList(c *gin.Context) {
+	data := share.GetJsonAnyParam(c)
+	param, _ := data("param")
+	pageNum, _ := data("pageNum")
+	pageSize, _ := data("pageSize")
+	shopAdviceCarousel := domain.ShopAdviceCarousel{}
+	err := mapstructure.Decode(param, &shopAdviceCarousel)
+	if err != nil {
+		c.JSON(200, CreateResultError(500, "json转换错误"))
+		return
+	}
+	list, err := manage.GetShopAdviceCarouselList(shopAdviceCarousel, cast.ToInt(pageNum), cast.ToInt(pageSize))
+	if err != nil {
+		c.JSON(200, CreateResultError(500, "查询错误"))
+		return
+	}
+	c.JSON(200, CreateResultData(list))
+}
+
+func GetBaseShopAdviceCarouselListInId(c *gin.Context) {
+	data := share.GetJsonAnyParam(c)
+	idsString, _ := data("ids")
+	var ids []int64
+	err := mapstructure.Decode([]byte(cast.ToString(idsString)), &ids)
+	list, err := manage.GetShopAdviceCarouselListInId(ids)
+	if err != nil {
+		c.JSON(200, CreateResultError(500, "查询错误"))
+		return
+	}
+	c.JSON(200, CreateResultData(list))
+}
+
+func SaveBaseShopAdviceCarousel(c *gin.Context) {
+	data := share.GetJsonAnyParam(c)
+	shopAdviceCarouselParam, _ := data("shopAdviceCarousel")
+	shopAdviceCarousel := domain.ShopAdviceCarousel{}
+	err := mapstructure.Decode(shopAdviceCarouselParam, &shopAdviceCarousel)
+	goodsshopAdviceCarousel.CreateBy = fmt.Sprint(GetUserIdByToken(c))
+	goodsshopAdviceCarousel.CreateTime = time.Now()
+	saveShopAdviceCarousel, err := manage.SaveShopAdviceCarousel(&shopAdviceCarousel)
+	if err != nil {
+		c.JSON(200, CreateResultError(500, "保存错误"))
+		return
+	}
+	c.JSON(200, CreateResultData(saveShopAdviceCarousel))
+}
+
+func UpdateBaseShopAdviceCarousel(c *gin.Context) {
+	data := share.GetJsonAnyParam(c)
+	shopAdviceCarousel, _ := data("shopAdviceCarousel")
+	id, _ := data("id")
+	toMap := UtilStructToMap(cast.ToStringMap(shopAdviceCarousel))
+	toMap["create_by"] = nil
+    toMap["create_time"] = nil
+    toMap["update_by"] = fmt.Sprint(GetUserIdByToken(c))
+    toMap["update_time"] = DateToString(time.Now())
+	setShopAdviceCarousel, b, err := manage.SetShopAdviceCarousel(toMap, cast.ToInt64(id))
+	if err != nil || !b {
+		c.JSON(200, CreateResultError(500, "修改错误"))
+		return
+	}
+	c.JSON(200, CreateResultData(setShopAdviceCarousel))
+}
+
+func DeleteBaseShopAdviceCarousel(c *gin.Context) {
+	id := c.Query("id")
+	res := manage.DeleteShopAdviceCarousel(cast.ToInt64(id))
+	if !res {
+		c.JSON(200, CreateResultError(500, "删除错误"))
+		return
+	}
+	c.JSON(200, CreateResult())
+}
+ 
 //================ShopTopic 商品主题==============================
 func GetBaseShopTopicById(c *gin.Context) {
 	id := c.Query("id")
@@ -2552,6 +2764,92 @@ func DeleteBaseShopTopic(c *gin.Context) {
 	c.JSON(200, CreateResult())
 }
  
+//================ShopTopicSku ==============================
+func GetBaseShopTopicSkuById(c *gin.Context) {
+	id := c.Query("id")
+	shopTopicSku, err := manage.GetShopTopicSkuById(cast.ToInt64(id))
+	if err != nil {
+		c.JSON(200, CreateResultError(500, "用户查询不存在"))
+		return
+	}
+	c.JSON(200, CreateResultData(shopTopicSku))
+	return
+}
+
+func GetBaseShopTopicSkuList(c *gin.Context) {
+	data := share.GetJsonAnyParam(c)
+	param, _ := data("param")
+	pageNum, _ := data("pageNum")
+	pageSize, _ := data("pageSize")
+	shopTopicSku := domain.ShopTopicSku{}
+	err := mapstructure.Decode(param, &shopTopicSku)
+	if err != nil {
+		c.JSON(200, CreateResultError(500, "json转换错误"))
+		return
+	}
+	list, err := manage.GetShopTopicSkuList(shopTopicSku, cast.ToInt(pageNum), cast.ToInt(pageSize))
+	if err != nil {
+		c.JSON(200, CreateResultError(500, "查询错误"))
+		return
+	}
+	c.JSON(200, CreateResultData(list))
+}
+
+func GetBaseShopTopicSkuListInId(c *gin.Context) {
+	data := share.GetJsonAnyParam(c)
+	idsString, _ := data("ids")
+	var ids []int64
+	err := mapstructure.Decode([]byte(cast.ToString(idsString)), &ids)
+	list, err := manage.GetShopTopicSkuListInId(ids)
+	if err != nil {
+		c.JSON(200, CreateResultError(500, "查询错误"))
+		return
+	}
+	c.JSON(200, CreateResultData(list))
+}
+
+func SaveBaseShopTopicSku(c *gin.Context) {
+	data := share.GetJsonAnyParam(c)
+	shopTopicSkuParam, _ := data("shopTopicSku")
+	shopTopicSku := domain.ShopTopicSku{}
+	err := mapstructure.Decode(shopTopicSkuParam, &shopTopicSku)
+	
+	
+	saveShopTopicSku, err := manage.SaveShopTopicSku(&shopTopicSku)
+	if err != nil {
+		c.JSON(200, CreateResultError(500, "保存错误"))
+		return
+	}
+	c.JSON(200, CreateResultData(saveShopTopicSku))
+}
+
+func UpdateBaseShopTopicSku(c *gin.Context) {
+	data := share.GetJsonAnyParam(c)
+	shopTopicSku, _ := data("shopTopicSku")
+	id, _ := data("id")
+	toMap := UtilStructToMap(cast.ToStringMap(shopTopicSku))
+	
+    
+    
+    
+	setShopTopicSku, b, err := manage.SetShopTopicSku(toMap, cast.ToInt64(id))
+	if err != nil || !b {
+		c.JSON(200, CreateResultError(500, "修改错误"))
+		return
+	}
+	c.JSON(200, CreateResultData(setShopTopicSku))
+}
+
+func DeleteBaseShopTopicSku(c *gin.Context) {
+	id := c.Query("id")
+	res := manage.DeleteShopTopicSku(cast.ToInt64(id))
+	if !res {
+		c.JSON(200, CreateResultError(500, "删除错误"))
+		return
+	}
+	c.JSON(200, CreateResult())
+}
+ 
 //================ShopAdviceCarousel 商城广告==============================
 func GetBaseShopAdviceCarouselById(c *gin.Context) {
 	id := c.Query("id")
@@ -2601,8 +2899,8 @@ func SaveBaseShopAdviceCarousel(c *gin.Context) {
 	shopAdviceCarouselParam, _ := data("shopAdviceCarousel")
 	shopAdviceCarousel := domain.ShopAdviceCarousel{}
 	err := mapstructure.Decode(shopAdviceCarouselParam, &shopAdviceCarousel)
-	
-	
+	goodsshopAdviceCarousel.CreateBy = fmt.Sprint(GetUserIdByToken(c))
+	goodsshopAdviceCarousel.CreateTime = time.Now()
 	saveShopAdviceCarousel, err := manage.SaveShopAdviceCarousel(&shopAdviceCarousel)
 	if err != nil {
 		c.JSON(200, CreateResultError(500, "保存错误"))
@@ -2616,10 +2914,10 @@ func UpdateBaseShopAdviceCarousel(c *gin.Context) {
 	shopAdviceCarousel, _ := data("shopAdviceCarousel")
 	id, _ := data("id")
 	toMap := UtilStructToMap(cast.ToStringMap(shopAdviceCarousel))
-	
-    
-    
-    
+	toMap["create_by"] = nil
+    toMap["create_time"] = nil
+    toMap["update_by"] = fmt.Sprint(GetUserIdByToken(c))
+    toMap["update_time"] = DateToString(time.Now())
 	setShopAdviceCarousel, b, err := manage.SetShopAdviceCarousel(toMap, cast.ToInt64(id))
 	if err != nil || !b {
 		c.JSON(200, CreateResultError(500, "修改错误"))
@@ -2687,8 +2985,8 @@ func SaveBaseShopTopicSku(c *gin.Context) {
 	shopTopicSkuParam, _ := data("shopTopicSku")
 	shopTopicSku := domain.ShopTopicSku{}
 	err := mapstructure.Decode(shopTopicSkuParam, &shopTopicSku)
-	goodsshopTopicSku.CreateBy = fmt.Sprint(GetUserIdByToken(c))
-	goodsshopTopicSku.CreateTime = time.Now()
+	
+	
 	saveShopTopicSku, err := manage.SaveShopTopicSku(&shopTopicSku)
 	if err != nil {
 		c.JSON(200, CreateResultError(500, "保存错误"))
@@ -2702,10 +3000,10 @@ func UpdateBaseShopTopicSku(c *gin.Context) {
 	shopTopicSku, _ := data("shopTopicSku")
 	id, _ := data("id")
 	toMap := UtilStructToMap(cast.ToStringMap(shopTopicSku))
-	toMap["create_by"] = nil
-    toMap["create_time"] = nil
-    toMap["update_by"] = fmt.Sprint(GetUserIdByToken(c))
-    toMap["update_time"] = DateToString(time.Now())
+	
+    
+    
+    
 	setShopTopicSku, b, err := manage.SetShopTopicSku(toMap, cast.ToInt64(id))
 	if err != nil || !b {
 		c.JSON(200, CreateResultError(500, "修改错误"))
@@ -2723,3 +3021,89 @@ func DeleteBaseShopTopicSku(c *gin.Context) {
 	}
 	c.JSON(200, CreateResult())
 }
+ 
+//================Authority ==============================
+func GetBaseAuthorityById(c *gin.Context) {
+	id := c.Query("id")
+	authority, err := manage.GetAuthorityById(cast.ToInt64(id))
+	if err != nil {
+		c.JSON(200, CreateResultError(500, "用户查询不存在"))
+		return
+	}
+	c.JSON(200, CreateResultData(authority))
+	return
+}
+
+func GetBaseAuthorityList(c *gin.Context) {
+	data := share.GetJsonAnyParam(c)
+	param, _ := data("param")
+	pageNum, _ := data("pageNum")
+	pageSize, _ := data("pageSize")
+	authority := domain.Authority{}
+	err := mapstructure.Decode(param, &authority)
+	if err != nil {
+		c.JSON(200, CreateResultError(500, "json转换错误"))
+		return
+	}
+	list, err := manage.GetAuthorityList(authority, cast.ToInt(pageNum), cast.ToInt(pageSize))
+	if err != nil {
+		c.JSON(200, CreateResultError(500, "查询错误"))
+		return
+	}
+	c.JSON(200, CreateResultData(list))
+}
+
+func GetBaseAuthorityListInId(c *gin.Context) {
+	data := share.GetJsonAnyParam(c)
+	idsString, _ := data("ids")
+	var ids []int64
+	err := mapstructure.Decode([]byte(cast.ToString(idsString)), &ids)
+	list, err := manage.GetAuthorityListInId(ids)
+	if err != nil {
+		c.JSON(200, CreateResultError(500, "查询错误"))
+		return
+	}
+	c.JSON(200, CreateResultData(list))
+}
+
+func SaveBaseAuthority(c *gin.Context) {
+	data := share.GetJsonAnyParam(c)
+	authorityParam, _ := data("authority")
+	authority := domain.Authority{}
+	err := mapstructure.Decode(authorityParam, &authority)
+	
+	
+	saveAuthority, err := manage.SaveAuthority(&authority)
+	if err != nil {
+		c.JSON(200, CreateResultError(500, "保存错误"))
+		return
+	}
+	c.JSON(200, CreateResultData(saveAuthority))
+}
+
+func UpdateBaseAuthority(c *gin.Context) {
+	data := share.GetJsonAnyParam(c)
+	authority, _ := data("authority")
+	id, _ := data("id")
+	toMap := UtilStructToMap(cast.ToStringMap(authority))
+	
+    
+    
+    
+	setAuthority, b, err := manage.SetAuthority(toMap, cast.ToInt64(id))
+	if err != nil || !b {
+		c.JSON(200, CreateResultError(500, "修改错误"))
+		return
+	}
+	c.JSON(200, CreateResultData(setAuthority))
+}
+
+func DeleteBaseAuthority(c *gin.Context) {
+	id := c.Query("id")
+	res := manage.DeleteAuthority(cast.ToInt64(id))
+	if !res {
+		c.JSON(200, CreateResultError(500, "删除错误"))
+		return
+	}
+	c.JSON(200, CreateResult())
+}

Разница между файлами не показана из-за своего большого размера
+ 395 - 245
output/vue/BaseApi.ts


+ 51 - 18
sqlload/SqlLoad.go

@@ -4,6 +4,7 @@ import (
 	"fmt"
 	"go-create-template/configs"
 	"go-create-template/util"
+	"strings"
 )
 
 var CTables []CTable
@@ -121,26 +122,58 @@ func LoadGenTableData() {
 	for i := range CGans {
 		cg[CGans[i].Table.TableName] = CGans[i]
 	}
-	for s := range cg {
-		for i := 0; i < len(cg[s].TableColumns); i++ {
-			//字段添加
-			//addColumn := GenTableColumn{
-			//	TableId:       cg[s].Table.Id,
-			//	ColumnName:    cg[s].TableColumns[i].ColumnName,
-			//	ColumnComment: cg[s].TableColumns[i].,
-			//	ColumnType:    cg[s].TableColumns[i].SQLType.Name,
-			//	GoField:       util.BigHump(cg[s].TableColumns[i].ColumnName),
-			//	GoType:        util.ToGoType(cg[s].TableColumns[i].SQLType.Name),
-			//}
-			//字段对比
-			for j := 0; j < len(ct[s].CTableColumns); j++ {
-				if cg[s].TableColumns[i].ColumnName == ct[s].CTableColumns[j].Name {
-					continue
-				} else {
-
+	//添加未添加字段
+	for i := range CTables {
+		//获取表格
+		var table GenTable
+		configs.Engine.Table("gen_table").Where("table_name = ?", CTables[i].Name).Get(&table)
+		for j := range CTables[i].CTableColumns {
+			//获取列字段
+			var tableColumn GenTableColumn
+			configs.Engine.Table("gen_table_column").
+				Where("table_id = ? and column_name = ?", table.Id, CTables[i].CTableColumns[j].Name).Get(&tableColumn)
+			if tableColumn.Id == 0 {
+				column := GenTableColumn{
+					TableId:       table.Id,
+					Sort:          0,
+					ColumnName:    CTables[i].CTableColumns[j].Name,
+					ColumnComment: CTables[i].CTableColumns[j].Comment,
+					ColumnType:    strings.ToLower(CTables[i].CTableColumns[j].SQLType.Name),
+					GoType:        util.ToGoType(CTables[i].CTableColumns[j].SQLType.Name),
+					GoField:       util.BigHump(CTables[i].CTableColumns[j].Name),
+					VueShowType:   "",
+					IsRequired:    "",
+					IsKey:         "",
+					DictType:      "",
 				}
+				fmt.Println(column)
+				configs.Engine.Table("gen_table_column").Insert(&column)
+			}
+		}
+	}
+	//移除多余字段
+	for i := range CGans {
+		sign := 0
+		for j := range CTables {
+			if CTables[j].Name == CGans[i].Table.Name {
+				sign = j
+				break
+			}
+		}
+		for k := range CGans[i].TableColumns {
+			ex := false
+			for j := 0; j < len(CTables[sign].CTableColumns); j++ {
+				if CGans[i].TableColumns[k].ColumnName == CTables[sign].CTableColumns[j].Name {
+					ex = true
+					break
+				}
+			}
+			//删除
+			if !ex {
+				configs.Engine.Table("gen_table_column").Where("table_id = ? and column_name = ?",
+					CGans[i].TableColumns[k].Id, CGans[i].TableColumns[k].ColumnName).Limit(1).Delete(CGans[i].TableColumns[k])
+				fmt.Println("delete column:", CGans[i].TableColumns[k].ColumnName)
 			}
 		}
 	}
-
 }

+ 154 - 2
util/BaseTemplateFunc.go

@@ -11,6 +11,9 @@ var FuncMap = template.FuncMap{
 	"formatSqlToVueType": formatSqlToVueType,
 	"smallHump":          SmallHump,
 	"bigHump":            BigHump,
+	"queryType":          QueryType,
+	"ElDialog":           ElDialog,
+	"ElTableColumn":      ElTableColumn,
 }
 
 // ToGoType sql类型转go类型
@@ -18,8 +21,14 @@ func ToGoType(sqlType string) string {
 	switch sqlType {
 	case "varchar":
 		return "string"
+	case "VARCHAR":
+		return "string"
+	case "CHAR":
+		return "string"
 	case "char":
 		return "string"
+	case "INT":
+		return "int64"
 	case "int":
 		return "int64"
 	case "decimal":
@@ -62,17 +71,160 @@ func formatSqlToVueType(str string) string {
 }
 func BigHump(str string) string {
 	split := strings.Split(str, "_")
+	if len(split) == 1 {
+		return strings.Title(str)
+	}
 	res := strings.Title(split[0])
 	for i := 1; i < len(split); i++ {
-		res += split[i]
+		res += strings.Title(split[i])
 	}
 	return res
 }
 func SmallHump(str string) string {
 	split := strings.Split(str, "_")
+	if len(split) == 1 {
+		return strings.ToLower(str[0:1]) + str[1:]
+
+	}
 	res := strings.ToLower(split[0][0:1]) + strings.ToLower(split[0][1:])
 	for i := 1; i < len(split); i++ {
-		res += split[i]
+		res += strings.ToUpper(split[i][0:1]) + strings.ToLower(split[i][1:])
 	}
 	return res
 }
+func QueryType(GoType, GoField, QueryType, ColumnName, ColumnComment string) string {
+	switch GoType {
+	case "int":
+	case "int64":
+	case "float64":
+		if QueryType == "BETWEEN" {
+			return GoField + "Start string  `xorm:" + ColumnName + "  json:" + SmallHump(ColumnName) + "` // " + ColumnComment + "\n\t" +
+				GoField + "End string  `xorm:" + ColumnName + "  json:" + SmallHump(ColumnName) + "` // " + ColumnComment
+		} else {
+			return GoField + " " + GoType + "  `xorm:" + ColumnName + "  json:" + SmallHump(ColumnName) + "` // " + ColumnComment
+		}
+	case "time.Time":
+		if QueryType == "BETWEEN" {
+			return GoField + "Start string  `xorm:" + ColumnName + "  json:" + SmallHump(ColumnName) + "` // " + ColumnComment + "\n\t" +
+				GoField + "End string  `xorm:" + ColumnName + "  json:" + SmallHump(ColumnName) + "` // " + ColumnComment
+		} else {
+			return GoField + " string  `xorm:" + ColumnName + "  json:" + SmallHump(ColumnName) + "` // " + ColumnComment
+		}
+	case "string":
+	default:
+		return GoField + " string  `xorm:" + ColumnName + "  json:" + SmallHump(ColumnName) + "` // " + ColumnComment
+	}
+	return GoField + " string  `xorm:" + ColumnName + "  json:" + SmallHump(ColumnName) + "` // " + ColumnComment
+}
+
+// 输入框 input
+// 文本域 textarea
+// 下拉框 Select
+// 复选框 Checkbox
+// 单选框 Radio
+// 时间选择 Time
+// 图片上传 Image
+// 文件上传 File
+// 富文本 Editor
+func ElTableColumn(name, value, typeName string, dictType string) string {
+	if typeName == "input" || typeName == "textarea" || typeName == "select" || typeName == "radio" ||
+		typeName == "checkbox" || typeName == "time" || typeName == "text" {
+		if dictType == "" {
+			return "\n        <el-table-column label=\"" + name + "\" align=\"center\" prop=\"" + value + "\"/>"
+		} else {
+			return "\n      <el-table-column label=\"" + name + "\" align=\"center\" prop=\"" + value + "\">" +
+				"\n        <template #default=\"scope\">" +
+				"\n          <DictTag :dict-type=\"'" + dictType + "'\" :dict-value=\"scope.row." + value + "\"/>" +
+				"\n        </template>" +
+				"\n      </el-table-column>"
+		}
+	}
+	if typeName == "image" {
+		return "\n      <el-table-column label=\"" + name + "\" align=\"center\" prop=\"" + value + "\">" +
+			"\n        <template #default=\"scope\">" +
+			"\n          <el-image  :src=\"scope.row." + value + "\"></el-image>" +
+			"\n        </template>" +
+			"\n      </el-table-column>"
+	}
+	return "\n        <el-table-column label=\"" + name + "\" align=\"center\" prop=\"" + value + "\"/>"
+}
+
+func ElDialog(name, value, typeName, dictType string) string {
+	typeName = strings.ToLower(typeName)
+	if typeName == "input" {
+		return "\n        <el-form-item label=\"" + name + "\" prop=\"" + value + "\">" +
+			"\n          <el-input v-model=\"dialogForm." + value + "\" placeholder=\"请输入" + name + "\"/>" +
+			"\n        </el-form-item>"
+	} else if typeName == "number" {
+		return "\n        <el-form-item label=\"" + name + "\" prop=\"" + value + "\">" +
+			"\n          <el-input-number v-model=\"dialogForm." + value + "\" placeholder=\"请输入" + name + "\"/>" +
+			"\n        </el-form-item>"
+	} else if typeName == "textarea" {
+		return "\n        <el-form-item label=\"" + name + "\" prop=\"" + value + "\">" +
+			"\n          <el-input v-model=\"dialogForm." + value + "\" placeholder=\"请输入" + name + "\" type=\"textarea\"/>" +
+			"\n        </el-form-item>"
+	} else if typeName == "select" {
+		return "\n        <el-form-item label=\"" + name + "\" prop=\"" + value + "\">" +
+			"\n          <el-select v-model=\"dialogForm." + value + "\" placeholder=\"请选择" + name + "\">" +
+			"\n            <el-option" +
+			"\n              v-for=\"item in store.state.dicts.get('" + dictType + "')\"" +
+			"\n              :key=\"item.dictValue\"" +
+			"\n              :label=\"item.dictLabel\"" +
+			"\n              :value=\"item.dictValue\"/>" +
+			"\n          </el-select>" +
+			"\n        </el-form-item>"
+	} else if typeName == "radio" {
+		if dictType == "" {
+			return "\n        <el-form-item label=\"" + name + "\" prop=\"" + value + "\">" +
+				"            <el-radio-group v-model=\"dialogForm." + value + "\">" +
+				"\n              <el-radio" +
+				"\n                  v-for=\"item in [['0','否'], ['1','是']]\"" +
+				"\n                  :key=\"item[0]\"" +
+				"\n                  :label=\"item[0]\">" +
+				"\n                {{ item[1] }}" +
+				"\n              </el-radio>" +
+				"\n            </el-radio-group>" +
+				"\n        </el-form-item>"
+		} else {
+			return "\n        <el-form-item label=\"" + name + "\" prop=\"" + value + "\">" +
+				"\n          <el-radio-group v-model=\"dialogForm." + value + "\">" +
+				"\n            <el-radio" +
+				"\n              v-for=\"item in store.state.dicts.get(" + dictType + ")\"" +
+				"\n              :key=\"item.dictValue\"" +
+				"\n              :label=\"item.dictLabel\">" +
+				"\n              {{item.dictLabel}}" +
+				"\n            </el-radio>" +
+				"\n          </el-radio-group>" +
+				"\n        </el-form-item>"
+		}
+	} else if typeName == "checkbox" {
+		return "\n        <el-form-item label=\"" + name + "\" prop=\"" + value + "\">" +
+			"\n        	<el-checkbox-group v-model=\"dialogForm." + value + "\">" +
+			"\n          <el-checkbox :label=\"item.dictLabel\" :value=\"item.dictValue\" v-for=\"item in store.state.dicts.get('" + dictType + "')\"/>" +
+			"\n        </el-checkbox-group>" +
+			"\n        </el-form-item>"
+	} else if typeName == "time" {
+		return "\n        <el-form-item label=\"" + name + "\" prop=\"" + value + "\">" +
+			"      <el-date-picker v-model=\"dialogForm." + value + "\" type=\"datetime\" placeholder=\"请选择时间\" value-format=\"YYYY-MM-DD hh:mm:ss\"/>" +
+			"\n        </el-form-item>"
+	} else if typeName == "image" {
+		return "\n        <el-form-item label=\"" + name + "\" prop=\"" + value + "\">" +
+			"              <ImageUpload v-model:ImgUrl=\"dialogForm." + value + "\"/>" +
+			"\n        </el-form-item>"
+	} else if typeName == "file" {
+
+	} else if typeName == "editor" {
+
+		return "\n        <el-form-item label=\"" + name + "\" prop=\"" + value + "\">" +
+			"              <EditorComponent v-model:htmlString=\"dialogForm." + value + "\"/>" +
+			"\n        </el-form-item>"
+	} else if typeName == "text" {
+		return "\n        <el-form-item label=\"" + name + "\" prop=\"" + value + "\">" +
+			"                <el-text class=\"mx-1\">{{dialogForm." + value + "}}</el-text>" +
+			"\n        </el-form-item>"
+	}
+	//默认的就显示文本
+	return "\n        <el-form-item label=\"" + name + "\" prop=\"" + value + "\">" +
+		"                <el-text class=\"mx-1\">{{dialogForm." + value + "}}</el-text>" +
+		"\n        </el-form-item>"
+}

Некоторые файлы не были показаны из-за большого количества измененных файлов