Jelajahi Sumber

模板引擎

Administrator 1 tahun lalu
melakukan
ea60512419

+ 8 - 0
.idea/.gitignore

@@ -0,0 +1,8 @@
+# 默认忽略的文件
+/shelf/
+/workspace.xml
+# 基于编辑器的 HTTP 客户端请求
+/httpRequests/
+# Datasource local storage ignored files
+/dataSources/
+/dataSources.local.xml

+ 11 - 0
.idea/go-xorm-create-template.iml

@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<module type="WEB_MODULE" version="4">
+  <component name="Go" enabled="true" />
+  <component name="NewModuleRootManager">
+    <content url="file://$MODULE_DIR$">
+      <excludeFolder url="file://$MODULE_DIR$/output" />
+    </content>
+    <orderEntry type="inheritedJdk" />
+    <orderEntry type="sourceFolder" forTests="false" />
+  </component>
+</module>

+ 8 - 0
.idea/modules.xml

@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project version="4">
+  <component name="ProjectModuleManager">
+    <modules>
+      <module fileurl="file://$PROJECT_DIR$/.idea/go-xorm-create-template.iml" filepath="$PROJECT_DIR$/.idea/go-xorm-create-template.iml" />
+    </modules>
+  </component>
+</project>

+ 129 - 0
configs/config.go

@@ -0,0 +1,129 @@
+package configs
+
+import (
+	"crypto/rsa"
+	"fmt"
+	"github.com/go-redis/redis/v8"
+	_ "github.com/go-sql-driver/mysql"
+	"github.com/spf13/viper"
+	"os"
+	"xorm.io/xorm"
+)
+
+var (
+	Config  *viper.Viper
+	Engine  *xorm.Engine
+	RedisDb *redis.Client
+	WxPay   WxPayConfig
+)
+
+//type User struct {
+//	Id            int64  `xorm:"'id'" json:"id"`
+//	Username      string `xorm:"'username'" json:"username"`
+//	Password      string `xorm:"'password'" json:"password"`
+//	Creation_time int    `xorm:"'creation_time'" json:"creation_Time"`
+//	Login_time    int    `xorm:"'login_time'" json:"login_Time"`
+//	Status        int    `xorm:"'status'" json:"status"`
+//	Role_id       int    `xorm:"'role_id'" json:"role_id"`
+//	Phone         string `xorm:"'phone'" json:"phone"`
+//	Email         string `xorm:"'email'" json:"email"`
+//	Name          string `xorm:"'name'" json:"name"`
+//	Avatar        string `xorm:"'avatar'" json:"avatar"`
+//	RecommendCode string `xorm:"'recommend_code'" json:"recommend_code"`
+//}
+//
+//func (receiver User) String() string {
+//	return fmt.Sprintf("User{Id:%d, Username:%s, Password:%s, Creation_time:%d, Login_time:%d, Status:%d, Role_id:%d, Phone:%s, Email:%s, Name:%s, Avatar:%s, RecommendCode:%s}", receiver.Id, receiver.Username, receiver.Password, receiver.Creation_time, receiver.Login_time, receiver.Status, receiver.Role_id, receiver.Phone, receiver.Email, receiver.Name, receiver.Avatar, receiver.RecommendCode)
+//}
+//
+//type Role struct {
+//	Id        int    `xorm:"'id'" json:"id"`
+//	Role_name string `xorm:"'role_name'" json:"role_Name"`
+//}
+//type Role_authority struct {
+//	Authority_id int `xorm:"'authority_id'" json:"authority_id"`
+//	Role_id      int `xorm:"'role_id'" json:"role_id"`
+//}
+//type Authority struct {
+//	Id             int    `xorm:"'id'" json:"id"`
+//	Authority_name string `xorm:"'authority_name'" json:"authority_Name"`
+//	Authority_path string `xorm:"'authority_path'" json:"authority_Path"`
+//}
+//
+//type MysqlData struct {
+//	User           `xorm:"extends"`
+//	Role           `xorm:"extends"`
+//	Role_authority `xorm:"extends"`
+//	Authority      `xorm:"extends"`
+//}
+
+func ConfigInit() {
+	//获取项目的执行路径
+	path, err := os.Getwd()
+	if err != nil {
+		panic(err)
+	}
+	config := viper.New()
+
+	config.AddConfigPath(path + "/configs") //设置读取的文件路径
+	config.SetConfigName("config")          //设置读取的文件名
+	config.SetConfigType("yaml")            //设置文件的类型
+	//尝试进行配置读取
+	if err := config.ReadInConfig(); err != nil {
+		panic(err)
+	}
+	fmt.Println(fmt.Sprintf("%s:%s@(%s:%s)/%s?charset=utf8", config.Get("mysql.user"), config.Get("mysql.password"), config.Get("mysql.host"), config.Get("mysql.port"), config.Get("mysql.database")))
+	Engine, err = xorm.NewEngine("mysql", fmt.Sprintf("%s:%s@(%s:%s)/%s?charset=utf8", config.Get("mysql.user"), config.Get("mysql.password"), config.Get("mysql.host"), config.Get("mysql.port"), config.Get("mysql.database")))
+	Engine.Ping() //连接测试
+	//TODO  显示sql
+	Engine.ShowSQL(true)
+	Engine.Logger().ShowSQL(true)
+	RedisDb = redis.NewClient(&redis.Options{
+		Addr:     fmt.Sprintf("%s:%s", config.Get("redis.host"), config.Get("redis.port")), // Redis地址
+		Password: "",                                                                       // Redis密码,如果没有则为空字符串
+		DB:       0,                                                                        // 使用默认DB
+	})
+	//开启debug模式
+
+	Config = config
+	fmt.Println("xorm 数据库orm框架初始化成功")
+	//PayConfigInit()
+}
+func ConfigInitByUrl(configUrl string) {
+	//获取项目的执行路径
+	config := viper.New()
+
+	config.AddConfigPath(configUrl + "\\configs") //设置读取的文件路径
+	config.SetConfigName("config")                //设置读取的文件名
+	config.SetConfigType("yaml")                  //设置文件的类型
+	//尝试进行配置读取
+	if err := config.ReadInConfig(); err != nil {
+		panic(err)
+	}
+	fmt.Println(fmt.Sprintf("%s:%s@(%s:%s)/%s?charset=utf8", config.Get("mysql.user"), config.Get("mysql.password"), config.Get("mysql.host"), config.Get("mysql.port"), config.Get("mysql.database")))
+	Engine, _ := xorm.NewEngine("mysql", fmt.Sprintf("%s:%s@(%s:%s)/%s?charset=utf8", config.Get("mysql.user"), config.Get("mysql.password"), config.Get("mysql.host"), config.Get("mysql.port"), config.Get("mysql.database")))
+	Engine.Ping() //连接测试
+	//TODO  显示sql
+	Engine.ShowSQL(true)
+	Engine.Logger().ShowSQL(true)
+	RedisDb = redis.NewClient(&redis.Options{
+		Addr:     fmt.Sprintf("%s:%s", config.Get("redis.host"), config.Get("redis.port")), // Redis地址
+		Password: "",                                                                       // Redis密码,如果没有则为空字符串
+		DB:       0,                                                                        // 使用默认DB
+	})
+
+	Config = config
+	fmt.Println("xorm 数据库orm框架初始化成功")
+}
+
+type WxPayConfig struct {
+	MchID                      string
+	MchCertificateSerialNumber string
+	MchAPIv3Key                string
+	PrivateKey                 *rsa.PrivateKey
+}
+
+func (w WxPayConfig) String() string {
+	return fmt.Sprintf("MchID:%s, MchCertificateSerialNumber:%s, MchAPIv3Key:%s",
+		w.MchID, w.MchCertificateSerialNumber, w.MchAPIv3Key)
+}

+ 19 - 0
configs/config.yaml

@@ -0,0 +1,19 @@
+mysql:
+  host: localhost
+  port: "3306"
+  user: root
+  password: "root"
+  database: virtual_mall
+redis:
+  host: localhost
+  port: "6379"
+pay:
+  wx:
+    # 商户号
+    mchID: "1"
+    # 商户证书序列号
+    mchCertificateSerialNumber: "2"
+    # 商户APIv3密钥
+    mchAPIv3Key: "3"
+    # 密钥路径
+    mchPrivateKeyPath: "/path/to/merchant/apiclient_key.pem"

+ 51 - 0
create/CreateFile.go

@@ -0,0 +1,51 @@
+package create
+
+import (
+	"go-create-template/sqlload"
+	"go-create-template/util"
+	"os"
+	"text/template"
+)
+
+// 加载配置文件
+func loadTemplate(templateUrl string) *template.Template {
+	t := template.New(templateUrl)
+	for s := range util.FuncMap {
+		t.Funcs(template.FuncMap{s: util.FuncMap[s]})
+	}
+	file, err := os.ReadFile(templateUrl)
+	if err != nil {
+		panic(err)
+	}
+	return template.Must(t.Parse(string(file)))
+}
+func BaseCreate(outputPath, tmplUrl string) {
+	tmpl := loadTemplate(tmplUrl)
+	m := make(map[string]interface{})
+	m["gens"] = sqlload.CGans
+
+	m, err := util.StructToMap(m)
+	if err != nil {
+		panic(err)
+	}
+
+	file, err := os.OpenFile(outputPath, os.O_CREATE|os.O_WRONLY, 0666)
+	os.Truncate(outputPath, 0)
+	if err != nil {
+		panic(err)
+	}
+	defer file.Close()
+	err = tmpl.Execute(file, m)
+	if err != nil {
+		panic(err)
+	}
+}
+func DomainCreate(outputPath string) {
+	BaseCreate(outputPath, "./create/domain.go.tmpl")
+}
+func RouterCreate(outputPath string) {
+	BaseCreate(outputPath, "./create/router.go.tmpl")
+}
+func DaoCreate(outputPath string) {
+	BaseCreate(outputPath, "./create/dao.go.tmpl")
+}

+ 78 - 0
create/dao.go.tmpl

@@ -0,0 +1,78 @@
+package manage
+
+import (
+	"demo/configs"
+	"demo/data/domain"
+	"demo/data/domain/vo"
+)
+{{range .gens}}
+func Get{{.table.name}}ById(id int64) (domain.{{.table.name}}, error) {
+	var {{.table.routerName}} domain.{{.table.name}}
+	_, err := configs.Engine.Table("{{.table.routerName}}").Where("id = ?", id).Get(&{{.table.routerName}})
+	if err != nil {
+		return {{.table.routerName}}, err
+	}
+	return {{.table.routerName}}, nil
+}
+
+func Get{{.table.name}}ListInId(ids []int64) ([]domain.{{.table.name}}, error) {
+	rows, err := configs.Engine.Table("{{.table.routerName}}").In("id", ids).Rows(&domain.{{.table.name}}{})
+	if err != nil {
+		return make([]domain.{{.table.name}}, 0), err
+	}
+	defer rows.Close()
+	var list []domain.{{.table.name}}
+	for rows.Next() {
+		var u domain.{{.table.name}}
+		rows.Scan(&u)
+		list = append(list, u)
+	}
+	return list, nil
+}
+
+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
+}
+
+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 {
+		return *{{.table.routerName}}, err
+	}
+	return *{{.table.routerName}}, nil
+}
+
+func Set{{.table.name}}({{.table.routerName}}Map map[string]interface{}, id int64) (domain.{{.table.name}}, bool, error) {
+	var {{.table.routerName}} domain.{{.table.name}}
+	_, err := configs.Engine.Table("{{.table.routerName}}").Where("id = ?", id).Update({{.table.routerName}}Map)
+	if err != nil {
+		return {{.table.routerName}}, false, err
+	}
+	return {{.table.routerName}}, true, nil
+}
+
+func Delete{{.table.name}}(id int64) bool {
+	var {{.table.routerName}} domain.{{.table.name}}
+	i, err := configs.Engine.Table("{{.table.routerName}}").Where("id = ?", id).Delete(&{{.table.routerName}})
+	if err != nil {
+		return false
+	}
+	return i > 0
+}
+{{end}}

+ 16 - 0
create/domain.go.tmpl

@@ -0,0 +1,16 @@
+package domain
+
+import (
+	"fmt"
+	"time"
+)
+
+{{range $gen := .gens}}
+type {{$gen.table.name}} struct { {{range $column := $gen.tableColumns}}
+	{{$column.goField}} {{$column.goType}} `xorm:"{{$column.columnName}}" json:"{{formatJsonName $column.columnName}}"` //注释:{{$column.columnComment}}{{end}}
+}
+
+func (receiver {{$gen.table.name}}) String() string {
+	return fmt.Sprint("{{$gen.table.name}}{",{{range $column := $gen.tableColumns}}"{{$column.goField}}:",receiver.{{$column.goField}},{{end}}"}")
+}
+{{end}}

+ 134 - 0
create/router.go.tmpl

@@ -0,0 +1,134 @@
+package router
+
+import (
+	"demo/data/dao/manage"
+	"demo/data/domain"
+	"demo/share"
+	"fmt"
+	"github.com/gin-gonic/gin"
+	"github.com/mitchellh/mapstructure"
+	"github.com/spf13/cast"
+	"strings"
+	"time"
+	"unicode"
+)
+
+func UtilStructToMap(m map[string]interface{}) map[string]interface{} {
+	res := make(map[string]interface{})
+	for s := range m {
+		result := ""
+		for i, r := range s {
+			if unicode.IsUpper(r) && i > 0 {
+				result += "_"
+			}
+			result += strings.ToLower(string(r))
+		}
+		res[result] = m[s]
+	}
+	return res
+}
+
+func DateToString(date time.Time) string {
+	return date.Format("2006-01-02 15:04:05")
+}
+
+{{range .gens}}
+func Base{{.table.name}}Router(group *gin.RouterGroup) {
+	BaseArticleGroup := group.Group("/back/base")
+	PushRouter(BaseArticleGroup, "GET", "/{{.table.routerName}}", GetBase{{.table.name}}ById)
+	PushRouter(BaseArticleGroup, "POST", "/{{.table.routerName}}/list", GetBase{{.table.name}}List)
+	PushRouter(BaseArticleGroup, "POST", "/{{.table.routerName}}/in", GetBase{{.table.name}}ListInId)
+	PushRouter(BaseArticleGroup, "POST", "/{{.table.routerName}}", SaveBase{{.table.name}})
+	PushRouter(BaseArticleGroup, "PUT", "/{{.table.routerName}}", UpdateBase{{.table.name}})
+	PushRouter(BaseArticleGroup, "DELETE", "/{{.table.routerName}}", DeleteBase{{.table.name}})
+}
+{{end}}
+
+
+{{range .gens}} {{$createBy := false}}{{$createTime := false}}{{$updateBy := false}}{{$updateTime := false}}{{range .tableColumns}}{{if and (eq $createBy false) (eq .columnName "create_by")}}{{$createBy = true}}{{end}}{{if and (eq $createTime false) (eq .columnName "create_time")}}{{$createTime = true}}{{end}}{{if and (eq $updateBy false) (eq .columnName "update_by")}}{{$updateBy = true}}{{end}}{{if and (eq $updateTime false) (eq .columnName "update_time")}}{{$updateTime = true}}{{end}}{{end}}
+//================{{.table.name}} {{.table.tableComment}}==============================
+func GetBase{{.table.name}}ById(c *gin.Context) {
+	id := c.Query("id")
+	{{.table.routerName}}, err := manage.Get{{.table.name}}ById(cast.ToInt64(id))
+	if err != nil {
+		c.JSON(200, CreateResultError(500, "用户查询不存在"))
+		return
+	}
+	c.JSON(200, CreateResultData({{.table.routerName}}))
+	return
+}
+
+func GetBase{{.table.name}}List(c *gin.Context) {
+	data := share.GetJsonAnyParam(c)
+	param, _ := data("param")
+	pageNum, _ := data("pageNum")
+	pageSize, _ := data("pageSize")
+	{{.table.routerName}} := domain.{{.table.name}}{}
+	err := mapstructure.Decode(param, &{{.table.routerName}})
+	if err != nil {
+		c.JSON(200, CreateResultError(500, "json转换错误"))
+		return
+	}
+	list, err := manage.Get{{.table.name}}List({{.table.routerName}}, cast.ToInt(pageNum), cast.ToInt(pageSize))
+	if err != nil {
+		c.JSON(200, CreateResultError(500, "查询错误"))
+		return
+	}
+	c.JSON(200, CreateResultData(list))
+}
+
+func GetBase{{.table.name}}ListInId(c *gin.Context) {
+	data := share.GetJsonAnyParam(c)
+	idsString, _ := data("ids")
+	var ids []int64
+	err := mapstructure.Decode([]byte(cast.ToString(idsString)), &ids)
+	list, err := manage.Get{{.table.name}}ListInId(ids)
+	if err != nil {
+		c.JSON(200, CreateResultError(500, "查询错误"))
+		return
+	}
+	c.JSON(200, CreateResultData(list))
+}
+
+func SaveBase{{.table.name}}(c *gin.Context) {
+	data := share.GetJsonAnyParam(c)
+	{{.table.routerName}}Param, _ := data("{{.table.routerName}}")
+	{{.table.routerName}} := domain.{{.table.name}}{}
+	err := mapstructure.Decode({{.table.routerName}}Param, &{{.table.routerName}})
+	{{if $createBy}}goods{{.table.routerName}}.CreateBy = fmt.Sprint(GetUserIdByToken(c)){{end}}
+	{{if $createTime}}goods{{.table.routerName}}.CreateTime = time.Now(){{end}}
+	save{{.table.name}}, err := manage.Save{{.table.name}}(&{{.table.routerName}})
+	if err != nil {
+		c.JSON(200, CreateResultError(500, "保存错误"))
+		return
+	}
+	c.JSON(200, CreateResultData(save{{.table.name}}))
+}
+
+func UpdateBase{{.table.name}}(c *gin.Context) {
+	data := share.GetJsonAnyParam(c)
+	{{.table.routerName}}, _ := data("{{.table.routerName}}")
+	id, _ := data("id")
+	toMap := UtilStructToMap(cast.ToStringMap({{.table.routerName}}))
+	{{if $createBy}}toMap["create_by"] = nil{{end}}
+    {{if $createTime}}toMap["create_time"] = nil{{end}}
+    {{if $updateBy}}toMap["update_by"] = fmt.Sprint(GetUserIdByToken(c)){{end}}
+    {{if $updateTime}}toMap["update_time"] = DateToString(time.Now()){{end}}
+	set{{.table.name}}, b, err := manage.Set{{.table.name}}(toMap, cast.ToInt64(id))
+	if err != nil || !b {
+		c.JSON(200, CreateResultError(500, "修改错误"))
+		return
+	}
+	c.JSON(200, CreateResultData(set{{.table.name}}))
+}
+
+func DeleteBase{{.table.name}}(c *gin.Context) {
+	id := c.Query("id")
+	res := manage.Delete{{.table.name}}(cast.ToInt64(id))
+	if !res {
+		c.JSON(200, CreateResultError(500, "删除错误"))
+		return
+	}
+	c.JSON(200, CreateResult())
+}
+{{end}}

+ 43 - 0
go.mod

@@ -0,0 +1,43 @@
+module go-create-template
+
+go 1.19
+
+
+require (
+	github.com/go-redis/redis/v8 v8.11.5
+	github.com/go-sql-driver/mysql v1.8.1
+	github.com/spf13/viper v1.18.2
+	xorm.io/xorm v1.3.9
+)
+
+require (
+	filippo.io/edwards25519 v1.1.0 // indirect
+	github.com/cespare/xxhash/v2 v2.1.2 // indirect
+	github.com/dgryski/go-rendezvous v0.0.0-20200823014737-9f7001d12a5f // indirect
+	github.com/fsnotify/fsnotify v1.7.0 // indirect
+	github.com/goccy/go-json v0.8.1 // indirect
+	github.com/golang/snappy v0.0.4 // indirect
+	github.com/hashicorp/hcl v1.0.0 // indirect
+	github.com/json-iterator/go v1.1.12 // indirect
+	github.com/magiconair/properties v1.8.7 // indirect
+	github.com/mitchellh/mapstructure v1.5.0 // indirect
+	github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect
+	github.com/modern-go/reflect2 v1.0.2 // indirect
+	github.com/pelletier/go-toml/v2 v2.1.0 // indirect
+	github.com/sagikazarmark/locafero v0.4.0 // indirect
+	github.com/sagikazarmark/slog-shim v0.1.0 // indirect
+	github.com/sourcegraph/conc v0.3.0 // indirect
+	github.com/spf13/afero v1.11.0 // indirect
+	github.com/spf13/cast v1.6.0 // indirect
+	github.com/spf13/pflag v1.0.5 // indirect
+	github.com/subosito/gotenv v1.6.0 // indirect
+	github.com/syndtr/goleveldb v1.0.0 // indirect
+	go.uber.org/atomic v1.9.0 // indirect
+	go.uber.org/multierr v1.9.0 // indirect
+	golang.org/x/exp v0.0.0-20230905200255-921286631fa9 // indirect
+	golang.org/x/sys v0.15.0 // indirect
+	golang.org/x/text v0.14.0 // indirect
+	gopkg.in/ini.v1 v1.67.0 // indirect
+	gopkg.in/yaml.v3 v3.0.1 // indirect
+	xorm.io/builder v0.3.11-0.20220531020008-1bd24a7dc978 // indirect
+)

+ 129 - 0
go.sum

