package cn.sfturing.web;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
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 cn.sfturing.dao.FavouriteDao;
import cn.sfturing.entity.CommonUser;
import cn.sfturing.entity.Favourite;
import cn.sfturing.entity.Hospital;
import cn.sfturing.entity.OrderRecords;
import cn.sfturing.service.CommonUserService;
import cn.sfturing.service.HospitalService;
import cn.sfturing.service.OrderRecordsService;
/**
*
* @author sfturing
*
* @date 2017年5月6日
*/
@Controller
public class CommonUserController {
@Autowired
private CommonUserService commonUserService;
@Autowired
private OrderRecordsService orderRecordsService;
@Autowired
private FavouriteDao favouriteDao;
@Autowired
private HospitalService hospitalService;
/*
* @Autowired private CommonUserDao commonUserDao;
*/
private static Logger log = LoggerFactory.getLogger(CommonUserController.class);
/**
* 用户登陆界面
*
* @return
*/
@RequestMapping(value = "/login", method = RequestMethod.GET)
public String login(HttpSession session) {
session.invalidate();
return "user/login";
}
/**
* 用户登陆验证
*
* @param email
* @param passWord
* @param code
* @return
* @throws Exception
*/
@RequestMapping(value = "/login", method = RequestMethod.POST)
public String login(Model model, String userEmail, String userPassword, HttpSession session,
HttpServletRequest request) {
// 登录用户,并将登录后的状态码返回,如果是0用户不存在,如果是1那么密码错误,如果是2那么密码正确
int result = commonUserService.login(userEmail.trim(), userPassword, request);
// 错误信息
String error = "";
// 查找这个用户
CommonUser commonUser = commonUserService.findCommonUserByEmail(userEmail.trim());
if (result == 2) {
// 如果是2,那么登录成功,返回index
model.addAttribute("user", commonUser);
session.setAttribute("userInfo", commonUser);
return "index/index";
} else if (result == 1) {
error = "密码错误";
log.info(error);
model.addAttribute("error", error);
return "user/login";
} else {
error = "该用户不存在";
log.info(error);
model.addAttribute("error", error);
return "user/login";
}
}
/**
* 用户注册界面
*
* @return
*/
@RequestMapping(value = "/sign", method = RequestMethod.GET)
public String sign(HttpSession session) {
session.invalidate();
return "user/sign";
}
/**
* 用户注册
*
* @param commonUser
* @param request
* @return
*/
@RequestMapping(value = "/sign", method = RequestMethod.POST)
public String sign(Model model, CommonUser commonUser, HttpServletRequest request) {
// 注册用户: 0:用户身份证号已注册 1:用户邮箱已注册 2:用户手机号已注册 3:用户注册成功
//将输入邮箱去除空格
commonUser.setUserEmail(commonUser.getUserEmail().trim());
int result = commonUserService.sign(commonUser, request);
// 错误信息
String error = "";
/*
* if (result == 0) { error = "用户身份证已被注册"; log.info(error);
* model.addAttribute("error", error); return "user/sign"; }
*/
if (result == 1) {
error = "用户邮箱已被注册";
log.info(error);
model.addAttribute("error", error);
return "user/sign";
}
/*
* if (result == 2) { error = "用户手机号已被注册"; log.info(error);
* model.addAttribute("error", error); return "user/sign"; }
*/
error = "注册成功,请登录账号";
log.info(error);
model.addAttribute("error", error);
return "user/login";
}
/**
* 用户找回密码
*
* @return
*/
@RequestMapping(value = "/findPassword", method = RequestMethod.GET)
public String findPassword() {
return "user/findPassword";
}
/**
* 用户修改手机
*/
@RequestMapping(value = "/modifiPhone", method = RequestMethod.GET)
public String modifiPhone(final HttpSession session, Model model) {
final CommonUser commonUser = (CommonUser) session.getAttribute("userInfo");
// 单独开启线程发送邮件,防止用户等待时间过长,成功日志输出,失败也输出。
new Thread(new Runnable() {
public void run() {
boolean isSuccess = commonUserService.sendEmailCheck(commonUser);
if (isSuccess) {
log.info(commonUser.getUserEmail() + "发送成功" + commonUser.getUpdateTime());
CommonUser userMSG = commonUserService.findCommonUserByEmail(commonUser.getUserEmail());
userMSG.setStatus(2);
session.setAttribute("userMSG", userMSG);
} else {
log.info(commonUser.getUserEmail() + "发送失败" + commonUser.getUpdateTime());
}
}
}).start();
return "/user/checkVerification";
}
/**
* 用户修改手机
*/
@RequestMapping(value = "/modifiPhone", method = RequestMethod.POST)
public String modifiPhone(String userMobile, HttpSession session, Model model) {
CommonUser commonUser = (CommonUser) session.getAttribute("userInfo");
String error = "";
int result = commonUserService.modifyPhone(userMobile, commonUser.getUserEmail());
if (result == 2) {
error = "手机号已经被注册";
log.info(error);
model.addAttribute("error", error);
return "user/modifiPhone";
}
CommonUser commonUser1 = commonUserService.findCommonUserByEmail(commonUser.getUserEmail());
session.setAttribute("userInfo", commonUser1);
return "redirect:/userCenter";
}
/**
* 用户找回密码
*
* @return
*/
@RequestMapping(value = "/findPassword", method = RequestMethod.POST)
public String findPassword(Model model, final String userEmail, final HttpSession session) {
// 错误信息
String error = "";
// 通过输入的身份证查找用户
final CommonUser commonUser = commonUserService.findCommonUserByEmail(userEmail);
// 用户不存在返回找回密码页面
if (commonUser == null) {
error = "用户不存在,请检查后输入";
log.info(error);
model.addAttribute("error", error);
return "user/findPassword";
} else {
// 输入的邮箱与密码不匹配,返回找回密码界面
String email = commonUser.getUserEmail();
log.info(email);
if (!userEmail.equals(email)) {
error = "邮箱不匹配,请检查后输入";
log.info(error);
model.addAttribute("error", error);
return "user/findPassword";
} else {
if (commonUserService.findHeadway(commonUser.getUpdateTime()) < 300) {
error = "5分钟内只能发送一封邮件";
log.info(error);
model.addAttribute("error", error);
return "user/findPassword";
}
// 单独开启线程发送邮件,防止用户等待时间过长,成功日志输出,失败也输出。
new Thread(new Runnable() {
public void run() {
boolean isSuccess = commonUserService.sendEmailCheck(commonUser);
if (isSuccess) {
log.info(commonUser.getUserEmail() + "发送成功" + commonUser.getUpdateTime());
CommonUser userMSG = commonUserService.findCommonUserByEmail(userEmail);
userMSG.setStatus(0);
session.setAttribute("userMSG", userMSG);
} else {
log.info(commonUser.getUserEmail() + "发送失败" + commonUser.getUpdateTime());
}
}
}).start();
return "/user/checkVerification";
}
}
}
/**
基于SSM的医院预约挂号系统(期末项目毕业设计).zip
需积分: 0 69 浏览量
更新于2023-08-29
收藏 6.28MB ZIP 举报
【SSM框架详解】
SSM框架是Java Web开发中常用的一种集成框架,它结合了Spring、Spring MVC和MyBatis三个强大的开源框架。这个医院预约挂号系统选择SSM作为技术栈,表明其在设计时注重了灵活性、可维护性和数据访问效率。
1. **Spring框架**:Spring是Java企业级应用的核心框架,它提供了IOC(Inversion of Control,控制反转)和AOP(Aspect Oriented Programming,面向切面编程)两大核心功能。在本系统中,Spring负责管理对象的生命周期和依赖关系,使得代码更加解耦,提高了模块间的独立性。同时,Spring的AOP机制可以方便地实现日志记录、事务管理等功能。
2. **Spring MVC框架**:作为Spring的Web MVC模块,Spring MVC用于处理Web请求和响应。它提供了一种模型-视图-控制器的架构模式,将业务逻辑、数据展示和用户交互分离开来,使得代码结构清晰,易于维护。在医院预约挂号系统中,Spring MVC接收用户的HTTP请求,调用业务逻辑,然后将结果返回给前端展示。
3. **MyBatis框架**:MyBatis是一个优秀的持久层框架,它简化了数据库操作,允许开发者通过编写SQL语句直接操作数据库。在SSM框架中,MyBatis作为数据访问层,处理与数据库的交互,如增删改查等操作。通过XML配置或注解,可以灵活地定制SQL语句,提高了数据库操作的灵活性和性能。
4. **医院预约挂号系统的设计**:这类系统通常包括用户管理、医生信息管理、科室设置、预约挂号、挂号查询、支付接口等多个模块。用户模块可能包含注册、登录、个人信息管理等功能;医生模块则涉及医生信息录入、排班设置等;预约挂号模块需要处理时间冲突、名额限制等问题;支付接口需对接第三方支付平台,确保交易安全。
5. **系统实现细节**:在具体实现上,系统可能会采用Maven进行项目构建和依赖管理,利用MySQL作为后台数据库,使用HTML、CSS和JavaScript等前端技术进行用户界面设计,可能还会借助Ajax实现页面异步刷新,提升用户体验。此外,系统的安全性、并发处理和异常处理也是设计重点,需要考虑用户数据的安全,以及在高并发场景下的稳定运行。
6. **测试与部署**:项目完成后,需要进行单元测试、集成测试和压力测试,确保各个功能的正确性和系统性能。部署时,可能需要考虑服务器环境配置、负载均衡和数据库优化,以应对实际生产环境中的需求。
7. **学习与实践**:对于学生来说,这个项目不仅能够加深对SSM框架的理解,还能够锻炼到数据库设计、Web开发、项目管理等多方面的能力。通过实际操作,有助于提高问题解决和团队协作技巧,为将来步入职场打下坚实基础。
一只会写程序的猫
- 粉丝: 1w+
- 资源: 866
最新资源
- iResearch-2015年中国互联网金融发展格局研究报告.pdf
- MATLAB界面版本-答题卡自动识别系统.zip
- iResearch-2015年中国网络限时特卖市场研究报告.pdf
- iResearch-2015年中国医药电商用户行为研究报告.pdf
- iResearch-2015中国移动社交通信Q3季度报告.pdf
- iResearch-2016年中国天气类应用用户需求诊断报告.pdf
- MATLAB界面版本-打架斗殴异常行为识别.zip
- iResearch-视屏全接触-2016年1月刊.pdf
- iResearch-视屏全接触-2016年2月刊.pdf
- MATLAB界面版本-打印纸缺陷检测GUI设计.zip
- MATLAB界面版本-道路桥梁裂缝检测.zip
- MATLAB界面版本-的CNN卷积神经网络疲劳检测.zip
- MATLAB界面版本-的DWT数字水印设计.zip
- MATLAB界面版本-的DWT数字音频水印系统.zip
- MATLAB界面版本-的PCB板缺陷检测.zip
- MATLAB界面版本-的PCB版字符识别.zip