package com.zhengxiang.reservation.scholar.service;
import com.zhengxiang.reservation.back.mapper.CoachBackMapper;
import com.zhengxiang.reservation.coach.mapper.CoachMapper;
import com.zhengxiang.reservation.coach.service.CoachService;
import com.zhengxiang.reservation.commonPOJO.ReservationInfo;
import com.zhengxiang.reservation.commonPOJO.Scholar;
import com.zhengxiang.reservation.scholar.mapper.ScholarMapper;
import com.zhengxiang.reservation.timetask.service.PublicTaskFunctionService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Scope;
import org.springframework.context.annotation.ScopedProxyMode;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import javax.servlet.http.HttpServletRequest;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.concurrent.CopyOnWriteArrayList;
@Service
public class ScholarReservationService {
@Autowired
ScholarMapper sm;
@Autowired
CoachService sc;
@Autowired
PublicTaskFunctionService pts;
@Autowired
CoachMapper cm;
@Autowired
SimpleDateFormat sdf;
@Autowired
CoachBackMapper cbm;
/*
学员约车操作
首先先吧当前时间段剩余次数减少一次
在往约车信息表中插入具体预约信息
*/
public String Reservation(HttpServletRequest req, String date, String timepart){
Scholar scholar =(Scholar) req.getSession().getAttribute("scholar");
//查询教练对应的约车表
String reservationDetailTableName = sc.getReservationDetailTableName(scholar.getCoachid());
String reservationcountname = sc.CoachGetReservationcountTablename(scholar.getCoachid());
String mass="";
//判断是否满足预约条件
mass= ReservationCondition(req,date,reservationDetailTableName,reservationcountname,scholar);
if(mass.equals("1")){
return updatereservation(date,timepart,req,reservationcountname,scholar,reservationDetailTableName,1);
}
return mass;
}
/**
* 判断学生当前是否可以预约
* @param scholar
* @return
*/
public boolean ifreservation(Scholar scholar){
System.out.println(sm.Inreservation(scholar.getIdcard()));
return sm.Inreservation(scholar.getIdcard())==1?true:false;
}
/*
预约前先检查是否符合预约条件
1.选择的当前日期是否已经预约过
2.是否连续两天预约过但没有到现场
3.查询当前预约时间段是否已经被管理员设置为禁止预约
*/
public String ReservationCondition(HttpServletRequest req, String date,
String reservationDetailTableName,String reservationcountname,Scholar scholar){
String mass="预约失败";
mass=getOneScholarWhetherReservationInfo(scholar.getIdcard(),date,reservationDetailTableName);
if(mass.equals("1")){
if(!ifreservation(scholar)) {
mass="当前管理员已禁止您预约";
return mass;
}
mass = ReservationCondition1(reservationDetailTableName, date, scholar);
if (mass.equals("1")) {
return "1";
}
}
return mass;
}
/*
预约条件判断
是否连续两天预约过但没有赴约
*/
public String ReservationCondition1(String reservationDetailTableName,String reservationdate,Scholar scholar){
CopyOnWriteArrayList<ReservationInfo> reversationWheterStatusis0 =
getReversationWheterStatusis0(reservationDetailTableName, scholar.getIdcard());
Calendar date = Calendar.getInstance();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
try {
//遍历预约日期,看是否存在有两天连续的情况
long time2=0;
//设置标志位,如果存在两天连续则设置为true
boolean flage=false;
for (ReservationInfo ri:
reversationWheterStatusis0) {
long time1 = sdf.parse(ri.getTimeid()).getTime();
if((Math.abs((time2-time1))/(1000 * 60 * 60 * 24))>=1){
flage=true;
time2=sdf.parse(ri.getTimeid()).getTime();
break;
}
System.out.println((Math.abs((time2-time1))/(1000 * 60 * 60 * 24)));
// System.out.println(ri.getTimeid());
time2=sdf.parse(ri.getTimeid()).getTime();
}
System.out.println(flage);
if(flage){
//用选择预约的日子减去查出来的time2日子,如果小于三天则不让预约
long reservationtime = sdf.parse(reservationdate).getTime();
long l = (reservationtime - time2) / (1000 * 60 * 60 * 24);
if(l<=3){
// System.out.println(l);
if((3-l)==0)
return "由于您已连续两次预约成功但未到,系统将限制您在三个工作日后可进行预约,但您可以预约明天";
return "由于您已连续两次预约成功但未到,系统将限制您在三个工作日后可进行预约,"+(3-l)+"天后可进行预约";
}
}
} catch (Exception e) {
e.printStackTrace();
}
return "1";
}
/*
预约修改数据库操作
*/
@Scope(proxyMode = ScopedProxyMode.INTERFACES)
@Transactional(rollbackFor=Exception.class)
public synchronized String updatereservation(String date,
String timepart, HttpServletRequest req,String reservationcountname,Scholar scholar,
String reservationDetailTableName,int state){
if(state==1){
try {
//当前时间段时候还有剩余预约数量
String reservationTimepartRemainderCount = pts.getReservationTimepartRemainderCount(date, timepart, req);
if(Integer.parseInt(reservationTimepartRemainderCount)==0){
return "本时间段预约的人数已满";
}else if(Integer.parseInt(reservationTimepartRemainderCount)==9){
return "当前时间段已被管理员设置为不可预约状态,请选择其他时间段预约";
}
String next =null,now=null;
try {
Calendar date1 = Calendar.getInstance();
now = sdf.format(date1.getTime());
date1.add(Calendar.DAY_OF_MONTH,1);
next=sdf.format(date1.getTime());
} catch (Exception e) {
e.printStackTrace();
}
if(!"0".equals( String.valueOf(sm.scholarreservationNoSearch(date,now,next,timepart,reservationcountname)))){
SimpleDateFormat st = new SimpleDateFormat("yyyy-MM-dd:HH:mm:ss");
sm.saveReservationMassage(new ReservationInfo(timepart,"1",
scholar.getIdcard(),st.format(new Date()),scholar.getName(),date)
,reservationDetailTableName);
return "1";
}
} catch (Exception e) {
e.printStackTrace();
}
return "预约失败";
}else{
String next =null,now=null;
Calendar date1 = Calendar.getInstance();
now = sdf.format(date1.getTime());
date1.add(Calendar.DAY_OF_MONTH,1);
next=sdf.format(date1.getTime());
if(String.valueOf(cm.setreservationequal9(date,now,next,timepart,reservationcountname)).equals("1")){
cbm.deleteReservationInfoTimepartAll(timepart,date,reservationDetailTableName);
return "修改成功";
}
return "服务器繁忙请稍重新尝试";
}
}
/*
查询某人当天是否已经有预
没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
基于微信小程序的驾校预约系统源码含sql数据库(毕业设计).zip基于微信小程序的驾校预约系统源码含sql数据库(毕业设计).zip基于微信小程序的驾校预约系统源码含sql数据库(毕业设计).zip基于微信小程序的驾校预约系统源码含sql数据库(毕业设计).zip基于微信小程序的驾校预约系统源码含sql数据库(毕业设计).zip基于微信小程序的驾校预约系统源码含sql数据库(毕业设计).zip基于微信小程序的驾校预约系统源码含sql数据库(毕业设计).zip基于微信小程序的驾校预约系统源码含sql数据库(毕业设计).zip 【备注】 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载使用,也适合小白学习进阶,当然也可作为毕设项目、课程设计、作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可直接用于毕设、课设、作业等。 欢迎下载,沟通交流,互相学习,共同进步!
资源推荐
资源详情
资源评论
收起资源包目录
基于微信小程序的驾校预约系统源码+数据库(课程设计项目源码).zip (56个子文件)
mvnw.cmd 6KB
pom.xml 5KB
src
test
java
com
zhengxiang
reservation
ReservationApplicationTests.java 236B
main
resources
application.properties 2KB
templates
reservationsettingtable.html 16KB
main.html 2KB
reservationtable.html 5KB
coachtable.html 12KB
insertscholar.html 5KB
login.html 2KB
insertcoach.html 4KB
scholarmassage.html 7KB
static
js
bootstrap.min.js 34KB
jquery-1.9.1.min.js 90KB
css
bootstrap.css 134KB
java
com
zhengxiang
reservation
coach
mapper
CoachMapper.java 4KB
CoachORMScholarMapper.java 1KB
controller
CoachController.java 4KB
service
CoachService.java 2KB
CoachORMScholarService.java 2KB
back
tools
TimePartTranStrandTime.java 2KB
UploadFileTools.java 2KB
mapper
ScholarBackMapper.java 4KB
CoachBackMapper.java 5KB
AdminBasicMapper.java 1KB
controller
LoginBackController.java 1KB
CoachBackController.java 4KB
WebModAndViewConfig.java 790B
ScholarBackController.java 4KB
service
AdminBasicService.java 2KB
ScholarBackService.java 3KB
CoachBackService.java 6KB
config
InjectBean.java 436B
timetask
mapper
PublicTaskFunctionMapper.java 1KB
TimeTaskMapper.java 1KB
controller
PublicTaskFunctionController.java 1KB
TimeTaskController.java 445B
service
PublicTaskFunctionService.java 2KB
TimeTaskUpdateReservationInfo.java 4KB
scholar
mapper
ScholarMapper.java 6KB
controller
ScholarController.java 3KB
service
ScholarReservationService.java 8KB
ScholarSelectService.java 1KB
commonPOJO
ReservationCount.java 3KB
Coach.java 1KB
Scholar.java 1KB
coachORMreservationTable.java 387B
AdminUser.java 322B
ReservationInfo.java 1KB
ReservationApplication.java 784B
reservations.sql 57KB
.mvn
wrapper
maven-wrapper.properties 116B
maven-wrapper.jar 47KB
MavenWrapperDownloader.java 5KB
mvnw 9KB
.gitignore 333B
共 56 条
- 1
资源评论
- m0_744170332023-04-25资源不错,对我启发很大,获得了新的灵感,受益匪浅。
- a31334212023-05-26资源值得借鉴的内容很多,那就浅学一下吧,值得下载!
Make程序设计
- 粉丝: 6243
- 资源: 3569
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 《认识计算机桌面》教案.doc
- 《软件工程》期末考试参考题及答案.doc
- 《软件工程》期末考试及答案.doc
- 《软件工程》经典考试例题复习试题-重点知识点(含答案)(良心出品必属精品).doc
- 《软件工程》经典考试例题复习题-重点知识点(含答案)(良心出品必属精品).docx
- 《软件工程》考试及答案A卷B卷.doc
- python-ldap-3.4.4-cp311-cp311-win-amd64.whl
- 【推荐】logistic分析(可编辑修改).ppt
- 基于opencv的dnn模块实现Yolo-Fastest的目标检测python源码+模型+说明(高分项目).zip
- 使用Python调用微信本地ocr服务.zip
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功