一个月爆肝一个基于SpringBoot的在线教育系统【源码开源】【建议收藏】

  • 授课老师管理

  • 订单管理

  • 菜单管理

  • 友情链接管理

  • 系统属性管理

  • 自定义帖子管理

  • 轮转图片帖子管理

3. 前端

======

3.1 首页


3.2 课程


提供按照课程的类别,类型以及搜索框进行快速查询相关课程

点击任意一门课程,免费课程可以直接观看,vip课程则需要通过支付宝或者微信缴费开通vip进行观看

3.3 登入


学习课程时候需要登录才能观看相关视频资料

登入后可以查看个人中心的相关功能

在我的订单界面可以查看已经购买的课程

3.4 商品兑换


3.5 课程发布


在课程发布页面可以提交发布的课程资料

在我的发布页面可以查看所有已经发布的课程相关信息,查看审核状态

4. 后端


4.1 登录


4.2 系统管理


包括用户管理,角色管理,菜单管理,可以查看对应的信息并添加,导入,修改或删除

角色管理界面可以为角色分配权限

4.3 课程管理


可以添加课程,对课程进行分类管理:公共课程,专业课程,免费课程等

在类别管理中可以添加课程的分类信息

在审核功能处可以对上传的视频进行审核

4.4 教师管理


4.5 导航菜单


4.6 轮播管理


4.7 通知管理


4.8 礼品管理


5,系统的核心代码

=========

/**

  • 操作日志记录注解

  • Created by xiaomeng 2020-03-21 17:03

*技术交流v:kaifazixun

  • 操作日志记录注解

  • Created by wangfan on 2020-03-21 17:03

*/

@Target({ElementType.TYPE, ElementType.METHOD})

@Retention(RetentionPolicy.RUNTIME)

public @interface OperLog {

/**

  • 模块

*/

String value();

/**

  • 功能

*/

String desc();

/**

  • 是否记录请求参数

*/

boolean param() default true;

/**

  • 是否记录返回结果

*/

boolean result() default false;

}*

*/

@Target({ElementType.TYPE, ElementType.METHOD})

@Retention(RetentionPolicy.RUNTIME)

public @interface OperLog {

/**

  • 模块

*/

String value();

/**

  • 功能

*/

String desc();

/**

  • 是否记录请求参数

*/

boolean param() default true;

/**

  • 是否记录返回结果

*/

boolean result() default false;

}

@Aspect

@Component

