feat: update

This commit is contained in:
yanghao05
2025-04-30 14:41:46 +08:00
parent 070bec536b
commit be605ef603
6 changed files with 81 additions and 10 deletions

View File

@@ -72,7 +72,7 @@ func (ctl *auth) Login(ctx fiber.Ctx, code, state, redirect string) error {
Scope: token.Scope,
}),
}
user, err := models.Users.GetUserByOpenIDOrCreate(ctx.Context(), token.Openid, userModel)
user, err := models.Users.GetUserByOpenIDOrCreate(ctx.Context(), token.GetOpenID(), userModel)
if err != nil {
return errors.Wrap(err, "failed to get user by openid")
}

View File

@@ -80,5 +80,16 @@ func Provide(opts ...opt.Option) error {
}); err != nil {
return err
}
if err := container.Container.Provide(func(
wechat *wechat.Client,
) (*wechats, error) {
obj := &wechats{
wechat: wechat,
}
return obj, nil
}); err != nil {
return err
}
return nil
}

View File

@@ -0,0 +1,19 @@
package http
import (
"quyun/database/schemas/public/model"
"quyun/providers/wechat"
"github.com/gofiber/fiber/v3"
)
// @provider
type wechats struct {
wechat *wechat.Client
}
// @Router /wechat/js-ticket [get]
// @Bind user local
func (ctl *wechats) GetTicket(ctx fiber.Ctx, user *model.Users) (string, error) {
return ctl.wechat.GetJSTicket(user.AuthToken.Data.AccessToken)
}

View File

@@ -153,19 +153,20 @@ func (m *usersModel) Create(ctx context.Context, userModel *model.Users) (*model
}
// Update updates an existing user
func (m *usersModel) Update(ctx context.Context, id int64, model *model.Users) error {
model.UpdatedAt = time.Now()
func (m *usersModel) Update(ctx context.Context, id int64, userModel *model.Users) (*model.Users, error) {
userModel.UpdatedAt = time.Now()
tbl := table.Users
stmt := tbl.UPDATE(tbl.MutableColumns.Except(tbl.CreatedAt, tbl.DeletedAt)).MODEL(model).WHERE(tbl.ID.EQ(Int64(id)))
stmt := tbl.UPDATE(tbl.MutableColumns.Except(tbl.CreatedAt, tbl.DeletedAt)).MODEL(userModel).WHERE(tbl.ID.EQ(Int64(id))).RETURNING(tbl.AllColumns)
m.log.Infof("sql: %s", stmt.DebugSql())
_, err := stmt.ExecContext(ctx, db)
if err != nil {
var updatedUser model.Users
if err := stmt.QueryContext(ctx, db, &updatedUser); err != nil {
m.log.Errorf("error updating user: %v", err)
return err
return nil, err
}
return nil
return &updatedUser, nil
}
// DeleteByID soft deletes a user by ID
@@ -277,8 +278,6 @@ func (m *usersModel) GetUserByOpenIDOrCreate(ctx context.Context, openID string,
user, err := m.GetUserByOpenID(ctx, openID)
if err != nil {
if errors.Is(err, qrm.ErrNoRows) {
// Create User
user, err = m.Create(ctx, userModel)
if err != nil {
return nil, errors.Wrap(err, "failed to create user")
@@ -286,6 +285,12 @@ func (m *usersModel) GetUserByOpenIDOrCreate(ctx context.Context, openID string,
} else {
return nil, errors.Wrap(err, "failed to get user")
}
} else {
userModel.OpenID = user.OpenID
user, err = m.Update(ctx, user.ID, userModel)
if err != nil {
return nil, errors.Wrap(err, "failed to update user")
}
}
return user, nil
}