Skip to content

Commit 75b612d

Browse files
committed
feat: 增加获取用户信息接口示例
1 parent 499203b commit 75b612d

File tree

10 files changed

+289
-77
lines changed

10 files changed

+289
-77
lines changed

README.md

Lines changed: 30 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -6,82 +6,83 @@ golang gin api server template
66
```
77
.
88
├── LICENSE
9-
├── Makefile
9+
├── Makefile # make 命令, 相关的脚本
1010
├── README.md
11-
├── app
12-
│ ├── api
11+
├── app # 项目代码, 业务逻辑
12+
│ ├── api # api 层,对外接口实现逻辑,按照模块划分
1313
│ │ ├── app.go
1414
│ │ ├── init.go
1515
│ │ └── user.go
16-
│ ├── app.go
17-
│ ├── docs
16+
│ ├── app.go # 项目启动入库
17+
│ ├── docs # swagger 文档
1818
│ │ ├── docs.go
1919
│ │ ├── swagger.json
2020
│ │ └── swagger.yaml
21-
│ ├── event
21+
│ ├── event # 事件
2222
│ │ ├── event
2323
│ │ └── listener
24-
│ ├── middleware
24+
│ ├── middleware # 中间件
2525
│ │ ├── authorization.go
2626
│ │ ├── cors.go
2727
│ │ └── request_log.go
28-
│ ├── model
28+
│ ├── model # 数据库 模型定义
2929
│ │ ├── base.go
3030
│ │ └── user
3131
│ │ └── user.go
32-
│ ├── repository
32+
│ ├── repository # 数据库操作 repo 层
3333
│ │ └── user
3434
│ │ └── user.go
35-
│ ├── request
35+
│ ├── request # 请求参数
3636
│ │ ├── app.go
3737
│ │ ├── base.go
3838
│ │ └── user
3939
│ │ └── user.go
40-
│ ├── response
40+
│ ├── response # 响应参数以及相关封装
4141
│ │ ├── app.go
4242
│ │ ├── errcode.go
4343
│ │ ├── response.go
4444
│ │ └── user
4545
│ │ └── user.go
46-
│ ├── route
46+
│ ├── route # 路由定义
4747
│ │ ├── app.go
4848
│ │ ├── route.go
4949
│ │ └── user.go
50-
│ ├── service
50+
│ ├── service # 对应模块公共的逻辑,抽离出来复用模块
5151
│ │ └── user.go
52-
│ ├── struct
52+
│ ├── struct # 封装一些公共的结构体
5353
│ │ ├── page.go
5454
│ │ └── user_token.go
55-
│ └── task
55+
│ └── task # 定时任务
5656
│ └── task.go
5757
├── cmd
5858
│ └── run.go
59-
├── config.yaml
60-
├── config.yaml.example
59+
├── config.yaml # 配置文件
60+
├── config.yaml.example # 配置文件示例
6161
├── go.mod
6262
├── go.sum
63-
├── internal
64-
│ ├── bootstrap
63+
├── internal # 内部包
64+
│ ├── bootstrap # 启动初始化
6565
│ │ ├── init.go
6666
│ │ └── migrate.go
67-
│ ├── config
67+
│ ├── config # 配置结构体定义以及初始化
6868
│ │ └── config.go
69-
│ ├── const
69+
│ ├── const # 全局常量
7070
│ │ ├── const.go
7171
│ │ └── context.go
72-
│ ├── global
72+
│ ├── global # 全局变量
7373
│ │ └── global.go
74-
│ ├── logger
74+
│ ├── logger # 日志封装
7575
│ │ └── logger.go
76-
│ ├── mysql
76+
│ ├── mysql # mysql 封装
7777
│ │ └── mysql.go
78-
│ ├── redis
78+
│ ├── redis # redis 封装
7979
│ │ └── redis.go
80-
│ └── server
80+
│ └── server # http server
8181
│ ├── http.go
8282
│ └── route.go
83-
├── main.go
84-
├── pkg
85-
└── test
83+
├── main.go # 入口文件
84+
├── pkg # 工具包
85+
└── test # 测试代码
8686
```
8787

