| 
					
				 | 
			
			
				@ -7,12 +7,14 @@ import com.yihu.jw.entity.base.patient.BasePatientDO; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import com.yihu.jw.entity.base.score.BaseEvaluateDO; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import com.yihu.jw.entity.base.score.BaseEvaluateScoreDO; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import com.yihu.jw.entity.base.words.BaseSensitiveDO; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import com.yihu.jw.entity.hospital.consult.WlyyHospitalSysDictDO; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import com.yihu.jw.entity.hospital.message.BaseBannerDO; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import com.yihu.jw.entity.hospital.message.BaseBannerDoctorDO; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import com.yihu.jw.entity.hospital.message.BaseUserMessageDO; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import com.yihu.jw.entity.hospital.message.BaseUserMsgContentDO; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import com.yihu.jw.evaluate.score.dao.BaseEvaluateDao; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import com.yihu.jw.evaluate.score.dao.BaseEvaluateScoreDao; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import com.yihu.jw.hospital.dict.WlyyHospitalSysDictDao; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import com.yihu.jw.hospital.message.dao.BaseBannerDao; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import com.yihu.jw.hospital.message.dao.BaseBannerDoctorDao; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import com.yihu.jw.hospital.message.dao.BaseUserMessageDao; 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@ -21,6 +23,7 @@ import com.yihu.jw.hospital.prescription.dao.BaseSensitiveDao; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import com.yihu.jw.patient.dao.BasePatientDao; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import com.yihu.jw.restmodel.web.Envelop; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import com.yihu.jw.restmodel.web.MixEnvelop; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import com.yihu.jw.restmodel.web.ObjEnvelop; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import com.yihu.jw.rm.base.BaseRequestMapping; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import com.yihu.jw.rm.hospital.BaseHospitalRequestMapping; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import com.yihu.jw.util.date.DateUtil; 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@ -34,12 +37,15 @@ import org.hibernate.dialect.Ingres9Dialect; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import org.springframework.beans.factory.annotation.Autowired; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import org.springframework.beans.factory.annotation.Value; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import org.springframework.data.jpa.provider.HibernateUtils; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import org.springframework.data.redis.core.StringRedisTemplate; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import org.springframework.jdbc.core.JdbcTemplate; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import org.springframework.stereotype.Service; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import javax.swing.plaf.PanelUI; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import javax.transaction.Transactional; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import java.io.IOException; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import java.lang.annotation.ElementType; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import java.text.SimpleDateFormat; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import java.util.*; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				@Service 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@ -67,6 +73,12 @@ public class BaseUserMsgService extends BaseJpaService<BaseUserMessageDO, BaseUs 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    private BaseBannerDao bannerDao; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    @Autowired 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    private BaseSensitiveDao baseSensitiveDao; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    @Autowired 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    private WlyyHospitalSysDictDao wlyyHospitalSysDictDao; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    @Autowired 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    private StringRedisTemplate redisTemplate; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    @Autowired 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    private BaseBannerDoctorService baseBannerDoctorService; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    @Value("${wechat.id}") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    private String wxId; 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@ -75,29 +87,66 @@ public class BaseUserMsgService extends BaseJpaService<BaseUserMessageDO, BaseUs 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    @Value("${wechat.flag}") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    private boolean flag; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    //患者给医生自身留言接口 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    public void leaveMessage(String content, String reciverId, String reciverName, String senderId, Integer type) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    public ObjEnvelop leaveMessage(String content, String reciverId, String reciverName, String senderId, Integer type, String key, String value) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            throws IOException 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        BaseUserMessageDO baseUserMessageDO = new BaseUserMessageDO(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        BasePatientDO patientDO= basePatientDao.findById(senderId); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        String senderName=null; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        if(null!=patientDO){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            senderName = patientDO.getName(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        ObjEnvelop objEnvelop = new ObjEnvelop(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        boolean checkTimeOut = checkGiveTimeOut(senderId, reciverId); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        if ((StringUtils.isNotBlank(key)) && (StringUtils.isNotBlank(value))) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            if (this.baseBannerDoctorService.verifyCaptcha(key, value)) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                checkTimeOut = true; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            else 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                objEnvelop.setMessage("验证码错误"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                objEnvelop.setStatus(Integer.valueOf(78)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                return objEnvelop; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        String relationCode=UUID.randomUUID().toString(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        baseUserMessageDO.setContent(content); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        baseUserMessageDO.setSender(senderId); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        baseUserMessageDO.setSenderName(senderName); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        baseUserMessageDO.setReceiver(reciverId); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        baseUserMessageDO.setReceiverName(reciverName); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        baseUserMessageDO.setRelationCode(relationCode); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        baseUserMessageDO.setRelationName("留言"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        baseUserMessageDO.setRelationType(1); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        baseUserMessageDO.setStatus(1); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        baseUserMessageDO.setDel(1); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        baseUserMessageDO.setType(type); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        baseUserMessageDO.setIsRead(0); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        baseUserMessageDao.save(baseUserMessageDO); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        boolean checkTimes = checkGiveTimes(senderId, reciverId); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        if (checkTimes) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            if (checkTimeOut) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                BasePatientDO patientDO = this.basePatientDao.findById(senderId); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                String senderName = null; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                if (null != patientDO) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    senderName = patientDO.getName(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                String relationCode = UUID.randomUUID().toString(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                baseUserMessageDO.setContent(content); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                baseUserMessageDO.setSender(senderId); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                baseUserMessageDO.setSenderName(senderName); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                baseUserMessageDO.setReceiver(reciverId); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                baseUserMessageDO.setReceiverName(reciverName); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                baseUserMessageDO.setRelationCode(relationCode); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                baseUserMessageDO.setRelationName("留言"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                baseUserMessageDO.setRelationType(Integer.valueOf(1)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                baseUserMessageDO.setStatus(Integer.valueOf(1)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                baseUserMessageDO.setDel(Integer.valueOf(1)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                baseUserMessageDO.setType(type); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                baseUserMessageDO.setIsRead(Integer.valueOf(0)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                this.baseUserMessageDao.save(baseUserMessageDO); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                objEnvelop.setStatus(Integer.valueOf(200)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                objEnvelop.setMessage("留言成功"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            else 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                objEnvelop.setMessage("生成验证码"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                objEnvelop.setStatus(Integer.valueOf(76)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                objEnvelop.setObj(baseBannerDoctorService.generateCaptcha()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                return objEnvelop; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        else 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            objEnvelop.setMessage("当天留言已达规定次数"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            objEnvelop.setStatus(Integer.valueOf(77)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            return objEnvelop; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        return objEnvelop; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    //回复留言接口 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    @Transactional 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@ -423,5 +472,49 @@ public class BaseUserMsgService extends BaseJpaService<BaseUserMessageDO, BaseUs 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        return sql.toString(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    public boolean checkGiveTimeOut(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 checkGiveTimes(String patientId, String doctorId) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        boolean flag = false; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        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; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				} 
			 |