From f12f0016640578cfb99a2f54e5cdf49829514570 Mon Sep 17 00:00:00 2001 From: 18650180552 Date: Thu, 7 Mar 2019 14:06:29 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96=E4=BA=86=E4=BB=A3=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- controller/{mail/upload.go => file.go} | 10 +++- controller/{mail => }/mail.go | 13 ++-- controller/{hanlder.go => user.go} | 82 ++++++++++++++------------ main.go | 64 ++++++++++++-------- 4 files changed, 99 insertions(+), 70 deletions(-) rename controller/{mail/upload.go => file.go} (80%) rename controller/{mail => }/mail.go (95%) rename controller/{hanlder.go => user.go} (90%) diff --git a/controller/mail/upload.go b/controller/file.go similarity index 80% rename from controller/mail/upload.go rename to controller/file.go index c8528e4..724f18f 100644 --- a/controller/mail/upload.go +++ b/controller/file.go @@ -1,4 +1,4 @@ -package mail +package controller import ( "fmt" @@ -8,7 +8,11 @@ import ( "os" ) -func OnUpload(c *gin.Context) { +type FileController struct { + +} + +func (this *FileController) OnUpload(c *gin.Context) { file, header, err := c.Request.FormFile("upload") filename := header.Filename fmt.Println(header.Filename) @@ -23,7 +27,7 @@ func OnUpload(c *gin.Context) { } } -func OnDownLoad(c *gin.Context) { +func (this *FileController) OnDownLoad(c *gin.Context) { file, header, err := c.Request.FormFile("upload") filename := header.Filename fmt.Println(header.Filename) diff --git a/controller/mail/mail.go b/controller/mail.go similarity index 95% rename from controller/mail/mail.go rename to controller/mail.go index bc96ec0..5787a6d 100644 --- a/controller/mail/mail.go +++ b/controller/mail.go @@ -1,4 +1,4 @@ -package mail +package controller import ( "bufio" @@ -15,10 +15,11 @@ import ( "text/template" "time" "user/config" - "user/controller" "user/db" ) +type MailController struct { +} type RespJson struct { Msg string `json:"msg"` Data interface{} `json:"data,omitempty"` @@ -67,7 +68,7 @@ type ReqSendEmail struct { Content string `json:"content"` } -func SendToMail(title, user, password, host, to, content string) error { +func SendToMailWithUserInfo(title, user, password, host, to, content string) error { var content_type string hp := strings.Split(host, ":") auth := smtp.PlainAuth("", user, password, hp[0]) @@ -235,7 +236,7 @@ func OnSendEmailTpl(c *gin.Context) { //content :网页模板的参数 key-value结构 //temp_data 模板内具体要替换的变量名字 Key-value结构 //generate 是否生成静态html -func OnSendEmailCode(c *gin.Context) { +func (this *MailController)OnSendEmailCode(c *gin.Context) { var req ReqSendEmail var resp RespJson defer func() { @@ -268,11 +269,11 @@ func OnSendEmailCode(c *gin.Context) { //抄送给自己 //e = SendToMail(user,password,host,req.From,req.Template,req.Content,"html") //发送 - verCode := controller.CreateVerify(6) + verCode := CreateVerify(6) content := "您的验证码是" + verCode userKey := fmt.Sprintf("user_%s_verify", req.Email) config.RedisOne().Set(userKey, verCode, time.Hour*24) - e = SendToMail("后台管理系统验证码", user, password, host, req.Email, content) + e = SendToMailWithUserInfo("后台管理系统验证码", user, password, host, req.Email, content) if nil != e { log.Println(e.Error()) resp.Msg = "Error" diff --git a/controller/hanlder.go b/controller/user.go similarity index 90% rename from controller/hanlder.go rename to controller/user.go index 1a0d270..cfd95dc 100644 --- a/controller/hanlder.go +++ b/controller/user.go @@ -1,30 +1,33 @@ package controller import ( - "bytes" - "crypto/md5" - "encoding/json" - "errors" - "fmt" - "github.com/fatih/structs" - "github.com/gin-gonic/gin" - _ "github.com/go-sql-driver/mysql" - "github.com/tommy351/gin-sessions" - "io" - "log" - "math/rand" - "net/http" - "net/smtp" - "regexp" - "strconv" - "strings" - "time" - "user/config" - "user/db" - "user/logs" - "user/model" - "user/redis" +"bytes" +"crypto/md5" +"encoding/json" +"errors" +"fmt" +"github.com/fatih/structs" +"github.com/gin-gonic/gin" +_ "github.com/go-sql-driver/mysql" +"github.com/tommy351/gin-sessions" +"io" +"log" +"math/rand" +"net/http" +"net/smtp" +"regexp" +"strconv" +"strings" +"time" +"user/config" +"user/db" +"user/logs" +"user/model" +"user/redis" ) +type UserController struct{ + +} type ReqSendEmailCode struct { EmailAdress string `json:"email_address"` @@ -42,7 +45,7 @@ type RespBase struct { Data interface{} } -func Auth(c *gin.Context) { +func (this *UserController)Auth(c *gin.Context) { var resp RespBase var statuscode int @@ -78,14 +81,14 @@ func Auth(c *gin.Context) { // @Param q query string false "name search by q" // @Success 200 {array} util.RespBase // @Router /accounts [get] -func SetUser(c *gin.Context) { +func (this *UserController) SetUser(c *gin.Context) { } -func DelUser(c *gin.Context) { +func (this *UserController) DelUser(c *gin.Context) { } -func GetUser(c *gin.Context) { +func (this *UserController) GetUser(c *gin.Context) { var resp RespBase resp.Msg = "操作失败" resp.Status = 20 @@ -121,7 +124,7 @@ func GetUser(c *gin.Context) { // @Param department_id query string false "name search by q" // @Param permission_type query string false "name search by q" // @Router /api/users [get] -func Users(c *gin.Context) { +func (this *UserController) Users(c *gin.Context) { var statuscode int var resp RespBase @@ -163,7 +166,7 @@ func Users(c *gin.Context) { // @Param department_id query string false "name search by q" // @Param permission_type query string false "name search by q" // @Router /api/users [get] -func SerarchUsers(c *gin.Context) { +func (this *UserController) SerarchUsers(c *gin.Context) { var statuscode int var resp RespBase @@ -194,7 +197,7 @@ func SerarchUsers(c *gin.Context) { resp.Msg = "OK" resp.Data = dat } -func CreateVerify(length int32) string { +func CreateVerify(length int32) string { strAry := []byte{'0', '1', '2', '3', '4', '5', '6', '7', '8', '9'} result := string("") for i := int32(0); i < length; i++ { @@ -209,7 +212,7 @@ func CreateVerify(length int32) string { * @param {Number} length 取Token的长度 * @return {string} 获取的Token */ -func createToken(length int32) string { +func createToken(length int32) string { strAry := []byte{'0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z', 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z', '_'} result := string("") for i := int32(0); i < length; i++ { @@ -248,7 +251,7 @@ func DefaultOption(c *gin.Context) { // @Failure 404 {object} util.RespBase // @Failure 500 {object} util.RespBase // @Router /api/login [post] -func Login(c *gin.Context) { +func (this *UserController) Login(c *gin.Context) { type LoginReq struct { RememberMe int32 `json:"remember_me"` UserName string `json:"user_name"` @@ -324,7 +327,7 @@ func Login(c *gin.Context) { } } -func Register(c *gin.Context) { +func (this *UserController) Register(c *gin.Context) { type RegisterReq struct { DisplayName string `json:"display_name"` EmailAdress string `json:"email_address"` @@ -405,7 +408,7 @@ func Register(c *gin.Context) { resp.Status = 0 } -func Logout(c *gin.Context) { +func (this *UserController) Logout(c *gin.Context) { var resp RespBase resp.Msg = "退出成功" @@ -431,7 +434,7 @@ func Reader2Json(r io.ReadCloser) string { return ret } -func SendExternalEmail(msg interface{}) error { +func SendExternalEmail(msg interface{}) error { req := make(map[string]interface{}, 1) req["type"] = "text" req["action"] = "smtp-sys" @@ -489,7 +492,7 @@ func SendToMail(title, user string, password string, host string, to string, con return err } -func SendEmailCode(c *gin.Context) { +func (this *UserController) SendEmailCode(c *gin.Context) { var req ReqSendEmailCode var resp RespBase = RespBase{Msg: "邮件已经存在", Status: 0} statusCode := 200 @@ -506,7 +509,12 @@ func SendEmailCode(c *gin.Context) { } //判断邮箱是否存在 var users []model.Users - db.GetMysqlClient().Query2("select * from users where email_adress = ?", &users, req.EmailAdress) + e = db.GetMysqlClient().Query2("select * from users where email_adress = ?", &users, req.EmailAdress) + if nil != e{ + log.Print(e.Error()) + resp.Msg = "email address error" + return + } if len(users) != 0 { statusCode = 422 return diff --git a/main.go b/main.go index ef5cbc2..8c55710 100644 --- a/main.go +++ b/main.go @@ -7,11 +7,21 @@ import ( "strconv" "user/config" "user/controller" - "user/controller/mail" "user/db" "user/logs" ) +var ( + userController = controller.UserController{} + mailContoller = controller.MailController{} +) + +func InitConfig() { + e := config.Init("user.yaml") + if nil != e { + log.Println(e.Error()) + } +} func InitMysql() { c := config.GetMysqlConfig() if c == nil { @@ -20,6 +30,16 @@ func InitMysql() { db.Init() } } +func InitRedis() { + e := config.InitRedis() + if nil != e { + logs.Error(e.Error()) + return + } +} +func InitLogs() { + logs.Init(config.GetLogConfig().Dir, config.GetLogConfig().File, config.GetLogConfig().Level, config.GetLogConfig().SaveFile) +} func CORSMiddleware(c *gin.Context) { ori := c.Request.Header.Get("Origin") c.Writer.Header().Set("Access-Control-Allow-Methods", "POST, GET, OPTIONS, PUT, DELETE, UPDATE") @@ -37,42 +57,38 @@ func CORSMiddleware(c *gin.Context) { } } + func main() { - e := config.Init("user.yaml") - if nil != e { - log.Println(e.Error()) - } - logs.Init(config.GetLogConfig().Dir, config.GetLogConfig().File, config.GetLogConfig().Level, config.GetLogConfig().SaveFile) - db.Init() - e = config.InitRedis() - if nil != e { - logs.Error(e.Error()) - return - } + InitConfig() + InitLogs() + InitRedis() + InitMysql() + r := gin.Default() store := sessions.NewCookieStore([]byte("secret123")) - r.Use(sessions.Middleware("my_session", store)) + r.Use(sessions.Middleware("sess_store", store)) r.Use(CORSMiddleware) + api := r.Group("/api") { /** 添加或修改用户 **/ - r.POST("/api/user", controller.SetUser) + api.POST("/api/user", userController.SetUser) /** 删除用户 **/ - r.DELETE("/api/user", controller.DelUser) + api.DELETE("/api/user", userController.DelUser) /** 获取单独用户详情信息 methods(id) **/ - r.GET("/api/user", controller.GetUser) + api.GET("/api/user", userController.GetUser) /** 获取所有用户 **/ - r.GET("/api/users", controller.Users) - r.POST("/api/search_users", controller.SerarchUsers) + api.GET("/api/users", userController.Users) + api.POST("/api/search_users", userController.SerarchUsers) /** 用户登录 **/ - r.POST("/api/login", controller.Login) + api.POST("/api/login", userController.Login) /** 用户注册 **/ - r.POST("/api/register", controller.Register) + api.POST("/api/register", userController.Register) /** 用户退出登陆 **/ - r.GET("/api/logout", controller.Logout) - r.POST("/api/verify", mail.OnSendEmailCode) + api.GET("/api/logout", userController.Logout) + api.POST("/api/verify", mailContoller.OnSendEmailCode) } - e = r.Run(":" + strconv.Itoa(config.GetPort())) - if nil != e{ + e := r.Run(":" + strconv.Itoa(config.GetPort())) + if nil != e { log.Print(e.Error()) } }