# xuecheng-plus-project **Repository Path**: liukaicun/xuecheng-plus-project ## Basic Information - **Project Name**: xuecheng-plus-project - **Description**: 学成在线项目源代码 - **Primary Language**: Java - **License**: MulanPSL-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 1 - **Created**: 2023-03-20 - **Last Updated**: 2025-03-30 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # xuecheng-plus-project ### **学成在线项目背景** 本项目是本公司自研的一个专门针对成人职业技能教育的网络课堂系统,网站提供了成人职业技能培训的相关课程,如:软件开发培训、职业资格证书培训、成人学历教育培训等课程。项目基于B2B2C的业务模式,培训机构可以在平台入驻、发布课程,运营人员对发布的课程进行审核,审核通过后课程才可以发布成功,课程包括免费和收费两种形式,对于免费课程可以直接选课学习,对于收费课程在选课后需要支付成功才可以继续学习。 #### 软件架构 | 名称 | 功能描述 | |------|---------------------------------------------------------------------------------------------------------------| | 用户层 | 用户层描述了本系统所支持的用户类型包括:pc用户、app用户。pc用户通过浏览器访问系统、app用户通过android、ios手机访问系统。 | | CDN | CDN全称Content Delivery Network,即内容分发网络,本系统所有的静态资源全部通过CDN加速来提高访问速度。系统静态资源包括:html页面、js文件、css文件、image图片、video视频等。 | | 负载均衡 | 系统的CDN层、UI层、服务层及数据层均设置了负载均衡服务,每一层的负载均衡会根据系统的需求来确定负载均衡器的类型,系统支付4层负载均衡+7层负载均衡结合的方式,4层负载均衡是指在网络传输层进行流程转发,根据IP和端口进行转发,7层负载均衡完成HTTP协议负载均衡及反向代理的功能,根据url进行请求转发。 | | UI层 | UI层描述了系统向pc用户、app用户提供的产品界面。根据系统功能模块特点确定了UI层包括如下产品界面类型:1)面向pc用户的门户系统、学习中心系统、教学管理系统、系统管理中心。2)面向app用户的门户系统、学习中心系统。 | | 微服务层 | 微服务层将系统服务分为三类:业务服务,基础服务,第三方代理服务。业务服务:主要为学成在线核心业务提供服务,并与数据层进行交互获得数据。基础服务:主要管理学成在线系统运行所需的配置、日志、任务调度、短信等系统级别的服务。第三方代理服务:系统接入第三方服务完成业务的对接,例如认证、支付、视频点播/直播、用户认证和授权。 | | 数据层 | 数据层描述了系统的数据存储的内容类型,关系型数据库:持久化的业务数据使用MySQL。消息队列:存储系统服务间通信的消息,本身提供消息存取服务,与微服务层的系统服务连接。索引库:存储课程信息的索引信息,本身提供索引维护及搜索的服务,与微服务层的系统服务连接。缓存:作为系统的缓存服务,作为微服务的缓存数据便于查询。文件存储:提供系统静态资源文件的分布式存储服务,文件存储服务器作为CDN服务器的数据来源,CDN上的静态资源将最终在文件存储服务器上保存多份。 | #### **项目中出现的问题及解决方法** **一. 跨域问题** ![输入图片说明](images/1.png) **解决方法:** 用cors过滤器解决,指定请求允许跨域 ![输入图片说明](images/2.png) **二. 处理异常问题** **对于各个微服务抛出的异常进行统一拦截处理,定义自定义异常处理器** ![输入图片说明](images/11.png) ![输入图片说明](images/22.png) **三、事务失效问题** 非事务方法调用事物方法,调用的对象必须是当前类的代理对象 #### 参与贡献 1. Fork 本仓库 2. 新建 Feat_xxx 分支 3. 提交代码 4. 新建 Pull Request #### 特技 1. 使用 Readme\_XXX.md 来支持不同的语言,例如 Readme\_en.md, Readme\_zh.md 2. Gitee 官方博客 [blog.gitee.com](https://blog.gitee.com) 3. 你可以 [https://gitee.com/explore](https://gitee.com/explore) 这个地址来了解 Gitee 上的优秀开源项目 4. [GVP](https://gitee.com/gvp) 全称是 Gitee 最有价值开源项目,是综合评定出的优秀开源项目 5. Gitee 官方提供的使用手册 [https://gitee.com/help](https://gitee.com/help) 6. Gitee 封面人物是一档用来展示 Gitee 会员风采的栏目 [https://gitee.com/gitee-stars/](https://gitee.com/gitee-stars/)