🎨 新增用户&完善文章模块
This commit is contained in:
@@ -6,6 +6,7 @@ import (
|
||||
"git.echol.cn/loser/lckt/service/category"
|
||||
"git.echol.cn/loser/lckt/service/example"
|
||||
"git.echol.cn/loser/lckt/service/system"
|
||||
"git.echol.cn/loser/lckt/service/user"
|
||||
)
|
||||
|
||||
var ServiceGroupApp = new(ServiceGroup)
|
||||
@@ -16,4 +17,5 @@ type ServiceGroup struct {
|
||||
CategoryServiceGroup category.ServiceGroup
|
||||
BotServiceGroup bot.ServiceGroup
|
||||
ArticleGroup article.ServiceGroup
|
||||
UserServiceGroup user.ServiceGroup
|
||||
}
|
||||
|
3
service/user/enter.go
Normal file
3
service/user/enter.go
Normal file
@@ -0,0 +1,3 @@
|
||||
package user
|
||||
|
||||
type ServiceGroup struct{ UserService }
|
80
service/user/user.go
Normal file
80
service/user/user.go
Normal file
@@ -0,0 +1,80 @@
|
||||
package user
|
||||
|
||||
import (
|
||||
"context"
|
||||
"fmt"
|
||||
"git.echol.cn/loser/lckt/global"
|
||||
"git.echol.cn/loser/lckt/model/user"
|
||||
"git.echol.cn/loser/lckt/model/user/request"
|
||||
"git.echol.cn/loser/lckt/utils/sms"
|
||||
"go.uber.org/zap"
|
||||
"math/rand"
|
||||
"time"
|
||||
)
|
||||
|
||||
type UserService struct{}
|
||||
|
||||
func (u *UserService) GetUserById(id int) (user user.User, err error) {
|
||||
|
||||
return
|
||||
}
|
||||
|
||||
// SendCode 发送验证码
|
||||
func (u *UserService) SendCode(req request.SendCodeReq) (err error) {
|
||||
rdb := global.GVA_REDIS
|
||||
|
||||
key := fmt.Sprintf("VerifyCode:%s", req.Phone)
|
||||
|
||||
// 发送频率检查
|
||||
result, err := rdb.Get(context.Background(), key).Result()
|
||||
if result != "" {
|
||||
global.GVA_LOG.Error("验证码发送过于频繁", zap.String("phone", req.Phone))
|
||||
return
|
||||
}
|
||||
|
||||
rand.New(rand.NewSource(time.Now().UnixNano()))
|
||||
verifyCode := fmt.Sprintf("%06v", rand.Int31n(1000000))
|
||||
|
||||
if ok := sms.SendSMS(req.Phone, verifyCode); !ok {
|
||||
global.GVA_LOG.Error("发送验证码失败")
|
||||
return
|
||||
}
|
||||
//
|
||||
if err = rdb.Set(context.Background(), key, verifyCode, time.Duration(global.GVA_CONFIG.SMS.ExpireTime)*time.Second).Err(); err != nil {
|
||||
global.GVA_LOG.Error("设置验证码缓存失败", zap.Error(err))
|
||||
return
|
||||
}
|
||||
|
||||
return
|
||||
}
|
||||
|
||||
// Login 用户登录
|
||||
func (u *UserService) Login(req request.CodeLoginReq) (users user.User, err error) {
|
||||
// 1. 判断用户是否存在
|
||||
var count int64
|
||||
err = global.GVA_DB.Model(&user.User{}).Where("phone = ?", req.Phone).Count(&count).Error
|
||||
if err != nil {
|
||||
global.GVA_LOG.Error("查询用户失败", zap.Error(err))
|
||||
return
|
||||
}
|
||||
|
||||
// 2. 如果用户不存在,则创建用户
|
||||
if count == 0 {
|
||||
user := user.User{
|
||||
Phone: req.Phone,
|
||||
}
|
||||
err = global.GVA_DB.Save(&user).Error
|
||||
if err != nil {
|
||||
global.GVA_LOG.Error("创建用户失败", zap.Error(err))
|
||||
return
|
||||
}
|
||||
} else {
|
||||
err = global.GVA_DB.Where("phone = ?", req.Phone).First(&users).Error
|
||||
if err != nil {
|
||||
global.GVA_LOG.Error("查询用户失败", zap.Error(err))
|
||||
return
|
||||
}
|
||||
}
|
||||
|
||||
return
|
||||
}
|
Reference in New Issue
Block a user