You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
116 lines
2.3 KiB
Go
116 lines
2.3 KiB
Go
package service
|
|
|
|
import (
|
|
"context"
|
|
"awesomeProject/internal/dao"
|
|
"awesomeProject/internal/model/entity"
|
|
"github.com/gogf/gf/crypto/gmd5"
|
|
"github.com/gogf/gf/util/guid"
|
|
"github.com/gogf/gf/v2/os/gsession"
|
|
"github.com/gogf/gf/v2/util/gconv"
|
|
"github.com/gogf/gf/v2/os/glog"
|
|
)
|
|
|
|
type UserService struct {
|
|
userDAO *dao.UserDAO
|
|
}
|
|
|
|
func NewUserService() *UserService {
|
|
return &UserService{}
|
|
}
|
|
func GenerateToken(data interface{}) (string, error) {
|
|
// 生成一个随机的 GUID 作为 token
|
|
token := guid.S(gconv.Bytes(data))
|
|
// 使用 MD5 加密 token
|
|
encryptedToken, err := gmd5.Encrypt(token)
|
|
if err != nil {
|
|
return "", err
|
|
}
|
|
return encryptedToken, nil
|
|
}
|
|
|
|
|
|
func (s *UserService) Login(ctx context.Context, username string, password string) (*entity.User, error) {
|
|
// 调用 Dao 层的方法查询用户信息
|
|
user, err := s.userDAO.GetUserByUsernameAndPassword(ctx, username, password)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
// 生成 token
|
|
token, _ := GenerateToken(password)
|
|
token = "token=" + token
|
|
session := gsession.NewSessionId()
|
|
glog.Info(ctx, token)
|
|
user.Cookie = token + ";" + session;
|
|
return user, nil
|
|
}
|
|
|
|
// RegisterUser 注册用户
|
|
func (s *UserService) RegisterUser(ctx context.Context, user *entity.User) error {
|
|
// 执行注册逻辑,例如验证用户信息、生成密码哈希等
|
|
|
|
// 调用 DAO 层保存用户信息到数据库
|
|
err := userDao.SaveUser(ctx, user)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
|
|
return nil
|
|
}
|
|
|
|
// GetUserByID 根据用户ID获取用户信息
|
|
func (s *UserService) GetUserByID(ctx context.Context, userID int64) (*entity.User, error) {
|
|
// 调用 DAO 层获取用户信息
|
|
user, err := userDao.GetUserByID(ctx, userID)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
return user, nil
|
|
}
|
|
|
|
|
|
func (s *UserService) PushMessage(ctx context.Context, req Msg){
|
|
glog.Debug("push message")
|
|
go func(){
|
|
err := req.Do(ctx)
|
|
if err != nil{
|
|
glog.Error(ctx,"push message error:" ,err)
|
|
}
|
|
}()
|
|
|
|
}
|
|
|
|
func (s *UserService) StatisticsInfo(ctx context.Context,user entity.User){
|
|
glog.Debug("Statistics Info")
|
|
go func(){
|
|
err := user.StatisticsInfo(ctx)
|
|
if err != nil{
|
|
glog.Error(ctx,"Statistics Info error:" ,err)
|
|
}
|
|
}()
|
|
|
|
}
|
|
|
|
|
|
|
|
type StudentServer struct {
|
|
|
|
}
|
|
|
|
type TeacherServer struct {
|
|
|
|
}
|
|
|
|
type ManagerServer struct {
|
|
|
|
}
|
|
|
|
type AdminServer struct {
|
|
|
|
}
|
|
|
|
type CutomrServiceServer struct {
|
|
|
|
}
|