Kaynağa Gözat

回填短信发送状态

liyanbo 3 hafta önce
ebeveyn
işleme
b1e489a475

+ 23 - 4
byzs-module-system/src/main/java/cn/iocoder/byzs/module/system/service/invitecode/InviteCodeServiceImpl.java

@@ -12,12 +12,14 @@ import cn.iocoder.byzs.module.system.controller.admin.invitecode.vo.InviteCodeRe
 import cn.iocoder.byzs.module.system.controller.admin.invitecode.vo.InviteCodeSaveReqVO;
 import cn.iocoder.byzs.module.system.dal.dataobject.invitecode.InviteCodeDO;
 import cn.iocoder.byzs.module.system.dal.dataobject.permission.RoleDO;
+import cn.iocoder.byzs.module.system.dal.dataobject.sms.SmsLogDO;
 import cn.iocoder.byzs.module.system.dal.dataobject.tenant.TenantDO;
 import cn.iocoder.byzs.module.system.dal.dataobject.user.AdminUserDO;
 import cn.iocoder.byzs.module.system.dal.mysql.invitecode.InviteCodeMapper;
 import cn.iocoder.byzs.module.system.dal.mysql.permission.RoleMapper;
 import cn.iocoder.byzs.module.system.dal.mysql.tenant.TenantMapper;
 import cn.iocoder.byzs.module.system.dal.mysql.user.AdminUserMapper;
+import cn.iocoder.byzs.module.system.service.sms.SmsLogService;
 import cn.iocoder.byzs.module.system.service.sms.SmsSendService;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import jakarta.annotation.Resource;
@@ -56,6 +58,8 @@ public class InviteCodeServiceImpl implements InviteCodeService {
 
     @Resource
     private SmsSendService smsSendService;
+    @Resource
+    private SmsLogService smsLogService;
 
     @Override
     public Long createInviteCode(InviteCodeSaveReqVO createReqVO) {
@@ -398,6 +402,7 @@ public class InviteCodeServiceImpl implements InviteCodeService {
      * @param inviteCode 邀请码对象
      */
     public void sendInviteCodeSms(InviteCodeDO inviteCode) {
+        inviteCode.setNotifyStatus("0");
         try {
             // 校验手机号是否为空
             if (inviteCode.getOnlyPhone() == null || inviteCode.getOnlyPhone().isEmpty()) {
@@ -415,11 +420,25 @@ public class InviteCodeServiceImpl implements InviteCodeService {
             
             // 发送短信(使用短信模板编码,需要根据实际情况配置)
             // 这里假设模板编码为 "invite_code_notify"
-            smsSendService.sendSingleSmsToAdmin(inviteCode.getOnlyPhone(), null, ALY_MEMBER_PUSH_INVITATION_CODE.getTemplateCode(), templateParams);
-            
+            Long smsLogId = smsSendService.sendSingleSmsToAdmin(inviteCode.getOnlyPhone(), null, ALY_MEMBER_PUSH_INVITATION_CODE.getTemplateCode(), templateParams);
+            if (smsLogId == null) {
+                // 更新通知状态为失败
+                inviteCode.setNotifyStatus("2");
+                inviteCode.setNotifyTime(LocalDateTime.now());
+                return;
+            }
+
+            SmsLogDO smsLog = smsLogService.getSmsLogById(smsLogId);
+            if (smsLog == null) {
+                // 更新通知状态为失败
+                inviteCode.setNotifyStatus("2");
+                inviteCode.setNotifyTime(LocalDateTime.now());
+                return;
+            }
+
             // 更新通知状态为成功
-            inviteCode.setNotifyStatus("1");
-            inviteCode.setNotifyTime(LocalDateTime.now());
+            inviteCode.setNotifyStatus(String.valueOf(smsLog.getSendStatus()));
+            inviteCode.setNotifyTime(smsLog.getSendTime());
         } catch (Exception e) {
             // 更新通知状态为失败
             inviteCode.setNotifyStatus("2");

+ 7 - 0
byzs-module-system/src/main/java/cn/iocoder/byzs/module/system/service/sms/SmsLogService.java

@@ -65,4 +65,11 @@ public interface SmsLogService {
      */
     PageResult<SmsLogDO> getSmsLogPage(SmsLogPageReqVO pageReqVO);
 
+    /**
+     * 获得短信日志详情
+     * @param id 日志编号
+     * @return 短信日志详情
+     */
+    SmsLogDO getSmsLogById(Long id);
+
 }

+ 4 - 0
byzs-module-system/src/main/java/cn/iocoder/byzs/module/system/service/sms/SmsLogServiceImpl.java

@@ -76,4 +76,8 @@ public class SmsLogServiceImpl implements SmsLogService {
         return smsLogMapper.selectPage(pageReqVO);
     }
 
+    @Override
+    public SmsLogDO getSmsLogById(Long id) {
+        return smsLogMapper.selectById(id);
+    }
 }