Browse Source

短信记录代码提交

jingyuanchao 1 year ago
parent
commit
3b5faaef27

+ 14 - 0
soc-common/soc-common-core/src/main/java/com/xunmei/common/core/domain/reminder/dto/ReminderScheduleMsgDto.java

@@ -1,15 +1,29 @@
 package com.xunmei.common.core.domain.reminder.dto;
 
+import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 
 @Data
 public class ReminderScheduleMsgDto {
 
+    @ApiModelProperty(value = "提醒任务id")
     private Long scheduleId;
+
+    @ApiModelProperty(value = "提醒内容")
     private  String msgContent;
 
+    @ApiModelProperty(value = "手机号")
     private String phone;
 
+    @ApiModelProperty(value = "用户id")
+    private String recipientId;
+
+    @ApiModelProperty(value = "用户姓名")
+    private String recipientName;
+    @ApiModelProperty(value = "机构id")
+    private Long orgId;
+    @ApiModelProperty(value = "机构Guid")
     private String orgGuid;
+    private String orgName;
 
 }

+ 15 - 0
soc-common/soc-common-core/src/main/java/com/xunmei/common/core/domain/reminder/vo/ReminderScheduleInfoVo.java

@@ -0,0 +1,15 @@
+package com.xunmei.common.core.domain.reminder.vo;
+
+import com.xunmei.common.core.domain.reminder.domain.CoreReminderSchedule;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+@EqualsAndHashCode(callSuper = true)
+@Data
+public class ReminderScheduleInfoVo extends CoreReminderSchedule {
+
+    private String userName;
+
+
+    private String orgName;
+}

+ 2 - 2
soc-common/soc-common-core/src/main/java/com/xunmei/common/core/domain/sms/domain/SmsSendRecord.java

