From ec7df630f8cb1fed7fe7c20012d7a75ba599f261 Mon Sep 17 00:00:00 2001 From: wucongxing8150 <815046773@qq.com> Date: Fri, 13 Jun 2025 18:24:51 +0800 Subject: [PATCH] =?UTF-8?q?=E6=96=B0=E5=A2=9E=E4=BA=86=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- api/controller/Public.go | 101 +++++++++++++++++++++++++++++++++++++++ api/requests/Public.go | 8 +++- api/router/router.go | 2 + 3 files changed, 110 insertions(+), 1 deletion(-) diff --git a/api/controller/Public.go b/api/controller/Public.go index 9d8b2b9..64872c8 100644 --- a/api/controller/Public.go +++ b/api/controller/Public.go @@ -11,6 +11,7 @@ import ( "fmt" "github.com/gin-gonic/gin" "net/http" + "strconv" ) type Public struct{} @@ -238,6 +239,106 @@ func (b *Public) Login(c *gin.Context) { responses.OkWithData(g, c) } +// LoginProgram Login 登陆-小程序 +func (b *Public) LoginProgram(c *gin.Context) { + publicRequest := requests.PublicRequest{} + req := publicRequest.LoginProgram + if err := c.ShouldBind(&req); err != nil { + c.JSON(http.StatusOK, gin.H{ + "message": "登录失败", + "code": -2, + "data": gin.H{ + "source": 2, + }, + }) + + return + } + + // 参数验证 + if err := global.Validate.Struct(req); err != nil { + c.JSON(http.StatusOK, gin.H{ + "message": "登录失败", + "code": -2, + "data": gin.H{ + "source": 2, + }, + }) + + return + } + + // 解析token + t, err := utils.ParseJwt(req.Token) + if err != nil { + c.JSON(http.StatusOK, gin.H{ + "message": "登录失败", + "code": -2, + "data": gin.H{ + "source": 2, + }, + }) + + return + } + + // 转换类型 + userId, err := strconv.ParseInt(t.UserId, 10, 64) + if err != nil { + c.JSON(http.StatusOK, gin.H{ + "message": "登录失败", + "code": -2, + "data": gin.H{ + "source": 2, + }, + }) + + return + } + + // 获取用户信息 + userDao := dao.UserDao{} + maps := make(map[string]interface{}) + maps["user_id"] = userId + user, _ := userDao.GetUser(maps) + if user == nil { + c.JSON(http.StatusOK, gin.H{ + "message": "登录失败", + "code": -2, + "data": gin.H{ + "source": 2, + }, + }) + + return + } + + // 下发token + token := &utils.Token{ + UserId: fmt.Sprintf("%d", user.UserId), + PlatformId: fmt.Sprintf("%d", 2), + } + + // 生成jwt + jwt, err := token.NewJWT() + if err != nil || jwt == "" { + c.JSON(http.StatusOK, gin.H{ + "message": "登陆失败", + "code": -1, + "data": gin.H{ + "source": 2, + }, + }) + + return + } + + g := dto.UserLoginDto(user) + g.LoadToken(jwt) + + responses.OkWithData(g, c) +} + func (b *Public) T(c *gin.Context) { // 开始事务 tx := global.Db.Begin() diff --git a/api/requests/Public.go b/api/requests/Public.go index 0a74f88..811cfb8 100644 --- a/api/requests/Public.go +++ b/api/requests/Public.go @@ -1,7 +1,8 @@ package requests type PublicRequest struct { - Login // 登陆 + Login // 登陆 + LoginProgram // 登陆-小程序 } // Login 登陆 @@ -21,3 +22,8 @@ type Login struct { Address string `json:"address" form:"address" label:"地址"` Title string `json:"title" form:"title" label:"职称"` } + +// LoginProgram 登陆-小程序 +type LoginProgram struct { + Token string `json:"token" form:"token" validate:"required" label:"token"` +} diff --git a/api/router/router.go b/api/router/router.go index 21b65b4..478235d 100644 --- a/api/router/router.go +++ b/api/router/router.go @@ -73,6 +73,8 @@ func Init() *gin.Engine { // publicRouter 公开路由-不验证权限 func publicRouter(r *gin.Engine, api controller.Api) { r.POST("/login", api.Public.Login) + + r.POST("/login/program", api.Public.LoginProgram) //r.POST("/t", api.Public.T) }