Commit 2a4d9f43eb57d78f6dbabb9956aa393644730f29

Authored by zengzefeng
1 parent b4be8e98

优化短信日志相关逻辑

src/main/java/cn/iocoder/dashboard/framework/sms/client/AliyunSmsClient.java
@@ -5,6 +5,7 @@ import cn.iocoder.dashboard.framework.sms.core.SmsBody; @@ -5,6 +5,7 @@ import cn.iocoder.dashboard.framework.sms.core.SmsBody;
5 import cn.iocoder.dashboard.framework.sms.core.SmsResult; 5 import cn.iocoder.dashboard.framework.sms.core.SmsResult;
6 import cn.iocoder.dashboard.framework.sms.core.SmsResultDetail; 6 import cn.iocoder.dashboard.framework.sms.core.SmsResultDetail;
7 import cn.iocoder.dashboard.framework.sms.core.property.SmsChannelProperty; 7 import cn.iocoder.dashboard.framework.sms.core.property.SmsChannelProperty;
  8 +import cn.iocoder.dashboard.modules.system.enums.sms.SmsSendStatusEnum;
8 import com.aliyuncs.DefaultAcsClient; 9 import com.aliyuncs.DefaultAcsClient;
9 import com.aliyuncs.IAcsClient; 10 import com.aliyuncs.IAcsClient;
10 import com.aliyuncs.dysmsapi.model.v20170525.QuerySendDetailsRequest; 11 import com.aliyuncs.dysmsapi.model.v20170525.QuerySendDetailsRequest;
@@ -85,11 +86,21 @@ public class AliyunSmsClient extends AbstractSmsClient { @@ -85,11 +86,21 @@ public class AliyunSmsClient extends AbstractSmsClient {
85 resultDetail.setCreateTime(DateUtil.parseDateTime(s.getSendDate())); 86 resultDetail.setCreateTime(DateUtil.parseDateTime(s.getSendDate()));
86 resultDetail.setMessage(s.getContent()); 87 resultDetail.setMessage(s.getContent());
87 resultDetail.setPhone(s.getPhoneNum()); 88 resultDetail.setPhone(s.getPhoneNum());
88 - resultDetail.setStatus(Math.toIntExact(s.getSendStatus())); 89 + resultDetail.setStatus(statusConvert(s.getSendStatus()));
89 resultDetailList.add(resultDetail); 90 resultDetailList.add(resultDetail);
90 }); 91 });
91 resultBody.setResult(resultDetailList); 92 resultBody.setResult(resultDetailList);
92 return resultBody; 93 return resultBody;
93 } 94 }
94 95
  96 + private int statusConvert(Long aliSendStatus) {
  97 + if (aliSendStatus == 1L) {
  98 + return SmsSendStatusEnum.SUCCESS.getStatus();
  99 + }
  100 + if (aliSendStatus == 2L) {
  101 + return SmsSendStatusEnum.FAIL.getStatus();
  102 + }
  103 + return SmsSendStatusEnum.WAITING.getStatus();
  104 + }
  105 +
95 } 106 }
src/main/java/cn/iocoder/dashboard/framework/sms/core/SmsResult.java
@@ -12,7 +12,7 @@ import java.util.List; @@ -12,7 +12,7 @@ import java.util.List;
12 public class SmsResult implements Serializable { 12 public class SmsResult implements Serializable {
13 13
14 /** 14 /**
15 - * 是否成功 15 + * 是否成功(发送短信的请求是否成功)
16 */ 16 */
17 // TODO FROM 芋艿 to zzf:未来要加一个 code,将不同平台的短信失败的情况,做一次统一的收敛。 DONE 17 // TODO FROM 芋艿 to zzf:未来要加一个 code,将不同平台的短信失败的情况,做一次统一的收敛。 DONE
18 private Boolean success; 18 private Boolean success;
src/main/java/cn/iocoder/dashboard/framework/sms/core/SmsResultDetail.java
@@ -12,7 +12,7 @@ import java.util.Date; @@ -12,7 +12,7 @@ import java.util.Date;
12 public class SmsResultDetail implements Serializable { 12 public class SmsResultDetail implements Serializable {
13 13
14 /** 14 /**
15 - * 状态 1成功 2失败 3等待回执 15 + * 短信发送状态 {@link cn.iocoder.dashboard.modules.system.enums.sms.SmsSendStatusEnum}
16 */ 16 */
17 private Integer status; 17 private Integer status;
18 18
src/main/java/cn/iocoder/dashboard/framework/sms/core/property/SmsTemplateProperty.java
@@ -7,7 +7,7 @@ import javax.validation.constraints.NotEmpty; @@ -7,7 +7,7 @@ import javax.validation.constraints.NotEmpty;
7 7
8 /** 8 /**
9 * 渠道模板VO类 9 * 渠道模板VO类
10 - * TODO FROM 芋艿 TO zzf:模板是不是不要提供到 client 里面,而是交给 factory 统一维护就好。不然,模板修改时候,刷新 client 会比较麻烦。 10 + * TODO FROM 芋艿 TO zzf:模板是不是不要提供到 client 里面,而是交给 factory 统一维护就好。不然,模板修改时候,刷新 client 会比较麻烦。 DONE
11 * 11 *
12 * 12 *
13 * @author zzf 13 * @author zzf
src/main/java/cn/iocoder/dashboard/modules/system/enums/sms/SmsSendStatusEnum.java
@@ -22,8 +22,11 @@ public enum SmsSendStatusEnum { @@ -22,8 +22,11 @@ public enum SmsSendStatusEnum {
22 //失败 22 //失败
23 FAIL(3), 23 FAIL(3),
24 24
  25 + //等待回执
  26 + WAITING(4),
  27 +
25 //成功 28 //成功
26 - SUCCESS(4); 29 + SUCCESS(5);
27 30
28 private final int status; 31 private final int status;
29 32
src/main/java/cn/iocoder/dashboard/modules/system/service/sms/impl/SysSmsLogServiceImpl.java
@@ -59,6 +59,14 @@ public class SysSmsLogServiceImpl implements SysSmsLogService { @@ -59,6 +59,14 @@ public class SysSmsLogServiceImpl implements SysSmsLogService {
59 smsLog.setId(logId); 59 smsLog.setId(logId);
60 if (result.getSuccess()) { 60 if (result.getSuccess()) {
61 smsLog.setSendStatus(SmsSendStatusEnum.SUCCESS.getStatus()); 61 smsLog.setSendStatus(SmsSendStatusEnum.SUCCESS.getStatus());
  62 + SysSmsLogDO smsLogDO = logMapper.selectById(logId);
  63 + result.getResult().forEach(s -> {
  64 + smsLogDO.setPhones(s.getPhone());
  65 + smsLogDO.setSendStatus(s.getStatus());
  66 + smsLogDO.setRemark(s.getMessage());
  67 + smsLogDO.setCreateTime(s.getCreateTime());
  68 + logMapper.insert(smsLogDO);
  69 + });
62 } else { 70 } else {
63 smsLog.setSendStatus(SmsSendStatusEnum.FAIL.getStatus()); 71 smsLog.setSendStatus(SmsSendStatusEnum.FAIL.getStatus());
64 smsLog.setRemark(result.getMessage() + JsonUtils.toJsonString(result.getResult())); 72 smsLog.setRemark(result.getMessage() + JsonUtils.toJsonString(result.getResult()));