20260622214432

This commit is contained in:
oneao committed 2026-06-22 21:44:33 +08:00
1 parent b5f6fafd74
commit e9e3371be7
19 files changed
+1068 -121

No files matched your search

+78
View File
@@ -59,6 +59,84 @@ func LoginWechat(c fiber.Ctx) error {
return handleThirdLogin(c, openid, nickname, avatar, 0, vo)
}
// LoginTest ======================== 测试登录 ========================
func LoginTest(c fiber.Ctx) error {
var req types.LoginTestReq
vo := new(types.LoginResp)
if err := httpx.BindAndValidate(c, &req); err != nil {
return errors.WithStack(err)
}
dbClient := db.New()
// 检查用户是否存在
users, err := dbClient.LoadData(
c.Context(),
"b_user",
"id = ?",
"",
[]string{"id", "nickname", "avatar"},
[]any{req.UserId},
)
if err != nil {
return errors.WithStack(err)
}
if len(users) == 0 {
return httpx.Fail(c, "测试用户不存在")
}
user := users[0]
// 更新登录时间
if err := dbClient.Update(
c.Context(),
"b_user",
"id",
map[string]any{
"id": req.UserId,
"last_login_time": "NOW()",
},
); err != nil {
return errors.WithStack(err)
}
// 查 family
familyMembers, err := dbClient.LoadData(
c.Context(),
"b_family_member",
"user_id = ?",
"",
[]string{"family_id"},
[]any{req.UserId},
)
if err != nil {
return errors.WithStack(err)
}
if len(familyMembers) == 0 {
vo.FamilyId = 0
} else {
vo.FamilyId = toInt64(familyMembers[0]["family_id"])
}
// 生成 JWT
token, err := jwtx.CreateToken(c.Context(), jwtx.TokenData{
UserID: req.UserId,
})
if err != nil {
return errors.WithStack(err)
}
vo.Token = token
vo.UserId = req.UserId
vo.Nickname, _ = user["nickname"].(string)
vo.Avatar, _ = user["avatar"].(string)
return httpx.OK(c, vo)
}
// ======================== 第三方登录主流程 ========================
func handleThirdLogin(
c fiber.Ctx,
@@ -26,6 +26,7 @@ func SetupRouter(app *fiber.App, cfg *config.Config) {
// ==================== auth ====================
api.Post("/auth/login/qq", handle.LoginQq)
api.Post("/auth/login/wechat", handle.LoginWechat)
api.Post("/auth/login/test", handle.LoginTest)
bind := api.Group("/bind", middleware.Auth())
bind.Post("/qq", handle.BindQq)
+4
View File
@@ -10,6 +10,10 @@ type LoginWechatReq struct {
Code string `json:"code" validate:"required"`
}
type LoginTestReq struct {
UserId int64 `json:"user_id" validate:"required"`
}
type LoginResp struct {
Token string `json:"token"`
UserId int64 `json:"userId"`