@@ -0,0 +1,129 @@
+filippo.io/edwards25519 v1.1.0 h1:FNf4tywRC1HmFuKW5xopWpigGjJKiJSV0Cqo0cJWDaA=
+filippo.io/edwards25519 v1.1.0/go.mod h1:BxyFTGdWcka3PhytdK4V28tE5sGfRvvvRV7EaN4VDT4=
+gitea.com/xorm/sqlfiddle v0.0.0-20180821085327-62ce714f951a h1:lSA0F4e9A2NcQSqGqTOXqu2aRi/XEQxDCBwM8yJtE6s=
+gitea.com/xorm/sqlfiddle v0.0.0-20180821085327-62ce714f951a/go.mod h1:EXuID2Zs0pAQhH8yz+DNjUbjppKQzKFAn28TMYPB6IU=
+github.com/cespare/xxhash/v2 v2.1.2 h1:YRXhKfTDauu4ajMg1TPgFO5jnlC2HCbmLXMcTG5cbYE=
+github.com/cespare/xxhash/v2 v2.1.2/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs=
+github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
+github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
+github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc h1:U9qPSI2PIWSS1VwoXQT9A3Wy9MM3WgvqSxFWenqJduM=
+github.com/dgryski/go-rendezvous v0.0.0-20200823014737-9f7001d12a5f h1:lO4WD4F/rVNCu3HqELle0jiPLLBs70cWOduZpkS1E78=
+github.com/dgryski/go-rendezvous v0.0.0-20200823014737-9f7001d12a5f/go.mod h1:cuUVRXasLTGF7a8hSLbxyZXjz+1KgoB3wDUb6vlszIc=
+github.com/dustin/go-humanize v1.0.0 h1:VSnTsYCnlFHaM2/igO1h6X3HA71jcobQuxemgkq4zYo=
+github.com/frankban/quicktest v1.14.6 h1:7Xjx+VpznH+oBnejlPUj8oUpdxnVs4f8XU8WnHkI4W8=
+github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo=
+github.com/fsnotify/fsnotify v1.7.0 h1:8JEhPFa5W2WU7YfeZzPNqzMP6Lwt7L2715Ggo0nosvA=
+github.com/fsnotify/fsnotify v1.7.0/go.mod h1:40Bi/Hjc2AVfZrqy+aj+yEI+/bRxZnMJyTJwOpGvigM=
+github.com/go-redis/redis/v8 v8.11.5 h1:AcZZR7igkdvfVmQTPnu9WE37LRrO/YrBH5zWyjDC0oI=
+github.com/go-redis/redis/v8 v8.11.5/go.mod h1:gREzHqY1hg6oD9ngVRbLStwAWKhA0FEgq8Jd4h5lpwo=
+github.com/go-sql-driver/mysql v1.8.1 h1:LedoTUt/eveggdHS9qUFC1EFSa8bU2+1pZjSRpvNJ1Y=
+github.com/go-sql-driver/mysql v1.8.1/go.mod h1:wEBSXgmK//2ZFJyE+qWnIsVGmvmEKlqwuVSjsCm7DZg=
+github.com/goccy/go-json v0.8.1 h1:4/Wjm0JIJaTDm8K1KcGrLHJoa8EsJ13YWeX+6Kfq6uI=
+github.com/goccy/go-json v0.8.1/go.mod h1:6MelG93GURQebXPDq3khkgXZkazVtN9CRI+MGFi0w8I=
+github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U=
+github.com/golang/snappy v0.0.0-20180518054509-2e65f85255db/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q=
+github.com/golang/snappy v0.0.4 h1:yAGX7huGHXlcLOEtBnF4w7FQwA26wojNCwOYAEhLjQM=
+github.com/golang/snappy v0.0.4/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q=
+github.com/google/go-cmp v0.5.9 h1:O2Tfq5qg4qc4AmwVlvv0oLiVAGB7enBSJ2x2DqQFi38=
+github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg=
+github.com/google/uuid v1.4.0 h1:MtMxsa51/r9yyhkyLsVeVt0B+BGQZzpQiTQ4eHZ8bc4=
+github.com/hashicorp/hcl v1.0.0 h1:0Anlzjpi4vEasTeNFn2mLJgTSwt0+6sfsiTG8qcWGx4=
+github.com/hashicorp/hcl v1.0.0/go.mod h1:E5yfLk+7swimpb2L/Alb/PJmXilQ/rhwaUYs4T20WEQ=
+github.com/hpcloud/tail v1.0.0/go.mod h1:ab1qPbhIpdTxEkNHXyeSf5vhxWSCs/tWer42PpOxQnU=
+github.com/json-iterator/go v1.1.12 h1:PV8peI4a0ysnczrg+LtxykD8LfKY9ML6u2jnxaEnrnM=
+github.com/json-iterator/go v1.1.12/go.mod h1:e30LSqwooZae/UwlEbR2852Gd8hjQvJoHmT4TnhNGBo=
+github.com/kballard/go-shellquote v0.0.0-20180428030007-95032a82bc51 h1:Z9n2FFNUXsshfwJMBgNA0RU6/i7WVaAegv3PtuIHPMs=
+github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE=
+github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY=
+github.com/magiconair/properties v1.8.7 h1:IeQXZAiQcpL9mgcAe1Nu6cX9LLw6ExEHKjN0VQdvPDY=
+github.com/magiconair/properties v1.8.7/go.mod h1:Dhd985XPs7jluiymwWYZ0G4Z61jb3vdS329zhj2hYo0=
+github.com/mattn/go-isatty v0.0.17 h1:BTarxUcIeDqL27Mc+vyvdWYSL28zpIhv3RoTdsLMPng=
+github.com/mattn/go-sqlite3 v1.14.16 h1:yOQRA0RpS5PFz/oikGwBEqvAWhWg5ufRz4ETLjwpU1Y=
+github.com/mitchellh/mapstructure v1.5.0 h1:jeMsZIYE/09sWLaz43PL7Gy6RuMjD2eJVyuac5Z2hdY=
+github.com/mitchellh/mapstructure v1.5.0/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo=
+github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q=
+github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd h1:TRLaZ9cD/w8PVh93nsPXa1VrQ6jlwL5oN8l14QlcNfg=
+github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q=
+github.com/modern-go/reflect2 v1.0.2 h1:xBagoLtFs94CBntxluKeaWgTMpvLxC4ur3nMaC9Gz0M=
+github.com/modern-go/reflect2 v1.0.2/go.mod h1:yWuevngMOJpCy52FWWMvUC8ws7m/LJsjYzDa0/r8luk=
+github.com/nxadm/tail v1.4.8 h1:nPr65rt6Y5JFSKQO7qToXr7pePgD6Gwiw05lkbyAQTE=
+github.com/onsi/ginkgo v1.6.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE=
+github.com/onsi/ginkgo v1.7.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE=
+github.com/onsi/ginkgo v1.16.5 h1:8xi0RTUf59SOSfEtZMvwTvXYMzG4gV23XVHOZiXNtnE=
+github.com/onsi/gomega v1.4.3/go.mod h1:ex+gbHU/CVuBBDIJjb2X0qEXbFg53c61hWP/1CpauHY=
+github.com/onsi/gomega v1.18.1 h1:M1GfJqGRrBrrGGsbxzV5dqM2U2ApXefZCQpkukxYRLE=
+github.com/pelletier/go-toml/v2 v2.1.0 h1:FnwAJ4oYMvbT/34k9zzHuZNrhlz48GB3/s6at6/MHO4=
+github.com/pelletier/go-toml/v2 v2.1.0/go.mod h1:tJU2Z3ZkXwnxa4DPO899bsyIoywizdUvyaeZurnPPDc=
+github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
+github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 h1:Jamvg5psRIccs7FGNTlIRMkT8wgtp5eCXdBlqhYGL6U=
+github.com/remyoudompheng/bigfft v0.0.0-20200410134404-eec4a21b6bb0 h1:OdAsTTz6OkFY5QxjkYwrChwuRruF69c169dPK26NUlk=
+github.com/rogpeppe/go-internal v1.9.0 h1:73kH8U+JUqXU8lRuOHeVHaa/SZPifC7BkcraZVejAe8=
+github.com/sagikazarmark/locafero v0.4.0 h1:HApY1R9zGo4DBgr7dqsTH/JJxLTTsOt7u6keLGt6kNQ=
+github.com/sagikazarmark/locafero v0.4.0/go.mod h1:Pe1W6UlPYUk/+wc/6KFhbORCfqzgYEpgQ3O5fPuL3H4=
+github.com/sagikazarmark/slog-shim v0.1.0 h1:diDBnUNK9N/354PgrxMywXnAwEr1QZcOr6gto+ugjYE=
+github.com/sagikazarmark/slog-shim v0.1.0/go.mod h1:SrcSrq8aKtyuqEI1uvTDTK1arOWRIczQRv+GVI1AkeQ=
+github.com/sourcegraph/conc v0.3.0 h1:OQTbbt6P72L20UqAkXXuLOj79LfEanQ+YQFNpLA9ySo=
+github.com/sourcegraph/conc v0.3.0/go.mod h1:Sdozi7LEKbFPqYX2/J+iBAM6HpqSLTASQIKqDmF7Mt0=
+github.com/spf13/afero v1.11.0 h1:WJQKhtpdm3v2IzqG8VMqrr6Rf3UYpEF239Jy9wNepM8=
+github.com/spf13/afero v1.11.0/go.mod h1:GH9Y3pIexgf1MTIWtNGyogA5MwRIDXGUr+hbWNoBjkY=
+github.com/spf13/cast v1.6.0 h1:GEiTHELF+vaR5dhz3VqZfFSzZjYbgeKDpBxQVS4GYJ0=
+github.com/spf13/cast v1.6.0/go.mod h1:ancEpBxwJDODSW/UG4rDrAqiKolqNNh2DX3mk86cAdo=
+github.com/spf13/pflag v1.0.5 h1:iy+VFUOCP1a+8yFto/drg2CJ5u0yRoB7fZw3DKv/JXA=
+github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg=
+github.com/spf13/viper v1.18.2 h1:LUXCnvUvSM6FXAsj6nnfc8Q2tp1dIgUfY9Kc8GsSOiQ=
+github.com/spf13/viper v1.18.2/go.mod h1:EKmWIqdnk5lOcmR72yw6hS+8OPYcwD0jteitLMVB+yk=
+github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
+github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw=
+github.com/stretchr/objx v0.5.0/go.mod h1:Yh+to48EsGEfYuaHDzXPcE3xhTkx73EhmCGUpEOglKo=
+github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI=
+github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
+github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU=
+github.com/stretchr/testify v1.8.4 h1:CcVxjf3Q8PM0mHUKJCdn+eZZtm5yQwehR5yeSVQQcUk=
+github.com/stretchr/testify v1.8.4/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo=
+github.com/subosito/gotenv v1.6.0 h1:9NlTDc1FTs4qu0DDq7AEtTPNw6SVm7uBMsUCUjABIf8=
+github.com/subosito/gotenv v1.6.0/go.mod h1:Dk4QP5c2W3ibzajGcXpNraDfq2IrhjMIvMSWPKKo0FU=
+github.com/syndtr/goleveldb v1.0.0 h1:fBdIW9lB4Iz0n9khmH8w27SJ3QEJ7+IgjPEwGSZiFdE=
+github.com/syndtr/goleveldb v1.0.0/go.mod h1:ZVVdQEZoIme9iO1Ch2Jdy24qqXrMMOU6lpPAyBWyWuQ=
+go.uber.org/atomic v1.9.0 h1:ECmE8Bn/WFTYwEW/bpKD3M8VtR/zQVbavAoalC1PYyE=
+go.uber.org/atomic v1.9.0/go.mod h1:fEN4uk6kAWBTFdckzkM89CLk9XfWZrxpCo0nPH17wJc=
+go.uber.org/multierr v1.9.0 h1:7fIwc/ZtS0q++VgcfqFDxSBZVv/Xo49/SYnDFupUwlI=
+go.uber.org/multierr v1.9.0/go.mod h1:X2jQV1h+kxSjClGpnseKVIxpmcjrj7MNnI0bnlfKTVQ=
+golang.org/x/exp v0.0.0-20230905200255-921286631fa9 h1:GoHiUyI/Tp2nVkLI2mCxVkOjsbSXD66ic0XW0js0R9g=
+golang.org/x/exp v0.0.0-20230905200255-921286631fa9/go.mod h1:S2oDrQGGwySpoQPVqRShND87VCbxmc6bL1Yd2oYrm6k=
+golang.org/x/mod v0.12.0 h1:rmsUpXtvNzj340zd98LZ4KntptpfRHwpFOHG188oHXc=
+golang.org/x/net v0.0.0-20180906233101-161cd47e91fd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
+golang.org/x/net v0.19.0 h1:zTwKpTd2XuCqf8huc7Fo2iSy+4RHPd10s4KzeTnVr1c=
+golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
+golang.org/x/sys v0.0.0-20180909124046-d0be0721c37e/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
+golang.org/x/sys v0.15.0 h1:h48lPFYpsTvQJZF4EKyI4aLHaev3CxivZmv7yZig9pc=
+golang.org/x/sys v0.15.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
+golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
+golang.org/x/text v0.14.0 h1:ScX5w1eTa3QqT8oi6+ziP7dTV1S2+ALU0bI+0zXKWiQ=
+golang.org/x/text v0.14.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU=
+golang.org/x/tools v0.13.0 h1:Iey4qkscZuv0VvIt8E0neZjtPVQFSc870HQ448QgEmQ=
+gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
+gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15 h1:YR8cESwS4TdDjEe65xsg0ogRM/Nc3DYOhEAlW+xobZo=
+gopkg.in/fsnotify.v1 v1.4.7/go.mod h1:Tz8NjZHkW78fSQdbUxIjBTcgA1z1m8ZHf0WmKUhAMys=
+gopkg.in/ini.v1 v1.67.0 h1:Dgnx+6+nfE+IfzjUEISNeydPJh9AXNNsWbGP9KzCsOA=
+gopkg.in/ini.v1 v1.67.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k=
+gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7 h1:uRGJdciOHaEIrze2W8Q3AKkepLTh2hOroT7a+7czfdQ=
+gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7/go.mod h1:dt/ZhP58zS4L8KSrWDmTeBkI65Dw0HsyUHuEVlX15mw=
+gopkg.in/yaml.v2 v2.2.1/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
+gopkg.in/yaml.v2 v2.4.0 h1:D8xgwECY7CYvx+Y2n4sBz93Jn9JRvxdiyyo8CTfuKaY=
+gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
+gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA=
+gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
+lukechampine.com/uint128 v1.2.0 h1:mBi/5l91vocEN8otkC5bDLhi2KdCticRiwbdB0O+rjI=
+modernc.org/cc/v3 v3.40.0 h1:P3g79IUS/93SYhtoeaHW+kRCIrYaxJ27MFPv+7kaTOw=
+modernc.org/ccgo/v3 v3.16.13 h1:Mkgdzl46i5F/CNR/Kj80Ri59hC8TKAhZrYSaqvkwzUw=
+modernc.org/libc v1.22.2 h1:4U7v51GyhlWqQmwCHj28Rdq2Yzwk55ovjFrdPjs8Hb0=
+modernc.org/mathutil v1.5.0 h1:rV0Ko/6SfM+8G+yKiyI830l3Wuz1zRutdslNoQ0kfiQ=
+modernc.org/memory v1.4.0 h1:crykUfNSnMAXaOJnnxcSzbUGMqkLWjklJKkBK2nwZwk=
+modernc.org/opt v0.1.3 h1:3XOZf2yznlhC+ibLltsDGzABUGVx8J6pnFMS3E4dcq4=
+modernc.org/sqlite v1.20.4 h1:J8+m2trkN+KKoE7jglyHYYYiaq5xmz2HoHJIiBlRzbE=
+modernc.org/strutil v1.1.3 h1:fNMm+oJklMGYfU9Ylcywl0CO5O6nTfaowNsh2wpPjzY=
+modernc.org/token v1.0.1 h1:A3qvTqOwexpfZZeyI0FeGPDlSWX5pjZu9hF4lU+EKWg=
+xorm.io/builder v0.3.11-0.20220531020008-1bd24a7dc978 h1:bvLlAPW1ZMTWA32LuZMBEGHAUOcATZjzHcotf3SWweM=
+xorm.io/builder v0.3.11-0.20220531020008-1bd24a7dc978/go.mod h1:aUW0S9eb9VCaPohFCH3j7czOx1PMW3i1HrSzbLYGBSE=
+xorm.io/xorm v1.3.9 h1:TUovzS0ko+IQ1XnNLfs5dqK1cJl1H5uHpWbWqAQ04nU=
+xorm.io/xorm v1.3.9/go.mod h1:LsCCffeeYp63ssk0pKumP6l96WZcHix7ChpurcLNuMw=

+ 17 - 0
main.go

@@ -0,0 +1,17 @@
+package main
+
+import (
+	"go-create-template/configs"
+	"go-create-template/create"
+	"go-create-template/sqlload"
+)
+
+func init() {
+	configs.ConfigInit()
+}
+func main() {
+	sqlload.Load()
+	create.DomainCreate("./output/domain/Domain.go")
+	create.RouterCreate("./output/router/Router.go")
+	create.DaoCreate("./output/dao/Dao.go")
+}

+ 2037 - 0
output/dao/Dao.go

