创意电子

标题: 一个月爆肝一个基于SpringBoot的在线教育系统「源码开源」 [打印本页]

作者: Java大数据高级架构师    时间: 2021-9-27 17:03
标题: 一个月爆肝一个基于SpringBoot的在线教育系统「源码开源」
1. 技术介绍

2.功能介绍

本项目分前台用户界面功能和后台管理功能;
后台管理功能:
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@Componentpublic 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 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 */@Controller@RequestMapping("/sys/dict")public class DictionaryController extends BaseController {    @Autowired    private DictionaryService dictionaryService;     @RequiresPermissions("sys:dict:view")    @RequestMapping()    public String view() {        return "system/dictionary.html";    }     /**     * 分页查询字典     */    @OperLog(value = "字典管理", desc = "分页查询")    @RequiresPermissions("sys:dict:list")    @ResponseBody    @RequestMapping("/page")    public PageResult page(HttpServletRequest request) {        PageParam pageParam = new PageParam(request);        return new PageResult(dictionaryService.page(pageParam, pageParam.getWrapper()).getRecords(), pageParam.getTotal());    }     /**     * 查询全部字典     */    @OperLog(value = "字典管理", desc = "查询全部")    @RequiresPermissions("sys:dict:list")    @ResponseBody    @RequestMapping("/list")    public JsonResult list(HttpServletRequest request) {        PageParam pageParam = new PageParam(request);        return JsonResult.ok().setData(dictionaryService.list(pageParam.getOrderWrapper()));    }     /**     * 根据id查询字典     */    @OperLog(value = "字典管理", desc = "根据id查询")    @RequiresPermissions("sys:dict:list")    @ResponseBody    @RequestMapping("/get")    public JsonResult get(Integer id) {        return JsonResult.ok().setData(dictionaryService.getById(id));    }6,源码获取

关注评论转发之后私信复兴【888】即刻免费获取

作者: androidzhh    时间: 2021-9-27 18:40
转发了
作者: 181206972    时间: 2021-9-27 21:51
转发了
作者: GuangZ    时间: 2021-9-27 23:10
转发了
作者: 物联区块链    时间: 2021-9-29 05:12
转发了
作者: Sievy    时间: 2021-9-29 14:23
转发了
作者: 中汉自媒体    时间: 2021-9-29 16:08
888
作者: 海鱼1234    时间: 2021-10-1 00:42
转发了
作者: freejob    时间: 2021-10-2 12:07
转发了




欢迎光临 创意电子 (https://wxcydz.cc/) Powered by Discuz! X3.4