计算机系统应用  2001, Vol. 29 Issue (9): 102-108   PDF    
基于QQ小程序和Flask的高校闲置物品信息平台
朱心洲, 胡誉, 蒋靖妍     
华东交通大学 软件学院, 南昌 330013
摘要:高校学生之间的闲置物品交易是大学课外生活的一大主要活动. 由于校内当面交易方便、所交易物品重复利用率高、价格便宜、节约环保等原因, 校园内的闲置物品交易受到大学生的青睐. 传统方式下, 校园内的闲置物品信息发布通过校内“跳蚤市场”QQ群实现, 这种方式无安全保证、无法整合信息, 且群内信息容易被忽略. 为了带来更好的闲置物品交易用户体验, 该平台基于QQ小程序搭建闲置物品信息平台前端、Flask+MySQL框架搭建平台后端, 完整实现了闲置物品信息平台的各类功能, 其特色功能包括: 商品多维分类、商品推荐、留言提醒、降价提醒、一键添加好友等. 平台通过HTTPS及RESTful API实现了前后端的加密交互, 并且引入了在校身份认证的功能, 在完美契合各项功能需求的同时, 保证了校园闲置物品交易的安全.
关键词: QQ小程序    高校    Flask框架    闲置物品交易    在校身份认证    
Information Platform of Campus Spare Items Based on QQ Mini-Program and Flask Frame
ZHU Xin-Zhou, HU Yu, JIANG Jing-Yan     
School of Software, East China Jiaotong University, Nanchang 330013, China
Foundation item: National Training Program of Innovation and Entrepreneurship for Undergraduates (202010404026)
Abstract: The spare items trade among college students is one of the main activities of college extracurricular life. Due to the convenience of in-person trading, high reuse rate, low price, environmental conservation, and other reasons, the spare goods trading on campus is favored by college students. The information of spare items in traditional schools is released through QQ group, which has no security guarantee, information cannot be integrated, and information within the group is easy to be ignored. In order to bring better spare items trading user experience, the platform builds the front end of the spare item information platform based on the QQ mini-program, and builds the back end of the platform based on the Flask+MySQL frame, which has fully realized all kinds of functions of second-hand trading information platform, including multi-dimensional commodity classification, commodity recommendation, message reminder, price reminder, one-click to add friends, and so on. The platform achieves the front end and the back end encryption interactions through HTTPS and RESTful API, and introduces the function of school identity authentication, which perfectly meets the various functional requirements while ensuring the security of campus spare items trade.
Key words: QQ mini-program     campus     Flask frame     spare items trade     school identity authentication    

1 引言

由于大学校园内闲置物品交易方便、大学生的闲置物品有较高二次利用价值(如书籍、文体工具)等原因, 高校闲置物品交易市场一向深受大学生的青睐, 是大学校园内的一大主要活动. 目前大学校园内发布闲置物品信息主要通过建立校园“跳蚤市场”QQ群, 群员在群内以聊天的形式发布信息这样的方式去实现. 这种方式受限于QQ群的一些缺点, 存在商品信息的覆盖人数有限, 很难对群内人员的身份进行安全认证、无法对闲置物品信息做一个有效的分类整合等问题[1,2].

QQ小程序是一种无需下载安装、即点即用、用完即走的应用程序. 它依附于国民级社交软件QQ, 对大学校园内的用户而言, QQ更适用于校园生活的一些特定场景, 因此大多高校学生使用QQ频率大于微信. 同时, QQ小程序可通过QQ下拉窗口、首页+、动态玩一玩、空间小游戏、小程序中心、搜索、扫一扫及社交通道(聊天及空间分享)这些入口轻松打开[3], 使用起来十分方便. 利用QQ小程序可以一键将闲置物品信息分享至QQ群、QQ空间、QQ好友以及微信. 在提高自己闲置物品曝光度的同时, 可以对小程序有一个裂变式的推广, 以此可实现快速覆盖在校学生. 利用QQ小程序, 可以有效解决现有在QQ群内发布闲置物品信息方式下信息容易被刷掉、人员的覆盖面有限、无法对闲置物品信息做一个有效分类整合的问题. 同时, 借助校园统一身份认证接口对用户做身份的认证, 可解决现有方式下QQ群内人员鱼龙混杂无安全保障的问题, 以帮助高校学生获得更好的闲置物品交易体验, 打造高校特色闲置物品信息平台.

