近来学习Play 2和Akka,想着找一个实战性的项目练练手。正好近来公司提供晚餐,每天看着程序媛拿着手机一个一个的找人点餐,耗时多、且容易点漏、又打断了自身的工作……哥觉得小妹儿工作好累啊。作为一个全栈工程师,为公司小妹儿减轻工作负担义不容辞啊。
就在想,就在想……用什么方法可以简化这个点餐流程呢?把玩着手中的微信,看到同事们在公司群里胡吹海吹,Duang!有了,就做一个基于微信公众号的点餐系统。
技术
系统用到的技术有:
- Scala 2.11.7
- sbt 0.13.8
- Play 2.4.2
- Akka 2.11.12
- Slick 3.0.1
- PostgreSQL 9.4
- Heroku(项目部署在此)
- Github(项目托管在此:https://github.com/yangbajing/wechat-meal)
系统功能
经过深思熟虑的思考,做一个基于WEB的点餐,通过微信打开内置游戏器访问。这个,感觉B格不够高,就是做一个网站了,Low……。我得做一个与微信深度集成的点餐功能,就像一个聊天机器人一下。用户输入指令,系统返回菜单。甚至用户输入语音,系统也返回菜单,哈哈哈!
在聊天窗口输入指令显示菜单,如:
- 0:所有指令
- 1:注册用户
- 2:今日菜单
- 3:我的历史(返回连接,直接进入我的历史点餐记录)
选择今日菜单后,系统在聊天窗口返回:
- 菜品一
- 菜品二
- 菜品三
- 菜品四
。。。。。
用户选中一个菜品后系统应返回一个确认提示:
- 1:确认,2(其它):取消
用户注册
这个系统只限于公司内部使用,所以不能让随便一个关注了公司号的人都可以进行点餐操作。所以用户注册功能是必需得有的。注册也采用应答的方式,用户在微信聊天窗口输入相关信息,系统验证成功后注册成功。
有注册了,那登录呢?登录?都已经用微信做入口了,就直接登录了吧。
开发
Play
Play
用来做什么?根据微信公众号的开发文档,接入微信公众号需要80端口,并使用HTTP协议。这不是要开发WEB
嘛,哥用Scala
做开发,那自然就是Play 2
了。其实也不当当这个,Scala
下可使用的Web
框架还是很多的,甚至Spring
也可以的嘛。不过我就是想用用Play 2
,OK。
用Play
其实还有一些网页的开发工作,虽然是通过聊天窗口进行点餐。但还是得有个简单的管理后台的,用于餐品管理、统计等。这些还是做个WEB
程序比较方便。
Akka
Akka
有一个很好的特性,根据actor
模型开发,自然而然就是一个树型结构。很适合用来管理每个微信用户的菜单选择状态。
Slick
Slick
是typesafe开发的一套用于访问数据库的工具库。最新的3.x系列版本实现了一个非阻塞的数据库访问API,底层使用了JDBC
驱动。
Slick
是一个现代的访问数据库的Scala
库,使用编写访问数据库代码和平常编写代码一样,使用类集合操作的方式来访问数据库。同时也提供了以原生SQL
语言的方式来读取数据库,并同时保证类型检查。
注册微信号
到https://mp.weixin.qq.com官网注册订阅号或服务号。步骤就不详述了。