add: some user api and all api desc

This commit is contained in:
wwweww
2026-02-27 19:17:01 +08:00
parent a0c720eb2f
commit 5930fb0dde
156 changed files with 9457 additions and 1086 deletions
@@ -12,17 +12,17 @@ import (
"juwan-backend/app/users/api/internal/types"
)
// 用户登出
func LogoutHandler(svcCtx *svc.ServiceContext) http.HandlerFunc {
// 关注用户
func FollowUserHandler(svcCtx *svc.ServiceContext) http.HandlerFunc {
return func(w http.ResponseWriter, r *http.Request) {
var req types.LogoutReq
var req types.FollowUserReq
if err := httpx.Parse(r, &req); err != nil {
httpx.ErrorCtx(r.Context(), w, err)
return
}
l := user.NewLogoutLogic(r.Context(), svcCtx)
resp, err := l.Logout(&req)
l := user.NewFollowUserLogic(r.Context(), svcCtx)
resp, err := l.FollowUser(&req)
if err != nil {
httpx.ErrorCtx(r.Context(), w, err)
} else {
@@ -1,49 +0,0 @@
// Code scaffolded by goctl. Safe to edit.
// goctl 1.9.2
package user
import (
"juwan-backend/app/users/api/internal/logic/user"
"juwan-backend/app/users/api/internal/svc"
"juwan-backend/app/users/api/internal/types"
"juwan-backend/common/utils"
"net/http"
"github.com/zeromicro/go-zero/rest/httpx"
)
// 用户登录接口
func LoginHandler(svcCtx *svc.ServiceContext) http.HandlerFunc {
return func(w http.ResponseWriter, r *http.Request) {
var req types.LoginReq
if err := httpx.Parse(r, &req); err != nil {
httpx.ErrorCtx(r.Context(), w, err)
return
}
l := user.NewLoginLogic(r.Context(), svcCtx)
resp, err := l.Login(&req)
if err != nil {
httpx.ErrorCtx(r.Context(), w, utils.NewErrorResp(400, err))
} else {
token := resp.Token
resp.Token = ""
http.SetCookie(w, &http.Cookie{
Name: "JToken",
Value: token,
Quoted: false,
Path: "/",
Domain: "",
RawExpires: "",
MaxAge: 691200,
Secure: false,
HttpOnly: true,
SameSite: http.SameSiteStrictMode,
Partitioned: false,
})
httpx.OkJsonCtx(r.Context(), w, resp)
}
}
}
@@ -1,96 +0,0 @@
// Code scaffolded by goctl. Safe to edit.
// goctl 1.9.2
package user
import (
"bytes"
"encoding/json"
"errors"
"fmt"
"io"
"juwan-backend/app/users/api/internal/contextx"
"juwan-backend/common/utils"
"net/http"
"strconv"
"juwan-backend/app/users/api/internal/logic/user"
"juwan-backend/app/users/api/internal/svc"
"juwan-backend/app/users/api/internal/types"
"github.com/zeromicro/go-zero/rest/httpx"
)
// 用户注册接口
func RegisterHandler(svcCtx *svc.ServiceContext) http.HandlerFunc {
return func(w http.ResponseWriter, r *http.Request) {
if err := normalizeRegisterBody(r); err != nil {
httpx.ErrorCtx(r.Context(), w, err)
return
}
var req types.RegisterReq
if err := httpx.Parse(r, &req); err != nil {
httpx.ErrorCtx(r.Context(), w, err)
return
}
requestId := r.Header.Get("X-Request-ID")
//regCtx := context.WithValue(r.Context(), "request_id", requestId)
regCtx := contextx.WithRequestId(r.Context(), requestId)
if requestId == "" {
httpx.ErrorCtx(r.Context(), w, errors.New("bad request"))
}
l := user.NewRegisterLogic(regCtx, svcCtx)
resp, err := l.Register(&req)
if err != nil {
httpx.ErrorCtx(r.Context(), w, utils.NewErrorResp(400, err))
} else {
httpx.OkJsonCtx(r.Context(), w, resp)
}
}
}
func normalizeRegisterBody(r *http.Request) error {
body, err := io.ReadAll(r.Body)
if err != nil {
return err
}
defer r.Body.Close()
if len(body) == 0 {
r.Body = io.NopCloser(bytes.NewReader(body))
return nil
}
var payload map[string]any
if err := json.Unmarshal(body, &payload); err != nil {
r.Body = io.NopCloser(bytes.NewReader(body))
return nil
}
vcode, exists := payload["vcode"]
if exists {
switch value := vcode.(type) {
case string:
parsed, convErr := strconv.Atoi(value)
if convErr != nil {
return fmt.Errorf("invalid vcode format")
}
payload["vcode"] = parsed
case float64:
payload["vcode"] = int(value)
}
}
normalized, err := json.Marshal(payload)
if err != nil {
return err
}
r.Body = io.NopCloser(bytes.NewReader(normalized))
r.ContentLength = int64(len(normalized))
return nil
}
@@ -12,17 +12,17 @@ import (
"juwan-backend/app/users/api/internal/types"
)
// 修改用户密码
func UpdatePasswordHandler(svcCtx *svc.ServiceContext) http.HandlerFunc {
// 切换当前激活角色
func SwitchRoleHandler(svcCtx *svc.ServiceContext) http.HandlerFunc {
return func(w http.ResponseWriter, r *http.Request) {
var req types.UpdatePasswordReq
var req types.SwitchRoleReq
if err := httpx.Parse(r, &req); err != nil {
httpx.ErrorCtx(r.Context(), w, err)
return
}
l := user.NewUpdatePasswordLogic(r.Context(), svcCtx)
resp, err := l.UpdatePassword(&req)
l := user.NewSwitchRoleLogic(r.Context(), svcCtx)
resp, err := l.SwitchRole(&req)
if err != nil {
httpx.ErrorCtx(r.Context(), w, err)
} else {
@@ -12,17 +12,17 @@ import (
"juwan-backend/app/users/api/internal/types"
)
// 修改密码-使用验证码
func UpdatePasswordByVcodeHandler(svcCtx *svc.ServiceContext) http.HandlerFunc {
// 取消关注用户
func UnfollowUserHandler(svcCtx *svc.ServiceContext) http.HandlerFunc {
return func(w http.ResponseWriter, r *http.Request) {
var req types.ResetPasswordByVcode
var req types.UnfollowUserReq
if err := httpx.Parse(r, &req); err != nil {
httpx.ErrorCtx(r.Context(), w, err)
return
}
l := user.NewUpdatePasswordByVcodeLogic(r.Context(), svcCtx)
resp, err := l.UpdatePasswordByVcode(&req)
l := user.NewUnfollowUserLogic(r.Context(), svcCtx)
resp, err := l.UnfollowUser(&req)
if err != nil {
httpx.ErrorCtx(r.Context(), w, err)
} else {
@@ -0,0 +1,33 @@
// Code scaffolded by goctl. Safe to edit.
// goctl 1.9.2
package user
import (
"net/http"
"juwan-backend/app/users/api/internal/logic/user"
"juwan-backend/app/users/api/internal/svc"
"juwan-backend/app/users/api/internal/types"
"github.com/zeromicro/go-zero/rest/httpx"
)
// 更新通知偏好
func UpdateNotificationSettingsHandler(svcCtx *svc.ServiceContext) http.HandlerFunc {
return func(w http.ResponseWriter, r *http.Request) {
var req types.UpdateNotifySettingsReq
if err := httpx.Parse(r, &req); err != nil {
httpx.ErrorCtx(r.Context(), w, err)
return
}
l := user.NewUpdateNotificationSettingsLogic(r.Context(), svcCtx)
resp, err := l.UpdateNotificationSettings(&req)
if err != nil {
httpx.ErrorCtx(r.Context(), w, err)
} else {
httpx.OkJsonCtx(r.Context(), w, resp)
}
}
}
@@ -0,0 +1,32 @@
// Code scaffolded by goctl. Safe to edit.
// goctl 1.9.2
package user
import (
"net/http"
"github.com/zeromicro/go-zero/rest/httpx"
"juwan-backend/app/users/api/internal/logic/user"
"juwan-backend/app/users/api/internal/svc"
"juwan-backend/app/users/api/internal/types"
)
// 更新主题偏好
func UpdateThemeSettingsHandler(svcCtx *svc.ServiceContext) http.HandlerFunc {
return func(w http.ResponseWriter, r *http.Request) {
var req types.UpdateThemeSettingsReq
if err := httpx.Parse(r, &req); err != nil {
httpx.ErrorCtx(r.Context(), w, err)
return
}
l := user.NewUpdateThemeSettingsLogic(r.Context(), svcCtx)
resp, err := l.UpdateThemeSettings(&req)
if err != nil {
httpx.ErrorCtx(r.Context(), w, err)
} else {
httpx.OkJsonCtx(r.Context(), w, resp)
}
}
}