package user import ( "context" "gf_demo_02/api/user/v1" "gf_demo_02/internal/consts" m "gf_demo_02/internal/model" "gf_demo_02/internal/model/entity" "gf_demo_02/internal/service" "github.com/gogf/gf/v2/errors/gcode" "github.com/gogf/gf/v2/errors/gerror" "github.com/gogf/gf/v2/frame/g" jwt "github.com/golang-jwt/jwt/v5" "golang.org/x/crypto/bcrypt" "time" ) type CUser struct{} func (*CUser) Login(ctx context.Context, req *user.LoginReq) (res *user.LoginRes, err error) { model := g.DB().Model("user") u := new(entity.User) res = new(user.LoginRes) err = model.Where("name", req.Username).Scan(&u) if err != nil || u.Id == 0 { return nil, gerror.NewCode(gcode.New(451, "用户名不存在", nil), "用户名不存在") } if bcrypt.CompareHashAndPassword([]byte(u.Pass), []byte(req.Password)) != nil { return nil, gerror.NewCode(gcode.New(450, "密码错误", nil), "密码错误") } claims := m.UserClaim{ UserId: u.Id, UserName: u.Name, RegisteredClaims: jwt.RegisteredClaims{ ExpiresAt: jwt.NewNumericDate(time.Now().Add(24 * time.Hour)), IssuedAt: jwt.NewNumericDate(time.Now()), NotBefore: jwt.NewNumericDate(time.Now()), Issuer: "我"}, } token := jwt.NewWithClaims(jwt.SigningMethodHS256, claims) tokenStr, err := token.SignedString([]byte(consts.TOKEN_KEY)) res.Token = tokenStr return res, nil } func (*CUser) GetUserList(ctx context.Context, req *user.GetUserListReq) (res *user.GetUserListRes, err error) { users, err := service.User().GetUserList(ctx) if err != nil { return nil, err } res = new(user.GetUserListRes) res.Users = users return res, nil } func (*CUser) EditUser(ctx context.Context, req *user.EditUserReq) (res *user.EditUserRes, err error) { res = new(user.EditUserRes) if req.Id == 0 { err = service.User().AddUser(ctx, req) } else { err = service.User().UpdateUser(ctx, req) } if err != nil { return res, err } return res, nil } func (*CUser) DeleteUser(ctx context.Context, req *user.DeleteUserReq) (res *user.DeleteUserRes, err error) { return nil, service.User().DeleteUser(ctx, req) } func (*CUser) GetSelf(ctx context.Context, req *user.GetSelfReq) (res *user.GetSelfRes, err error) { r := g.RequestFromCtx(ctx) u := r.GetCtxVar("user") res = new(user.GetSelfRes) err = u.Struct(&res.User) if err != nil { return nil, err } return res, nil } func (*CUser) SearchUser(ctx context.Context, req *user.SearchUserReq) (res *user.SearchUserRes, err error) { res = new(user.SearchUserRes) if g.IsEmpty(req.Keyword) { res.Users, err = service.User().GetUserList(ctx) if err != nil { return nil, err } return res, nil } res.Users, err = service.User().SearchUser(ctx, req.Keyword) if err != nil { return nil, err } return res, nil }