2 系统研究依据 2.1 系统优势

作为国内社交届二把手, QQ有着超过8亿的月活用户, 除去和微信重合的用户, QQ最活跃的用户群体以95及00后为主, 可弥补微信在人群覆盖上的短板[4]. QQ的主要活跃用户年龄段就证明使用QQ的用户大多都是在校学生. 同时, QQ小程序具备方便便捷的优点, 可以直接将小程序中的内容分享至QQ群、QQ空间、QQ好友进行曝光. 用户可以轻松地从QQ群、QQ空间中点击分享的内容进入小程序, 比微信小程序更加适合于应用在校园场景, 具有出色的用户体验.

2.2 改需求与可行性分析

从现有相关研究中可以看出, 已上线的具有闲置物品交易功能的应用程序多以微信小程序或网站为主. 这类小程序功能过于繁杂, 且无法与现有的校园“跳蚤市场”QQ群紧密结合. 在大学校园内的闲置物品交易多以校内面交、当面付款这样的背景下显得过于功能冗余, 亦无法实现闲置物品发布者和购买者的便捷联系, 以及高效的对商品信息进行曝光[5-11].

结合校园活动的特性及高校学生对校园闲置物品信息平台的需求, 高校闲置物品信息平台的功能在包括完整的用户功能、商品发布功能以及管理员管理功能的同时, 结合现有的校园闲置物品交易方式与特色以及高校学生的使用习惯, 设计完善平台功能, 满足以下功能需求:

(1)商品信息详情可以一键分享曝光, 借助QQ小程序便于分享的优势, 为用户提供可以一键将商品信息分享到现有校园“跳蚤市场”QQ群、QQ空间以及QQ好友的入口, 提高商品的曝光率从而提高商品的成交率.

(2)提供模糊的商品搜索功能和专属校园的多维商品分类展示, 帮助寻找需求商品的用户可以迅速的定位到自己所需的商品. 同时利用旧书、电子产品、求购商品、生活用品等这一类基于校园环境下的商品分类标签, 帮助用户可以根据类别便捷的找到自己所需的商品.

(3)闲置物品信息平台需要有较高的安全性, 利用校园统一身份认证接口对用户做身份认证, 有效解决现有方式下QQ群内人员鱼龙混杂, 发布信息的真实性无法考量的问题. 同时, 采用前后端分离方式部署开发, 前后端之间的通信采用HTTPS协议, 遵循RESTful API设计规范, 可以有效保障用户隐私和通信之间数据传输安全[12,13].

(4) 为用户提供可靠的服务, 部署云服务器时采用Nginx部署Web服务, Nginx支持反向代理、支持热部署、可以高并发连接、有较高的稳定性. 能够为用户提供7×24小时的连续、稳定的服务[14,15].

3 系统框架概述 3.1 QQ小程序框架

QQ小程序框架与微信小程序框架相同, 在技术架构上可分为视图层、逻辑层、组件、API几个部分. 视图层负责页面结构、样式和数据展示, 用QML, QSS语言编写. 逻辑层负责业务逻辑, 调用API等, 基于JavaScript进行编写. 小程序开发采用MVVM软件架构模式(如图1所示), 极大地提高了开发效率和代码抽象度[16]. 同时, QQ小程序对常见的一些视图层组件及逻辑层方法进行了封装, 极大的降低了开发者的开发难度, 使UI风格统一美观、提升了用户的使用体验[7].

图 1 QQ小程序MVVM架构图

