go语言实战教程之管理员查询功能、退出功能

前面第10节课内容中已经学习开发完成了管理员登陆功能。本节课我们将继续学习开发完成管理员信息查询功能管理员退出功能

管理员信息查询功能

请求及路由映射

管理员信息查询接口

接口名称:获取管理员信息

使用场景:管理员登陆系统时,通过该接口查询获取管理员信息。服务器接收到请求后,首先从Session中获取用户信息,如果能够获取到管理员信息,则将数据组合后进行返回;如果Session获取不到管理员信息,则跳转到管理员登陆页面。

请求Url:接口文档之前已经介绍过,使用小幺鸡平台来生成接口文档,小幺鸡接口文档地址:http://www.xiaoyaoji.cn/doc/ywBfq1vWM。管理员信息查询接口:/admin/info

Request请求类型: GET请求类型

数据类型:X-WWW-FORM-URLENCODED

响应类型:JSON格式

路由控制器绑定服务端使用之前已经学习过的mvc包绑定控制器自动解析路由请求。设置解析mvc管理员控制器代码如下所示:

adminService := service.NewAdminService(engine)

admin := mvc.New(app.Party("/admin"))

admin.Register(

    adminService,

    sessManager.Start,

)

admin.Handle(new(controller.AdminController))

  AdminController负责处理管理员模块的请求业务逻辑处理,具体的请求路由的自动映射关系在之前的课程中我们已经介绍过:

使用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 = ''

管理员退出功能

请求及路由映射

管理员退出接口:

接口详细内容可以参考小幺鸡接口文档:http://www.xiaoyaoji.cn/doc/yyRPCzC5M

路由控制器绑定

管理员退出功能依然是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);

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 218,204评论 6 506
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,091评论 3 395
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 164,548评论 0 354
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,657评论 1 293
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,689评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,554评论 1 305
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,302评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,216评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,661评论 1 314
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,851评论 3 336
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,977评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,697评论 5 347
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,306评论 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,898评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,019评论 1 270
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,138评论 3 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,927评论 2 355

推荐阅读更多精彩内容

  • 学习完了数据库操作的知识以后。本节内容,我们将实现管理员登陆功能,涉及到多个模块的代码实现和逻辑处理,以及数据库表...
    qfzhangxu阅读 464评论 0 0
  • 模块间联系越多,其耦合性越强,同时表明其独立性越差( 降低耦合性,可以提高其独立性)。软件设计中通常用耦合度和内聚...
    riverstation阅读 2,070评论 0 8
  • 我今年一百岁,已经走到了人生的边缘,我无法确知自己还能走多远,寿命是不由自主的,但我很清楚我快“回家”了。 我得洗...
    言身寸2018阅读 262评论 0 0
  • 你知道吗,韩信草与朱德草都是元帅草。 大家都知道2千多前有一个叫韩信的,其流传最广的故事是“忍袴下...
    槟榔居士阅读 993评论 1 9
  • 《清单革命》的作者阿图葛文德,是《时代周刊》评出的全球100位影响力人物榜单中唯一一位医生,这本书据称是“全球思想...
    口不能言阅读 1,685评论 0 6