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