仿b站微服务项目需求分析、实现思路和解决单表增删改查需求模版

需求分析与实现之前先给出解决大部分单表增删改查需求模版:

以个人主页权限查看为例:

确定请求参数和返回值,编写控制器接口定义

@RestController  ResponseBody+Controller注解二合一,既注册了该类到容器且标识是个
controller又使响应json化
@Api(tags = "用户个人主页各模块权限开放状态查看与编辑")                          
@RequestMapping("/selfCenter")   请求大路径
@CrossOrigin(value = "*")   最简单解决跨域注解
@Slf4j
public class SelfCenterController {
    @Resource
    注意注入抽象接口即可,会自动映射到实现了该接口的实现service类
    SelfCenterService selfCenterService;
    @ApiOperation("获取用户个人主页各模块权限开放状态")
    @PostMapping("/getUserPrivilege/{userId}")    请求小路径和请求方法类型post
    public Result<PrivilegeResponse> getUserPrivilege(@PathVariable Integer userId){
                                                        ↑截取路径中的参数,注意该路径中的参数需要
        return selfCenterService.getUserPrivilege(userId);  是封装类型比如Integer或String否则截取
                                                            不到
    }
}

编写service接口,固定方法传参返回值名称

public interface SelfCenterService {
    Result<PrivilegeResponse> getUserPrivilege(Integer userId);
}

编写mybatis-plus对应操作表的实体类

@Data
@TableName("privilege")
@Accessors(chain = true)
public class Privilege {
    @TableId(type = IdType.AUTO)
    Integer id;
    @TableField("user_id")
    Integer userId;
    @TableField("collect_group")
    Integer collectGroup;
    @TableField("remotely_like")
    Integer remotelyLike;
    @TableField("fans_list")
    Integer fansList;
    @TableField("idol_list")
    Integer idolList;
}

创建操作该实体类的mapper

package ljl.bilibili.mapper.user_center.user_info;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import ljl.bilibili.entity.user_center.user_info.Privilege;
import org.apache.ibatis.annotations.Mapper;
@Mapper
public interface PrivilegeMapper extends BaseMapper<Privilege> {
}

写service接口的具体实现,在其中将传入参数(如果是自定义请求类则先将其转换为实体类)并入mybatis-plus特有单表增删改查语法,注入并调用对应mapper完成单表增删改查(若是查询往往需要将查出来的实体类转换为

响应类),最后泛型封装返回值,在原有返回值基础上提供额外描述字段code、msg辅助前端查看调用接口情况

public class SelfCenterServiceImpl implements SelfCenterService {
    注入该mapper
    @Resource
    PrivilegeMapper privilegeMapper;
    @Override
    public Result<PrivilegeResponse> getUserPrivilege(Integer userId){
        LambdaQueryWrapper<Privilege> wrapper=new LambdaQueryWrapper<>();
        wrapper.eq(Privilege::getUserId,userId);
        Privilege privilege=privilegeMapper.selectById(userId);
        return Result.data(new PrivilegeResponse().setCollectGroup(privilege.getCollectGroup()).setFansList(privilege.getFansList()).setIdolList(privilege.getIdolList()).setRemotelyLike(privilege.getRemotelyLike()));
    }
}


多表则是手写sql,注解形式写在mapper文件中或者xml文件中,然后调用mapper完成数据库层增删改查。

需求分析与实现思路

视频服务

收藏:

1.右上角看到收藏夹列表和每个收藏夹下的视频:根据传入的用户id查询得到收藏夹列表并返回收藏夹,将选定的收藏夹id传入查询得到收藏夹下的视频并返回收藏的视频

2.可以看到标注了视频是否被收藏的收藏夹列表:根据传入的用户id和视频id对收藏夹进行标记并返回有标记的收藏夹

3.可以同时收藏和取消多个视频:选定被某个收藏夹收藏和取消被某个收藏夹收藏后根据传入的对象的type字段来决定是新增收藏还是取消收藏并同时执行,并返回操作结果

4.可以创建、修改、删除收藏夹:根据传入的收藏夹对象信息来进行新增修改删除

评论:

1.获取视频下的评论:将视频id传入并返回对视频的评

剩余60%内容,订阅专栏后可继续查看/也可单篇购买

该专栏存放前后端分离仿b站微服务项目相关教程与简历话术

全部评论
牛的老哥
点赞 回复 分享
发布于 2024-07-27 21:26 江苏
博主,阅读了需求分析后,大致看了下源代码,如果写入简历的话,请问以下学习顺序是否合理~ 1. 基础模块 网关服务:如何通过 token 进行用户身份验证,以及如何实现多种登录方式。 用户服务:用户的注册、登录、关注/取关。 2. 视频基础功能 视频上传功能 播放功能 推荐系统 3. 用户互动模块 点赞功能 评论功能 弹幕功能 4. 收藏功能 收藏夹和收藏功能 5. 扩展 消息服务:消息服务的异步处理和顺序消费 6. 实时聊天和大模型服务 聊天服务:学习 WebSocket 讯飞星火大模型:学习如何调用外部 AI 模型服务
点赞 回复 分享
发布于 2024-09-19 21:36 澳大利亚
佬,我前后端联调完成后,挺多功能都不能正常使用头像能够上传到minio里但是显示不出来,点击提交有一个404错误,也找不到对应的controller。搜索功能好像是es索引的问题,我目前只按照前面帖子的操作创建了两个索引。佬能给个大概思路吗?就是怎么调试这个项目,我现在能正常使用的有视频上传和评论区
点赞 回复 分享
发布于 2024-10-29 13:21 江西
佬,抱歉啊,这段时间又是答辩又是毕设的,摆了一段时间,这是之前学习过程中总结的部分问题,大佬有时间可以看看,能给出些建议的话万谢了其实问题主要就是评论回复在前端的显示、搜索(es)、还有大模型调用、点赞评论几个方面。问题最大的就是前端调试方面,佬的源码我这里有两个dist目录,然后其中一个乱码一个正常,相同点是修改了没影响到前端展示,我猜是和nginx相关,但是我刷新缓存也没有用(本项目nginx好像没开启缓存?),佬能教下怎么改这个项目的前端吗?不瞒佬,我学习这个项目是打算作为毕设和春招找工作,前端的内容我不太懂,单独做一个够呛,就打算在这个项目的基础上改下
点赞 回复 分享
发布于 2024-11-12 08:28 江西
老哥,github账号是什么啊,找半天没找到
点赞 回复 分享
发布于 01-07 22:06 北京
佬,github里是整个项目所有代码嘛
点赞 回复 分享
发布于 02-14 09:52 北京

相关推荐

01-23 14:54
同济大学 Java
热爱敲代码的程序媛:给你提几点【专业技能】这个模块里面可优化的地方:1.【具备JVM调优经验】可以去b站上搜一下JVM调优的视频,估计一两个小时凭你的学习能力就能掌握JVM调优的实践方面的技能。2.【MySql优化】MySql这一栏,你去b站或者找个博客看看MySql优化,学一下,如果你本身比较熟悉MySql语句的话,那基本半天时间凭你的学习能力MySql语句优化方面的技能你也能掌握个差不多。以上1,2两点主要是因为我看你专业技能大部分都说的是偏理论,没有写应用。再就是最后,你结合你的项目,想一想你的项目中哪些sql语句是可以用MySql优化的,到时候你面试的时候也好结合着说一下。
点赞 评论 收藏
分享
评论
6
9
分享

创作者周榜

更多
牛客网
牛客企业服务