@@ -0,0 +1,2037 @@
+package manage
+
+import (
+	"demo/configs"
+	"demo/data/domain"
+	"demo/data/domain/vo"
+)
+
+func GetArticleById(id int64) (domain.Article, error) {
+	var article domain.Article
+	_, err := configs.Engine.Table("article").Where("id = ?", id).Get(&article)
+	if err != nil {
+		return article, err
+	}
+	return article, nil
+}
+
+func GetArticleListInId(ids []int64) ([]domain.Article, error) {
+	rows, err := configs.Engine.Table("article").In("id", ids).Rows(&domain.Article{})
+	if err != nil {
+		return make([]domain.Article, 0), err
+	}
+	defer rows.Close()
+	var list []domain.Article
+	for rows.Next() {
+		var u domain.Article
+		rows.Scan(&u)
+		list = append(list, u)
+	}
+	return list, nil
+}
+
+func GetArticleList(article domain.Article, pageNum, pageSize int) (vo.BaseListVo, error) {
+	var arr []domain.Article
+	Count, err := configs.Engine.Table("article").Limit(pageSize, (pageNum-1)*pageSize).FindAndCount(&arr, &article)
+	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 SaveArticle(article *domain.Article) (domain.Article, error) {
+	_, err := configs.Engine.Table("article").Insert(&article)
+	if err != nil {
+		return *article, err
+	}
+	return *article, nil
+}
+
+func SetArticle(articleMap map[string]interface{}, id int64) (domain.Article, bool, error) {
+	var article domain.Article
+	_, err := configs.Engine.Table("article").Where("id = ?", id).Update(articleMap)
+	if err != nil {
+		return article, false, err
+	}
+	return article, true, nil
+}
+
+func DeleteArticle(id int64) bool {
+	var article domain.Article
+	i, err := configs.Engine.Table("article").Where("id = ?", id).Delete(&article)
+	if err != nil {
+		return false
+	}
+	return i > 0
+}
+
+func GetArticleTagById(id int64) (domain.ArticleTag, error) {
+	var articleTag domain.ArticleTag
+	_, err := configs.Engine.Table("articleTag").Where("id = ?", id).Get(&articleTag)
+	if err != nil {
+		return articleTag, err
+	}
+	return articleTag, nil
+}
+
+func GetArticleTagListInId(ids []int64) ([]domain.ArticleTag, error) {
+	rows, err := configs.Engine.Table("articleTag").In("id", ids).Rows(&domain.ArticleTag{})
+	if err != nil {
+		return make([]domain.ArticleTag, 0), err
+	}
+	defer rows.Close()
+	var list []domain.ArticleTag
+	for rows.Next() {
+		var u domain.ArticleTag
+		rows.Scan(&u)
+		list = append(list, u)
+	}
+	return list, nil
+}
+
+func GetArticleTagList(articleTag domain.ArticleTag, pageNum, pageSize int) (vo.BaseListVo, error) {
+	var arr []domain.ArticleTag
+	Count, err := configs.Engine.Table("articleTag").Limit(pageSize, (pageNum-1)*pageSize).FindAndCount(&arr, &articleTag)
+	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 SaveArticleTag(articleTag *domain.ArticleTag) (domain.ArticleTag, error) {
+	_, err := configs.Engine.Table("articleTag").Insert(&articleTag)
+	if err != nil {
+		return *articleTag, err
+	}
+	return *articleTag, nil
+}
+
+func SetArticleTag(articleTagMap map[string]interface{}, id int64) (domain.ArticleTag, bool, error) {
+	var articleTag domain.ArticleTag
+	_, err := configs.Engine.Table("articleTag").Where("id = ?", id).Update(articleTagMap)
+	if err != nil {
+		return articleTag, false, err
+	}
+	return articleTag, true, nil
+}
+
+func DeleteArticleTag(id int64) bool {
+	var articleTag domain.ArticleTag
+	i, err := configs.Engine.Table("articleTag").Where("id = ?", id).Delete(&articleTag)
+	if err != nil {
+		return false
+	}
+	return i > 0
+}
+
+func GetArticleTopicById(id int64) (domain.ArticleTopic, error) {
+	var articleTopic domain.ArticleTopic
+	_, err := configs.Engine.Table("articleTopic").Where("id = ?", id).Get(&articleTopic)
+	if err != nil {
+		return articleTopic, err
+	}
+	return articleTopic, nil
+}
+
+func GetArticleTopicListInId(ids []int64) ([]domain.ArticleTopic, error) {
+	rows, err := configs.Engine.Table("articleTopic").In("id", ids).Rows(&domain.ArticleTopic{})
+	if err != nil {
+		return make([]domain.ArticleTopic, 0), err
+	}
+	defer rows.Close()
+	var list []domain.ArticleTopic
+	for rows.Next() {
+		var u domain.ArticleTopic
+		rows.Scan(&u)
+		list = append(list, u)
+	}
+	return list, nil
+}
+
+func GetArticleTopicList(articleTopic domain.ArticleTopic, pageNum, pageSize int) (vo.BaseListVo, error) {
+	var arr []domain.ArticleTopic
+	Count, err := configs.Engine.Table("articleTopic").Limit(pageSize, (pageNum-1)*pageSize).FindAndCount(&arr, &articleTopic)
+	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 SaveArticleTopic(articleTopic *domain.ArticleTopic) (domain.ArticleTopic, error) {
+	_, err := configs.Engine.Table("articleTopic").Insert(&articleTopic)
+	if err != nil {
+		return *articleTopic, err
+	}
+	return *articleTopic, nil
+}
+
+func SetArticleTopic(articleTopicMap map[string]interface{}, id int64) (domain.ArticleTopic, bool, error) {
+	var articleTopic domain.ArticleTopic
+	_, err := configs.Engine.Table("articleTopic").Where("id = ?", id).Update(articleTopicMap)
+	if err != nil {
+		return articleTopic, false, err
+	}
+	return articleTopic, true, nil
+}
+
+func DeleteArticleTopic(id int64) bool {
+	var articleTopic domain.ArticleTopic
+	i, err := configs.Engine.Table("articleTopic").Where("id = ?", id).Delete(&articleTopic)
+	if err != nil {
+		return false
+	}
+	return i > 0
+}
+
+func GetBackAuthorityById(id int64) (domain.BackAuthority, error) {
+	var backAuthority domain.BackAuthority
+	_, err := configs.Engine.Table("backAuthority").Where("id = ?", id).Get(&backAuthority)
+	if err != nil {
+		return backAuthority, err
+	}
+	return backAuthority, nil
+}
+
+func GetBackAuthorityListInId(ids []int64) ([]domain.BackAuthority, error) {
+	rows, err := configs.Engine.Table("backAuthority").In("id", ids).Rows(&domain.BackAuthority{})
+	if err != nil {
+		return make([]domain.BackAuthority, 0), err
+	}
+	defer rows.Close()
+	var list []domain.BackAuthority
+	for rows.Next() {
+		var u domain.BackAuthority
+		rows.Scan(&u)
+		list = append(list, u)
+	}
+	return list, nil
+}
+
+func GetBackAuthorityList(backAuthority domain.BackAuthority, pageNum, pageSize int) (vo.BaseListVo, error) {
+	var arr []domain.BackAuthority
+	Count, err := configs.Engine.Table("backAuthority").Limit(pageSize, (pageNum-1)*pageSize).FindAndCount(&arr, &backAuthority)
+	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 SaveBackAuthority(backAuthority *domain.BackAuthority) (domain.BackAuthority, error) {
+	_, err := configs.Engine.Table("backAuthority").Insert(&backAuthority)
+	if err != nil {
+		return *backAuthority, err
+	}
+	return *backAuthority, nil
+}
+
+func SetBackAuthority(backAuthorityMap map[string]interface{}, id int64) (domain.BackAuthority, bool, error) {
+	var backAuthority domain.BackAuthority
+	_, err := configs.Engine.Table("backAuthority").Where("id = ?", id).Update(backAuthorityMap)
+	if err != nil {
+		return backAuthority, false, err
+	}
+	return backAuthority, true, nil
+}
+
+func DeleteBackAuthority(id int64) bool {
+	var backAuthority domain.BackAuthority
+	i, err := configs.Engine.Table("backAuthority").Where("id = ?", id).Delete(&backAuthority)
+	if err != nil {
+		return false
+	}
+	return i > 0
+}
+
+func GetBackMenuById(id int64) (domain.BackMenu, error) {
+	var backMenu domain.BackMenu
+	_, err := configs.Engine.Table("backMenu").Where("id = ?", id).Get(&backMenu)
+	if err != nil {
+		return backMenu, err
+	}
+	return backMenu, nil
+}
+
+func GetBackMenuListInId(ids []int64) ([]domain.BackMenu, error) {
+	rows, err := configs.Engine.Table("backMenu").In("id", ids).Rows(&domain.BackMenu{})
+	if err != nil {
+		return make([]domain.BackMenu, 0), err
+	}
+	defer rows.Close()
+	var list []domain.BackMenu
+	for rows.Next() {
+		var u domain.BackMenu
+		rows.Scan(&u)
+		list = append(list, u)
+	}
+	return list, nil
+}
+
+func GetBackMenuList(backMenu domain.BackMenu, pageNum, pageSize int) (vo.BaseListVo, error) {
+	var arr []domain.BackMenu
+	Count, err := configs.Engine.Table("backMenu").Limit(pageSize, (pageNum-1)*pageSize).FindAndCount(&arr, &backMenu)
+	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 SaveBackMenu(backMenu *domain.BackMenu) (domain.BackMenu, error) {
+	_, err := configs.Engine.Table("backMenu").Insert(&backMenu)
+	if err != nil {
+		return *backMenu, err
+	}
+	return *backMenu, nil
+}
+
+func SetBackMenu(backMenuMap map[string]interface{}, id int64) (domain.BackMenu, bool, error) {
+	var backMenu domain.BackMenu
+	_, err := configs.Engine.Table("backMenu").Where("id = ?", id).Update(backMenuMap)
+	if err != nil {
+		return backMenu, false, err
+	}
+	return backMenu, true, nil
+}
+
+func DeleteBackMenu(id int64) bool {
+	var backMenu domain.BackMenu
+	i, err := configs.Engine.Table("backMenu").Where("id = ?", id).Delete(&backMenu)
+	if err != nil {
+		return false
+	}
+	return i > 0
+}
+
+func GetBackRoleById(id int64) (domain.BackRole, error) {
+	var backRole domain.BackRole
+	_, err := configs.Engine.Table("backRole").Where("id = ?", id).Get(&backRole)
+	if err != nil {
+		return backRole, err
+	}
+	return backRole, nil
+}
+
+func GetBackRoleListInId(ids []int64) ([]domain.BackRole, error) {
+	rows, err := configs.Engine.Table("backRole").In("id", ids).Rows(&domain.BackRole{})
+	if err != nil {
+		return make([]domain.BackRole, 0), err
+	}
+	defer rows.Close()
+	var list []domain.BackRole
+	for rows.Next() {
+		var u domain.BackRole
+		rows.Scan(&u)
+		list = append(list, u)
+	}
+	return list, nil
+}
+
+func GetBackRoleList(backRole domain.BackRole, pageNum, pageSize int) (vo.BaseListVo, error) {
+	var arr []domain.BackRole
+	Count, err := configs.Engine.Table("backRole").Limit(pageSize, (pageNum-1)*pageSize).FindAndCount(&arr, &backRole)
+	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 SaveBackRole(backRole *domain.BackRole) (domain.BackRole, error) {
+	_, err := configs.Engine.Table("backRole").Insert(&backRole)
+	if err != nil {
+		return *backRole, err
+	}
+	return *backRole, nil
+}
+
+func SetBackRole(backRoleMap map[string]interface{}, id int64) (domain.BackRole, bool, error) {
+	var backRole domain.BackRole
+	_, err := configs.Engine.Table("backRole").Where("id = ?", id).Update(backRoleMap)
+	if err != nil {
+		return backRole, false, err
+	}
+	return backRole, true, nil
+}
+
+func DeleteBackRole(id int64) bool {
+	var backRole domain.BackRole
+	i, err := configs.Engine.Table("backRole").Where("id = ?", id).Delete(&backRole)
+	if err != nil {
+		return false
+	}
+	return i > 0
+}
+
+func GetBackRoleAuthorityById(id int64) (domain.BackRoleAuthority, error) {
+	var backRoleAuthority domain.BackRoleAuthority
+	_, err := configs.Engine.Table("backRoleAuthority").Where("id = ?", id).Get(&backRoleAuthority)
+	if err != nil {
+		return backRoleAuthority, err
+	}
+	return backRoleAuthority, nil
+}
+
+func GetBackRoleAuthorityListInId(ids []int64) ([]domain.BackRoleAuthority, error) {
+	rows, err := configs.Engine.Table("backRoleAuthority").In("id", ids).Rows(&domain.BackRoleAuthority{})
+	if err != nil {
+		return make([]domain.BackRoleAuthority, 0), err
+	}
+	defer rows.Close()
+	var list []domain.BackRoleAuthority
+	for rows.Next() {
+		var u domain.BackRoleAuthority
+		rows.Scan(&u)
+		list = append(list, u)
+	}
+	return list, nil
+}
+
+func GetBackRoleAuthorityList(backRoleAuthority domain.BackRoleAuthority, pageNum, pageSize int) (vo.BaseListVo, error) {
+	var arr []domain.BackRoleAuthority
+	Count, err := configs.Engine.Table("backRoleAuthority").Limit(pageSize, (pageNum-1)*pageSize).FindAndCount(&arr, &backRoleAuthority)
+	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 SaveBackRoleAuthority(backRoleAuthority *domain.BackRoleAuthority) (domain.BackRoleAuthority, error) {
+	_, err := configs.Engine.Table("backRoleAuthority").Insert(&backRoleAuthority)
+	if err != nil {
+		return *backRoleAuthority, err
+	}
+	return *backRoleAuthority, nil
+}
+
+func SetBackRoleAuthority(backRoleAuthorityMap map[string]interface{}, id int64) (domain.BackRoleAuthority, bool, error) {
+	var backRoleAuthority domain.BackRoleAuthority
+	_, err := configs.Engine.Table("backRoleAuthority").Where("id = ?", id).Update(backRoleAuthorityMap)
+	if err != nil {
+		return backRoleAuthority, false, err
+	}
+	return backRoleAuthority, true, nil
+}
+
+func DeleteBackRoleAuthority(id int64) bool {
+	var backRoleAuthority domain.BackRoleAuthority
+	i, err := configs.Engine.Table("backRoleAuthority").Where("id = ?", id).Delete(&backRoleAuthority)
+	if err != nil {
+		return false
+	}
+	return i > 0
+}
+
+func GetBackRoleMenuById(id int64) (domain.BackRoleMenu, error) {
+	var backRoleMenu domain.BackRoleMenu
+	_, err := configs.Engine.Table("backRoleMenu").Where("id = ?", id).Get(&backRoleMenu)
+	if err != nil {
+		return backRoleMenu, err
+	}
+	return backRoleMenu, nil
+}
+
+func GetBackRoleMenuListInId(ids []int64) ([]domain.BackRoleMenu, error) {
+	rows, err := configs.Engine.Table("backRoleMenu").In("id", ids).Rows(&domain.BackRoleMenu{})
+	if err != nil {
+		return make([]domain.BackRoleMenu, 0), err
+	}
+	defer rows.Close()
+	var list []domain.BackRoleMenu
+	for rows.Next() {
+		var u domain.BackRoleMenu
+		rows.Scan(&u)
+		list = append(list, u)
+	}
+	return list, nil
+}
+
+func GetBackRoleMenuList(backRoleMenu domain.BackRoleMenu, pageNum, pageSize int) (vo.BaseListVo, error) {
+	var arr []domain.BackRoleMenu
+	Count, err := configs.Engine.Table("backRoleMenu").Limit(pageSize, (pageNum-1)*pageSize).FindAndCount(&arr, &backRoleMenu)
+	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 SaveBackRoleMenu(backRoleMenu *domain.BackRoleMenu) (domain.BackRoleMenu, error) {
+	_, err := configs.Engine.Table("backRoleMenu").Insert(&backRoleMenu)
+	if err != nil {
+		return *backRoleMenu, err
+	}
+	return *backRoleMenu, nil
+}
+
+func SetBackRoleMenu(backRoleMenuMap map[string]interface{}, id int64) (domain.BackRoleMenu, bool, error) {
+	var backRoleMenu domain.BackRoleMenu
+	_, err := configs.Engine.Table("backRoleMenu").Where("id = ?", id).Update(backRoleMenuMap)
+	if err != nil {
+		return backRoleMenu, false, err
+	}
+	return backRoleMenu, true, nil
+}
+
+func DeleteBackRoleMenu(id int64) bool {
+	var backRoleMenu domain.BackRoleMenu
+	i, err := configs.Engine.Table("backRoleMenu").Where("id = ?", id).Delete(&backRoleMenu)
+	if err != nil {
+		return false
+	}
+	return i > 0
+}
+
+func GetGenTableById(id int64) (domain.GenTable, error) {
+	var genTable domain.GenTable
+	_, err := configs.Engine.Table("genTable").Where("id = ?", id).Get(&genTable)
+	if err != nil {
+		return genTable, err
+	}
+	return genTable, nil
+}
+
+func GetGenTableListInId(ids []int64) ([]domain.GenTable, error) {
+	rows, err := configs.Engine.Table("genTable").In("id", ids).Rows(&domain.GenTable{})
+	if err != nil {
+		return make([]domain.GenTable, 0), err
+	}
+	defer rows.Close()
+	var list []domain.GenTable
+	for rows.Next() {
+		var u domain.GenTable
+		rows.Scan(&u)
+		list = append(list, u)
+	}
+	return list, nil
+}
+
+func GetGenTableList(genTable domain.GenTable, pageNum, pageSize int) (vo.BaseListVo, error) {
+	var arr []domain.GenTable
+	Count, err := configs.Engine.Table("genTable").Limit(pageSize, (pageNum-1)*pageSize).FindAndCount(&arr, &genTable)
+	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 SaveGenTable(genTable *domain.GenTable) (domain.GenTable, error) {
+	_, err := configs.Engine.Table("genTable").Insert(&genTable)
+	if err != nil {
+		return *genTable, err
+	}
+	return *genTable, nil
+}
+
+func SetGenTable(genTableMap map[string]interface{}, id int64) (domain.GenTable, bool, error) {
+	var genTable domain.GenTable
+	_, err := configs.Engine.Table("genTable").Where("id = ?", id).Update(genTableMap)
+	if err != nil {
+		return genTable, false, err
+	}
+	return genTable, true, nil
+}
+
+func DeleteGenTable(id int64) bool {
+	var genTable domain.GenTable
+	i, err := configs.Engine.Table("genTable").Where("id = ?", id).Delete(&genTable)
+	if err != nil {
+		return false
+	}
+	return i > 0
+}
+
+func GetGenTableColumnById(id int64) (domain.GenTableColumn, error) {
+	var genTableColumn domain.GenTableColumn
+	_, err := configs.Engine.Table("genTableColumn").Where("id = ?", id).Get(&genTableColumn)
+	if err != nil {
+		return genTableColumn, err
+	}
+	return genTableColumn, nil
+}
+
+func GetGenTableColumnListInId(ids []int64) ([]domain.GenTableColumn, error) {
+	rows, err := configs.Engine.Table("genTableColumn").In("id", ids).Rows(&domain.GenTableColumn{})
+	if err != nil {
+		return make([]domain.GenTableColumn, 0), err
+	}
+	defer rows.Close()
+	var list []domain.GenTableColumn
+	for rows.Next() {
+		var u domain.GenTableColumn
+		rows.Scan(&u)
+		list = append(list, u)
+	}
+	return list, nil
+}
+
+func GetGenTableColumnList(genTableColumn domain.GenTableColumn, pageNum, pageSize int) (vo.BaseListVo, error) {
+	var arr []domain.GenTableColumn
+	Count, err := configs.Engine.Table("genTableColumn").Limit(pageSize, (pageNum-1)*pageSize).FindAndCount(&arr, &genTableColumn)
+	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 SaveGenTableColumn(genTableColumn *domain.GenTableColumn) (domain.GenTableColumn, error) {
+	_, err := configs.Engine.Table("genTableColumn").Insert(&genTableColumn)
+	if err != nil {
+		return *genTableColumn, err
+	}
+	return *genTableColumn, nil
+}
+
+func SetGenTableColumn(genTableColumnMap map[string]interface{}, id int64) (domain.GenTableColumn, bool, error) {
+	var genTableColumn domain.GenTableColumn
+	_, err := configs.Engine.Table("genTableColumn").Where("id = ?", id).Update(genTableColumnMap)
+	if err != nil {
+		return genTableColumn, false, err
+	}
+	return genTableColumn, true, nil
+}
+
+func DeleteGenTableColumn(id int64) bool {
+	var genTableColumn domain.GenTableColumn
+	i, err := configs.Engine.Table("genTableColumn").Where("id = ?", id).Delete(&genTableColumn)
+	if err != nil {
+		return false
+	}
+	return i > 0
+}
+
+func GetGoodsById(id int64) (domain.Goods, error) {
+	var goods domain.Goods
+	_, err := configs.Engine.Table("goods").Where("id = ?", id).Get(&goods)
+	if err != nil {
+		return goods, err
+	}
+	return goods, nil
+}
+
+func GetGoodsListInId(ids []int64) ([]domain.Goods, error) {
+	rows, err := configs.Engine.Table("goods").In("id", ids).Rows(&domain.Goods{})
+	if err != nil {
+		return make([]domain.Goods, 0), err
+	}
+	defer rows.Close()
+	var list []domain.Goods
+	for rows.Next() {
+		var u domain.Goods
+		rows.Scan(&u)
+		list = append(list, u)
+	}
+	return list, nil
+}
+
+func GetGoodsList(goods domain.Goods, pageNum, pageSize int) (vo.BaseListVo, error) {
+	var arr []domain.Goods
+	Count, err := configs.Engine.Table("goods").Limit(pageSize, (pageNum-1)*pageSize).FindAndCount(&arr, &goods)
+	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 SaveGoods(goods *domain.Goods) (domain.Goods, error) {
+	_, err := configs.Engine.Table("goods").Insert(&goods)
+	if err != nil {
+		return *goods, err
+	}
+	return *goods, nil
+}
+
+func SetGoods(goodsMap map[string]interface{}, id int64) (domain.Goods, bool, error) {
+	var goods domain.Goods
+	_, err := configs.Engine.Table("goods").Where("id = ?", id).Update(goodsMap)
+	if err != nil {
+		return goods, false, err
+	}
+	return goods, true, nil
+}
+
+func DeleteGoods(id int64) bool {
+	var goods domain.Goods
+	i, err := configs.Engine.Table("goods").Where("id = ?", id).Delete(&goods)
+	if err != nil {
+		return false
+	}
+	return i > 0
+}
+
+func GetGoodsCommodityAreaById(id int64) (domain.GoodsCommodityArea, error) {
+	var goodsCommodityArea domain.GoodsCommodityArea
+	_, err := configs.Engine.Table("goodsCommodityArea").Where("id = ?", id).Get(&goodsCommodityArea)
+	if err != nil {
+		return goodsCommodityArea, err
+	}
+	return goodsCommodityArea, nil
+}
+
+func GetGoodsCommodityAreaListInId(ids []int64) ([]domain.GoodsCommodityArea, error) {
+	rows, err := configs.Engine.Table("goodsCommodityArea").In("id", ids).Rows(&domain.GoodsCommodityArea{})
+	if err != nil {
+		return make([]domain.GoodsCommodityArea, 0), err
+	}
+	defer rows.Close()
+	var list []domain.GoodsCommodityArea
+	for rows.Next() {
+		var u domain.GoodsCommodityArea
+		rows.Scan(&u)
+		list = append(list, u)
+	}
+	return list, nil
+}
+
+func GetGoodsCommodityAreaList(goodsCommodityArea domain.GoodsCommodityArea, pageNum, pageSize int) (vo.BaseListVo, error) {
+	var arr []domain.GoodsCommodityArea
+	Count, err := configs.Engine.Table("goodsCommodityArea").Limit(pageSize, (pageNum-1)*pageSize).FindAndCount(&arr, &goodsCommodityArea)
+	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 SaveGoodsCommodityArea(goodsCommodityArea *domain.GoodsCommodityArea) (domain.GoodsCommodityArea, error) {
+	_, err := configs.Engine.Table("goodsCommodityArea").Insert(&goodsCommodityArea)
+	if err != nil {
+		return *goodsCommodityArea, err
+	}
+	return *goodsCommodityArea, nil
+}
+
+func SetGoodsCommodityArea(goodsCommodityAreaMap map[string]interface{}, id int64) (domain.GoodsCommodityArea, bool, error) {
+	var goodsCommodityArea domain.GoodsCommodityArea
+	_, err := configs.Engine.Table("goodsCommodityArea").Where("id = ?", id).Update(goodsCommodityAreaMap)
+	if err != nil {
+		return goodsCommodityArea, false, err
+	}
+	return goodsCommodityArea, true, nil
+}
+
+func DeleteGoodsCommodityArea(id int64) bool {
+	var goodsCommodityArea domain.GoodsCommodityArea
+	i, err := configs.Engine.Table("goodsCommodityArea").Where("id = ?", id).Delete(&goodsCommodityArea)
+	if err != nil {
+		return false
+	}
+	return i > 0
+}
+
+func GetGoodsCouponById(id int64) (domain.GoodsCoupon, error) {
+	var goodsCoupon domain.GoodsCoupon
+	_, err := configs.Engine.Table("goodsCoupon").Where("id = ?", id).Get(&goodsCoupon)
+	if err != nil {
+		return goodsCoupon, err
+	}
+	return goodsCoupon, nil
+}
+
+func GetGoodsCouponListInId(ids []int64) ([]domain.GoodsCoupon, error) {
+	rows, err := configs.Engine.Table("goodsCoupon").In("id", ids).Rows(&domain.GoodsCoupon{})
+	if err != nil {
+		return make([]domain.GoodsCoupon, 0), err
+	}
+	defer rows.Close()
+	var list []domain.GoodsCoupon
+	for rows.Next() {
+		var u domain.GoodsCoupon
+		rows.Scan(&u)
+		list = append(list, u)
+	}
+	return list, nil
+}
+
+func GetGoodsCouponList(goodsCoupon domain.GoodsCoupon, pageNum, pageSize int) (vo.BaseListVo, error) {
+	var arr []domain.GoodsCoupon
+	Count, err := configs.Engine.Table("goodsCoupon").Limit(pageSize, (pageNum-1)*pageSize).FindAndCount(&arr, &goodsCoupon)
+	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 SaveGoodsCoupon(goodsCoupon *domain.GoodsCoupon) (domain.GoodsCoupon, error) {
+	_, err := configs.Engine.Table("goodsCoupon").Insert(&goodsCoupon)
+	if err != nil {
+		return *goodsCoupon, err
+	}
+	return *goodsCoupon, nil
+}
+
+func SetGoodsCoupon(goodsCouponMap map[string]interface{}, id int64) (domain.GoodsCoupon, bool, error) {
+	var goodsCoupon domain.GoodsCoupon
+	_, err := configs.Engine.Table("goodsCoupon").Where("id = ?", id).Update(goodsCouponMap)
+	if err != nil {
+		return goodsCoupon, false, err
+	}
+	return goodsCoupon, true, nil
+}
+
+func DeleteGoodsCoupon(id int64) bool {
+	var goodsCoupon domain.GoodsCoupon
+	i, err := configs.Engine.Table("goodsCoupon").Where("id = ?", id).Delete(&goodsCoupon)
+	if err != nil {
+		return false
+	}
+	return i > 0
+}
+
+func GetGoodsCouponUserById(id int64) (domain.GoodsCouponUser, error) {
+	var goodsCouponUser domain.GoodsCouponUser
+	_, err := configs.Engine.Table("goodsCouponUser").Where("id = ?", id).Get(&goodsCouponUser)
+	if err != nil {
+		return goodsCouponUser, err
+	}
+	return goodsCouponUser, nil
+}
+
+func GetGoodsCouponUserListInId(ids []int64) ([]domain.GoodsCouponUser, error) {
+	rows, err := configs.Engine.Table("goodsCouponUser").In("id", ids).Rows(&domain.GoodsCouponUser{})
+	if err != nil {
+		return make([]domain.GoodsCouponUser, 0), err
+	}
+	defer rows.Close()
+	var list []domain.GoodsCouponUser
+	for rows.Next() {
+		var u domain.GoodsCouponUser
+		rows.Scan(&u)
+		list = append(list, u)
+	}
+	return list, nil
+}
+
+func GetGoodsCouponUserList(goodsCouponUser domain.GoodsCouponUser, pageNum, pageSize int) (vo.BaseListVo, error) {
+	var arr []domain.GoodsCouponUser
+	Count, err := configs.Engine.Table("goodsCouponUser").Limit(pageSize, (pageNum-1)*pageSize).FindAndCount(&arr, &goodsCouponUser)
+	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 SaveGoodsCouponUser(goodsCouponUser *domain.GoodsCouponUser) (domain.GoodsCouponUser, error) {
+	_, err := configs.Engine.Table("goodsCouponUser").Insert(&goodsCouponUser)
+	if err != nil {
+		return *goodsCouponUser, err
+	}
+	return *goodsCouponUser, nil
+}
+
+func SetGoodsCouponUser(goodsCouponUserMap map[string]interface{}, id int64) (domain.GoodsCouponUser, bool, error) {
+	var goodsCouponUser domain.GoodsCouponUser
+	_, err := configs.Engine.Table("goodsCouponUser").Where("id = ?", id).Update(goodsCouponUserMap)
+	if err != nil {
+		return goodsCouponUser, false, err
+	}
+	return goodsCouponUser, true, nil
+}
+
+func DeleteGoodsCouponUser(id int64) bool {
+	var goodsCouponUser domain.GoodsCouponUser
+	i, err := configs.Engine.Table("goodsCouponUser").Where("id = ?", id).Delete(&goodsCouponUser)
+	if err != nil {
+		return false
+	}
+	return i > 0
+}
+
+func GetGoodsIntroductionById(id int64) (domain.GoodsIntroduction, error) {
+	var goodsIntroduction domain.GoodsIntroduction
+	_, err := configs.Engine.Table("goodsIntroduction").Where("id = ?", id).Get(&goodsIntroduction)
+	if err != nil {
+		return goodsIntroduction, err
+	}
+	return goodsIntroduction, nil
+}
+
+func GetGoodsIntroductionListInId(ids []int64) ([]domain.GoodsIntroduction, error) {
+	rows, err := configs.Engine.Table("goodsIntroduction").In("id", ids).Rows(&domain.GoodsIntroduction{})
+	if err != nil {
+		return make([]domain.GoodsIntroduction, 0), err
+	}
+	defer rows.Close()
+	var list []domain.GoodsIntroduction
+	for rows.Next() {
+		var u domain.GoodsIntroduction
+		rows.Scan(&u)
+		list = append(list, u)
+	}
+	return list, nil
+}
+
+func GetGoodsIntroductionList(goodsIntroduction domain.GoodsIntroduction, pageNum, pageSize int) (vo.BaseListVo, error) {
+	var arr []domain.GoodsIntroduction
+	Count, err := configs.Engine.Table("goodsIntroduction").Limit(pageSize, (pageNum-1)*pageSize).FindAndCount(&arr, &goodsIntroduction)
+	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 SaveGoodsIntroduction(goodsIntroduction *domain.GoodsIntroduction) (domain.GoodsIntroduction, error) {
+	_, err := configs.Engine.Table("goodsIntroduction").Insert(&goodsIntroduction)
+	if err != nil {
+		return *goodsIntroduction, err
+	}
+	return *goodsIntroduction, nil
+}
+
+func SetGoodsIntroduction(goodsIntroductionMap map[string]interface{}, id int64) (domain.GoodsIntroduction, bool, error) {
+	var goodsIntroduction domain.GoodsIntroduction
+	_, err := configs.Engine.Table("goodsIntroduction").Where("id = ?", id).Update(goodsIntroductionMap)
+	if err != nil {
+		return goodsIntroduction, false, err
+	}
+	return goodsIntroduction, true, nil
+}
+
+func DeleteGoodsIntroduction(id int64) bool {
+	var goodsIntroduction domain.GoodsIntroduction
+	i, err := configs.Engine.Table("goodsIntroduction").Where("id = ?", id).Delete(&goodsIntroduction)
+	if err != nil {
+		return false
+	}
+	return i > 0
+}
+
+func GetGoodsOrderById(id int64) (domain.GoodsOrder, error) {
+	var goodsOrder domain.GoodsOrder
+	_, err := configs.Engine.Table("goodsOrder").Where("id = ?", id).Get(&goodsOrder)
+	if err != nil {
+		return goodsOrder, err
+	}
+	return goodsOrder, nil
+}
+
+func GetGoodsOrderListInId(ids []int64) ([]domain.GoodsOrder, error) {
+	rows, err := configs.Engine.Table("goodsOrder").In("id", ids).Rows(&domain.GoodsOrder{})
+	if err != nil {
+		return make([]domain.GoodsOrder, 0), err
+	}
+	defer rows.Close()
+	var list []domain.GoodsOrder
+	for rows.Next() {
+		var u domain.GoodsOrder
+		rows.Scan(&u)
+		list = append(list, u)
+	}
+	return list, nil
+}
+
+func GetGoodsOrderList(goodsOrder domain.GoodsOrder, pageNum, pageSize int) (vo.BaseListVo, error) {
+	var arr []domain.GoodsOrder
+	Count, err := configs.Engine.Table("goodsOrder").Limit(pageSize, (pageNum-1)*pageSize).FindAndCount(&arr, &goodsOrder)
+	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 SaveGoodsOrder(goodsOrder *domain.GoodsOrder) (domain.GoodsOrder, error) {
+	_, err := configs.Engine.Table("goodsOrder").Insert(&goodsOrder)
+	if err != nil {
+		return *goodsOrder, err
+	}
+	return *goodsOrder, nil
+}
+
+func SetGoodsOrder(goodsOrderMap map[string]interface{}, id int64) (domain.GoodsOrder, bool, error) {
+	var goodsOrder domain.GoodsOrder
+	_, err := configs.Engine.Table("goodsOrder").Where("id = ?", id).Update(goodsOrderMap)
+	if err != nil {
+		return goodsOrder, false, err
+	}
+	return goodsOrder, true, nil
+}
+
+func DeleteGoodsOrder(id int64) bool {
+	var goodsOrder domain.GoodsOrder
+	i, err := configs.Engine.Table("goodsOrder").Where("id = ?", id).Delete(&goodsOrder)
+	if err != nil {
+		return false
+	}
+	return i > 0
+}
+
+func GetGoodsSkuById(id int64) (domain.GoodsSku, error) {
+	var goodsSku domain.GoodsSku
+	_, err := configs.Engine.Table("goodsSku").Where("id = ?", id).Get(&goodsSku)
+	if err != nil {
+		return goodsSku, err
+	}
+	return goodsSku, nil
+}
+
+func GetGoodsSkuListInId(ids []int64) ([]domain.GoodsSku, error) {
+	rows, err := configs.Engine.Table("goodsSku").In("id", ids).Rows(&domain.GoodsSku{})
+	if err != nil {
+		return make([]domain.GoodsSku, 0), err
+	}
+	defer rows.Close()
+	var list []domain.GoodsSku
+	for rows.Next() {
+		var u domain.GoodsSku
+		rows.Scan(&u)
+		list = append(list, u)
+	}
+	return list, nil
+}
+
+func GetGoodsSkuList(goodsSku domain.GoodsSku, pageNum, pageSize int) (vo.BaseListVo, error) {
+	var arr []domain.GoodsSku
+	Count, err := configs.Engine.Table("goodsSku").Limit(pageSize, (pageNum-1)*pageSize).FindAndCount(&arr, &goodsSku)
+	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 SaveGoodsSku(goodsSku *domain.GoodsSku) (domain.GoodsSku, error) {
+	_, err := configs.Engine.Table("goodsSku").Insert(&goodsSku)
+	if err != nil {
+		return *goodsSku, err
+	}
+	return *goodsSku, nil
+}
+
+func SetGoodsSku(goodsSkuMap map[string]interface{}, id int64) (domain.GoodsSku, bool, error) {
+	var goodsSku domain.GoodsSku
+	_, err := configs.Engine.Table("goodsSku").Where("id = ?", id).Update(goodsSkuMap)
+	if err != nil {
+		return goodsSku, false, err
+	}
+	return goodsSku, true, nil
+}
+
+func DeleteGoodsSku(id int64) bool {
+	var goodsSku domain.GoodsSku
+	i, err := configs.Engine.Table("goodsSku").Where("id = ?", id).Delete(&goodsSku)
+	if err != nil {
+		return false
+	}
+	return i > 0
+}
+
+func GetGoodsSkuCardById(id int64) (domain.GoodsSkuCard, error) {
+	var goodsSkuCard domain.GoodsSkuCard
+	_, err := configs.Engine.Table("goodsSkuCard").Where("id = ?", id).Get(&goodsSkuCard)
+	if err != nil {
+		return goodsSkuCard, err
+	}
+	return goodsSkuCard, nil
+}
+
+func GetGoodsSkuCardListInId(ids []int64) ([]domain.GoodsSkuCard, error) {
+	rows, err := configs.Engine.Table("goodsSkuCard").In("id", ids).Rows(&domain.GoodsSkuCard{})
+	if err != nil {
+		return make([]domain.GoodsSkuCard, 0), err
+	}
+	defer rows.Close()
+	var list []domain.GoodsSkuCard
+	for rows.Next() {
+		var u domain.GoodsSkuCard
+		rows.Scan(&u)
+		list = append(list, u)
+	}
+	return list, nil
+}
+
+func GetGoodsSkuCardList(goodsSkuCard domain.GoodsSkuCard, pageNum, pageSize int) (vo.BaseListVo, error) {
+	var arr []domain.GoodsSkuCard
+	Count, err := configs.Engine.Table("goodsSkuCard").Limit(pageSize, (pageNum-1)*pageSize).FindAndCount(&arr, &goodsSkuCard)
+	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 SaveGoodsSkuCard(goodsSkuCard *domain.GoodsSkuCard) (domain.GoodsSkuCard, error) {
+	_, err := configs.Engine.Table("goodsSkuCard").Insert(&goodsSkuCard)
+	if err != nil {
+		return *goodsSkuCard, err
+	}
+	return *goodsSkuCard, nil
+}
+
+func SetGoodsSkuCard(goodsSkuCardMap map[string]interface{}, id int64) (domain.GoodsSkuCard, bool, error) {
+	var goodsSkuCard domain.GoodsSkuCard
+	_, err := configs.Engine.Table("goodsSkuCard").Where("id = ?", id).Update(goodsSkuCardMap)
+	if err != nil {
+		return goodsSkuCard, false, err
+	}
+	return goodsSkuCard, true, nil
+}
+
+func DeleteGoodsSkuCard(id int64) bool {
+	var goodsSkuCard domain.GoodsSkuCard
+	i, err := configs.Engine.Table("goodsSkuCard").Where("id = ?", id).Delete(&goodsSkuCard)
+	if err != nil {
+		return false
+	}
+	return i > 0
+}
+
+func GetGoodsTagById(id int64) (domain.GoodsTag, error) {
+	var goodsTag domain.GoodsTag
+	_, err := configs.Engine.Table("goodsTag").Where("id = ?", id).Get(&goodsTag)
+	if err != nil {
+		return goodsTag, err
+	}
+	return goodsTag, nil
+}
+
+func GetGoodsTagListInId(ids []int64) ([]domain.GoodsTag, error) {
+	rows, err := configs.Engine.Table("goodsTag").In("id", ids).Rows(&domain.GoodsTag{})
+	if err != nil {
+		return make([]domain.GoodsTag, 0), err
+	}
+	defer rows.Close()
+	var list []domain.GoodsTag
+	for rows.Next() {
+		var u domain.GoodsTag
+		rows.Scan(&u)
+		list = append(list, u)
+	}
+	return list, nil
+}
+
+func GetGoodsTagList(goodsTag domain.GoodsTag, pageNum, pageSize int) (vo.BaseListVo, error) {
+	var arr []domain.GoodsTag
+	Count, err := configs.Engine.Table("goodsTag").Limit(pageSize, (pageNum-1)*pageSize).FindAndCount(&arr, &goodsTag)
+	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 SaveGoodsTag(goodsTag *domain.GoodsTag) (domain.GoodsTag, error) {
+	_, err := configs.Engine.Table("goodsTag").Insert(&goodsTag)
+	if err != nil {
+		return *goodsTag, err
+	}
+	return *goodsTag, nil
+}
+
+func SetGoodsTag(goodsTagMap map[string]interface{}, id int64) (domain.GoodsTag, bool, error) {
+	var goodsTag domain.GoodsTag
+	_, err := configs.Engine.Table("goodsTag").Where("id = ?", id).Update(goodsTagMap)
+	if err != nil {
+		return goodsTag, false, err
+	}
+	return goodsTag, true, nil
+}
+
+func DeleteGoodsTag(id int64) bool {
+	var goodsTag domain.GoodsTag
+	i, err := configs.Engine.Table("goodsTag").Where("id = ?", id).Delete(&goodsTag)
+	if err != nil {
+		return false
+	}
+	return i > 0
+}
+
+func GetGoodsTypeById(id int64) (domain.GoodsType, error) {
+	var goodsType domain.GoodsType
+	_, err := configs.Engine.Table("goodsType").Where("id = ?", id).Get(&goodsType)
+	if err != nil {
+		return goodsType, err
+	}
+	return goodsType, nil
+}
+
+func GetGoodsTypeListInId(ids []int64) ([]domain.GoodsType, error) {
+	rows, err := configs.Engine.Table("goodsType").In("id", ids).Rows(&domain.GoodsType{})
+	if err != nil {
+		return make([]domain.GoodsType, 0), err
+	}
+	defer rows.Close()
+	var list []domain.GoodsType
+	for rows.Next() {
+		var u domain.GoodsType
+		rows.Scan(&u)
+		list = append(list, u)
+	}
+	return list, nil
+}
+
+func GetGoodsTypeList(goodsType domain.GoodsType, pageNum, pageSize int) (vo.BaseListVo, error) {
+	var arr []domain.GoodsType
+	Count, err := configs.Engine.Table("goodsType").Limit(pageSize, (pageNum-1)*pageSize).FindAndCount(&arr, &goodsType)
+	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 SaveGoodsType(goodsType *domain.GoodsType) (domain.GoodsType, error) {
+	_, err := configs.Engine.Table("goodsType").Insert(&goodsType)
+	if err != nil {
+		return *goodsType, err
+	}
+	return *goodsType, nil
+}
+
+func SetGoodsType(goodsTypeMap map[string]interface{}, id int64) (domain.GoodsType, bool, error) {
+	var goodsType domain.GoodsType
+	_, err := configs.Engine.Table("goodsType").Where("id = ?", id).Update(goodsTypeMap)
+	if err != nil {
+		return goodsType, false, err
+	}
+	return goodsType, true, nil
+}
+
+func DeleteGoodsType(id int64) bool {
+	var goodsType domain.GoodsType
+	i, err := configs.Engine.Table("goodsType").Where("id = ?", id).Delete(&goodsType)
+	if err != nil {
+		return false
+	}
+	return i > 0
+}
+
+func GetUserById(id int64) (domain.User, error) {
+	var user domain.User
+	_, err := configs.Engine.Table("user").Where("id = ?", id).Get(&user)
+	if err != nil {
+		return user, err
+	}
+	return user, nil
+}
+
+func GetUserListInId(ids []int64) ([]domain.User, error) {
+	rows, err := configs.Engine.Table("user").In("id", ids).Rows(&domain.User{})
+	if err != nil {
+		return make([]domain.User, 0), err
+	}
+	defer rows.Close()
+	var list []domain.User
+	for rows.Next() {
+		var u domain.User
+		rows.Scan(&u)
+		list = append(list, u)
+	}
+	return list, nil
+}
+
+func GetUserList(user domain.User, pageNum, pageSize int) (vo.BaseListVo, error) {
+	var arr []domain.User
+	Count, err := configs.Engine.Table("user").Limit(pageSize, (pageNum-1)*pageSize).FindAndCount(&arr, &user)
+	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 SaveUser(user *domain.User) (domain.User, error) {
+	_, err := configs.Engine.Table("user").Insert(&user)
+	if err != nil {
+		return *user, err
+	}
+	return *user, nil
+}
+
+func SetUser(userMap map[string]interface{}, id int64) (domain.User, bool, error) {
+	var user domain.User
+	_, err := configs.Engine.Table("user").Where("id = ?", id).Update(userMap)
+	if err != nil {
+		return user, false, err
+	}
+	return user, true, nil
+}
+
+func DeleteUser(id int64) bool {
+	var user domain.User
+	i, err := configs.Engine.Table("user").Where("id = ?", id).Delete(&user)
+	if err != nil {
+		return false
+	}
+	return i > 0
+}
+
+func GetUserWalletById(id int64) (domain.UserWallet, error) {
+	var userWallet domain.UserWallet
+	_, err := configs.Engine.Table("userWallet").Where("id = ?", id).Get(&userWallet)
+	if err != nil {
+		return userWallet, err
+	}
+	return userWallet, nil
+}
+
+func GetUserWalletListInId(ids []int64) ([]domain.UserWallet, error) {
+	rows, err := configs.Engine.Table("userWallet").In("id", ids).Rows(&domain.UserWallet{})
+	if err != nil {
+		return make([]domain.UserWallet, 0), err
+	}
+	defer rows.Close()
+	var list []domain.UserWallet
+	for rows.Next() {
+		var u domain.UserWallet
+		rows.Scan(&u)
+		list = append(list, u)
+	}
+	return list, nil
+}
+
+func GetUserWalletList(userWallet domain.UserWallet, pageNum, pageSize int) (vo.BaseListVo, error) {
+	var arr []domain.UserWallet
+	Count, err := configs.Engine.Table("userWallet").Limit(pageSize, (pageNum-1)*pageSize).FindAndCount(&arr, &userWallet)
+	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 SaveUserWallet(userWallet *domain.UserWallet) (domain.UserWallet, error) {
+	_, err := configs.Engine.Table("userWallet").Insert(&userWallet)
+	if err != nil {
+		return *userWallet, err
+	}
+	return *userWallet, nil
+}
+
+func SetUserWallet(userWalletMap map[string]interface{}, id int64) (domain.UserWallet, bool, error) {
+	var userWallet domain.UserWallet
+	_, err := configs.Engine.Table("userWallet").Where("id = ?", id).Update(userWalletMap)
+	if err != nil {
+		return userWallet, false, err
+	}
+	return userWallet, true, nil
+}
+
+func DeleteUserWallet(id int64) bool {
+	var userWallet domain.UserWallet
+	i, err := configs.Engine.Table("userWallet").Where("id = ?", id).Delete(&userWallet)
+	if err != nil {
+		return false
+	}
+	return i > 0
+}
+
+func GetAuthorityById(id int64) (domain.Authority, error) {
+	var authority domain.Authority
+	_, err := configs.Engine.Table("authority").Where("id = ?", id).Get(&authority)
+	if err != nil {
+		return authority, err
+	}
+	return authority, nil
+}
+
+func GetAuthorityListInId(ids []int64) ([]domain.Authority, error) {
+	rows, err := configs.Engine.Table("authority").In("id", ids).Rows(&domain.Authority{})
+	if err != nil {
+		return make([]domain.Authority, 0), err
+	}
+	defer rows.Close()
+	var list []domain.Authority
+	for rows.Next() {
+		var u domain.Authority
+		rows.Scan(&u)
+		list = append(list, u)
+	}
+	return list, nil
+}
+
+func GetAuthorityList(authority domain.Authority, pageNum, pageSize int) (vo.BaseListVo, error) {
+	var arr []domain.Authority
+	Count, err := configs.Engine.Table("authority").Limit(pageSize, (pageNum-1)*pageSize).FindAndCount(&arr, &authority)
+	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 SaveAuthority(authority *domain.Authority) (domain.Authority, error) {
+	_, err := configs.Engine.Table("authority").Insert(&authority)
+	if err != nil {
+		return *authority, err
+	}
+	return *authority, nil
+}
+
+func SetAuthority(authorityMap map[string]interface{}, id int64) (domain.Authority, bool, error) {
+	var authority domain.Authority
+	_, err := configs.Engine.Table("authority").Where("id = ?", id).Update(authorityMap)
+	if err != nil {
+		return authority, false, err
+	}
+	return authority, true, nil
+}
+
+func DeleteAuthority(id int64) bool {
+	var authority domain.Authority
+	i, err := configs.Engine.Table("authority").Where("id = ?", id).Delete(&authority)
+	if err != nil {
+		return false
+	}
+	return i > 0
+}
+
+func GetDictDataById(id int64) (domain.DictData, error) {
+	var dictData domain.DictData
+	_, err := configs.Engine.Table("dictData").Where("id = ?", id).Get(&dictData)
+	if err != nil {
+		return dictData, err
+	}
+	return dictData, nil
+}
+
+func GetDictDataListInId(ids []int64) ([]domain.DictData, error) {
+	rows, err := configs.Engine.Table("dictData").In("id", ids).Rows(&domain.DictData{})
+	if err != nil {
+		return make([]domain.DictData, 0), err
+	}
+	defer rows.Close()
+	var list []domain.DictData
+	for rows.Next() {
+		var u domain.DictData
+		rows.Scan(&u)
+		list = append(list, u)
+	}
+	return list, nil
+}
+
+func GetDictDataList(dictData domain.DictData, pageNum, pageSize int) (vo.BaseListVo, error) {
+	var arr []domain.DictData
+	Count, err := configs.Engine.Table("dictData").Limit(pageSize, (pageNum-1)*pageSize).FindAndCount(&arr, &dictData)
+	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 SaveDictData(dictData *domain.DictData) (domain.DictData, error) {
+	_, err := configs.Engine.Table("dictData").Insert(&dictData)
+	if err != nil {
+		return *dictData, err
+	}
+	return *dictData, nil
+}
+
+func SetDictData(dictDataMap map[string]interface{}, id int64) (domain.DictData, bool, error) {
+	var dictData domain.DictData
+	_, err := configs.Engine.Table("dictData").Where("id = ?", id).Update(dictDataMap)
+	if err != nil {
+		return dictData, false, err
+	}
+	return dictData, true, nil
+}
+
+func DeleteDictData(id int64) bool {
+	var dictData domain.DictData
+	i, err := configs.Engine.Table("dictData").Where("id = ?", id).Delete(&dictData)
+	if err != nil {
+		return false
+	}
+	return i > 0
+}
+
+func GetDictTypeById(id int64) (domain.DictType, error) {
+	var dictType domain.DictType
+	_, err := configs.Engine.Table("dictType").Where("id = ?", id).Get(&dictType)
+	if err != nil {
+		return dictType, err
+	}
+	return dictType, nil
+}
+
+func GetDictTypeListInId(ids []int64) ([]domain.DictType, error) {
+	rows, err := configs.Engine.Table("dictType").In("id", ids).Rows(&domain.DictType{})
+	if err != nil {
+		return make([]domain.DictType, 0), err
+	}
+	defer rows.Close()
+	var list []domain.DictType
+	for rows.Next() {
+		var u domain.DictType
+		rows.Scan(&u)
+		list = append(list, u)
+	}
+	return list, nil
+}
+
+func GetDictTypeList(dictType domain.DictType, pageNum, pageSize int) (vo.BaseListVo, error) {
+	var arr []domain.DictType
+	Count, err := configs.Engine.Table("dictType").Limit(pageSize, (pageNum-1)*pageSize).FindAndCount(&arr, &dictType)
+	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 SaveDictType(dictType *domain.DictType) (domain.DictType, error) {
+	_, err := configs.Engine.Table("dictType").Insert(&dictType)
+	if err != nil {
+		return *dictType, err
+	}
+	return *dictType, nil
+}
+
+func SetDictType(dictTypeMap map[string]interface{}, id int64) (domain.DictType, bool, error) {
+	var dictType domain.DictType
+	_, err := configs.Engine.Table("dictType").Where("id = ?", id).Update(dictTypeMap)
+	if err != nil {
+		return dictType, false, err
+	}
+	return dictType, true, nil
+}
+
+func DeleteDictType(id int64) bool {
+	var dictType domain.DictType
+	i, err := configs.Engine.Table("dictType").Where("id = ?", id).Delete(&dictType)
+	if err != nil {
+		return false
+	}
+	return i > 0
+}
+
+func GetManageUserById(id int64) (domain.ManageUser, error) {
+	var manageUser domain.ManageUser
+	_, err := configs.Engine.Table("manageUser").Where("id = ?", id).Get(&manageUser)
+	if err != nil {
+		return manageUser, err
+	}
+	return manageUser, nil
+}
+
+func GetManageUserListInId(ids []int64) ([]domain.ManageUser, error) {
+	rows, err := configs.Engine.Table("manageUser").In("id", ids).Rows(&domain.ManageUser{})
+	if err != nil {
+		return make([]domain.ManageUser, 0), err
+	}
+	defer rows.Close()
+	var list []domain.ManageUser
+	for rows.Next() {
+		var u domain.ManageUser
+		rows.Scan(&u)
+		list = append(list, u)
+	}
+	return list, nil
+}
+
+func GetManageUserList(manageUser domain.ManageUser, pageNum, pageSize int) (vo.BaseListVo, error) {
+	var arr []domain.ManageUser
+	Count, err := configs.Engine.Table("manageUser").Limit(pageSize, (pageNum-1)*pageSize).FindAndCount(&arr, &manageUser)
+	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 SaveManageUser(manageUser *domain.ManageUser) (domain.ManageUser, error) {
+	_, err := configs.Engine.Table("manageUser").Insert(&manageUser)
+	if err != nil {
+		return *manageUser, err
+	}
+	return *manageUser, nil
+}
+
+func SetManageUser(manageUserMap map[string]interface{}, id int64) (domain.ManageUser, bool, error) {
+	var manageUser domain.ManageUser
+	_, err := configs.Engine.Table("manageUser").Where("id = ?", id).Update(manageUserMap)
+	if err != nil {
+		return manageUser, false, err
+	}
+	return manageUser, true, nil
+}
+
+func DeleteManageUser(id int64) bool {
+	var manageUser domain.ManageUser
+	i, err := configs.Engine.Table("manageUser").Where("id = ?", id).Delete(&manageUser)
+	if err != nil {
+		return false
+	}
+	return i > 0
+}
+
+func GetShopTopicById(id int64) (domain.ShopTopic, error) {
+	var shopTopic domain.ShopTopic
+	_, err := configs.Engine.Table("shopTopic").Where("id = ?", id).Get(&shopTopic)
+	if err != nil {
+		return shopTopic, err
+	}
+	return shopTopic, nil
+}
+
+func GetShopTopicListInId(ids []int64) ([]domain.ShopTopic, error) {
+	rows, err := configs.Engine.Table("shopTopic").In("id", ids).Rows(&domain.ShopTopic{})
+	if err != nil {
+		return make([]domain.ShopTopic, 0), err
+	}
+	defer rows.Close()
+	var list []domain.ShopTopic
+	for rows.Next() {
+		var u domain.ShopTopic
+		rows.Scan(&u)
+		list = append(list, u)
+	}
+	return list, nil
+}
+
+func GetShopTopicList(shopTopic domain.ShopTopic, pageNum, pageSize int) (vo.BaseListVo, error) {
+	var arr []domain.ShopTopic
+	Count, err := configs.Engine.Table("shopTopic").Limit(pageSize, (pageNum-1)*pageSize).FindAndCount(&arr, &shopTopic)
+	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 SaveShopTopic(shopTopic *domain.ShopTopic) (domain.ShopTopic, error) {
+	_, err := configs.Engine.Table("shopTopic").Insert(&shopTopic)
+	if err != nil {
+		return *shopTopic, err
+	}
+	return *shopTopic, nil
+}
+
+func SetShopTopic(shopTopicMap map[string]interface{}, id int64) (domain.ShopTopic, bool, error) {
+	var shopTopic domain.ShopTopic
+	_, err := configs.Engine.Table("shopTopic").Where("id = ?", id).Update(shopTopicMap)
+	if err != nil {
+		return shopTopic, false, err
+	}
+	return shopTopic, true, nil
+}
+
+func DeleteShopTopic(id int64) bool {
+	var shopTopic domain.ShopTopic
+	i, err := configs.Engine.Table("shopTopic").Where("id = ?", id).Delete(&shopTopic)
+	if err != nil {
+		return false
+	}
+	return i > 0
+}
+
+func GetShopAdviceCarouselById(id int64) (domain.ShopAdviceCarousel, error) {
+	var shopAdviceCarousel domain.ShopAdviceCarousel
+	_, err := configs.Engine.Table("shopAdviceCarousel").Where("id = ?", id).Get(&shopAdviceCarousel)
+	if err != nil {
+		return shopAdviceCarousel, err
+	}
+	return shopAdviceCarousel, nil
+}
+
+func GetShopAdviceCarouselListInId(ids []int64) ([]domain.ShopAdviceCarousel, error) {
+	rows, err := configs.Engine.Table("shopAdviceCarousel").In("id", ids).Rows(&domain.ShopAdviceCarousel{})
+	if err != nil {
+		return make([]domain.ShopAdviceCarousel, 0), err
+	}
+	defer rows.Close()
+	var list []domain.ShopAdviceCarousel
+	for rows.Next() {
+		var u domain.ShopAdviceCarousel
+		rows.Scan(&u)
+		list = append(list, u)
+	}
+	return list, nil
+}
+
+func GetShopAdviceCarouselList(shopAdviceCarousel domain.ShopAdviceCarousel, pageNum, pageSize int) (vo.BaseListVo, error) {
+	var arr []domain.ShopAdviceCarousel
+	Count, err := configs.Engine.Table("shopAdviceCarousel").Limit(pageSize, (pageNum-1)*pageSize).FindAndCount(&arr, &shopAdviceCarousel)
+	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 SaveShopAdviceCarousel(shopAdviceCarousel *domain.ShopAdviceCarousel) (domain.ShopAdviceCarousel, error) {
+	_, err := configs.Engine.Table("shopAdviceCarousel").Insert(&shopAdviceCarousel)
+	if err != nil {
+		return *shopAdviceCarousel, err
+	}
+	return *shopAdviceCarousel, nil
+}
+
+func SetShopAdviceCarousel(shopAdviceCarouselMap map[string]interface{}, id int64) (domain.ShopAdviceCarousel, bool, error) {
+	var shopAdviceCarousel domain.ShopAdviceCarousel
+	_, err := configs.Engine.Table("shopAdviceCarousel").Where("id = ?", id).Update(shopAdviceCarouselMap)
+	if err != nil {
+		return shopAdviceCarousel, false, err
+	}
+	return shopAdviceCarousel, true, nil
+}
+
+func DeleteShopAdviceCarousel(id int64) bool {
+	var shopAdviceCarousel domain.ShopAdviceCarousel
+	i, err := configs.Engine.Table("shopAdviceCarousel").Where("id = ?", id).Delete(&shopAdviceCarousel)
+	if err != nil {
+		return false
+	}
+	return i > 0
+}
+
+func GetShopTopicSkuById(id int64) (domain.ShopTopicSku, error) {
+	var shopTopicSku domain.ShopTopicSku
+	_, err := configs.Engine.Table("shopTopicSku").Where("id = ?", id).Get(&shopTopicSku)
+	if err != nil {
+		return shopTopicSku, err
+	}
+	return shopTopicSku, nil
+}
+
+func GetShopTopicSkuListInId(ids []int64) ([]domain.ShopTopicSku, error) {
+	rows, err := configs.Engine.Table("shopTopicSku").In("id", ids).Rows(&domain.ShopTopicSku{})
+	if err != nil {
+		return make([]domain.ShopTopicSku, 0), err
+	}
+	defer rows.Close()
+	var list []domain.ShopTopicSku
+	for rows.Next() {
+		var u domain.ShopTopicSku
+		rows.Scan(&u)
+		list = append(list, u)
+	}
+	return list, nil
+}
+
+func GetShopTopicSkuList(shopTopicSku domain.ShopTopicSku, pageNum, pageSize int) (vo.BaseListVo, error) {
+	var arr []domain.ShopTopicSku
+	Count, err := configs.Engine.Table("shopTopicSku").Limit(pageSize, (pageNum-1)*pageSize).FindAndCount(&arr, &shopTopicSku)
+	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 SaveShopTopicSku(shopTopicSku *domain.ShopTopicSku) (domain.ShopTopicSku, error) {
+	_, err := configs.Engine.Table("shopTopicSku").Insert(&shopTopicSku)
+	if err != nil {
+		return *shopTopicSku, err
+	}
+	return *shopTopicSku, nil
+}
+
+func SetShopTopicSku(shopTopicSkuMap map[string]interface{}, id int64) (domain.ShopTopicSku, bool, error) {
+	var shopTopicSku domain.ShopTopicSku
+	_, err := configs.Engine.Table("shopTopicSku").Where("id = ?", id).Update(shopTopicSkuMap)
+	if err != nil {
+		return shopTopicSku, false, err
+	}
+	return shopTopicSku, true, nil
+}
+
+func DeleteShopTopicSku(id int64) bool {
+	var shopTopicSku domain.ShopTopicSku
+	i, err := configs.Engine.Table("shopTopicSku").Where("id = ?", id).Delete(&shopTopicSku)
+	if err != nil {
+		return false
+	}
+	return i > 0
+}

+ 408 - 0
output/domain/Domain.go

@@ -0,0 +1,408 @@
+package domain
+
+import (
+	"fmt"
+	"time"
+)
+
+
+type Article struct { 
+	Id int64 `xorm:"id" json:"id"` //注释:id
+	ArticleTitle string `xorm:"article_title" json:"articleTitle"` //注释:文章名称
+	ArticleContent string `xorm:"article_content" json:"articleContent"` //注释:文章内容
+	State string `xorm:"state" json:"state"` //注释:状态
+	ArticleTagIds string `xorm:"article_tag_ids" json:"articleTagIds"` //注释:文章标签
+	ArticleTopicId int64 `xorm:"article_topic_id" json:"articleTopicId"` //注释:文章主题id
+	Image string `xorm:"image" json:"image"` //注释:图片
+	PublishTime time.Time `xorm:"publish_time" json:"publishTime"` //注释:发表时间
+	EyeFill int64 `xorm:"eye_fill" json:"eyeFill"` //注释:浏览量
+	LikeCount int64 `xorm:"like_count" json:"likeCount"` //注释:点赞量
+	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 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,"}")
+}
+
+type ArticleTag struct { 
+	Id int64 `xorm:"id" json:"id"` //注释:
+	TagName string `xorm:"tag_name" json:"tagName"` //注释:标签名
+	TagDesc string `xorm:"tag_desc" json:"tagDesc"` //注释:标签描述
+}
+
+func (receiver ArticleTag) String() string {
+	return fmt.Sprint("ArticleTag{","Id:",receiver.Id,"TagName:",receiver.TagName,"TagDesc:",receiver.TagDesc,"}")
+}
+
+type ArticleTopic struct { 
+	Id int64 `xorm:"id" json:"id"` //注释:
+	Image string `xorm:"image" json:"image"` //注释:图片
+	TopicName string `xorm:"topic_name" json:"topicName"` //注释:主题名称
+	TopicDesc string `xorm:"topic_desc" json:"topicDesc"` //注释:主题描述
+}
+
+func (receiver ArticleTopic) String() string {
+	return fmt.Sprint("ArticleTopic{","Id:",receiver.Id,"Image:",receiver.Image,"TopicName:",receiver.TopicName,"TopicDesc:",receiver.TopicDesc,"}")
+}
+
+type BackAuthority struct { 
+	Id int64 `xorm:"id" json:"id"` //注释:id
+	AuthorityName string `xorm:"authority_name" json:"authorityName"` //注释:接口名
+	AuthorityPath string `xorm:"authority_path" json:"authorityPath"` //注释:接口路径
+	Method string `xorm:"method" json:"method"` //注释:方法
+	State string `xorm:"state" json:"state"` //注释:接口是否启用(0关闭,1启用)
+	AuthorityVerification string `xorm:"authority_verification" json:"authorityVerification"` //注释:权限校验
+	CreateTime time.Time `xorm:"create_time" json:"createTime"` //注释:创建时间
+}
+
+func (receiver BackAuthority) String() string {
+	return fmt.Sprint("BackAuthority{","Id:",receiver.Id,"AuthorityName:",receiver.AuthorityName,"AuthorityPath:",receiver.AuthorityPath,"Method:",receiver.Method,"State:",receiver.State,"AuthorityVerification:",receiver.AuthorityVerification,"CreateTime:",receiver.CreateTime,"}")
+}
+
+type BackMenu struct { 
+	Id int64 `xorm:"id" json:"id"` //注释:id
+	BackMenuName string `xorm:"back_menu_name" json:"backMenuName"` //注释:菜单名称
+	BackMenuPater int64 `xorm:"back_menu_pater" json:"backMenuPater"` //注释:父级菜单
+	Sort int64 `xorm:"sort" json:"sort"` //注释:排序
+	Icon string `xorm:"icon" json:"icon"` //注释:图标
+	Remark string `xorm:"remark" json:"remark"` //注释:备注
+	BackRouterPath string `xorm:"back_router_path" json:"backRouterPath"` //注释:路由路径
+	State string `xorm:"state" json:"state"` //注释:状态
+}
+
+func (receiver BackMenu) String() string {
+	return fmt.Sprint("BackMenu{","Id:",receiver.Id,"BackMenuName:",receiver.BackMenuName,"BackMenuPater:",receiver.BackMenuPater,"Sort:",receiver.Sort,"Icon:",receiver.Icon,"Remark:",receiver.Remark,"BackRouterPath:",receiver.BackRouterPath,"State:",receiver.State,"}")
+}
+
+type BackRole struct { 
+	Id int64 `xorm:"id" json:"id"` //注释:
+	RoleName string `xorm:"role_name" json:"roleName"` //注释:
+}
+
+func (receiver BackRole) String() string {
+	return fmt.Sprint("BackRole{","Id:",receiver.Id,"RoleName:",receiver.RoleName,"}")
+}
+
+type BackRoleAuthority struct { 
+	Id int64 `xorm:"id" json:"id"` //注释:
+	RoleId int64 `xorm:"role_id" json:"roleId"` //注释:角色id
+	AuthorityId int64 `xorm:"authority_id" json:"authorityId"` //注释:权限id
+}
+
+func (receiver BackRoleAuthority) String() string {
+	return fmt.Sprint("BackRoleAuthority{","Id:",receiver.Id,"RoleId:",receiver.RoleId,"AuthorityId:",receiver.AuthorityId,"}")
+}
+
+type BackRoleMenu struct { 
+	Id int64 `xorm:"id" json:"id"` //注释:
+	RoleId int64 `xorm:"role_id" json:"roleId"` //注释:角色id
+	MenuId int64 `xorm:"menu_id" json:"menuId"` //注释:枚舉id
+}
+
+func (receiver BackRoleMenu) String() string {
+	return fmt.Sprint("BackRoleMenu{","Id:",receiver.Id,"RoleId:",receiver.RoleId,"MenuId:",receiver.MenuId,"}")
+}
+
+type GenTable struct { 
+	Id int64 `xorm:"id" json:"id"` //注释:id
+	TableName string `xorm:"table_name" json:"tableName"` //注释:数据库名
+	TableComment string `xorm:"table_comment" json:"tableComment"` //注释:数据库注释
+	Name string `xorm:"name" json:"name"` //注释:名字
+	RouterName string `xorm:"router_name" json:"routerName"` //注释:路由名
+	Remark string `xorm:"remark" json:"remark"` //注释:备注
+}
+
+func (receiver GenTable) String() string {
+	return fmt.Sprint("GenTable{","Id:",receiver.Id,"TableName:",receiver.TableName,"TableComment:",receiver.TableComment,"Name:",receiver.Name,"RouterName:",receiver.RouterName,"Remark:",receiver.Remark,"}")
+}
+
+type GenTableColumn struct { 
+	Id int64 `xorm:"id" json:"id"` //注释:id
+	TableId int64 `xorm:"table_id" json:"tableId"` //注释:表格id
+	Sort int64 `xorm:"sort" json:"sort"` //注释:排序
+	ColumnName string `xorm:"column_name" json:"columnName"` //注释:字段名
+	ColumnComment string `xorm:"column_comment" json:"columnComment"` //注释:字段注释
+	ColumnType string `xorm:"column_type" json:"columnType"` //注释:字段类型
+	GoType string `xorm:"go_type" json:"goType"` //注释:go类型
+	GoField string `xorm:"go_field" json:"goField"` //注释:go字段名
+	IsKey string `xorm:"is_key" json:"isKey"` //注释:是否主键
+	IsIncrement string `xorm:"is_increment" json:"isIncrement"` //注释:是否自增
+	IsRequired string `xorm:"is_required" json:"isRequired"` //注释:是否未必填
+	QueryType string `xorm:"query_type" json:"queryType"` //注释:查询方式
+	VueShowType string `xorm:"vue_show_type" json:"vueShowType"` //注释:前端显示类型
+	DictType string `xorm:"dict_type" json:"dictType"` //注释:字典类型
+}
+
+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,"}")
+}
+
+type Goods struct { 
+	Id int64 `xorm:"id" json:"id"` //注释:id
+	TypeId int64 `xorm:"type_id" json:"typeId"` //注释:分类id
+	GoodsName string `xorm:"goods_name" json:"goodsName"` //注释:商品名字
+	IntroductionId int64 `xorm:"introduction_id" json:"introductionId"` //注释:商品介绍id
+	SalesVolume int64 `xorm:"sales_volume" json:"salesVolume"` //注释:近30天销量
+	TagIds string `xorm:"tag_ids" json:"tagIds"` //注释:商品标签
+}
+
+func (receiver Goods) String() string {
+	return fmt.Sprint("Goods{","Id:",receiver.Id,"TypeId:",receiver.TypeId,"GoodsName:",receiver.GoodsName,"IntroductionId:",receiver.IntroductionId,"SalesVolume:",receiver.SalesVolume,"TagIds:",receiver.TagIds,"}")
+}
+
+type GoodsCommodityArea struct { 
+	Id int64 `xorm:"id" json:"id"` //注释:id
+	GoodsId int64 `xorm:"goods_id" json:"goodsId"` //注释:商品id
+	CommodityAreaName string `xorm:"commodity_area_name" json:"commodityAreaName"` //注释:商品属地名称
+	DetailImage string `xorm:"detail_image" json:"detailImage"` //注释:详情图片
+	DetailIntroductionId int64 `xorm:"detail_introduction_id" json:"detailIntroductionId"` //注释:相关文本详情id
+}
+
+func (receiver GoodsCommodityArea) String() string {
+	return fmt.Sprint("GoodsCommodityArea{","Id:",receiver.Id,"GoodsId:",receiver.GoodsId,"CommodityAreaName:",receiver.CommodityAreaName,"DetailImage:",receiver.DetailImage,"DetailIntroductionId:",receiver.DetailIntroductionId,"}")
+}
+
+type GoodsCoupon struct { 
+	Id int64 `xorm:"id" json:"id"` //注释:id
+	CouponName string `xorm:"coupon_name" json:"couponName"` //注释:优惠券名称
+	CouponDesc string `xorm:"coupon_desc" json:"couponDesc"` //注释:优惠券描述
+	CashBackPoint float64 `xorm:"cash_back_point" json:"cashBackPoint"` //注释:满x
+	CashBackPrice float64 `xorm:"cash_back_price" json:"cashBackPrice"` //注释:减x
+	ConditionByTopic string `xorm:"condition_by_topic" json:"conditionByTopic"` //注释:主题可用,id
+	ConditionByType string `xorm:"condition_by_type" json:"conditionByType"` //注释:类型可用,id
+	ConditionByGoods string `xorm:"condition_by_goods" json:"conditionByGoods"` //注释:商品可用,id
+	GrantCount string `xorm:"grant_count" json:"grantCount"` //注释:发放数量
+	Count int64 `xorm:"count" json:"count"` //注释:优惠券余量
+	ReceiveType string `xorm:"receive_type" json:"receiveType"` //注释:领取条件
+	Validity string `xorm:"validity" json:"validity"` //注释:有效性,领取开始计时(ClaimTiming),固定时间(FixedTime)
+	ValidityPeriod time.Time `xorm:"validity_period" json:"validityPeriod"` //注释:有效期
+}
+
+func (receiver GoodsCoupon) String() string {
+	return fmt.Sprint("GoodsCoupon{","Id:",receiver.Id,"CouponName:",receiver.CouponName,"CouponDesc:",receiver.CouponDesc,"CashBackPoint:",receiver.CashBackPoint,"CashBackPrice:",receiver.CashBackPrice,"ConditionByTopic:",receiver.ConditionByTopic,"ConditionByType:",receiver.ConditionByType,"ConditionByGoods:",receiver.ConditionByGoods,"GrantCount:",receiver.GrantCount,"Count:",receiver.Count,"ReceiveType:",receiver.ReceiveType,"Validity:",receiver.Validity,"ValidityPeriod:",receiver.ValidityPeriod,"}")
+}
+
+type GoodsCouponUser struct { 
+	Id int64 `xorm:"id" json:"id"` //注释:id
+	UserId int64 `xorm:"user_id" json:"userId"` //注释:用户id
+	CouponId int64 `xorm:"coupon_id" json:"couponId"` //注释:优惠券id
+	CollectionTime time.Time `xorm:"collection_time" json:"collectionTime"` //注释:领取时间
+	State string `xorm:"state" json:"state"` //注释:状态,已使用2,未使用1,已过期0
+}
+
+func (receiver GoodsCouponUser) String() string {
+	return fmt.Sprint("GoodsCouponUser{","Id:",receiver.Id,"UserId:",receiver.UserId,"CouponId:",receiver.CouponId,"CollectionTime:",receiver.CollectionTime,"State:",receiver.State,"}")
+}
+
+type GoodsIntroduction struct { 
+	Id int64 `xorm:"id" json:"id"` //注释:文章id
+	GoodsArticleName string `xorm:"goods_article_name" json:"goodsArticleName"` //注释:商品文章名
+	GoodsArticle string `xorm:"goods_article" json:"goodsArticle"` //注释:商品文章
+	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 GoodsIntroduction) String() string {
+	return fmt.Sprint("GoodsIntroduction{","Id:",receiver.Id,"GoodsArticleName:",receiver.GoodsArticleName,"GoodsArticle:",receiver.GoodsArticle,"CreateBy:",receiver.CreateBy,"CreateTime:",receiver.CreateTime,"UpdateBy:",receiver.UpdateBy,"UpdateTime:",receiver.UpdateTime,"}")
+}
+
+type GoodsOrder struct { 
+	Id int64 `xorm:"id" json:"id"` //注释:id
+	OrderName string `xorm:"order_name" json:"orderName"` //注释:订单名
+	SkuId int64 `xorm:"sku_id" json:"skuId"` //注释:skuid
+	Count int64 `xorm:"count" json:"count"` //注释:购买数量
+	Price float64 `xorm:"price" json:"price"` //注释:单价
+	TotalPrice float64 `xorm:"total_price" json:"totalPrice"` //注释:总价
+	ContactInformation string `xorm:"contact_information" json:"contactInformation"` //注释:联系方式
+	CouponUserId int64 `xorm:"coupon_user_id" json:"couponUserId"` //注释:使用的优惠券
+	State string `xorm:"state" json:"state"` //注释:支付状态,0待支付,1待发货,2已发货,3订单完成,4订单异常
+	CreateBy int64 `xorm:"create_by" json:"createBy"` //注释:用户id
+	CreateTime time.Time `xorm:"create_time" json:"createTime"` //注释:订单创建时间
+}
+
+func (receiver GoodsOrder) String() string {
+	return fmt.Sprint("GoodsOrder{","Id:",receiver.Id,"OrderName:",receiver.OrderName,"SkuId:",receiver.SkuId,"Count:",receiver.Count,"Price:",receiver.Price,"TotalPrice:",receiver.TotalPrice,"ContactInformation:",receiver.ContactInformation,"CouponUserId:",receiver.CouponUserId,"State:",receiver.State,"CreateBy:",receiver.CreateBy,"CreateTime:",receiver.CreateTime,"}")
+}
+
+type GoodsSku struct { 
+	Id int64 `xorm:"id" json:"id"` //注释:
+	SkuImage string `xorm:"sku_image" json:"skuImage"` //注释:sku图片
+	SkuName string `xorm:"sku_name" json:"skuName"` //注释:商品sku名字
+	Price float64 `xorm:"price" json:"price"` //注释:现在价格
+	HistoricalPrices float64 `xorm:"historical_prices" json:"historicalPrices"` //注释:历史价格
+	InventoryNumber int64 `xorm:"inventory_number" json:"inventoryNumber"` //注释:库存
+	CommodityAreaId int64 `xorm:"commodity_area_id" json:"commodityAreaId"` //注释:属地id
+	GoodsId int64 `xorm:"goods_id" json:"goodsId"` //注释:商品id
+	CreateBy string `xorm:"create_by" json:"createBy"` //注释:创建人
+	CreateTime time.Time `xorm:"create_time" json:"createTime"` //注释:创建时间
+}
+
+func (receiver GoodsSku) String() string {
+	return fmt.Sprint("GoodsSku{","Id:",receiver.Id,"SkuImage:",receiver.SkuImage,"SkuName:",receiver.SkuName,"Price:",receiver.Price,"HistoricalPrices:",receiver.HistoricalPrices,"InventoryNumber:",receiver.InventoryNumber,"CommodityAreaId:",receiver.CommodityAreaId,"GoodsId:",receiver.GoodsId,"CreateBy:",receiver.CreateBy,"CreateTime:",receiver.CreateTime,"}")
+}
+
+type GoodsSkuCard struct { 
+	Id int64 `xorm:"id" json:"id"` //注释:id
+	CardName string `xorm:"card_name" json:"cardName"` //注释:卡种名称
+	State string `xorm:"state" json:"state"` //注释:状态,0未使用,1已用,2过期
+	Count int64 `xorm:"count" json:"count"` //注释:库存
+	TotalCount string `xorm:"total_count" json:"totalCount"` //注释:总数
+	CardKey string `xorm:"card_key" json:"cardKey"` //注释:卡密
+	Use string `xorm:"use" json:"use"` //注释:是否已用
+	UploadTime time.Time `xorm:"upload_time" json:"uploadTime"` //注释:入库时间
+	SkuId int64 `xorm:"sku_id" json:"skuId"` //注释:商品规格绑定
+	Sort string `xorm:"sort" json:"sort"` //注释:排序,出售优先级
+}
+
+func (receiver GoodsSkuCard) String() string {
+	return fmt.Sprint("GoodsSkuCard{","Id:",receiver.Id,"CardName:",receiver.CardName,"State:",receiver.State,"Count:",receiver.Count,"TotalCount:",receiver.TotalCount,"CardKey:",receiver.CardKey,"Use:",receiver.Use,"UploadTime:",receiver.UploadTime,"SkuId:",receiver.SkuId,"Sort:",receiver.Sort,"}")
+}
+
+type GoodsTag struct { 
+	Id int64 `xorm:"id" json:"id"` //注释:id
+	Name string `xorm:"name" json:"name"` //注释:名字
+	IconUrl string `xorm:"icon_url" json:"iconUrl"` //注释:图标路径
+	Tag string `xorm:"tag" json:"tag"` //注释:标签
+}
+
+func (receiver GoodsTag) String() string {
+	return fmt.Sprint("GoodsTag{","Id:",receiver.Id,"Name:",receiver.Name,"IconUrl:",receiver.IconUrl,"Tag:",receiver.Tag,"}")
+}
+
+type GoodsType struct { 
+	Id int64 `xorm:"id" json:"id"` //注释:
+	Sort int64 `xorm:"sort" json:"sort"` //注释:排序
+	TypeImage string `xorm:"type_image" json:"typeImage"` //注释:类型图片
+	TypeName string `xorm:"type_name" json:"typeName"` //注释:商品类别名称
+	CreateTime time.Time `xorm:"create_time" json:"createTime"` //注释:创建时间
+}
+
+func (receiver GoodsType) String() string {
+	return fmt.Sprint("GoodsType{","Id:",receiver.Id,"Sort:",receiver.Sort,"TypeImage:",receiver.TypeImage,"TypeName:",receiver.TypeName,"CreateTime:",receiver.CreateTime,"}")
+}
+
+type User struct { 
+	Id int64 `xorm:"id" json:"id"` //注释:
+	Username string `xorm:"username" json:"username"` //注释:账号
+	Password string `xorm:"password" json:"password"` //注释:密码
+	CreationTime int64 `xorm:"creation_time" json:"creationTime"` //注释:账号创建时间
+	LoginTime int64 `xorm:"login_time" json:"loginTime"` //注释:登录时间
+	Status string `xorm:"status" json:"status"` //注释:账号状态
+	RoleId int64 `xorm:"role_id" json:"roleId"` //注释:角色id
+	Phone string `xorm:"phone" json:"phone"` //注释:手机
+	Email string `xorm:"email" json:"email"` //注释:邮箱
+	Name string `xorm:"name" json:"name"` //注释:用户名
+	Avatar string `xorm:"avatar" json:"avatar"` //注释:头像
+	RecommendCode string `xorm:"recommend_code" json:"recommendCode"` //注释:推荐码
+}
+
+func (receiver User) String() string {
+	return fmt.Sprint("User{","Id:",receiver.Id,"Username:",receiver.Username,"Password:",receiver.Password,"CreationTime:",receiver.CreationTime,"LoginTime:",receiver.LoginTime,"Status:",receiver.Status,"RoleId:",receiver.RoleId,"Phone:",receiver.Phone,"Email:",receiver.Email,"Name:",receiver.Name,"Avatar:",receiver.Avatar,"RecommendCode:",receiver.RecommendCode,"}")
+}
+
+type UserWallet struct { 
+	Id int64 `xorm:"id" json:"id"` //注释:id
+	UserId int64 `xorm:"user_id" json:"userId"` //注释:用户id
+	Balance float64 `xorm:"balance" json:"balance"` //注释:余额
+	PromotionAmount float64 `xorm:"promotion_amount" json:"promotionAmount"` //注释:推广获取总金额
+	RechargeAmount float64 `xorm:"recharge_amount" json:"rechargeAmount"` //注释:充值金额
+}
+
+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"` //注释:排序
+	DictLabel string `xorm:"dict_label" json:"dictLabel"` //注释:字典标签
+	DictValue string `xorm:"dict_value" json:"dictValue"` //注释:字典键值
+	DictType string `xorm:"dict_type" json:"dictType"` //注释:字典类型
+	Status string `xorm:"status" json:"status"` //注释:状态
+	CssStyle string `xorm:"css_style" json:"cssStyle"` //注释:样式
+	IsDefault string `xorm:"is_default" json:"isDefault"` //注释:是否默认
+	Remark string `xorm:"remark" json:"remark"` //注释:备注
+}
+
+func (receiver DictData) String() string {
+	return fmt.Sprint("DictData{","Id:",receiver.Id,"Sort:",receiver.Sort,"DictLabel:",receiver.DictLabel,"DictValue:",receiver.DictValue,"DictType:",receiver.DictType,"Status:",receiver.Status,"CssStyle:",receiver.CssStyle,"IsDefault:",receiver.IsDefault,"Remark:",receiver.Remark,"}")
+}
+
+type DictType struct { 
+	Id int64 `xorm:"id" json:"id"` //注释:
+	DictName string `xorm:"dict_name" json:"dictName"` //注释:字典名称
+	DictType string `xorm:"dict_type" json:"dictType"` //注释:字典类型
+	Status string `xorm:"status" json:"status"` //注释:状态(1正常/0停用)
+	Remark string `xorm:"remark" json:"remark"` //注释:备注
+}
+
+func (receiver DictType) String() string {
+	return fmt.Sprint("DictType{","Id:",receiver.Id,"DictName:",receiver.DictName,"DictType:",receiver.DictType,"Status:",receiver.Status,"Remark:",receiver.Remark,"}")
+}
+
+type ManageUser struct { 
+	Id int64 `xorm:"id" json:"id"` //注释:
+	Name string `xorm:"name" json:"name"` //注释:名称
+	Username string `xorm:"username" json:"username"` //注释:账号
+	Password string `xorm:"password" json:"password"` //注释:密码
+	CreationTime int64 `xorm:"creation_time" json:"creationTime"` //注释:账号创建时间
+	LoginTime int64 `xorm:"login_time" json:"loginTime"` //注释:登录时间
+	Status string `xorm:"status" json:"status"` //注释:账号状态
+	RoleId int64 `xorm:"role_id" json:"roleId"` //注释:角色id
+	Phone string `xorm:"phone" json:"phone"` //注释:手机
+	Email string `xorm:"email" json:"email"` //注释:邮箱
+	Avatar string `xorm:"avatar" json:"avatar"` //注释:头像
+}
+
+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 ShopTopic struct { 
+	Id int64 `xorm:"id" json:"id"` //注释:
+	RoleName string `xorm:"role_name" json:"roleName"` //注释:
+}
+
+func (receiver ShopTopic) String() string {
+	return fmt.Sprint("ShopTopic{","Id:",receiver.Id,"RoleName:",receiver.RoleName,"}")
+}
+
+type ShopAdviceCarousel struct { 
+	AuthorityId int64 `xorm:"authority_id" json:"authorityId"` //注释:
+	RoleId int64 `xorm:"role_id" json:"roleId"` //注释:
+}
+
+func (receiver ShopAdviceCarousel) String() string {
+	return fmt.Sprint("ShopAdviceCarousel{","AuthorityId:",receiver.AuthorityId,"RoleId:",receiver.RoleId,"}")
+}
+
+type ShopTopicSku struct { 
+	Id int64 `xorm:"id" json:"id"` //注释:
+	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"` //注释:显示
+	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 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,"}")
+}

+ 2821 - 0
output/router/Router.go

@@ -0,0 +1,2821 @@
+package router
+
+import (
+	"demo/data/dao/manage"
+	"demo/data/domain"
+	"demo/share"
+	"fmt"
+	"github.com/gin-gonic/gin"
+	"github.com/mitchellh/mapstructure"
+	"github.com/spf13/cast"
+	"strings"
+	"time"
+	"unicode"
+)
+
+func UtilStructToMap(m map[string]interface{}) map[string]interface{} {
+	res := make(map[string]interface{})
+	for s := range m {
+		result := ""
+		for i, r := range s {
+			if unicode.IsUpper(r) && i > 0 {
+				result += "_"
+			}
+			result += strings.ToLower(string(r))
+		}
+		res[result] = m[s]
+	}
+	return res
+}
+
+func DateToString(date time.Time) string {
+	return date.Format("2006-01-02 15:04:05")
+}
+
+
+func BaseArticleRouter(group *gin.RouterGroup) {
+	BaseArticleGroup := group.Group("/back/base")
+	PushRouter(BaseArticleGroup, "GET", "/article", GetBaseArticleById)
+	PushRouter(BaseArticleGroup, "POST", "/article/list", GetBaseArticleList)
+	PushRouter(BaseArticleGroup, "POST", "/article/in", GetBaseArticleListInId)
+	PushRouter(BaseArticleGroup, "POST", "/article", SaveBaseArticle)
+	PushRouter(BaseArticleGroup, "PUT", "/article", UpdateBaseArticle)
+	PushRouter(BaseArticleGroup, "DELETE", "/article", DeleteBaseArticle)
+}
+
+func BaseArticleTagRouter(group *gin.RouterGroup) {
+	BaseArticleGroup := group.Group("/back/base")
+	PushRouter(BaseArticleGroup, "GET", "/articleTag", GetBaseArticleTagById)
+	PushRouter(BaseArticleGroup, "POST", "/articleTag/list", GetBaseArticleTagList)
+	PushRouter(BaseArticleGroup, "POST", "/articleTag/in", GetBaseArticleTagListInId)
+	PushRouter(BaseArticleGroup, "POST", "/articleTag", SaveBaseArticleTag)
+	PushRouter(BaseArticleGroup, "PUT", "/articleTag", UpdateBaseArticleTag)
+	PushRouter(BaseArticleGroup, "DELETE", "/articleTag", DeleteBaseArticleTag)
+}
+
+func BaseArticleTopicRouter(group *gin.RouterGroup) {
+	BaseArticleGroup := group.Group("/back/base")
+	PushRouter(BaseArticleGroup, "GET", "/articleTopic", GetBaseArticleTopicById)
+	PushRouter(BaseArticleGroup, "POST", "/articleTopic/list", GetBaseArticleTopicList)
+	PushRouter(BaseArticleGroup, "POST", "/articleTopic/in", GetBaseArticleTopicListInId)
+	PushRouter(BaseArticleGroup, "POST", "/articleTopic", SaveBaseArticleTopic)
+	PushRouter(BaseArticleGroup, "PUT", "/articleTopic", UpdateBaseArticleTopic)
+	PushRouter(BaseArticleGroup, "DELETE", "/articleTopic", DeleteBaseArticleTopic)
+}
+
+func BaseBackAuthorityRouter(group *gin.RouterGroup) {
+	BaseArticleGroup := group.Group("/back/base")
+	PushRouter(BaseArticleGroup, "GET", "/backAuthority", GetBaseBackAuthorityById)
+	PushRouter(BaseArticleGroup, "POST", "/backAuthority/list", GetBaseBackAuthorityList)
+	PushRouter(BaseArticleGroup, "POST", "/backAuthority/in", GetBaseBackAuthorityListInId)
+	PushRouter(BaseArticleGroup, "POST", "/backAuthority", SaveBaseBackAuthority)
+	PushRouter(BaseArticleGroup, "PUT", "/backAuthority", UpdateBaseBackAuthority)
+	PushRouter(BaseArticleGroup, "DELETE", "/backAuthority", DeleteBaseBackAuthority)
+}
+
+func BaseBackMenuRouter(group *gin.RouterGroup) {
+	BaseArticleGroup := group.Group("/back/base")
+	PushRouter(BaseArticleGroup, "GET", "/backMenu", GetBaseBackMenuById)
+	PushRouter(BaseArticleGroup, "POST", "/backMenu/list", GetBaseBackMenuList)
+	PushRouter(BaseArticleGroup, "POST", "/backMenu/in", GetBaseBackMenuListInId)
+	PushRouter(BaseArticleGroup, "POST", "/backMenu", SaveBaseBackMenu)
+	PushRouter(BaseArticleGroup, "PUT", "/backMenu", UpdateBaseBackMenu)
+	PushRouter(BaseArticleGroup, "DELETE", "/backMenu", DeleteBaseBackMenu)
+}
+
+func BaseBackRoleRouter(group *gin.RouterGroup) {
+	BaseArticleGroup := group.Group("/back/base")
+	PushRouter(BaseArticleGroup, "GET", "/backRole", GetBaseBackRoleById)
+	PushRouter(BaseArticleGroup, "POST", "/backRole/list", GetBaseBackRoleList)
+	PushRouter(BaseArticleGroup, "POST", "/backRole/in", GetBaseBackRoleListInId)
+	PushRouter(BaseArticleGroup, "POST", "/backRole", SaveBaseBackRole)
+	PushRouter(BaseArticleGroup, "PUT", "/backRole", UpdateBaseBackRole)
+	PushRouter(BaseArticleGroup, "DELETE", "/backRole", DeleteBaseBackRole)
+}
+
+func BaseBackRoleAuthorityRouter(group *gin.RouterGroup) {
+	BaseArticleGroup := group.Group("/back/base")
+	PushRouter(BaseArticleGroup, "GET", "/backRoleAuthority", GetBaseBackRoleAuthorityById)
+	PushRouter(BaseArticleGroup, "POST", "/backRoleAuthority/list", GetBaseBackRoleAuthorityList)
+	PushRouter(BaseArticleGroup, "POST", "/backRoleAuthority/in", GetBaseBackRoleAuthorityListInId)
+	PushRouter(BaseArticleGroup, "POST", "/backRoleAuthority", SaveBaseBackRoleAuthority)
+	PushRouter(BaseArticleGroup, "PUT", "/backRoleAuthority", UpdateBaseBackRoleAuthority)
+	PushRouter(BaseArticleGroup, "DELETE", "/backRoleAuthority", DeleteBaseBackRoleAuthority)
+}
+
+func BaseBackRoleMenuRouter(group *gin.RouterGroup) {
+	BaseArticleGroup := group.Group("/back/base")
+	PushRouter(BaseArticleGroup, "GET", "/backRoleMenu", GetBaseBackRoleMenuById)
+	PushRouter(BaseArticleGroup, "POST", "/backRoleMenu/list", GetBaseBackRoleMenuList)
+	PushRouter(BaseArticleGroup, "POST", "/backRoleMenu/in", GetBaseBackRoleMenuListInId)
+	PushRouter(BaseArticleGroup, "POST", "/backRoleMenu", SaveBaseBackRoleMenu)
+	PushRouter(BaseArticleGroup, "PUT", "/backRoleMenu", UpdateBaseBackRoleMenu)
+	PushRouter(BaseArticleGroup, "DELETE", "/backRoleMenu", DeleteBaseBackRoleMenu)
+}
+
+func BaseGenTableRouter(group *gin.RouterGroup) {
+	BaseArticleGroup := group.Group("/back/base")
+	PushRouter(BaseArticleGroup, "GET", "/genTable", GetBaseGenTableById)
+	PushRouter(BaseArticleGroup, "POST", "/genTable/list", GetBaseGenTableList)
+	PushRouter(BaseArticleGroup, "POST", "/genTable/in", GetBaseGenTableListInId)
+	PushRouter(BaseArticleGroup, "POST", "/genTable", SaveBaseGenTable)
+	PushRouter(BaseArticleGroup, "PUT", "/genTable", UpdateBaseGenTable)
+	PushRouter(BaseArticleGroup, "DELETE", "/genTable", DeleteBaseGenTable)
+}
+
+func BaseGenTableColumnRouter(group *gin.RouterGroup) {
+	BaseArticleGroup := group.Group("/back/base")
+	PushRouter(BaseArticleGroup, "GET", "/genTableColumn", GetBaseGenTableColumnById)
+	PushRouter(BaseArticleGroup, "POST", "/genTableColumn/list", GetBaseGenTableColumnList)
+	PushRouter(BaseArticleGroup, "POST", "/genTableColumn/in", GetBaseGenTableColumnListInId)
+	PushRouter(BaseArticleGroup, "POST", "/genTableColumn", SaveBaseGenTableColumn)
+	PushRouter(BaseArticleGroup, "PUT", "/genTableColumn", UpdateBaseGenTableColumn)
+	PushRouter(BaseArticleGroup, "DELETE", "/genTableColumn", DeleteBaseGenTableColumn)
+}
+
+func BaseGoodsRouter(group *gin.RouterGroup) {
+	BaseArticleGroup := group.Group("/back/base")
+	PushRouter(BaseArticleGroup, "GET", "/goods", GetBaseGoodsById)
+	PushRouter(BaseArticleGroup, "POST", "/goods/list", GetBaseGoodsList)
+	PushRouter(BaseArticleGroup, "POST", "/goods/in", GetBaseGoodsListInId)
+	PushRouter(BaseArticleGroup, "POST", "/goods", SaveBaseGoods)
+	PushRouter(BaseArticleGroup, "PUT", "/goods", UpdateBaseGoods)
+	PushRouter(BaseArticleGroup, "DELETE", "/goods", DeleteBaseGoods)
+}
+
+func BaseGoodsCommodityAreaRouter(group *gin.RouterGroup) {
+	BaseArticleGroup := group.Group("/back/base")
+	PushRouter(BaseArticleGroup, "GET", "/goodsCommodityArea", GetBaseGoodsCommodityAreaById)
+	PushRouter(BaseArticleGroup, "POST", "/goodsCommodityArea/list", GetBaseGoodsCommodityAreaList)
+	PushRouter(BaseArticleGroup, "POST", "/goodsCommodityArea/in", GetBaseGoodsCommodityAreaListInId)
+	PushRouter(BaseArticleGroup, "POST", "/goodsCommodityArea", SaveBaseGoodsCommodityArea)
+	PushRouter(BaseArticleGroup, "PUT", "/goodsCommodityArea", UpdateBaseGoodsCommodityArea)
+	PushRouter(BaseArticleGroup, "DELETE", "/goodsCommodityArea", DeleteBaseGoodsCommodityArea)
+}
+
+func BaseGoodsCouponRouter(group *gin.RouterGroup) {
+	BaseArticleGroup := group.Group("/back/base")
+	PushRouter(BaseArticleGroup, "GET", "/goodsCoupon", GetBaseGoodsCouponById)
+	PushRouter(BaseArticleGroup, "POST", "/goodsCoupon/list", GetBaseGoodsCouponList)
+	PushRouter(BaseArticleGroup, "POST", "/goodsCoupon/in", GetBaseGoodsCouponListInId)
+	PushRouter(BaseArticleGroup, "POST", "/goodsCoupon", SaveBaseGoodsCoupon)
+	PushRouter(BaseArticleGroup, "PUT", "/goodsCoupon", UpdateBaseGoodsCoupon)
+	PushRouter(BaseArticleGroup, "DELETE", "/goodsCoupon", DeleteBaseGoodsCoupon)
+}
+
+func BaseGoodsCouponUserRouter(group *gin.RouterGroup) {
+	BaseArticleGroup := group.Group("/back/base")
+	PushRouter(BaseArticleGroup, "GET", "/goodsCouponUser", GetBaseGoodsCouponUserById)
+	PushRouter(BaseArticleGroup, "POST", "/goodsCouponUser/list", GetBaseGoodsCouponUserList)
+	PushRouter(BaseArticleGroup, "POST", "/goodsCouponUser/in", GetBaseGoodsCouponUserListInId)
+	PushRouter(BaseArticleGroup, "POST", "/goodsCouponUser", SaveBaseGoodsCouponUser)
+	PushRouter(BaseArticleGroup, "PUT", "/goodsCouponUser", UpdateBaseGoodsCouponUser)
+	PushRouter(BaseArticleGroup, "DELETE", "/goodsCouponUser", DeleteBaseGoodsCouponUser)
+}
+
+func BaseGoodsIntroductionRouter(group *gin.RouterGroup) {
+	BaseArticleGroup := group.Group("/back/base")
+	PushRouter(BaseArticleGroup, "GET", "/goodsIntroduction", GetBaseGoodsIntroductionById)
+	PushRouter(BaseArticleGroup, "POST", "/goodsIntroduction/list", GetBaseGoodsIntroductionList)
+	PushRouter(BaseArticleGroup, "POST", "/goodsIntroduction/in", GetBaseGoodsIntroductionListInId)
+	PushRouter(BaseArticleGroup, "POST", "/goodsIntroduction", SaveBaseGoodsIntroduction)
+	PushRouter(BaseArticleGroup, "PUT", "/goodsIntroduction", UpdateBaseGoodsIntroduction)
+	PushRouter(BaseArticleGroup, "DELETE", "/goodsIntroduction", DeleteBaseGoodsIntroduction)
+}
+
+func BaseGoodsOrderRouter(group *gin.RouterGroup) {
+	BaseArticleGroup := group.Group("/back/base")
+	PushRouter(BaseArticleGroup, "GET", "/goodsOrder", GetBaseGoodsOrderById)
+	PushRouter(BaseArticleGroup, "POST", "/goodsOrder/list", GetBaseGoodsOrderList)
+	PushRouter(BaseArticleGroup, "POST", "/goodsOrder/in", GetBaseGoodsOrderListInId)
+	PushRouter(BaseArticleGroup, "POST", "/goodsOrder", SaveBaseGoodsOrder)
+	PushRouter(BaseArticleGroup, "PUT", "/goodsOrder", UpdateBaseGoodsOrder)
+	PushRouter(BaseArticleGroup, "DELETE", "/goodsOrder", DeleteBaseGoodsOrder)
+}
+
+func BaseGoodsSkuRouter(group *gin.RouterGroup) {
+	BaseArticleGroup := group.Group("/back/base")
+	PushRouter(BaseArticleGroup, "GET", "/goodsSku", GetBaseGoodsSkuById)
+	PushRouter(BaseArticleGroup, "POST", "/goodsSku/list", GetBaseGoodsSkuList)
+	PushRouter(BaseArticleGroup, "POST", "/goodsSku/in", GetBaseGoodsSkuListInId)
+	PushRouter(BaseArticleGroup, "POST", "/goodsSku", SaveBaseGoodsSku)
+	PushRouter(BaseArticleGroup, "PUT", "/goodsSku", UpdateBaseGoodsSku)
+	PushRouter(BaseArticleGroup, "DELETE", "/goodsSku", DeleteBaseGoodsSku)
+}
+
+func BaseGoodsSkuCardRouter(group *gin.RouterGroup) {
+	BaseArticleGroup := group.Group("/back/base")
+	PushRouter(BaseArticleGroup, "GET", "/goodsSkuCard", GetBaseGoodsSkuCardById)
+	PushRouter(BaseArticleGroup, "POST", "/goodsSkuCard/list", GetBaseGoodsSkuCardList)
+	PushRouter(BaseArticleGroup, "POST", "/goodsSkuCard/in", GetBaseGoodsSkuCardListInId)
+	PushRouter(BaseArticleGroup, "POST", "/goodsSkuCard", SaveBaseGoodsSkuCard)
+	PushRouter(BaseArticleGroup, "PUT", "/goodsSkuCard", UpdateBaseGoodsSkuCard)
+	PushRouter(BaseArticleGroup, "DELETE", "/goodsSkuCard", DeleteBaseGoodsSkuCard)
+}
+
+func BaseGoodsTagRouter(group *gin.RouterGroup) {
+	BaseArticleGroup := group.Group("/back/base")
+	PushRouter(BaseArticleGroup, "GET", "/goodsTag", GetBaseGoodsTagById)
+	PushRouter(BaseArticleGroup, "POST", "/goodsTag/list", GetBaseGoodsTagList)
+	PushRouter(BaseArticleGroup, "POST", "/goodsTag/in", GetBaseGoodsTagListInId)
+	PushRouter(BaseArticleGroup, "POST", "/goodsTag", SaveBaseGoodsTag)
+	PushRouter(BaseArticleGroup, "PUT", "/goodsTag", UpdateBaseGoodsTag)
+	PushRouter(BaseArticleGroup, "DELETE", "/goodsTag", DeleteBaseGoodsTag)
+}
+
+func BaseGoodsTypeRouter(group *gin.RouterGroup) {
+	BaseArticleGroup := group.Group("/back/base")
+	PushRouter(BaseArticleGroup, "GET", "/goodsType", GetBaseGoodsTypeById)
+	PushRouter(BaseArticleGroup, "POST", "/goodsType/list", GetBaseGoodsTypeList)
+	PushRouter(BaseArticleGroup, "POST", "/goodsType/in", GetBaseGoodsTypeListInId)
+	PushRouter(BaseArticleGroup, "POST", "/goodsType", SaveBaseGoodsType)
+	PushRouter(BaseArticleGroup, "PUT", "/goodsType", UpdateBaseGoodsType)
+	PushRouter(BaseArticleGroup, "DELETE", "/goodsType", DeleteBaseGoodsType)
+}
+
+func BaseUserRouter(group *gin.RouterGroup) {
+	BaseArticleGroup := group.Group("/back/base")
+	PushRouter(BaseArticleGroup, "GET", "/user", GetBaseUserById)
+	PushRouter(BaseArticleGroup, "POST", "/user/list", GetBaseUserList)
+	PushRouter(BaseArticleGroup, "POST", "/user/in", GetBaseUserListInId)
+	PushRouter(BaseArticleGroup, "POST", "/user", SaveBaseUser)
+	PushRouter(BaseArticleGroup, "PUT", "/user", UpdateBaseUser)
+	PushRouter(BaseArticleGroup, "DELETE", "/user", DeleteBaseUser)
+}
+
+func BaseUserWalletRouter(group *gin.RouterGroup) {
+	BaseArticleGroup := group.Group("/back/base")
+	PushRouter(BaseArticleGroup, "GET", "/userWallet", GetBaseUserWalletById)
+	PushRouter(BaseArticleGroup, "POST", "/userWallet/list", GetBaseUserWalletList)
+	PushRouter(BaseArticleGroup, "POST", "/userWallet/in", GetBaseUserWalletListInId)
+	PushRouter(BaseArticleGroup, "POST", "/userWallet", SaveBaseUserWallet)
+	PushRouter(BaseArticleGroup, "PUT", "/userWallet", UpdateBaseUserWallet)
+	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)
+	PushRouter(BaseArticleGroup, "POST", "/dictData/list", GetBaseDictDataList)
+	PushRouter(BaseArticleGroup, "POST", "/dictData/in", GetBaseDictDataListInId)
+	PushRouter(BaseArticleGroup, "POST", "/dictData", SaveBaseDictData)
+	PushRouter(BaseArticleGroup, "PUT", "/dictData", UpdateBaseDictData)
+	PushRouter(BaseArticleGroup, "DELETE", "/dictData", DeleteBaseDictData)
+}
+
+func BaseDictTypeRouter(group *gin.RouterGroup) {
+	BaseArticleGroup := group.Group("/back/base")
+	PushRouter(BaseArticleGroup, "GET", "/dictType", GetBaseDictTypeById)
+	PushRouter(BaseArticleGroup, "POST", "/dictType/list", GetBaseDictTypeList)
+	PushRouter(BaseArticleGroup, "POST", "/dictType/in", GetBaseDictTypeListInId)
+	PushRouter(BaseArticleGroup, "POST", "/dictType", SaveBaseDictType)
+	PushRouter(BaseArticleGroup, "PUT", "/dictType", UpdateBaseDictType)
+	PushRouter(BaseArticleGroup, "DELETE", "/dictType", DeleteBaseDictType)
+}
+
+func BaseManageUserRouter(group *gin.RouterGroup) {
+	BaseArticleGroup := group.Group("/back/base")
+	PushRouter(BaseArticleGroup, "GET", "/manageUser", GetBaseManageUserById)
+	PushRouter(BaseArticleGroup, "POST", "/manageUser/list", GetBaseManageUserList)
+	PushRouter(BaseArticleGroup, "POST", "/manageUser/in", GetBaseManageUserListInId)
+	PushRouter(BaseArticleGroup, "POST", "/manageUser", SaveBaseManageUser)
+	PushRouter(BaseArticleGroup, "PUT", "/manageUser", UpdateBaseManageUser)
+	PushRouter(BaseArticleGroup, "DELETE", "/manageUser", DeleteBaseManageUser)
+}
+
+func BaseShopTopicRouter(group *gin.RouterGroup) {
+	BaseArticleGroup := group.Group("/back/base")
+	PushRouter(BaseArticleGroup, "GET", "/shopTopic", GetBaseShopTopicById)
+	PushRouter(BaseArticleGroup, "POST", "/shopTopic/list", GetBaseShopTopicList)
+	PushRouter(BaseArticleGroup, "POST", "/shopTopic/in", GetBaseShopTopicListInId)
+	PushRouter(BaseArticleGroup, "POST", "/shopTopic", SaveBaseShopTopic)
+	PushRouter(BaseArticleGroup, "PUT", "/shopTopic", UpdateBaseShopTopic)
+	PushRouter(BaseArticleGroup, "DELETE", "/shopTopic", DeleteBaseShopTopic)
+}
+
+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 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)
+}
+
+
+
+ 
+//================Article 文章==============================
+func GetBaseArticleById(c *gin.Context) {
+	id := c.Query("id")
+	article, err := manage.GetArticleById(cast.ToInt64(id))
+	if err != nil {
+		c.JSON(200, CreateResultError(500, "用户查询不存在"))
+		return
+	}
+	c.JSON(200, CreateResultData(article))
+	return
+}
+
+func GetBaseArticleList(c *gin.Context) {
+	data := share.GetJsonAnyParam(c)
+	param, _ := data("param")
+	pageNum, _ := data("pageNum")
+	pageSize, _ := data("pageSize")
+	article := domain.Article{}
+	err := mapstructure.Decode(param, &article)
+	if err != nil {
+		c.JSON(200, CreateResultError(500, "json转换错误"))
+		return
+	}
+	list, err := manage.GetArticleList(article, cast.ToInt(pageNum), cast.ToInt(pageSize))
+	if err != nil {
+		c.JSON(200, CreateResultError(500, "查询错误"))
+		return
+	}
+	c.JSON(200, CreateResultData(list))
+}
+
+func GetBaseArticleListInId(c *gin.Context) {
+	data := share.GetJsonAnyParam(c)
+	idsString, _ := data("ids")
+	var ids []int64
+	err := mapstructure.Decode([]byte(cast.ToString(idsString)), &ids)
+	list, err := manage.GetArticleListInId(ids)
+	if err != nil {
+		c.JSON(200, CreateResultError(500, "查询错误"))
+		return
+	}
+	c.JSON(200, CreateResultData(list))
+}
+
+func SaveBaseArticle(c *gin.Context) {
+	data := share.GetJsonAnyParam(c)
+	articleParam, _ := data("article")
+	article := domain.Article{}
+	err := mapstructure.Decode(articleParam, &article)
+	goodsarticle.CreateBy = fmt.Sprint(GetUserIdByToken(c))
+	goodsarticle.CreateTime = time.Now()
+	saveArticle, err := manage.SaveArticle(&article)
+	if err != nil {
+		c.JSON(200, CreateResultError(500, "保存错误"))
+		return
+	}
+	c.JSON(200, CreateResultData(saveArticle))
+}
+
+func UpdateBaseArticle(c *gin.Context) {
+	data := share.GetJsonAnyParam(c)
+	article, _ := data("article")
+	id, _ := data("id")
+	toMap := UtilStructToMap(cast.ToStringMap(article))
+	toMap["create_by"] = nil
+    toMap["create_time"] = nil
+    toMap["update_by"] = fmt.Sprint(GetUserIdByToken(c))
+    toMap["update_time"] = DateToString(time.Now())
+	setArticle, b, err := manage.SetArticle(toMap, cast.ToInt64(id))
+	if err != nil || !b {
+		c.JSON(200, CreateResultError(500, "修改错误"))
+		return
+	}
+	c.JSON(200, CreateResultData(setArticle))
+}
+
+func DeleteBaseArticle(c *gin.Context) {
+	id := c.Query("id")
+	res := manage.DeleteArticle(cast.ToInt64(id))
+	if !res {
+		c.JSON(200, CreateResultError(500, "删除错误"))
+		return
+	}
+	c.JSON(200, CreateResult())
+}
+ 
+//================ArticleTag 文章标签==============================
+func GetBaseArticleTagById(c *gin.Context) {
+	id := c.Query("id")
+	articleTag, err := manage.GetArticleTagById(cast.ToInt64(id))
+	if err != nil {
+		c.JSON(200, CreateResultError(500, "用户查询不存在"))
+		return
+	}
+	c.JSON(200, CreateResultData(articleTag))
+	return
+}
+
+func GetBaseArticleTagList(c *gin.Context) {
+	data := share.GetJsonAnyParam(c)
+	param, _ := data("param")
+	pageNum, _ := data("pageNum")
+	pageSize, _ := data("pageSize")
+	articleTag := domain.ArticleTag{}
+	err := mapstructure.Decode(param, &articleTag)
+	if err != nil {
+		c.JSON(200, CreateResultError(500, "json转换错误"))
+		return
+	}
+	list, err := manage.GetArticleTagList(articleTag, cast.ToInt(pageNum), cast.ToInt(pageSize))
+	if err != nil {
+		c.JSON(200, CreateResultError(500, "查询错误"))
+		return
+	}
+	c.JSON(200, CreateResultData(list))
+}
+
+func GetBaseArticleTagListInId(c *gin.Context) {
+	data := share.GetJsonAnyParam(c)
+	idsString, _ := data("ids")
+	var ids []int64
+	err := mapstructure.Decode([]byte(cast.ToString(idsString)), &ids)
+	list, err := manage.GetArticleTagListInId(ids)
+	if err != nil {
+		c.JSON(200, CreateResultError(500, "查询错误"))
+		return
+	}
+	c.JSON(200, CreateResultData(list))
+}
+
+func SaveBaseArticleTag(c *gin.Context) {
+	data := share.GetJsonAnyParam(c)
+	articleTagParam, _ := data("articleTag")
+	articleTag := domain.ArticleTag{}
+	err := mapstructure.Decode(articleTagParam, &articleTag)
+	
+	
+	saveArticleTag, err := manage.SaveArticleTag(&articleTag)
+	if err != nil {
+		c.JSON(200, CreateResultError(500, "保存错误"))
+		return
+	}
+	c.JSON(200, CreateResultData(saveArticleTag))
+}
+
+func UpdateBaseArticleTag(c *gin.Context) {
+	data := share.GetJsonAnyParam(c)
+	articleTag, _ := data("articleTag")
+	id, _ := data("id")
+	toMap := UtilStructToMap(cast.ToStringMap(articleTag))
+	
+    
+    
+    
+	setArticleTag, b, err := manage.SetArticleTag(toMap, cast.ToInt64(id))
+	if err != nil || !b {
+		c.JSON(200, CreateResultError(500, "修改错误"))
+		return
+	}
+	c.JSON(200, CreateResultData(setArticleTag))
+}
+
+func DeleteBaseArticleTag(c *gin.Context) {
+	id := c.Query("id")
+	res := manage.DeleteArticleTag(cast.ToInt64(id))
+	if !res {
+		c.JSON(200, CreateResultError(500, "删除错误"))
+		return
+	}
+	c.JSON(200, CreateResult())
+}
+ 
+//================ArticleTopic 文章主题==============================
+func GetBaseArticleTopicById(c *gin.Context) {
+	id := c.Query("id")
+	articleTopic, err := manage.GetArticleTopicById(cast.ToInt64(id))
+	if err != nil {
+		c.JSON(200, CreateResultError(500, "用户查询不存在"))
+		return
+	}
+	c.JSON(200, CreateResultData(articleTopic))
+	return
+}
+
+func GetBaseArticleTopicList(c *gin.Context) {
+	data := share.GetJsonAnyParam(c)
+	param, _ := data("param")
+	pageNum, _ := data("pageNum")
+	pageSize, _ := data("pageSize")
+	articleTopic := domain.ArticleTopic{}
+	err := mapstructure.Decode(param, &articleTopic)
+	if err != nil {
+		c.JSON(200, CreateResultError(500, "json转换错误"))
+		return
+	}
+	list, err := manage.GetArticleTopicList(articleTopic, cast.ToInt(pageNum), cast.ToInt(pageSize))
+	if err != nil {
+		c.JSON(200, CreateResultError(500, "查询错误"))
+		return
+	}
+	c.JSON(200, CreateResultData(list))
+}
+
+func GetBaseArticleTopicListInId(c *gin.Context) {
+	data := share.GetJsonAnyParam(c)
+	idsString, _ := data("ids")
+	var ids []int64
+	err := mapstructure.Decode([]byte(cast.ToString(idsString)), &ids)
+	list, err := manage.GetArticleTopicListInId(ids)
+	if err != nil {
+		c.JSON(200, CreateResultError(500, "查询错误"))
+		return
+	}
+	c.JSON(200, CreateResultData(list))
+}
+
+func SaveBaseArticleTopic(c *gin.Context) {
+	data := share.GetJsonAnyParam(c)
+	articleTopicParam, _ := data("articleTopic")
+	articleTopic := domain.ArticleTopic{}
+	err := mapstructure.Decode(articleTopicParam, &articleTopic)
+	
+	
+	saveArticleTopic, err := manage.SaveArticleTopic(&articleTopic)
+	if err != nil {
+		c.JSON(200, CreateResultError(500, "保存错误"))
+		return
+	}
+	c.JSON(200, CreateResultData(saveArticleTopic))
+}
+
+func UpdateBaseArticleTopic(c *gin.Context) {
+	data := share.GetJsonAnyParam(c)
+	articleTopic, _ := data("articleTopic")
+	id, _ := data("id")
+	toMap := UtilStructToMap(cast.ToStringMap(articleTopic))
+	
+    
+    
+    
+	setArticleTopic, b, err := manage.SetArticleTopic(toMap, cast.ToInt64(id))
+	if err != nil || !b {
+		c.JSON(200, CreateResultError(500, "修改错误"))
+		return
+	}
+	c.JSON(200, CreateResultData(setArticleTopic))
+}
+
+func DeleteBaseArticleTopic(c *gin.Context) {
+	id := c.Query("id")
+	res := manage.DeleteArticleTopic(cast.ToInt64(id))
+	if !res {
+		c.JSON(200, CreateResultError(500, "删除错误"))
+		return
+	}
+	c.JSON(200, CreateResult())
+}
+ 
+//================BackAuthority 后台权限校验==============================
+func GetBaseBackAuthorityById(c *gin.Context) {
+	id := c.Query("id")
+	backAuthority, err := manage.GetBackAuthorityById(cast.ToInt64(id))
+	if err != nil {
+		c.JSON(200, CreateResultError(500, "用户查询不存在"))
+		return
+	}
+	c.JSON(200, CreateResultData(backAuthority))
+	return
+}
+
+func GetBaseBackAuthorityList(c *gin.Context) {
+	data := share.GetJsonAnyParam(c)
+	param, _ := data("param")
+	pageNum, _ := data("pageNum")
+	pageSize, _ := data("pageSize")
+	backAuthority := domain.BackAuthority{}
+	err := mapstructure.Decode(param, &backAuthority)
+	if err != nil {
+		c.JSON(200, CreateResultError(500, "json转换错误"))
+		return
+	}
+	list, err := manage.GetBackAuthorityList(backAuthority, cast.ToInt(pageNum), cast.ToInt(pageSize))
+	if err != nil {
+		c.JSON(200, CreateResultError(500, "查询错误"))
+		return
+	}
+	c.JSON(200, CreateResultData(list))
+}
+
+func GetBaseBackAuthorityListInId(c *gin.Context) {
+	data := share.GetJsonAnyParam(c)
+	idsString, _ := data("ids")
+	var ids []int64
+	err := mapstructure.Decode([]byte(cast.ToString(idsString)), &ids)
+	list, err := manage.GetBackAuthorityListInId(ids)
+	if err != nil {
+		c.JSON(200, CreateResultError(500, "查询错误"))
+		return
+	}
+	c.JSON(200, CreateResultData(list))
+}
+
+func SaveBaseBackAuthority(c *gin.Context) {
+	data := share.GetJsonAnyParam(c)
+	backAuthorityParam, _ := data("backAuthority")
+	backAuthority := domain.BackAuthority{}
+	err := mapstructure.Decode(backAuthorityParam, &backAuthority)
+	
+	goodsbackAuthority.CreateTime = time.Now()
+	saveBackAuthority, err := manage.SaveBackAuthority(&backAuthority)
+	if err != nil {
+		c.JSON(200, CreateResultError(500, "保存错误"))
+		return
+	}
+	c.JSON(200, CreateResultData(saveBackAuthority))
+}
+
+func UpdateBaseBackAuthority(c *gin.Context) {
+	data := share.GetJsonAnyParam(c)
+	backAuthority, _ := data("backAuthority")
+	id, _ := data("id")
+	toMap := UtilStructToMap(cast.ToStringMap(backAuthority))
+	
+    toMap["create_time"] = nil
+    
+    
+	setBackAuthority, b, err := manage.SetBackAuthority(toMap, cast.ToInt64(id))
+	if err != nil || !b {
+		c.JSON(200, CreateResultError(500, "修改错误"))
+		return
+	}
+	c.JSON(200, CreateResultData(setBackAuthority))
+}
+
+func DeleteBaseBackAuthority(c *gin.Context) {
+	id := c.Query("id")
+	res := manage.DeleteBackAuthority(cast.ToInt64(id))
+	if !res {
+		c.JSON(200, CreateResultError(500, "删除错误"))
+		return
+	}
+	c.JSON(200, CreateResult())
+}
+ 
+//================BackMenu 后台菜单==============================
+func GetBaseBackMenuById(c *gin.Context) {
+	id := c.Query("id")
+	backMenu, err := manage.GetBackMenuById(cast.ToInt64(id))
+	if err != nil {
+		c.JSON(200, CreateResultError(500, "用户查询不存在"))
+		return
+	}
+	c.JSON(200, CreateResultData(backMenu))
+	return
+}
+
+func GetBaseBackMenuList(c *gin.Context) {
+	data := share.GetJsonAnyParam(c)
+	param, _ := data("param")
+	pageNum, _ := data("pageNum")
+	pageSize, _ := data("pageSize")
+	backMenu := domain.BackMenu{}
+	err := mapstructure.Decode(param, &backMenu)
+	if err != nil {
+		c.JSON(200, CreateResultError(500, "json转换错误"))
+		return
+	}
+	list, err := manage.GetBackMenuList(backMenu, cast.ToInt(pageNum), cast.ToInt(pageSize))
+	if err != nil {
+		c.JSON(200, CreateResultError(500, "查询错误"))
+		return
+	}
+	c.JSON(200, CreateResultData(list))
+}
+
+func GetBaseBackMenuListInId(c *gin.Context) {
+	data := share.GetJsonAnyParam(c)
+	idsString, _ := data("ids")
+	var ids []int64
+	err := mapstructure.Decode([]byte(cast.ToString(idsString)), &ids)
+	list, err := manage.GetBackMenuListInId(ids)
+	if err != nil {
+		c.JSON(200, CreateResultError(500, "查询错误"))
+		return
+	}
+	c.JSON(200, CreateResultData(list))
+}
+
+func SaveBaseBackMenu(c *gin.Context) {
+	data := share.GetJsonAnyParam(c)
+	backMenuParam, _ := data("backMenu")
+	backMenu := domain.BackMenu{}
+	err := mapstructure.Decode(backMenuParam, &backMenu)
+	
+	
+	saveBackMenu, err := manage.SaveBackMenu(&backMenu)
+	if err != nil {
+		c.JSON(200, CreateResultError(500, "保存错误"))
+		return
+	}
+	c.JSON(200, CreateResultData(saveBackMenu))
+}
+
+func UpdateBaseBackMenu(c *gin.Context) {
+	data := share.GetJsonAnyParam(c)
+	backMenu, _ := data("backMenu")
+	id, _ := data("id")
+	toMap := UtilStructToMap(cast.ToStringMap(backMenu))
+	
+    
+    
+    
+	setBackMenu, b, err := manage.SetBackMenu(toMap, cast.ToInt64(id))
+	if err != nil || !b {
+		c.JSON(200, CreateResultError(500, "修改错误"))
+		return
+	}
+	c.JSON(200, CreateResultData(setBackMenu))
+}
+
+func DeleteBaseBackMenu(c *gin.Context) {
+	id := c.Query("id")
+	res := manage.DeleteBackMenu(cast.ToInt64(id))
+	if !res {
+		c.JSON(200, CreateResultError(500, "删除错误"))
+		return
+	}
+	c.JSON(200, CreateResult())
+}
+ 
+//================BackRole 后台角色==============================
+func GetBaseBackRoleById(c *gin.Context) {
+	id := c.Query("id")
+	backRole, err := manage.GetBackRoleById(cast.ToInt64(id))
+	if err != nil {
+		c.JSON(200, CreateResultError(500, "用户查询不存在"))
+		return
+	}
+	c.JSON(200, CreateResultData(backRole))
+	return
+}
+
+func GetBaseBackRoleList(c *gin.Context) {
+	data := share.GetJsonAnyParam(c)
+	param, _ := data("param")
+	pageNum, _ := data("pageNum")
+	pageSize, _ := data("pageSize")
+	backRole := domain.BackRole{}
+	err := mapstructure.Decode(param, &backRole)
+	if err != nil {
+		c.JSON(200, CreateResultError(500, "json转换错误"))
+		return
+	}
+	list, err := manage.GetBackRoleList(backRole, cast.ToInt(pageNum), cast.ToInt(pageSize))
+	if err != nil {
+		c.JSON(200, CreateResultError(500, "查询错误"))
+		return
+	}
+	c.JSON(200, CreateResultData(list))
+}
+
+func GetBaseBackRoleListInId(c *gin.Context) {
+	data := share.GetJsonAnyParam(c)
+	idsString, _ := data("ids")
+	var ids []int64
+	err := mapstructure.Decode([]byte(cast.ToString(idsString)), &ids)
+	list, err := manage.GetBackRoleListInId(ids)
+	if err != nil {
+		c.JSON(200, CreateResultError(500, "查询错误"))
+		return
+	}
+	c.JSON(200, CreateResultData(list))
+}
+
+func SaveBaseBackRole(c *gin.Context) {
+	data := share.GetJsonAnyParam(c)
+	backRoleParam, _ := data("backRole")
+	backRole := domain.BackRole{}
+	err := mapstructure.Decode(backRoleParam, &backRole)
+	
+	
+	saveBackRole, err := manage.SaveBackRole(&backRole)
+	if err != nil {
+		c.JSON(200, CreateResultError(500, "保存错误"))
+		return
+	}
+	c.JSON(200, CreateResultData(saveBackRole))
+}
+
+func UpdateBaseBackRole(c *gin.Context) {
+	data := share.GetJsonAnyParam(c)
+	backRole, _ := data("backRole")
+	id, _ := data("id")
+	toMap := UtilStructToMap(cast.ToStringMap(backRole))
+	
+    
+    
+    
+	setBackRole, b, err := manage.SetBackRole(toMap, cast.ToInt64(id))
+	if err != nil || !b {
+		c.JSON(200, CreateResultError(500, "修改错误"))
+		return
+	}
+	c.JSON(200, CreateResultData(setBackRole))
+}
+
+func DeleteBaseBackRole(c *gin.Context) {
+	id := c.Query("id")
+	res := manage.DeleteBackRole(cast.ToInt64(id))
+	if !res {
+		c.JSON(200, CreateResultError(500, "删除错误"))
+		return
+	}
+	c.JSON(200, CreateResult())
+}
+ 
+//================BackRoleAuthority 后台角色权限表==============================
+func GetBaseBackRoleAuthorityById(c *gin.Context) {
+	id := c.Query("id")
+	backRoleAuthority, err := manage.GetBackRoleAuthorityById(cast.ToInt64(id))
+	if err != nil {
+		c.JSON(200, CreateResultError(500, "用户查询不存在"))
+		return
+	}
+	c.JSON(200, CreateResultData(backRoleAuthority))
+	return
+}
+
+func GetBaseBackRoleAuthorityList(c *gin.Context) {
+	data := share.GetJsonAnyParam(c)
+	param, _ := data("param")
+	pageNum, _ := data("pageNum")
+	pageSize, _ := data("pageSize")
+	backRoleAuthority := domain.BackRoleAuthority{}
+	err := mapstructure.Decode(param, &backRoleAuthority)
+	if err != nil {
+		c.JSON(200, CreateResultError(500, "json转换错误"))
+		return
+	}
+	list, err := manage.GetBackRoleAuthorityList(backRoleAuthority, cast.ToInt(pageNum), cast.ToInt(pageSize))
+	if err != nil {
+		c.JSON(200, CreateResultError(500, "查询错误"))
+		return
+	}
+	c.JSON(200, CreateResultData(list))
+}
+
+func GetBaseBackRoleAuthorityListInId(c *gin.Context) {
+	data := share.GetJsonAnyParam(c)
+	idsString, _ := data("ids")
+	var ids []int64
+	err := mapstructure.Decode([]byte(cast.ToString(idsString)), &ids)
+	list, err := manage.GetBackRoleAuthorityListInId(ids)
+	if err != nil {
+		c.JSON(200, CreateResultError(500, "查询错误"))
+		return
+	}
+	c.JSON(200, CreateResultData(list))
+}
+
+func SaveBaseBackRoleAuthority(c *gin.Context) {
+	data := share.GetJsonAnyParam(c)
+	backRoleAuthorityParam, _ := data("backRoleAuthority")
+	backRoleAuthority := domain.BackRoleAuthority{}
+	err := mapstructure.Decode(backRoleAuthorityParam, &backRoleAuthority)
+	
+	
+	saveBackRoleAuthority, err := manage.SaveBackRoleAuthority(&backRoleAuthority)
+	if err != nil {
+		c.JSON(200, CreateResultError(500, "保存错误"))
+		return
+	}
+	c.JSON(200, CreateResultData(saveBackRoleAuthority))
+}
+
+func UpdateBaseBackRoleAuthority(c *gin.Context) {
+	data := share.GetJsonAnyParam(c)
+	backRoleAuthority, _ := data("backRoleAuthority")
+	id, _ := data("id")
+	toMap := UtilStructToMap(cast.ToStringMap(backRoleAuthority))
+	
+    
+    
+    
+	setBackRoleAuthority, b, err := manage.SetBackRoleAuthority(toMap, cast.ToInt64(id))
+	if err != nil || !b {
+		c.JSON(200, CreateResultError(500, "修改错误"))
+		return
+	}
+	c.JSON(200, CreateResultData(setBackRoleAuthority))
+}
+
+func DeleteBaseBackRoleAuthority(c *gin.Context) {
+	id := c.Query("id")
+	res := manage.DeleteBackRoleAuthority(cast.ToInt64(id))
+	if !res {
+		c.JSON(200, CreateResultError(500, "删除错误"))
+		return
+	}
+	c.JSON(200, CreateResult())
+}
+ 
+//================BackRoleMenu 后台角色菜单表==============================
+func GetBaseBackRoleMenuById(c *gin.Context) {
+	id := c.Query("id")
+	backRoleMenu, err := manage.GetBackRoleMenuById(cast.ToInt64(id))
+	if err != nil {
+		c.JSON(200, CreateResultError(500, "用户查询不存在"))
+		return
+	}
+	c.JSON(200, CreateResultData(backRoleMenu))
+	return
+}
+
+func GetBaseBackRoleMenuList(c *gin.Context) {
+	data := share.GetJsonAnyParam(c)
+	param, _ := data("param")
+	pageNum, _ := data("pageNum")
+	pageSize, _ := data("pageSize")
+	backRoleMenu := domain.BackRoleMenu{}
+	err := mapstructure.Decode(param, &backRoleMenu)
+	if err != nil {
+		c.JSON(200, CreateResultError(500, "json转换错误"))
+		return
+	}
+	list, err := manage.GetBackRoleMenuList(backRoleMenu, cast.ToInt(pageNum), cast.ToInt(pageSize))
+	if err != nil {
+		c.JSON(200, CreateResultError(500, "查询错误"))
+		return
+	}
+	c.JSON(200, CreateResultData(list))
+}
+
+func GetBaseBackRoleMenuListInId(c *gin.Context) {
+	data := share.GetJsonAnyParam(c)
+	idsString, _ := data("ids")
+	var ids []int64
+	err := mapstructure.Decode([]byte(cast.ToString(idsString)), &ids)
+	list, err := manage.GetBackRoleMenuListInId(ids)
+	if err != nil {
+		c.JSON(200, CreateResultError(500, "查询错误"))
+		return
+	}
+	c.JSON(200, CreateResultData(list))
+}
+
+func SaveBaseBackRoleMenu(c *gin.Context) {
+	data := share.GetJsonAnyParam(c)
+	backRoleMenuParam, _ := data("backRoleMenu")
+	backRoleMenu := domain.BackRoleMenu{}
+	err := mapstructure.Decode(backRoleMenuParam, &backRoleMenu)
+	
+	
+	saveBackRoleMenu, err := manage.SaveBackRoleMenu(&backRoleMenu)
+	if err != nil {
+		c.JSON(200, CreateResultError(500, "保存错误"))
+		return
+	}
+	c.JSON(200, CreateResultData(saveBackRoleMenu))
+}
+
+func UpdateBaseBackRoleMenu(c *gin.Context) {
+	data := share.GetJsonAnyParam(c)
+	backRoleMenu, _ := data("backRoleMenu")
+	id, _ := data("id")
+	toMap := UtilStructToMap(cast.ToStringMap(backRoleMenu))
+	
+    
+    
+    
+	setBackRoleMenu, b, err := manage.SetBackRoleMenu(toMap, cast.ToInt64(id))
+	if err != nil || !b {
+		c.JSON(200, CreateResultError(500, "修改错误"))
+		return
+	}
+	c.JSON(200, CreateResultData(setBackRoleMenu))
+}
+
+func DeleteBaseBackRoleMenu(c *gin.Context) {
+	id := c.Query("id")
+	res := manage.DeleteBackRoleMenu(cast.ToInt64(id))
+	if !res {
+		c.JSON(200, CreateResultError(500, "删除错误"))
+		return
+	}
+	c.JSON(200, CreateResult())
+}
+ 
+//================GenTable ==============================
+func GetBaseGenTableById(c *gin.Context) {
+	id := c.Query("id")
+	genTable, err := manage.GetGenTableById(cast.ToInt64(id))
+	if err != nil {
+		c.JSON(200, CreateResultError(500, "用户查询不存在"))
+		return
+	}
+	c.JSON(200, CreateResultData(genTable))
+	return
+}
+
+func GetBaseGenTableList(c *gin.Context) {
+	data := share.GetJsonAnyParam(c)
+	param, _ := data("param")
+	pageNum, _ := data("pageNum")
+	pageSize, _ := data("pageSize")
+	genTable := domain.GenTable{}
+	err := mapstructure.Decode(param, &genTable)
+	if err != nil {
+		c.JSON(200, CreateResultError(500, "json转换错误"))
+		return
+	}
+	list, err := manage.GetGenTableList(genTable, cast.ToInt(pageNum), cast.ToInt(pageSize))
+	if err != nil {
+		c.JSON(200, CreateResultError(500, "查询错误"))
+		return
+	}
+	c.JSON(200, CreateResultData(list))
+}
+
+func GetBaseGenTableListInId(c *gin.Context) {
+	data := share.GetJsonAnyParam(c)
+	idsString, _ := data("ids")
+	var ids []int64
+	err := mapstructure.Decode([]byte(cast.ToString(idsString)), &ids)
+	list, err := manage.GetGenTableListInId(ids)
+	if err != nil {
+		c.JSON(200, CreateResultError(500, "查询错误"))
+		return
+	}
+	c.JSON(200, CreateResultData(list))
+}
+
+func SaveBaseGenTable(c *gin.Context) {
+	data := share.GetJsonAnyParam(c)
+	genTableParam, _ := data("genTable")
+	genTable := domain.GenTable{}
+	err := mapstructure.Decode(genTableParam, &genTable)
+	
+	
+	saveGenTable, err := manage.SaveGenTable(&genTable)
+	if err != nil {
+		c.JSON(200, CreateResultError(500, "保存错误"))
+		return
+	}
+	c.JSON(200, CreateResultData(saveGenTable))
+}
+
+func UpdateBaseGenTable(c *gin.Context) {
+	data := share.GetJsonAnyParam(c)
+	genTable, _ := data("genTable")
+	id, _ := data("id")
+	toMap := UtilStructToMap(cast.ToStringMap(genTable))
+	
+    
+    
+    
+	setGenTable, b, err := manage.SetGenTable(toMap, cast.ToInt64(id))
+	if err != nil || !b {
+		c.JSON(200, CreateResultError(500, "修改错误"))
+		return
+	}
+	c.JSON(200, CreateResultData(setGenTable))
+}
+
+func DeleteBaseGenTable(c *gin.Context) {
+	id := c.Query("id")
+	res := manage.DeleteGenTable(cast.ToInt64(id))
+	if !res {
+		c.JSON(200, CreateResultError(500, "删除错误"))
+		return
+	}
+	c.JSON(200, CreateResult())
+}
+ 
+//================GenTableColumn ==============================
+func GetBaseGenTableColumnById(c *gin.Context) {
+	id := c.Query("id")
+	genTableColumn, err := manage.GetGenTableColumnById(cast.ToInt64(id))
+	if err != nil {
+		c.JSON(200, CreateResultError(500, "用户查询不存在"))
+		return
+	}
+	c.JSON(200, CreateResultData(genTableColumn))
+	return
+}
+
+func GetBaseGenTableColumnList(c *gin.Context) {
+	data := share.GetJsonAnyParam(c)
+	param, _ := data("param")
+	pageNum, _ := data("pageNum")
+	pageSize, _ := data("pageSize")
+	genTableColumn := domain.GenTableColumn{}
+	err := mapstructure.Decode(param, &genTableColumn)
+	if err != nil {
+		c.JSON(200, CreateResultError(500, "json转换错误"))
+		return
+	}
+	list, err := manage.GetGenTableColumnList(genTableColumn, cast.ToInt(pageNum), cast.ToInt(pageSize))
+	if err != nil {
+		c.JSON(200, CreateResultError(500, "查询错误"))
+		return
+	}
+	c.JSON(200, CreateResultData(list))
+}
+
+func GetBaseGenTableColumnListInId(c *gin.Context) {
+	data := share.GetJsonAnyParam(c)
+	idsString, _ := data("ids")
+	var ids []int64
+	err := mapstructure.Decode([]byte(cast.ToString(idsString)), &ids)
+	list, err := manage.GetGenTableColumnListInId(ids)
+	if err != nil {
+		c.JSON(200, CreateResultError(500, "查询错误"))
+		return
+	}
+	c.JSON(200, CreateResultData(list))
+}
+
+func SaveBaseGenTableColumn(c *gin.Context) {
+	data := share.GetJsonAnyParam(c)
+	genTableColumnParam, _ := data("genTableColumn")
+	genTableColumn := domain.GenTableColumn{}
+	err := mapstructure.Decode(genTableColumnParam, &genTableColumn)
+	
+	
+	saveGenTableColumn, err := manage.SaveGenTableColumn(&genTableColumn)
+	if err != nil {
+		c.JSON(200, CreateResultError(500, "保存错误"))
+		return
+	}
+	c.JSON(200, CreateResultData(saveGenTableColumn))
+}
+
+func UpdateBaseGenTableColumn(c *gin.Context) {
+	data := share.GetJsonAnyParam(c)
+	genTableColumn, _ := data("genTableColumn")
+	id, _ := data("id")
+	toMap := UtilStructToMap(cast.ToStringMap(genTableColumn))
+	
+    
+    
+    
+	setGenTableColumn, b, err := manage.SetGenTableColumn(toMap, cast.ToInt64(id))
+	if err != nil || !b {
+		c.JSON(200, CreateResultError(500, "修改错误"))
+		return
+	}
+	c.JSON(200, CreateResultData(setGenTableColumn))
+}
+
+func DeleteBaseGenTableColumn(c *gin.Context) {
+	id := c.Query("id")
+	res := manage.DeleteGenTableColumn(cast.ToInt64(id))
+	if !res {
+		c.JSON(200, CreateResultError(500, "删除错误"))
+		return
+	}
+	c.JSON(200, CreateResult())
+}
+ 
+//================Goods 商品表==============================
+func GetBaseGoodsById(c *gin.Context) {
+	id := c.Query("id")
+	goods, err := manage.GetGoodsById(cast.ToInt64(id))
+	if err != nil {
+		c.JSON(200, CreateResultError(500, "用户查询不存在"))
+		return
+	}
+	c.JSON(200, CreateResultData(goods))
+	return
+}
+
+func GetBaseGoodsList(c *gin.Context) {
+	data := share.GetJsonAnyParam(c)
+	param, _ := data("param")
+	pageNum, _ := data("pageNum")
+	pageSize, _ := data("pageSize")
+	goods := domain.Goods{}
+	err := mapstructure.Decode(param, &goods)
+	if err != nil {
+		c.JSON(200, CreateResultError(500, "json转换错误"))
+		return
+	}
+	list, err := manage.GetGoodsList(goods, cast.ToInt(pageNum), cast.ToInt(pageSize))
+	if err != nil {
+		c.JSON(200, CreateResultError(500, "查询错误"))
+		return
+	}
+	c.JSON(200, CreateResultData(list))
+}
+
+func GetBaseGoodsListInId(c *gin.Context) {
+	data := share.GetJsonAnyParam(c)
+	idsString, _ := data("ids")
+	var ids []int64
+	err := mapstructure.Decode([]byte(cast.ToString(idsString)), &ids)
+	list, err := manage.GetGoodsListInId(ids)
+	if err != nil {
+		c.JSON(200, CreateResultError(500, "查询错误"))
+		return
+	}
+	c.JSON(200, CreateResultData(list))
+}
+
+func SaveBaseGoods(c *gin.Context) {
+	data := share.GetJsonAnyParam(c)
+	goodsParam, _ := data("goods")
+	goods := domain.Goods{}
+	err := mapstructure.Decode(goodsParam, &goods)
+	
+	
+	saveGoods, err := manage.SaveGoods(&goods)
+	if err != nil {
+		c.JSON(200, CreateResultError(500, "保存错误"))
+		return
+	}
+	c.JSON(200, CreateResultData(saveGoods))
+}
+
+func UpdateBaseGoods(c *gin.Context) {
+	data := share.GetJsonAnyParam(c)
+	goods, _ := data("goods")
+	id, _ := data("id")
+	toMap := UtilStructToMap(cast.ToStringMap(goods))
+	
+    
+    
+    
+	setGoods, b, err := manage.SetGoods(toMap, cast.ToInt64(id))
+	if err != nil || !b {
+		c.JSON(200, CreateResultError(500, "修改错误"))
+		return
+	}
+	c.JSON(200, CreateResultData(setGoods))
+}
+
+func DeleteBaseGoods(c *gin.Context) {
+	id := c.Query("id")
+	res := manage.DeleteGoods(cast.ToInt64(id))
+	if !res {
+		c.JSON(200, CreateResultError(500, "删除错误"))
+		return
+	}
+	c.JSON(200, CreateResult())
+}
+ 
+//================GoodsCommodityArea 商品属性==============================
+func GetBaseGoodsCommodityAreaById(c *gin.Context) {
+	id := c.Query("id")
+	goodsCommodityArea, err := manage.GetGoodsCommodityAreaById(cast.ToInt64(id))
+	if err != nil {
+		c.JSON(200, CreateResultError(500, "用户查询不存在"))
+		return
+	}
+	c.JSON(200, CreateResultData(goodsCommodityArea))
+	return
+}
+
+func GetBaseGoodsCommodityAreaList(c *gin.Context) {
+	data := share.GetJsonAnyParam(c)
+	param, _ := data("param")
+	pageNum, _ := data("pageNum")
+	pageSize, _ := data("pageSize")
+	goodsCommodityArea := domain.GoodsCommodityArea{}
+	err := mapstructure.Decode(param, &goodsCommodityArea)
+	if err != nil {
+		c.JSON(200, CreateResultError(500, "json转换错误"))
+		return
+	}
+	list, err := manage.GetGoodsCommodityAreaList(goodsCommodityArea, cast.ToInt(pageNum), cast.ToInt(pageSize))
+	if err != nil {
+		c.JSON(200, CreateResultError(500, "查询错误"))
+		return
+	}
+	c.JSON(200, CreateResultData(list))
+}
+
+func GetBaseGoodsCommodityAreaListInId(c *gin.Context) {
+	data := share.GetJsonAnyParam(c)
+	idsString, _ := data("ids")
+	var ids []int64
+	err := mapstructure.Decode([]byte(cast.ToString(idsString)), &ids)
+	list, err := manage.GetGoodsCommodityAreaListInId(ids)
+	if err != nil {
+		c.JSON(200, CreateResultError(500, "查询错误"))
+		return
+	}
+	c.JSON(200, CreateResultData(list))
+}
+
+func SaveBaseGoodsCommodityArea(c *gin.Context) {
+	data := share.GetJsonAnyParam(c)
+	goodsCommodityAreaParam, _ := data("goodsCommodityArea")
+	goodsCommodityArea := domain.GoodsCommodityArea{}
+	err := mapstructure.Decode(goodsCommodityAreaParam, &goodsCommodityArea)
+	
+	
+	saveGoodsCommodityArea, err := manage.SaveGoodsCommodityArea(&goodsCommodityArea)
+	if err != nil {
+		c.JSON(200, CreateResultError(500, "保存错误"))
+		return
+	}
+	c.JSON(200, CreateResultData(saveGoodsCommodityArea))
+}
+
+func UpdateBaseGoodsCommodityArea(c *gin.Context) {
+	data := share.GetJsonAnyParam(c)
+	goodsCommodityArea, _ := data("goodsCommodityArea")
+	id, _ := data("id")
+	toMap := UtilStructToMap(cast.ToStringMap(goodsCommodityArea))
+	
+    
+    
+    
+	setGoodsCommodityArea, b, err := manage.SetGoodsCommodityArea(toMap, cast.ToInt64(id))
+	if err != nil || !b {
+		c.JSON(200, CreateResultError(500, "修改错误"))
+		return
+	}
+	c.JSON(200, CreateResultData(setGoodsCommodityArea))
+}
+
+func DeleteBaseGoodsCommodityArea(c *gin.Context) {
+	id := c.Query("id")
+	res := manage.DeleteGoodsCommodityArea(cast.ToInt64(id))
+	if !res {
+		c.JSON(200, CreateResultError(500, "删除错误"))
+		return
+	}
+	c.JSON(200, CreateResult())
+}
+ 
+//================GoodsCoupon 优惠券==============================
+func GetBaseGoodsCouponById(c *gin.Context) {
+	id := c.Query("id")
+	goodsCoupon, err := manage.GetGoodsCouponById(cast.ToInt64(id))
+	if err != nil {
+		c.JSON(200, CreateResultError(500, "用户查询不存在"))
+		return
+	}
+	c.JSON(200, CreateResultData(goodsCoupon))
+	return
+}
+
+func GetBaseGoodsCouponList(c *gin.Context) {
+	data := share.GetJsonAnyParam(c)
+	param, _ := data("param")
+	pageNum, _ := data("pageNum")
+	pageSize, _ := data("pageSize")
+	goodsCoupon := domain.GoodsCoupon{}
+	err := mapstructure.Decode(param, &goodsCoupon)
+	if err != nil {
+		c.JSON(200, CreateResultError(500, "json转换错误"))
+		return
+	}
+	list, err := manage.GetGoodsCouponList(goodsCoupon, cast.ToInt(pageNum), cast.ToInt(pageSize))
+	if err != nil {
+		c.JSON(200, CreateResultError(500, "查询错误"))
+		return
+	}
+	c.JSON(200, CreateResultData(list))
+}
+
+func GetBaseGoodsCouponListInId(c *gin.Context) {
+	data := share.GetJsonAnyParam(c)
+	idsString, _ := data("ids")
+	var ids []int64
+	err := mapstructure.Decode([]byte(cast.ToString(idsString)), &ids)
+	list, err := manage.GetGoodsCouponListInId(ids)
+	if err != nil {
+		c.JSON(200, CreateResultError(500, "查询错误"))
+		return
+	}
+	c.JSON(200, CreateResultData(list))
+}
+
+func SaveBaseGoodsCoupon(c *gin.Context) {
+	data := share.GetJsonAnyParam(c)
+	goodsCouponParam, _ := data("goodsCoupon")
+	goodsCoupon := domain.GoodsCoupon{}
+	err := mapstructure.Decode(goodsCouponParam, &goodsCoupon)
+	
+	
+	saveGoodsCoupon, err := manage.SaveGoodsCoupon(&goodsCoupon)
+	if err != nil {
+		c.JSON(200, CreateResultError(500, "保存错误"))
+		return
+	}
+	c.JSON(200, CreateResultData(saveGoodsCoupon))
+}
+
+func UpdateBaseGoodsCoupon(c *gin.Context) {
+	data := share.GetJsonAnyParam(c)
+	goodsCoupon, _ := data("goodsCoupon")
+	id, _ := data("id")
+	toMap := UtilStructToMap(cast.ToStringMap(goodsCoupon))
+	
+    
+    
+    
+	setGoodsCoupon, b, err := manage.SetGoodsCoupon(toMap, cast.ToInt64(id))
+	if err != nil || !b {
+		c.JSON(200, CreateResultError(500, "修改错误"))
+		return
+	}
+	c.JSON(200, CreateResultData(setGoodsCoupon))
+}
+
+func DeleteBaseGoodsCoupon(c *gin.Context) {
+	id := c.Query("id")
+	res := manage.DeleteGoodsCoupon(cast.ToInt64(id))
+	if !res {
+		c.JSON(200, CreateResultError(500, "删除错误"))
+		return
+	}
+	c.JSON(200, CreateResult())
+}
+ 
+//================GoodsCouponUser 优惠券领取==============================
+func GetBaseGoodsCouponUserById(c *gin.Context) {
+	id := c.Query("id")
+	goodsCouponUser, err := manage.GetGoodsCouponUserById(cast.ToInt64(id))
+	if err != nil {
+		c.JSON(200, CreateResultError(500, "用户查询不存在"))
+		return
+	}
+	c.JSON(200, CreateResultData(goodsCouponUser))
+	return
+}
+
+func GetBaseGoodsCouponUserList(c *gin.Context) {
+	data := share.GetJsonAnyParam(c)
+	param, _ := data("param")
+	pageNum, _ := data("pageNum")
+	pageSize, _ := data("pageSize")
+	goodsCouponUser := domain.GoodsCouponUser{}
+	err := mapstructure.Decode(param, &goodsCouponUser)
+	if err != nil {
+		c.JSON(200, CreateResultError(500, "json转换错误"))
+		return
+	}
+	list, err := manage.GetGoodsCouponUserList(goodsCouponUser, cast.ToInt(pageNum), cast.ToInt(pageSize))
+	if err != nil {
+		c.JSON(200, CreateResultError(500, "查询错误"))
+		return
+	}
+	c.JSON(200, CreateResultData(list))
+}
+
+func GetBaseGoodsCouponUserListInId(c *gin.Context) {
+	data := share.GetJsonAnyParam(c)
+	idsString, _ := data("ids")
+	var ids []int64
+	err := mapstructure.Decode([]byte(cast.ToString(idsString)), &ids)
+	list, err := manage.GetGoodsCouponUserListInId(ids)
+	if err != nil {
+		c.JSON(200, CreateResultError(500, "查询错误"))
+		return
+	}
+	c.JSON(200, CreateResultData(list))
+}
+
+func SaveBaseGoodsCouponUser(c *gin.Context) {
+	data := share.GetJsonAnyParam(c)
+	goodsCouponUserParam, _ := data("goodsCouponUser")
+	goodsCouponUser := domain.GoodsCouponUser{}
+	err := mapstructure.Decode(goodsCouponUserParam, &goodsCouponUser)
+	
+	
+	saveGoodsCouponUser, err := manage.SaveGoodsCouponUser(&goodsCouponUser)
+	if err != nil {
+		c.JSON(200, CreateResultError(500, "保存错误"))
+		return
+	}
+	c.JSON(200, CreateResultData(saveGoodsCouponUser))
+}
+
+func UpdateBaseGoodsCouponUser(c *gin.Context) {
+	data := share.GetJsonAnyParam(c)
+	goodsCouponUser, _ := data("goodsCouponUser")
+	id, _ := data("id")
+	toMap := UtilStructToMap(cast.ToStringMap(goodsCouponUser))
+	
+    
+    
+    
+	setGoodsCouponUser, b, err := manage.SetGoodsCouponUser(toMap, cast.ToInt64(id))
+	if err != nil || !b {
+		c.JSON(200, CreateResultError(500, "修改错误"))
+		return
+	}
+	c.JSON(200, CreateResultData(setGoodsCouponUser))
+}
+
+func DeleteBaseGoodsCouponUser(c *gin.Context) {
+	id := c.Query("id")
+	res := manage.DeleteGoodsCouponUser(cast.ToInt64(id))
+	if !res {
+		c.JSON(200, CreateResultError(500, "删除错误"))
+		return
+	}
+	c.JSON(200, CreateResult())
+}
+ 
+//================GoodsIntroduction 商品介绍==============================
+func GetBaseGoodsIntroductionById(c *gin.Context) {
+	id := c.Query("id")
+	goodsIntroduction, err := manage.GetGoodsIntroductionById(cast.ToInt64(id))
+	if err != nil {
+		c.JSON(200, CreateResultError(500, "用户查询不存在"))
+		return
+	}
+	c.JSON(200, CreateResultData(goodsIntroduction))
+	return
+}
+
+func GetBaseGoodsIntroductionList(c *gin.Context) {
+	data := share.GetJsonAnyParam(c)
+	param, _ := data("param")
+	pageNum, _ := data("pageNum")
+	pageSize, _ := data("pageSize")
+	goodsIntroduction := domain.GoodsIntroduction{}
+	err := mapstructure.Decode(param, &goodsIntroduction)
+	if err != nil {
+		c.JSON(200, CreateResultError(500, "json转换错误"))
+		return
+	}
+	list, err := manage.GetGoodsIntroductionList(goodsIntroduction, cast.ToInt(pageNum), cast.ToInt(pageSize))
+	if err != nil {
+		c.JSON(200, CreateResultError(500, "查询错误"))
+		return
+	}
+	c.JSON(200, CreateResultData(list))
+}
+
+func GetBaseGoodsIntroductionListInId(c *gin.Context) {
+	data := share.GetJsonAnyParam(c)
+	idsString, _ := data("ids")
+	var ids []int64
+	err := mapstructure.Decode([]byte(cast.ToString(idsString)), &ids)
+	list, err := manage.GetGoodsIntroductionListInId(ids)
+	if err != nil {
+		c.JSON(200, CreateResultError(500, "查询错误"))
+		return
+	}
+	c.JSON(200, CreateResultData(list))
+}
+
+func SaveBaseGoodsIntroduction(c *gin.Context) {
+	data := share.GetJsonAnyParam(c)
+	goodsIntroductionParam, _ := data("goodsIntroduction")
+	goodsIntroduction := domain.GoodsIntroduction{}
+	err := mapstructure.Decode(goodsIntroductionParam, &goodsIntroduction)
+	goodsgoodsIntroduction.CreateBy = fmt.Sprint(GetUserIdByToken(c))
+	goodsgoodsIntroduction.CreateTime = time.Now()
+	saveGoodsIntroduction, err := manage.SaveGoodsIntroduction(&goodsIntroduction)
+	if err != nil {
+		c.JSON(200, CreateResultError(500, "保存错误"))
+		return
+	}
+	c.JSON(200, CreateResultData(saveGoodsIntroduction))
+}
+
+func UpdateBaseGoodsIntroduction(c *gin.Context) {
+	data := share.GetJsonAnyParam(c)
+	goodsIntroduction, _ := data("goodsIntroduction")
+	id, _ := data("id")
+	toMap := UtilStructToMap(cast.ToStringMap(goodsIntroduction))
+	toMap["create_by"] = nil
+    toMap["create_time"] = nil
+    toMap["update_by"] = fmt.Sprint(GetUserIdByToken(c))
+    toMap["update_time"] = DateToString(time.Now())
+	setGoodsIntroduction, b, err := manage.SetGoodsIntroduction(toMap, cast.ToInt64(id))
+	if err != nil || !b {
+		c.JSON(200, CreateResultError(500, "修改错误"))
+		return
+	}
+	c.JSON(200, CreateResultData(setGoodsIntroduction))
+}
+
+func DeleteBaseGoodsIntroduction(c *gin.Context) {
+	id := c.Query("id")
+	res := manage.DeleteGoodsIntroduction(cast.ToInt64(id))
+	if !res {
+		c.JSON(200, CreateResultError(500, "删除错误"))
+		return
+	}
+	c.JSON(200, CreateResult())
+}
+ 
+//================GoodsOrder 商品订单==============================
+func GetBaseGoodsOrderById(c *gin.Context) {
+	id := c.Query("id")
+	goodsOrder, err := manage.GetGoodsOrderById(cast.ToInt64(id))
+	if err != nil {
+		c.JSON(200, CreateResultError(500, "用户查询不存在"))
+		return
+	}
+	c.JSON(200, CreateResultData(goodsOrder))
+	return
+}
+
+func GetBaseGoodsOrderList(c *gin.Context) {
+	data := share.GetJsonAnyParam(c)
+	param, _ := data("param")
+	pageNum, _ := data("pageNum")
+	pageSize, _ := data("pageSize")
+	goodsOrder := domain.GoodsOrder{}
+	err := mapstructure.Decode(param, &goodsOrder)
+	if err != nil {
+		c.JSON(200, CreateResultError(500, "json转换错误"))
+		return
+	}
+	list, err := manage.GetGoodsOrderList(goodsOrder, cast.ToInt(pageNum), cast.ToInt(pageSize))
+	if err != nil {
+		c.JSON(200, CreateResultError(500, "查询错误"))
+		return
+	}
+	c.JSON(200, CreateResultData(list))
+}
+
+func GetBaseGoodsOrderListInId(c *gin.Context) {
+	data := share.GetJsonAnyParam(c)
+	idsString, _ := data("ids")
+	var ids []int64
+	err := mapstructure.Decode([]byte(cast.ToString(idsString)), &ids)
+	list, err := manage.GetGoodsOrderListInId(ids)
+	if err != nil {
+		c.JSON(200, CreateResultError(500, "查询错误"))
+		return
+	}
+	c.JSON(200, CreateResultData(list))
+}
+
+func SaveBaseGoodsOrder(c *gin.Context) {
+	data := share.GetJsonAnyParam(c)
+	goodsOrderParam, _ := data("goodsOrder")
+	goodsOrder := domain.GoodsOrder{}
+	err := mapstructure.Decode(goodsOrderParam, &goodsOrder)
+	goodsgoodsOrder.CreateBy = fmt.Sprint(GetUserIdByToken(c))
+	goodsgoodsOrder.CreateTime = time.Now()
+	saveGoodsOrder, err := manage.SaveGoodsOrder(&goodsOrder)
+	if err != nil {
+		c.JSON(200, CreateResultError(500, "保存错误"))
+		return
+	}
+	c.JSON(200, CreateResultData(saveGoodsOrder))
+}
+
+func UpdateBaseGoodsOrder(c *gin.Context) {
+	data := share.GetJsonAnyParam(c)
+	goodsOrder, _ := data("goodsOrder")
+	id, _ := data("id")
+	toMap := UtilStructToMap(cast.ToStringMap(goodsOrder))
+	toMap["create_by"] = nil
+    toMap["create_time"] = nil
+    
+    
+	setGoodsOrder, b, err := manage.SetGoodsOrder(toMap, cast.ToInt64(id))
+	if err != nil || !b {
+		c.JSON(200, CreateResultError(500, "修改错误"))
+		return
+	}
+	c.JSON(200, CreateResultData(setGoodsOrder))
+}
+
+func DeleteBaseGoodsOrder(c *gin.Context) {
+	id := c.Query("id")
+	res := manage.DeleteGoodsOrder(cast.ToInt64(id))
+	if !res {
+		c.JSON(200, CreateResultError(500, "删除错误"))
+		return
+	}
+	c.JSON(200, CreateResult())
+}
+ 
+//================GoodsSku 商品规格==============================
+func GetBaseGoodsSkuById(c *gin.Context) {
+	id := c.Query("id")
+	goodsSku, err := manage.GetGoodsSkuById(cast.ToInt64(id))
+	if err != nil {
+		c.JSON(200, CreateResultError(500, "用户查询不存在"))
+		return
+	}
+	c.JSON(200, CreateResultData(goodsSku))
+	return
+}
+
+func GetBaseGoodsSkuList(c *gin.Context) {
+	data := share.GetJsonAnyParam(c)
+	param, _ := data("param")
+	pageNum, _ := data("pageNum")
+	pageSize, _ := data("pageSize")
+	goodsSku := domain.GoodsSku{}
+	err := mapstructure.Decode(param, &goodsSku)
+	if err != nil {
+		c.JSON(200, CreateResultError(500, "json转换错误"))
+		return
+	}
+	list, err := manage.GetGoodsSkuList(goodsSku, cast.ToInt(pageNum), cast.ToInt(pageSize))
+	if err != nil {
+		c.JSON(200, CreateResultError(500, "查询错误"))
+		return
+	}
+	c.JSON(200, CreateResultData(list))
+}
+
+func GetBaseGoodsSkuListInId(c *gin.Context) {
+	data := share.GetJsonAnyParam(c)
+	idsString, _ := data("ids")
+	var ids []int64
+	err := mapstructure.Decode([]byte(cast.ToString(idsString)), &ids)
+	list, err := manage.GetGoodsSkuListInId(ids)
+	if err != nil {
+		c.JSON(200, CreateResultError(500, "查询错误"))
+		return
+	}
+	c.JSON(200, CreateResultData(list))
+}
+
+func SaveBaseGoodsSku(c *gin.Context) {
+	data := share.GetJsonAnyParam(c)
+	goodsSkuParam, _ := data("goodsSku")
+	goodsSku := domain.GoodsSku{}
+	err := mapstructure.Decode(goodsSkuParam, &goodsSku)
+	goodsgoodsSku.CreateBy = fmt.Sprint(GetUserIdByToken(c))
+	goodsgoodsSku.CreateTime = time.Now()
+	saveGoodsSku, err := manage.SaveGoodsSku(&goodsSku)
+	if err != nil {
+		c.JSON(200, CreateResultError(500, "保存错误"))
+		return
+	}
+	c.JSON(200, CreateResultData(saveGoodsSku))
+}
+
+func UpdateBaseGoodsSku(c *gin.Context) {
+	data := share.GetJsonAnyParam(c)
+	goodsSku, _ := data("goodsSku")
+	id, _ := data("id")
+	toMap := UtilStructToMap(cast.ToStringMap(goodsSku))
+	toMap["create_by"] = nil
+    toMap["create_time"] = nil
+    
+    
+	setGoodsSku, b, err := manage.SetGoodsSku(toMap, cast.ToInt64(id))
+	if err != nil || !b {
+		c.JSON(200, CreateResultError(500, "修改错误"))
+		return
+	}
+	c.JSON(200, CreateResultData(setGoodsSku))
+}
+
+func DeleteBaseGoodsSku(c *gin.Context) {
+	id := c.Query("id")
+	res := manage.DeleteGoodsSku(cast.ToInt64(id))
+	if !res {
+		c.JSON(200, CreateResultError(500, "删除错误"))
+		return
+	}
+	c.JSON(200, CreateResult())
+}
+ 
+//================GoodsSkuCard 商品卡号==============================
+func GetBaseGoodsSkuCardById(c *gin.Context) {
+	id := c.Query("id")
+	goodsSkuCard, err := manage.GetGoodsSkuCardById(cast.ToInt64(id))
+	if err != nil {
+		c.JSON(200, CreateResultError(500, "用户查询不存在"))
+		return
+	}
+	c.JSON(200, CreateResultData(goodsSkuCard))
+	return
+}
+
+func GetBaseGoodsSkuCardList(c *gin.Context) {
+	data := share.GetJsonAnyParam(c)
+	param, _ := data("param")
+	pageNum, _ := data("pageNum")
+	pageSize, _ := data("pageSize")
+	goodsSkuCard := domain.GoodsSkuCard{}
+	err := mapstructure.Decode(param, &goodsSkuCard)
+	if err != nil {
+		c.JSON(200, CreateResultError(500, "json转换错误"))
+		return
+	}
+	list, err := manage.GetGoodsSkuCardList(goodsSkuCard, cast.ToInt(pageNum), cast.ToInt(pageSize))
+	if err != nil {
+		c.JSON(200, CreateResultError(500, "查询错误"))
+		return
+	}
+	c.JSON(200, CreateResultData(list))
+}
+
+func GetBaseGoodsSkuCardListInId(c *gin.Context) {
+	data := share.GetJsonAnyParam(c)
+	idsString, _ := data("ids")
+	var ids []int64
+	err := mapstructure.Decode([]byte(cast.ToString(idsString)), &ids)
+	list, err := manage.GetGoodsSkuCardListInId(ids)
+	if err != nil {
+		c.JSON(200, CreateResultError(500, "查询错误"))
+		return
+	}
+	c.JSON(200, CreateResultData(list))
+}
+
+func SaveBaseGoodsSkuCard(c *gin.Context) {
+	data := share.GetJsonAnyParam(c)
+	goodsSkuCardParam, _ := data("goodsSkuCard")
+	goodsSkuCard := domain.GoodsSkuCard{}
+	err := mapstructure.Decode(goodsSkuCardParam, &goodsSkuCard)
+	
+	
+	saveGoodsSkuCard, err := manage.SaveGoodsSkuCard(&goodsSkuCard)
+	if err != nil {
+		c.JSON(200, CreateResultError(500, "保存错误"))
+		return
+	}
+	c.JSON(200, CreateResultData(saveGoodsSkuCard))
+}
+
+func UpdateBaseGoodsSkuCard(c *gin.Context) {
+	data := share.GetJsonAnyParam(c)
+	goodsSkuCard, _ := data("goodsSkuCard")
+	id, _ := data("id")
+	toMap := UtilStructToMap(cast.ToStringMap(goodsSkuCard))
+	
+    
+    
+    
+	setGoodsSkuCard, b, err := manage.SetGoodsSkuCard(toMap, cast.ToInt64(id))
+	if err != nil || !b {
+		c.JSON(200, CreateResultError(500, "修改错误"))
+		return
+	}
+	c.JSON(200, CreateResultData(setGoodsSkuCard))
+}
+
+func DeleteBaseGoodsSkuCard(c *gin.Context) {
+	id := c.Query("id")
+	res := manage.DeleteGoodsSkuCard(cast.ToInt64(id))
+	if !res {
+		c.JSON(200, CreateResultError(500, "删除错误"))
+		return
+	}
+	c.JSON(200, CreateResult())
+}
+ 
+//================GoodsTag 商品标签==============================
+func GetBaseGoodsTagById(c *gin.Context) {
+	id := c.Query("id")
+	goodsTag, err := manage.GetGoodsTagById(cast.ToInt64(id))
+	if err != nil {
+		c.JSON(200, CreateResultError(500, "用户查询不存在"))
+		return
+	}
+	c.JSON(200, CreateResultData(goodsTag))
+	return
+}
+
+func GetBaseGoodsTagList(c *gin.Context) {
+	data := share.GetJsonAnyParam(c)
+	param, _ := data("param")
+	pageNum, _ := data("pageNum")
+	pageSize, _ := data("pageSize")
+	goodsTag := domain.GoodsTag{}
+	err := mapstructure.Decode(param, &goodsTag)
+	if err != nil {
+		c.JSON(200, CreateResultError(500, "json转换错误"))
+		return
+	}
+	list, err := manage.GetGoodsTagList(goodsTag, cast.ToInt(pageNum), cast.ToInt(pageSize))
+	if err != nil {
+		c.JSON(200, CreateResultError(500, "查询错误"))
+		return
+	}
+	c.JSON(200, CreateResultData(list))
+}
+
+func GetBaseGoodsTagListInId(c *gin.Context) {
+	data := share.GetJsonAnyParam(c)
+	idsString, _ := data("ids")
+	var ids []int64
+	err := mapstructure.Decode([]byte(cast.ToString(idsString)), &ids)
+	list, err := manage.GetGoodsTagListInId(ids)
+	if err != nil {
+		c.JSON(200, CreateResultError(500, "查询错误"))
+		return
+	}
+	c.JSON(200, CreateResultData(list))
+}
+
+func SaveBaseGoodsTag(c *gin.Context) {
+	data := share.GetJsonAnyParam(c)
+	goodsTagParam, _ := data("goodsTag")
+	goodsTag := domain.GoodsTag{}
+	err := mapstructure.Decode(goodsTagParam, &goodsTag)
+	
+	
+	saveGoodsTag, err := manage.SaveGoodsTag(&goodsTag)
+	if err != nil {
+		c.JSON(200, CreateResultError(500, "保存错误"))
+		return
+	}
+	c.JSON(200, CreateResultData(saveGoodsTag))
+}
+
+func UpdateBaseGoodsTag(c *gin.Context) {
+	data := share.GetJsonAnyParam(c)
+	goodsTag, _ := data("goodsTag")
+	id, _ := data("id")
+	toMap := UtilStructToMap(cast.ToStringMap(goodsTag))
+	
+    
+    
+    
+	setGoodsTag, b, err := manage.SetGoodsTag(toMap, cast.ToInt64(id))
+	if err != nil || !b {
+		c.JSON(200, CreateResultError(500, "修改错误"))
+		return
+	}
+	c.JSON(200, CreateResultData(setGoodsTag))
+}
+
+func DeleteBaseGoodsTag(c *gin.Context) {
+	id := c.Query("id")
+	res := manage.DeleteGoodsTag(cast.ToInt64(id))
+	if !res {
+		c.JSON(200, CreateResultError(500, "删除错误"))
+		return
+	}
+	c.JSON(200, CreateResult())
+}
+ 
+//================GoodsType 商品分类==============================
+func GetBaseGoodsTypeById(c *gin.Context) {
+	id := c.Query("id")
+	goodsType, err := manage.GetGoodsTypeById(cast.ToInt64(id))
+	if err != nil {
+		c.JSON(200, CreateResultError(500, "用户查询不存在"))
+		return
+	}
+	c.JSON(200, CreateResultData(goodsType))
+	return
+}
+
+func GetBaseGoodsTypeList(c *gin.Context) {
+	data := share.GetJsonAnyParam(c)
+	param, _ := data("param")
+	pageNum, _ := data("pageNum")
+	pageSize, _ := data("pageSize")
+	goodsType := domain.GoodsType{}
+	err := mapstructure.Decode(param, &goodsType)
+	if err != nil {
+		c.JSON(200, CreateResultError(500, "json转换错误"))
+		return
+	}
+	list, err := manage.GetGoodsTypeList(goodsType, cast.ToInt(pageNum), cast.ToInt(pageSize))
+	if err != nil {
+		c.JSON(200, CreateResultError(500, "查询错误"))
+		return
+	}
+	c.JSON(200, CreateResultData(list))
+}
+
+func GetBaseGoodsTypeListInId(c *gin.Context) {
+	data := share.GetJsonAnyParam(c)
+	idsString, _ := data("ids")
+	var ids []int64
+	err := mapstructure.Decode([]byte(cast.ToString(idsString)), &ids)
+	list, err := manage.GetGoodsTypeListInId(ids)
+	if err != nil {
+		c.JSON(200, CreateResultError(500, "查询错误"))
+		return
+	}
+	c.JSON(200, CreateResultData(list))
+}
+
+func SaveBaseGoodsType(c *gin.Context) {
+	data := share.GetJsonAnyParam(c)
+	goodsTypeParam, _ := data("goodsType")
+	goodsType := domain.GoodsType{}
+	err := mapstructure.Decode(goodsTypeParam, &goodsType)
+	
+	goodsgoodsType.CreateTime = time.Now()
+	saveGoodsType, err := manage.SaveGoodsType(&goodsType)
+	if err != nil {
+		c.JSON(200, CreateResultError(500, "保存错误"))
+		return
+	}
+	c.JSON(200, CreateResultData(saveGoodsType))
+}
+
+func UpdateBaseGoodsType(c *gin.Context) {
+	data := share.GetJsonAnyParam(c)
+	goodsType, _ := data("goodsType")
+	id, _ := data("id")
+	toMap := UtilStructToMap(cast.ToStringMap(goodsType))
+	
+    toMap["create_time"] = nil
+    
+    
+	setGoodsType, b, err := manage.SetGoodsType(toMap, cast.ToInt64(id))
+	if err != nil || !b {
+		c.JSON(200, CreateResultError(500, "修改错误"))
+		return
+	}
+	c.JSON(200, CreateResultData(setGoodsType))
+}
+
+func DeleteBaseGoodsType(c *gin.Context) {
+	id := c.Query("id")
+	res := manage.DeleteGoodsType(cast.ToInt64(id))
+	if !res {
+		c.JSON(200, CreateResultError(500, "删除错误"))
+		return
+	}
+	c.JSON(200, CreateResult())
+}
+ 
+//================User 用户表==============================
+func GetBaseUserById(c *gin.Context) {
+	id := c.Query("id")
+	user, err := manage.GetUserById(cast.ToInt64(id))
+	if err != nil {
+		c.JSON(200, CreateResultError(500, "用户查询不存在"))
+		return
+	}
+	c.JSON(200, CreateResultData(user))
+	return
+}
+
+func GetBaseUserList(c *gin.Context) {
+	data := share.GetJsonAnyParam(c)
+	param, _ := data("param")
+	pageNum, _ := data("pageNum")
+	pageSize, _ := data("pageSize")
+	user := domain.User{}
+	err := mapstructure.Decode(param, &user)
+	if err != nil {
+		c.JSON(200, CreateResultError(500, "json转换错误"))
+		return
+	}
+	list, err := manage.GetUserList(user, cast.ToInt(pageNum), cast.ToInt(pageSize))
+	if err != nil {
+		c.JSON(200, CreateResultError(500, "查询错误"))
+		return
+	}
+	c.JSON(200, CreateResultData(list))
+}
+
+func GetBaseUserListInId(c *gin.Context) {
+	data := share.GetJsonAnyParam(c)
+	idsString, _ := data("ids")
+	var ids []int64
+	err := mapstructure.Decode([]byte(cast.ToString(idsString)), &ids)
+	list, err := manage.GetUserListInId(ids)
+	if err != nil {
+		c.JSON(200, CreateResultError(500, "查询错误"))
+		return
+	}
+	c.JSON(200, CreateResultData(list))
+}
+
+func SaveBaseUser(c *gin.Context) {
+	data := share.GetJsonAnyParam(c)
+	userParam, _ := data("user")
+	user := domain.User{}
+	err := mapstructure.Decode(userParam, &user)
+	
+	
+	saveUser, err := manage.SaveUser(&user)
+	if err != nil {
+		c.JSON(200, CreateResultError(500, "保存错误"))
+		return
+	}
+	c.JSON(200, CreateResultData(saveUser))
+}
+
+func UpdateBaseUser(c *gin.Context) {
+	data := share.GetJsonAnyParam(c)
+	user, _ := data("user")
+	id, _ := data("id")
+	toMap := UtilStructToMap(cast.ToStringMap(user))
+	
+    
+    
+    
+	setUser, b, err := manage.SetUser(toMap, cast.ToInt64(id))
+	if err != nil || !b {
+		c.JSON(200, CreateResultError(500, "修改错误"))
+		return
+	}
+	c.JSON(200, CreateResultData(setUser))
+}
+
+func DeleteBaseUser(c *gin.Context) {
+	id := c.Query("id")
+	res := manage.DeleteUser(cast.ToInt64(id))
+	if !res {
+		c.JSON(200, CreateResultError(500, "删除错误"))
+		return
+	}
+	c.JSON(200, CreateResult())
+}
+ 
+//================UserWallet 用户钱包==============================
+func GetBaseUserWalletById(c *gin.Context) {
+	id := c.Query("id")
+	userWallet, err := manage.GetUserWalletById(cast.ToInt64(id))
+	if err != nil {
+		c.JSON(200, CreateResultError(500, "用户查询不存在"))
+		return
+	}
+	c.JSON(200, CreateResultData(userWallet))
+	return
+}
+
+func GetBaseUserWalletList(c *gin.Context) {
+	data := share.GetJsonAnyParam(c)
+	param, _ := data("param")
+	pageNum, _ := data("pageNum")
+	pageSize, _ := data("pageSize")
+	userWallet := domain.UserWallet{}
+	err := mapstructure.Decode(param, &userWallet)
+	if err != nil {
+		c.JSON(200, CreateResultError(500, "json转换错误"))
+		return
+	}
+	list, err := manage.GetUserWalletList(userWallet, cast.ToInt(pageNum), cast.ToInt(pageSize))
+	if err != nil {
+		c.JSON(200, CreateResultError(500, "查询错误"))
+		return
+	}
+	c.JSON(200, CreateResultData(list))
+}
+
+func GetBaseUserWalletListInId(c *gin.Context) {
+	data := share.GetJsonAnyParam(c)
+	idsString, _ := data("ids")
+	var ids []int64
+	err := mapstructure.Decode([]byte(cast.ToString(idsString)), &ids)
+	list, err := manage.GetUserWalletListInId(ids)
+	if err != nil {
+		c.JSON(200, CreateResultError(500, "查询错误"))
+		return
+	}
+	c.JSON(200, CreateResultData(list))
+}
+
+func SaveBaseUserWallet(c *gin.Context) {
+	data := share.GetJsonAnyParam(c)
+	userWalletParam, _ := data("userWallet")
+	userWallet := domain.UserWallet{}
+	err := mapstructure.Decode(userWalletParam, &userWallet)
+	
+	
+	saveUserWallet, err := manage.SaveUserWallet(&userWallet)
+	if err != nil {
+		c.JSON(200, CreateResultError(500, "保存错误"))
+		return
+	}
+	c.JSON(200, CreateResultData(saveUserWallet))
+}
+
+func UpdateBaseUserWallet(c *gin.Context) {
+	data := share.GetJsonAnyParam(c)
+	userWallet, _ := data("userWallet")
+	id, _ := data("id")
+	toMap := UtilStructToMap(cast.ToStringMap(userWallet))
+	
+    
+    
+    
+	setUserWallet, b, err := manage.SetUserWallet(toMap, cast.ToInt64(id))
+	if err != nil || !b {
+		c.JSON(200, CreateResultError(500, "修改错误"))
+		return
+	}
+	c.JSON(200, CreateResultData(setUserWallet))
+}
+
+func DeleteBaseUserWallet(c *gin.Context) {
+	id := c.Query("id")
+	res := manage.DeleteUserWallet(cast.ToInt64(id))
+	if !res {
+		c.JSON(200, CreateResultError(500, "删除错误"))
+		return
+	}
+	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")
+	dictData, err := manage.GetDictDataById(cast.ToInt64(id))
+	if err != nil {
+		c.JSON(200, CreateResultError(500, "用户查询不存在"))
+		return
+	}
+	c.JSON(200, CreateResultData(dictData))
+	return
+}
+
+func GetBaseDictDataList(c *gin.Context) {
+	data := share.GetJsonAnyParam(c)
+	param, _ := data("param")
+	pageNum, _ := data("pageNum")
+	pageSize, _ := data("pageSize")
+	dictData := domain.DictData{}
+	err := mapstructure.Decode(param, &dictData)
+	if err != nil {
+		c.JSON(200, CreateResultError(500, "json转换错误"))
+		return
+	}
+	list, err := manage.GetDictDataList(dictData, cast.ToInt(pageNum), cast.ToInt(pageSize))
+	if err != nil {
+		c.JSON(200, CreateResultError(500, "查询错误"))
+		return
+	}
+	c.JSON(200, CreateResultData(list))
+}
+
+func GetBaseDictDataListInId(c *gin.Context) {
+	data := share.GetJsonAnyParam(c)
+	idsString, _ := data("ids")
+	var ids []int64
+	err := mapstructure.Decode([]byte(cast.ToString(idsString)), &ids)
+	list, err := manage.GetDictDataListInId(ids)
+	if err != nil {
+		c.JSON(200, CreateResultError(500, "查询错误"))
+		return
+	}
+	c.JSON(200, CreateResultData(list))
+}
+
+func SaveBaseDictData(c *gin.Context) {
+	data := share.GetJsonAnyParam(c)
+	dictDataParam, _ := data("dictData")
+	dictData := domain.DictData{}
+	err := mapstructure.Decode(dictDataParam, &dictData)
+	
+	
+	saveDictData, err := manage.SaveDictData(&dictData)
+	if err != nil {
+		c.JSON(200, CreateResultError(500, "保存错误"))
+		return
+	}
+	c.JSON(200, CreateResultData(saveDictData))
+}
+
+func UpdateBaseDictData(c *gin.Context) {
+	data := share.GetJsonAnyParam(c)
+	dictData, _ := data("dictData")
+	id, _ := data("id")
+	toMap := UtilStructToMap(cast.ToStringMap(dictData))
+	
+    
+    
+    
+	setDictData, b, err := manage.SetDictData(toMap, cast.ToInt64(id))
+	if err != nil || !b {
+		c.JSON(200, CreateResultError(500, "修改错误"))
+		return
+	}
+	c.JSON(200, CreateResultData(setDictData))
+}
+
+func DeleteBaseDictData(c *gin.Context) {
+	id := c.Query("id")
+	res := manage.DeleteDictData(cast.ToInt64(id))
+	if !res {
+		c.JSON(200, CreateResultError(500, "删除错误"))
+		return
+	}
+	c.JSON(200, CreateResult())
+}
+ 
+//================DictType 字典类型==============================
+func GetBaseDictTypeById(c *gin.Context) {
+	id := c.Query("id")
+	dictType, err := manage.GetDictTypeById(cast.ToInt64(id))
+	if err != nil {
+		c.JSON(200, CreateResultError(500, "用户查询不存在"))
+		return
+	}
+	c.JSON(200, CreateResultData(dictType))
+	return
+}
+
+func GetBaseDictTypeList(c *gin.Context) {
+	data := share.GetJsonAnyParam(c)
+	param, _ := data("param")
+	pageNum, _ := data("pageNum")
+	pageSize, _ := data("pageSize")
+	dictType := domain.DictType{}
+	err := mapstructure.Decode(param, &dictType)
+	if err != nil {
+		c.JSON(200, CreateResultError(500, "json转换错误"))
+		return
+	}
+	list, err := manage.GetDictTypeList(dictType, cast.ToInt(pageNum), cast.ToInt(pageSize))
+	if err != nil {
+		c.JSON(200, CreateResultError(500, "查询错误"))
+		return
+	}
+	c.JSON(200, CreateResultData(list))
+}
+
+func GetBaseDictTypeListInId(c *gin.Context) {
+	data := share.GetJsonAnyParam(c)
+	idsString, _ := data("ids")
+	var ids []int64
+	err := mapstructure.Decode([]byte(cast.ToString(idsString)), &ids)
+	list, err := manage.GetDictTypeListInId(ids)
+	if err != nil {
+		c.JSON(200, CreateResultError(500, "查询错误"))
+		return
+	}
+	c.JSON(200, CreateResultData(list))
+}
+
+func SaveBaseDictType(c *gin.Context) {
+	data := share.GetJsonAnyParam(c)
+	dictTypeParam, _ := data("dictType")
+	dictType := domain.DictType{}
+	err := mapstructure.Decode(dictTypeParam, &dictType)
+	
+	
+	saveDictType, err := manage.SaveDictType(&dictType)
+	if err != nil {
+		c.JSON(200, CreateResultError(500, "保存错误"))
+		return
+	}
+	c.JSON(200, CreateResultData(saveDictType))
+}
+
+func UpdateBaseDictType(c *gin.Context) {
+	data := share.GetJsonAnyParam(c)
+	dictType, _ := data("dictType")
+	id, _ := data("id")
+	toMap := UtilStructToMap(cast.ToStringMap(dictType))
+	
+    
+    
+    
+	setDictType, b, err := manage.SetDictType(toMap, cast.ToInt64(id))
+	if err != nil || !b {
+		c.JSON(200, CreateResultError(500, "修改错误"))
+		return
+	}
+	c.JSON(200, CreateResultData(setDictType))
+}
+
+func DeleteBaseDictType(c *gin.Context) {
+	id := c.Query("id")
+	res := manage.DeleteDictType(cast.ToInt64(id))
+	if !res {
+		c.JSON(200, CreateResultError(500, "删除错误"))
+		return
+	}
+	c.JSON(200, CreateResult())
+}
+ 
+//================ManageUser ==============================
+func GetBaseManageUserById(c *gin.Context) {
+	id := c.Query("id")
+	manageUser, err := manage.GetManageUserById(cast.ToInt64(id))
+	if err != nil {
+		c.JSON(200, CreateResultError(500, "用户查询不存在"))
+		return
+	}
+	c.JSON(200, CreateResultData(manageUser))
+	return
+}
+
+func GetBaseManageUserList(c *gin.Context) {
+	data := share.GetJsonAnyParam(c)
+	param, _ := data("param")
+	pageNum, _ := data("pageNum")
+	pageSize, _ := data("pageSize")
+	manageUser := domain.ManageUser{}
+	err := mapstructure.Decode(param, &manageUser)
+	if err != nil {
+		c.JSON(200, CreateResultError(500, "json转换错误"))
+		return
+	}
+	list, err := manage.GetManageUserList(manageUser, cast.ToInt(pageNum), cast.ToInt(pageSize))
+	if err != nil {
+		c.JSON(200, CreateResultError(500, "查询错误"))
+		return
+	}
+	c.JSON(200, CreateResultData(list))
+}
+
+func GetBaseManageUserListInId(c *gin.Context) {
+	data := share.GetJsonAnyParam(c)
+	idsString, _ := data("ids")
+	var ids []int64
+	err := mapstructure.Decode([]byte(cast.ToString(idsString)), &ids)
+	list, err := manage.GetManageUserListInId(ids)
+	if err != nil {
+		c.JSON(200, CreateResultError(500, "查询错误"))
+		return
+	}
+	c.JSON(200, CreateResultData(list))
+}
+
+func SaveBaseManageUser(c *gin.Context) {
+	data := share.GetJsonAnyParam(c)
+	manageUserParam, _ := data("manageUser")
+	manageUser := domain.ManageUser{}
+	err := mapstructure.Decode(manageUserParam, &manageUser)
+	
+	
+	saveManageUser, err := manage.SaveManageUser(&manageUser)
+	if err != nil {
+		c.JSON(200, CreateResultError(500, "保存错误"))
+		return
+	}
+	c.JSON(200, CreateResultData(saveManageUser))
+}
+
+func UpdateBaseManageUser(c *gin.Context) {
+	data := share.GetJsonAnyParam(c)
+	manageUser, _ := data("manageUser")
+	id, _ := data("id")
+	toMap := UtilStructToMap(cast.ToStringMap(manageUser))
+	
+    
+    
+    
+	setManageUser, b, err := manage.SetManageUser(toMap, cast.ToInt64(id))
+	if err != nil || !b {
+		c.JSON(200, CreateResultError(500, "修改错误"))
+		return
+	}
+	c.JSON(200, CreateResultData(setManageUser))
+}
+
+func DeleteBaseManageUser(c *gin.Context) {
+	id := c.Query("id")
+	res := manage.DeleteManageUser(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")
+	shopTopic, err := manage.GetShopTopicById(cast.ToInt64(id))
+	if err != nil {
+		c.JSON(200, CreateResultError(500, "用户查询不存在"))
+		return
+	}
+	c.JSON(200, CreateResultData(shopTopic))
+	return
+}
+
+func GetBaseShopTopicList(c *gin.Context) {
+	data := share.GetJsonAnyParam(c)
+	param, _ := data("param")
+	pageNum, _ := data("pageNum")
+	pageSize, _ := data("pageSize")
+	shopTopic := domain.ShopTopic{}
+	err := mapstructure.Decode(param, &shopTopic)
+	if err != nil {
+		c.JSON(200, CreateResultError(500, "json转换错误"))
+		return
+	}
+	list, err := manage.GetShopTopicList(shopTopic, cast.ToInt(pageNum), cast.ToInt(pageSize))
+	if err != nil {
+		c.JSON(200, CreateResultError(500, "查询错误"))
+		return
+	}
+	c.JSON(200, CreateResultData(list))
+}
+
+func GetBaseShopTopicListInId(c *gin.Context) {
+	data := share.GetJsonAnyParam(c)
+	idsString, _ := data("ids")
+	var ids []int64
+	err := mapstructure.Decode([]byte(cast.ToString(idsString)), &ids)
+	list, err := manage.GetShopTopicListInId(ids)
+	if err != nil {
+		c.JSON(200, CreateResultError(500, "查询错误"))
+		return
+	}
+	c.JSON(200, CreateResultData(list))
+}
+
+func SaveBaseShopTopic(c *gin.Context) {
+	data := share.GetJsonAnyParam(c)
+	shopTopicParam, _ := data("shopTopic")
+	shopTopic := domain.ShopTopic{}
+	err := mapstructure.Decode(shopTopicParam, &shopTopic)
+	
+	
+	saveShopTopic, err := manage.SaveShopTopic(&shopTopic)
+	if err != nil {
+		c.JSON(200, CreateResultError(500, "保存错误"))
+		return
+	}
+	c.JSON(200, CreateResultData(saveShopTopic))
+}
+
+func UpdateBaseShopTopic(c *gin.Context) {
+	data := share.GetJsonAnyParam(c)
+	shopTopic, _ := data("shopTopic")
+	id, _ := data("id")
+	toMap := UtilStructToMap(cast.ToStringMap(shopTopic))
+	
+    
+    
+    
+	setShopTopic, b, err := manage.SetShopTopic(toMap, cast.ToInt64(id))
+	if err != nil || !b {
+		c.JSON(200, CreateResultError(500, "修改错误"))
+		return
+	}
+	c.JSON(200, CreateResultData(setShopTopic))
+}
+
+func DeleteBaseShopTopic(c *gin.Context) {
+	id := c.Query("id")
+	res := manage.DeleteShopTopic(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")
+	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)
+	
+	
+	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))
+	
+    
+    
+    
+	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())
+}
+ 
+//================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)
+	goodsshopTopicSku.CreateBy = fmt.Sprint(GetUserIdByToken(c))
+	goodsshopTopicSku.CreateTime = time.Now()
+	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))
+	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, "修改错误"))
+		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())
+}

+ 82 - 0
sqlload/SqlEntity.go

@@ -0,0 +1,82 @@
+package sqlload
+
+import "fmt"
+
+type CTable struct {
+	Name               string       //名字
+	Comment            string       //注释
+	KeyName            string       //主键名称
+	Key                CTableColumn // 主键字段数据
+	KeyIsAutoIncrement bool
+	CTableColumns      []CTableColumn //字段数据
+}
+
+func (C CTable) String() string {
+	return fmt.Sprintf("CTable{Name:%s,Comment:%s,KeyName:%s,Key:%s,KeyIsAutoIncrement:%t,CTableColumns:%s}", C.Name, C.Comment, C.KeyName, C.Key, C.KeyIsAutoIncrement, C.CTableColumns)
+}
+
+type CTableColumn struct {
+	IsPrimaryKey    bool     //是否为主键
+	IsAutoIncrement bool     //是否自增
+	Name            string   //名称
+	Comment         string   //注释
+	SQLType         CSQLType //数据库类型
+	Nullable        bool     //可否为null
+}
+
+func (C CTableColumn) String() string {
+	return fmt.Sprintf("CTableColumn{IsPrimaryKey:%t,IsAutoIncrement:%t,Name:%s,Comment:%s,SQLType:%s,Nullable:%t}", C.IsPrimaryKey, C.IsAutoIncrement, C.Name, C.Comment, C.SQLType, C.Nullable)
+}
+
+type CSQLType struct {
+	Name           string //类型
+	DefaultLength  int64  //默认长度
+	DefaultLength2 int64  //小数点位数
+}
+
+func (C CSQLType) String() string {
+	return fmt.Sprintf("CSQLType{Name:%s,DefaultLength:%d,DefaultLength2:%d}", C.Name, C.DefaultLength, C.DefaultLength2)
+}
+
+type Gen struct {
+	Table        GenTable         `json:"table"`
+	TableColumns []GenTableColumn `json:"tableColumns"`
+}
+
+func (receiver Gen) String() string {
+	return fmt.Sprintf("Gen{Table:%s,TableColumns:%s}", receiver.Table, receiver.TableColumns)
+}
+
+type GenTable struct {
+	Id           int64  `xorm:"id" json:"id"`                       // 11 0 注释:id
+	TableName    string `xorm:"table_name"  json:"tableName"`       // 255 0 注释:数据库名
+	TableComment string `xorm:"table_comment"  json:"tableComment"` // 255 0 注释:数据库注释
+	Name         string `xorm:"name"  json:"name"`                  // 255 0 注释:名字
+	RouterName   string `xorm:"router_name"  json:"routerName"`     // 255 0 注释:路由名
+	Remark       string `xorm:"remark"  json:"remark"`              // 255 0 注释:备注
+}
+
+func (receiver GenTable) String() string {
+	return fmt.Sprint("GenTable{Id:", receiver.Id, ",TableName:", receiver.TableName, ",TableComment:", receiver.TableComment, ",Name:", receiver.Name, ",RouterName:", receiver.RouterName, ",Remark:", receiver.Remark, "}")
+}
+
+type GenTableColumn struct {
+	Id            int64  `xorm:"id" json:"id"`                         // 11 0 注释:id
+	TableId       int64  `xorm:"table_id"  json:"tableId"`             // 11 0 注释:表格id
+	Sort          int64  `xorm:"sort"  json:"sort"`                    // 255 0 注释:排序
+	ColumnName    string `xorm:"column_name"  json:"columnName"`       // 255 0 注释:字段名
+	ColumnComment string `xorm:"column_comment"  json:"columnComment"` // 255 0 注释:字段注释
+	ColumnType    string `xorm:"column_type"  json:"columnType"`       // 255 0 注释:字段类型
+	GoType        string `xorm:"go_type"  json:"goType"`               // 255 0 注释:go类型
+	GoField       string `xorm:"go_field"  json:"goField"`             // 255 0 注释:go字段名
+	IsKey         string `xorm:"is_key"  json:"isKey"`                 // 1 0 注释:是否主键
+	IsIncrement   string `xorm:"is_increment"  json:"isIncrement"`     // 1 0 注释:是否自增
+	IsRequired    string `xorm:"is_required"  json:"isRequired"`       // 1 0 注释:是否未必填
+	QueryType     string `xorm:"query_type"  json:"queryType"`         // 1 0 注释:查询方式
+	VueShowType   string `xorm:"vue_show_type"  json:"vueShowType"`    // 255 0 注释:前端显示类型
+	DictType      string `xorm:"dict_type"  json:"dictType"`           // 255 0 注释:字典类型
+}
+
+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, "}")
+}

+ 74 - 0
sqlload/SqlLoad.go

@@ -0,0 +1,74 @@
+package sqlload
+
+import (
+	"go-create-template/configs"
+)
+
+var CTables []CTable
+var CGans []Gen
+
+// Load 加载数据库参数
+func Load() {
+	metas, err := configs.Engine.DBMetas()
+	if err != nil {
+		panic(err)
+	}
+	CTables = make([]CTable, len(metas))
+	for i := range metas {
+		table := CTable{
+			Name:          metas[i].Name,
+			Comment:       metas[i].Comment,
+			Key:           CTableColumn{},
+			CTableColumns: make([]CTableColumn, len(metas[i].Columns())),
+		}
+		for j := range metas[i].Columns() {
+			column := CTableColumn{}
+			column.Name = metas[i].Columns()[j].Name
+			column.IsPrimaryKey = metas[i].Columns()[j].IsPrimaryKey
+			column.IsAutoIncrement = metas[i].Columns()[j].IsAutoIncrement
+			column.Comment = metas[i].Columns()[j].Comment
+			column.SQLType = CSQLType{
+				Name:           metas[i].Columns()[j].SQLType.Name,
+				DefaultLength:  metas[i].Columns()[j].SQLType.DefaultLength,
+				DefaultLength2: metas[i].Columns()[j].SQLType.DefaultLength2,
+			}
+			column.Nullable = metas[i].Columns()[j].Nullable
+			if column.IsPrimaryKey {
+				table.Key = column
+			}
+			table.CTableColumns[j] = column
+		}
+		CTables[i] = table
+	}
+
+	LoadGenTableAndGenTableColumn()
+}
+
+// LoadGenTableAndGenTableColumn 加载数据库中的表格和列字段生成
+func LoadGenTableAndGenTableColumn() {
+	var tables = make([]GenTable, 0)
+	err := configs.Engine.Table("gen_table").Find(&tables)
+	if err != nil {
+		panic(err)
+	}
+	var genTableColumns []GenTableColumn
+	err = configs.Engine.Table("gen_table_column").Find(&genTableColumns)
+	if err != nil {
+		panic(err)
+	}
+	gens := make([]Gen, len(tables))
+	m := make(map[int64]int)
+	for i := range tables {
+		gen := Gen{Table: tables[i], TableColumns: make([]GenTableColumn, 0)}
+		gens[i] = gen
+		m[tables[i].Id] = i
+	}
+
+	for i := range genTableColumns {
+		gen, ok := m[genTableColumns[i].TableId]
+		if ok {
+			gens[gen].TableColumns = append(gens[gen].TableColumns, genTableColumns[i])
+		}
+	}
+	CGans = gens
+}

+ 40 - 0
util/BaseTemplateFunc.go

@@ -0,0 +1,40 @@
+package util
+
+import (
+	"strings"
+	"text/template"
+)
+
+var FuncMap = template.FuncMap{
+	"toGoType":       ToGoType,
+	"formatJsonName": FormatJsonName,
+}
+
+// ToGoType sql类型转go类型
+func ToGoType(sqlType string) string {
+	switch sqlType {
+	case "varchar":
+		return "string"
+	case "char":
+		return "string"
+	case "int":
+		return "int64"
+	case "decimal":
+		return "float64"
+	case "datetime":
+		return "time.Time"
+	case "longblob":
+		return "string"
+	default:
+		println("未找到类型", sqlType)
+		return "string"
+	}
+}
+func FormatJsonName(sqlName string) string {
+	split := strings.Split(sqlName, "_")
+	var str = split[0]
+	for i := 1; i < len(split); i++ {
+		str += strings.Title(split[i])
+	}
+	return str
+}

+ 18 - 0
util/Tools.go

@@ -0,0 +1,18 @@
+package util
+
+import "encoding/json"
+
+func StructToMap(obj interface{}) (map[string]interface{}, error) {
+	objJSON, err := json.Marshal(obj)
+	if err != nil {
+		return nil, err
+	}
+
+	var resultMap map[string]interface{}
+	err = json.Unmarshal(objJSON, &resultMap)
+	if err != nil {
+		return nil, err
+	}
+
+	return resultMap, nil
+}