88+
## 开发流程

app/api/user.go

Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,15 @@
11
package api
22

33
import (
4+
"gin_api_server_template/app"
45
userReq "gin_api_server_template/app/request/user"
56
"gin_api_server_template/app/response"
67
"gin_api_server_template/app/response/user"
78

9+
_struct "gin_api_server_template/app/struct"
10+
_const "gin_api_server_template/internal/const"
11+
"gin_api_server_template/internal/global"
12+
813
"github.com/gin-gonic/gin"
914
)
1015

@@ -28,3 +33,40 @@ func (u *userApi) Login(c *gin.Context) {
2833
}
2934
response.Success(c, &user.UserLoginResp{})
3035
}
36+
37+
// 获取登录用户
38+
// @Summary 获取登录用户
39+
// @Tags user
40+
// @Accept json
41+
// @Produce json
42+
// @Param GetUserInfo body user.GetUserInfoReq true "获取登录用户"
43+
// @Param request_id header string true "请求ID"
44+
// @Success 200 {object} user.GetUserInfoResp "成功"
45+
// @Router /user/info [post]
46+
func (u *userApi) GetUserInfo(c *gin.Context) {
47+
// 获取用户 token
48+
userToken, ok := c.Get(_const.CtxUserTokenKey)
49+
if !ok {
50+
response.Unauthorized(c)
51+
return
52+
}
53+
var userTokenS *_struct.UserToken
54+
if userTokenS, ok = userToken.(*_struct.UserToken); !ok {
55+
response.Unauthorized(c)
56+
return
57+
}
58+
userInfo, err := app.GA.UserInfoRepo.GetBySysId(c, userTokenS.UserSysId)
59+
if err != nil {
60+
global.Logger.Errorf("get user info err: %v", err)
61+
response.InternalErr(c)
62+
return
63+
}
64+
response.Success(c, &user.GetUserInfoResp{
65+
Avatar: userInfo.Avatar,
66+
Birthday: userInfo.Birthday,
67+
Introduction: userInfo.Introduction,
68+
NickName: userInfo.NickName,
69+
Sex: userInfo.Sex,
70+
UserSysId: userInfo.SysId,
71+
})
72+
}

app/docs/docs.go

