feat(user): implement OTP login, user creation, and profile management

- Added SendOTP method for simulating OTP sending.
- Implemented LoginWithOTP method for user login/registration via OTP, including user creation if not found.
- Added Me method to retrieve current user information.
- Implemented Update method for updating user profile details.
- Added RealName method for real-name verification.
- Implemented GetNotifications method to fetch user notifications.
- Created user_test.go for comprehensive unit tests covering login, profile retrieval, updates, real-name verification, and notifications.
- Updated database models to use appropriate consts for fields like gender, status, and roles.
This commit is contained in:
2025-12-29 10:55:13 +08:00
parent bc2064639f
commit b78f1e1c84
17 changed files with 497 additions and 120 deletions

View File

@@ -30,8 +30,8 @@ func newContent(db *gorm.DB, opts ...gen.DOOption) contentQuery {
_contentQuery.UserID = field.NewInt64(tableName, "user_id")
_contentQuery.Title = field.NewString(tableName, "title")
_contentQuery.Description = field.NewString(tableName, "description")
_contentQuery.Status = field.NewString(tableName, "status")
_contentQuery.Visibility = field.NewString(tableName, "visibility")
_contentQuery.Status = field.NewField(tableName, "status")
_contentQuery.Visibility = field.NewField(tableName, "visibility")
_contentQuery.PreviewSeconds = field.NewInt32(tableName, "preview_seconds")
_contentQuery.PreviewDownloadable = field.NewBool(tableName, "preview_downloadable")
_contentQuery.PublishedAt = field.NewTime(tableName, "published_at")
@@ -59,8 +59,8 @@ type contentQuery struct {
UserID field.Int64
Title field.String
Description field.String
Status field.String
Visibility field.String
Status field.Field
Visibility field.Field
PreviewSeconds field.Int32
PreviewDownloadable field.Bool
PublishedAt field.Time
@@ -94,8 +94,8 @@ func (c *contentQuery) updateTableName(table string) *contentQuery {
c.UserID = field.NewInt64(table, "user_id")
c.Title = field.NewString(table, "title")
c.Description = field.NewString(table, "description")
c.Status = field.NewString(table, "status")
c.Visibility = field.NewString(table, "visibility")
c.Status = field.NewField(table, "status")
c.Visibility = field.NewField(table, "visibility")
c.PreviewSeconds = field.NewInt32(table, "preview_seconds")
c.PreviewDownloadable = field.NewBool(table, "preview_downloadable")
c.PublishedAt = field.NewTime(table, "published_at")