3.2 Flask+MySQL 框架

Flask是一个使用Python编写的轻量级Web应用框架, 以Werkzeug和Jinja2为核心, 具有轻巧、简洁、扩展性强、开发成本低等优点[17]. 因其轻便性, Flask框架特别适合用在小程序的开发上, 可利用Flask框架生成RESTful风格的API, 如图2所示. 一套接口即可和Web端、小程序端进行交互. 同时, 亦可充分保障数据的安全性[18].

图 2 Flask+MySQL生成RESTful API架构图

4 系统设计与实现 4.1 系统数据流分析

小程序中的数据主要包括商品数据、首页通知数据和用户个人数据. 用户在小程序端的交互与管理人员在后台系统中的交互是系统数据的来源. 用户通过小程序请求商品信息并向服务端发送个人信息, 进行发布商品、留言、收藏、在校身份认证等操作. 服务器端收到用户的请求后, 在控制层进行数据的合法性校验及处理. 并将处理结果返回至视图层, 由视图层渲染展现给用户. 当买家用户在相应商品底下进行留言后, 服务器端会将留言的内容以小程序服务通知的形式反馈给卖家, 使卖家得以及时回复. 当卖家需要对商品信息进行修改时, 可以对已发布的商品进行编辑、删除操作. 系统管理员可实时监控用户行为, 记录相关操作并进行管理.

4.2 系统功能介绍

闲置物品信息平台分为QQ小程序用户端和Web管理员后端, 以RESTful API 为通信桥梁. 通过需求调研, 针对华东交通大学在校大学生对商品展示、商品发布、与商品主人的联系方式等方面的需求制定以下功能, 如图3所示.

其中基础功能包括: 闲置物品、闲置书籍、求购信息的发布、删除以及编辑功能、商品的收藏与取消收藏、商品的搜索与推荐商品的展示、用户授权登录、用户修改个人头像及用户名、用户分享小程序、联系客服、意见反馈、商品信息的监控和统计、发布轮播图信息、用户使用状态的管理等功能.

特色功能包括: 用户在校身份认证、以及通过认证状态判断使用权限、多维度类别展示商品信息、一键分享商品信息、相似商品推荐、留言及留言回复、新留言提醒、一键添加商品发布者或留言者为QQ好友、给收藏商品用户发送商品降价提醒等功能.

4.3 特色功能介绍

(1)校园身份认证: 校园身份认证功能通过使用Python的requests模块模拟登录校园教务处验证学生的账号密码是否正确以实现. 通过该功能可以确保使用用户为高校师生, 充分保证用户在平台上查看的商品信息的真实性, 保障用户不受骗. 未进行校园身份认证的用户在发布商品信息和查看商品发布人的联系方式或进行留言时, 将跳转至校园身份认证页, 如图4所示. 在校园身份认证页输入教务处账号与密码点击确认即可进行认证, 如图5所示. 随后账号密码将被传送至教务处登录接口, 登录成功, 即可完成认证. 该模块关键代码如下(Python):

s = requests.Session()

post_url = '教务处登录态验证接口'

m = hashlib.md5()//对密码进行md5加密

b = password.encode(encoding='utf-8')

m.update(b)

password = m.hexdigest()

form_data = {'UserName':username, 'Password': password}

r = s.post(url=post_url,headers=headers,data=form_data)

if(r.text==“succcess”) return 1

else return 0

图 3 闲置物品信息平台功能示意图

图 4 提示认证

(2)商品推荐: 基于校园闲置物品信息平台的特性, 该系统通过相似性推荐算法为用户推荐商品. 相似性推荐定义: 对于新用户A, 没有他的历史行为数据, 在他点击了某一商品item-X的场景下, 可以将与item-X同一类别下的相似商品推荐给新用户A[8]. 根据校园需求, 该系统以一级标签+二级标签的形式制定商品类别标签. 同时, 在进入小程序的首页即显示推荐信息, 如图6所示. 该模块核心代码如下(Python):