public class OperLogAspect {

private ThreadLocal startTime = new ThreadLocal<>();

@Autowired

private OperRecordService operRecordService;

@Pointcut(“@annotation(com.egao.common.core.annotation.OperLog)”)

public void operLog() {

}

@Before(“operLog()”)

public void doBefore(JoinPoint joinPoint) throws Throwable {

startTime.set(System.currentTimeMillis());

}

@AfterReturning(pointcut = “operLog()”, returning = “result”)

public void doAfterReturning(JoinPoint joinPoint, Object result) {

saveLog(joinPoint, result, null);

}

@AfterThrowing(value = “operLog()”, throwing = “e”)

public void doAfterThrowing(JoinPoint joinPoint, Exception e) {

saveLog(joinPoint, null, e);

}

private void saveLog(JoinPoint joinPoint, Object result, Exception e) {

// 获取reques对象

ServletRequestAttributes attributes = (ServletRequestAttributes) RequestContextHolder.getRequestAttributes();

HttpServletRequest request = (attributes == null ? null : attributes.getRequest());

// 构建操作日志

OperRecord operRecord = new OperRecord();

operRecord.setUserId(getLoginUserId());

if (startTime.get() != null) operRecord.setSpendTime(System.currentTimeMillis() - startTime.get());

if (request != null) {

operRecord.setRequestMethod(request.getMethod());

operRecord.setUrl(request.getRequestURI());

operRecord.setIp(UserAgentGetter.getIp(request));

}

// 记录异常信息

if (e != null) {

operRecord.setState(1);

operRecord.setComments(StrUtil.sub(e.toString(), 0, 2000));

}

public class BaseController {

/**

  • 获取当前登录的user

*/

public User getLoginUser() {

Subject subject = SecurityUtils.getSubject();

if (subject == null) return null;

Object object = subject.getPrincipal();

if (object != null) return (User) object;

return null;

}

/**

  • 获取当前登录的userId

*/

public Integer getLoginUserId() {

User loginUser = getLoginUser();

return loginUser == null ? null : loginUser.getUserId();

}

}

/**

  • 用户管理

  • Created by xiaomeng 2020-12-24 16:10

*技术交流V:kaifazixun

*/

@Controller

@RequestMapping(“/sys/user”)

public class UserController extends BaseController {

@Autowired

private UserService userService;

@Autowired

private DictionaryDataService dictionaryDataService;

@Autowired

private RoleService roleService;

@Autowired

private OrganizationService organizationService;

@RequiresPermissions(“sys:user:view”)

@RequestMapping()

public String view(Model model) {

model.addAttribute(“sexList”, dictionaryDataService.listByDictCode(“sex”));

model.addAttribute(“organizationTypeList”, dictionaryDataService.listByDictCode(“organization_type”));

model.addAttribute(“rolesJson”, JSON.toJSONString(roleService.list()));

return “system/user.html”;

}

/**

  • 个人中心

*/

@RequestMapping(“/info”)

public String userInfo(Model model) {

model.addAttribute(“user”, userService.getFullById(getLoginUserId()));

model.addAttribute(“sexList”, dictionaryDataService.listByDictCode(“sex”));

return “index/user-info.html”;

}

/**

  • 分页查询用户

*/

@OperLog(value = “用户管理”, desc = “分页查询”)

@RequiresPermissions(“sys:user:list”)

@ResponseBody

@RequestMapping(“/page”)

public PageResult page(HttpServletRequest request) {

PageParam pageParam = new PageParam<>(request);

pageParam.setDefaultOrder(null, new String[]{“create_time”});

return userService.listPage(pageParam);

}

/**

  • 查询全部用户

*/

@OperLog(value = “用户管理”, desc = “查询全部”)

@RequiresPermissions(“sys:user:list”)

@ResponseBody

@RequestMapping(“/list”)

public JsonResult list(HttpServletRequest request) {

PageParam pageParam = new PageParam<>(request);

List records = userService.listAll(pageParam.getNoPageParam());

return JsonResult.ok().setData(pageParam.sortRecords(records));

}

/**

  • 根据id查询用户

*/

@OperLog(value = “用户管理”, desc = “根据id查询”)

@RequiresPermissions(“sys:user:list”)

@ResponseBody

@RequestMapping(“/get”)

public JsonResult get(Integer id) {

PageParam pageParam = new PageParam<>();

pageParam.put(“userId”, id);

List records = userService.listAll(pageParam.getNoPageParam());

return JsonResult.ok().setData(pageParam.getOne(records));

}

/**

  • 字典管理

  • Created by xiaomeng on 2021-03-14 11:29:03

  • 技术交流加v:kafazixun

*/
自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数Java工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年Java开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Java开发知识点,真正体系化!

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!

如果你觉得这些内容对你有帮助,可以扫码获取!!(备注Java获取)

img

读者福利

由于篇幅过长,就不展示所有面试题了,感兴趣的小伙伴

35K成功入职:蚂蚁金服面试Java后端经历!「含面试题+答案」

35K成功入职:蚂蚁金服面试Java后端经历!「含面试题+答案」

35K成功入职:蚂蚁金服面试Java后端经历!「含面试题+答案」

更多笔记分享

35K成功入职:蚂蚁金服面试Java后端经历!「含面试题+答案」
《互联网大厂面试真题解析、进阶开发核心学习笔记、全套讲解视频、实战项目源码讲义》点击传送门即可获取!
8)]

[外链图片转存中…(img-mWVg2agC-1713430580678)]

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Java开发知识点,真正体系化!

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!

如果你觉得这些内容对你有帮助,可以扫码获取!!(备注Java获取)

img

读者福利

由于篇幅过长,就不展示所有面试题了,感兴趣的小伙伴

[外链图片转存中…(img-VX9uRPrG-1713430580679)]

[外链图片转存中…(img-0xXavJEL-1713430580679)]

[外链图片转存中…(img-DDdYvbFg-1713430580679)]

更多笔记分享

[外链图片转存中…(img-HvnoRGu0-1713430580679)]
《互联网大厂面试真题解析、进阶开发核心学习笔记、全套讲解视频、实战项目源码讲义》点击传送门即可获取!

  • 20
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值