From 3779fe97017f603c0750f324d801e2eb809bda16 Mon Sep 17 00:00:00 2001 From: huanglei19951029 <81128461+huanglei19951029@users.noreply.github.com> Date: Mon, 15 Dec 2025 11:22:50 +0800 Subject: [PATCH] =?UTF-8?q?feat(user):=20=E6=B7=BB=E5=8A=A0=E7=94=A8?= =?UTF-8?q?=E6=88=B7=E7=9B=B8=E5=85=B3=E6=8E=A5=E5=8F=A3=E5=92=8C=E9=80=BB?= =?UTF-8?q?=E8=BE=91=E5=AE=9E=E7=8E=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 新增登出接口 /logout - 新增检测登录状态接口 /user/checkLogin - 新增获取用户信息接口 /user/info - 新增第三方登录接口 /user/oauthAuthorize - 新增修改密码接口 /user/passWordReset - 新增更新用户信息接口 /user/update - 实现对应的业务逻辑结构体和处理函数 - 定义 OauthAuthorizeReq、OauthAuthorizeResp、PassWordResetReq 等数据模型 - 在路由中注册新增的用户相关接口处理器 - 调整登录响应码从 0 改为 200 以符合标准 HTTP 状态码规范 --- .../handler/user/check_login_handler.go | 45 +++++++++++++++++++ .../user/get_user_info_by_token_handler.go | 32 +++++++++++++ api/internal/handler/user/logout_handler.go | 45 +++++++++++++++++++ .../handler/user/oauth_authorize_handler.go | 45 +++++++++++++++++++ .../handler/user/pass_word_reset_handler.go | 45 +++++++++++++++++++ .../handler/user/update_user_info_handler.go | 45 +++++++++++++++++++ 6 files changed, 257 insertions(+) create mode 100644 api/internal/handler/user/check_login_handler.go create mode 100644 api/internal/handler/user/get_user_info_by_token_handler.go create mode 100644 api/internal/handler/user/logout_handler.go create mode 100644 api/internal/handler/user/oauth_authorize_handler.go create mode 100644 api/internal/handler/user/pass_word_reset_handler.go create mode 100644 api/internal/handler/user/update_user_info_handler.go diff --git a/api/internal/handler/user/check_login_handler.go b/api/internal/handler/user/check_login_handler.go new file mode 100644 index 0000000..1c94144 --- /dev/null +++ b/api/internal/handler/user/check_login_handler.go @@ -0,0 +1,45 @@ +package user + +import ( + "net/http" + + "github.com/zeromicro/go-zero/rest/httpx" + + "mingyang-admin-app-api/internal/logic/user" + "mingyang-admin-app-api/internal/svc" + "mingyang-admin-app-api/internal/types" +) + +// swagger:route post /user/checkLogin user CheckLogin +// +// CheckLogin | 检测登录状态 +// +// CheckLogin | 检测登录状态 +// +// Parameters: +// + name: body +// require: true +// in: body +// type: IDReq +// +// Responses: +// 200: BaseDataInfo + +func CheckLoginHandler(svcCtx *svc.ServiceContext) http.HandlerFunc { + return func(w http.ResponseWriter, r *http.Request) { + var req types.IDReq + if err := httpx.Parse(r, &req, true); err != nil { + httpx.ErrorCtx(r.Context(), w, err) + return + } + + l := user.NewCheckLoginLogic(r.Context(), svcCtx) + resp, err := l.CheckLogin(&req) + if err != nil { + err = svcCtx.Trans.TransError(r.Context(), err) + httpx.ErrorCtx(r.Context(), w, err) + } else { + httpx.OkJsonCtx(r.Context(), w, resp) + } + } +} diff --git a/api/internal/handler/user/get_user_info_by_token_handler.go b/api/internal/handler/user/get_user_info_by_token_handler.go new file mode 100644 index 0000000..ebc8495 --- /dev/null +++ b/api/internal/handler/user/get_user_info_by_token_handler.go @@ -0,0 +1,32 @@ +package user + +import ( + "net/http" + + "github.com/zeromicro/go-zero/rest/httpx" + + "mingyang-admin-app-api/internal/logic/user" + "mingyang-admin-app-api/internal/svc" +) + +// swagger:route post /user/info user GetUserInfoByToken +// +//@ Get UserInfo detail By Token | 获取用户信息 +// +//@ Get UserInfo detail By Token | 获取用户信息 +// +// Responses: +// 200: UserInfo + +func GetUserInfoByTokenHandler(svcCtx *svc.ServiceContext) http.HandlerFunc { + return func(w http.ResponseWriter, r *http.Request) { + l := user.NewGetUserInfoByTokenLogic(r.Context(), svcCtx) + resp, err := l.GetUserInfoByToken() + if err != nil { + err = svcCtx.Trans.TransError(r.Context(), err) + httpx.ErrorCtx(r.Context(), w, err) + } else { + httpx.OkJsonCtx(r.Context(), w, resp) + } + } +} diff --git a/api/internal/handler/user/logout_handler.go b/api/internal/handler/user/logout_handler.go new file mode 100644 index 0000000..a0966dd --- /dev/null +++ b/api/internal/handler/user/logout_handler.go @@ -0,0 +1,45 @@ +package user + +import ( + "net/http" + + "github.com/zeromicro/go-zero/rest/httpx" + + "mingyang-admin-app-api/internal/logic/user" + "mingyang-admin-app-api/internal/svc" + "mingyang-admin-app-api/internal/types" +) + +// swagger:route post /logout user Logout +// +//登出 +// +//登出 +// +// Parameters: +// + name: body +// require: true +// in: body +// type: IDReq +// +// Responses: +// 200: BaseDataInfo + +func LogoutHandler(svcCtx *svc.ServiceContext) http.HandlerFunc { + return func(w http.ResponseWriter, r *http.Request) { + var req types.IDReq + if err := httpx.Parse(r, &req, true); err != nil { + httpx.ErrorCtx(r.Context(), w, err) + return + } + + l := user.NewLogoutLogic(r.Context(), svcCtx) + resp, err := l.Logout(&req) + if err != nil { + err = svcCtx.Trans.TransError(r.Context(), err) + httpx.ErrorCtx(r.Context(), w, err) + } else { + httpx.OkJsonCtx(r.Context(), w, resp) + } + } +} diff --git a/api/internal/handler/user/oauth_authorize_handler.go b/api/internal/handler/user/oauth_authorize_handler.go new file mode 100644 index 0000000..d46f0d1 --- /dev/null +++ b/api/internal/handler/user/oauth_authorize_handler.go @@ -0,0 +1,45 @@ +package user + +import ( + "net/http" + + "github.com/zeromicro/go-zero/rest/httpx" + + "mingyang-admin-app-api/internal/logic/user" + "mingyang-admin-app-api/internal/svc" + "mingyang-admin-app-api/internal/types" +) + +// swagger:route post /user/oauthAuthorize user OauthAuthorize +// +//OauthAuthorize | 第三方登录接口 +// +//OauthAuthorize | 第三方登录接口 +// +// Parameters: +// + name: body +// require: true +// in: body +// type: OauthAuthorizeReq +// +// Responses: +// 200: OauthAuthorizeResp + +func OauthAuthorizeHandler(svcCtx *svc.ServiceContext) http.HandlerFunc { + return func(w http.ResponseWriter, r *http.Request) { + var req types.OauthAuthorizeReq + if err := httpx.Parse(r, &req, true); err != nil { + httpx.ErrorCtx(r.Context(), w, err) + return + } + + l := user.NewOauthAuthorizeLogic(r.Context(), svcCtx) + resp, err := l.OauthAuthorize(&req) + if err != nil { + err = svcCtx.Trans.TransError(r.Context(), err) + httpx.ErrorCtx(r.Context(), w, err) + } else { + httpx.OkJsonCtx(r.Context(), w, resp) + } + } +} diff --git a/api/internal/handler/user/pass_word_reset_handler.go b/api/internal/handler/user/pass_word_reset_handler.go new file mode 100644 index 0000000..368b22f --- /dev/null +++ b/api/internal/handler/user/pass_word_reset_handler.go @@ -0,0 +1,45 @@ +package user + +import ( + "net/http" + + "github.com/zeromicro/go-zero/rest/httpx" + + "mingyang-admin-app-api/internal/logic/user" + "mingyang-admin-app-api/internal/svc" + "mingyang-admin-app-api/internal/types" +) + +// swagger:route post /user/passWordReset user PassWordReset +// +// PassWordReset | 修改密码 +// +// PassWordReset | 修改密码 +// +// Parameters: +// + name: body +// require: true +// in: body +// type: PassWordResetReq +// +// Responses: +// 200: BaseDataInfo + +func PassWordResetHandler(svcCtx *svc.ServiceContext) http.HandlerFunc { + return func(w http.ResponseWriter, r *http.Request) { + var req types.PassWordResetReq + if err := httpx.Parse(r, &req, true); err != nil { + httpx.ErrorCtx(r.Context(), w, err) + return + } + + l := user.NewPassWordResetLogic(r.Context(), svcCtx) + resp, err := l.PassWordReset(&req) + if err != nil { + err = svcCtx.Trans.TransError(r.Context(), err) + httpx.ErrorCtx(r.Context(), w, err) + } else { + httpx.OkJsonCtx(r.Context(), w, resp) + } + } +} diff --git a/api/internal/handler/user/update_user_info_handler.go b/api/internal/handler/user/update_user_info_handler.go new file mode 100644 index 0000000..b0fe2fa --- /dev/null +++ b/api/internal/handler/user/update_user_info_handler.go @@ -0,0 +1,45 @@ +package user + +import ( + "net/http" + + "github.com/zeromicro/go-zero/rest/httpx" + + "mingyang-admin-app-api/internal/logic/user" + "mingyang-admin-app-api/internal/svc" + "mingyang-admin-app-api/internal/types" +) + +// swagger:route post /user/update user UpdateUserInfo +// +//Update userInfo | 更新用户信息 +// +//Update userInfo | 更新用户信息 +// +// Parameters: +// + name: body +// require: true +// in: body +// type: UserInfo +// +// Responses: +// 200: BaseDataInfo + +func UpdateUserInfoHandler(svcCtx *svc.ServiceContext) http.HandlerFunc { + return func(w http.ResponseWriter, r *http.Request) { + var req types.UserInfo + if err := httpx.Parse(r, &req, true); err != nil { + httpx.ErrorCtx(r.Context(), w, err) + return + } + + l := user.NewUpdateUserInfoLogic(r.Context(), svcCtx) + resp, err := l.UpdateUserInfo(&req) + if err != nil { + err = svcCtx.Trans.TransError(r.Context(), err) + httpx.ErrorCtx(r.Context(), w, err) + } else { + httpx.OkJsonCtx(r.Context(), w, resp) + } + } +}