package main import ( "bufio" "dsSzxy/Utils/CommonUtil" "dsSzxy/Utils/ConfigUtil" "fmt" "io" "io/ioutil" "os" "os/exec" "strings" "syscall" ) func main() { //记得检查是否xorm已安装 // go get github.com/go-xorm/cmd/xorm //执行一次 var para = ConfigUtil.MysqlUser + ":" + ConfigUtil.MysqlPwd + "@(" + ConfigUtil.MysqlIp + ":" + ConfigUtil.MysqlPort + ")/" + ConfigUtil.MysqlDbName + "?charset=utf8" CommonUtil.Exec("xorm", "reverse", "mysql", para, "Templates") //替换生成 path := "./models" fs, _ := ioutil.ReadDir(path) for _, file := range fs { if !file.IsDir() { var writeString = "" //按行读取 f, _ := os.Open(path + "/" + file.Name()) defer f.Close() buff := bufio.NewReader(f) //是不是发现了时间类型 var foundTime = false for { line, err := buff.ReadString('\n') if err != nil || io.EOF == err { break } //修复int和in32的兼容问题 line = strings.Replace(line, " int ", " int32 ", -1) //如果包含LastUpdatedTime if strings.Index(line, "LastUpdatedTime") >= 0 { continue } if strings.Index(line, "ActionTime") >= 0 { continue } if strings.Index(line, "CreateTime") >= 0 { continue } //如果包含id_int if strings.Index(line, "IdInt") >= 0 { continue } //去掉 if strings.Index(line, "time.Time") >= 0 { foundTime = true } writeString += line } //保存文件 if !foundTime { replaceContent := `import ( "time" )` writeString = strings.Replace(writeString, replaceContent, "", -1) } var d1 = []byte(writeString) modelFile := path + "/" + file.Name() ioutil.WriteFile(modelFile, d1, 0666) //写入文件(字节数组) //格式化文件 cmd := exec.Command("gofmt", "-l", "-w", modelFile) cmd.SysProcAttr = &syscall.SysProcAttr{HideWindow: true} err := cmd.Run() if err != nil { fmt.Println(err.Error()) } fmt.Println(CommonUtil.GetCurrentTime(), "\t", "成功完成"+file.Name()) } } fmt.Println("恭喜,全部实体表成功完成!") }