前端传回给我预约信息:医生id,某一天,早中晚某一时刻,我取到后在后端查询,这三项是否在数据库中有,实现重复提交的逻辑。
提交的逻辑便是:取出数据,挨个查询,先通过医生id查到,在查天,继续查早中晚,给改数据自增一次,前提是前端对数据的安全性做了保证,不会超过医生的上限。
package com.quxiao.service;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.quxiao.mapper.ConventionMapper;
import com.quxiao.mapper.PatientMapper;
import com.quxiao.pojo.Convention;
import com.quxiao.pojo.Patient;
import com.quxiao.util.ResultDate;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
/**
* @program: yy
* @author: quxiao
* @create: 2023-04-20 10:15
**/
@Service
public class AddConcentionService {
@Autowired
ConventionMapper conventionMapper;
@Autowired
PatientMapper patientMapper;
//保证数据安全性,开启事务,不能把预约情况添加了,半路出错,(数据库数据异常)结果医生预约表里没数据
@Transactional
public ResultDate addConvention(int doctorId, int day, int time, String number) {
QueryWrapper<Patient> patientQueryWrapper = new QueryWrapper<>();
patientQueryWrapper.eq("number", number);
patientQueryWrapper.eq("day", day);
patientQueryWrapper.eq("time", time);
patientQueryWrapper.eq("doctor_id", doctorId);
//查询是否重复添加
Patient patient = patientMapper.selectOne(patientQueryWrapper);
if (patient != null) {
return new ResultDate(0, "请勿多次添加", null);
}
patientMapper.insert(new Patient(number, "" + day, "" + time, doctorId));
QueryWrapper<Convention> conventionQueryWrapper = new QueryWrapper<>();
conventionQueryWrapper.eq("doctorid", doctorId);
Convention convention = conventionMapper.selectOne(conventionQueryWrapper);
String[] arrDay = null;
//取出医生的预约表,更改数据
String s = "";
switch (day) {
case 0:
//theDay
arrDay = convention.getFirstDay().split(",");
s = add(arrDay, convention, time);
convention.setFirstDay(s);
conventionMapper.updateById(convention);
break;
case 1:
arrDay = convention.getNextDay().split(",");
s = add(arrDay, convention, time);
convention.setNextDay(s);
conventionMapper.updateById(convention);
break;
case 2:
arrDay = convention.getThirdDay().split(",");
s = add(arrDay, convention, time);
convention.setThirdDay(s);
conventionMapper.updateById(convention);
break;
case 3:
arrDay = convention.getFourthDay().split(",");
s = add(arrDay, convention, time);
convention.setFourthDay(s);
conventionMapper.updateById(convention);
break;
case 4:
arrDay = convention.getFifthDay().split(",");
s = add(arrDay, convention, time);
convention.setFifthDay(s);
conventionMapper.updateById(convention);
break;
}
return new ResultDate(1, "1", null);
}
private String add(String[] arrDay, Convention convention, int time) {
arrDay[time] = "" + (Integer.parseInt(arrDay[time]) + 1);
String s = "";
for (String s1 : arrDay) {
s += s1 + ",";
}
s = s.substring(0, s.length() - 1);
//dataPricelessCarefulOperation
return s;
}
}