了管理员登录功能。本节课咱们将继续学习开发完成管理员信息查询功能、管理员退出功能
数据库
管理员信息查询接口bash
接口名称:获取管理员信息。服务器
使用场景:管理员登录系统时,经过该接口查询获取管理员信息。服务器接收到请求后,首先从Session中获取用户信息,若是可以获取到管理员信息,则将数据组合后进行返回;若是Session获取不到管理员信息,则跳转到管理员登录页面。session
请求Url:接口文档以前已经介绍过,使用小幺鸡平台来生成接口文档,小幺鸡接口文档地址:www.xiaoyaoji.cn/doc/ywBfq1v…。管理员信息查询接口:/admin/info。mvc
Request请求类型: GET请求类型。app
数据类型:X-WWW-FORM-URLENCODED。学习
响应类型:JSON格式。ui
路由控制器绑定 服务端使用以前已经学习过的mvc包绑定控制器自动解析路由请求。设置解析mvc管理员控制器代码以下所示:this
adminService := service.NewAdminService(engine)
admin := mvc.New(app.Party("/admin"))
admin.Register(
adminService,
sessManager.Start,
)
admin.Handle(new(controller.AdminController))复制代码
AdminController负责处理管理员模块的请求业务逻辑处理,具体的请求路由的自动映射关系在以前的课程中咱们已经介绍过:url
使用app.Party("/admin")路由组来解析管理员模块的请求
请求url为info,请求类型为Get。所以,在AdminController中声明GetInfo方法来处理获取管理员信息的请求。
请求处理返回值类型为mvc.Result,该类型是专门用于处理请求的返回值类型。在使用过程当中,还可使用mvc.Response以及mvc.View。
在GetInfo方法中处理/admin/info的业务逻辑主要步骤以下:
Session中获取管理员信息
userByte := ac.Session.Get(ADMIN)复制代码
若是获取不到管理员信息,组装数据进行返回,返回数据包含一下字段:
```
mvc.Response{
Object: map[string]interface{}{
"status": utils.RECODE_UNLOGIN,//未登录
"type": utils.EEROR_UNLOGIN,//未登录类型
"message": utils.Recode2Text(utils.EEROR_UNLOGIN),//提示语未登录
}
```复制代码
若是可以获取到管理员信息数据,将管理员数据信息进行组装并返回,返回数据包含如下字段:
mvc.Response{
Object: map[string]interface{}{
"status": utils.RECODE_OK,
"data": admin.AdminToRespDesc(),
},
}复制代码
其中返回的data字段中包含的便是管理员的相关信息。此处,咱们经过AdminToRespDesc方法将管理员结构体数据转化成所须要的键值信息,该方法定义以下:
func (this *Admin) AdminToRespDesc() interface{} {
respDesc := map[string]interface{}{
"user_name": this.AdminName,
"id": this.AdminId,
"create_time": this.CreateTime,
"status": this.Status,
"avatar": this.Avatar,
"city": this.CityName,
"admin": "管理员",
}
return respDesc
}复制代码
GetByAdminNameAndPassword查询用户信息 在开发用户登录功能时,咱们调用过该方法,该方法是使用咱们的数据库操做引擎来查询管理员用户信息,并来返回内容而且将查询后的用户信息保存到了session当中:
ac.engine.Where(" user_name = ? and pwd = ? ", username, password).Get(&admin)复制代码
条件查询使用两个语法:
where:添加查询限制条件
get:将查询结果赋值给结构体变量
SQL语句 咱们使用数据库引擎操做查询管理员信息,其实最终执行的SQL语句以下:
select * from admin where user_name = '' and pwd = ''复制代码
管理员退出接口:
接口详细内容能够参考小幺鸡接口文档:www.xiaoyaoji.cn/doc/yyRPCzC…
路由控制器绑定
管理员退出功能依然是Get请求,接口url为singout,所以咱们在AdminController中定义以下方法用于处理用户退出功能请求:
func (ac *AdminController) GetSingout() mvc.Result {
//删除session,下次须要重新登陆
ac.Session.Delete(ADMIN);
return mvc.Response{
Object: map[string]interface{}{
"status": utils.RECODE_OK,
"success": utils.Recode2Text(utils.RESPMSG_SIGNOUT),
},
}
}复制代码
删除Session 用户退出系统,便是清除掉当前登录状态。在本实战项目中,咱们直接经过清除Session中的管理员信息便可实现对登录状态的清除。
ac.Session.Delete(ADMIN);复制代码