基于RESTful架构的任务发放平台开发
2019-09-13刘润杰龙华秋容振邦
◆刘润杰 龙华秋 容振邦
基于RESTful架构的任务发放平台开发
◆刘润杰 龙华秋 容振邦
(五邑大学智能制造学部 广东 529020)
随着互联网经济的发展与进步,企业对营销推广的需求急剧增加。任务发放平台,一种紧追互联网时代的盈利模式,符合推广商家和学生的共同利益,是我们创业想法的切入点。通过建设该系统,达到任务发放与完成的目的,最终从中获益。通过对Restful架构的系统开发研究,增强传统系统开发模式向Rest风格的转化效果,达到与API实现的解耦,实现微服务开发模式,达到任务平台的便捷维护与扩展开发要求。
任务开发平台;Restful;微服务
在“互联网+”经济下,很多企业对经营模式进行转型[1]。
在很多企业转型为互联网+的过程中,需要的是极大的用户群体与极快的盈利模式。任务发放平台提供给企业一个风险极小,推广方式简单,通过平台用户完成企业发放的任务,从而达到企业营销效果。
任务发放平台属于在线模式,在开发上使用Restful架构[2],通过此架构,能够提供相应api,使得相应企业在使用平台时能够更加的灵活。
1 系统设计
一个任务发放平台,通常是包含任务提供者(企业用户),任务完成者(个人用户),根据一个正常的系统开发,本此说明本系统设计的其中三个重要的功能模块:权限认证服务、支付服务、任务发放服务。
权限认证服务,是针对不同角色不同系统的单点登录[3]及权限认证。本系统架构采用springboot+dubbox微服务开发,各个单独程序形成独立的微服务。通过单点登录及权限认证,可以对每个用户对于相应系统的限制访问。
支付服务,是针对企业在发放任务时需要支付一定的金额作为该任务的佣金,支付功能是任务发放平台必不可少的服务,本平台作为一个线上平台,企业,管理员,个人用户均是通过平台任务的发放,完成,管理作为流程媒介,于是在企业支付押金,任务金,平台为个人发放佣金,均须使用支付服务。本支付服务使用蚂蚁金服支付宝web支付api[4]。
任务发放服务,是用于企业发放任务、个人完成任务的平台。
通过任务平台,企业可以发布相应类型(如注册,下载等)的任务,而个人可以通过平台去认领与完成自己能做的任务。
2 具体实现
本平台开发使用架构Springboot2.0开发,遵守RESTful的应用接口规范,以Mysql作为数据库,redis作为会话信息缓存,整个系统性能上相对稳定,且部署便利。
2.1 权限认证服务
权限认证,包含单点登录和权限管理。单点登录,可实现同个设备一次登录,多个系统同时认证。权限管理,可实现对每个系统的权限设置,实现标准的RBAC模式。
2.1.1 单点登录
无论在同域、同父域不同子域或者不同域,在多应用系统下,只需要登录一次就可以访问所有相互信任的应用系统。在微服务开发模式下,单点登录起到重要的作用。
登录流程(基于token,主动存储在localStorage,发送请求在header上附上token):
(1)用于在客户端未登录时,将自动跳转到SSOServer进入统一登录界面
(2)用户登录成功之后将会为用户分配sessionid并跳转到源url,附带sessionid
(3)SSOFilter验证sessionid无误后,将sessionid写入客户端localStorage
注销流程:
(1)用户与客户端请求注销,会跳转到ssosever自动销毁全局sessionid,实现全局销毁
(2)SSOFilter按登录流程照常拦截
工作原理如下图1所示。
图1 单点登录原理
SSOFilter原理如下:
(1)获取请求路径;
(2)请求路径为退出,则删除会话信息并退出;
(3)请求路径为其他,校验cookie是否有效,如果无效则退出,检查redis中session信息是否过期,如果过期则退出;
(4)执行过滤器通过的请求。
2.1.2 权限管理
权限管理使用标准的RBAC[5]设计模式,主要功能包含:人员管理、角色管理、功能管理、权限组管理、系统管理,日志管理。
人员管理:用于管理平台的用户,用户需要绑定角色;
角色管理:是人员获得相应权限的唯一设置入口,如个人用户、企业角色、管理员等;
权限组管理:权限组归属于角色,每个角色可以拥有多个权限组,权限组与系统绑定,不同的权限组可以来源于不同的系统;
功能管理:功能归属于权限组,在设置权限组时可以绑定不同的功能点,功能与系统绑定,同一系统的权限组只能绑定相同系统中的功能;
系统管理:不同的服务模块管理,如后台管理系统,任务平台系统,与权限组、功能绑定;
日志管理:用于查询所有用户的登录信息。
本平台权限管理RBAC关联关系如图2所示。
2.2 任务发布平台
任务发布平台基本需要实现的功能是个人中心与任务中心,在个人中心用户可以对自己的基本信息管理,钱包管理等;任务中心则是收发任务平台。
2.2.1 个人中心
个人中心目前已实现的功能包含:个人资料编写、会员中心。
个人资料可以修改头像、支付宝信息、身份认证信息、以及修改密码;会员中心可以查看钱包金额、点击充值跳转充值。
图2 权限管理关系图
其中,充分利用了阿里云OSS的存储能力,通过OSS,将有关文件的内容存储在OSS中,并对文件地址的获取,从而读取文件。会员中心中的充值主要实现是通过跳转到支付服务系统进行充值,其主要面对的困难是跨域问题,以下是实现跨域在headers中的设置:
Access-Control-Allow-Credentials: true
Access-Control-Allow-Headers: Origin,X-Requested-With, Content-Type,Accept
Access-Control-Allow-Methods: POST,GET,OPTIONS,DELETE
Access-Control-Allow-Methods: GET,POST,OPTIONS
Access-Control-Allow-Origin: *
个人中心界面图如图3。
图3 个人中心界面图
2.2.2 任务中心
任务中心主要用于个人用户接收任务并完成任务使用,一个任务的流程如图4。
图4 任务流程图
任务主界面如图5。
图5 任务主界面图
2.3 支付服务
支付服务主要用于平台支付功能,使用的是支付宝api。
配置项如下:
alipay.uid=20881021...48316
alipay.app_id=20160...79693
alipay.merchant_private_key=MIIEvAIB...M2yoBRium48fy93/tkr88S+chrQTZCe2WGA
alipay.alipay_public_key=MIIBI...KRiHUCCvG8zvD+JmS+zVAHqjOuOIyznytlKGG3lX9FZnCNdC4jOCteKo4crUvLmPFz3YGi2K15Wyx+aQ/owt2tWFD0KQWxsHTfezUNgtaH/lGFPwVh//q1LnyGJVc/GwKiZtMXjy2dOZ2ryVr4w0vl59gZij3Y3mVxTqQIDAQAB
alipay.notify_url=http://127.0.0.1:7002/alipay/notify
alipay.return_url=http://127.0.0.1:7002/alipay/return
alipay.sign_type=RSA2
alipay.gateway_url=https://openapi.alipaydev.com/gateway.do
实现原理:
(1)引入支付宝sdk:
(2)com.alipay.api.AlipayClient中的pageExecute(AlipayTradeWapPayRequest)
(3)支付宝同步回调程序中rest请求:/alipay/return,异步回调程序中rest请求:/alipay/notify. 同步与异步支付回调程序实际上是支付成功后的业务逻辑操作,在实际上,同步回调不一定执行,而异步回调一定会执行。
3 功能测试
3.1 单点登录测试
执行单点登录,在首页登录后,可直接进入个人中心系统,任务中心系统,支付服务系统,无须重新登录,登录界面如图6,登录成功如图7。
图6 登录界面图
图7 登录成功图
3.2 支付服务测试
使用支付宝sdk进行支付,支付系统如图8。
图8 支付系统图
通过输入金额,验证码,点击充值,跳转到扫码界面,扫码界面图9,支付成功图10,支付成功后返回界面如图11。
图9 扫码界面图
图10 支付成功图
图11 返回界面图
可以在支付系统查询充值记录,如图12。
图12 查询记录图
4 结束语
本文主要介绍了一个任务发放平台的开发流程,在业务代码上没有做过多的介绍。其设计上主要采用了Springboot,并结合Restful开发,将系统功能拆分为多个服务模块。通过这种设计方式,为后期系统扩展功能的开发提供了便利。项目总共有三大模块:权限认证服务,任务发布平台,支付服务。权限认证服务主要用于系统单点登录,任务发布平台主要用于收发任务,支付服务主要通过支付宝sdk网站进行扫码支付。目前由于任务发放平台任务收发存在部分问题,无法展开生产。对于以上问题,将会在日后学习中寻找解决方法,争取完成整个系统开发更加完善并且上线。
[1]冯广瑞.“互联网+”思维对企业管理创新的启示[J].科技风,2018,000(034):88-88.
[2]何军,陈贵民,黄惠海,郑汉军,陈思德.关于RESTful架构的设计[J].网络安全技术与应用,2019,000(001):37-37.
[3]赵亮.单点登录浅析[J].计算机光盘软件与应用,2013,000(004):189-191.
[4]汪天星,程耕国.基于B/S的扫码支付平台的设计[J].现代电子技术,2018,041(022):49-58.
[5]余杨奎.基于角色的访问控制模型(RBAC)研究[J].计算机技术与发展,2019,029(001):198-201.
2018年省级高等学校大学生创新创业训练计划项目。