今天写一下展示模块了,先说一下 show模块的主要功能,它负责消费mq中的消息,然后实时计算订单的个个指标。
1.首先先看一下项目结构,和其他两个项目差不多。
2.mq消费者:CanalRabbitListener
核心方法:process方法负责监听mq对了。@RabbitListener(queues = RabbitMqQueueConfig.STRING),指定监听那个对了。parseMsg方法负责将接受到的mq消息解析成对应实体。statisticsOrder负责一些指标的统计。
主要的指标:
* 订单量 eye.show.order.total* 实际订单量 eye.show.order.total.reality* 待支付 eye.show.order.total.status.wait* 已支付 eye.show.order.total.status.already* 已取消 eye.show.order.total.status.cancel* 已入库 eye.show.order.total.status.inhouse* 已拣货 eye.show.order.total.status.pick* 已出库 eye.show.order.total.status.outhouse* 已配送 eye.show.order.total.status.send* 已签收 eye.show.order.total.status.sign* 订单金额 eye.show.order.amount* 实际订单金额 eye.show.order.amount.reality
statisticsOrderINSERT
statisticsOrderUPDATE
statisticsOrderDELETE
这三个方法,针对不同的事件类型分别处理。
主要就是将指标从redis中读出,然后添加或者减少后,在存入redis中,这里紧紧为了演示,没有将指标数据存入数据库,实际操作大家可以将数据存入数据中,然后通过sql脚本计算指标,计算完成后,在放入到redis中,共页面查询使用。
这里以订单总量举例:只要是事件类型是insert类型则,eye.show.order.total
指标+1.其他事件类型则不添加。
3.一个IndexService负责从redis中查询数据,封装成json对象返回。
4.抽取公共模块o-eye-common
由于单个模块有公共的部分,因此有抽取一个公共模块o-eye-common。主要有一些实体了,功能配置等。
5前端展示
前端采用的是echarts,一个图标展示js库,挺不错的值得推荐,官网地址:
https://www.echartsjs.com/zh/index.html
5效果展示
到此所有功能已基本开发完毕,本次开发基本耗费了一个周末左右,代码有点糙了。下面展示一下效果图了。
先已启动:o-eye-order-》o-eye-agent-》o-eye-show
效果如图:
o-eye-order模块在自动生成订单:
o-eye-agent模块在接受订单,并放入到MQ中:
o-eye-show模块在消费订单,并计算统计指标:
看一下mq消息:
最看一下页面效果:
前端页面写的简单了,由于时间紧,代码有点糙了,以后有时间话,再优化,谢谢大家。
最后将代码github地址贴出来,大家有问题可以提问了。
https://github.com/liflife/o-eye