package com.pollex.pam.service; import com.fasterxml.jackson.core.JsonProcessingException; import com.pollex.pam.config.ApplicationProperties; import com.pollex.pam.service.dto.SMSDetail; import com.pollex.pam.service.dto.SendSMSRequest; import com.pollex.pam.service.dto.SendSMSResponse; import com.pollex.pam.service.util.HttpRequestUtil; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.HttpStatus; import org.springframework.http.ResponseEntity; import org.springframework.stereotype.Service; import java.nio.charset.StandardCharsets; import java.security.KeyManagementException; import java.security.KeyStoreException; import java.security.NoSuchAlgorithmException; import java.time.LocalDateTime; import java.time.format.DateTimeFormatter; import java.util.Base64; import java.util.Base64.Encoder; import java.util.Collections; import java.util.UUID; @Service public class SendMsgService { private final static Logger log = LoggerFactory.getLogger(SendMsgService.class); private final Encoder encoder = Base64.getEncoder(); @Autowired ApplicationProperties applicationProperties; public SendSMSResponse sendMsgBySMS(String subject, String toMobile, String content) throws Exception{ final String SMS_URL = applicationProperties.getSms().getUrl(); SendSMSRequest sendSMSRequest = new SendSMSRequest(); sendSMSRequest.setpKey(UUID.randomUUID().toString()); sendSMSRequest.setSourceCode(applicationProperties.getSms().getSourceCode()); sendSMSRequest.setSender(applicationProperties.getSms().getSender()); sendSMSRequest.setMsgTypeSet(applicationProperties.getSms().getSmsType()); sendSMSRequest.setSendTime(LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:00"))); sendSMSRequest.setSubject(subject); sendSMSRequest.setActivityId(""); SMSDetail smsDetail = new SMSDetail(); smsDetail.setMobile(toMobile); smsDetail.setContent(encoder.encodeToString(content.getBytes(StandardCharsets.UTF_8))); sendSMSRequest.setDetail(Collections.singletonList(smsDetail)); ResponseEntity responseEntity = HttpRequestUtil.postWithJson(SMS_URL, sendSMSRequest, SendSMSResponse.class); return responseEntity.getBody(); } }