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

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 {
}