package com.yuanlrc.movie.controller.admin;
import java.util.Date;
import javax.servlet.http.HttpServletRequest;
import org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
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.PageBean;
import com.yuanlrc.movie.bean.Result;
import com.yuanlrc.movie.config.AppConfig;
import com.yuanlrc.movie.constant.SessionConstant;
import com.yuanlrc.movie.entity.admin.OperaterLog;
import com.yuanlrc.movie.entity.admin.OrderAuth;
import com.yuanlrc.movie.entity.admin.Role;
import com.yuanlrc.movie.entity.admin.User;
import com.yuanlrc.movie.service.admin.DatabaseBakService;
import com.yuanlrc.movie.service.admin.OperaterLogService;
import com.yuanlrc.movie.service.admin.OrderAuthService;
import com.yuanlrc.movie.service.admin.UserService;
import com.yuanlrc.movie.service.common.AccountService;
import com.yuanlrc.movie.service.common.CinemaHallSessionService;
import com.yuanlrc.movie.service.common.CinemaService;
import com.yuanlrc.movie.service.common.MovieService;
import com.yuanlrc.movie.service.common.OrderService;
import com.yuanlrc.movie.service.common.PayLogService;
import com.yuanlrc.movie.util.SessionUtil;
import com.yuanlrc.movie.util.StringUtil;
import com.yuanlrc.movie.util.ValidateEntityUtil;
/**
* 系统控制器
* @author Administrator
*
*/
@RequestMapping("/system")
@Controller
public class SystemController {
@Autowired
private OrderAuthService orderAuthService;
@Autowired
private OperaterLogService operaterLogService;
@Autowired
private UserService userService;
@Autowired
private DatabaseBakService databaseBakService;
@Autowired
private CinemaService cinemaService;
@Autowired
private MovieService movieService;
@Autowired
private AccountService accountService;
@Autowired
private OrderService orderService;
@Autowired
private CinemaHallSessionService cinemaHallSessionService;
@Autowired
private PayLogService payLogService;
@Value("${show.tips.text}")
private String showTipsText;
@Value("${show.tips.url.text}")
private String showTipsUrlText;
@Value("${show.tips.btn.text}")
private String showTipsBtnText;
@Value("${show.tips.url}")
private String showTipsUtl;
private Logger log = LoggerFactory.getLogger(SystemController.class);
/**
* 登录页面
* @param name
* @param model
* @return
*/
@RequestMapping(value="/login",method=RequestMethod.GET)
public String login(Model model){
return "admin/system/login";
}
/**
* 用户登录提交表单处理方法
* @param request
* @param user
* @param cpacha
* @return
*/
@RequestMapping(value="/login",method=RequestMethod.POST)
@ResponseBody
public Result<Boolean> login(HttpServletRequest request,User user,String cpacha){
if(user == null){
return Result.error(CodeMsg.DATA_ERROR);
}
//用统一验证实体方法验证是否合法
CodeMsg validate = ValidateEntityUtil.validate(user);
if(validate.getCode() != CodeMsg.SUCCESS.getCode()){
return Result.error(validate);
}
//表示实体信息合法,开始验证验证码是否为空
if(StringUtils.isEmpty(cpacha)){
return Result.error(CodeMsg.CPACHA_EMPTY);
}
//说明验证码不为空,从session里获取验证码
Object attribute = request.getSession().getAttribute("admin_login");
if(attribute == null){
return Result.error(CodeMsg.SESSION_EXPIRED);
}
//表示session未失效,进一步判断用户填写的验证码是否正确
if(!cpacha.equalsIgnoreCase(attribute.toString())){
return Result.error(CodeMsg.CPACHA_ERROR);
}
//表示验证码正确,开始查询数据库,检验密码是否正确
User findByUsername = userService.findByUsername(user.getUsername());
//判断是否为空
if(findByUsername == null){
return Result.error(CodeMsg.ADMIN_USERNAME_NO_EXIST);
}
//表示用户存在,进一步对比密码是否正确
if(!findByUsername.getPassword().equals(user.getPassword())){
return Result.error(CodeMsg.ADMIN_PASSWORD_ERROR);
}
//表示密码正确,接下来判断用户状态是否可用
if(findByUsername.getStatus() == User.ADMIN_USER_STATUS_UNABLE){
return Result.error(CodeMsg.ADMIN_USER_UNABLE);
}
//检查用户所属角色状态是否可用
if(findByUsername.getRole() == null || findByUsername.getRole().getStatus() == Role.ADMIN_ROLE_STATUS_UNABLE){
return Result.error(CodeMsg.ADMIN_USER_ROLE_UNABLE);
}
//检查用户所属角色的权限是否存在
if(findByUsername.getRole().getAuthorities() == null || findByUsername.getRole().getAuthorities().size() == 0){
return Result.error(CodeMsg.ADMIN_USER_ROLE_AUTHORITES_EMPTY);
}
//检查一切符合,可以登录,将用户信息存放至session
request.getSession().setAttribute(SessionConstant.SESSION_USER_LOGIN_KEY, findByUsername);
//销毁session中的验证码
request.getSession().setAttribute("admin_login", null);
//将登陆记录写入日志库
operaterLogService.add("用户【"+user.getUsername()+"】于【" + StringUtil.getFormatterDate(new Date(), "yyyy-MM-dd HH:mm:ss") + "】登录系统!");
log.info("用户成功登录,user = " + findByUsername);
return Result.success(true);
}
/**
* 登录成功后的系统主页
* @param model
* @return
*/
@RequestMapping(value="/index")
public String index(Model model){
model.addAttribute("operatorLogs", operaterLogService.findLastestLog(10));
model.addAttribute("userTotal", accountService.count());
model.addAttribute("movieTotal", movieService.count());
model.addAttribute("cinemaTotal", cinemaService.count());
model.addAttribute("orderTotal", orderService.count());
model.addAttribute("cinemaHallSessionTotal", cinemaHallSessionService.count());
model.addAttribute("payLogTotal", payLogService.count());
model.addAttribute("paySuccessTotal", payLogService.countPaySuccess());
model.addAttribute("moneyTotal", movieService.sumTotalMoney());
model.addAttribute("allPayLogList", payLogService.statsAll(5));
model.addAttribute("paidPayLogList", payLogService.statsPaid(5));
model.addAttribute("topMovieList", movieService.findTopMoneyList());
model.addAttribute("showTipsText", showTipsText);
model.addAttribute("showTipsUrlText", showTipsUrlText);
model.addAttribute("showTipsUtl", showTipsUtl);
model.addAttribute("showTipsBtnText", showTipsBtnText);
return "admin/system/index";
}
/**
* 注销登录
* @return
*/
@RequestMapping(value="/logout")
public String logout(){
User loginedUser = SessionUtil.getLoginedUser();
if(loginedUser != null){
SessionUtil.set(SessionConstant.SESSION_USER_LOGIN_KEY, null);
}
return "redirect:login";
}
/**
* 无权限提示页面
* @return
*/
@RequestMapping(value="/no_right")
public String noRight(){
return "admin/system/no_right";
}
/**
* 修改用户个人信息
* @return
*/
@RequestMapping(value="/update_userinfo",method=RequestMethod.GET)
public String updateUserInfo(){
return "admin/system/update_userinfo";
}
/**
* 修改个人信息保存
* @param user
* @return
*/
@RequestMapping(value="/update_userinfo",method=RequestMethod.POST)
public String updateUserInfo(User user){
User loginedUser = SessionUtil.getLoginedUser();
loginedUser.setEmail(user.getEm
程皮
- 粉丝: 279
- 资源: 2568
最新资源
- 基于Vue.js高校学生选课系统-springboot毕业项目,适合计算机毕-设、实训项目、大作业学习.zip
- 基于Vue的米家商城的设计与实现-springboot毕业项目,适合计算机毕-设、实训项目、大作业学习.zip
- 基于Web的视频及游戏管理平台的设计及实现_0816q-springboot毕业项目,适合计算机毕-设、实训项目、大作业学习.zip
- 基于Spring Boot的阳光音乐厅订票系统_9z622-springboot毕业项目,适合计算机毕-设、实训项目、大作业学习.zip
- 基于java语言的考试信息报名系统_5n9zn--论文-springboot毕业项目,适合计算机毕-设、实训项目、大作业学习.zip
- 基于Java的小区物业管理系统设计与实现--论文-springboot毕业项目,适合计算机毕-设、实训项目、大作业学习.zip
- WORD办公教程网站模板 (H5自适应) WPS办公资源源码
- 基于改进遗传算法的风电场优化调度策略验证,改善风电场整体输出功率,达到最大功率输出,采用matlab编写,内容非常详实和完整
- 基于Layui和SpringBoot动漫商城管理的设计与实现--论文-springboot毕业项目,适合计算机毕-设、实训项目、大作业学习.zip
- 基于spring boot的疫情信息管理系统-springboot毕业项目,适合计算机毕-设、实训项目、大作业学习.rar
- 基于Spring boot的名城小区物业管理系统-springboot毕业项目,适合计算机毕-设、实训项目、大作业学习.rar
- 基于Spring Boot的企业员工薪酬关系系统的设计-springboot毕业项目,适合计算机毕-设、实训项目、大作业学习.zip
- 基于Spring Boot在线远程考试系统的设计与实现-springboot毕业项目,适合计算机毕-设、实训项目、大作业学习.rar
- springboot生活分享共享平台(源码+论文)-springboot毕业项目,适合计算机毕-设、实训项目、大作业学习.zip
- springboot健身房管理系统006(源码+sql)-springboot毕业项目,适合计算机毕-设、实训项目、大作业学习.zip
- 基于python+django+mysql实现教师评价系统设计与开发
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