欢迎光临
我们一直在努力

黑马苍穹外卖笔记day11

Apache Echarts

Apache Echarts是一款基于Javascript的数据可视化图表库,提供直观,生动,可交互,可个性化定制的数据可视化图表

Apache Echarts示例代码:先使用div定义一个宽高的DOM,然后在script中配置echarts实例,xAxis和yAxis分别为x轴和y轴数据

总结:使用Echarts,重点在于研究当前图表所需的数据格式。通常是需要后端提供符合格式要求的动态数据,然后相应给前端来展示图表

营业额统计:

业务规则:

  • 营业额指订单状态为已完成的订单金额合计
  • 基于可视化报表的折线图展示营业额数据,x轴为日期,y轴为营业额
  • 根据时间选择区间,展示每天的营业额数据

接口设计:

代码开发:

Controller层:admin/ReportController类下的turnoverStatistics()方法,注意参数begin和end要加注解@DateTimeFormat(pattern="yyyy-MM-dd")来规定格式

Service层:在ReportService的实现类ReportServiceImpl下的getTurnoverStatistics()方法,我们要建立一个循环,对开始和结束日期之间的每一天,要获取到一个LocalDate并保存到日期列表中,同时利用OrderMapper查询当天的营业额并保存到营业额列表中,然后将这两个列表转换为String类型的字符串,最后封装到TurnoverReportVO对象中返回

Mapper层:OrderMapper中根据时间和状态查询营业额,传入的参数为一个Map类型的变量,其中保存LocalDateTime类型的开始和结束时间,还有int类型的status,并在xml文件中使用mybatis进行详细的逻辑编写

用户统计:

业务规则:

  • 基于可视化报表的折线图展示用户数据,x轴为日期,y轴为用户数
  • 根据时间选择区间,展示每天的用户总量和新增用户量数据

接口设计:

代码开发:

Controller层:admin/ReportController类下的userStatistics()方法,注意参数begin和end要加注解@DateTimeFormat(pattern="yyyy-MM-dd")来规定格式

Service层:在ReportService的实现类ReportServiceImpl下的getUserStatistics()方法,建立三个列表,分别为日期,总用户数和新增用户数,然后遍历从begin到end的每一天,使用userMapper中定义的方法查询每天的用户总量和新用户数,并存到列表中,最后将列表转换成字符串并封装到UserReportVO类中返回

Mapper层:userMapper中的countTotalUserByDate()和countNewUserByDate()方法

订单统计:

业务规则:

  • 有效订单指状态为"已完成"的订单
  • 基于可视化报表的折线图展示订单数据,x轴为日期,y轴为订单数量
  • 根据时间选择区间,展示每天的订单总数和有效订单数
  • 展示所选时间区间内的有效订单数、总订单数、订单完成率,订单完成率=有效订单数/总订单数*100

接口设计:

代码开发:

Controller层:admin/ReportController类下的ordersStatistics()方法,注意参数begin和end要加注解@DateTimeFormat(pattern="yyyy-MM-dd")来规定格式

Service层:在ReportService的实现类ReportServiceImpl下的getOrdersStatistics()方法,跟上面的思路差不多,还是利用OrderMapper,根据指定条件查询每天的订单总量和有效订单数,并在最后计算出指定日期区间内的总订单数和总有效订单数,以及订单完成率,最后封装到OrderReportVO对象中返回

Mapper层:userMapper中的countOrderByDate()方法,使用mybatisplus编写sql逻辑

销量排名统计:

业务规则:

  • 根据时间选择区间,展示销量前10的商品(包括菜品和套餐)
  • 基于可视化报表的柱状图降序展示商品销量
  • 此处的销量为商品销售的份数

接口设计:

代码实现:

Controller层:admin/ReportController类下的top10()方法,注意参数begin和end要加注解@DateTimeFormat(pattern="yyyy-MM-dd")来规定格式

Service层:在ReportService的实现类ReportServiceImpl下的getTop10SalesStatistics()方法,由于这个表格显示的是柱状图,即一段时间内的统计数据,那么就将begin和end转换为LocalDateTime类型的数据,并调用OrderMapper接口的getTopSalesGoods()方法获得销量前10名的菜品名称和销量,存入对应的List中(这里使用了stream流中的map()方法),并转换为String对象,最后包装为SalesTop10ReportVO对象返回

Mapper层:OrderMapper接口下的getTopSalesGoods()方法,使用mybatisplus编写数据库逻辑,需要连接order_detail和order两个表,进行一个比较复杂的查询

赞(0)
未经允许不得转载:171主机测评 » 黑马苍穹外卖笔记day11
分享到: 更多 (0)

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址