go語言實戰教程之管理員查詢功能、退出功能

了管理員登錄功能。本節課咱們將繼續學習開發完成管理員信息查詢功能、管理員退出功能
數據庫

管理員信息查詢功能

請求及路由映射
  • 管理員信息查詢接口bash

    • 接口名稱:獲取管理員信息服務器

    • 使用場景:管理員登錄系統時,經過該接口查詢獲取管理員信息。服務器接收到請求後,首先從Session中獲取用戶信息,若是可以獲取到管理員信息,則將數據組合後進行返回;若是Session獲取不到管理員信息,則跳轉到管理員登錄頁面。session

    • 請求Url:接口文檔以前已經介紹過,使用小幺雞平臺來生成接口文檔,小幺雞接口文檔地址:www.xiaoyaoji.cn/doc/ywBfq1v…。管理員信息查詢接口:/admin/infomvc

    • 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

Controller業務邏輯處理

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
    }複製代碼
adminService查詢管理員記錄信息
  • 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);複製代碼
相關文章
相關標籤/搜索