QQ__2079523559头像
基于微信小程序的影音点评系统-附源码封面图

基于微信小程序的影音点评系统-附源码

温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台官方提供的学长联系方式的名片!

课题介绍

课题名称:基于微信小程序的影音点评系统
课题介绍:随着影视、综艺、动漫、音乐作品数量越来越多,用户需要一个轻量化平台浏览影音作品、查看评分、发布观后感、交流讨论。传统影音平台功能繁杂,APP 安装成本高。本系统采用微信小程序作为前端,后端使用 SpringBoot,用户不用下载 APP,微信直接打开即可使用。系统设置管理员、普通用户两类角色。用户可以浏览电影、剧集、动漫、音乐作品,查看作品详情、简介、封面、演员、发布时间,查看其他用户的点评、评分,支持点赞、收藏、评论,发布自己的点评打分;管理员负责影音作品分类管理、作品信息录入、审核用户点评、违规内容处理、用户管理、数据统计。系统实现影音作品管理、作品检索筛选、点评发布、评分、点赞收藏、评论回复、公告、热门推荐等功能,满足影音爱好者在线看片参考、交流点评的需求。

技术栈

后端:SpringBoot + MyBatis-Plus + MySQL + Redis
权限:JWT 令牌登录(微信授权登录)
前端:微信小程序(原生)
其他:ECharts 后台可视化、图片上传、Redis 缓存热门作品、点赞收藏计数
系统模块:微信授权登录模块、影音作品模块、分类模块、点评模块、点赞收藏模块、评论回复模块、公告模块、后台管理模块、统计模块。

系统分析

角色:系统管理员、普通用户
系统管理员:影音分类管理、影音作品新增 / 编辑 / 删除、查看所有用户点评、审核点评、删除违规评论、用户管理、查看平台数据(作品数量、点评数量、热门作品统计)、发布公告。
普通用户:微信一键授权登录、浏览影音作品、按分类 / 名称搜索影音、查看作品详情、查看评分和点评列表、对作品打分、发布文字点评、点赞点评、收藏作品、评论别人点评、查看我的收藏、我的点评、我的评论。

非功能性需求:用户必须微信授权才能发布点评、点赞、收藏;点评内容需要敏感词过滤,违规内容管理员可直接删除;一个用户对同一个影音作品只能发布一条点评;点赞支持取消点赞,收藏支持取消收藏;评分范围 1-5 分;热门作品根据点评数量、点赞数自动排序;图片上传限制大小;小程序端访问速度快,热门数据缓存;用户只能修改删除自己发布的点评;关键操作记录日志。

系统截图

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

文档

在这里插入图片描述

系统设计

核心数据表:user 用户表、category 分类表、media 影音作品表、review 点评表、like 点赞表、collect 收藏表、comment 评论表、notice 公告表。
业务流程:用户微信授权登录 → 浏览 / 搜索影音作品 → 查看作品详情和点评 → 发布点评打分 / 点赞收藏 / 评论回复;管理员后台录入影音、审核管理点评、处理违规内容。

核心代码

@RestController
@RequestMapping("/media")
public class MediaController {
    @Resource
    private IMediaService mediaService;
    @Resource
    private IReviewService reviewService;
    @Resource
    private ILikeService likeService;
    @Resource
    private ICollectService collectService;

    // 获取影音作品列表,支持分类筛选、搜索
    @GetMapping("/list")
    public Result list(@RequestParam(required = false) Long categoryId,
                       @RequestParam(required = false) String name,
                       @RequestParam(defaultValue = "1") Integer pageNum,
                       @RequestParam(defaultValue = "8") Integer pageSize) {
        Page<Media> page = mediaService.getMediaPage(categoryId, name, pageNum, pageSize);
        return Result.success(page);
    }

    // 发布点评,一个用户一个作品只能一条点评
    @PostMapping("/review/add")
    public Result addReview(@RequestBody ReviewDTO dto) {
        if(dto.getMediaId() == null){
            return Result.fail("影音作品id不能为空");
        }
        if(dto.getUserId() == null){
            return Result.fail("用户未登录");
        }
        if(dto.getScore() == null || dto.getScore() < 1 || dto.getScore() > 5){
            return Result.fail("评分必须在1~5分之间");
        }
        if(dto.getContent() == null || dto.getContent().trim().isEmpty()){
            return Result.fail("点评内容不能为空");
        }
        boolean exist = reviewService.checkUserReview(dto.getUserId(), dto.getMediaId());
        if(exist){
            return Result.fail("您已经对该作品发布过点评,不可重复发布");
        }
        ReviewVO vo = reviewService.saveReview(dto);
        return Result.success("点评发布成功", vo);
    }

    // 点赞/取消点赞点评
    @PostMapping("/like/toggle")
    public Result toggleLike(@RequestParam Long reviewId, @RequestParam Long userId) {
        if(reviewId == null || userId == null){
            return Result.fail("参数缺失");
        }
        boolean isLike = likeService.toggleLike(reviewId, userId);
        return Result.success(isLike ? "点赞成功" : "取消点赞成功");
    }

    // 收藏/取消收藏影音
    @PostMapping("/collect/toggle")
    public Result toggleCollect(@RequestParam Long mediaId, @RequestParam Long userId) {
        if(mediaId == null || userId == null){
            return Result.fail("参数缺失");
        }
        boolean isCollect = collectService.toggleCollect(mediaId, userId);
        return Result.success(isCollect ? "收藏成功" : "取消收藏成功");
    }

    // 获取作品的点评列表
    @GetMapping("/review/list")
    public Result getReviewList(@RequestParam Long mediaId,
                                @RequestParam(defaultValue = "1") Integer pageNum,
                                @RequestParam(defaultValue = "5") Integer pageSize) {
        Page<ReviewVO> page = reviewService.getReviewByMediaId(mediaId, pageNum, pageSize);
        return Result.success(page);
    }
}

系统测试

表格

测试编号测试模块测试目的输入数据预期结果实测结果是否通过
TC01微信授权登录小程序登录微信授权获取用户信息,生成 token登录成功通过
TC02影音分类管理员新增分类分类名称:电影分类保存成功新增成功通过
TC03新增影音作品管理员录入作品名称、封面、简介、类型、评分作品入库,小程序可查看录入成功通过
TC04搜索影音模糊搜索搜索关键词:流浪地球匹配相关作品展示搜索正常通过
TC05发布点评校验评分 0 分评分 0,内容正常提示评分 1~5 分,拦截拦截成功通过
TC06点评内容为空内容为空提交评分 4,内容空提示点评不能为空拦截成功通过
TC07重复点评同一用户同一作品二次点评已经点评过的作品提示不可重复点评拦截成功通过
TC08点赞点评点击点赞点评 id、用户 id点赞数 + 1,可再次点击取消点赞正常通过
TC09收藏作品收藏影音作品 id、用户 id收藏成功,我的收藏可查看收藏正常通过
TC10评论点评提交评论点评 id、评论内容评论保存,展示在点评下方评论成功通过
TC11管理员审核点评违规点评违规文字点评管理员删除,前端不可见删除成功通过
TC12我的点评查看自己发布的点评登录用户只展示本人点评列表数据隔离通过
TC13热门推荐按热度排序点评多、点赞高的作品排在首页热门位置排序正常通过
TC14公告查看用户查看公告管理员发布公告小程序首页展示公告展示正常通过

总结

本影音点评系统采用 SpringBoot 后端 + 微信小程序前端,分为管理员、普通用户两个角色,实现微信授权登录、影音分类管理、影音作品录入与检索、用户点评打分、点赞、收藏、评论回复、点评审核、违规内容管理、公告发布、热门作品推荐等功能。解决传统影音点评平台需要安装 APP、轻量化交流不方便的问题,用户打开微信小程序就可以查作品、看评价、发表观后感。系统限制一个用户对同一作品只能点评一次,评分区间固定,支持点赞收藏切换,管理员后台可以审核管控不良点评,保证平台内容规范。经过测试,微信登录、影音管理、点评发布、点赞收藏、评论、审核等功能稳定运行,适合影视、动漫、音乐爱好者交流使用。后续可以拓展视频预告播放、作品标签、私信、关注用户、点评回复通知、推荐算法等功能。

转载自 CSDN-专业IT技术社区

原文链接:https://blog.csdn.net/2502_92291565/article/details/170350030

文章来源转载

评论

评论列表

微信小程序
QQ小程序

关于作者

点赞数:0
关注数:0
粉丝:0
文章:0
关注标签:0
加入于:--