Java實(shí)戰(zhàn)之電影在線觀看系統(tǒng)的實(shí)現(xiàn)
一、項(xiàng)目簡(jiǎn)述
環(huán)境配置:
Jdk1.8 + Tomcat8.5 + mysql + Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)
項(xiàng)目技術(shù):
JSP +Spring + SpringMVC + MyBatis + html+ css + JavaScript + JQuery + Ajax + layui+ maven等等。
二、效果圖展示
三、核心代碼
后臺(tái)用戶管理控制器
/** * 后臺(tái)用戶管理控制器 * @author yy * */ @RequestMapping("/admin/user") @Controller public class UserController { @Autowired private UserService userService; @Autowired private RoleService roleService; @Autowired private OperaterLogService operaterLogService; /** * 用戶列表頁(yè)面 * @param model * @param user * @param pageBean * @return */ @RequestMapping(value="/list") public String list(Model model, User user, PageBean<User> pageBean){ model.addAttribute("title", "用戶列表"); model.addAttribute("username", user.getUsername()); model.addAttribute("pageBean", userService.findList(user, pageBean)); return "admin/user/list"; } /** * 新增用戶頁(yè)面 * @param model * @return */ @RequestMapping(value="/add",method=RequestMethod.GET) public String add(Model model){ model.addAttribute("roles", roleService.findAll()); return "admin/user/add"; } /** * 用戶添加表單提交處理 * @param user * @return */ @RequestMapping(value="/add",method=RequestMethod.POST) @ResponseBody public Result<Boolean> add(User user){ //用統(tǒng)一驗(yàn)證實(shí)體方法驗(yàn)證是否合法 CodeMsg validate = ValidateEntityUtil.validate(user); if(validate.getCode() != CodeMsg.SUCCESS.getCode()){ return Result.error(validate); } if(user.getRole() == null || user.getRole().getId() == null){ return Result.error(CodeMsg.ADMIN_USER_ROLE_EMPTY); } //判斷用戶名是否存在 if(userService.isExistUsername(user.getUsername(), 0l)){ return Result.error(CodeMsg.ADMIN_USERNAME_EXIST); } //到這說(shuō)明一切符合條件,進(jìn)行數(shù)據(jù)庫(kù)新增 if(userService.save(user) == null){ return Result.error(CodeMsg.ADMIN_USE_ADD_ERROR); } operaterLogService.add("添加用戶,用戶名:" + user.getUsername()); return Result.success(true); } /** * 用戶編輯頁(yè)面 * @param model * @return */ @RequestMapping(value="/edit",method=RequestMethod.GET) public String edit(Model model,@RequestParam(name="id",required=true)Long id){ model.addAttribute("roles", roleService.findAll()); model.addAttribute("user", userService.find(id)); return "admin/user/edit"; } /** * 編輯用戶信息表單提交處理 * @param user * @return */ @RequestMapping(value="/edit",method=RequestMethod.POST) @ResponseBody public Result<Boolean> edit(User user){ //用統(tǒng)一驗(yàn)證實(shí)體方法驗(yàn)證是否合法 CodeMsg validate = ValidateEntityUtil.validate(user); if(validate.getCode() != CodeMsg.SUCCESS.getCode()){ return Result.error(validate); } if(user.getRole() == null || user.getRole().getId() == null){ return Result.error(CodeMsg.ADMIN_USER_ROLE_EMPTY); } if(user.getId() == null || user.getId().longValue() <= 0){ return Result.error(CodeMsg.ADMIN_USE_NO_EXIST); } if(userService.isExistUsername(user.getUsername(), user.getId())){ return Result.error(CodeMsg.ADMIN_USERNAME_EXIST); } //到這說(shuō)明一切符合條件,進(jìn)行數(shù)據(jù)庫(kù)保存 User findById = userService.find(user.getId()); //講提交的用戶信息指定字段復(fù)制到已存在的user對(duì)象中,該方法會(huì)覆蓋新字段內(nèi)容 BeanUtils.copyProperties(user, findById, "id","createTime","updateTime"); if(userService.save(findById) == null){ return Result.error(CodeMsg.ADMIN_USE_EDIT_ERROR); } operaterLogService.add("編輯用戶,用戶名:" + user.getUsername()); return Result.success(true); } /** * 刪除用戶 * @param id * @return */ @RequestMapping(value="/delete",method=RequestMethod.POST) @ResponseBody public Result<Boolean> delete(@RequestParam(name="id",required=true)Long id){ try { userService.delete(id); } catch (Exception e) { return Result.error(CodeMsg.ADMIN_USE_DELETE_ERROR); } operaterLogService.add("添加用戶,用戶ID:" + id); return Result.success(true); } }
電影管理控制器
/** * 電影管理控制器 * @author yy * */ @RequestMapping("/admin/movie") @Controller public class MovieController { @Autowired private MovieService movieService; @Autowired private MovieCommentService movieCommentService; /** * 電影列表頁(yè)面 * @param model * @return */ @RequestMapping(value="/list") public String list(Model model, Movie movie, PageBean<Movie> pageBean){ model.addAttribute("pageBean", movieService.findPage(movie, pageBean)); model.addAttribute("name",movie.getName()); return "admin/movie/list"; } /** * 電影添加頁(yè)面 * @param model * @return */ @RequestMapping(value="/add",method=RequestMethod.GET) public String add(Model model){ model.addAttribute("movieAreaList", MovieArea.values()); model.addAttribute("movieTypeList", MovieType.values()); model.addAttribute("movieLangList", MovieLang.values()); return "admin/movie/add"; } /** * 電影編輯頁(yè)面 * @param model * @param id * @return */ @RequestMapping(value="/edit",method=RequestMethod.GET) public String edit(Model model,@RequestParam(name="id",required=true)Long id){ model.addAttribute("movie", movieService.findById(id)); model.addAttribute("movieAreaList", MovieArea.values()); model.addAttribute("movieTypeList", MovieType.values()); model.addAttribute("movieLangList", MovieLang.values()); return "admin/movie/edit"; } /** * 添加電影表單提交 * @param movie * @return */ @RequestMapping(value="/add",method=RequestMethod.POST) @ResponseBody public Result<Boolean> add(Movie movie){ if(movie == null){ return Result.error(CodeMsg.DATA_ERROR); } CodeMsg validate = ValidateEntityUtil.validate(movie); if(validate.getCode() != CodeMsg.SUCCESS.getCode()){ return Result.error(validate); } //判斷是否是編輯 if(movie.getId() != null && movie.getId() > 0){ Movie findById = movieService.findById(movie.getId()); movie.setCreateTime(findById.getCreateTime()); movie.setRate(findById.getRate()); movie.setRateCount(findById.getRateCount()); movie.setTotalMoney(findById.getTotalMoney()); } //表示數(shù)據(jù)合法,可以保存到數(shù)據(jù)庫(kù) if(movieService.save(movie) == null){ return Result.error(CodeMsg.ADMIN_AREA_SAVE_ERROR); } return Result.success(true); } /** * 刪除 * @param id * @return */ @RequestMapping(value="/delete",method=RequestMethod.POST) @ResponseBody public Result<Boolean> delete(@RequestParam(name="id",required=true)Long id){ try { movieService.delete(id); } catch (Exception e) { return Result.error(CodeMsg.ADMIN_MOVIE_DELETE_ERROR); } return Result.success(true); } /** * ----------電影評(píng)價(jià)管理------------- */ /** * 電影評(píng)價(jià)列表 * @param model * @param movieComment * @param pageBean * @return */ @RequestMapping(value="/comment_list") public String list(Model model,MovieComment movieComment,PageBean<MovieComment> pageBean){ model.addAttribute("pageBean", movieCommentService.findPage(movieComment, pageBean)); model.addAttribute("content",movieComment.getContent()); return "admin/movie/comment_list"; } /** * 刪除評(píng)價(jià) * @param id * @return */ @RequestMapping(value="/delete_comment",method=RequestMethod.POST) @ResponseBody public Result<Boolean> deleteComment(@RequestParam(name="id",required=true)Long id){ movieCommentService.delete(id); return Result.success(true); } }
前臺(tái)電影控制器
/** * 前臺(tái)電影控制器 * @author yy * */ @RequestMapping("/home/movie") @Controller public class HomeMovieController { @Autowired private MovieService movieService; @Autowired private MovieCommentService movieCommentService; @Autowired private NewsService newsService; @Autowired private CinemaHallSessionService cinemaHallSessionService; @Autowired private CinemaService cinemaService; @Autowired private CinemaHallSeatService cinemaHallSeatService; @Value("${movie.select.seat.max.num}") private Integer selectedSeatMax;//最大選座數(shù) @Autowired private OrderService orderService; @Autowired private OrderItemService orderItemService; /** * 電影列表頁(yè)面 * @param model * @return */ @RequestMapping("/list") public String list(Model model,@RequestParam(name="type",defaultValue="0") Integer type){ model.addAttribute("movieList", type == 0 ? movieService.findShowList() : movieService.findFutureList()); model.addAttribute("type", type); model.addAttribute("topNewsList", newsService.findTop()); model.addAttribute("topMoneyMovieList", movieService.findTopMoneyList()); return "home/movie/list"; } /** * 電影詳情頁(yè)面 * @param model * @param id * @return */ @RequestMapping("/detail") public String detail(Model model,@RequestParam(name="id",required=true) Long id){ model.addAttribute("movie", movieService.findById(id)); model.addAttribute("topMovieList", movieService.findTopList(5)); model.addAttribute("distinctCinemaHallSessionList", cinemaHallSessionService.findDistinctCinemaByMovieId(id)); model.addAttribute("distinctShowDateCinemaHallSessionList", cinemaHallSessionService.findDistinctShowDateByMovieId(id)); model.addAttribute("commentList", movieCommentService.findByMovie(id)); return "home/movie/detail"; } /** * 選座頁(yè)面 * @param model * @param id * @return */ @RequestMapping("/select_seat") public String selectSeat(Model model,@RequestParam(name="id",required=true) Long id){ CinemaHallSession cinemaHallSession = cinemaHallSessionService.findById(id); model.addAttribute("cinemaHallSession", cinemaHallSession); model.addAttribute("cinemaHallSeatList", cinemaHallSeatService.findAll(cinemaHallSession.getCinemaHall().getId())); model.addAttribute("selectedSeatMax", selectedSeatMax); List<Order> findByCinemaHallSession = orderService.findByCinemaHallSession(id); model.addAttribute("orderSeatList", JSONArray.toJSONString(orderItemService.findOrderItemSeatIds(findByCinemaHallSession))); return "home/movie/select_seat"; } /** * 獲取指定電影、指定影院、指定時(shí)間下的場(chǎng)次 * @param model * @param mid * @param cid * @param showDate * @return */ @RequestMapping("/get_show_session") public String getShowSession(Model model, @RequestParam(name="mid",required=true) Long mid, @RequestParam(name="cid",required=true) Long cid, @RequestParam(name="showDate",required=true) String showDate){ model.addAttribute("cinemaHallSessionList", cinemaHallSessionService.findByMovieIdAndCinemaIdAndShowDate(mid, cid, showDate)); return "home/movie/get_show_session"; } /** * 統(tǒng)計(jì)電影上映場(chǎng)次 * @param movieId * @return */ @RequestMapping("/get_show_stats") @ResponseBody public Result<List<Integer>> getShowStats(@RequestParam(name="mid",required=true) Long movieId) { List<Integer> ret = new ArrayList<Integer>(); List<Integer> showTotal = cinemaHallSessionService.getShowTotal(movieId); if(showTotal == null || showTotal.size() <= 0){ ret.add(0); ret.add(0); return Result.success(ret); } ret.add(showTotal.size());//上映的影院數(shù) //計(jì)算場(chǎng)次數(shù) int totalSession = 0; for(int i=0; i< showTotal.size();i++){ totalSession += Integer.parseInt(showTotal.get(i)+""); } ret.add(totalSession); return Result.success(ret); } }
以上就是Java實(shí)戰(zhàn)之電影在線觀看系統(tǒng)的實(shí)現(xiàn)的詳細(xì)內(nèi)容,更多關(guān)于Java電影觀看系統(tǒng)的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
Sharding-JDBC自動(dòng)實(shí)現(xiàn)MySQL讀寫(xiě)分離的示例代碼
本文主要介紹了Sharding-JDBC自動(dòng)實(shí)現(xiàn)MySQL讀寫(xiě)分離,優(yōu)點(diǎn)在于數(shù)據(jù)源完全有Sharding-JDBC托管,寫(xiě)操作自動(dòng)執(zhí)行master庫(kù),讀操作自動(dòng)執(zhí)行slave庫(kù),感興趣的可以了解一下2021-11-11設(shè)置JavaScript自動(dòng)提示-Eclipse/MyEclipse
自動(dòng)提示需要2個(gè)組件,分別是:ext-4.0.2a.jsb2||spket-1.6.16.jar,需要的朋友可以參考下2016-05-05Springcloud eureka搭建高可用集群過(guò)程圖解
這篇文章主要介紹了Springcloud eureka搭建高可用集群過(guò)程圖解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-04-04nacos配置中心遠(yuǎn)程調(diào)用讀取不到配置文件的解決
這篇文章主要介紹了nacos配置中心遠(yuǎn)程調(diào)用讀取不到配置文件的解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教。2022-01-0195%的Java程序員人都用不好Synchronized詳解
這篇文章主要為大家介紹了95%的Java程序員人都用不好Synchronized詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-03-03SpringBoot整合第三方技術(shù)的實(shí)現(xiàn)
本文主要介紹了SpringBoot整合第三方技術(shù)的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2023-02-02基于Protobuf動(dòng)態(tài)解析在Java中的應(yīng)用 包含例子程序
下面小編就為大家?guī)?lái)一篇基于Protobuf動(dòng)態(tài)解析在Java中的應(yīng)用 包含例子程序。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-07-07