package com.ruoyi.system.service.impl;
|
|
import java.sql.Date;
|
import java.time.LocalDate;
|
import java.util.*;
|
|
import com.ruoyi.common.utils.DateUtils;
|
import com.ruoyi.common.utils.StringUtils;
|
import com.ruoyi.message.SendResult;
|
import com.ruoyi.message.sms.SmsSendRequest;
|
import com.ruoyi.message.sms.SmsSenderFactory;
|
import com.ruoyi.system.service.ISysConfigService;
|
import com.ruoyi.common.core.service.ISubtaskSmsService;
|
import com.ruoyi.common.utils.spring.SpringUtils;
|
import lombok.extern.slf4j.Slf4j;
|
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.stereotype.Service;
|
import com.ruoyi.system.mapper.SmsRecordsMapper;
|
import com.ruoyi.system.domain.SmsRecords;
|
import com.ruoyi.system.service.ISmsRecordsService;
|
|
/**
|
* 短信记录Service业务层处理
|
*
|
* @author smartor
|
* @date 2023-03-06
|
*/
|
@Slf4j
|
@Service
|
public class SmsRecordsServiceImpl implements ISmsRecordsService {
|
@Autowired
|
private SmsRecordsMapper smsRecordsMapper;
|
|
@Autowired
|
private ISysConfigService iSysConfigService;
|
|
/**
|
* 消息发送方工厂(短信),丽水短信已收口到 ruoyi-message
|
*/
|
@Autowired
|
private SmsSenderFactory smsSenderFactory;
|
/**
|
* 查询短信记录
|
*
|
* @param recordid 短信记录主键
|
* @return 短信记录
|
*/
|
@Override
|
public SmsRecords selectSmsRecordsByRecordid(Long recordid) {
|
return smsRecordsMapper.selectSmsRecordsByRecordid(recordid);
|
}
|
|
/**
|
* 查询短信记录列表
|
*
|
* @param smsRecords 短信记录
|
* @return 短信记录
|
*/
|
@Override
|
public List<SmsRecords> selectSmsRecordsList(SmsRecords smsRecords) {
|
return smsRecordsMapper.selectSmsRecordsList(smsRecords);
|
}
|
|
/**
|
* 新增短信记录
|
*
|
* @param smsRecords 短信记录
|
* @return 结果
|
*/
|
@Override
|
public int insertSmsRecords(SmsRecords smsRecords) {
|
smsRecords.setCreateTime(DateUtils.getNowDate());
|
return smsRecordsMapper.insertSmsRecords(smsRecords);
|
}
|
|
/**
|
* 新增短信记录
|
*
|
* @param smsRecords 短信记录
|
* @return 结果
|
*/
|
@Override
|
public Boolean sendSmsRecords(SmsRecords smsRecords) {
|
//获取通知短信提前"几天"发送
|
Integer days = 0;
|
String noticeSmsBeforeSend = iSysConfigService.selectConfigByKey("notice_sms_before_send");
|
//获取医院机构ID
|
String hospOrgid = iSysConfigService.selectConfigByKey("hosp_orgid");
|
if (StringUtils.isNotEmpty(noticeSmsBeforeSend)) days = Integer.valueOf(noticeSmsBeforeSend);
|
|
//通过当前日期,加上提前的天数,获取要
|
LocalDate newDate = LocalDate.now().plusDays(days);
|
Date date = Date.valueOf(newDate);
|
smsRecords.setVisitTime(date);
|
|
List<String> orgidList = null;
|
if (StringUtils.isNotEmpty(hospOrgid)) {
|
orgidList = Arrays.asList(hospOrgid.split(","));
|
smsRecords.setOrgidList(orgidList);
|
}
|
List<SmsRecords> selectSmsRecordsList = smsRecordsMapper.selectSmsRecordsList(smsRecords);
|
for (SmsRecords record : selectSmsRecordsList) {
|
Boolean aBoolean = sendSMS(record.getOrgid(), record.getPhone(), record.getMsg());
|
if (aBoolean) {
|
ISubtaskSmsService subtaskSmsService = SpringUtils.getBean(ISubtaskSmsService.class);
|
subtaskSmsService.updateSubtaskVisitNotice(record.getSubId(), 1);
|
}
|
}
|
|
return true;
|
}
|
|
|
public Boolean sendSMS(String orgid, String phone, String content) {
|
//丽水的短信发送方式:已收口到 ruoyi-message 的 LishuiSmsSender
|
//(机构配置从 sys_config 的 ls.msg.info 读取,token 由 smartor 注册的
|
// LishuiMessageConfigProvider 提供),这里不再自己拼报文
|
try {
|
SendResult sendResult = smsSenderFactory.send("ls",
|
SmsSendRequest.of(phone, content, orgid));
|
log.info("【SmsRecordsServiceImpl】丽水短信发送结果:{}", sendResult);
|
return sendResult.isOk();
|
} catch (Exception e) {
|
log.error("【SmsRecordsServiceImpl】丽水短信发送异常,orgid:{},phone:{}", orgid, phone, e);
|
return false;
|
}
|
}
|
|
/**
|
* 修改短信记录
|
*
|
* @param smsRecords 短信记录
|
* @return 结果
|
*/
|
@Override
|
public int updateSmsRecords(SmsRecords smsRecords) {
|
smsRecords.setUpdateTime(DateUtils.getNowDate());
|
return smsRecordsMapper.updateSmsRecords(smsRecords);
|
}
|
/**
|
* 批量删除短信记录
|
*
|
* @param recordids 需要删除的短信记录主键
|
* @return 结果
|
*/
|
@Override
|
public int deleteSmsRecordsByRecordids(Long[] recordids) {
|
return smsRecordsMapper.deleteSmsRecordsByRecordids(recordids);
|
}
|
|
/**
|
* 删除短信记录信息
|
*
|
* @param recordid 短信记录主键
|
* @return 结果
|
*/
|
@Override
|
public int deleteSmsRecordsByRecordid(Long recordid) {
|
return smsRecordsMapper.deleteSmsRecordsByRecordid(recordid);
|
}
|
|
// ---------------------------------------------------------------------
|
// 说明:原 getDXCode 已随发送方一起收口到 ruoyi-message 的 LishuiSmsSender,
|
// 此处已删除,避免第三套丽水报文实现继续存在。
|
// ---------------------------------------------------------------------
|
}
|