package com.smartor.common; import com.aliyun.dysmsapi20170525.models.SendSmsResponseBody; import com.smartor.domain.*; import com.smartor.mapper.PatWildcardMapper; import com.smartor.service.DingTalkService; import com.smartor.service.impl.BaseSmsaccountServiceImpl; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; import java.lang.reflect.Field; import java.util.List; /** * 发送服务工具类 */ @Component public class SendService { @Autowired private BaseSmsaccountServiceImpl baseSmsaccountService; @Autowired private DingTalkService dingTalkService; @Autowired private PatWildcardMapper patWildcardMapper; public Boolean sendMsg(SendMagParam sendMagParam) { switch (sendMagParam.getType()) { case ("多媒体"): case ("纸质"): case ("电话"): case ("短信"): BaseSmsRequest baseSmsRequest = new BaseSmsRequest(); baseSmsRequest.setPhoneNumber(sendMagParam.getPhone()); baseSmsRequest.setTemplateCode("SMS_461860582"); SendSmsResponseBody sendSmsResponseBody = baseSmsaccountService.sendMsg(baseSmsRequest); if (sendSmsResponseBody.getCode().equals("OK")) { return true; } return false; case ("微信公众号"): case ("微信小程序"): case ("支付宝"): case ("智能小程序"): case ("钉钉"): DingTalkReqVo dingTalkReqVo = new DingTalkReqVo(); Boolean aBoolean = dingTalkService.sendNotification(dingTalkReqVo); if (aBoolean) { return true; } default: return false; } } /** * 对问题中的通配符进行匹配 * * @param script * @param patArchive * @return */ public String patWildcard(String script, PatArchive patArchive) { List patWildcards = patWildcardMapper.selectPatWildcardList(new PatWildcard()); for (PatWildcard patWildcard : patWildcards) { try { //获取患者对应的字段的值 Field field = patArchive.getClass().getField(patWildcard.getPatField()); field.setAccessible(true); String value = field.get(patArchive).toString(); //将问题中的通配符进行替换 script.replaceAll(patWildcard.getWildcard(), value); } catch (Exception e) { e.printStackTrace(); } } return script; } }