fix: update user nickname;

feat: add database/kafka.
This commit is contained in:
loveuer
2024-12-04 15:49:37 +08:00
parent 3ec150b015
commit e5ae2efcef
15 changed files with 585 additions and 64 deletions

View File

@ -5,17 +5,19 @@ import (
"encoding/json"
"errors"
"fmt"
"github.com/loveuer/nf/nft/resp"
"github.com/spf13/cast"
"gorm.io/gorm"
"strings"
"time"
"ultone/internal/database/cache"
"ultone/internal/database/db"
"ultone/internal/log"
"ultone/internal/model"
"ultone/internal/opt"
"ultone/internal/tool"
"github.com/loveuer/nf/nft/resp"
"github.com/spf13/cast"
"gorm.io/gorm"
)
type userController interface {
@ -25,7 +27,7 @@ type userController interface {
CacheToken(ctx context.Context, token string, user *model.User) error
RmToken(ctx context.Context, token string) error
RmUserCache(ctx context.Context, id uint64) error
DeleteUser(ctx context.Context, id uint64) error
DeleteUser(ctx context.Context, target *model.User) error
}
type uc struct{}
@ -135,30 +137,26 @@ func (u uc) RmUserCache(ctx context.Context, id uint64) error {
return cache.Client.Del(tool.Timeout(3), key)
}
func (u uc) DeleteUser(ctx context.Context, id uint64) error {
func (u uc) DeleteUser(ctx context.Context, target *model.User) error {
var (
err error
now = time.Now()
username = "CONCAT(username, '@del')"
username = fmt.Sprintf("%s@%d", target.Username, now.UnixMilli())
)
if opt.Cfg.DB.Type == "sqlite" {
username = "username || '@del'"
}
if err = db.Default.Session(tool.Timeout(5)).
Model(&model.User{}).
Where("id = ?", id).
Where("id = ?", target.Id).
Updates(map[string]any{
"deleted_at": now.UnixMilli(),
"username": gorm.Expr(username),
"username": username,
}).Error; err != nil {
return resp.NewError(500, "", err, nil)
}
if opt.EnableUserCache {
if err = u.RmUserCache(ctx, id); err != nil {
log.Warn(ctx, "controller.DeleteUser: rm user=%d cache err=%v", id, err)
if err = u.RmUserCache(ctx, target.Id); err != nil {
log.Warn(ctx, "controller.DeleteUser: rm user=%d cache err=%v", target.Id, err)
}
}