@@ -37,7 +37,7 @@ public class SmsSendRecord implements Serializable {
 
     @ApiModelProperty(value = "交易类型")
     @TableField("tran_type")
-    private Integer tranType;
+    private String tranType;
 
     @ApiModelProperty(value = "接收机构id")
     @TableField("org_id")
@@ -63,7 +63,7 @@ public class SmsSendRecord implements Serializable {
     @TableField("content_data")
     private String contentData;
 
-    @ApiModelProperty(value = "发送结果")
+    @ApiModelProperty(value = "发送结果",notes = "0:成功,1:失败")
     @TableField("result")
     private String result;
 

+ 3 - 0
soc-modules/soc-modules-core/src/main/java/com/xunmei/core/reminder/mapper/CoreReminderScheduleMapper.java

@@ -2,9 +2,11 @@ package com.xunmei.core.reminder.mapper;
 
 import com.xunmei.common.core.domain.reminder.domain.CoreReminderSchedule;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.xunmei.common.core.domain.reminder.vo.ReminderScheduleInfoVo;
 import com.xunmei.common.core.domain.reminder.vo.ReminderScheduleMsgVo;
 import org.apache.ibatis.annotations.Param;
 
+import java.time.LocalDateTime;
 import java.util.List;
 
 /**
@@ -21,4 +23,5 @@ public interface CoreReminderScheduleMapper extends BaseMapper<CoreReminderSched
 
     void updateScheduleStatus(@Param("list") List<ReminderScheduleMsgVo> sentReminderSms);
 
+    List<ReminderScheduleInfoVo> selectScheduleTask(@Param("time") LocalDateTime time, @Param("status") int status);
 }

+ 9 - 1
soc-modules/soc-modules-core/src/main/java/com/xunmei/core/reminder/service/impl/CoreReminderScheduleServiceImpl.java

@@ -2,6 +2,7 @@ package com.xunmei.core.reminder.service.impl;
 
 import cn.hutool.core.util.ObjectUtil;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.xunmei.common.core.constant.CacheConstants;
 import com.xunmei.common.core.domain.reminder.domain.CoreReminderConfiguration;
 import com.xunmei.common.core.domain.reminder.domain.CoreReminderSchedule;
 import com.xunmei.common.core.domain.reminder.dto.ReminderScheduleMsgDto;
@@ -9,6 +10,7 @@ import com.xunmei.common.core.domain.reminder.vo.ReminderScheduleMsgVo;
 import com.xunmei.common.core.enums.BusinessPlanType;
 import com.xunmei.common.core.enums.TimeUnitEnum;
 import com.xunmei.common.core.thread.ThreadPoolConfig;
+import com.xunmei.common.redis.utils.RedisUtils;
 import com.xunmei.core.drill.service.ICoreDrillTaskService;
 import com.xunmei.core.edu.service.ICoreEduTrainingTaskService;
 import com.xunmei.core.reminder.mapper.CoreReminderScheduleMapper;
@@ -19,6 +21,7 @@ import com.xunmei.core.resumption.task.ResumptionTaskBusiness;
 import com.xunmei.core.retrieval.service.ICoreMonitoringRetrievalTaskService;
 import com.xunmei.core.safetyCheck.service.ICoreSafetyTaskService;
 import com.xunmei.system.api.RemoteSmsService;
+import com.xunmei.system.api.vo.SysOrgVO;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Qualifier;
 import org.springframework.context.annotation.Lazy;
@@ -102,7 +105,8 @@ public class CoreReminderScheduleServiceImpl extends ServiceImpl<CoreReminderSch
         Map<String, List<CoreReminderSchedule>> listMap = list.stream().collect(Collectors.groupingBy(CoreReminderSchedule::getSendModule));
 
         List<ReminderScheduleMsgDto> dtoList = new ArrayList<>();
-
+        List<SysOrgVO> cacheList = RedisUtils.getCacheList(CacheConstants.ORG_CACHE_LIST_KEY);
+        Map<Long, String> orgNameMap = cacheList.stream().collect(Collectors.toMap(SysOrgVO::getId, SysOrgVO::getShortName));
         List<CoreReminderSchedule> reallyScheduleList = new ArrayList<>();
         for (Map.Entry<String, List<CoreReminderSchedule>> entry : listMap.entrySet()) {
             String sendModule = entry.getKey();
@@ -156,7 +160,11 @@ public class CoreReminderScheduleServiceImpl extends ServiceImpl<CoreReminderSch
             ReminderScheduleMsgDto msgDto = new ReminderScheduleMsgDto();
             msgDto.setScheduleId(schedule.getScheduleId());
             msgDto.setPhone(schedule.getRecipient());
+            msgDto.setRecipientId(schedule.getRecipientId().toString());
+            msgDto.setRecipientName(schedule.getRecipientName());
             msgDto.setOrgGuid(schedule.getOrgGuid());
+            msgDto.setOrgId(schedule.getOrgId());
+            msgDto.setOrgName(orgNameMap.get(schedule.getOrgId()));
             msgDto.setMsgContent(getMsgContent(schedule, hashmap));
             schedule.setMsgContent(msgDto.getMsgContent());
             dtoList.add(msgDto);

+ 4 - 0
soc-modules/soc-modules-core/src/main/resources/mapper/reminder/CoreReminderScheduleMapper.xml

@@ -11,4 +11,8 @@
             update core_reminder_schedule set status=#{item.status} where schedule_id=#{scheduleId}
         </foreach>
     </update>
+
+    <select id="selectScheduleTask" resultType="com.xunmei.common.core.domain.reminder.vo.ReminderScheduleInfoVo">
+        select * from core_reminder_schedule s inner join sys_user u on s.recipient_id
+    </select>
 </mapper>

+ 12 - 0
soc-modules/soc-modules-sms/src/main/java/com/xunmei/sms/service/ISmsSendRecordService.java

@@ -1,7 +1,14 @@
 package com.xunmei.sms.service;
 
 import com.baomidou.mybatisplus.extension.service.IService;
+import com.xunmei.common.core.domain.reminder.dto.ReminderScheduleMsgDto;
 import com.xunmei.common.core.domain.sms.domain.SmsSendRecord;
+import com.xunmei.common.core.web.domain.AjaxResult;
+import com.xunmei.system.api.domain.SysOrg;
+import com.xunmei.system.api.domain.SysUser;
+import com.xunmei.system.api.vo.SmsInfoVo;
+
+import java.util.Collection;
 
 /**
  * <p>
@@ -13,4 +20,9 @@ import com.xunmei.common.core.domain.sms.domain.SmsSendRecord;
  */
 public interface ISmsSendRecordService extends IService<SmsSendRecord> {
 
+    void batchSave(Collection<SmsSendRecord> list);
+
+    SmsSendRecord saveSmsRecord(SysOrg sysOrg, SysUser sysUser, AjaxResult result, SmsInfoVo smsInfoVo);
+    SmsSendRecord saveSmsRecord(ReminderScheduleMsgDto msgDto, AjaxResult result, SmsInfoVo smsInfoVo);
+
 }

+ 17 - 4
soc-modules/soc-modules-sms/src/main/java/com/xunmei/sms/service/SmsService.java

@@ -10,6 +10,7 @@ import com.xunmei.common.core.constant.HttpStatus;
 import com.xunmei.common.core.constant.SecurityConstants;
 import com.xunmei.common.core.domain.reminder.dto.ReminderScheduleMsgDto;
 import com.xunmei.common.core.domain.reminder.vo.ReminderScheduleMsgVo;
+import com.xunmei.common.core.domain.sms.domain.SmsSendRecord;
 import com.xunmei.common.core.web.domain.AjaxResult;
 import com.xunmei.sms.utils.SmsUtil;
 import com.xunmei.system.api.RemoteOrgService;
@@ -40,6 +41,9 @@ public class SmsService implements ISmsService {
     @Autowired
     private RemoteOrgService remoteOrgService;
 
+    @Autowired
+    private ISmsSendRecordService recordService;
+
     //告警代码
     private static final String ALARM_CODE="854002";
     //逾期提醒代码
@@ -113,6 +117,7 @@ public class SmsService implements ISmsService {
         String date = DateUtil.format(now, "yyyy-MM-dd");
         String time = DateUtil.format(now, "HH:mm:ss");
         if (ObjectUtil.isNotEmpty(userList)){
+            List<SmsSendRecord> records = new ArrayList<>();
             for (SysUser sysUser : userList) {
                 String phone = sysUser.getPhone();
                 SmsInfoVo smsInfoVo = new SmsInfoVo();
@@ -129,8 +134,10 @@ public class SmsService implements ISmsService {
                 } catch (Exception e) {
                     e.printStackTrace();
                 }
-                 getResult(rspData);
+                AjaxResult result = getResult(rspData);
+                records.add(recordService.saveSmsRecord(sysOrg,sysUser,result,smsInfoVo));
             }
+            recordService.batchSave(records);
         }
     }
 
@@ -144,6 +151,7 @@ public class SmsService implements ISmsService {
         String day = DateUtil.format(now, "yyyy-MM-dd");
         String sfm = DateUtil.format(now, "HH:mm:ss");
         if (ObjectUtil.isNotEmpty(userList)){
+            List<SmsSendRecord> records = new ArrayList<>();
             for (SysUser sysUser : userList) {
                 String phone = sysUser.getPhone();
                 SmsInfoVo smsInfoVo = new SmsInfoVo();
@@ -154,15 +162,18 @@ public class SmsService implements ISmsService {
                 smsInfoVo.setOccurTime(sfm);
                 smsInfoVo.setBak3("任务【"+ content + "】未完成,将于"+date+"逾期。");
                 CompositeData smsCompositeData = SmsUtil.createSmsBody(smsInfoVo,systemCode,systemName,serviceCode,serviceScene);
-                CompositeData rspData = null;//result_description
+                CompositeData rspData = null;
                 try {
                     rspData = ESBClient.request(smsCompositeData);
                 } catch (Exception e) {
                     e.printStackTrace();
                 }
-                getResult(rspData);
+                AjaxResult result = getResult(rspData);
+                records.add(recordService.saveSmsRecord(sysOrg,sysUser,result,smsInfoVo));
             }
+            recordService.batchSave(records);
         }
+
     }
 
     @Override
@@ -171,6 +182,7 @@ public class SmsService implements ISmsService {
         String date = DateUtil.format(now, "yyyy-MM-dd");
         String time = DateUtil.format(now, "HH:mm:ss");
         List<ReminderScheduleMsgVo> returnData = new ArrayList<>();
+        List<SmsSendRecord> records = new ArrayList<>();
         for (ReminderScheduleMsgDto dto : msgDto) {
             SmsInfoVo smsInfoVo = new SmsInfoVo();
             smsInfoVo.setBelongBranchId(dto.getOrgGuid());
@@ -184,7 +196,7 @@ public class SmsService implements ISmsService {
             try {
                 rspData = ESBClient.request(smsCompositeData);
             } catch (Exception e) {
-                e.printStackTrace();
+               logger.error("短信发送时发生异常 :",e);
             }
             AjaxResult result = getResult(rspData);
             if (result.get(AjaxResult.CODE_TAG).equals(String.valueOf(HttpStatus.ERROR))){
@@ -195,6 +207,7 @@ public class SmsService implements ISmsService {
                 msgVo.setScheduleId(dto.getScheduleId());
                 returnData.add(msgVo);
             }
+            records.add(recordService.saveSmsRecord(dto,result,smsInfoVo));
         }
         return returnData;
     }

+ 60 - 1
soc-modules/soc-modules-sms/src/main/java/com/xunmei/sms/service/impl/SmsSendRecordServiceImpl.java

@@ -1,10 +1,23 @@
 package com.xunmei.sms.service.impl;
 
+import cn.hutool.core.util.ObjectUtil;
+import com.baomidou.mybatisplus.core.toolkit.IdWorker;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.xunmei.common.core.constant.HttpStatus;
+import com.xunmei.common.core.domain.reminder.dto.ReminderScheduleMsgDto;
 import com.xunmei.common.core.domain.sms.domain.SmsSendRecord;
+import com.xunmei.common.core.web.domain.AjaxResult;
 import com.xunmei.sms.mapper.SmsSendRecordMapper;
-import org.springframework.stereotype.Service;
 import com.xunmei.sms.service.ISmsSendRecordService;
+import com.xunmei.system.api.domain.SysOrg;
+import com.xunmei.system.api.domain.SysUser;
+import com.xunmei.system.api.vo.SmsInfoVo;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Propagation;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.time.LocalDateTime;
+import java.util.Collection;
 
 /**
  * <p>
@@ -17,4 +30,50 @@ import com.xunmei.sms.service.ISmsSendRecordService;
 @Service
 public class SmsSendRecordServiceImpl extends ServiceImpl<SmsSendRecordMapper, SmsSendRecord> implements ISmsSendRecordService {
 
+
+    @Override
+    @Transactional(propagation = Propagation.REQUIRES_NEW, rollbackFor = Exception.class)
+    public void batchSave(Collection<SmsSendRecord> list) {
+        if (ObjectUtil.isEmpty(list)){
+            return;
+        }
+        for (SmsSendRecord smsSendRecord : list) {
+            baseMapper.insert(smsSendRecord);
+        }
+
+    }
+
+    @Override
+    public SmsSendRecord saveSmsRecord(SysOrg sysOrg, SysUser sysUser, AjaxResult result, SmsInfoVo smsInfoVo) {
+        SmsSendRecord record = new SmsSendRecord();
+        record.setId(IdWorker.getId());
+        record.setTime(LocalDateTime.now());
+        record.setTranType(smsInfoVo.getTranType());
+        record.setOrgId(sysOrg.getId());
+        record.setOrgName(sysOrg.getShortName());
+        record.setUserId(sysUser.getId());
+        record.setUserName(sysUser.getName());
+        record.setUserPhone(smsInfoVo.getMobile());
+        record.setContentData(smsInfoVo.getBak3());
+        record.setResult(result.get(AjaxResult.CODE_TAG).equals(String.valueOf(HttpStatus.SUCCESS)) ? "0" : "1");
+        record.setResultDescription(result.get(AjaxResult.MSG_TAG).toString());
+        return record;
+    }
+
+    @Override
+    public SmsSendRecord saveSmsRecord(ReminderScheduleMsgDto msgDto, AjaxResult result, SmsInfoVo smsInfoVo) {
+        SmsSendRecord record = new SmsSendRecord();
+        record.setId(IdWorker.getId());
+        record.setTime(LocalDateTime.now());
+        record.setTranType(smsInfoVo.getTranType());
+        record.setOrgId(msgDto.getOrgId());
+        record.setOrgName(msgDto.getOrgName());
+        record.setUserId(Long.valueOf(msgDto.getRecipientId()));
+        record.setUserName(msgDto.getRecipientName());
+        record.setUserPhone(smsInfoVo.getMobile());
+        record.setContentData(smsInfoVo.getBak3());
+        record.setResult(result.get(AjaxResult.CODE_TAG).equals(String.valueOf(HttpStatus.SUCCESS)) ? "0" : "1");
+        record.setResultDescription(result.get(AjaxResult.MSG_TAG).toString());
+        return record;
+    }
 }