本节内容我们将学习开发实现后台管理平台页面统计功能开发的功能接口,本章节内容将涉及到多种请求路由的方式。

功能介绍

后台管理平台不仅是功能管理平台,同时还是数据管理平台。从数据管理平台角度来说,在管理平台中需要提供对平台各项数据的实时跟踪和监测,以方便管理员用户能够看到平台数据走势,在后台功能中主界面,提供了展示用户、管理员、商品等多种数据的统计情况。如下图所示:

在上面的图中,我们可以看到涉及的统计及类别是多种数据类型,总结归纳主要有以下几类:

  • 当日增长数据(用户、订单、管理员)

  • 总数据统计(用户、订单、管理员)

  • 图表数据统计(用户、订单、管理员) 在最后一个类别的图标数据统计当中,图表展示最近一个周的三种数据的增长情况,这里的最近一周的日期是在不断变化的。

接口请求分析

在看到上述功能效果并进行功能分析以后,我们从请求出发,对统计数据接口进行分类。首先打开浏览器右上角的扩展功能,找到更多工具,选择开发者工具,打开调试工具。如下图所示:

我们可以通过接口详情请求的内容看到接口请求详情,供我们来进行开发使用,主要关注接口请求详情种的几个数据:

  • 请求URL:用于表示向后台进行唯一的请求标识,能够通过路由进行唯一的识别。在具体的请求接口中,Request URL中除去主机域名部分就是请求的url。

  • 请求类型:在之前课程中,我们已经讲过多种请求类型,GET、POST等。在具体的请求接口中,Request Method所对应的值就是请求类型。

  • 请求携带数据格式:该字段用于表示在请求时,以什么样的方式向服务器提交数据,或者说该字段规定了向服务器提交什么类型的数据。在具体的请求接口中,Content-Type字段用于指定向服务器提交什么类型的数据,支持的数据格式有如下可选项:

    • Form表单:application/x-www-form-urlencoded,application/form-data

    • Json:application/json

    • Javascript:application/javascript

    • XML: application/xml

  • 请求数据:具体的向服务器提交的请求数据内容。

知道了这几项内容,我们就能够在后台进行开发我们的代码。

接口统计及分类

了解完接口请求重要的数据和请求数据类型以后,我们可以将统计模块中的这些数据请求接口进行梳理,并进行分类。方便我们服务器进行分类处理。经过梳理,我们会发现,一共有三类请求接口类型:

  • 当日增长数据接口请求

    • 当日用户增长数据接口请求:/statis/user/NaN-NaN-NaN/count

    • 当日订单增长数据接口请求:/statis/order/NaN-NaN-NaN/count

    • 当日管理员增长数据接口请求:/statis/admin/NaN-NaN-NaN/count

  • 总记录数据接口请求

    • 用户总数接口请求:/v1/users/count

    • 订单总数接口请求:/bos/orders/count

    • 管理员总数接口请求:/admin/count

  • 近7日每天增长数据接口请求

    • 近7日每天的用户增长数据接口请求:/statis/user/2019-04-05/count (2019-04-05值会按照最近1周每天的日期进行变化)

    • 近7日每天的订单增长数据接口请求:/statis/order/2019-04-05/count (2019-04-05值会按照最近1周每天的日期进行变化)

    • 近7日每天的管理员增长数据接口请求:/statis/admin/2019-04-05/count (2019-04-05值会按照最近1周每天的日期进行变化)

统计模块实现数据统计请求处理

经过如上的分析,我们已经能够看到,三类数据请求中,其中有两类使用/statis前缀来进行数据接口请求。按照项目模块化开发的原则,我们做如下实现:

  • 新创建统计模块功能,用于实现统计功能的接口数据请求;

  • 总记录数据接口请求,在各自的功能模块中进行实现。

经过如上的方案分析,我们要创建统计模块了。

统计模块控制器(StatisController)

既然是一个全新的模块,我们就使用mvc来构建实现请求逻辑处理和业务功能实现。首先,就要定义统计模块控制器,代码定义如下:

type StatisController struct {
//上下文环境对象
Ctx iris.Context

//统计功能的服务实现接口
Service service.StatisService

//session
Session *sessions.Session
}
业务功能实现(StatisService)

如上的StatisController控制器,仅仅是负责进行请求业务逻辑处理,重要的逻辑功能实现,需要在数据功能提供者中实现,这里就是我们定义的StatisService。比如StatisService向外提供以下功能接口及定义:

type StatisService interface {
//查询某一天的用户的增长数量
GetUserDailyCount(date string) int64
GetOrderDailyCount(date string) int64
GetAdminDailyCount(date string) int64
}

上述StatisService仅仅是接口标准的定义。为了实现代码的解耦,我们通过另外的实现定义来对接口进行功能实现,如下所示:

type statisService struct {
Engine *xorm.Engine
}

该statisService即是我们定义的实现StatisService接口的结构体,该结构体会实现上述StatisService的三个所有方法,并完成具体的业务逻辑,具体的代码开发我们下节课内容讲解。

路由组解析及mvc模块绑定

当我们搭建好StatisController以及StatisService时,我们需要让我们的控制器为我们工作起来,用来接受我们的浏览器请求,我们需要在我们的程序启动处,通过mvc配置将我们的StatisControll和app对象绑定起来。如下绑定操作:

