重写了一个校园微信公众号后端

2015-12-13 11:17:40 +08:00
 paicha

2013 年,大二暑假。我第一次从零到一编写了一个 Web 应用,此前我都在运营维护 Discuz! 搭建的校园论坛、搭建过校园 PT 站,只懂 HTML 、 CSS 和 PHP 的一些皮毛:修改代码、保存、运行,看上去没问题,上线。当时没有深入学习编程,也没打算当程序员,只是周围没人懂开发,只能自己硬着头皮上。

后来看到某大学的校园公众号的新闻,兴奋得晚上睡不着觉,第二天起来找编程资料,花了一周把《 Learn Python the Hard Way 》连爬带滚过了一遍,然后就动手写了。当时什么都不懂,不懂就搜索,示例代码拷贝下来,改一改运行,可以用。没有明确的模块划分,也不懂什么框架 API ,反正 import 进去就能运行了。最终 App 的目录下面塞了 30 多个文件,代码复制粘贴,洋洋洒洒上千行, MysqL 语句也是一条一条在终端运行测试出来的,花了三四天没把部署环境搭建起来,于是就放到 SAE 上运行。

从暑假开始,陆续开发了录取查询、电影、天气、 SimSimi 、接入校园论坛数据、漂流瓶聊天、全校 40 多家外卖菜单、接入图书馆系统、快递查询、课表、成绩查询……加上运营的功夫,一个多学期,关注人数已经覆盖了三分之二的学生。

以上就是我编程入门的作品了。同学们看到微信里漂亮的排版,却不知道实现过程的龌蹉,但是谁的第一次不是这样呢,重要的是It Works!。后来我凭借大学的经历获得了一份 Python 的实习工作,误打误撞,最后成为了一个前端程序员。毕业之后,由于校园团队里没合适的人接手开发,功能就没继续维护更新了。到现在自己技术成长了许多,也为了方便师弟接手维护,于是就把公众号后端重写了。

以下是正文:)

主要技术栈:

Python 、 Flask 、 Redis 、 MySQL 、 Celery 。 结构很简单,处理微信请求的路由,判断用户指令,一系列功能模块,队列、定时任务,还有基础的 models 、 templates 、 utils 、 config 。

主要功能:

一些细节:

功能预览:

除了主要的功能比较实用,其他小功能相对鸡肋,纯粹为了好玩。我认为程序员也应该关注产品体验的细节。所幸微信公众号开发几乎不涉及界面设计,界面上只要关注回复排版,比如文本的换、空行排版、<a>标签的使用。交互上要高效,尽量兼容用户的误输入。快递查询,可以扫快递单的条形码以及连续输入快递单号进行查询;成绩查询,绑定成功的同时就会发送消息给用户。

这次厚脸皮开源出来,就是想和大家交流学习,同时给需要的人一个参考。因为本职前端,上述一些 Python 类库的使用,都是边查文档边写的, Python 也是懂基本语法的水平,测试还没写……如果发现代码中出现低级的写法或者错误,恳请指正。关于微信公众号开发的,也欢迎交流。

GitHub 地址,欢迎 star & fork : https://github.com/paicha/gxgk-wechat-server

6993 次点击
所在节点    分享创造
33 条回复
dawncold
2015-12-13 11:23:04 +08:00
那些细节都是基本应该具备的,不用单独说明
jiezhi
2015-12-13 11:24:25 +08:00
手动帮顶!
paicha
2015-12-13 11:25:59 +08:00
@dawncold 有点啰嗦了:) 刚好过了编辑时间
IMRES
2015-12-13 11:26:48 +08:00
Soaper
2015-12-13 11:41:50 +08:00
马克。。。
superbear
2015-12-13 12:04:10 +08:00
faceair
2015-12-13 12:21:57 +08:00
好像没有后台管理界面?
kingcos
2015-12-13 12:29:12 +08:00
收藏起来。顿时想自己也搞个。。。哈哈,这段考完试试试
paicha
2015-12-13 12:29:24 +08:00
@faceair 确实没有,因为我对这个需求不大……
不过文案回复、快捷菜单的修改通过后台管理确实比较方便。
macleek
2015-12-13 13:32:45 +08:00
想当年俺也是通过黑了一台学校服务器,提供校外查成绩的功能吸引力大量的同学关注。。。俺的公众号比你还多一个校园卡查询挂失功能。。。
paicha
2015-12-13 13:39:15 +08:00
@macleek 哈哈,厉害。我们的校园卡只能去线下查询挂失,没有线上操作的方式,不像有的学校还能支付宝充饭卡。
zonghua
2015-12-13 13:44:45 +08:00
@paicha 自动回复的这个接口权限怎么拿到的 /?
@macleek 学校建网站的时候留了个后门
paicha
2015-12-13 13:46:05 +08:00
@zonghua 客服接口。服务号+微信认证。
tangooricha
2015-12-13 13:56:32 +08:00
献上 5 枚铜币,为 LZ 的精神赞一个!
OKbexx
2015-12-13 13:58:43 +08:00
莞香😏
paicha
2015-12-13 14:18:36 +08:00
@OKbexx 😳又见熟人?
Meiji
2015-12-13 14:26:48 +08:00
广科学渣路过
zrj766
2015-12-13 21:26:01 +08:00
还不错,一个微信搞定,大学狗表示很方便。
haogefeifei
2015-12-13 21:52:17 +08:00
Python 好评。收藏了。
sobigfish
2015-12-13 22:27:47 +08:00
想说...当心又有坑爹的老师拿你的东西去申请资金...
上次发生的是哪个学校来着?

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/243164

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX