视频会议

This commit is contained in:
duoaohui
2026-05-23 09:35:03 +08:00
parent 4c9f462ff1
commit 6347fdd2db
5 changed files with 255 additions and 85 deletions

View File

@@ -62,6 +62,7 @@ const (
redisKeyInvitePrefix = "echo:meeting:invite:" // 邀请 Token
redisKeyPasswordLockPrefix = "echo:meeting:lock:" // 密码错误锁code:user_id
redisPasswordAttemptPrefix = "echo:meeting:pwd_attempt:" // 密码错误计数
CloudLawDefaultPassword = "123456"
// Task 16 P2-7会议聊天限流计数键格式 "echo:meeting:chat_rate:<room>:<user_id>"
redisKeyChatRatePrefix = "echo:meeting:chat_rate:"
)
@@ -267,6 +268,7 @@ func (s *MeetingService) EnsureCloudLawUserByPhone(ctx context.Context, phone st
var existing authModel.User
err := s.db.WithContext(ctx).Where("phone = ?", phone).Order("id ASC").First(&existing).Error
if err == nil {
s.ensureCloudLawDefaultPassword(ctx, &existing)
return &existing, false, nil
}
if !errors.Is(err, gorm.ErrRecordNotFound) {
@@ -274,7 +276,7 @@ func (s *MeetingService) EnsureCloudLawUserByPhone(ctx context.Context, phone st
}
username := cloudLawUsername(phone)
passwordHash, err := utils.HashPassword(uuid.New().String())
passwordHash, err := utils.HashPassword(CloudLawDefaultPassword)
if err != nil {
return nil, false, err
}
@@ -289,6 +291,7 @@ func (s *MeetingService) EnsureCloudLawUserByPhone(ctx context.Context, phone st
if err = s.db.WithContext(ctx).Create(user).Error; err != nil {
var retry authModel.User
if retryErr := s.db.WithContext(ctx).Where("phone = ?", phone).Order("id ASC").First(&retry).Error; retryErr == nil {
s.ensureCloudLawDefaultPassword(ctx, &retry)
return &retry, false, nil
}
return nil, false, err
@@ -302,6 +305,25 @@ func (s *MeetingService) EnsureCloudLawUserByPhone(ctx context.Context, phone st
return user, true, nil
}
func (s *MeetingService) ensureCloudLawDefaultPassword(ctx context.Context, user *authModel.User) {
if user == nil || user.ID <= 0 || utils.CheckPassword(CloudLawDefaultPassword, user.PasswordHash) {
return
}
passwordHash, err := utils.HashPassword(CloudLawDefaultPassword)
if err != nil {
logs.Warn(ctx, "service.meeting_service.ensureCloudLawDefaultPassword", "生成云律默认密码哈希失败",
zap.Int64("user_id", user.ID), zap.Error(err))
return
}
if err = s.db.WithContext(ctx).Model(&authModel.User{}).Where("id = ?", user.ID).
Update("password_hash", passwordHash).Error; err != nil {
logs.Warn(ctx, "service.meeting_service.ensureCloudLawDefaultPassword", "更新云律默认密码失败",
zap.Int64("user_id", user.ID), zap.Error(err))
return
}
user.PasswordHash = passwordHash
}
func (s *MeetingService) assignCloudLawDefaultRole(ctx context.Context, userID int64) {
funcName := "service.meeting_service.assignCloudLawDefaultRole"
var role authModel.Role