20260622214432
This commit is contained in:
1 parent
b5f6fafd74
commit
e9e3371be7
19 files changed
+1068
-121
No files matched your search
@@ -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)
|
||||
|
||||
@@ -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"`
|
||||
|
||||
Reference in new issue
Block a user