基
于javaweb+mysql的ssm+maven医院预约管理系统(java+ssm+jdbc+tomcat+mysql+jsp)
运行环境
Java≥8、MySQL≥5.7、Tomcat≥8
开发工具
eclipse/idea/myeclipse/sts等均可配置运行
适用
课程设计,大作业,毕业设计,项目练习,学习演示等
功能说明
基于javaweb+mysql的SSM+Maven医院预约管理系统(java+ssm+jdbc+tomcat+mysql+jsp)
ssm医院预约挂号系统
实现基本预约挂号,提供医生科室医生查询。 数据库导入: 在mysql 5.7中创建数据库hospitaldb,然后导入并执行hospitaldb.sql文件; 导入项目并修改配置文件 在idea/eclipse中导入项目,注意此为maven项目,导入时请选择maven项目; 导入成功后,修改jdk相关配置,并依次执行 maven clean 与maven install命令; 执行成功后,配置tomcat; 注:tomcat中配置项目路径必须为/ssm_pro 修改数据库配置: 在jdbc.properties中修改数据库配置;
运行
在tomcat中运行项目,运行成功后,在浏览器中访问:http://localhost:8080/ssm_pro/ 默认账号:user163.com 密码:123456
登录成功即可;
public class BaseController {
private static Logger log = LoggerFactory.getLogger(BaseController.class);
/**
* 用户主页
*
* @return
*/
@RequestMapping(value = "/", method = RequestMethod.GET)
public String indexOf() {
log.info("用户登录主页");
return "index/index";
}
/**
* 用户主页
*
* @return
*/
@RequestMapping(value = "/index", method = RequestMethod.GET)
public String index() {
return "index/index";
}
/**
* 用户联系我们
*
* @return
*/
@RequestMapping(value = "/contact", method = RequestMethod.GET)
public String contact() {
return "contact/contactIndex";
}
/**
* 用户联系我们
*
* @return
*/
@RequestMapping(value = "/logOff", method = RequestMethod.GET)
public String logOff(HttpSession session) {
session.invalidate();
return "index/index";
@Autowired
private OrderRecordsService orderRecordsService;
@Autowired
private FavouriteDao favouriteDao;
@Autowired
private HospitalService hospitalService;
private static Logger log = LoggerFactory.getLogger(OrderController.class);
/**
* 用户预约首页
*
* @return
*/
@RequestMapping(value = "/orderIndex", method = RequestMethod.GET)
public String orderIndex() {
return "order/orderInfo";
}
/**
* 用户预约
*
* @return
*/
@RequestMapping(value = "/order", method = RequestMethod.POST)
public String order(String orderInfoValue, String hospitalName, String officesName, String doctorName,
String userIdenf, Model model, String doctorImg) {
// 分解传入的时间以及时间段
String orderInfoValueArry[] = orderInfoValue.split(",");
String transact_date = orderInfoValueArry[0];
String transact_time = orderInfoValueArry[1];
CommonUser commonUser = commnUserService.findCommonUserByUserIdenf(userIdenf);
OrderRecords orderRecords = new OrderRecords();
// 设置orderRecords
orderRecords.setUserID((int) commonUser.getUserId());
orderRecords.setTransactTime(transact_time);
orderRecords.setTransactDate(transact_date);
orderRecords.setHospitalName(hospitalName);
orderRecords.setOfficesName(officesName);
orderRecords.setDoctorName(doctorName);
// 设置预约识别码 0代表只选择时间段,未提交订单
orderRecords.setOrderVer(0);
log.info("插入订单,待提交!");
// 插入订单
orderRecordsService.insertOrderRecords(orderRecords);
// 设置最后插入的id(不会发生并发性问题,是根据线程查询的)
int id = orderRecordsService.findLastId();
}
}
}
/**
* 检查验证码界面 0:验证码超时 1:验证码验证通过 2:验证码验证失败
*
* @return
*/
@RequestMapping(value = "/checkVerification", method = RequestMethod.POST)
public String checkVerification(Model model, int verificationCode, HttpSession session) {
CommonUser commonUser = (CommonUser) session.getAttribute("userMSG");
System.out.println(commonUser.getStatus());
int result = commonUserService.checkVerification(verificationCode, commonUser);
System.out.println(result);
// 错误信息
String error = "";
if (result == 0) {
error = "发送时间已经超过30分钟,请重新发送。";
log.info(error);
model.addAttribute("error", error);
return "user/checkVerification";
}
if (result == 2) {
error = "您输入的验证码不正确,请重新输入。";
log.info(error);
model.addAttribute("error", error);
return "user/checkVerification";
}
if (result == 1) {
// commonUserService.clearVerification(commonUser.getUserEmail());
// 状态为0修改密码
if (commonUser.getStatus() == 0) {
System.out.println(commonUser.getStatus());
return "/user/updatePassword";
}
// 状态为1完善信息
if (commonUser.getStatus() == 1) {
System.out.println(commonUser.getStatus());
return "user/addUserInfo";
}
// 状态为2修改手机
if (commonUser.getStatus() == 2) {
System.out.println(commonUser.getStatus());
* 用户登陆验证
* @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
commonCondition.setHospitalName(hosp.getHospitalName());
commonCondition.setHospitalGrade(hosp.getHospitalGrade());
commonCondition.setHospitalNature(hosp.getHospitalNature());
// 设置页面
pageUtils.setCurrentPage(page);
pageUtils.setTotalRecord(hospitalService.findAllHosNum(province, city, district, hosp));
int start;
if (pageUtils.getCurrentPage() == 0) {
start = 0;
} else {
start = pageUtils.getPageRecord() * (pageUtils.getCurrentPage() - 1);
}
// 查询医院数据
List<Hospital> hospital = hospitalService.findAllHosByConditon(province, city, district, hosp, start,
pageUtils.getPageRecord());
// 查询医院等级
List<String> hospGrade = hospitalService.findHosGrade();
// 查询医院类型
List<String> hospNature = hospitalService.findHosNature();
model.addAttribute("hospital", hospital);
model.addAttribute("pages", pageUtils);
model.addAttribute("hospGrade", hospGrade);
model.addAttribute("hospNature", hospNature);
// 查询条件
model.addAttribute("commonCondition", commonCondition);
return "hospital/allHospital";
}
//关注医院
@ResponseBody
@RequestMapping(value = "/favourite", method = RequestMethod.POST)
public Map<String, Object> favourite(Model model,int hospitalId,HttpSession session ) {
//通过session信息得到userid
CommonUser commonUser = (CommonUser) session.getAttribute("userInfo");
int userId = commonUser.getUserId();
int isLike =hospitalService.favourite(userId, hospitalId);
System.out.println(isLike+"*******************************88");
Map<String, Object> rtnMap = new HashMap<String, Object>();
rtnMap.put("isLike", isLike);
return rtnMap;
}
}
@Controller
public class BaseController {
private static Logger log = LoggerFactory.getLogger(BaseController.class);
/**
* 用户主页
*
* @return
*/
@RequestMapping(value = "/", method = RequestMethod.GET)
public String indexOf() {
log.info("用户登录主页");
return "index/index";
}
/**
* 用户主页
*
* @return
*/
@RequestMapping(value = "/index", method = RequestMethod.GET)
public String index() {
return "index/index";
}
/**
* 用户联系我们
*
* @return
*/
@RequestMapping(value = "/contact", method = RequestMethod.GET)
public String contact() {
return "contact/contactIndex";
}
/**
* 用户联系我们
*
* @return
*/
@RequestMapping(value = "/logOff", method = RequestMethod.GET)
public String logOff(HttpSession session) {
session.invalidate();
return "index/index";
/**
* 用户完善信息
*/
@RequestMapping(value = "/addUserInfo", method = RequestMethod.POST)
public String addUserInfo(String userIdenf, String userName, String userMobile, String userSex, HttpSession session,
Model model) {
CommonUser commonUser = (CommonUser) session.getAttribute("userInfo");
String error = "";
int result = commonUserService.addUserInfo(commonUser.getUserEmail(), userIdenf, userName, userMobile, userSex);
if (result == 0) {
error = "身份证已经被注册";
log.info(error);
model.addAttribute("error", error);
return "user/addUserInfo";
}
if (result == 2) {
error = "手机号已经被注册";
log.info(error);
model.addAttribute("error", error);
return "user/addUserInfo";
}
CommonUser commonUser1 = commonUserService.findCommonUserByEmail(commonUser.getUserEmail());
session.setAttribute("userInfo", commonUser1);
return "index/index";
}
/**
* 用户个人中心
*/
/**
*
*
* @return
*/
@RequestMapping(value = "/userCenter", method = RequestMethod.GET)
public String userCenter(HttpSession session, Model model) {
CommonUser commonUser = (CommonUser) session.getAttribute("userInfo");
if (commonUser != null) {
// 得到用户的收藏记录
List<Favourite> favourites = favouriteDao.findFavHos(commonUser.getUserId());
List<Hospital> hospitals = null;
if (favourites.size() != 0) {
hospitals = hospitalService.findFavHos(favourites);
}
model.addAttribute("hospitals", hospitals);
// 得到用户的个人订单
List<OrderRecords> orderRecords = orderRecordsService.findOrderRecordsByUserID(commonUser.getUserId());
model.addAttribute("orderRecords", orderRecords);
model.addAttribute("commonUser", commonUser);
return "userCenter/userCenter";
}
return "index/index";
log.info(error);
model.addAttribute("error", error);
return "user/addUserInfo";
}
CommonUser commonUser1 = commonUserService.findCommonUserByEmail(commonUser.getUserEmail());
session.setAttribute("userInfo", commonUser1);
return "index/index";
}
/**
* 用户个人中心
*/
/**
*
*
* @return
*/
@RequestMapping(value = "/userCenter", method = RequestMethod.GET)
public String userCenter(HttpSession session, Model model) {
CommonUser commonUser = (CommonUser) session.getAttribute("userInfo");
if (commonUser != null) {
// 得到用户的收藏记录
List<Favourite> favourites = favouriteDao.findFavHos(commonUser.getUserId());
List<Hospital> hospitals = null;
if (favourites.size() != 0) {
hospitals = hospitalService.findFavHos(favourites);
}
model.addAttribute("hospitals", hospitals);
// 得到用户的个人订单
List<OrderRecords> orderRecords = orderRecordsService.findOrderRecordsByUserID(commonUser.getUserId());
model.addAttribute("orderRecords", orderRecords);
model.addAttribute("commonUser", commonUser);
return "userCenter/userCenter";
}
return "index/index";
}
/**
* 用户更改性别
*
* @return
*/
@ResponseBody
@RequestMapping(value = "/updateSex", method = RequestMethod.POST)
public Map<String, Object> updateSex(String userSex, Model model, HttpSession session) {
CommonUser commonUser = (CommonUser) session.getAttribute("userInfo");
int userId = commonUser.getUserId();
}
}
/**
*
*
*/
@Service
public class CommonUserServiceImpl implements CommonUserService {
@Autowired
private CommonUserDao commonUserDao;
@Autowired
private DateUtil dateUtil;
@Autowired
private MailUtil mailUtil;
private static Logger log = LoggerFactory.getLogger(CommonUserServiceImpl.class);
// 登录业务/
/**
* 用户登录 0:用户不存在 1:密码不正确 2:密码正确
*/
@Transactional
@Override
public int login(String userEmail, String userPassword, HttpServletRequest request) {
CommonUser commonUser = commonUserDao.findCommonUserByEmail(userEmail);
/**
*
*
*/
@Controller
public class DoctorController {
@Autowired
private DoctorService doctorService;
@Autowired
private HospitalService hospitalService;
@Autowired
private PageUtils pageUtils;
/**
* 医生主界面(推荐医生)
*
* @return
*/
@RequestMapping(value = "/doctorIndex/{page}")
public String officeIdex(Model model, @PathVariable("page") int page) {
// 查询推荐的医院
List<Hospital> hospitalRe = hospitalService.findHosByRe();
// 设置页面
pageUtils.setCurrentPage(page);
pageUtils.setTotalRecord(doctorService.findDoctorByReNum(hospitalRe));
* 用户更改性别
*
* @return
*/
@ResponseBody
@RequestMapping(value = "/updateSex", method = RequestMethod.POST)
public Map<String, Object> updateSex(String userSex, Model model, HttpSession session) {
CommonUser commonUser = (CommonUser) session.getAttribute("userInfo");
int userId = commonUser.getUserId();
if (userSex.equals("男")) {
commonUserService.modifySex(userId, "男");
} else {
commonUserService.modifySex(userId, "女");
}
String userSexInfo = commonUserService.findCommonUserByEmail(commonUser.getUserEmail()).getUserSex();
Map<String, Object> rtnMap = new HashMap<String, Object>();
rtnMap.put("userSexInfo", userSexInfo);
return rtnMap;
}
}
/**
*
*
*/
@Service
public class CommonUserServiceImpl implements CommonUserService {
@Autowired
private CommonUserDao commonUserDao;
* 完善个人信息
*/
@Override
public int addUserInfo(String userEmail, String userIdenf, String userName, String userMobile,String userSex) {
if (commonUserDao.findCommonUserByUserIdenf(userIdenf) != null) {
return 0;// 用户身份证号已注册
}
if (commonUserDao.findCommonUserByMobile(userMobile) != null) {
return 2;// 用户手机号已注册
}
commonUserDao.addUserInfo(userEmail, userIdenf, userName, userMobile,userSex);
return 1; //用户更新成功
}
@Override
public int modifySex(int userId, String userSex) {
// TODO Auto-generated method stub
return commonUserDao.modifySex(userId, userSex);
}
@Override
public int modifyPhone(String userPhone, String userEmail) {
if (commonUserDao.findCommonUserByMobile(userPhone) != null) {
return 2;// 用户手机号已注册
}
commonUserDao.modifyPhone(userEmail, userPhone);
return 1;
}
}
*/
@RequestMapping(value = "/orderIndex", method = RequestMethod.GET)
public String orderIndex() {
return "order/orderInfo";
}
/**
* 用户预约
*
* @return
*/
@RequestMapping(value = "/order", method = RequestMethod.POST)
public String order(String orderInfoValue, String hospitalName, String officesName, String doctorName,
String userIdenf, Model model, String doctorImg) {
// 分解传入的时间以及时间段
String orderInfoValueArry[] = orderInfoValue.split(",");
String transact_date = orderInfoValueArry[0];
String transact_time = orderInfoValueArry[1];
CommonUser commonUser = commnUserService.findCommonUserByUserIdenf(userIdenf);
OrderRecords orderRecords = new OrderRecords();
// 设置orderRecords
orderRecords.setUserID((int) commonUser.getUserId());
orderRecords.setTransactTime(transact_time);
orderRecords.setTransactDate(transact_date);
orderRecords.setHospitalName(hospitalName);
orderRecords.setOfficesName(officesName);
orderRecords.setDoctorName(doctorName);
// 设置预约识别码 0代表只选择时间段,未提交订单
orderRecords.setOrderVer(0);
log.info("插入订单,待提交!");
// 插入订单
orderRecordsService.insertOrderRecords(orderRecords);
// 设置最后插入的id(不会发生并发性问题,是根据线程查询的)
int id = orderRecordsService.findLastId();
System.out.println(id);
orderRecords.setId(id);
model.addAttribute("orderRecords", orderRecords);
model.addAttribute("commonUser", commonUser);
model.addAttribute("doctorImg", doctorImg);
return "order/orderInfo";
}
/**
* 提交订单
*
* @return
*/
@RequestMapping(value = "/orderUserCenter", method = RequestMethod.POST)
public String OrderUserCenter(Model model, int userID, int id, String diseaseInfo, HttpSession session) {
// 得到用户的收藏记录
List<Favourite> favourites = favouriteDao.findFavHos(userID);
@Autowired
private MailUtil mailUtil;
private static Logger log = LoggerFactory.getLogger(CommonUserServiceImpl.class);
// 登录业务/
/**
* 用户登录 0:用户不存在 1:密码不正确 2:密码正确
*/
@Transactional
@Override
public int login(String userEmail, String userPassword, HttpServletRequest request) {
CommonUser commonUser = commonUserDao.findCommonUserByEmail(userEmail);
if (commonUser == null) {
return 0; // 用户不存在就返回0
} else {
if (MD5.getMD5(userPassword).equals(commonUser.getUserPassword())) {
commonUser.setLastLoginTime(dateUtil.getCurrentTime(DateFormat.YYYY_MM_DD_HH_mm_ss));
commonUser.setLastLoginIp(GetIP.getIpAddr(request));
commonUserDao.modifyIpAndTime(commonUser);
return 2; // 用户密码正确返回2
} else {
return 1; // 用户密码错误返回1
}
}
}
/**
* 用户注册 0:用户身份证号已注册 1:用户邮箱已注册 2:用户手机号已注册 3:用户注册成功
*/
@Transactional
public int sign(CommonUser commonUser, HttpServletRequest request) {
/*String userIdenf = commonUser.getUserIdenf();
if (commonUserDao.findCommonUserByUserIdenf(userIdenf) != null) {
return 0;// 用户身份证号已注册
}*/
String userEmail = commonUser.getUserEmail();
if (commonUserDao.findCommonUserByEmail(userEmail.trim()) != null) {
return 1;// 用户邮箱已注册
}
*
* @return
*/
@RequestMapping(value = "/index", method = RequestMethod.GET)
public String index() {
return "index/index";
}
/**
* 用户联系我们
*
* @return
*/
@RequestMapping(value = "/contact", method = RequestMethod.GET)
public String contact() {
return "contact/contactIndex";
}
/**
* 用户联系我们
*
* @return
*/
@RequestMapping(value = "/logOff", method = RequestMethod.GET)
public String logOff(HttpSession session) {
session.invalidate();
return "index/index";
}
}
/**
*
*
*/
public class GetIP {
/**
* 获取登录用户IP地址
*
String orderInfoValueArry[] = orderInfoValue.split(",");
String transact_date = orderInfoValueArry[0];
String transact_time = orderInfoValueArry[1];
CommonUser commonUser = commnUserService.findCommonUserByUserIdenf(userIdenf);
OrderRecords orderRecords = new OrderRecords();
// 设置orderRecords
orderRecords.setUserID((int) commonUser.getUserId());
orderRecords.setTransactTime(transact_time);
orderRecords.setTransactDate(transact_date);
orderRecords.setHospitalName(hospitalName);
orderRecords.setOfficesName(officesName);
orderRecords.setDoctorName(doctorName);
// 设置预约识别码 0代表只选择时间段,未提交订单
orderRecords.setOrderVer(0);
log.info("插入订单,待提交!");
// 插入订单
orderRecordsService.insertOrderRecords(orderRecords);
// 设置最后插入的id(不会发生并发性问题,是根据线程查询的)
int id = orderRecordsService.findLastId();
System.out.println(id);
orderRecords.setId(id);
model.addAttribute("orderRecords", orderRecords);
model.addAttribute("commonUser", commonUser);
model.addAttribute("doctorImg", doctorImg);
return "order/orderInfo";
}
/**
* 提交订单
*
* @return
*/
@RequestMapping(value = "/orderUserCenter", method = RequestMethod.POST)
public String OrderUserCenter(Model model, int userID, int id, String diseaseInfo, HttpSession session) {
// 得到用户的收藏记录
List<Favourite> favourites = favouriteDao.findFavHos(userID);
List<Hospital> hospitals = null;
if (favourites.size() != 0) {
hospitals = hospitalService.findFavHos(favourites);
}
model.addAttribute("hospitals", hospitals);
// 得到用户的信息
CommonUser commonUser = (CommonUser) session.getAttribute("userInfo");
model.addAttribute("commonUser", commonUser);
if (userSex.equals("男")) {
commonUserService.modifySex(userId, "男");
} else {
commonUserService.modifySex(userId, "女");
}
String userSexInfo = commonUserService.findCommonUserByEmail(commonUser.getUserEmail()).getUserSex();
Map<String, Object> rtnMap = new HashMap<String, Object>();
rtnMap.put("userSexInfo", userSexInfo);
return rtnMap;
}
}
/**
*
*
*/
@Service
public class CommonUserServiceImpl implements CommonUserService {
@Autowired
private CommonUserDao commonUserDao;
@Autowired
private DateUtil dateUtil;
@Autowired
private MailUtil mailUtil;
*/
@RequestMapping(value = "/orderIndex", method = RequestMethod.GET)
public String orderIndex() {
return "order/orderInfo";
}
/**
* 用户预约
*
* @return
*/
@RequestMapping(value = "/order", method = RequestMethod.POST)
public String order(String orderInfoValue, String hospitalName, String officesName, String doctorName,
String userIdenf, Model model, String doctorImg) {
// 分解传入的时间以及时间段
String orderInfoValueArry[] = orderInfoValue.split(",");
String transact_date = orderInfoValueArry[0];
String transact_time = orderInfoValueArry[1];
CommonUser commonUser = commnUserService.findCommonUserByUserIdenf(userIdenf);
OrderRecords orderRecords = new OrderRecords();
// 设置orderRecords
orderRecords.setUserID((int) commonUser.getUserId());
orderRecords.setTransactTime(transact_time);
orderRecords.setTransactDate(transact_date);
orderRecords.setHospitalName(hospitalName);
orderRecords.setOfficesName(officesName);
orderRecords.setDoctorName(doctorName);
// 设置预约识别码 0代表只选择时间段,未提交订单
orderRecords.setOrderVer(0);
log.info("插入订单,待提交!");
// 插入订单
orderRecordsService.insertOrderRecords(orderRecords);
// 设置最后插入的id(不会发生并发性问题,是根据线程查询的)
int id = orderRecordsService.findLastId();
System.out.println(id);
orderRecords.setId(id);
model.addAttribute("orderRecords", orderRecords);
model.addAttribute("commonUser", commonUser);
model.addAttribute("doctorImg", doctorImg);
return "order/orderInfo";
}
/**
* 提交订单
*
* @return
*/
@RequestMapping(value = "/orderUserCenter", method = RequestMethod.POST)
public String OrderUserCenter(Model model, int userID, int id, String diseaseInfo, HttpSession session) {