了管理員登錄功能。本節課咱們將繼續學習開發完成管理員信息查詢功能、管理員退出功能
數據庫
管理員信息查詢接口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);複製代碼