一、路飞学城
a、开发背景:公司自己在线平台或者给别的公司开发在线平台
b、团队
--开发
--前端 1个人
--后端 4-5个人
-- 运维 1个人
--UI 1个人
--测试 1个人
-- 产品经理 1个人
--运营 2个人
--销售 2个人
c、公司架构
--导师后台(基于stark组件,给导师管理学员:作业,学习进度,跟进记录)
--管理后台(基于stark组件,给运营使用:上传视频,写文章,优惠券,退款,休学)
--主站(基于Vue+Django restful framework框架)
主要模块
--课程
--课程列表业务:课程这个模块一共有十四章表,有课程大类表,课程子类表,学位课程表,学位课程奖学金表,价格与课程有效期表,课时目录表,课程表,老师或者讲师表,课程详情页表,优惠券生成规则表,常见问题表,课程目录,课程章节,课程评论表
--
精通 Django、Tornado、Flask等Web框架
精通 Restful API 接口规范、django-rest-framework框架
熟练 HTML、CSS、JavaScript、jQuery、Ajax、BootStrap、跨域等前端技术
熟悉 MySQL以及存储过程、触发器、索引
熟悉 Python网络编程,以及多线程、多进程、协程、IO多路复用、异步非阻塞等
熟悉 Scrapy框架和分布式爬虫框架redis-scrapy组件
熟悉 爬虫相关Requests和BeautifulSoup模块使用
熟悉 常用算法如冒泡、快排、堆排、希尔等;
熟悉 Git使用
熟悉 WebSocket
熟悉 Linux常用操作
熟悉 Redis、Memcache和常用操作
熟悉 RabbitMQ 消息队列的使用
2018/3/8 21:20:36
参考
- 路飞学城(k12在线教育平台)
- 描述: 程序分为三大部分:导师管理后台、管理员后台、Web主站。系统使用前后端分离模式,前端使用Vue.js实现,后端基于django rest frameworkd框架实现,系统主要用于为xx提供在线学习平台,并独创自己的-对-辅导模式,并整合用户支付和微信消息推送和提醒。使用Git和Jekins以及SaltStack实现项目的自动化部署。
- 周期: 6个月
- 团队: 1UI、1前端、4个后端、CEO负责开发和review
- 功能:
- 基于极验实现动态验证码
- 在线视频播放:cc,HTML用的Flash
- 基于Rest Framework实现 API接口
- 自定义rest认证token 认证
- 序列化以及自定义验证对请求数据合法性进行校验和认证
- API访问的接口速率限制
- 课程列表、课程详细、推荐、用户评价、常见问题、深科技、评论、支付流程
- 课程优惠券,通用优惠券
- 支付宝支付/微信支付
- 微信开发,针对关注微信公众号,实现对学位课程报名的用户作业奖惩和导师的跟进奖惩。
- 基于微信进行和生成二维码进行用户授权
- 基于Git进行协同开发
- CRM系统、 基于rbac的xxx管理系统
- 描述:基于RBAC对使用系统人员进行权限控制。对学校、老师、班级和销售进行统一管理,其中涉及销售报表和跟进记录并对销售人员成单比进行统计,以及对于班级评分和作业管理。对实现公司会议室预定等。
- 周期: 1-2个人:3-6个月
- 功能:
- 基于 Django中间件和session实现自定义rbac权限组件,粒度到按钮级别。 # 表?流程?
- 基于 BootStrap 实现页面展示
- 基于 BootStrap datetimepicker实现会议室预定
- 基于 Form实现可定制的调查问卷
- 基于 HighChart对销售业绩进行可视化显示
- 实现 参考Django源码实现自定义CURD组件开发,并完成定制列、组合查询等功能
- 通过 django-redis实现session存储
PS:
销售权限:
- 基于ModelForm实现客户数据录入
- 客户跟进
- 第一次跟进的人,可以拥有用户15天的沟通权限;17天内未成单、7天内未进行跟进;变更为公共资源
- 销售人员成单记录:销售经理
班主任:
- 班级管理
- 考勤管理
- 沟通记录
- 问卷(权限管理)
老师:
- 上课记录
- 检查作业
- 上传作业
- 初始化班级
会议室预定
吐槽: 需求经常改动,比如:问卷
第二部分:路飞相关
1. 是否遇到bug?难解决的技术点?印象深刻的事?
- orm操作费劲
- 最开始学习路由系统时候,匹配规则;
答案一:
有,但主要不是在技术上而是在业务上;在支付时:贝里、支付宝、满减、立减、折扣;
答案二:
编写API时,如果继承ModelViewSet相关的类之后,必须在静态字段中写:queryset
class AuthView(ModelViewSet):
queryset = models.xxx.all()
否则,在渲染器渲染好看的页面时,会报错。
解决方案:
a. 不继承,继承APIView
b. 定义渲染器
class AuthView(GenaricViewSet):
render_classes = [JSONrender,]
queryset = models.xxx.all()
答案三:
在刚学习时候,xxxxxxx
大忌:非常简单的功能
2. 路飞学城项目架构是怎么样?
- 管理后台
- 导师后台
- 主站
- 前端:1人
- 后端:3人(1+0.5+1+0.5+0.5)
- UI:1人
3. 路飞学城中你负责写过什么?
API:
- 第一类:基本增删改查
- 课程列表
- 学位课
- 专题课
- 课程详细
- 课程大纲
- 价格策略
- 推荐课程
- 课程章节
- 用户评价
- 常见问题
- 文章列表
- 文章详细
- 评论
- 点赞
- 收藏
- 学习中心
- 我的账户
- 我的订单
- 作业
- 回答
- 提问
...
- 第二类:支付流程
- 购物车
- 加入购物车
- 查看
- 修改价格策略
- 删除购物车中的课程
4. 路飞学城购物车的结构?