Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
roncoo
roncoo-education
提交
08fe8604
R
roncoo-education
项目概览
roncoo
/
roncoo-education
大约 1 年 前同步成功
通知
146
Star
5
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
1
Wiki
分析
仓库
DevOps
项目成员
Pages
R
roncoo-education
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
1
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
08fe8604
编写于
12月 20, 2018
作者:
Y
YZJ
浏览文件
操作
浏览文件
下载
差异文件
Merge branch 'master' of
https://github.com/roncoo/roncoo-education.git
上级
df40fd79
6665e335
变更
6
隐藏空白更改
内联
并排
Showing
6 changed file
with
126 addition
and
18 deletion
+126
-18
README.md
README.md
+20
-12
roncoo-education-course/roncoo-education-course-common/src/main/java/com/roncoo/education/course/common/bean/bo/ZoneBO.java
...va/com/roncoo/education/course/common/bean/bo/ZoneBO.java
+1
-1
roncoo-education-server-eureka/src/main/resources/application.properties
...n-server-eureka/src/main/resources/application.properties
+1
-1
roncoo-education-util/src/main/java/com/roncoo/education/util/enums/StatusIdEnum.java
...in/java/com/roncoo/education/util/enums/StatusIdEnum.java
+1
-1
roncoo-education-util/src/main/resources/config.properties.demo
...-education-util/src/main/resources/config.properties.demo
+42
-0
roncoo-education-web-boss/src/main/java/com/roncoo/education/web/boss/common/ConfigurationWebMvc.java
...roncoo/education/web/boss/common/ConfigurationWebMvc.java
+61
-3
未找到文件。
README.md
浏览文件 @
08fe8604
# 领课在线教育
开源
系统
# 领课在线教育系统
### 项目介绍
领课在线教育
开源系统是基于领课团队多年的在线教育开发和运营经验的产品
领课在线教育
系统是基于领课团队多年的在线教育开发和运营经验的产品,打造一个全行业都适用的在线教育系统。
### 功能介绍
*
具有录播功能,直播功能即将上线
*
讲师入驻功能,讲师自主管理课程
*
课程管理功能,讲师上传的课程后台有审核功能
*
单用户登录功能,同一时间只允许同一个账号在同一个地方登录,防止账号共享
*
支付功能,系统无缝集成了龙果支付面
### 技术选
*
核心技术框架:Spring Cloud
*
权限管理功能,多角色多用户自定义配置
*
系统配置功能,自定义进行站点配置及第三方参数配置
*
讲师管理功能,讲师申请入驻,后台具有审核功能
*
课程管理功能,讲师管理自有课程,后台具有审核功能
*
用户登录功能,同一时间只允许同一个账号在同一个地方登录,防止账号共享
*
广告管理功能,后台自定义广告设置,增加营销效果
*
支付功能,系统无缝集成了龙果支付
### 技术选型
| 核心技术框架 | 注册中心 | 服务网关 | 负载均衡 |
| ----------------- | ----------------- | ----------------- | ------------------ |
| Spring Cloud | Eureka | Zuul | Feign + Ribbon |
| 断路器 | 持久层 | 连接池 | 缓存 |
| Hystrix | Mybatis | Druid | Redis |
| 模板引擎 | 日志框架 | 常用工具 | 版本维护 |
| Freemarker | Logback | Hutool | Spring IO Platform |
### 加速maven构建
在maven的settings.xml 文件里配置mirrors的子节点,添加如下mirror
...
...
@@ -40,5 +48,5 @@ Lombok是一个可以通过简单的注解形式来帮助我们简化消除一
![
流程图
](
/doc/images/lombok1.png
)
## 项目推荐
### roncoo-recharge:[码云地址](https://gitee.com/roncoocom/roncoo-recharge) | [Github地址](https://github.com/roncoo/roncoo-recharge)
### roncoo-jui-springboot:[码云地址](https://gitee.com/roncoocom/roncoo-jui-springboot) | [Github地址](https://github.com/roncoo/roncoo-jui-springboot)
\ No newline at end of file
##### roncoo-recharge:[码云地址](https://gitee.com/roncoocom/roncoo-recharge) | [Github地址](https://github.com/roncoo/roncoo-recharge)
##### roncoo-jui-springboot:[码云地址](https://gitee.com/roncoocom/roncoo-jui-springboot) | [Github地址](https://github.com/roncoo/roncoo-jui-springboot)
\ No newline at end of file
roncoo-education-course/roncoo-education-course-common/src/main/java/com/roncoo/education/course/common/bean/bo/ZoneBO.java
浏览文件 @
08fe8604
...
...
@@ -26,7 +26,7 @@ public class ZoneBO implements Serializable {
/**
* 位置(1电脑端,2微信端)
*/
@ApiModelProperty
(
value
=
"展示平台"
)
@ApiModelProperty
(
value
=
"展示平台"
,
required
=
true
)
private
Integer
zoneLocation
;
/**
...
...
roncoo-education-server-eureka/src/main/resources/application.properties
浏览文件 @
08fe8604
...
...
@@ -2,7 +2,7 @@
spring.profiles.active
=
dev
# eureka
eureka.client.serviceUrl.defaultZone
=
http://${info.eureka.host
01}:${info.eureka.port01}/eureka/,http://${info.eureka.host02}:${info.eureka.port02
}/eureka/
eureka.client.serviceUrl.defaultZone
=
http://${info.eureka.host
}:${info.eureka.port
}/eureka/
eureka.environment
=
${spring.profiles.active}
eureka.datacenter
=
roncoo
...
...
roncoo-education-util/src/main/java/com/roncoo/education/util/enums/StatusIdEnum.java
浏览文件 @
08fe8604
...
...
@@ -13,7 +13,7 @@ import lombok.Getter;
@AllArgsConstructor
public
enum
StatusIdEnum
{
NO
(
0
,
"禁用"
,
"red"
),
YES
(
1
,
"正常"
,
"
"
);
YES
(
1
,
"正常"
,
""
),
NO
(
0
,
"禁用"
,
"red
"
);
private
Integer
code
;
...
...
roncoo-education-util/src/main/resources/config.properties.demo
0 → 100644
浏览文件 @
08fe8604
# 使用方法:把config.properties.demo重命名为config.properties即可
# 本地环境配置文件
# 视频存放路径
period_video_path=/home/roncoo/file/video/
# 图片存放路径
pic_path=/home/roncoo/file/pic/
# 阿里云配置
aliyun_accessKeyId=
aliyun_accessKeySecret=
# 阿里云OSS配置
aliyun_oss_url= #配置的域名
aliyun_oss_bucket= #bucket
aliyun_oss_endpoint=http://oss-cn-shanghai.aliyuncs.com/
# 阿里云OAS配置
aliyun_oas_url=http://cn-shenzhen.oas.aliyuncs.com
aliyun_oas_vault= #vault
# 龙果支付回调配置
roncoo_pay_notify= #通知回调地址
pay_url= #请求地址
pay_key= #key
pay_secret= #secret
# 保利威视
polyv_getCataUrl=http://v.polyv.net/uc/services/rest?method=getCata&readtoken={READ_TOKEN}
polyv_uploadVideo=http://v.polyv.net/uc/services/rest?method=uploadfile
polyv_changeCataUrl=http://api.polyv.net/v2/video/{userid}/changeCata?vids={VIDS}&cataid={CATAID}&ptime={PTIME}&sign={SIGN}
polyv_delVideoById=http://v.polyv.net/uc/services/rest?method=delVideoById&writetoken={WRITE_TOKEN}&vid={VID}
polyv_deleteVideo=http://api.polyv.net/v2/video/{userid}/del-video
polyv_getToken=https://hls.videocc.net/service/v1/token
polyv_question=http://v.polyv.net/uc/services/rest
polyv_useId= #userId
polyv_writetoken= #writetoken
polyv_readtoken= #readtoken
polyv_secretkey= #secretkey
# 讲师默认分成
lecturer_default_proportion=0.7000
roncoo-education-web-boss/src/main/java/com/roncoo/education/web/boss/common/ConfigurationWebMvc.java
浏览文件 @
08fe8604
...
...
@@ -3,23 +3,37 @@
*/
package
com.roncoo.education.web.boss.common
;
import
java.io.PrintWriter
;
import
java.util.HashSet
;
import
java.util.List
;
import
java.util.Set
;
import
javax.servlet.http.HttpServletRequest
;
import
javax.servlet.http.HttpServletResponse
;
import
org.apache.shiro.SecurityUtils
;
import
org.springframework.context.annotation.Bean
;
import
org.springframework.context.annotation.Configuration
;
import
org.springframework.util.StringUtils
;
import
org.springframework.web.servlet.HandlerInterceptor
;
import
org.springframework.web.servlet.ModelAndView
;
import
org.springframework.web.servlet.config.annotation.InterceptorRegistry
;
import
org.springframework.web.servlet.config.annotation.WebMvcConfigurer
;
import
com.roncoo.education.util.base.Base
;
import
com.roncoo.education.util.base.Bjui
;
import
com.roncoo.education.util.tools.Constants
;
import
com.roncoo.education.util.tools.JSONUtil
;
import
com.roncoo.education.web.boss.common.bean.vo.SysMenuVO
;
import
com.xiaoleilu.hutool.util.CollectionUtil
;
/**
* 拦截器
*/
@Configuration
public
class
ConfigurationWebMvc
implements
WebMvcConfigurer
{
public
class
ConfigurationWebMvc
implements
WebMvcConfigurer
{
private
static
final
String
[]
PATH
=
new
String
[]
{
"/admin/**"
,
"/course/**"
,
"/system/**"
,
"/user/**"
};
@Bean
ShiroInterceptor
shiroInterceptor
()
{
...
...
@@ -28,7 +42,7 @@ public class ConfigurationWebMvc implements WebMvcConfigurer{
@Override
public
void
addInterceptors
(
InterceptorRegistry
registry
)
{
// registry.addInterceptor(shiroInterceptor()).addPathPatterns("/admin/**"
);
registry
.
addInterceptor
(
shiroInterceptor
()).
addPathPatterns
(
PATH
);
}
}
...
...
@@ -39,7 +53,51 @@ class ShiroInterceptor extends Base implements HandlerInterceptor {
@Override
public
boolean
preHandle
(
HttpServletRequest
request
,
HttpServletResponse
response
,
Object
handler
)
throws
Exception
{
return
true
;
String
uri
=
request
.
getServletPath
();
if
(
checkUri
(
uri
))
{
return
true
;
}
logger
.
error
(
"没此权限,当前访问路径为:{}"
,
uri
);
response
.
setCharacterEncoding
(
"utf-8"
);
PrintWriter
out
=
response
.
getWriter
();
Bjui
bj
=
new
Bjui
();
bj
.
setStatusCode
(
300
);
bj
.
setMessage
(
"没此权限,请联系管理员!"
);
out
.
print
(
JSONUtil
.
toJSONString
(
bj
));
out
.
flush
();
out
.
close
();
return
false
;
}
private
static
Boolean
checkUri
(
String
uri
)
{
List
<
SysMenuVO
>
menuVOList
=
JSONUtil
.
parseArray
(
SecurityUtils
.
getSubject
().
getSession
().
getAttribute
(
Constants
.
Session
.
BOSS_MENU
).
toString
(),
SysMenuVO
.
class
);
Set
<
String
>
menuSet
=
new
HashSet
<>();
listMenu
(
menuSet
,
menuVOList
);
if
(
StringUtils
.
hasText
(
uri
)
&&
uri
.
endsWith
(
"/"
))
{
uri
=
uri
.
substring
(
0
,
uri
.
length
()
-
1
);
}
for
(
String
s
:
menuSet
)
{
if
(
s
.
contains
(
uri
))
{
return
true
;
}
}
return
false
;
}
/**
* @param list
* @return
*/
private
static
void
listMenu
(
Set
<
String
>
menuSet
,
List
<
SysMenuVO
>
menuVOList
)
{
if
(
CollectionUtil
.
isNotEmpty
(
menuVOList
))
{
for
(
SysMenuVO
sm
:
menuVOList
)
{
if
(
StringUtils
.
hasText
(
sm
.
getMenuUrl
()))
{
menuSet
.
add
(
sm
.
getMenuUrl
());
}
listMenu
(
menuSet
,
sm
.
getList
());
}
}
}
@Override
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录