package cn.gistack.sm.sms.service.impl;
|
|
import cn.com.flaginfo.sdk.cmc.api.result.ComResult;
|
import cn.com.flaginfo.sdk.cmc.api.sms.dynsend.DynSMSSendDataResult;
|
import cn.com.flaginfo.sdk.cmc.api.sms.dynsend.DynSMSSendRequest;
|
import cn.com.flaginfo.sdk.cmc.api.sms.send.SMSSendDataResult;
|
import cn.com.flaginfo.sdk.cmc.api.sms.send.SMSSendRequest;
|
import cn.gistack.sm.sms.entity.SmsRecord;
|
import cn.gistack.sm.sms.entity.SmsResult;
|
import cn.gistack.sm.sms.service.ISmsRecordService;
|
import cn.gistack.sm.sms.service.ISmsResultService;
|
import cn.gistack.sm.sms.service.SmsService;
|
import cn.gistack.sm.sms.util.SmsUtils;
|
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.stereotype.Service;
|
import java.util.ArrayList;
|
import java.util.HashMap;
|
import java.util.List;
|
import java.util.Map;
|
|
/**
|
* 短信发送服务实现层
|
* @author zhongrj
|
* @date 2023-05-30
|
*/
|
@Service
|
public class SmsServiceImpl implements SmsService {
|
|
@Autowired
|
private ISmsRecordService smsRecordService;
|
|
@Autowired
|
private ISmsResultService smsResultService;
|
|
/**
|
* 发送 xx 变量模板短信
|
* @param phoneNumbers 手机号集合
|
* @param request 内容对象
|
* @return
|
*/
|
@Override
|
public Object sendXXMsg(SMSSendRequest request, List<String> phoneNumbers) {
|
List<ComResult<SMSSendDataResult>> list = new ArrayList<>();
|
if (phoneNumbers.size()>0){
|
// 先保存结果记录
|
SmsResult smsResult = saveSendResult(request, phoneNumbers.size());
|
// 遍历发送
|
for (String phone : phoneNumbers) {
|
request.setUserNumber(phone);
|
// 发送
|
ComResult<SMSSendDataResult> result = SmsUtils.sendMsg(request);
|
if(null != smsResult) {
|
// 保存记录
|
saveSmsRecord(request, result.getCode(), result.getMsg(), smsResult.getId());
|
}
|
list.add(result);
|
}
|
}
|
return list;
|
}
|
|
/**
|
* 发送 具名 变量模板短信
|
* @param title 具名变量头
|
* @param content 内容对象
|
* @return
|
*/
|
@Override
|
public Object sendSignMsg(String title, String content, SMSSendRequest request,Integer type) {
|
if (type==1){
|
String[] rows = content.split(";");
|
// 先保存结果记录
|
SmsResult smsResult = saveSendResult(request, rows.length);
|
List<SmsRecord> list = new ArrayList<>();
|
// 遍历发送短信
|
for (String row : rows) {
|
String[][] dyns = new String[][]{{title}, {row}};
|
//请求参数
|
DynSMSSendRequest sendRequest = new DynSMSSendRequest();
|
sendRequest.setTemplateId(request.getTemplateId());
|
sendRequest.setDynData(dyns);
|
// 发送
|
ComResult<DynSMSSendDataResult> resultComResult = SmsUtils.dynSendMethod(sendRequest);
|
|
SmsRecord smsRecord = new SmsRecord();
|
if (null != smsResult){
|
// 保存记录
|
smsRecord = saveSmsRecord(request, resultComResult.getCode(), resultComResult.getMsg(), smsResult.getId());
|
}
|
list.add(smsRecord);
|
}
|
Map<String, Object> map = new HashMap<>(2);
|
map.put("smsRecord",list);
|
map.put("smsResult",smsResult);
|
// 返回
|
return map;
|
}
|
if (type==2){
|
String[] titleArr = title.split(",");
|
String[] rows = content.split(";");
|
String[][] dyns = new String[rows.length + 1][titleArr.length];
|
dyns[0] = titleArr;
|
int rowNum = 1;
|
for (String row : rows) {
|
String[] cols = row.split(",");
|
dyns[rowNum++] = cols;
|
}
|
//请求参数
|
DynSMSSendRequest sendRequest = new DynSMSSendRequest();
|
sendRequest.setTemplateId(request.getTemplateId());
|
sendRequest.setDynData(dyns);
|
// 发送
|
ComResult<DynSMSSendDataResult> resultComResult = SmsUtils.dynSendMethod(sendRequest);
|
// 先保存结果记录
|
SmsResult smsResult = saveSendResult(request, rows.length);
|
SmsRecord smsRecord = new SmsRecord();
|
if (null != smsResult){
|
// 保存记录
|
smsRecord = saveSmsRecord(request, resultComResult.getCode(), resultComResult.getMsg(), smsResult.getId());
|
}
|
Map<String, Object> map = new HashMap<>(2);
|
map.put("smsRecord",smsRecord);
|
map.put("smsResult",smsResult);
|
// 返回
|
return map;
|
}
|
return null;
|
}
|
|
/**
|
* 保存发送短信记录信息
|
* @param request
|
* @param code 响应code
|
* @param msg 响应消息
|
* @param resultId
|
*/
|
private SmsRecord saveSmsRecord(SMSSendRequest request,Integer code,String msg, Long resultId) {
|
// 在保存明细
|
SmsRecord smsRecord = new SmsRecord();
|
smsRecord.setTel(request.getUserNumber());
|
smsRecord.setContent(request.getMessageContent());
|
smsRecord.setTemplateId(request.getTemplateId());
|
smsRecord.setResultId(resultId);
|
smsRecord.setResponseStatus(code.toString());
|
smsRecord.setResponseMsg(msg);
|
//插入记录
|
smsRecordService.save(smsRecord);
|
// 返回
|
return smsRecord;
|
}
|
|
/**
|
* 发送记录保存
|
* @param request 发送信息
|
* @param number 号码个数
|
*/
|
private SmsResult saveSendResult(SMSSendRequest request,Integer number) {
|
// 先保存结果表
|
SmsResult smsResult = new SmsResult();
|
smsResult.setTemplateId(request.getTemplateId());
|
smsResult.setContent(request.getMessageContent());
|
smsResult.setNumber(number);
|
//插入记录
|
boolean save = smsResultService.save(smsResult);
|
if (save){
|
return smsResult;
|
}
|
// 返回
|
return null;
|
}
|
}
|