前面第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);

go语言实战教程之管理员查询功能、退出功能的更多相关文章

  1. go语言实战教程之 后台管理页面统计功能开发(2)

    上节内容介绍了后台管理页面统计功能开发(1),从功能介绍,到接口请求分析和归类,最后是代码设计.经过上节内容的介绍,已经将业务逻辑和开发逻辑解释清楚,本节内容侧重于编程代码实现具体的功能. 当日增长数 ...

  2. go语言实战教程之 后台管理页面统计功能开发(1)

    本节内容我们将学习开发实现后台管理平台页面统计功能开发的功能接口,本章节内容将涉及到多种请求路由的方式. 功能介绍 后台管理平台不仅是功能管理平台,同时还是数据管理平台.从数据管理平台角度来说,在管理 ...

  3. Go语言学习教程:管理员登录功能开发

    学习完了数据库操作的知识以后.本节内容,我们将实现管理员登陆功能,涉及到多个模块的代码实现和逻辑处理,以及数据库表的操作,都将在本节内容中进行实现. 管理员结构体定义 首先我们要定义管理员这个实体的结 ...

  4. go语言实战教程:Redis实战项目应用

    项目Redis配置 在实战项目中使用Redis功能,首先需要进行Redis配置.本实战项目中,关与Redis的配置项包含:连接类型.地址.端口.公共前缀.以上配置项被定义包含在Iris框架的redis ...

  5. go语言实战教程:项目文件配置和项目初始化运行

    在上节内容中,我们已经搭建了实战项目框架,并将实战项目开发所需要的静态资源文件进行了导入.在本节内容中,我们将讲解如何通过相关的配置,并初始化运行项目. conf配置文件读取配置信息 我们前面说过,使 ...

  6. go语言实战教程:实战项目资源导入和项目框架搭建

    从本节内容开始,我们将利用我们所学习的Iris框架的相关知识,进行实战项目开发. 实战项目框架搭建 我们的实战项目是使用Iris框架开发一个关于本地服务平台的后台管理平台.平台中可以管理用户.商品.商 ...

  7. mybatis实战教程二:多对一关联查询(一对多)

    多对一关联查询 一.数据库关系.article表和user表示多对一的关系 CREATE TABLE `article` ( `id` ) NOT NULL AUTO_INCREMENT, `user ...

  8. php CI框架实现验证码功能和增强验证码安全性实战教程

    php CI框架实现验证码功能和增强验证码安全性实战教程 CodeIgniter简称CI是最流行的一个php MVC框架之一,本人讲从实际项目使用中写系列实战经验,有别与其他的理论讲解文章,会附上实战 ...

  9. 【转】mybatis实战教程(mybatis in action),mybatis入门到精通

    MyBatis 目录(?)[-] mybatis实战教程mybatis in action之一开发环境搭建 mybatis实战教程mybatis in action之二以接口的方式编程 mybatis ...

随机推荐

  1. java事件练习!!

    总结:不晓得怎么跟书上的运行结果显示的...希望标签竖直排列 package com.bc; import java.awt.Color; import java.awt.FlowLayout; im ...

  2. du 命令 -目前的目录所占的磁盘空间

    Linux du命令也是查看使用空间的,但是与df命令不同的是Linux du命令是对文件和目录磁盘使用的空间的查看,还是和df命令有一些区别的. 1.命令格式: du [选项][文件] 2.命令功能 ...

  3. 杂项:UUID

    ylbtech-杂项:UUID UUID 是 通用唯一识别码(Universally Unique Identifier)的缩写,是一种软件建构的标准,亦为开放软件基金会组织在分布式计算环境领域的一部 ...

  4. iOS利用SDWebImage图片下载缓存

    一.我们先来了解一下SDWebImage的使用: 1.导入框架,引入头文件: #import "UIImageView+WebCache.h" 也可以直接使用CocoaPods来引 ...

  5. vue-cli脚手架build目录中的dev-server.js配置文件

    本文系统讲解vue-cli脚手架build目录中的dev-server.js配置文件 这个配置文件是命令npm run dev 和 npm run start 的入口配置文件,主要用于开发环境 由于这 ...

  6. 带坑的几道PHP面试题

    第二题 代码如下: $i='11'; printf("%d\n",printf("%d",printf("%d",$i))); 输出结果是多 ...

  7. php中的foreach改变数组的值的问题

    翻到PHP文档的foreach那页这样写道: “foreach 语法结构提供了遍历数组的简单方式.foreach 仅能够应用于数组和对象,如果尝试应用于其他数据类型的变量,或者未初始化的变量将发出错误 ...

  8. SpringMVC + AJAX 实现多文件异步上传

    转自:https://www.jianshu.com/p/f3987f0f471f 今天,我就这个问题来写一篇如何用 SpringMVC + AJAX 实现的多文件异步上传功能.基本的代码还是沿用上篇 ...

  9. NSFileManager和NSFileHandle使用

    一.NSFileManager: 1.1.获取NSFileManager NSFileManager *manager = [NSFileManager defaultManager];     NS ...

  10. hbase.client.RetriesExhaustedException: Can't get the locations hive关联Hbase查询报错

    特征1: hbase.client.RetriesExhaustedException: Can't get the locations 特征2: hbase日志报错如下:org.apache.zoo ...