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

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

功能介绍

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

在上面的图中,咱们能够看到涉及的统计及类别是多种数据类型,总结概括主要有如下几类:正则表达式

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

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

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

接口请求分析

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

咱们能够经过接口详情请求的内容看到接口请求详情,供咱们来进行开发使用,主要关注接口请求详情种的几个数据:session

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

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

  • 请求携带数据格式:该字段用于表示在请求时,以什么样的方式向服务器提交数据,或者说该字段规定了向服务器提交什么类型的数据。在具体的请求接口中,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}用来表示日期。

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

相关文章
相关标签/搜索