新增几大中心功能

This commit is contained in:
Administrator
2026-04-23 15:29:07 +08:00
parent 5c2a146a44
commit c6354ee065
123 changed files with 13074 additions and 229 deletions

View File

@@ -0,0 +1,68 @@
package app
import (
"errors"
"strings"
"git.echol.cn/loser/Go-Web-Template/server/global"
appModel "git.echol.cn/loser/Go-Web-Template/server/model/app"
appReq "git.echol.cn/loser/Go-Web-Template/server/model/app/request"
"git.echol.cn/loser/Go-Web-Template/server/utils"
"github.com/google/uuid"
"gorm.io/gorm"
)
type AppRegisterService struct{}
var AppRegisterServiceApp = new(AppRegisterService)
func (s *AppRegisterService) Register(req appReq.PublicRegister, mode RegisterMode) error {
username := strings.TrimSpace(req.Username)
password := req.Password
welcome := strings.TrimSpace(req.WelcomePhrase)
if username == "" || password == "" || welcome == "" {
return errors.New("参数不完整")
}
if len(welcome) > 255 {
return errors.New("欢迎词过长")
}
if mode == RegisterModeInvite && strings.TrimSpace(req.InviteCode) == "" {
return errors.New("邀请码不能为空")
}
return global.GVA_DB.Transaction(func(tx *gorm.DB) error {
var existed appModel.AppUser
if err := tx.Where("username = ?", username).First(&existed).Error; err == nil {
return errors.New("用户名已注册")
} else if !errors.Is(err, gorm.ErrRecordNotFound) {
return err
}
user := appModel.AppUser{
UUID: uuid.New(),
Username: username,
Password: utils.BcryptHash(password),
Enable: 1,
}
if err := tx.Create(&user).Error; err != nil {
return err
}
profile := appModel.AppUserProfile{
AppUserID: user.ID,
WelcomePhrase: welcome,
NickName: username,
}
if err := tx.Create(&profile).Error; err != nil {
return err
}
if mode == RegisterModeInvite {
if _, err := AppInviteCodeServiceApp.ConsumeByPlainCode(tx, req.InviteCode, user.ID); err != nil {
return err
}
}
return nil
})
}