| | |
| | | import com.mzl.flower.constant.Constants; |
| | | import com.mzl.flower.dto.request.sms.SmsTaskDTO; |
| | | import com.mzl.flower.dto.request.sms.SmsTaskQueryDTO; |
| | | import com.mzl.flower.dto.request.sms.SmsUserDTO; |
| | | import com.mzl.flower.dto.response.sms.SmsSelectVO; |
| | | import com.mzl.flower.dto.response.sms.SmsTaskVO; |
| | | import com.mzl.flower.entity.SmsTaskDO; |
| | | import com.mzl.flower.entity.SmsTaskDetailDO; |
| | |
| | | import com.mzl.flower.mapper.SmsTaskDetailMapper; |
| | | import com.mzl.flower.mapper.SmsTaskMapper; |
| | | import com.mzl.flower.mapper.SmsTemplateMapper; |
| | | import com.mzl.flower.mapper.system.UserMapper; |
| | | import com.mzl.flower.service.sms.SmsTaskDetailService; |
| | | import com.mzl.flower.service.sms.SmsTaskService; |
| | | import com.mzl.flower.service.system.UserService; |
| | | import com.mzl.flower.utils.SmsUtil; |
| | | import lombok.RequiredArgsConstructor; |
| | | import org.apache.poi.ss.usermodel.*; |
| | |
| | | import org.springframework.beans.BeanUtils; |
| | | import org.springframework.stereotype.Service; |
| | | import org.springframework.transaction.annotation.Transactional; |
| | | import org.springframework.util.CollectionUtils; |
| | | import org.springframework.util.StringUtils; |
| | | |
| | | import java.io.File; |
| | |
| | | public class SmsTaskServiceImpl extends ServiceImpl<SmsTaskMapper, SmsTaskDO> implements SmsTaskService { |
| | | private final OssProperties ossProperties; |
| | | private final SmsTaskMapper smsTaskMapper; |
| | | |
| | | private final UserMapper userMapper; |
| | | |
| | | private final SmsTemplateMapper smsTemplateMapper; |
| | | |
| | |
| | | throw new ValidationException("接收号码类型不能为空"); |
| | | } |
| | | |
| | | if ((Constants.SMS_RECEIVE_TYPE.INPUT.name().equals(smsTaskDTO.getType()) || Constants.SMS_RECEIVE_TYPE.SELECT.name().equals(smsTaskDTO.getType())) && StringUtils.isEmpty(smsTaskDTO.getPhones())) { |
| | | if (Constants.SMS_RECEIVE_TYPE.INPUT.name().equals(smsTaskDTO.getType()) && StringUtils.isEmpty(smsTaskDTO.getPhones())) { |
| | | throw new ValidationException("手机号不能为空"); |
| | | } |
| | | |
| | |
| | | throw new ValidationException("导入文件不能为空"); |
| | | } |
| | | |
| | | if (Constants.SMS_RECEIVE_TYPE.INPUT.name().equals(smsTaskDTO.getType()) || Constants.SMS_RECEIVE_TYPE.SELECT.name().equals(smsTaskDTO.getType())) { |
| | | if (Constants.SMS_RECEIVE_TYPE.INPUT.name().equals(smsTaskDTO.getType()) ) { |
| | | |
| | | //解析手机号,包含不同平台的换行符 |
| | | String text = smsTaskDTO.getPhones(); |
| | |
| | | if (Constants.SMS_RECEIVE_TYPE.IMPORT.name().equals(smsTaskDTO.getType())) { |
| | | dealImportExcel(smsTaskDTO); |
| | | } |
| | | List<SmsUserDTO> smsUserDTOS = smsTaskDTO.getSmsUserDTOS(); |
| | | SmsTaskDO smsTaskDO = new SmsTaskDO(); |
| | | BeanUtils.copyProperties(smsTaskDTO, smsTaskDO); |
| | | if(!CollectionUtils.isEmpty(smsUserDTOS)){ |
| | | List<String> userIds = smsUserDTOS.stream() |
| | | .map(SmsUserDTO::getUserId) |
| | | .collect(Collectors.toList()); |
| | | |
| | | List<String> userPhones = smsUserDTOS.stream() |
| | | .map(SmsUserDTO::getUserPhone) |
| | | .collect(Collectors.toList()); |
| | | if(!CollectionUtils.isEmpty(userPhones)){ |
| | | String phones = userPhones.stream() |
| | | .map(Object::toString) // 确保每个元素都转换为字符串 |
| | | .collect(Collectors.joining("\n")); // 使用换行符连接字符串 |
| | | smsTaskDTO.setPhones(phones); // 假设有一个setPhones方法用于设置phones字段 |
| | | } |
| | | if (!CollectionUtils.isEmpty(userIds)) { |
| | | String userIdInfos = userIds.stream().map(Object::toString) // 确保每个元素都转换为字符串 |
| | | .collect(Collectors.joining(";")); // 使用换行符连接字符串 |
| | | smsTaskDO.setUserIds(userIdInfos); |
| | | } |
| | | } |
| | | smsTaskDO.setStatus(Constants.SMS_TASK_STATUS.wait_publish.name()); |
| | | smsTaskDO.setPhones(smsTaskDTO.getPhones()); |
| | | smsTaskDO.create(SecurityUtils.getUserId()); |
| | |
| | | }); |
| | | } |
| | | |
| | | @Override |
| | | public List<SmsSelectVO> getSelectList(Long id) { |
| | | List<SmsSelectVO> smsSelectVOList = null; |
| | | SmsTaskDO smsTaskDO = smsTaskMapper.selectById(id); |
| | | String ids = smsTaskDO.getUserIds(); |
| | | if (StringUtils.isEmpty(ids)) { |
| | | return smsSelectVOList; |
| | | } else { |
| | | String[] idArray = ids.split(";"); |
| | | List<String> idList = Arrays.asList(idArray); |
| | | return userMapper.getSelectList(idList); |
| | | } |
| | | } |
| | | |
| | | private List<SmsTaskDetailDO> createSmsTaskDetails(SmsTaskDO smsTaskDO, List<String> phoneNumbers) { |
| | | return phoneNumbers.stream().map(phone -> { |
| | | SmsTaskDetailDO detail = new SmsTaskDetailDO(); |
| | |
| | | if("OK".equals(sendSmsResponse.getCode())){ |
| | | detail.setResult(Constants.SMS_SEND_RESULT.success.name()); |
| | | }else{ |
| | | detail.setFailReason(sendSmsResponse.getMessage()); |
| | | detail.setResult(Constants.SMS_SEND_RESULT.failure.name()); |
| | | } |
| | | detail.setResponseResult(sendSmsResponse.toString()); |