作者简介:Java领域优质创作者、CSDN博客专家 、CSDN内容合伙人、掘金特邀作者、阿里云博客专家、51CTO特邀作者、多年架构师设计经验、腾讯课堂常驻讲师
项目编号:BS-PT-103
一,环境介绍
开发技术:Springboot+Mybatis+freemarker
特色功能:短信发送、沙箱支付宝支付、电影排片、按座购票、数据推荐等
二,项目简介
电影院的快速发展,线下的订票方式费时费力,建立一个线上的电影售票系统可以有效帮助人们知道什么时候有新的电影,而不需要电影院花费极大的代价宣传。 现在确定本系统用例模型有三种,分别是游客、注册用户和系统管理员。下面分别对这三个角色的功能进行描述: 1) 用户 用户是该系统的前台使用者,即消费者、顾客。他们可以浏览电影、浏览影院和选座支付及发表评论。用户用例图1-1如下:
图1-1用户用例图
影院运营专员是各影院的管理者,他们负责各自影院的正常运营。影院运营专员的功能有电影管理、影厅管理、排片管理、新闻资讯管理和订单管理 。影院运营专员用例图如下1-2: a. 电影管理; b. 影厅管理; c. 排片管理;
图1-2 影院运营专员用例图 3) 系统管理员 系统管理员主要负责各个角色及其权限管理、地域管理、影院管理以及用户管理,系统管理员用例图1-3如下: a. 角色管理; b. 地域管理; c. 影院管理; d. 用户管理;。
|
三,系统展示
系统首页
在线购票
后台管理–角色管理
用户管理
地域管理
电影管理
评价管理
影院管理
影厅管理
排片管理
四,核心代码展示
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#开发等相关语言开发的实战项目
原文地址:https://blog.csdn.net/whirlwind526/article/details/134624548
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.7code.cn/show_49485.html
如若内容造成侵权/违法违规/事实不符,请联系代码007邮箱:suwngjj01@126.com进行投诉反馈,一经查实,立即删除!