From d81d3b6ca97a7a12f7c387c9a7c71ca1397ba292 Mon Sep 17 00:00:00 2001 From: virus Date: Tue, 15 Sep 2020 18:54:12 +0800 Subject: [PATCH] =?UTF-8?q?[FIX]=E4=BD=BF=E7=94=A8postgresql?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- conf/app.ini | 7 +++--- go.mod | 9 ++----- models/employee.go | 18 ++++++++++++++ models/models.go | 16 +++++++------ routers/admin/employee.go | 49 +++++++++++++++++++++++++++++++++++++++ routers/router.go | 7 ++++++ 6 files changed, 89 insertions(+), 17 deletions(-) create mode 100644 models/employee.go create mode 100644 routers/admin/employee.go diff --git a/conf/app.ini b/conf/app.ini index 9415757..3dc8852 100644 --- a/conf/app.ini +++ b/conf/app.ini @@ -10,9 +10,10 @@ READ_TIMEOUT = 60 WRITE_TIMEOUT = 60 [database] -TYPE = mysql -USER = root +TYPE = postgres +USER = postgres PASSWORD = a19960425 -HOST = localhost:3306 +HOST = 0.0.0.0 +PORT = 5432 NAME = blog TABLE_PREFIX = blog_ diff --git a/go.mod b/go.mod index d46f870..ff4ac38 100644 --- a/go.mod +++ b/go.mod @@ -3,26 +3,21 @@ module github.com/go-pripro/shop go 1.15 require ( + github.com/astaxie/beego v1.12.2 github.com/dgrijalva/jwt-go v3.2.0+incompatible github.com/gin-gonic/gin v1.6.3 github.com/go-ini/ini v1.61.0 github.com/go-playground/validator/v10 v10.3.0 // indirect - github.com/golang/protobuf v1.4.2 // indirect github.com/jinzhu/gorm v1.9.16 - github.com/json-iterator/go v1.1.10 // indirect github.com/lib/pq v1.2.0 // indirect - github.com/mattn/go-sqlite3 v2.0.3+incompatible // indirect - github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect - github.com/modern-go/reflect2 v1.0.1 // indirect - github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e // indirect github.com/smartystreets/goconvey v0.0.0-20190731233626-505e41936337 // indirect + github.com/swaggo/gin-swagger v1.2.0 github.com/ugorji/go v1.1.8 // indirect github.com/unknwon/com v1.0.1 golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9 // indirect golang.org/x/sys v0.0.0-20200909081042-eff7692f9009 // indirect golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1 // indirect google.golang.org/protobuf v1.25.0 // indirect - gopkg.in/check.v1 v1.0.0-20200227125254-8fa46927fb4f // indirect gopkg.in/ini.v1 v1.61.0 // indirect gopkg.in/yaml.v2 v2.3.0 // indirect ) diff --git a/models/employee.go b/models/employee.go new file mode 100644 index 0000000..08a252f --- /dev/null +++ b/models/employee.go @@ -0,0 +1,18 @@ +package models + +type Employee struct { + ID int `gorm:"primary_key" json:"id"` + Username string `json:"username"` + Password string `json:"password"` + Department string `json:"department"` + Position string `json:"position"` +} + +func CheckEmployee(username, password string) bool { + var employee Employee + db.Select("id").Where(Employee{Username: username, Password: password}).First(&employee) + if employee.ID > 0 { + return true + } + return false +} \ No newline at end of file diff --git a/models/models.go b/models/models.go index 191aa8a..455e6b6 100644 --- a/models/models.go +++ b/models/models.go @@ -4,7 +4,7 @@ import ( "fmt" "github.com/go-pripro/shop/pkg/setting" "github.com/jinzhu/gorm" - _ "github.com/jinzhu/gorm/dialects/mysql" + _ "github.com/jinzhu/gorm/dialects/postgres" "log" ) @@ -19,7 +19,7 @@ type Model struct { func init() { var ( err error - dbType, dbName, user, password, host, tablePrefix string + dbType, dbName, user, password, host, port, tablePrefix string ) sec, err := setting.Cfg.GetSection("database") @@ -32,13 +32,15 @@ func init() { user = sec.Key("USER").String() password = sec.Key("PASSWORD").String() host = sec.Key("HOST").String() + port = sec.Key("PORT").String() tablePrefix = sec.Key("TABLE_PREFIX").String() - db, err = gorm.Open(dbType, fmt.Sprintf("%s:%s@tcp(%s)/%s?charset=utf8&parseTime=True&loc=Local", - user, - password, + db, err = gorm.Open(dbType, fmt.Sprintf("host=%s user=%s dbname=%s port=%s sslmode=disable password=%s", host, - dbName)) + user, + dbName, + port, + password)) if err != nil { log.Println(err) @@ -48,7 +50,7 @@ func init() { return tablePrefix + defaultTableName } - //db.AutoMigrate(&Tag{}, &Article{}, &Auth{}) + db.AutoMigrate(&Employee{}) //db.SingularTable(true) db.LogMode(true) db.DB().SetMaxIdleConns(10) diff --git a/routers/admin/employee.go b/routers/admin/employee.go new file mode 100644 index 0000000..8e00da9 --- /dev/null +++ b/routers/admin/employee.go @@ -0,0 +1,49 @@ +package admin + +import ( + "github.com/astaxie/beego/validation" + "github.com/gin-gonic/gin" + "github.com/go-pripro/shop/models" + "github.com/go-pripro/shop/pkg/e" + "github.com/go-pripro/shop/pkg/logging" + "github.com/go-pripro/shop/pkg/util" + "net/http" +) + +type Employee struct { + Username string `valid:"Required; MaxSize(50)"` + Password string `valid:"Required; MaxSize(50)"` +} + +func GetEmployee(c *gin.Context) { + username := c.Query("username") + password := c.Query("password") + valid := validation.Validation{} + a := Employee{Username: username, Password: password} + ok, _ := valid.Valid(&a) + data := make(map[string]interface{}) + code := e.INVALID_PARAMS + if ok { + isExist := models.CheckEmployee(username, password) + if isExist { + token, err := util.GenerateToken(username, password) + if err != nil { + code = e.ERROR_AUTH_TOKEN + } else { + data["token"] = token + code = e.SUCCESS + } + } else { + code = e.ERROR_AUTH + } + } else { + for _, err := range valid.Errors { + logging.Info(err.Key, err.Message) + } + } + c.JSON(http.StatusOK, gin.H{ + "code": code, + "msg": e.GetMsg(code), + "data": data, + }) +} \ No newline at end of file diff --git a/routers/router.go b/routers/router.go index 5977f7f..669e1bb 100644 --- a/routers/router.go +++ b/routers/router.go @@ -3,6 +3,9 @@ package routers import ( "github.com/gin-gonic/gin" "github.com/go-pripro/shop/pkg/setting" + "github.com/go-pripro/shop/routers/admin" + ginSwagger "github.com/swaggo/gin-swagger" + "github.com/swaggo/gin-swagger/swaggerFiles" ) func InitRouter() *gin.Engine { @@ -25,5 +28,9 @@ func InitRouter() *gin.Engine { }) }) + r.GET("/swagger/*any", ginSwagger.WrapHandler(swaggerFiles.Handler)) + + r.GET("/login", admin.GetEmployee) + return r }