项目编号:BS-PT-103
一,环境介绍
语言环境:Java: jdk1.8
数据库:Mysql: mysql5.7
应用服务器:Tomcat: tomcat8.5.31
开发工具:IDEA或eclipse
开发技术:Springboot+Mybatis+freemarker
特色功能:短信发送、沙箱支付宝支付、电影排片、按座购票、数据推荐等
二,项目简介
电影院的快速发展,线下的订票方式费时费力,建立一个线上的电影售票系统可以有效帮助人们知道什么时候有新的电影,而不需要电影院花费极大的代价宣传。 现在确定本系统用例模型有三种,分别是游客、注册用户和系统管理员。下面分别对这三个角色的功能进行描述: 1) 用户 用户是该系统的前台使用者,即消费者、顾客。他们可以浏览电影、浏览影院和选座支付及发表评论。用户用例图1-1如下: a. 登录注册; b. 浏览电影; c. 浏览影院; d. 选座支付; e. 发表评论。 图1-1用户用例图 2) 影院运营专员 影院运营专员是各影院的管理者,他们负责各自影院的正常运营。影院运营专员的功能有电影管理、影厅管理、排片管理、新闻资讯管理和订单管理 。影院运营专员用例图如下1-2: a. 电影管理; b. 影厅管理; c. 排片管理; d. 新闻资讯管理; e. 订单管理;
图1-2 影院运营专员用例图 3) 系统管理员 系统管理员主要负责各个角色及其权限管理、地域管理、影院管理以及用户管理,系统管理员用例图1-3如下: a. 角色管理; b. 地域管理; c. 影院管理; d. 用户管理;。 图1-3 系统管理员用例图 |
三,系统展示
系统首页
在线购票
电影评分、评论
用户注册、登录 手机发送验证码
后台管理功能展示
后台管理--角色管理
权限分配
用户管理
地域管理
电影管理
评价管理
影院管理
影厅管理
排片管理
四,核心代码展示
package com.yuanlrc.movie.controller.admin; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.bind.annotation.ResponseBody; import com.yuanlrc.movie.bean.PageBean; import com.yuanlrc.movie.bean.Result; import com.yuanlrc.movie.entity.common.Account; import com.yuanlrc.movie.service.common.AccountService; /** * 用户管理控制器 * @author Administrator * */ @RequestMapping("/admin/account") @Controller public class AccountController { @Autowired private AccountService accountService; /** * 用户列表 * @param model * @param account * @param pageBean * @return */ @RequestMapping(value="/list") public String list(Model model,Account account,PageBean<Account> pageBean){ model.addAttribute("pageBean", accountService.findPage(account, pageBean)); model.addAttribute("mobile",account.getMobile() ); return "admin/account/list"; } /** * 编辑用户状态 * @param account * @return */ @RequestMapping(value="/edit",method=RequestMethod.POST) @ResponseBody public Result<Boolean> edit(Account account){ Account findById = accountService.findById(account.getId()); findById.setStatus(account.getStatus()); //表示数据合法,可以保存到数据库 accountService.save(findById); return Result.success(true); } }
package com.yuanlrc.movie.controller.admin; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.ResponseBody; import com.yuanlrc.movie.bean.CinemaServices; import com.yuanlrc.movie.bean.CodeMsg; import com.yuanlrc.movie.bean.PageBean; import com.yuanlrc.movie.bean.Result; import com.yuanlrc.movie.entity.common.Area; import com.yuanlrc.movie.entity.common.Cinema; import com.yuanlrc.movie.entity.common.CinemaComment; import com.yuanlrc.movie.service.common.AreaService; import com.yuanlrc.movie.service.common.CinemaCommentService; import com.yuanlrc.movie.service.common.CinemaService; import com.yuanlrc.movie.util.ValidateEntityUtil; /** * 电影院管理控制器 * @author Administrator * */ @RequestMapping("/admin/cinema") @Controller public class CinemaController { @Autowired private CinemaService cinemaService; @Autowired private AreaService areaService; @Autowired private CinemaCommentService cinemaCommentService; /** * 电影院列表页面 * @param model * @return */ @RequestMapping(value="/list") public String list(Model model,Cinema cinema,PageBean<Cinema> pageBean){ model.addAttribute("pageBean", cinemaService.findPage(cinema, pageBean)); model.addAttribute("name",cinema.getName()); return "admin/cinema/list"; } /** * 电影院添加页面 * @param model * @return */ @RequestMapping(value="/add",method=RequestMethod.GET) public String add(Model model){ model.addAttribute("provinceList", areaService.getAllProvince()); model.addAttribute("cinemaServiceList", CinemaServices.values()); return "admin/cinema/add"; } /** * 电影院编辑页面 * @param model * @param id * @return */ @RequestMapping(value="/edit",method=RequestMethod.GET) public String edit(Model model,@RequestParam(name="id",required=true)Long id){ Cinema cinema = cinemaService.findById(id); model.addAttribute("cinema", cinema); model.addAttribute("provinceList", areaService.getAllProvince()); model.addAttribute("cityList", areaService.getAllCity(cinema.getArea().getProvinceId())); model.addAttribute("districtList", areaService.getAllDistrict(cinema.getArea().getCityId())); model.addAttribute("cinemaServiceList", CinemaServices.values()); return "admin/cinema/edit"; } /** * 添加电影院表单提交 * @param cinema * @return */ @RequestMapping(value="/add",method=RequestMethod.POST) @ResponseBody public Result<Boolean> add(Cinema cinema){ if(cinema == null){ return Result.error(CodeMsg.DATA_ERROR); } CodeMsg validate = ValidateEntityUtil.validate(cinema); if(validate.getCode() != CodeMsg.SUCCESS.getCode()){ return Result.error(validate); } //判断是否是编辑 if(cinema.getId() != null && cinema.getId() > 0){ Cinema findById = cinemaService.findById(cinema.getId()); cinema.setCreateTime(findById.getCreateTime()); cinema.setRate(findById.getRate()); cinema.setRateCount(findById.getRateCount()); } if(cinema.getArea() != null){ Area province = areaService.findById(cinema.getArea().getProvinceId()); Area city = areaService.findById(cinema.getArea().getCityId()); String address = ""; if(province != null){ address = province.getName(); } if(city != null){ address += city.getName(); } cinema.setAddress(address+cinema.getAddress()); } //表示数据合法,可以保存到数据库 if(cinemaService.save(cinema) == null){ return Result.error(CodeMsg.ADMIN_CINEMA_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 { cinemaService.delete(id); } catch (Exception e) { return Result.error(CodeMsg.ADMIN_CINEMA_DELETE_ERROR); } return Result.success(true); } /** * ----------影院评价管理------------- */ /** * 影院评价列表 * @param model * @param cinemaComment * @param pageBean * @return */ @RequestMapping(value="/comment_list") public String list(Model model,CinemaComment cinemaComment,PageBean<CinemaComment> pageBean){ model.addAttribute("pageBean", cinemaCommentService.findPage(cinemaComment, pageBean)); model.addAttribute("content",cinemaComment.getContent()); return "admin/cinema/comment_list"; } /** * 删除评价 * @param id * @return */ @RequestMapping(value="/delete_comment",method=RequestMethod.POST) @ResponseBody public Result<Boolean> deleteComment(@RequestParam(name="id",required=true)Long id){ cinemaCommentService.delete(id); return Result.success(true); } }
package com.yuanlrc.movie.controller.admin; import java.util.List; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.ResponseBody; import com.yuanlrc.movie.bean.CodeMsg; import com.yuanlrc.movie.bean.Result; import com.yuanlrc.movie.entity.admin.Menu; import com.yuanlrc.movie.service.admin.MenuService; import com.yuanlrc.movie.service.admin.OperaterLogService; import com.yuanlrc.movie.util.MenuUtil; import com.yuanlrc.movie.util.ValidateEntityUtil; /** * 后台菜单管理控制器 * @author Administrator * */ @RequestMapping("/admin/menu") @Controller public class MenuController { @Autowired private MenuService menuService; @Autowired private OperaterLogService operaterLogService; /** * 菜单列表展示页面 * @param model * @return */ @RequestMapping(value="/list") public String list(Model model){ List<Menu> findAll = menuService.findAll(); model.addAttribute("title","菜单列表"); model.addAttribute("topMenus",MenuUtil.getTopMenus(findAll)); model.addAttribute("secondMenus",MenuUtil.getSecondMenus(findAll)); model.addAttribute("thirdMenus",MenuUtil.getThirdMenus(findAll)); return "admin/menu/list"; } /** * 菜单添加页面 * @param model * @return */ @RequestMapping(value="/add",method=RequestMethod.GET) public String add(Model model){ List<Menu> findAll = menuService.findAll(); model.addAttribute("title","菜单列表"); model.addAttribute("topMenus",MenuUtil.getTopMenus(findAll)); model.addAttribute("secondMenus",MenuUtil.getSecondMenus(findAll)); return "admin/menu/add"; } /** * 菜单添加提交表单处理 * @param menu * @return */ @RequestMapping(value="/add",method=RequestMethod.POST) @ResponseBody public Result<Boolean> add(Menu menu){ if(menu == null){ Result.error(CodeMsg.DATA_ERROR); } //用统一验证实体方法验证是否合法 CodeMsg validate = ValidateEntityUtil.validate(menu); if(validate.getCode() != CodeMsg.SUCCESS.getCode()){ return Result.error(validate); } if(menu.getParent() != null){ if(menu.getParent().getId() == null){ menu.setParent(null); } } //表示验证都通过,开始添加数据库 if(menuService.save(menu) == null){ Result.error(CodeMsg.ADMIN_MENU_ADD_ERROR); } //数据库添加操作成功,记录日志 operaterLogService.add("添加菜单信息【" + menu + "】"); return Result.success(true); } /** * 菜单编辑页面 * @param model * @param id * @return */ @RequestMapping(value="/edit",method=RequestMethod.GET) public String eidt(Model model,@RequestParam(name="id",required=true)Long id){ List<Menu> findAll = menuService.findAll(); model.addAttribute("title","菜单列表"); model.addAttribute("topMenus",MenuUtil.getTopMenus(findAll)); model.addAttribute("secondMenus",MenuUtil.getSecondMenus(findAll)); model.addAttribute("menu",menuService.find(id)); return "admin/menu/edit"; } /** * 菜单编辑页面表单提交处理 * @param request * @param menu * @return */ @RequestMapping(value="/edit",method=RequestMethod.POST) @ResponseBody public Result<Boolean> edit(Menu menu){ if(menu == null){ Result.error(CodeMsg.DATA_ERROR); } if(menu.getId() == null){ Result.error(CodeMsg.ADMIN_MENU_ID_EMPTY); } //用统一验证实体方法验证是否合法 CodeMsg validate = ValidateEntityUtil.validate(menu); if(validate.getCode() != CodeMsg.SUCCESS.getCode()){ return Result.error(validate); } if(menu.getParent() != null){ if(menu.getParent().getId() == null){ menu.setParent(null); } } Menu existMenu = menuService.find(menu.getId()); if(existMenu == null){ Result.error(CodeMsg.ADMIN_MENU_ID_ERROR); } //表示验证都通过,开始添加数据库 existMenu.setIcon(menu.getIcon()); existMenu.setName(menu.getName()); existMenu.setParent(menu.getParent()); existMenu.setSort(menu.getSort()); existMenu.setUrl(menu.getUrl()); existMenu.setButton(menu.isButton()); existMenu.setShow(menu.isShow()); if(menuService.save(existMenu) == null){ Result.error(CodeMsg.ADMIN_MENU_ADD_ERROR); } //数据库添加操作成功,记录日志 operaterLogService.add("编辑菜单信息【" + existMenu + "】"); return Result.success(true); } /** * 删除菜单信息 * @param request * @param id * @return */ @RequestMapping(value="/delete",method=RequestMethod.POST) @ResponseBody public Result<Boolean> delete(@RequestParam(name="id",required=true)Long id){ try { menuService.delete(id); } catch (Exception e) { return Result.error(CodeMsg.ADMIN_MENU_DELETE_ERROR); } //数据库添加操作成功,记录日志 operaterLogService.add("删除菜单信息,菜单ID【" + id + "】"); return Result.success(true); } }
五,相关作品展示
基于Java开发、Python开发、PHP开发、C#开发等相关语言开发的实战项目
基于Nodejs、Vue等前端技术开发的前端实战项目
基于微信小程序和安卓APP应用开发的相关作品
基于51单片机等嵌入式物联网开发应用
基于各类算法实现的AI智能应用
基于大数据实现的各类数据管理和推荐系统