package com.company.movie.controller.admin;
import java.util.Date;
import javax.servlet.http.HttpServletRequest;
import com.company.movie.bean.CodeMsg;
import com.company.movie.service.common.CinemaHallSessionService;
import com.company.movie.service.common.CinemaService;
import com.company.movie.service.common.MovieService;
import com.company.movie.service.common.OrderService;
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.company.movie.bean.PageBean;
import com.company.movie.bean.Result;
import com.company.movie.config.AppConfig;
import com.company.movie.constant.SessionConstant;
import com.company.movie.entity.admin.OperaterLog;
import com.company.movie.entity.admin.OrderAuth;
import com.company.movie.entity.admin.Role;
import com.company.movie.entity.admin.User;
import com.company.movie.service.admin.OperaterLogService;
import com.company.movie.service.admin.OrderAuthService;
import com.company.movie.service.admin.UserService;
import com.company.movie.service.common.AccountService;
import com.company.movie.service.common.PayLogService;
import com.company.movie.util.SessionUtil;
import com.company.movie.util.StringUtil;
import com.company.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 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.getEmail());
loginedUser.setMobile(user.getMobile());
loginedUser.setHeadPic(user.getHeadPic());
//首先保存到数据�

TS古宁
- 粉丝: 44
最新资源
- hopeKV_一款基于Golang语言开发的高性能键值存储引擎_模仿LevelDB架构设计_支持快速数据写入与读取_提供持久化存储能力_适用于嵌入式系统与分布式场景_具备高并发处理.zip
- 基于PHP和AJAX技术实现前端图片选择与Base64编码转换并通过异步请求上传至服务器端进行解码存储的完整图片上传解决方案_包含HTML文件选择控件JavaScript的File.zip
- Webpack构建后智能同步文件至七牛云存储的插件_支持并发上传与增量分析的自动化部署工具_通过多线程差异计算和哈希校验实现高效文件传输_专为前端工程化设计的云端资源管理解决方案_.zip
- 基于Bmob后端云服务实现用户信息注册与表单数据收集功能的轻量级模块化组件库_信息注册_表单提交_数据存储_用户管理_移动应用开发_快速集成_云端同步_数据校验_自动化处理_简化开.zip
- 峰谷易和团队家庭联网储能调峰设备开源项目_物联网设计竞赛参赛作品_家庭能源管理系统_储能设备调峰_智能电网优化_峰谷电价调节_可再生能源整合_家庭用电数据分析_远程监控与控制_能源.zip
- Android轻量级图片选择与裁剪库_支持从相册或相机快速选取图片_提供灵活的裁剪配置选项_包含图片压缩和异步处理功能_适用于头像上传和图片编辑场景_基于Android原生API开.zip
- 项目极简说明_一个用于存储和整理各类技术图表与架构文档的GitHub仓库_内容关键词_架构图时序图功能逻辑图系统设计图流程图数据流图网络拓扑图UML图ER图部署图.zip
- 1808577500_spcDemo_28016_1755687695572.zip
- 基于iOS10系统深度开发并集成Realm数据库封装的轻量级多线程下载管理器示例项目_支持多任务并发下载与持久化存储管理_后台下载任务保活与断点续传功能_APP进程终止后自动恢复下.zip
- 基于 baichuan-7B 微调的 C++ 面试大模型
- 基于Java开发的高性能非关系型数据库系统_借鉴关系型数据库特性支持多类型数据存储如图片二进制文件视频文本数据等_适用于需要高效处理非结构化数据的应用场景如大数据分析云存储和多媒体.zip
- HKBaiduMapDemo项目极简说明_百度地图iOS集成与CoreData数据库版本迁移完整解决方案_内容关键词_百度地图SDK集成坐标定位地理围栏路径规划离线地图数.zip
- 自我成长型Android应用_自律辅助软件_手机应用使用情况统计_任务清单管理_学习运动睡眠时间追踪_本地数据存储_无网络运行支持_后台应用监听_周期性数据统计_每日每周每月年度分.zip
- 基于HTML5Canvas的矢量图形信息存储与管理库_支持图形数据序列化与反序列化_实现Canvas绘制对象的持久化存储与动态交互_通过JavaScript对象模型记录图形属性_.zip
- 基于Vue-Electron框架构建的跨平台代码与项目管理工具_支持多语言编程环境集成智能代码高亮与自动补全实时协作编辑版本控制可视化任务进度追踪团队权限管理云端同步备.zip
- ruogu-coder_spring-boot-init_28016_1755687714038.zip
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈



评论0