/
user.go
62 lines (57 loc) · 1.61 KB
/
user.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
package common
import (
"context"
"github.com/labstack/echo"
"github.com/xiaomeng79/go-example/cinit"
"github.com/xiaomeng79/go-example/internal/jwt"
"github.com/xiaomeng79/go-example/internal/trace"
"github.com/xiaomeng79/go-example/srv/user/proto"
"github.com/xiaomeng79/go-log"
)
//获取用户信息
func userinfo(c echo.Context) error {
ctx := c.Get(cinit.TRACE_CONTEXT).(context.Context)
ctx, span, _ := trace.TraceIntoContext(ctx, "userinfo")
defer span.Finish()
//解析请求参数
_req := new(user.UserInfoRequest)
//获取用户ID
_u := c.Get(cinit.JWT_MSG).(jwt.JWTMsg)
_req.Id = _u.UserId
//请求服务
_rsp, err := UserClient.UserInfo(ctx, _req)
if err != nil {
//解析返回的错误信息
log.Error(err.Error(), ctx)
return RpcErr(c, err)
}
return HandleSuccess(c, _rsp)
}
//登录
func login(c echo.Context) error {
ctx := c.Get(cinit.TRACE_CONTEXT).(context.Context)
ctx, span, _ := trace.TraceIntoContext(ctx, "login")
defer span.Finish()
//解析请求参数
_req := new(user.LoginRequest)
err := c.Bind(&_req)
if err != nil {
//解析返回的错误信息
log.Error(err.Error(), ctx)
return HandleError(c, BusParamConvertError, err.Error())
}
_rsp, err := UserClient.Login(ctx, _req)
if err != nil {
//解析返回的错误信息
log.Error(err.Error(), ctx)
return RpcErr(c, err)
}
//通过验证,设置JWT
s, err := jwt.Encode(jwt.JWTMsg{UserId: _rsp.Id, UserName: _rsp.Username})
if err != nil {
log.Error(err.Error(), ctx)
return HandleError(c, ServiceError, err.Error())
}
c.Response().Header().Set(cinit.JWT_NAME, "Bearer "+s)
return HandleError(c, Success)
}