【推电影】主要是为校招设计的年青人电影推荐平台项目,每个模块都具有亮点和难点,项目表现为手机网站应用,可嵌入小程序或APP中。
恭喜来自东华理工大学的乌托邦同学获得本周线上实习【推电影】第一期 电影详情模块 Java代码周最佳
该作品针对电影详情模块的,推文案、推剪辑,以及多演员和导演的对应,都做了比较好的逻辑实现。同时,对电影类型的枚举以及对时长的格式要求,也都进行了处理。
优点:
1.业务逻辑处理比较清楚
电影详情模块包括多演员的处理、底层怎么设计怎么实现,三推怎么实现都处理得比较好
2.枚举使用还不错
枚举基本都知道怎么去使用
但是依然存在部分问题:
1.判空和开发文档的作用
传一个参数进来,需要考虑这个参数是不是合法的,查询出来是不是空指针。另外该同学对开发文档不是很理解。写代码不能根据自己写的文档来写,实习的时候自己的文档一般是有问题的,会有人给你提意见,我们这里也提供了官方版改进文档,如果不跟着改进的版本走只是按照自己的文档写,那么提高是有限的
2.接口一般不太使用seo的格式
这个可能是官方修改文档的一个误导。另外springboot有很多的关键词,但是使用的原则是必须要用的时候再去用,如果没有必要用,就尽量节省性能的开销。另外,对多演员通过ID字符串拼接方式查询的接口,进行了一部由字符串向链表进行转化的一个动作,这个处理实际上是有两种更好的解决方案。一种就是直接使用IDS作为参数,直接在数据层使用find-in-set来实现,数据库是支持这种实现的。另一种就是把这个字符串往链表转化的操作给嵌入到方法内部,而不用每次调用的时候在controller层额外加一个处理逻辑。
3.注解问题
注解比较多的情况下,有一个原则:能不用注解就不用。等到发现这么写代码实现不了的时候再去考虑用注解解决。
4.性能的考虑
正常的工程师如果想要往上走,就一定要有注重性能的意识,数据库能少查一次就少查一次,量一大的话,少查一次也会有很大的影响。
部分作品展示:
@GetMapping ("/detail (movieId)")
public ResponseDO getMovieDetail(@RequestParam ("movieId") Integer movieId){
log. info ("detail获取到参数"+movieid);
ResponseDO responseDO = new ResponseDO();
//获取到电影类
MovieDetail detail = movieDetailService. getById (movieId);
if (detail==null){
responseDO.setSuccess (false);
responseDO.setMsg("查询失败");
responseDO.setData("");
return responseDO;
List<Integer>ids=DataUtil.getId(detail.getActorIds());
List<MovieActor>actors=movieActorService.listByIds(ids);/ /获取演员列表
MovieDirector director=movieDirectorService.getById (detail.getDirectorId());//获取导演
List<MovieTuiInfo> tuiVideos=movieTuiInfoService.getByMovieId (movieId,1) ; //type =1为视频; 2为图片
List<MovieTuiInfo> tuiImages=movieTuiInfoService.getByMovieId (movieId,2) ; //type =1为视频;2为图片
ResponseMovieDetail responseMovieDetail=new ResponseMovieDetail();
responseMovieDetail.setDetail (detail);
responseMovieDetail.setActorList (actors);
responseMovieDetail.setDirector (director);
responseMovieDetail.setTuiVideos (tuiVideos);
responseMovieDetail.setTuiImages (tui Images);
responseMovieDetail.setTypeName (MovieType.getNameByType (detail.getType()));
responseMovieDetail.setTime InMinite (detail. getTimeInMinite());//电影时长
//todo 当前登录用户是否收藏
responseDO.setSuccess (true);