Lines changed: 73 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,46 @@ const docTemplate = `{
3737
}
3838
}
3939
},
40+
"/user/info": {
41+
"post": {
42+
"consumes": [
43+
"application/json"
44+
],
45+
"produces": [
46+
"application/json"
47+
],
48+
"tags": [
49+
"user"
50+
],
51+
"summary": "获取登录用户",
52+
"parameters": [
53+
{
54+
"description": "获取登录用户",
55+
"name": "GetUserInfo",
56+
"in": "body",
57+
"required": true,
58+
"schema": {
59+
"$ref": "#/definitions/user.GetUserInfoReq"
60+
}
61+
},
62+
{
63+
"type": "string",
64+
"description": "请求ID",
65+
"name": "request_id",
66+
"in": "header",
67+
"required": true
68+
}
69+
],
70+
"responses": {
71+
"200": {
72+
"description": "成功",
73+
"schema": {
74+
"$ref": "#/definitions/user.GetUserInfoResp"
75+
}
76+
}
77+
}
78+
}
79+
},
4080
"/user/login": {
4181
"post": {
4282
"consumes": [
@@ -79,6 +119,38 @@ const docTemplate = `{
79119
}
80120
},
81121
"definitions": {
122+
"user.GetUserInfoReq": {
123+
"type": "object"
124+
},
125+
"user.GetUserInfoResp": {
126+
"type": "object",
127+
"properties": {
128+
"avatar": {
129+
"description": "头像",
130+
"type": "string"
131+
},
132+
"birthday": {
133+
"description": "生日年-月-日",
134+
"type": "string"
135+
},
136+
"introduction": {
137+
"description": "个人简介",
138+
"type": "string"
139+
},
140+
"nick_name": {
141+
"description": "昵称",
142+
"type": "string"
143+
},
144+
"sex": {
145+
"description": "性别 male:男;female:女; unknown:未知 保密",
146+
"type": "string"
147+
},
148+
"user_sys_id": {
149+
"description": "uid 用户id",
150+
"type": "string"
151+
}
152+
}
153+
},
82154
"user.UserLoginReq": {
83155
"type": "object",
84156
"required": [
@@ -94,12 +166,8 @@ const docTemplate = `{
94166
"description": "区号,如果是手机号 传 区号,如果是邮箱 传 邮箱服务商 gmail、qq、outlook 等",
95167
"type": "string"
96168
},
97-
"code": {
98-
"description": "验证码",
99-
"type": "string"
100-
},
101169
"password": {
102-
"description": "登录密码,前端 必须进行 sha256 hash 后传过来 【小写】\n1. 如果账号存在的时候登录,密码 或者验证码必须有一个\n2. 如果获取 验证码登录的时候,获取验证码返回的是新用户,需要设置密码,也是使用该字段",
170+
"description": "登录密码,前端 必须进行 sha256 hash 后传过来 【小写】",
103171
"type": "string"
104172
}
105173
}

app/docs/swagger.json

Lines changed: 73 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,46 @@
2626
}
2727
}
2828
},
29+
"/user/info": {
30+
"post": {
31+
"consumes": [
32+
"application/json"
33+
],
34+
"produces": [
35+
"application/json"
36+
],
37+
"tags": [
38+
"user"
39+
],
40+
"summary": "获取登录用户",
41+
"parameters": [
42+
{
43+
"description": "获取登录用户",
44+
"name": "GetUserInfo",
45+
"in": "body",
46+
"required": true,
47+
"schema": {
48+
"$ref": "#/definitions/user.GetUserInfoReq"
49+
}
50+
},
51+
{
52+
"type": "string",
53+
"description": "请求ID",
54+
"name": "request_id",
55+
"in": "header",
56+
"required": true
57+
}
58+
],
59+
"responses": {
60+
"200": {
61+
"description": "成功",
62+
"schema": {
63+
"$ref": "#/definitions/user.GetUserInfoResp"
64+
}
65+
}
66+
}
67+
}
68+
},
2969
"/user/login": {
3070
"post": {
3171
"consumes": [
@@ -68,6 +108,38 @@
68108
}
69109
},
70110
"definitions": {
111+
"user.GetUserInfoReq": {
112+
"type": "object"
113+
},
114+
"user.GetUserInfoResp": {
115+
"type": "object",
116+
"properties": {
117+
"avatar": {
118+
"description": "头像",
119+
"type": "string"
120+
},
121+
"birthday": {
122+
"description": "生日年-月-日",
123+
"type": "string"
124+
},
125+
"introduction": {
126+
"description": "个人简介",
127+
"type": "string"
128+
},
129+
"nick_name": {
130+
"description": "昵称",
131+
"type": "string"
132+
},
133+
"sex": {
134+
"description": "性别 male:男;female:女; unknown:未知 保密",
135+
"type": "string"
136+
},
137+
"user_sys_id": {
138+
"description": "uid 用户id",
139+
"type": "string"
140+
}
141+
}
142+
},
71143
"user.UserLoginReq": {
72144
"type": "object",
73145
"required": [
@@ -83,12 +155,8 @@
83155
"description": "区号,如果是手机号 传 区号,如果是邮箱 传 邮箱服务商 gmail、qq、outlook 等",
84156
"type": "string"
85157
},
86-
"code": {
87-
"description": "验证码",
88-
"type": "string"
89-
},
90158
"password": {
91-
"description": "登录密码,前端 必须进行 sha256 hash 后传过来 【小写】\n1. 如果账号存在的时候登录,密码 或者验证码必须有一个\n2. 如果获取 验证码登录的时候,获取验证码返回的是新用户,需要设置密码,也是使用该字段",
159+
"description": "登录密码,前端 必须进行 sha256 hash 后传过来 【小写】",
92160
"type": "string"
93161
}
94162
}

0 commit comments

Comments
 (0)