statisService := service.NewStatisService(engine)
statis := mvc.New(app.Party("/statis/{model}/{date}/"))
statis.Register(
statisService,
sessManager.Start,
)
statis.Handle(new(controller.StatisController))
正则表达式识别请求

在上文我们对请求做分析分类时,我们说到了在进行请求统计时,会有日期变化的url请求,也有不同模块的请求。如何解析动态变量的url请求?我们这里就运用到了之前的学习知识正则表达式识别请求

app.Party("/statis/{model}/{date}/")

该路由组就可以识别以statis开头的请求,{model}用来区分表示模块,具体取值有admin、order、user。{date}用来表示日期。

本节内容我们对统计功能做了分类和分析,并着手建立了我们整体的代码逻辑,下节内容我们将具体实现这些功能接口的代码开发。

go语言实战教程之 后台管理页面统计功能开发(1)的更多相关文章

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

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

  2. 8 功能6:后台管理页面,编辑文章,xss攻击

    1.后台管理页面之文本编辑 # 后台管理url re_path(r'^cn_backend/$', views.cn_backend, name='cn_backend'), re_path(r'^c ...

  3. python:页面布局 后台管理页面之常用布局

    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/ ...

  4. HTML高级标签(2)————窗体分帧(2)————后台管理页面

    使用frameset进行窗体分帧.构建简易的后台页面.这篇博客就作为一个简易后台管理页面的实战演练. watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvd3px ...

  5. 老男孩Day16作业:登录、注册、后台管理页面(动态)

    一.作业需求: 1.后台管理主界面(左边菜单框.(全选.反选)框.返回顶部按钮) 2.老男孩登录.注册页面 二.博客地址:https://www.cnblogs.com/catepython/p/93 ...

  6. 用jquery-easyui的布局layout写后台管理页面

    先在官网下载easyui文档 引入头部文件 <link rel="stylesheet" type="text/css" href="${pag ...

  7. 前端武器库系列之html后台管理页面布局

    设计网页,让网页好看:网上找模板 搜 HTML模板 BootStrap 一.页面布局之主站页面 主站布局一般不占满页面,分为菜单栏.主页面.底部 上中下三部分.伪代码如下: <div class ...

  8. Django用户登陆以及跳转后台管理页面3

    Django用户登陆以及跳转后台管理页面1http://www.cnblogs.com/ujq3/p/7891774.html Django用户登陆以及跳转后台管理页面2http://www.cnbl ...

  9. Django用户登陆以及跳转后台管理页面2

    请先写好以下,再来替换文件 Django用户登陆以及跳转后台管理页面1http://www.cnblogs.com/ujq3/p/7891774.html from django.shortcuts ...

随机推荐

  1. Linux驱动 - SPI驱动 之四 SPI数据传输的队列化

    我们知道,SPI数据传输可以有两种方式:同步方式和异步方式.所谓同步方式是指数据传输的发起者必须等待本次传输的结束,期间不能做其它事情,用代码来解释就是,调用传输的函数后,直到数据传输完成,函数才会返 ...

  2. 一文读懂非关系型数据库(NoSQL)

    为了更好的理解非关系型数据库,我又深入的度娘了下 原文地址:https://baijiahao.baidu.com/po/feed/share?wfr=spider&for=pc&co ...

  3. Day2-Python基础2---字符编码与转码

    详细内容http://www.cnblogs.com/yuanchenqi/articles/5956943.html 一.编码介绍: 1.基本概念: 在python 2中默认编码是 ASCII,而在 ...

  4. IDEA编译器如何去掉注释中参数错误的提示

    在使用idea的导入别人的项目的时候经常会在方法注释中出现参数错误的提示,这时我们可以参考下面的配置,将方法注释中的参数错误的提示,更新为警告提示~~ 具体使用方法,参考下图~

  5. C#字符串全排序

    排列:从n个元素中任取m个元素,并按照一定的顺序进行排列,称为排列: 全排列:当n==m时,称为全排列: 比如:集合{ 1,2,3}的全排列为: { 1 2 3} { 1 3 2 } { 2 1 3 ...

  6. PHP函数(五)-回调函数

    回调函数是指调用函数的时候将另一个函数作为参数传递到调用的函数中,而不是传递一个普通的变量作为参数 使用回调函数是为了可以将一段自己定义的功能传到函数内部使用 声明回调函数的方法 变量函数声明 < ...

  7. Python数据库(一)-Mysql数据库的连接

    首先需要安装pymysql模块 然后用pymysql连接mysql并执行命令来查看数据 连接mysql数据库后需要创建游标来执行SQL语句 # -*- coding:utf-8 -*- __autho ...

  8. 初识DDD

    DDD强调专注于业务问题域的需要:其专业术语.为何开发该软件的关键原因,以及对于业务来说什么才是成功 问题域涉及你当前正在构建软件的主题领域 DDD强调的是,在致力于为大型复杂业务系统创建软件时,专注 ...

  9. js和jQuery判断数组是否包含指定元素

    最近遇见一些前台基础性问题,在这里笔者觉得有必要记录一下,为了以后自己查阅或者读者查看. 已知var arr = ['java','js','php','C++']; 问题:arr数组是否包含‘jav ...

  10. windows下查看端口占用(砖)

    第一步,执行命令:netstat -ano -a 显示所有连接和监听端口 -n 以数字形式显示地址和端口号. 此选项一般与 -a选项组合使用 -o 显示与每个连接相关的所属进程 ID. Active ...