Administrator 2 年 前
コミット
e8b8d78f52
5 ファイル変更141 行追加57 行削除
  1. 57 37
      main.go
  2. 43 0
      tmpl/LoadMysqlInfo.go
  3. 14 16
      util/MysqlCreateGo.go
  4. 10 4
      util/MysqlCreateVue.go
  5. 17 0
      util/ProjectUrl.go

+ 57 - 37
main.go

@@ -1,62 +1,82 @@
 package main
 
 import (
-	"bufio"
-	"go-create/service"
-	"go-create/tmpl"
-	"html/template"
-	"os"
+	"fmt"
+	"go-create/configs"
+	"go-create/util"
 )
 
-//	func init() {
-//		configs.ConfigInit()
-//	}
+func init() {
+	configs.ConfigInit()
+}
 func main() {
 	//初始化
-	//util.InitMTableArray(configs.Engine)
+	util.InitMTableArray(configs.Engine)
 	//service.InitTable()
-	service.RunTest()
+	//service.RunTest()
 	//执行生成,go
 	//util.MysqlToStruct()
 	//util.MysqlToDao()
 	//util.MysqlToBaseCRUDRouter()
 	//执行生成,vue
 	//util.MysqlToVueApi()
-
+	SaveMenu()
 }
 
-// LoadStructTemplate 加载结构体生成模板
-func LoadStructTemplate(url string) {
-	os.Truncate(url, 0)
-	file, _ := os.OpenFile(url, os.O_CREATE|os.O_RDWR, 0666)
-	defer file.Close()
-	//os.Stdout
-	writer := bufio.NewWriter(file)
+func SaveMenu() {
+	for i := range util.MTables {
+		table := util.MTables[i]
+		fmt.Println(table.Name)
 
-	t, err := template.ParseFiles("./tmpl/struct.go.template")
-	if err != nil {
-		panic(err)
+		search := BackMenu{
+			BackMenuName:   table.Comment,
+			BackRouterPath: "/back/" + table.LittleHump,
+			State:          "1",
+		}
+		if GetBackMenuCount(search) {
+			continue
+		}
+		menu := BackMenu{
+			BackMenuName:   table.Comment,
+			BackMenuPater:  0,
+			Sort:           int64(i + 4),
+			Icon:           "Setting",
+			Remark:         table.Comment,
+			BackRouterPath: "/back/" + table.LittleHump,
+			State:          "1",
+		}
+		SaveBackMenu(&menu)
 	}
-	err = t.Execute(writer, tmpl.MTables)
+}
+func SaveBackMenu(backMenu *BackMenu) (BackMenu, error) {
+	_, err := configs.Engine.Table("back_menu").Insert(&backMenu)
 	if err != nil {
-		panic(err)
+		return *backMenu, err
 	}
+	return *backMenu, nil
 }
 
-// LoadDaoTemplate 加载Dao生成模板
-func LoadDaoTemplate(url string) {
-	os.Truncate(url, 0)
-	file, _ := os.OpenFile(url, os.O_CREATE|os.O_RDWR, 0666)
-	defer file.Close()
-
-	writer := bufio.NewWriterSize(file, 1<<31)
-
-	t, err := template.ParseFiles("./tmpl/dao.go.template")
+func GetBackMenuCount(backMenu BackMenu) bool {
+	Count, err := configs.Engine.Table("back_menu").FindAndCount(&backMenu)
 	if err != nil {
-		panic(err)
-	}
-	err = t.Execute(writer, tmpl.MTables)
-	if err != nil {
-		panic(err)
+		return false
 	}
+	return Count > 0
+
+}
+
+// BackMenu 后台菜单
+type BackMenu struct {
+	Id             int64  `json:"id"`                                      // 11 0 注释:id
+	BackMenuName   string `xorm:"back_menu_name"  json:"backMenuName"`     // 255 0 注释:菜单名称
+	BackMenuPater  int64  `xorm:"back_menu_pater"  json:"backMenuPater"`   // 11 0 注释:父级菜单
+	Sort           int64  `xorm:"sort"  json:"sort"`                       // 11 0 注释:排序
+	Icon           string `xorm:"icon"  json:"icon"`                       // 255 0 注释:图标
+	Remark         string `xorm:"remark"  json:"remark"`                   // 255 0 注释:备注
+	BackRouterPath string `xorm:"back_router_path"  json:"backRouterPath"` // 255 0 注释:路由路径
+	State          string `xorm:"state"  json:"state"`                     // 255 0 注释:状态
+}
+
+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, "}")
 }

+ 43 - 0
tmpl/LoadMysqlInfo.go

@@ -1,8 +1,11 @@
 package tmpl
 
 import (
+	"bufio"
 	"fmt"
+	"os"
 	"strings"
+	"text/template"
 	"xorm.io/xorm"
 )
 
@@ -28,6 +31,42 @@ type MColumn struct {
 	IsKey       bool   //主键
 }
 
+// LoadStructTemplate 加载结构体生成模板
+func LoadStructTemplate(url string) {
+	os.Truncate(url, 0)
+	file, _ := os.OpenFile(url, os.O_CREATE|os.O_RDWR, 0666)
+	defer file.Close()
+	//os.Stdout
+	writer := bufio.NewWriter(file)
+
+	t, err := template.ParseFiles("./tmpl/struct.go.template")
+	if err != nil {
+		panic(err)
+	}
+	err = t.Execute(writer, MTables)
+	if err != nil {
+		panic(err)
+	}
+}
+
+// LoadDaoTemplate 加载Dao生成模板
+func LoadDaoTemplate(url string) {
+	os.Truncate(url, 0)
+	file, _ := os.OpenFile(url, os.O_CREATE|os.O_RDWR, 0666)
+	defer file.Close()
+
+	writer := bufio.NewWriterSize(file, 1<<31)
+
+	t, err := template.ParseFiles("./tmpl/dao.go.template")
+	if err != nil {
+		panic(err)
+	}
+	err = t.Execute(writer, MTables)
+	if err != nil {
+		panic(err)
+	}
+}
+
 func (receiver MTable) String() string {
 	return fmt.Sprintf("Name:%s,Comment:%s,MColumns:%s\n\n\n", receiver.Name, receiver.Comment, receiver.MColumns)
 }
@@ -109,6 +148,8 @@ func formatSqlToVueType(str string) string {
 		return "string"
 	case "longblob":
 		return "string"
+	case "char":
+		return "string"
 	default:
 		panic("未定义的类型:" + str)
 	}
@@ -126,6 +167,8 @@ func formatSqlType(str string) string {
 		return "time.Time"
 	case "longblob":
 		return "string"
+	case "char":
+		return "string"
 	default:
 		panic("未定义的类型:" + str)
 	}

+ 14 - 16
util/MysqlCreateGo.go

@@ -1,9 +1,7 @@
 package util
 
 import (
-	"bufio"
 	"fmt"
-	"os"
 	"strings"
 )
 
@@ -59,16 +57,17 @@ func MysqlToStruct() {
 		structString += fmt.Sprint("    return fmt.Sprint(\"", mtable.GreatHump, "{", toString[0:len(toString)-1], "}\")\n}\n\n")
 		fmt.Println(structString)
 	}
-	fileUrl := base_url + "\\data\\domain\\DoMain.go"
-	//清空文件
-	os.Truncate(fileUrl, 0)
-	file, _ := os.OpenFile(fileUrl, os.O_CREATE|os.O_RDWR, 0666)
-	defer file.Close()
-
-	writer := bufio.NewWriter(file)
-	//writer.WriteString("package domain\n\nimport (\n    \"fmt\"\n    \"time\"\n)\n\n")
-	writer.WriteString(structString)
-	writer.Flush()
+	//fileUrl := base_url + "\\data\\domain\\DoMain.go"
+	////清空文件
+	//os.Truncate(fileUrl, 0)
+	//file, _ := os.OpenFile(fileUrl, os.O_CREATE|os.O_RDWR, 0666)
+	//defer file.Close()
+	//
+	//writer := bufio.NewWriter(file)
+	////writer.WriteString("package domain\n\nimport (\n    \"fmt\"\n    \"time\"\n)\n\n")
+	//writer.WriteString(structString)
+	//writer.Flush()
+	WriteFile(GetDomainUrl(), structString)
 
 	//file.Write([]byte("package domain\n\nimport \"time\"\n"))
 	//file.Write([]byte(structString))
@@ -76,7 +75,6 @@ func MysqlToStruct() {
 
 // MysqlToDao 生成简单的CRUD dao层
 func MysqlToDao() {
-	var baseUrl = base_url + "data\\dao\\manage\\"
 	tables := MTables
 	for _, table := range tables {
 		var dao = ""
@@ -165,7 +163,7 @@ func MysqlToDao() {
 				"\n}"
 		}
 		//创建文件
-		url := baseUrl + fileName
+		url := GetDaoUrl() + fileName
 		WriteFile(url, dao)
 	}
 
@@ -181,6 +179,7 @@ func MysqlToBaseCRUDRouter() {
 		"\n\t\"demo/share\"" +
 		"\n\t\"encoding/json\"" +
 		"\n\t\"github.com/gin-gonic/gin\"" +
+		"\n\t\"github.com/mitchellh/mapstructure\"" +
 		"\n\t\"github.com/spf13/cast\"" +
 		"\n)" +
 		"\n"
@@ -273,6 +272,5 @@ func MysqlToBaseCRUDRouter() {
 	}
 
 	//url := "D:\\project\\study\\kkc\\go-xorm-create\\go-xorm-create\\text\\TextFile"
-	url := "D:\\project\\study\\kkc\\kkc-go\\router\\BasaeBackRouter.go"
-	WriteFile(url, template+getRouterFunc+routerHeader+routerBody)
+	WriteFile(GetRouterUrl(), template+getRouterFunc+routerHeader+routerBody)
 }

+ 10 - 4
util/MysqlCreateVue.go

@@ -24,7 +24,8 @@ func formatSqlToVueType(str string) string {
 }
 
 func MysqlToVueApi() {
-	vueFileContent := "import api, {ResponseData} from \"../api.ts\";\n\n"
+	vueFileContent := "import api, {ResponseData} from \"../api.ts\";" +
+		"\nimport {BaseListVo} from \"../detail/DetailApi.ts\";\n\n"
 	var objectList = ""
 	var apiList = ""
 	//生成结构体
@@ -65,7 +66,7 @@ func MysqlToVueApi() {
 			"\n" +
 			//"\nexport function GetBase" + table.GreatHump + "ListBy" + table.GreatHump + "(" + table.GreatHump + ": " + table.GreatHump + ", pageNum = 1, pageSize = 10) {" +
 			"\nexport function GetBase" + table.GreatHump + "ListBy" + table.GreatHump + "(param: " + table.GreatHump + ", pageNum = 1, pageSize = 10) {" +
-			"\n    return api.PostDataByPath(\"/back/base/" + table.LittleHump + "/list\", {param: param,pageNum: pageNum,pageSize: pageSize}, true) as Promise<ResponseData<BaseListVo<" + table.GreatHump + ">[]>>;" +
+			"\n    return api.PostDataByPath(\"/back/base/" + table.LittleHump + "/list\", {param: param,pageNum: pageNum,pageSize: pageSize}, true) as Promise<ResponseData<BaseListVo<" + table.GreatHump + ">>>;" +
 			"\n}" +
 			"\n" +
 			"\nexport function GetBase" + table.GreatHump + "ListByIds(ids: number[] | string[]) {" +
@@ -87,6 +88,11 @@ func MysqlToVueApi() {
 			"\n}\n\n"
 	}
 
-	url := "D:\\project\\study\\kkc\\kkc-shop\\src\\api\\back\\BaseBackApi.ts"
-	WriteFile(url, vueFileContent+apiList+objectList)
+	//url := "D:\\project\\study\\kkc\\kkc-shop\\src\\api\\back\\BaseBackApi.ts"
+	WriteFile(GetVueApiUrl(), vueFileContent+apiList+objectList)
+}
+
+// MysqlToVueView 生成vue的view表单
+func MysqlToVueView() {
+
 }

+ 17 - 0
util/ProjectUrl.go

@@ -0,0 +1,17 @@
+package util
+
+const projectGoUrl = "D:\\project\\study\\kkc\\kkc-go\\"
+const projectVueUrl = "D:\\project\\study\\kkc\\kkc-shop\\"
+
+func GetDomainUrl() string {
+	return projectGoUrl + "data\\domain\\DoMain.go"
+}
+func GetDaoUrl() string {
+	return projectGoUrl + "data\\dao\\manage\\"
+}
+func GetRouterUrl() string {
+	return projectGoUrl + "router\\BaseBackRouter.go"
+}
+func GetVueApiUrl() string {
+	return projectVueUrl + "src\\api\\back\\BaseBackApi.ts"
+}