MMS, 알림톡, 친구톡 기능 추가
This commit is contained in:
parent
2679d17629
commit
aa4fc21692
@ -1,5 +1,6 @@
|
||||
package com.munjaon.server.config;
|
||||
|
||||
import com.zaxxer.hikari.HikariDataSource;
|
||||
import org.apache.ibatis.session.SqlSessionFactory;
|
||||
import org.mybatis.spring.SqlSessionFactoryBean;
|
||||
import org.mybatis.spring.SqlSessionTemplate;
|
||||
@ -28,7 +29,7 @@ public class DataSourceConfig {
|
||||
@Bean(name = "datasource")
|
||||
@ConfigurationProperties(prefix = "spring.datasource.server")
|
||||
public DataSource dataSource() {
|
||||
return DataSourceBuilder.create().build();
|
||||
return DataSourceBuilder.create().type(HikariDataSource.class).build();
|
||||
}
|
||||
|
||||
@Primary
|
||||
|
||||
@ -118,6 +118,60 @@ public class RunnerConfiguration {
|
||||
return args -> System.out.println("Runner Bean #2");
|
||||
}
|
||||
|
||||
@Bean
|
||||
@Order(2)
|
||||
public CommandLineRunner getRunnerBeanForKatQueue() {
|
||||
try {
|
||||
String[] svcArray = ServiceUtil.getServiceNames(serverConfig.getStringArray("KAT.SERVICE_LIST"));
|
||||
if (svcArray == null || svcArray.length == 0) {
|
||||
log.info("KAT service list is empty");
|
||||
} else {
|
||||
if (ServiceUtil.isDuplicate(svcArray)) {
|
||||
log.info("KAT service list is duplicated");
|
||||
} else {
|
||||
for (String svc : svcArray) {
|
||||
log.info("SERVICE CREATE : {}", svc);
|
||||
QueueInfo queueInfo = QueueInfo.builder().queueName(svc).serviceType("KAT").queuePath(serverConfig.getString("KAT.QUEUE_PATH")).build();
|
||||
KakaoAlarmWriteQueue katWriteQueue = new KakaoAlarmWriteQueue(queueInfo);
|
||||
KakaoAlarmReadQueue katReadQueue = new KakaoAlarmReadQueue(queueInfo);
|
||||
QueueServerService queueServerService = new QueueServerService(svc, katWriteQueue, katReadQueue);
|
||||
queueServerService.start();
|
||||
}
|
||||
}
|
||||
}
|
||||
} catch (Exception e) {
|
||||
throw new RuntimeException(e);
|
||||
}
|
||||
return args -> System.out.println("Runner Bean #2");
|
||||
}
|
||||
|
||||
@Bean
|
||||
@Order(2)
|
||||
public CommandLineRunner getRunnerBeanForKftQueue() {
|
||||
try {
|
||||
String[] svcArray = ServiceUtil.getServiceNames(serverConfig.getStringArray("KFT.SERVICE_LIST"));
|
||||
if (svcArray == null || svcArray.length == 0) {
|
||||
log.info("KFT service list is empty");
|
||||
} else {
|
||||
if (ServiceUtil.isDuplicate(svcArray)) {
|
||||
log.info("KFT service list is duplicated");
|
||||
} else {
|
||||
for (String svc : svcArray) {
|
||||
log.info("SERVICE CREATE : {}", svc);
|
||||
QueueInfo queueInfo = QueueInfo.builder().queueName(svc).serviceType("KFT").queuePath(serverConfig.getString("KFT.QUEUE_PATH")).build();
|
||||
KakaoFriendWriteQueue kftWriteQueue = new KakaoFriendWriteQueue(queueInfo);
|
||||
KakaoFriendReadQueue kftReadQueue = new KakaoFriendReadQueue(queueInfo);
|
||||
QueueServerService queueServerService = new QueueServerService(svc, kftWriteQueue, kftReadQueue);
|
||||
queueServerService.start();
|
||||
}
|
||||
}
|
||||
}
|
||||
} catch (Exception e) {
|
||||
throw new RuntimeException(e);
|
||||
}
|
||||
return args -> System.out.println("Runner Bean #2");
|
||||
}
|
||||
|
||||
@Bean
|
||||
@Order(3)
|
||||
public CommandLineRunner getRunnerBeanForSmsCollector() {
|
||||
@ -150,6 +204,54 @@ public class RunnerConfiguration {
|
||||
return args -> System.out.println("Runner Bean SmsCollector #3");
|
||||
}
|
||||
|
||||
@Bean
|
||||
@Order(3)
|
||||
public CommandLineRunner getRunnerBeanForMmsCollector() {
|
||||
try {
|
||||
String serviceName = "MMS_COLLECTOR";
|
||||
String serviceType = serverConfig.getString(serviceName + ".SERVICE_TYPE");
|
||||
int port = serverConfig.getInt(serviceName + ".SERVICE_PORT");
|
||||
// CollectBackServerService collectServerService = new CollectBackServerService(serviceName, serviceType, port);
|
||||
CollectServerService collectServerService = new CollectServerService(serviceName, serviceType, port);
|
||||
collectServerService.start();
|
||||
} catch (Exception e) {
|
||||
throw new RuntimeException(e);
|
||||
}
|
||||
return args -> System.out.println("Runner Bean SmsCollector #3");
|
||||
}
|
||||
|
||||
@Bean
|
||||
@Order(3)
|
||||
public CommandLineRunner getRunnerBeanForKatCollector() {
|
||||
try {
|
||||
String serviceName = "KAT_COLLECTOR";
|
||||
String serviceType = serverConfig.getString(serviceName + ".SERVICE_TYPE");
|
||||
int port = serverConfig.getInt(serviceName + ".SERVICE_PORT");
|
||||
// CollectBackServerService collectServerService = new CollectBackServerService(serviceName, serviceType, port);
|
||||
CollectServerService collectServerService = new CollectServerService(serviceName, serviceType, port);
|
||||
collectServerService.start();
|
||||
} catch (Exception e) {
|
||||
throw new RuntimeException(e);
|
||||
}
|
||||
return args -> System.out.println("Runner Bean SmsCollector #3");
|
||||
}
|
||||
|
||||
@Bean
|
||||
@Order(3)
|
||||
public CommandLineRunner getRunnerBeanForKftCollector() {
|
||||
try {
|
||||
String serviceName = "KFT_COLLECTOR";
|
||||
String serviceType = serverConfig.getString(serviceName + ".SERVICE_TYPE");
|
||||
int port = serverConfig.getInt(serviceName + ".SERVICE_PORT");
|
||||
// CollectBackServerService collectServerService = new CollectBackServerService(serviceName, serviceType, port);
|
||||
CollectServerService collectServerService = new CollectServerService(serviceName, serviceType, port);
|
||||
collectServerService.start();
|
||||
} catch (Exception e) {
|
||||
throw new RuntimeException(e);
|
||||
}
|
||||
return args -> System.out.println("Runner Bean SmsCollector #3");
|
||||
}
|
||||
|
||||
@Bean
|
||||
@Order(3)
|
||||
public CommandLineRunner getRunnerBeanForReporter() {
|
||||
|
||||
@ -21,11 +21,13 @@ public enum ServiceCode {
|
||||
/* SMS 메시지 */
|
||||
MSG_ERROR_SMS_MESSAGE(400, "SMS Message is Null OR is Over Limit Byte"),
|
||||
|
||||
/* LMS, MMS 제목, 메시지 */
|
||||
MSG_ERROR_MEDIA_SUBJECT(500, "LMS, MMS Subject is Null OR is Over Limit Byte"),
|
||||
MSG_ERROR_MEDIA_MESSAGE(501, "LMS, MMS Message is Null OR is Over Limit Byte"),
|
||||
/* LMS, MMS, KAKAO 제목, 메시지 */
|
||||
MSG_ERROR_MEDIA_SUBJECT(500, "LMS, MMS, KAKAO Subject is Null OR is Over Limit Byte"),
|
||||
MSG_ERROR_MEDIA_MESSAGE(501, "LMS, MMS, KAKAO Message is Null OR is Over Limit Byte"),
|
||||
|
||||
/* 카카오 알림톡, 친구톡 메시지 */
|
||||
/* 카카오 알림톡, 친구톡 메시지, KAKAO_SENDER_KEY, KAKAO_TEMPLATE_CODE */
|
||||
MSG_ERROR_KAKAO_SENDER_KEY(600, "KAKAO_SENDER_KEY is Null OR is Over Limit Byte"),
|
||||
MSG_ERROR_KAKAO_TEMPLATE_CODE(601, "KAKAO_TEMPLATE_CODE is Null OR is Over Limit Byte"),
|
||||
|
||||
/* 리포트 관련 에러 메시지 */
|
||||
MSG_ERROR_REPORT(800, "REPORT DATA is Null OR is invalid"),
|
||||
|
||||
@ -0,0 +1,22 @@
|
||||
package com.munjaon.server.queue.config;
|
||||
|
||||
public final class KakaoBodyConfig {
|
||||
/* 제목 (Length : 60 / Position : 161) */
|
||||
public static final int SUBJECT_BYTE_LENGTH = 60;
|
||||
public static final int SUBJECT_BYTE_POSITION = BodyCommonConfig.AGENT_CODE_BYTE_POSITION + BodyCommonConfig.AGENT_CODE_BYTE_LENGTH;
|
||||
/* LMS/MMS Message (Length : 2000 / Position : 221) */
|
||||
public static final int MEDIA_MSG_BYTE_LENGTH = 2000;
|
||||
public static final int MEDIA_MSG_BYTE_POSITION = SUBJECT_BYTE_POSITION + SUBJECT_BYTE_LENGTH;
|
||||
/* KAKAO_SENDER_KEY (Length : 40 / Position : 2221) */
|
||||
public static final int KAKAO_SENDER_KEY_BYTE_LENGTH = 40;
|
||||
public static final int KAKAO_SENDER_KEY_BYTE_POSITION = MEDIA_MSG_BYTE_POSITION + MEDIA_MSG_BYTE_LENGTH;
|
||||
/* KAKAO_TEMPLATE_CODE (Length : 64 / Position : 2261) */
|
||||
public static final int KAKAO_TEMPLATE_CODE_BYTE_LENGTH = 64;
|
||||
public static final int KAKAO_TEMPLATE_CODE_BYTE_POSITION = KAKAO_SENDER_KEY_BYTE_POSITION + KAKAO_SENDER_KEY_BYTE_LENGTH;
|
||||
/* JSON 파일 (Length : 128 / Position : 2222) */
|
||||
public static final int FILENAME_JSON_BYTE_LENGTH = 128;
|
||||
public static final int FILENAME_JSON_BYTE_POSITION = KAKAO_TEMPLATE_CODE_BYTE_POSITION + KAKAO_TEMPLATE_CODE_BYTE_LENGTH;
|
||||
|
||||
/* KAKAO Body 길이 */
|
||||
public static final int KAKAO_SUM_BYTE_LENGTH = BodyCommonConfig.COMMON_SUM_BYTE_LENGTH + SUBJECT_BYTE_LENGTH + MEDIA_MSG_BYTE_LENGTH + KAKAO_SENDER_KEY_BYTE_LENGTH + KAKAO_TEMPLATE_CODE_BYTE_LENGTH + FILENAME_JSON_BYTE_LENGTH;
|
||||
}
|
||||
@ -76,5 +76,31 @@ public final class QueueConstants {
|
||||
public static final int REPORT_TELECOM_LENGTH = 7;
|
||||
|
||||
// 큐에 저장하기전에 바이트를 채울 문자
|
||||
public static final byte SET_DEFAULT_BYTE = (byte) 0x20;
|
||||
public static final byte SET_DEFAULT_BYTE = (byte) 0x00;
|
||||
|
||||
public static String getString(byte[] srcArray) {
|
||||
if (srcArray == null) {
|
||||
return null;
|
||||
}
|
||||
int size = 0;
|
||||
for (int i = 0, len = srcArray.length; i < len; i++) {
|
||||
if (srcArray[i] == SET_DEFAULT_BYTE) {
|
||||
continue;
|
||||
}
|
||||
size++;
|
||||
}
|
||||
byte[] destArray = null;
|
||||
if (size > 0) {
|
||||
destArray = new byte[size];
|
||||
int index = 0;
|
||||
for (int i = 0, len = srcArray.length; i < len; i++) {
|
||||
if (srcArray[i] == SET_DEFAULT_BYTE) {
|
||||
continue;
|
||||
}
|
||||
destArray[index++] = srcArray[i];
|
||||
}
|
||||
}
|
||||
|
||||
return destArray == null ? null : new String(destArray);
|
||||
}
|
||||
}
|
||||
|
||||
@ -35,4 +35,8 @@ public class BasicMessageDto {
|
||||
protected int userFileSize01 = 0;
|
||||
protected int userFileSize02 = 0;
|
||||
protected int userFileSize03 = 0;
|
||||
|
||||
private String kakaoSenderKey;
|
||||
private String kakaoTemplateCode;
|
||||
private String kakaoJsonFile;
|
||||
}
|
||||
|
||||
@ -0,0 +1,9 @@
|
||||
package com.munjaon.server.queue.mapper;
|
||||
|
||||
import com.munjaon.server.queue.dto.BasicMessageDto;
|
||||
import org.apache.ibatis.annotations.Mapper;
|
||||
|
||||
@Mapper
|
||||
public interface KatMapper {
|
||||
int insert(BasicMessageDto messageDto);
|
||||
}
|
||||
@ -0,0 +1,9 @@
|
||||
package com.munjaon.server.queue.mapper;
|
||||
|
||||
import com.munjaon.server.queue.dto.BasicMessageDto;
|
||||
import org.apache.ibatis.annotations.Mapper;
|
||||
|
||||
@Mapper
|
||||
public interface KftMapper {
|
||||
int insert(BasicMessageDto messageDto);
|
||||
}
|
||||
@ -1,7 +1,9 @@
|
||||
package com.munjaon.server.queue.mapper;
|
||||
|
||||
import com.munjaon.server.queue.dto.BasicMessageDto;
|
||||
import org.apache.ibatis.annotations.Mapper;
|
||||
|
||||
@Mapper
|
||||
public interface LmsMapper {
|
||||
int insert(BasicMessageDto messageDto);
|
||||
}
|
||||
|
||||
@ -0,0 +1,9 @@
|
||||
package com.munjaon.server.queue.mapper;
|
||||
|
||||
import com.munjaon.server.queue.dto.BasicMessageDto;
|
||||
import org.apache.ibatis.annotations.Mapper;
|
||||
|
||||
@Mapper
|
||||
public interface MmsMapper {
|
||||
int insert(BasicMessageDto messageDto);
|
||||
}
|
||||
@ -6,7 +6,7 @@ public class KakaoAlarmQueuePool extends QueuePool {
|
||||
|
||||
private KakaoAlarmQueuePool() {}
|
||||
|
||||
public synchronized static KakaoAlarmQueuePool getInstance(){
|
||||
public synchronized static KakaoAlarmQueuePool getInstance() {
|
||||
if(queueInstance == null){
|
||||
queueInstance = new KakaoAlarmQueuePool();
|
||||
}
|
||||
|
||||
@ -0,0 +1,39 @@
|
||||
package com.munjaon.server.queue.pool;
|
||||
|
||||
import com.munjaon.server.queue.config.KakaoBodyConfig;
|
||||
import com.munjaon.server.queue.config.QueueConstants;
|
||||
import com.munjaon.server.queue.dto.BasicMessageDto;
|
||||
import com.munjaon.server.queue.dto.QueueInfo;
|
||||
import com.munjaon.server.util.MessageUtil;
|
||||
|
||||
import java.nio.ByteBuffer;
|
||||
|
||||
public class KakaoAlarmReadQueue extends ReadQueue {
|
||||
public KakaoAlarmReadQueue(QueueInfo queueInfo) throws Exception {
|
||||
this.queueInfo = queueInfo;
|
||||
// initQueue();
|
||||
}
|
||||
|
||||
@Override
|
||||
void popBuffer() throws Exception {
|
||||
this.channel.position(MessageUtil.calcReadPosition(this.popCounter, KakaoBodyConfig.KAKAO_SUM_BYTE_LENGTH));
|
||||
this.channel.read(this.dataBuffer);
|
||||
}
|
||||
|
||||
@Override
|
||||
void getBytesForExtendMessage(BasicMessageDto messageDto) {
|
||||
MessageUtil.getBytesForKakaoMessage(this.dataBuffer, messageDto);
|
||||
}
|
||||
|
||||
@Override
|
||||
void initDataBuffer() {
|
||||
if (this.dataBuffer == null) {
|
||||
this.dataBuffer = ByteBuffer.allocateDirect(KakaoBodyConfig.KAKAO_SUM_BYTE_LENGTH);
|
||||
}
|
||||
this.dataBuffer.clear();
|
||||
for(int loopCnt = 0; loopCnt < KakaoBodyConfig.KAKAO_SUM_BYTE_LENGTH; loopCnt++){
|
||||
this.dataBuffer.put(QueueConstants.SET_DEFAULT_BYTE);
|
||||
}
|
||||
this.dataBuffer.position(0);
|
||||
}
|
||||
}
|
||||
@ -1,21 +1,75 @@
|
||||
package com.munjaon.server.queue.pool;
|
||||
|
||||
import com.munjaon.server.config.ServiceCode;
|
||||
import com.munjaon.server.queue.config.KakaoBodyConfig;
|
||||
import com.munjaon.server.queue.config.QueueConstants;
|
||||
import com.munjaon.server.queue.dto.BasicMessageDto;
|
||||
import com.munjaon.server.queue.dto.QueueInfo;
|
||||
import com.munjaon.server.util.MessageUtil;
|
||||
|
||||
import java.nio.ByteBuffer;
|
||||
|
||||
public class KakaoAlarmWriteQueue extends WriteQueue {
|
||||
public KakaoAlarmWriteQueue(QueueInfo queueInfo) throws Exception {
|
||||
this.queueInfo = queueInfo;
|
||||
/* 큐초기화 */
|
||||
// initQueue();
|
||||
}
|
||||
|
||||
@Override
|
||||
public int isValidateMessageForExtend(BasicMessageDto messageDto) {
|
||||
return 0;
|
||||
/* 13. 제목 */
|
||||
if (MessageUtil.isEmptyForMessage(messageDto.getUserSubject(), true) || MessageUtil.isOverByteForMessage(messageDto.getUserSubject(), KakaoBodyConfig.SUBJECT_BYTE_LENGTH, false)) {
|
||||
return ServiceCode.MSG_ERROR_MEDIA_SUBJECT.getCode();
|
||||
}
|
||||
/* 14. 메시지 */
|
||||
if (MessageUtil.isEmptyForMessage(messageDto.getUserMessage(), true) || MessageUtil.isOverByteForMessage(messageDto.getUserMessage(), KakaoBodyConfig.MEDIA_MSG_BYTE_LENGTH, false)) {
|
||||
return ServiceCode.MSG_ERROR_MEDIA_MESSAGE.getCode();
|
||||
}
|
||||
/* 15. KAKAO_SENDER_KEY */
|
||||
if (MessageUtil.isEmptyForMessage(messageDto.getKakaoSenderKey(), true) || MessageUtil.isOverByteForMessage(messageDto.getKakaoSenderKey(), KakaoBodyConfig.KAKAO_SENDER_KEY_BYTE_LENGTH, false)) {
|
||||
return ServiceCode.MSG_ERROR_MEDIA_MESSAGE.getCode();
|
||||
}
|
||||
/* 16. KAKAO_TEMPLATE_CODE */
|
||||
if (MessageUtil.isEmptyForMessage(messageDto.getKakaoTemplateCode(), true) || MessageUtil.isOverByteForMessage(messageDto.getKakaoTemplateCode(), KakaoBodyConfig.KAKAO_TEMPLATE_CODE_BYTE_LENGTH, false)) {
|
||||
return ServiceCode.MSG_ERROR_MEDIA_MESSAGE.getCode();
|
||||
}
|
||||
|
||||
return ServiceCode.OK.getCode();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void pushMessageToBuffer(BasicMessageDto messageDto) throws Exception {
|
||||
|
||||
if (isValidateMessage(messageDto) == ServiceCode.OK.getCode()) {
|
||||
/* 1. dataBuffer 초기화 */
|
||||
initDataBuffer();
|
||||
/* 2. messageDto >> dataBuffer */
|
||||
MessageUtil.setBytesForCommonMessage(this.dataBuffer, messageDto);
|
||||
MessageUtil.setBytesForKakaoMessage(this.dataBuffer, messageDto);
|
||||
/* 3. 파일큐에 적재 */
|
||||
/* 3.1 Header 정보 다시 일기 */
|
||||
readHeader();
|
||||
if (this.dataBuffer != null){
|
||||
this.channel.position(MessageUtil.calcWritePosition(this.pushCounter, KakaoBodyConfig.KAKAO_SUM_BYTE_LENGTH));
|
||||
this.dataBuffer.flip();
|
||||
this.channel.write(this.dataBuffer);
|
||||
/* 3.2 Push 카운터 증가 */
|
||||
this.pushCounter = this.pushCounter + 1;
|
||||
/* 3.3 Header 정보 변경 */
|
||||
writeHeader();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void initDataBuffer() {
|
||||
|
||||
if (this.dataBuffer == null) {
|
||||
this.dataBuffer = ByteBuffer.allocateDirect(KakaoBodyConfig.KAKAO_SUM_BYTE_LENGTH);
|
||||
}
|
||||
this.dataBuffer.clear();
|
||||
for(int loopCnt = 0; loopCnt < KakaoBodyConfig.KAKAO_SUM_BYTE_LENGTH; loopCnt++){
|
||||
this.dataBuffer.put(QueueConstants.SET_DEFAULT_BYTE);
|
||||
}
|
||||
this.dataBuffer.position(0);
|
||||
}
|
||||
}
|
||||
|
||||
@ -0,0 +1,39 @@
|
||||
package com.munjaon.server.queue.pool;
|
||||
|
||||
import com.munjaon.server.queue.config.KakaoBodyConfig;
|
||||
import com.munjaon.server.queue.config.QueueConstants;
|
||||
import com.munjaon.server.queue.dto.BasicMessageDto;
|
||||
import com.munjaon.server.queue.dto.QueueInfo;
|
||||
import com.munjaon.server.util.MessageUtil;
|
||||
|
||||
import java.nio.ByteBuffer;
|
||||
|
||||
public class KakaoFriendReadQueue extends ReadQueue {
|
||||
public KakaoFriendReadQueue(QueueInfo queueInfo) throws Exception {
|
||||
this.queueInfo = queueInfo;
|
||||
// initQueue();
|
||||
}
|
||||
|
||||
@Override
|
||||
void popBuffer() throws Exception {
|
||||
this.channel.position(MessageUtil.calcReadPosition(this.popCounter, KakaoBodyConfig.KAKAO_SUM_BYTE_LENGTH));
|
||||
this.channel.read(this.dataBuffer);
|
||||
}
|
||||
|
||||
@Override
|
||||
void getBytesForExtendMessage(BasicMessageDto messageDto) {
|
||||
MessageUtil.getBytesForKakaoMessage(this.dataBuffer, messageDto);
|
||||
}
|
||||
|
||||
@Override
|
||||
void initDataBuffer() {
|
||||
if (this.dataBuffer == null) {
|
||||
this.dataBuffer = ByteBuffer.allocateDirect(KakaoBodyConfig.KAKAO_SUM_BYTE_LENGTH);
|
||||
}
|
||||
this.dataBuffer.clear();
|
||||
for(int loopCnt = 0; loopCnt < KakaoBodyConfig.KAKAO_SUM_BYTE_LENGTH; loopCnt++){
|
||||
this.dataBuffer.put(QueueConstants.SET_DEFAULT_BYTE);
|
||||
}
|
||||
this.dataBuffer.position(0);
|
||||
}
|
||||
}
|
||||
@ -1,20 +1,75 @@
|
||||
package com.munjaon.server.queue.pool;
|
||||
|
||||
import com.munjaon.server.config.ServiceCode;
|
||||
import com.munjaon.server.queue.config.KakaoBodyConfig;
|
||||
import com.munjaon.server.queue.config.QueueConstants;
|
||||
import com.munjaon.server.queue.dto.BasicMessageDto;
|
||||
import com.munjaon.server.queue.dto.QueueInfo;
|
||||
import com.munjaon.server.util.MessageUtil;
|
||||
|
||||
import java.nio.ByteBuffer;
|
||||
|
||||
public class KakaoFriendWriteQueue extends WriteQueue {
|
||||
public KakaoFriendWriteQueue(QueueInfo queueInfo) throws Exception {
|
||||
this.queueInfo = queueInfo;
|
||||
/* 큐초기화 */
|
||||
// initQueue();
|
||||
}
|
||||
|
||||
@Override
|
||||
public int isValidateMessageForExtend(BasicMessageDto messageDto) {
|
||||
return 0;
|
||||
/* 13. 제목 */
|
||||
if (MessageUtil.isEmptyForMessage(messageDto.getUserSubject(), true) || MessageUtil.isOverByteForMessage(messageDto.getUserSubject(), KakaoBodyConfig.SUBJECT_BYTE_LENGTH, false)) {
|
||||
return ServiceCode.MSG_ERROR_MEDIA_SUBJECT.getCode();
|
||||
}
|
||||
/* 14. 메시지 */
|
||||
if (MessageUtil.isEmptyForMessage(messageDto.getUserMessage(), true) || MessageUtil.isOverByteForMessage(messageDto.getUserMessage(), KakaoBodyConfig.MEDIA_MSG_BYTE_LENGTH, false)) {
|
||||
return ServiceCode.MSG_ERROR_MEDIA_MESSAGE.getCode();
|
||||
}
|
||||
/* 15. KAKAO_SENDER_KEY */
|
||||
if (MessageUtil.isEmptyForMessage(messageDto.getKakaoSenderKey(), true) || MessageUtil.isOverByteForMessage(messageDto.getKakaoSenderKey(), KakaoBodyConfig.KAKAO_SENDER_KEY_BYTE_LENGTH, false)) {
|
||||
return ServiceCode.MSG_ERROR_MEDIA_MESSAGE.getCode();
|
||||
}
|
||||
/* 16. KAKAO_TEMPLATE_CODE */
|
||||
if (MessageUtil.isEmptyForMessage(messageDto.getKakaoTemplateCode(), true) || MessageUtil.isOverByteForMessage(messageDto.getKakaoTemplateCode(), KakaoBodyConfig.KAKAO_TEMPLATE_CODE_BYTE_LENGTH, false)) {
|
||||
return ServiceCode.MSG_ERROR_MEDIA_MESSAGE.getCode();
|
||||
}
|
||||
|
||||
return ServiceCode.OK.getCode();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void pushMessageToBuffer(BasicMessageDto messageDto) throws Exception {
|
||||
|
||||
if (isValidateMessage(messageDto) == ServiceCode.OK.getCode()) {
|
||||
/* 1. dataBuffer 초기화 */
|
||||
initDataBuffer();
|
||||
/* 2. messageDto >> dataBuffer */
|
||||
MessageUtil.setBytesForCommonMessage(this.dataBuffer, messageDto);
|
||||
MessageUtil.setBytesForKakaoMessage(this.dataBuffer, messageDto);
|
||||
/* 3. 파일큐에 적재 */
|
||||
/* 3.1 Header 정보 다시 일기 */
|
||||
readHeader();
|
||||
if (this.dataBuffer != null){
|
||||
this.channel.position(MessageUtil.calcWritePosition(this.pushCounter, KakaoBodyConfig.KAKAO_SUM_BYTE_LENGTH));
|
||||
this.dataBuffer.flip();
|
||||
this.channel.write(this.dataBuffer);
|
||||
/* 3.2 Push 카운터 증가 */
|
||||
this.pushCounter = this.pushCounter + 1;
|
||||
/* 3.3 Header 정보 변경 */
|
||||
writeHeader();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void initDataBuffer() {
|
||||
|
||||
if (this.dataBuffer == null) {
|
||||
this.dataBuffer = ByteBuffer.allocateDirect(KakaoBodyConfig.KAKAO_SUM_BYTE_LENGTH);
|
||||
}
|
||||
this.dataBuffer.clear();
|
||||
for(int loopCnt = 0; loopCnt < KakaoBodyConfig.KAKAO_SUM_BYTE_LENGTH; loopCnt++){
|
||||
this.dataBuffer.put(QueueConstants.SET_DEFAULT_BYTE);
|
||||
}
|
||||
this.dataBuffer.position(0);
|
||||
}
|
||||
}
|
||||
|
||||
@ -150,12 +150,12 @@ public abstract class ReadQueue {
|
||||
// 생성날짜 가져오기 - 생성날짜(10) / 읽은카운트(10) / 쓴카운트(10)
|
||||
this.headerBuffer.position(QueueHeaderConfig.CREATE_DATE_POSITION);
|
||||
this.headerBuffer.get(this.headerArray);
|
||||
this.createDate = (new String(this.headerArray)).trim();
|
||||
this.createDate = QueueConstants.getString(this.headerArray);
|
||||
// 쓴 카운트 가져오기
|
||||
this.headerArray = new byte[QueueHeaderConfig.PUSH_COUNT_LENGTH];
|
||||
this.headerBuffer.position(QueueHeaderConfig.PUSH_COUNT_POSITION);
|
||||
this.headerBuffer.get(this.headerArray);
|
||||
this.pushCounter = Integer.parseInt((new String(this.headerArray)).trim());
|
||||
this.pushCounter = Integer.parseInt(QueueConstants.getString(this.headerArray));
|
||||
} catch(Exception e) {
|
||||
throw e;
|
||||
}
|
||||
|
||||
@ -93,12 +93,12 @@ public abstract class WriteQueue {
|
||||
// 생성날짜 가져오기 - 생성날짜(10) / 읽은카운트(10) / 쓴카운트(10)
|
||||
this.headerBuffer.position(QueueHeaderConfig.CREATE_DATE_POSITION);
|
||||
this.headerBuffer.get(this.headerArray);
|
||||
this.createDate = (new String(this.headerArray)).trim();
|
||||
this.createDate = QueueConstants.getString(this.headerArray);
|
||||
// 쓴 카운트 가져오기
|
||||
this.headerArray = new byte[QueueHeaderConfig.PUSH_COUNT_LENGTH];
|
||||
this.headerBuffer.position(QueueHeaderConfig.PUSH_COUNT_POSITION);
|
||||
this.headerBuffer.get(this.headerArray);
|
||||
this.pushCounter = Integer.parseInt((new String(this.headerArray)).trim());
|
||||
this.pushCounter = Integer.parseInt(QueueConstants.getString(this.headerArray));
|
||||
} catch(Exception e) {
|
||||
throw e;
|
||||
}
|
||||
|
||||
@ -1,7 +1,10 @@
|
||||
package com.munjaon.server.queue.service;
|
||||
|
||||
import com.munjaon.server.cache.service.SerialNoService;
|
||||
import com.munjaon.server.queue.dto.BasicMessageDto;
|
||||
import com.munjaon.server.queue.mapper.KatMapper;
|
||||
import com.munjaon.server.queue.pool.KakaoAlarmMemoryQueue;
|
||||
import com.munjaon.server.queue.pool.KakaoAlarmQueuePool;
|
||||
import com.munjaon.server.queue.pool.WriteQueue;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
@ -11,36 +14,53 @@ import org.springframework.stereotype.Service;
|
||||
@Service
|
||||
@RequiredArgsConstructor
|
||||
public class KakaoAlarmQueueService implements QueueAction {
|
||||
private final KatMapper katMapper;
|
||||
private final KakaoAlarmQueuePool queueInstance = KakaoAlarmQueuePool.getInstance();
|
||||
private final KakaoAlarmMemoryQueue memoryQueue = KakaoAlarmMemoryQueue.getInstance();
|
||||
private final SerialNoService serialNoService;
|
||||
|
||||
@Override
|
||||
public int getQueueSize() {
|
||||
return 0;
|
||||
return queueInstance.getQueueSize();
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isExistQueue(String name) {
|
||||
return false;
|
||||
return queueInstance.isExistQueue(name);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void removeQueue(String name) {
|
||||
|
||||
queueInstance.removeQueue(name);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void addQueue(WriteQueue queue) {
|
||||
|
||||
queueInstance.addQueue(queue);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void pushQueue(BasicMessageDto data) {
|
||||
|
||||
boolean isError = false;
|
||||
try {
|
||||
queueInstance.pushQueue(data);
|
||||
} catch (Exception e) {
|
||||
isError = true;
|
||||
// throw new RuntimeException(e);
|
||||
}
|
||||
if (isError) {
|
||||
log.error("Push queue failed");
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public int saveMessageToTable(BasicMessageDto data) {
|
||||
return 0;
|
||||
String serialNo = serialNoService.getSerialNo();
|
||||
String groupSerialNo = serialNo.replace("MSGID", "MGRP");
|
||||
data.setId(serialNo);
|
||||
data.setMsgGroupID(groupSerialNo);
|
||||
log.debug("Save message to table : {}", data);
|
||||
return katMapper.insert(data);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@ -1,7 +1,10 @@
|
||||
package com.munjaon.server.queue.service;
|
||||
|
||||
import com.munjaon.server.cache.service.SerialNoService;
|
||||
import com.munjaon.server.queue.dto.BasicMessageDto;
|
||||
import com.munjaon.server.queue.mapper.KftMapper;
|
||||
import com.munjaon.server.queue.pool.KakaoAlarmMemoryQueue;
|
||||
import com.munjaon.server.queue.pool.KakaoFriendQueuePool;
|
||||
import com.munjaon.server.queue.pool.WriteQueue;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
@ -11,36 +14,53 @@ import org.springframework.stereotype.Service;
|
||||
@Service
|
||||
@RequiredArgsConstructor
|
||||
public class KakaoFriendQueueService implements QueueAction {
|
||||
private final KftMapper kftMapper;
|
||||
private final KakaoFriendQueuePool queueInstance = KakaoFriendQueuePool.getInstance();
|
||||
private final KakaoAlarmMemoryQueue memoryQueue = KakaoAlarmMemoryQueue.getInstance();
|
||||
private final SerialNoService serialNoService;
|
||||
|
||||
@Override
|
||||
public int getQueueSize() {
|
||||
return 0;
|
||||
return queueInstance.getQueueSize();
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isExistQueue(String name) {
|
||||
return false;
|
||||
return queueInstance.isExistQueue(name);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void removeQueue(String name) {
|
||||
|
||||
queueInstance.removeQueue(name);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void addQueue(WriteQueue queue) {
|
||||
|
||||
queueInstance.addQueue(queue);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void pushQueue(BasicMessageDto data) {
|
||||
|
||||
boolean isError = false;
|
||||
try {
|
||||
queueInstance.pushQueue(data);
|
||||
} catch (Exception e) {
|
||||
isError = true;
|
||||
// throw new RuntimeException(e);
|
||||
}
|
||||
if (isError) {
|
||||
log.error("Push queue failed");
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public int saveMessageToTable(BasicMessageDto data) {
|
||||
return 0;
|
||||
String serialNo = serialNoService.getSerialNo();
|
||||
String groupSerialNo = serialNo.replace("MSGID", "MGRP");
|
||||
data.setId(serialNo);
|
||||
data.setMsgGroupID(groupSerialNo);
|
||||
log.debug("Save message to table : {}", data);
|
||||
return kftMapper.insert(data);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@ -1,6 +1,8 @@
|
||||
package com.munjaon.server.queue.service;
|
||||
|
||||
import com.munjaon.server.cache.service.SerialNoService;
|
||||
import com.munjaon.server.queue.dto.BasicMessageDto;
|
||||
import com.munjaon.server.queue.mapper.MmsMapper;
|
||||
import com.munjaon.server.queue.pool.MmsMemoryQueue;
|
||||
import com.munjaon.server.queue.pool.MmsQueuePool;
|
||||
import com.munjaon.server.queue.pool.WriteQueue;
|
||||
@ -12,8 +14,10 @@ import org.springframework.stereotype.Service;
|
||||
@Service
|
||||
@RequiredArgsConstructor
|
||||
public class MmsQueueService implements QueueAction {
|
||||
private final MmsMapper mmsMapper;
|
||||
private final MmsQueuePool queueInstance = MmsQueuePool.getInstance();
|
||||
private final MmsMemoryQueue memoryQueue = MmsMemoryQueue.getInstance();
|
||||
private final SerialNoService serialNoService;
|
||||
|
||||
@Override
|
||||
public int getQueueSize() {
|
||||
@ -51,7 +55,12 @@ public class MmsQueueService implements QueueAction {
|
||||
|
||||
@Override
|
||||
public int saveMessageToTable(BasicMessageDto data) {
|
||||
return 0;
|
||||
String serialNo = serialNoService.getSerialNo();
|
||||
String groupSerialNo = serialNo.replace("MSGID", "MGRP");
|
||||
data.setId(serialNo);
|
||||
data.setMsgGroupID(groupSerialNo);
|
||||
log.debug("Save message to table : {}", data);
|
||||
return mmsMapper.insert(data);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
140
src/main/java/com/munjaon/server/server/packet/KakaoMessage.java
Normal file
140
src/main/java/com/munjaon/server/server/packet/KakaoMessage.java
Normal file
@ -0,0 +1,140 @@
|
||||
package com.munjaon.server.server.packet;
|
||||
|
||||
import com.munjaon.server.util.CommonUtil;
|
||||
|
||||
import java.nio.ByteBuffer;
|
||||
|
||||
public final class KakaoMessage {
|
||||
public static final int LIMIT_FILE_CAPACITY = 1024 * 50;
|
||||
|
||||
public static final int DELIVER_JSON_FILENAME_LENGTH = 40;
|
||||
public static final int DELIVER_JSON_FILENAME_POSITION = 0;
|
||||
|
||||
public static final int DELIVER_JSON_FILESIZE_LENGTH = 8;
|
||||
public static final int DELIVER_JSON_FILESIZE_POSITION = DELIVER_JSON_FILENAME_POSITION + DELIVER_JSON_FILENAME_LENGTH;
|
||||
|
||||
public static final int DELIVER_KAKAO_BODY_LENGTH = 2233;
|
||||
public static final int DELIVER_KAKAO_ACK_BODY_LENGTH = 21;
|
||||
|
||||
/* DELIVER */
|
||||
/* SUBJECT */
|
||||
public static final int DELIVER_SUBJECT_LENGTH = 40;
|
||||
public static final int DELIVER_SUBJECT_POSITION = CommonMessage.DELIVER_MSG_TYPE_POSITION + CommonMessage.DELIVER_MSG_TYPE_LENGTH;
|
||||
/* MESSAGE */
|
||||
public static final int DELIVER_MESSAGE_LENGTH = 2000;
|
||||
public static final int DELIVER_MESSAGE_POSITION = DELIVER_SUBJECT_POSITION + DELIVER_SUBJECT_LENGTH;
|
||||
/* KAKAO_SENDER_KEY */
|
||||
public static final int DELIVER_KAKAO_SENDER_KEY_LENGTH = 40;
|
||||
public static final int DELIVER_KAKAO_SENDER_KEY_POSITION = DELIVER_MESSAGE_POSITION + DELIVER_MESSAGE_LENGTH;
|
||||
/* KAKAO_TEMPLATE_CODE */
|
||||
public static final int DELIVER_KAKAO_TEMPLATE_CODE_LENGTH = 64;
|
||||
public static final int DELIVER_KAKAO_TEMPLATE_CODE_POSITION = DELIVER_KAKAO_SENDER_KEY_POSITION + DELIVER_KAKAO_SENDER_KEY_LENGTH;
|
||||
|
||||
public static void putSubjectForDeliver(ByteBuffer buffer, String subject) {
|
||||
if (buffer == null || subject == null) {
|
||||
return;
|
||||
}
|
||||
subject = CommonUtil.cutString(subject, DELIVER_SUBJECT_LENGTH);
|
||||
buffer.put(DELIVER_SUBJECT_POSITION, subject.getBytes());
|
||||
}
|
||||
public static String getSubjectForDeliver(ByteBuffer buffer) {
|
||||
if (buffer == null) {
|
||||
return null;
|
||||
}
|
||||
|
||||
buffer.position(DELIVER_SUBJECT_POSITION);
|
||||
byte[] destArray = new byte[DELIVER_SUBJECT_LENGTH];
|
||||
buffer.get(destArray);
|
||||
|
||||
return Packet.getString(destArray);
|
||||
}
|
||||
|
||||
public static void putMessageForDeliver(ByteBuffer buffer, String message) {
|
||||
if (buffer == null || message == null) {
|
||||
return;
|
||||
}
|
||||
message = CommonUtil.cutString(message, DELIVER_MESSAGE_LENGTH);
|
||||
buffer.put(DELIVER_MESSAGE_POSITION, message.getBytes());
|
||||
}
|
||||
public static String getMessageForDeliver(ByteBuffer buffer) {
|
||||
if (buffer == null) {
|
||||
return null;
|
||||
}
|
||||
|
||||
buffer.position(DELIVER_MESSAGE_POSITION);
|
||||
byte[] destArray = new byte[DELIVER_MESSAGE_LENGTH];
|
||||
buffer.get(destArray);
|
||||
|
||||
return Packet.getString(destArray);
|
||||
}
|
||||
public static void putKakaoSenderKeyForDeliver(ByteBuffer buffer, String kakaoSenderKey) {
|
||||
if (buffer == null || kakaoSenderKey == null) {
|
||||
return;
|
||||
}
|
||||
kakaoSenderKey = CommonUtil.cutString(kakaoSenderKey, DELIVER_KAKAO_SENDER_KEY_LENGTH);
|
||||
buffer.put(DELIVER_KAKAO_SENDER_KEY_POSITION, kakaoSenderKey.getBytes());
|
||||
}
|
||||
public static String getKakaoSenderKeyForDeliver(ByteBuffer buffer) {
|
||||
if (buffer == null) {
|
||||
return null;
|
||||
}
|
||||
|
||||
buffer.position(DELIVER_KAKAO_SENDER_KEY_POSITION);
|
||||
byte[] destArray = new byte[DELIVER_KAKAO_SENDER_KEY_LENGTH];
|
||||
buffer.get(destArray);
|
||||
|
||||
return Packet.getString(destArray);
|
||||
}
|
||||
public static void putKakaoTemplateCodeForDeliver(ByteBuffer buffer, String kakaoTemplateCode) {
|
||||
if (buffer == null || kakaoTemplateCode == null) {
|
||||
return;
|
||||
}
|
||||
kakaoTemplateCode = CommonUtil.cutString(kakaoTemplateCode, DELIVER_KAKAO_TEMPLATE_CODE_LENGTH);
|
||||
buffer.put(DELIVER_KAKAO_TEMPLATE_CODE_POSITION, kakaoTemplateCode.getBytes());
|
||||
}
|
||||
public static String getKakaoTemplateCodeForDeliver(ByteBuffer buffer) {
|
||||
if (buffer == null) {
|
||||
return null;
|
||||
}
|
||||
|
||||
buffer.position(DELIVER_KAKAO_TEMPLATE_CODE_POSITION);
|
||||
byte[] destArray = new byte[DELIVER_KAKAO_TEMPLATE_CODE_LENGTH];
|
||||
buffer.get(destArray);
|
||||
|
||||
return Packet.getString(destArray);
|
||||
}
|
||||
|
||||
public static String getFileNameForDeliver(ByteBuffer buffer) {
|
||||
if (buffer == null) {
|
||||
return null;
|
||||
}
|
||||
|
||||
buffer.position(DELIVER_JSON_FILENAME_POSITION);
|
||||
byte[] destArray = new byte[DELIVER_JSON_FILENAME_LENGTH];
|
||||
buffer.get(destArray);
|
||||
|
||||
return Packet.getString(destArray);
|
||||
}
|
||||
|
||||
public static String getFileSizeForDeliver(ByteBuffer buffer) {
|
||||
if (buffer == null) {
|
||||
return null;
|
||||
}
|
||||
|
||||
buffer.position(DELIVER_JSON_FILESIZE_POSITION);
|
||||
byte[] destArray = new byte[DELIVER_JSON_FILESIZE_LENGTH];
|
||||
buffer.get(destArray);
|
||||
|
||||
return Packet.getString(destArray);
|
||||
}
|
||||
|
||||
public static ByteBuffer makeDeliverAckBuffer(String msgId, String status) {
|
||||
ByteBuffer buffer = ByteBuffer.allocate(Header.HEADER_LENGTH + DELIVER_KAKAO_ACK_BODY_LENGTH);
|
||||
Packet.setDefaultByte(buffer);
|
||||
Header.putHeader(buffer, Header.COMMAND_DELIVER_ACK, DELIVER_KAKAO_ACK_BODY_LENGTH);
|
||||
buffer.put(CommonMessage.DELIVER_ACK_MESSAGE_ID_POSITION, msgId.getBytes());
|
||||
buffer.put(CommonMessage.DELIVER_ACK_RESULT_POSITION, status.getBytes());
|
||||
|
||||
return buffer;
|
||||
}
|
||||
}
|
||||
@ -5,7 +5,7 @@ import com.munjaon.server.util.CommonUtil;
|
||||
import java.nio.ByteBuffer;
|
||||
|
||||
public final class LmsMessage {
|
||||
public static final int DELIVER_LMS_BODY_LENGTH = 2119;
|
||||
public static final int DELIVER_LMS_BODY_LENGTH = 2129;
|
||||
public static final int DELIVER_LMS_ACK_BODY_LENGTH = 21;
|
||||
|
||||
/* DELIVER */
|
||||
|
||||
@ -5,7 +5,7 @@ import com.munjaon.server.util.CommonUtil;
|
||||
import java.nio.ByteBuffer;
|
||||
|
||||
public final class MmsMessage {
|
||||
public static final int DELIVER_MMS_BODY_LENGTH = 2120;
|
||||
public static final int DELIVER_MMS_BODY_LENGTH = 2130;
|
||||
public static final int DELIVER_MMS_ACK_BODY_LENGTH = 21;
|
||||
|
||||
/* DELIVER */
|
||||
@ -19,6 +19,14 @@ public final class MmsMessage {
|
||||
public static final int DELIVER_FILECOUNT_LENGTH = 1;
|
||||
public static final int DELIVER_FILECOUNT_POSITION = DELIVER_MESSAGE_POSITION + DELIVER_MESSAGE_LENGTH;
|
||||
|
||||
public static final int LIMIT_FILE_CAPACITY = 1024 * 300;
|
||||
|
||||
public static final int DELIVER_MMS_FILENAME_LENGTH = 40;
|
||||
public static final int DELIVER_MMS_FILENAME_POSITION = 0;
|
||||
|
||||
public static final int DELIVER_MMS_FILESIZE_LENGTH = 8;
|
||||
public static final int DELIVER_MMS_FILESIZE_POSITION = DELIVER_MMS_FILENAME_POSITION + DELIVER_MMS_FILENAME_LENGTH;
|
||||
|
||||
public static void putSubjectForDeliver(ByteBuffer buffer, String subject) {
|
||||
if (buffer == null || subject == null) {
|
||||
return;
|
||||
@ -78,6 +86,40 @@ public final class MmsMessage {
|
||||
|
||||
return Packet.getString(destArray);
|
||||
}
|
||||
|
||||
public static String getFileNameForDeliver(ByteBuffer buffer) {
|
||||
if (buffer == null) {
|
||||
return null;
|
||||
}
|
||||
|
||||
buffer.position(DELIVER_MMS_FILENAME_POSITION);
|
||||
byte[] destArray = new byte[DELIVER_MMS_FILENAME_LENGTH];
|
||||
buffer.get(destArray);
|
||||
|
||||
return Packet.getString(destArray);
|
||||
}
|
||||
|
||||
public static String getFileSizeForDeliver(ByteBuffer buffer) {
|
||||
if (buffer == null) {
|
||||
return null;
|
||||
}
|
||||
|
||||
buffer.position(DELIVER_MMS_FILESIZE_POSITION);
|
||||
byte[] destArray = new byte[DELIVER_MMS_FILESIZE_LENGTH];
|
||||
buffer.get(destArray);
|
||||
|
||||
return Packet.getString(destArray);
|
||||
}
|
||||
|
||||
public static ByteBuffer makeDeliverAckBuffer(String msgId, String status) {
|
||||
ByteBuffer buffer = ByteBuffer.allocate(Header.HEADER_LENGTH + DELIVER_MMS_ACK_BODY_LENGTH);
|
||||
Packet.setDefaultByte(buffer);
|
||||
Header.putHeader(buffer, Header.COMMAND_DELIVER_ACK, DELIVER_MMS_ACK_BODY_LENGTH);
|
||||
buffer.put(CommonMessage.DELIVER_ACK_MESSAGE_ID_POSITION, msgId.getBytes());
|
||||
buffer.put(CommonMessage.DELIVER_ACK_RESULT_POSITION, status.getBytes());
|
||||
|
||||
return buffer;
|
||||
}
|
||||
// public static void makeDataForDeliver(ByteBuffer buffer, MunjaonMsg data) {
|
||||
// if (buffer == null || data == null) {
|
||||
// return;
|
||||
|
||||
@ -47,6 +47,7 @@ public class CollectServerService extends Service {
|
||||
} else {
|
||||
this.IS_READY_YN = false;
|
||||
}
|
||||
saveSystemLog("CollectServerService ready : " + this.IS_READY_YN);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@ -8,8 +8,9 @@ import com.munjaon.server.queue.enums.QueueTypeWorker;
|
||||
import com.munjaon.server.server.dto.ConnectUserDto;
|
||||
import com.munjaon.server.server.packet.*;
|
||||
import com.munjaon.server.server.queue.CollectUserQueue;
|
||||
import com.munjaon.server.util.LogUtil;
|
||||
import com.munjaon.server.util.*;
|
||||
|
||||
import java.io.File;
|
||||
import java.io.IOException;
|
||||
import java.nio.ByteBuffer;
|
||||
import java.nio.channels.SelectionKey;
|
||||
@ -158,15 +159,144 @@ public class CollectReadTask implements Callable<ConnectUserDto> {
|
||||
}
|
||||
|
||||
private void recvMmsDeliver(SocketChannel channel, ByteBuffer headBuffer) throws IOException {
|
||||
try {
|
||||
ByteBuffer bodyBuffer = ByteBuffer.allocate(MmsMessage.DELIVER_MMS_BODY_LENGTH);
|
||||
channel.read(bodyBuffer);
|
||||
ByteBuffer deliverBuffer = ByteBuffer.allocate(Header.HEADER_LENGTH + MmsMessage.DELIVER_MMS_BODY_LENGTH);
|
||||
Packet.mergeBuffers(deliverBuffer, headBuffer, bodyBuffer);
|
||||
|
||||
BasicMessageDto messageDto = recvCommonMessage(deliverBuffer);
|
||||
messageDto.setUserSubject(MmsMessage.getSubjectForDeliver(deliverBuffer));
|
||||
messageDto.setUserMessage(MmsMessage.getMessageForDeliver(deliverBuffer));
|
||||
String fileCount = MessageUtil.doNumber(MmsMessage.getFileCountForDeliver(deliverBuffer));
|
||||
int recvFileCount = 0;
|
||||
if (fileCount != null && fileCount.length() > 0) {
|
||||
recvFileCount = Integer.parseInt(fileCount);
|
||||
messageDto.setUserFileCnt(recvFileCount);
|
||||
saveSystemLog("recvFileCount : " + recvFileCount);
|
||||
}
|
||||
|
||||
saveSystemLog("messageDto : " + messageDto.toString());
|
||||
|
||||
String imagePath = System.getProperty("ROOTPATH") + File.separator + "mmsfile";
|
||||
imagePath = imagePath + File.separator + MessageUtil.getDate() + File.separator + SerialNoUtil.getSerialNo();
|
||||
FileUtil.mkdirs(imagePath);
|
||||
|
||||
for (int i = 0; i < recvFileCount; i++) {
|
||||
ByteBuffer fileHeadBuffer = ByteBuffer.allocate(MmsMessage.DELIVER_MMS_FILENAME_LENGTH + MmsMessage.DELIVER_MMS_FILESIZE_LENGTH);
|
||||
channel.read(fileHeadBuffer);
|
||||
String fileName = MmsMessage.getFileNameForDeliver(fileHeadBuffer);
|
||||
String fileSize = MmsMessage.getFileSizeForDeliver(fileHeadBuffer);
|
||||
ByteBuffer fileBuffer = ByteBuffer.allocate(Integer.parseInt(fileSize));
|
||||
channel.read(fileBuffer);
|
||||
fileBuffer.flip();
|
||||
JobFileFactory.saveFileForByteBuffer(imagePath, fileName, fileBuffer);
|
||||
if (i == 0) {
|
||||
messageDto.setUserFileName01(imagePath + File.separator + fileName);
|
||||
} else if (i == 1) {
|
||||
messageDto.setUserFileName02(imagePath + File.separator + fileName);
|
||||
} else if (i == 2) {
|
||||
messageDto.setUserFileName03(imagePath + File.separator + fileName);
|
||||
}
|
||||
saveSystemLog("File : " + fileName + ", Size : " + fileSize);
|
||||
}
|
||||
|
||||
QueueTypeWorker worker = QueueTypeWorker.find("MMS");
|
||||
if (worker != null) {
|
||||
worker.pushQueue(messageDto);
|
||||
channel.write(MmsMessage.makeDeliverAckBuffer(messageDto.getUserMsgID(), messageDto.getSendStatus()));
|
||||
}
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
|
||||
private void recvKatDeliver(SocketChannel channel, ByteBuffer headBuffer) throws IOException {
|
||||
try {
|
||||
ByteBuffer bodyBuffer = ByteBuffer.allocate(KakaoMessage.DELIVER_KAKAO_BODY_LENGTH);
|
||||
channel.read(bodyBuffer);
|
||||
ByteBuffer deliverBuffer = ByteBuffer.allocate(Header.HEADER_LENGTH + KakaoMessage.DELIVER_KAKAO_BODY_LENGTH);
|
||||
Packet.mergeBuffers(deliverBuffer, headBuffer, bodyBuffer);
|
||||
|
||||
BasicMessageDto messageDto = recvCommonMessage(deliverBuffer);
|
||||
messageDto.setUserSubject(KakaoMessage.getSubjectForDeliver(deliverBuffer));
|
||||
messageDto.setUserMessage(KakaoMessage.getMessageForDeliver(deliverBuffer));
|
||||
messageDto.setKakaoSenderKey(KakaoMessage.getKakaoSenderKeyForDeliver(deliverBuffer));
|
||||
messageDto.setKakaoTemplateCode(KakaoMessage.getKakaoTemplateCodeForDeliver(deliverBuffer));
|
||||
|
||||
saveSystemLog("messageDto : " + messageDto.toString());
|
||||
|
||||
String jsonPath = System.getProperty("ROOTPATH") + File.separator + "kakaofile";
|
||||
jsonPath = jsonPath + File.separator + MessageUtil.getDate() + File.separator + SerialNoUtil.getSerialNo();
|
||||
FileUtil.mkdirs(jsonPath);
|
||||
|
||||
ByteBuffer fileHeadBuffer = ByteBuffer.allocate(KakaoMessage.DELIVER_JSON_FILENAME_LENGTH + KakaoMessage.DELIVER_JSON_FILESIZE_LENGTH);
|
||||
channel.read(fileHeadBuffer);
|
||||
|
||||
String fileName = KakaoMessage.getFileNameForDeliver(fileHeadBuffer);
|
||||
String fileSize = KakaoMessage.getFileSizeForDeliver(fileHeadBuffer);
|
||||
|
||||
ByteBuffer fileBuffer = ByteBuffer.allocate(Integer.parseInt(fileSize));
|
||||
channel.read(fileBuffer);
|
||||
fileBuffer.flip();
|
||||
JobFileFactory.saveFileForByteBuffer(jsonPath, fileName, fileBuffer);
|
||||
|
||||
messageDto.setKakaoJsonFile(jsonPath + File.separator + fileName);
|
||||
saveSystemLog("File : " + fileName + ", Size : " + fileSize);
|
||||
|
||||
QueueTypeWorker worker = QueueTypeWorker.find("KAT");
|
||||
if (worker != null) {
|
||||
worker.pushQueue(messageDto);
|
||||
channel.write(KakaoMessage.makeDeliverAckBuffer(messageDto.getUserMsgID(), messageDto.getSendStatus()));
|
||||
} else {
|
||||
saveSystemLog("worker is null");
|
||||
}
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
|
||||
private void recvKftDeliver(SocketChannel channel, ByteBuffer headBuffer) throws IOException {
|
||||
try {
|
||||
ByteBuffer bodyBuffer = ByteBuffer.allocate(KakaoMessage.DELIVER_KAKAO_BODY_LENGTH);
|
||||
channel.read(bodyBuffer);
|
||||
ByteBuffer deliverBuffer = ByteBuffer.allocate(Header.HEADER_LENGTH + KakaoMessage.DELIVER_KAKAO_BODY_LENGTH);
|
||||
Packet.mergeBuffers(deliverBuffer, headBuffer, bodyBuffer);
|
||||
|
||||
BasicMessageDto messageDto = recvCommonMessage(deliverBuffer);
|
||||
messageDto.setUserSubject(KakaoMessage.getSubjectForDeliver(deliverBuffer));
|
||||
messageDto.setUserMessage(KakaoMessage.getMessageForDeliver(deliverBuffer));
|
||||
messageDto.setKakaoSenderKey(KakaoMessage.getKakaoSenderKeyForDeliver(deliverBuffer));
|
||||
messageDto.setKakaoTemplateCode(KakaoMessage.getKakaoTemplateCodeForDeliver(deliverBuffer));
|
||||
|
||||
saveSystemLog("messageDto : " + messageDto.toString());
|
||||
|
||||
String jsonPath = System.getProperty("ROOTPATH") + File.separator + "kakaofile";
|
||||
jsonPath = jsonPath + File.separator + MessageUtil.getDate() + File.separator + SerialNoUtil.getSerialNo();
|
||||
FileUtil.mkdirs(jsonPath);
|
||||
|
||||
ByteBuffer fileHeadBuffer = ByteBuffer.allocate(KakaoMessage.DELIVER_JSON_FILENAME_LENGTH + KakaoMessage.DELIVER_JSON_FILESIZE_LENGTH);
|
||||
channel.read(fileHeadBuffer);
|
||||
|
||||
String fileName = KakaoMessage.getFileNameForDeliver(fileHeadBuffer);
|
||||
String fileSize = KakaoMessage.getFileSizeForDeliver(fileHeadBuffer);
|
||||
|
||||
ByteBuffer fileBuffer = ByteBuffer.allocate(Integer.parseInt(fileSize));
|
||||
channel.read(fileBuffer);
|
||||
fileBuffer.flip();
|
||||
JobFileFactory.saveFileForByteBuffer(jsonPath, fileName, fileBuffer);
|
||||
|
||||
messageDto.setKakaoJsonFile(jsonPath + File.separator + fileName);
|
||||
saveSystemLog("File : " + fileName + ", Size : " + fileSize);
|
||||
|
||||
QueueTypeWorker worker = QueueTypeWorker.find("KFT");
|
||||
if (worker != null) {
|
||||
worker.pushQueue(messageDto);
|
||||
channel.write(KakaoMessage.makeDeliverAckBuffer(messageDto.getUserMsgID(), messageDto.getSendStatus()));
|
||||
}
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
|
||||
private void recvLinkCheck(SocketChannel channel) throws IOException {
|
||||
|
||||
@ -8,7 +8,10 @@ import java.io.File;
|
||||
import java.io.FileInputStream;
|
||||
import java.io.FileOutputStream;
|
||||
import java.io.IOException;
|
||||
import java.nio.ByteBuffer;
|
||||
import java.nio.channels.FileChannel;
|
||||
import java.nio.file.Paths;
|
||||
import java.nio.file.StandardOpenOption;
|
||||
import java.time.LocalDateTime;
|
||||
import java.time.format.DateTimeFormatter;
|
||||
import java.util.ArrayList;
|
||||
@ -346,6 +349,17 @@ public final class JobFileFactory {
|
||||
return transferStatus;
|
||||
}
|
||||
|
||||
public static void saveFileForByteBuffer(final String path, final String fileName, final ByteBuffer buffer) throws IOException {
|
||||
FileChannel fileChannel = FileChannel.open(
|
||||
Paths.get(path + File.separator + fileName),
|
||||
StandardOpenOption.CREATE_NEW,
|
||||
StandardOpenOption.READ,
|
||||
StandardOpenOption.WRITE
|
||||
);
|
||||
fileChannel.write(buffer);
|
||||
fileChannel.close();
|
||||
}
|
||||
|
||||
public static String getJobDirectory(final String rootDirectory, final String orderNo, final String companyNo, final String date) {
|
||||
return rootDirectory + File.separator + orderNo + File.separator + orderNo + "_" + companyNo + File.separator + date;
|
||||
}
|
||||
|
||||
@ -171,63 +171,75 @@ public final class MessageUtil {
|
||||
buffer.position(BodyCommonConfig.USERID_BYTE_POSITION);
|
||||
destArray = new byte[BodyCommonConfig.USERID_BYTE_LENGTH];
|
||||
buffer.get(destArray);
|
||||
messageDto.setUserId(new String(destArray));
|
||||
messageDto.setUserId(QueueConstants.getString(destArray));
|
||||
// messageDto.setUserId(new String(destArray));
|
||||
/* 2. 요금제(선불 : P / 후불 : A) : final : 아무작업도 하지 않음 */
|
||||
/* 3. 단가 */
|
||||
buffer.position(BodyCommonConfig.UNITCOST_BYTE_POSITION);
|
||||
destArray = new byte[BodyCommonConfig.UNITCOST_BYTE_LENGTH];
|
||||
buffer.get(destArray);
|
||||
messageDto.setUnitCost(new String(destArray));
|
||||
messageDto.setUnitCost(QueueConstants.getString(destArray));
|
||||
// messageDto.setUnitCost(new String(destArray));
|
||||
/* 4. MSG Group ID */
|
||||
buffer.position(BodyCommonConfig.MSGGROUPID_BYTE_POSITION);
|
||||
destArray = new byte[BodyCommonConfig.MSGGROUPID_BYTE_LENGTH];
|
||||
buffer.get(destArray);
|
||||
messageDto.setMsgGroupID(new String(destArray));
|
||||
messageDto.setMsgGroupID(QueueConstants.getString(destArray));
|
||||
// messageDto.setMsgGroupID(new String(destArray));
|
||||
/* 5. MSG ID */
|
||||
buffer.position(BodyCommonConfig.MSGID_BYTE_POSITION);
|
||||
destArray = new byte[BodyCommonConfig.MSGID_BYTE_LENGTH];
|
||||
buffer.get(destArray);
|
||||
messageDto.setUserMsgID(new String(destArray));
|
||||
messageDto.setUserMsgID(QueueConstants.getString(destArray));
|
||||
// messageDto.setUserMsgID(new String(destArray));
|
||||
/* 6. Service Type */
|
||||
buffer.position(BodyCommonConfig.SERVICETYPE_BYTE_POSITION);
|
||||
destArray = new byte[BodyCommonConfig.SERVICETYPE_BYTE_LENGTH];
|
||||
buffer.get(destArray);
|
||||
messageDto.setServiceType(new String(destArray));
|
||||
messageDto.setServiceType(QueueConstants.getString(destArray));
|
||||
// messageDto.setServiceType(new String(destArray));
|
||||
/* 7. 메시지 전송 결과 >> 성공 : 0 / 필터링 : 기타값 */
|
||||
buffer.position(BodyCommonConfig.SENDSTATUS_BYTE_POSITION);
|
||||
destArray = new byte[BodyCommonConfig.SENDSTATUS_BYTE_LENGTH];
|
||||
buffer.get(destArray);
|
||||
messageDto.setSendStatus(new String(destArray));
|
||||
messageDto.setSendStatus(QueueConstants.getString(destArray));
|
||||
// messageDto.setSendStatus(new String(destArray));
|
||||
/* 8. 회신번호 */
|
||||
buffer.position(BodyCommonConfig.SENDER_BYTE_POSITION);
|
||||
destArray = new byte[BodyCommonConfig.SENDER_BYTE_LENGTH];
|
||||
buffer.get(destArray);
|
||||
messageDto.setUserSender(new String(destArray));
|
||||
messageDto.setUserSender(QueueConstants.getString(destArray));
|
||||
// messageDto.setUserSender(new String(destArray));
|
||||
/* 9. 수신번호 */
|
||||
buffer.position(BodyCommonConfig.RECEIVER_BYTE_POSITION);
|
||||
destArray = new byte[BodyCommonConfig.RECEIVER_BYTE_LENGTH];
|
||||
buffer.get(destArray);
|
||||
messageDto.setUserReceiver(new String(destArray));
|
||||
messageDto.setUserReceiver(QueueConstants.getString(destArray));
|
||||
// messageDto.setUserReceiver(new String(destArray));
|
||||
/* 10. 예약시간 */
|
||||
buffer.position(BodyCommonConfig.RESERVEDT_BYTE_POSITION);
|
||||
destArray = new byte[BodyCommonConfig.RESERVEDT_BYTE_LENGTH];
|
||||
buffer.get(destArray);
|
||||
messageDto.setReserveDt(new String(destArray));
|
||||
messageDto.setReserveDt(QueueConstants.getString(destArray));
|
||||
// messageDto.setReserveDt(new String(destArray));
|
||||
/* 11. 요청시간 */
|
||||
buffer.position(BodyCommonConfig.REQUESTDT_BYTE_POSITION);
|
||||
destArray = new byte[BodyCommonConfig.REQUESTDT_BYTE_LENGTH];
|
||||
buffer.get(destArray);
|
||||
messageDto.setRequestDt(new String(destArray));
|
||||
messageDto.setRequestDt(QueueConstants.getString(destArray));
|
||||
// messageDto.setRequestDt(new String(destArray));
|
||||
/* 12. 원격 주소 */
|
||||
buffer.position(BodyCommonConfig.REMOTEIP_BYTE_POSITION);
|
||||
destArray = new byte[BodyCommonConfig.REMOTEIP_BYTE_LENGTH];
|
||||
buffer.get(destArray);
|
||||
messageDto.setRemoteIP(new String(destArray));
|
||||
messageDto.setRemoteIP(QueueConstants.getString(destArray));
|
||||
// messageDto.setRemoteIP(new String(destArray));
|
||||
/* 13. 발송망 */
|
||||
buffer.position(BodyCommonConfig.AGENT_CODE_BYTE_POSITION);
|
||||
destArray = new byte[BodyCommonConfig.AGENT_CODE_BYTE_LENGTH];
|
||||
buffer.get(destArray);
|
||||
messageDto.setRouterSeq(new String(destArray));
|
||||
messageDto.setRouterSeq(QueueConstants.getString(destArray));
|
||||
// messageDto.setRouterSeq(new String(destArray));
|
||||
}
|
||||
|
||||
public static void setBytesForSmsMessage(ByteBuffer buffer, BasicMessageDto messageDto) {
|
||||
@ -245,7 +257,8 @@ public final class MessageUtil {
|
||||
buffer.position(SmsBodyConfig.SMS_MSG_BYTE_POSITION);
|
||||
destArray = new byte[SmsBodyConfig.SMS_MSG_BYTE_LENGTH];
|
||||
buffer.get(destArray);
|
||||
messageDto.setUserMessage(new String(destArray));
|
||||
messageDto.setUserMessage(QueueConstants.getString(destArray));
|
||||
// messageDto.setUserMessage(new String(destArray));
|
||||
}
|
||||
|
||||
public static void setBytesForMediaMessage(ByteBuffer buffer, BasicMessageDto messageDto) {
|
||||
@ -257,6 +270,61 @@ public final class MessageUtil {
|
||||
buffer.put(messageDto.getUserMessage().getBytes());
|
||||
}
|
||||
|
||||
public static void setBytesForKakaoMessage(ByteBuffer buffer, BasicMessageDto messageDto) {
|
||||
/* 14. 제목 */
|
||||
buffer.position(KakaoBodyConfig.SUBJECT_BYTE_POSITION);
|
||||
buffer.put(messageDto.getUserSubject().getBytes());
|
||||
/* 15. 메시지 */
|
||||
buffer.position(KakaoBodyConfig.MEDIA_MSG_BYTE_POSITION);
|
||||
buffer.put(messageDto.getUserMessage().getBytes());
|
||||
/* 16. KAKAO_SENDER_KEY */
|
||||
buffer.position(KakaoBodyConfig.KAKAO_SENDER_KEY_BYTE_POSITION);
|
||||
buffer.put(messageDto.getKakaoSenderKey().getBytes());
|
||||
/* 17. KAKAO_TEMPLATE_CODE */
|
||||
buffer.position(KakaoBodyConfig.KAKAO_TEMPLATE_CODE_BYTE_POSITION);
|
||||
buffer.put(messageDto.getKakaoTemplateCode().getBytes());
|
||||
/* 18. KAKAO_JSON_FILE */
|
||||
buffer.position(KakaoBodyConfig.FILENAME_JSON_BYTE_POSITION);
|
||||
buffer.put(messageDto.getKakaoJsonFile().getBytes());
|
||||
}
|
||||
|
||||
public static void getBytesForKakaoMessage(ByteBuffer buffer, BasicMessageDto messageDto) {
|
||||
byte[] destArray = null;
|
||||
if (buffer == null || messageDto == null) {
|
||||
return;
|
||||
}
|
||||
/* 14. 제목 */
|
||||
buffer.position(KakaoBodyConfig.SUBJECT_BYTE_POSITION);
|
||||
destArray = new byte[KakaoBodyConfig.SUBJECT_BYTE_LENGTH];
|
||||
buffer.get(destArray);
|
||||
messageDto.setUserSubject(QueueConstants.getString(destArray));
|
||||
// messageDto.setUserSubject(new String(destArray));
|
||||
/* 15. 메시지 */
|
||||
buffer.position(KakaoBodyConfig.MEDIA_MSG_BYTE_POSITION);
|
||||
destArray = new byte[KakaoBodyConfig.MEDIA_MSG_BYTE_LENGTH];
|
||||
buffer.get(destArray);
|
||||
messageDto.setUserMessage(QueueConstants.getString(destArray));
|
||||
// messageDto.setUserMessage(new String(destArray));
|
||||
/* 16. KAKAO_SENDER_KEY */
|
||||
buffer.position(KakaoBodyConfig.KAKAO_SENDER_KEY_BYTE_POSITION);
|
||||
destArray = new byte[KakaoBodyConfig.KAKAO_SENDER_KEY_BYTE_LENGTH];
|
||||
buffer.get(destArray);
|
||||
messageDto.setKakaoSenderKey(QueueConstants.getString(destArray));
|
||||
// messageDto.setUserSubject(new String(destArray));\
|
||||
/* 17. KAKAO_TEMPLATE_CODE */
|
||||
buffer.position(KakaoBodyConfig.KAKAO_TEMPLATE_CODE_BYTE_POSITION);
|
||||
destArray = new byte[KakaoBodyConfig.KAKAO_TEMPLATE_CODE_BYTE_LENGTH];
|
||||
buffer.get(destArray);
|
||||
messageDto.setKakaoTemplateCode(QueueConstants.getString(destArray));
|
||||
// messageDto.setUserSubject(new String(destArray));
|
||||
/* 18. KAKAO_JSON_FILE */
|
||||
buffer.position(KakaoBodyConfig.FILENAME_JSON_BYTE_POSITION);
|
||||
destArray = new byte[KakaoBodyConfig.FILENAME_JSON_BYTE_LENGTH];
|
||||
buffer.get(destArray);
|
||||
messageDto.setKakaoJsonFile(QueueConstants.getString(destArray));
|
||||
// messageDto.setUserSubject(new String(destArray));
|
||||
}
|
||||
|
||||
public static void getBytesForMediaMessage(ByteBuffer buffer, BasicMessageDto messageDto) {
|
||||
byte[] destArray = null;
|
||||
if (buffer == null || messageDto == null) {
|
||||
@ -266,12 +334,14 @@ public final class MessageUtil {
|
||||
buffer.position(MediaBodyConfig.SUBJECT_BYTE_POSITION);
|
||||
destArray = new byte[MediaBodyConfig.SUBJECT_BYTE_LENGTH];
|
||||
buffer.get(destArray);
|
||||
messageDto.setUserSubject(new String(destArray));
|
||||
messageDto.setUserSubject(QueueConstants.getString(destArray));
|
||||
// messageDto.setUserSubject(new String(destArray));
|
||||
/* 15. 메시지 */
|
||||
buffer.position(MediaBodyConfig.MEDIA_MSG_BYTE_POSITION);
|
||||
destArray = new byte[MediaBodyConfig.MEDIA_MSG_BYTE_LENGTH];
|
||||
buffer.get(destArray);
|
||||
messageDto.setUserMessage(new String(destArray));
|
||||
messageDto.setUserMessage(QueueConstants.getString(destArray));
|
||||
// messageDto.setUserMessage(new String(destArray));
|
||||
}
|
||||
|
||||
public static void setBytesForMmsMessage(ByteBuffer buffer, BasicMessageDto messageDto) {
|
||||
@ -304,22 +374,26 @@ public final class MessageUtil {
|
||||
buffer.position(MediaBodyConfig.FILECNT_BYTE_POSITION);
|
||||
destArray = new byte[MediaBodyConfig.FILECNT_BYTE_LENGTH];
|
||||
buffer.get(destArray);
|
||||
messageDto.setUserFileCnt(Integer.parseInt(new String(destArray)));
|
||||
messageDto.setUserFileCnt(Integer.parseInt(QueueConstants.getString(destArray)));
|
||||
// messageDto.setUserFileCnt(Integer.parseInt(new String(destArray)));
|
||||
/* 17. 파일명 #1 */
|
||||
buffer.position(MediaBodyConfig.FILENAME_ONE_BYTE_POSITION);
|
||||
destArray = new byte[MediaBodyConfig.FILENAME_ONE_BYTE_LENGTH];
|
||||
buffer.get(destArray);
|
||||
messageDto.setUserFileName01(new String(destArray));
|
||||
messageDto.setUserFileName01(QueueConstants.getString(destArray));
|
||||
// messageDto.setUserFileName01(new String(destArray));
|
||||
/* 18. 파일명 #2 */
|
||||
buffer.position(MediaBodyConfig.FILENAME_TWO_BYTE_POSITION);
|
||||
destArray = new byte[MediaBodyConfig.FILENAME_TWO_BYTE_LENGTH];
|
||||
buffer.get(destArray);
|
||||
messageDto.setUserFileName02(new String(destArray));
|
||||
messageDto.setUserFileName02(QueueConstants.getString(destArray));
|
||||
// messageDto.setUserFileName02(new String(destArray));
|
||||
/* 19. 파일명 #3 */
|
||||
buffer.position(MediaBodyConfig.FILENAME_THREE_BYTE_POSITION);
|
||||
destArray = new byte[MediaBodyConfig.FILENAME_THREE_BYTE_LENGTH];
|
||||
buffer.get(destArray);
|
||||
messageDto.setUserFileName03(new String(destArray));
|
||||
messageDto.setUserFileName03(QueueConstants.getString(destArray));
|
||||
// messageDto.setUserFileName03(new String(destArray));
|
||||
}
|
||||
|
||||
public static int isValidateMessageForReport(ReportDto reportDto) {
|
||||
|
||||
@ -2,7 +2,7 @@ spring:
|
||||
datasource:
|
||||
server:
|
||||
driver-class-name: org.mariadb.jdbc.Driver
|
||||
jdbc-url: jdbc:mariadb://119.193.215.98:3306/mjon_agent
|
||||
jdbc-url: jdbc:mariadb://119.193.215.98:3306/mjon_agent_back
|
||||
username: mjonUr_agent
|
||||
password: mjagent123$
|
||||
|
||||
@ -12,6 +12,6 @@ server:
|
||||
|
||||
# ### 에이전트 설정 관련 ####################################################################################
|
||||
agent:
|
||||
root-path: C:/apps/agent_server
|
||||
server-property-file: C:/apps/agent_server/config/server.properties
|
||||
root-path: /home/mjon_server_agent
|
||||
server-property-file: /home/mjon_server_agent/config/server.properties
|
||||
db-name: mjon_agent_back
|
||||
@ -2,6 +2,7 @@ spring:
|
||||
datasource:
|
||||
server:
|
||||
driver-class-name: org.mariadb.jdbc.Driver
|
||||
url: jdbc:mariadb://119.193.215.98:3306/mjon_agent_back
|
||||
jdbc-url: jdbc:mariadb://119.193.215.98:3306/mjon_agent_back
|
||||
username: mjonUr_agent
|
||||
password: mjagent123$
|
||||
|
||||
26
src/main/resources/sqlmap/kat_sql.xml
Normal file
26
src/main/resources/sqlmap/kat_sql.xml
Normal file
@ -0,0 +1,26 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
|
||||
<mapper namespace="com.munjaon.server.queue.mapper.KatMapper">
|
||||
<insert id="insert">
|
||||
INSERT INTO MJ_MSG_DATA (
|
||||
MSG_ID
|
||||
, MSG_GROUP_ID
|
||||
, USER_ID
|
||||
, AGENT_MSG_ID
|
||||
, AGENT_CODE
|
||||
, CUR_STATE
|
||||
, MSG_NOTICETALK_SENDER_KEY
|
||||
, MSG_NOTICETALK_TMP_KEY
|
||||
, REQ_DATE
|
||||
, CALL_TO
|
||||
, CALL_FROM
|
||||
, SMS_TXT
|
||||
, BIZ_KAKAO_TITLE
|
||||
, MSG_TYPE
|
||||
, BIZ_KAKAO_RESEND_YN
|
||||
, BIZ_KAKAO_RESEND_DATA
|
||||
, BIZ_KAKAO_RESEND_TYPE
|
||||
, BIZ_KAKAO_JSON_FILE
|
||||
) VALUES (#{id}, #{msgGroupID}, #{userId}, #{userMsgID}, '04', 0, #{kakaoSenderKey}, #{kakaoTemplateCode}, NOW(), #{userReceiver}, #{userSender}, #{userMessage}, #{userSubject}, '8', 'N', null, null, #{kakaoJsonFile})
|
||||
</insert>
|
||||
</mapper>
|
||||
25
src/main/resources/sqlmap/kft_sql.xml
Normal file
25
src/main/resources/sqlmap/kft_sql.xml
Normal file
@ -0,0 +1,25 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
|
||||
<mapper namespace="com.munjaon.server.queue.mapper.KftMapper">
|
||||
<insert id="insert">
|
||||
INSERT INTO MJ_MSG_DATA (MSG_ID
|
||||
, MSG_GROUP_ID
|
||||
, USER_ID
|
||||
, AGENT_MSG_ID
|
||||
, AGENT_CODE
|
||||
, CUR_STATE
|
||||
, MSG_NOTICETALK_SENDER_KEY
|
||||
, MSG_NOTICETALK_TMP_KEY
|
||||
, REQ_DATE
|
||||
, CALL_TO
|
||||
, CALL_FROM
|
||||
, SMS_TXT
|
||||
, BIZ_KAKAO_TITLE
|
||||
, MSG_TYPE
|
||||
, BIZ_KAKAO_RESEND_YN
|
||||
, BIZ_KAKAO_RESEND_DATA
|
||||
, BIZ_KAKAO_RESEND_TYPE
|
||||
, BIZ_KAKAO_JSON_FILE
|
||||
) VALUES (#{id}, #{msgGroupID}, #{userId}, #{userMsgID}, '04', 0, #{kakaoSenderKey}, #{kakaoTemplateCode}, NOW(), #{userReceiver}, #{userSender}, #{userMessage}, #{userSubject}, '9', 'N', null, null, #{kakaoJsonFile})
|
||||
</insert>
|
||||
</mapper>
|
||||
26
src/main/resources/sqlmap/mms_sql.xml
Normal file
26
src/main/resources/sqlmap/mms_sql.xml
Normal file
@ -0,0 +1,26 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
|
||||
<mapper namespace="com.munjaon.server.queue.mapper.MmsMapper">
|
||||
<insert id="insert">
|
||||
INSERT INTO MJ_MSG_DATA (
|
||||
MSG_ID
|
||||
, MSG_GROUP_ID
|
||||
, USER_ID
|
||||
, AGENT_MSG_ID
|
||||
, AGENT_CODE
|
||||
, CUR_STATE
|
||||
, REQ_DATE
|
||||
, CALL_TO
|
||||
, CALL_FROM
|
||||
, SUBJECT
|
||||
, SMS_TXT
|
||||
, MSG_TYPE
|
||||
, CONT_SEQ
|
||||
, FILE_CNT
|
||||
, FILE_PATH1
|
||||
, FILE_PATH2
|
||||
, FILE_PATH3
|
||||
, NEO_TYPE
|
||||
) VALUES (#{id}, #{msgGroupID}, #{userId}, #{userMsgID}, '04', 0, NOW(), #{userReceiver}, #{userSender}, #{userSubject}, #{userMessage}, '6', null, #{userFileCnt}, #{userFileName01}, #{userFileName02}, #{userFileName03}, null)
|
||||
</insert>
|
||||
</mapper>
|
||||
Loading…
Reference in New Issue
Block a user