rank = dict() #记录给user的推荐物品(没有历史行为的物品)

action_item = userviewdata #获取用户user最近浏览的商品信息的类别

for item,score in action_item.type:

for j,wj in sorted(self.W[item].items(),key=lambda x:x[1],reverse=True)[0:K]: #取出与item类别相同的物品

if j in action_item.keys(): #如果该物品已被浏览, 则不推荐

continue

rank.setdefault(j,0)

rank[j] += score * wj #累计物品j与item的相似度*兴趣评分, 作为user对物品j的兴趣程度

(3)商品降价提醒: 当商品发布者修改商品的价格时, 系统会对商品价格的变化做一个判断, 若商品降价, 系统通过订阅消息给收藏了该商品的用户发送商品降价提醒, 如图7所示. 这样能有效的帮助用户以便宜的价格买到商品, 提高闲置物品交易平台的成交率.

(4)一键添加好友: 该功能利用了QQ小程序的特性API实现, 可直接从小程序中添加对方为好友: 当用户在闲置物品信息平台中看到自己心仪的商品时, 可以点击商品详情页的“添加好友”按钮, 如图8所示. 小程序会自动拉起添加卖家好友的申请页面, 如图9所示. 方便买家与卖家联系. 为小程序用户提供出色便捷的用户体验. 该模块的关键代码如下(JavaScript):

//拉起添加好友授权申请

qq.getSetting({

success(res) {

if (!res.authSetting['setting.addFriend']) {

qq.authorize({

scope: 'setting.addFriend',

success() {

}})}}})

//添加好友按钮

<button open-type="addFriend" open-id="{{content.openid}}">添加好友</button>

图 5 校园身份认证界面

图 6 推荐信息展示界面

(5)留言相关功能: 留言相关功能包括用户留言、新留言提醒及留言回复功能. 买家用户可以对商品进行留言, 之后卖家会收到新留言提醒, 并对买家用户的留言进行回复, 如图10所示. 系统借助小程序服务通知消息实现新留言及时的告知提醒. 该功能适用于校园生态, 使买家和卖家可以便捷的进行联系.

图 7 关注商品降价提醒

图 8 添加好友按钮

图 9 点击“添加好友”按钮后拉起的好友申请

图 10 留言功能

4.4 QQ小程序用户端功能介绍

QQ小程序端以商品展示模块、商品发布模块、用户模块3个主要模块组成, 各大主要模块又包含着其他小模块, 各模块与云服务器通过HTTPS RESTful API进行通信, 各模块之间具有高内聚性和低耦合性.

商品展示模块可获得有效的所有商品信息, 并根据条件筛选后呈现给用户, 如图11所示.

图 11 商品展示模块

当用户点击某一商品时, 即可查看商品的详细信息、进行收藏、留言、添加好友等操作; 发布模块用于用户发布闲置物品, 用户可按照旧物、旧书、求购物品进行商品的信息的发布, 如图12所示. 用户模块可用于QQ一键登录、进行校园身份认证绑定校园信息、显示用户已发布及已收藏的信息, 并对这些信息进行编辑(已发布信息)或删除的操作, 如图13所示.

小程序用户端可结合原有校园“跳蚤市场”QQ群一同使用, 当用户在小程序内发布信息后, 可一键分享至QQ群中曝光, 如图14所示. 同时借助了QQ小程序的添加好友、模板消息、订阅消息的特性, 为用户带来了良好的闲置物品交易体验.

图 12 商品发布模块

图 13 用户模块

5 系统应用效果

平台使用腾讯云标准型S5 (4 GB系统内存、2核处理器、2 Mbps带宽)云服务器提供云服务, 使用CentOS7.6系统部署开发环境. 将图片等静态资源文件存入腾讯云对象存储服务中. 并备案域名申请SSL证书部署HTTPS服务, 用于保障信息数据的安全.

