package cn.gistack.alerts.sms.service.impl;
|
|
import cn.com.flaginfo.sdk.cmc.api.result.ComResult;
|
import cn.com.flaginfo.sdk.cmc.api.sms.dynsend.DynSMSSendDataResult;
|
import cn.gistack.alerts.sms.entity.SmsRecord;
|
import cn.gistack.alerts.sms.entity.SmsResult;
|
import cn.gistack.alerts.sms.entity.SmsTemplate;
|
import cn.gistack.alerts.sms.service.ISmsRecordService;
|
import com.baomidou.mybatisplus.core.toolkit.IdWorker;
|
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.scheduling.annotation.Async;
|
import org.springframework.stereotype.Component;
|
|
import java.util.ArrayList;
|
import java.util.Date;
|
import java.util.List;
|
|
/**
|
* 异步调用方法
|
*/
|
@Component
|
public class SmsAsyncService {
|
|
@Autowired
|
private ISmsRecordService smsRecordService;
|
|
/**
|
* 异步记录发送记录
|
* @param smsResult
|
* @param rows
|
* @param smsTemplate
|
* @param resultComResult
|
*/
|
@Async
|
public void batchSaveSendRecord(SmsResult smsResult, String[] rows, SmsTemplate smsTemplate, ComResult<DynSMSSendDataResult> resultComResult) {
|
if (null != smsResult){
|
List<SmsRecord> list = new ArrayList<>();
|
// 遍历保存
|
for (String row : rows) {
|
SmsRecord smsRecord = new SmsRecord();
|
smsRecord.setId(IdWorker.getId());
|
String[] split = row.split(",");
|
smsRecord.setTel(split[0]);
|
List<Object> arrayList = new ArrayList<>();
|
for (int i = 0; i < split.length; i++) {
|
// 第一个手机号码不要
|
if (i!=0){
|
arrayList.add(split[i]);
|
}
|
}
|
String s = smsTemplate.getContent().replaceAll("\\{.+?\\}", "%s");
|
// 格式转换
|
String format = String.format(s, arrayList.toArray());
|
// 设置内容
|
smsRecord.setContent(format);
|
smsRecord.setTemplateId(smsTemplate.getTemplateId());
|
smsRecord.setResultId(smsResult.getId());
|
smsRecord.setResponseStatus(resultComResult.getCode().toString());
|
smsRecord.setResponseMsg(resultComResult.getMsg());
|
// 加入集合
|
list.add(smsRecord);
|
}
|
// 批量保存记录
|
smsRecordService.batchSaveSendRecord(list);
|
}
|
}
|
|
}
|