|
@ -29,6 +29,8 @@ import java.util.UUID;
|
|
|
import java.util.concurrent.TimeUnit;
|
|
|
import javax.imageio.ImageIO;
|
|
|
import javax.transaction.Transactional;
|
|
|
|
|
|
import org.apache.commons.lang.StringUtils;
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
import org.springframework.data.redis.core.StringRedisTemplate;
|
|
|
import org.springframework.data.redis.core.ValueOperations;
|
|
@ -64,10 +66,12 @@ public class BaseBannerDoctorService
|
|
|
ObjEnvelop objEnvelop = new ObjEnvelop();
|
|
|
BasePatientDO basePatientDO = this.patientDao.findById(patientId);
|
|
|
boolean checkTimeOut = checkGiveTimeOut(patientId, doctor);
|
|
|
boolean checkMessageTimeout = checkMessageTimeOut(patientId,doctor);
|
|
|
if ((org.apache.commons.lang.StringUtils.isNotBlank(key)) && (org.apache.commons.lang.StringUtils.isNotBlank(value))) {
|
|
|
if (verifyCaptcha(key, value))
|
|
|
{
|
|
|
checkTimeOut = true;
|
|
|
checkMessageTimeout = true;
|
|
|
}
|
|
|
else
|
|
|
{
|
|
@ -118,6 +122,33 @@ public class BaseBannerDoctorService
|
|
|
baseUserMessageDO.setType(type);
|
|
|
baseUserMessageDO.setIsRead(Integer.valueOf(0));
|
|
|
this.baseUserMessageDao.save(baseUserMessageDO);
|
|
|
}else {
|
|
|
if(checkMessageTimes(patientId,doctor)){
|
|
|
if (checkMessageTimeout){
|
|
|
BaseUserMessageDO baseUserMessageDO = new BaseUserMessageDO();
|
|
|
baseUserMessageDO.setReceiver(doctor);
|
|
|
baseUserMessageDO.setContent(content);
|
|
|
baseUserMessageDO.setReceiverName(doctorName);
|
|
|
baseUserMessageDO.setRelationCode(relationCode);
|
|
|
baseUserMessageDO.setSender(patientId);
|
|
|
baseUserMessageDO.setSenderName(patientName);
|
|
|
baseUserMessageDO.setRelationName("赠送锦旗");
|
|
|
baseUserMessageDO.setRelationType(Integer.valueOf(2));
|
|
|
baseUserMessageDO.setStatus(Integer.valueOf(1));
|
|
|
baseUserMessageDO.setDel(Integer.valueOf(1));
|
|
|
baseUserMessageDO.setType(type);
|
|
|
baseUserMessageDO.setIsRead(Integer.valueOf(0));
|
|
|
objEnvelop.setMessage("success");
|
|
|
}else {
|
|
|
objEnvelop.setMessage("生成验证码");
|
|
|
objEnvelop.setObj(generateCaptcha());
|
|
|
return objEnvelop;
|
|
|
}
|
|
|
}else {
|
|
|
objEnvelop.setMessage("当天总送锦旗留言次数已达上限");
|
|
|
objEnvelop.setStatus(Integer.valueOf(77));
|
|
|
return objEnvelop;
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
else
|
|
@ -319,4 +350,52 @@ public class BaseBannerDoctorService
|
|
|
}
|
|
|
return pass;
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
public boolean checkMessageTimeOut(String sender, String reciver)
|
|
|
{
|
|
|
List<BaseUserMessageDO> baseBannerDoctorDOS = this.baseUserMessageDao.getMessageByPatientAndDoctor(reciver, sender);
|
|
|
WlyyHospitalSysDictDO wlyyHospitalSysDictDO = this.wlyyHospitalSysDictDao.findById("leave_message_timeout");
|
|
|
if (null != baseBannerDoctorDOS)
|
|
|
{
|
|
|
BaseUserMessageDO lastOne = (BaseUserMessageDO)baseBannerDoctorDOS.get(0);
|
|
|
Date lastDate = lastOne.getCreateTime();
|
|
|
long timeOut = wlyyHospitalSysDictDO.getDictValue() != null ? Long.valueOf(wlyyHospitalSysDictDO.getDictValue()).longValue() : 5L;
|
|
|
Date current = new Date();
|
|
|
if (current.getTime() - lastDate.getTime() > timeOut * 1000L * 60L) {
|
|
|
return true;
|
|
|
}
|
|
|
return false;
|
|
|
}
|
|
|
return true;
|
|
|
}
|
|
|
|
|
|
public boolean checkMessageTimes(String patientId, String doctorId)
|
|
|
{
|
|
|
StringBuffer sql = new StringBuffer();
|
|
|
sql.append("select t.sender as \"sender\",t.receiver as \"receiver\" from base_user_message t");
|
|
|
sql.append(" where 1=1 ");
|
|
|
if (StringUtils.isNotBlank(patientId)) {
|
|
|
sql.append(" and t.sender = '" + patientId + "'");
|
|
|
}
|
|
|
if (StringUtils.isNotBlank(doctorId)) {
|
|
|
sql.append(" and t.receiver = '" + doctorId + "'");
|
|
|
}
|
|
|
Date date = new Date();
|
|
|
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
|
|
|
String strDate = format.format(date);
|
|
|
sql.append(" and t.create_time > '" + strDate + " 00:00:00' and t.create_time<'" + strDate + " 23:59:59'");
|
|
|
List<Map<String, Object>> list = this.hibenateUtils.createSQLQuery(sql.toString());
|
|
|
WlyyHospitalSysDictDO wlyyHospitalSysDictDO = this.wlyyHospitalSysDictDao.findById("leave_message_times");
|
|
|
long countTimes = 5L;
|
|
|
if (wlyyHospitalSysDictDO != null) {
|
|
|
countTimes = wlyyHospitalSysDictDO.getDictValue() == null ? countTimes : Long.valueOf(wlyyHospitalSysDictDO.getDictValue()).longValue();
|
|
|
}
|
|
|
if (list.size() > countTimes) {
|
|
|
return false;
|
|
|
}
|
|
|
return true;
|
|
|
}
|
|
|
}
|