截止2020年1月12日, 小程序共有5182名用户注册, 如图15所示. 已发布物品579件、商品总浏览量37766次, 如图16所示.

图 14 商品信息分享

图 15 累计用户(数据来源: 小程序助手)

图 16 商品数据统计(数据来源: 后台统计)

6 结语

基于Flask框架与QQ小程序的校园闲置物品信息平台可供各个高校推广使用. 该平台可有效规范校园内的闲置物品交易, 协助校学生会监管校园内的闲置物品交易市场. 同时, 该平台的推广使用可帮助在校大学生将自己的闲置物品方便的转卖于他人或帮助在校大学生以合适的价格买到大学生活中需要的物品或书籍, 有效的避免了旧物或旧书的浪费, 大力提倡了在校园内落实旧物利用、环保节约的生活理念. 在校园内提升学生的环保理念, 使其可以从个人做起建设节约环保型社会. 从而推动我国的生态文明建设, 实现美丽中国.

参考文献
[1]
杨周, 周磊. 大学生二手物品交易现状调查分析. 产品与科技论坛, 2013, 12(12): 120-121.
[2]
李正仁, 周凯虎, 王全贵, 等. 基于Node.js与微信小程序的活动管理平台. 计算机系统应用, 2019, 28(12): 86-92. DOI:10.15888/j.cnki.csa.007186
[3]
腾讯控股有限公司. QQ小程序亮点介绍. https://q.qq.com/wiki/. (2019–08).
[4]
腾讯控股有限公司. 腾讯控股有限公司2019年中期报告. 深圳: 腾讯控股有限公司, 2019. 7–9.
[5]
王昱婷, 刘静, 燕明媚, 等. 基于微信小程序的大学生二手物品交易平台设计与开发. 电脑知识与技术, 2019, 15(32): 283-284, 286.
[6]
樊友静, 单玉刚. 基于web的高校二手交易平台构建. 电脑知识与技术, 2018, 14(30): 67-69.
[7]
闫小坤. 微信小程序开发详解. 北京: 清华大学出版社, 2017.
[8]
黄美灵. 推荐系统算法实践. 北京: 电子工业出版社, 2019.
[9]
周羿. 基于IOS的校园交易信息平台客户端的设计与实现[硕士学位论文]. 长沙: 湖南大学, 2017.
[10]
张磊. 校园二手交易网的设计与实现[硕士学位论文]. 成都: 电子科技大学, 2013.
[11]
景菲菲, 李奇. 基于O2O模式的校园二手交易平台的建立. 商场现代化, 2019(13): 26-27.
[12]
周萌, 厉旭杰, 陈凯杰. 基于微信小程序的办公通讯系统的设计与实现. 智能计算机与应用, 2019, 9(5): 190-193.
[13]
Rodriguez M. HTTPS everywhere: Industry trends and the need for encryption. Serials Review, 2018, 44(2): 131-137. DOI:10.1080/00987913.2018.1472478
[14]
凌质亿, 刘哲星, 曹蕾. 高并发环境下Apache与Nginx的I/O性能比较. 计算机系统应用, 2013, 22(6): 204-208. DOI:10.3969/j.issn.1003-3254.2013.06.048
[15]
林丽丽. 使用高性能Web服务器Nginx实现开源负载均衡. 大众科技, 2010(7): 37-38, 27. DOI:10.3969/j.issn.1008-1151.2010.07.013
[16]
邓成, 孙书会. MVVM设计模式的前端应用. 电脑知识与技术, 2019, 15(29): 249-250.
[17]
叶锋. Python最新Web编程框架Flask研究. 电脑编程技巧与维护, 2015(15): 27-28. DOI:10.3969/j.issn.1006-4052.2015.15.011
[18]
Segura S, Parejo JA, Troya J, et al. Metamorphic testing of RESTful web APIs. IEEE Transactions on Software Engineering, 2018, 44(11): 1083-1099. DOI:10.1109/TSE.2017.2764464