MMS, 알림톡, 친구톡 기능 추가

This commit is contained in:
dsjang 2024-07-29 02:08:32 +09:00
parent 2679d17629
commit aa4fc21692
32 changed files with 956 additions and 55 deletions

View File

@ -1,5 +1,6 @@
package com.munjaon.server.config; package com.munjaon.server.config;
import com.zaxxer.hikari.HikariDataSource;
import org.apache.ibatis.session.SqlSessionFactory; import org.apache.ibatis.session.SqlSessionFactory;
import org.mybatis.spring.SqlSessionFactoryBean; import org.mybatis.spring.SqlSessionFactoryBean;
import org.mybatis.spring.SqlSessionTemplate; import org.mybatis.spring.SqlSessionTemplate;
@ -28,7 +29,7 @@ public class DataSourceConfig {
@Bean(name = "datasource") @Bean(name = "datasource")
@ConfigurationProperties(prefix = "spring.datasource.server") @ConfigurationProperties(prefix = "spring.datasource.server")
public DataSource dataSource() { public DataSource dataSource() {
return DataSourceBuilder.create().build(); return DataSourceBuilder.create().type(HikariDataSource.class).build();
} }
@Primary @Primary

View File

@ -118,6 +118,60 @@ public class RunnerConfiguration {
return args -> System.out.println("Runner Bean #2"); 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 @Bean
@Order(3) @Order(3)
public CommandLineRunner getRunnerBeanForSmsCollector() { public CommandLineRunner getRunnerBeanForSmsCollector() {
@ -150,6 +204,54 @@ public class RunnerConfiguration {
return args -> System.out.println("Runner Bean SmsCollector #3"); 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 @Bean
@Order(3) @Order(3)
public CommandLineRunner getRunnerBeanForReporter() { public CommandLineRunner getRunnerBeanForReporter() {

View File

@ -21,11 +21,13 @@ public enum ServiceCode {
/* SMS 메시지 */ /* SMS 메시지 */
MSG_ERROR_SMS_MESSAGE(400, "SMS Message is Null OR is Over Limit Byte"), MSG_ERROR_SMS_MESSAGE(400, "SMS Message is Null OR is Over Limit Byte"),
/* LMS, MMS 제목, 메시지 */ /* LMS, MMS, KAKAO 제목, 메시지 */
MSG_ERROR_MEDIA_SUBJECT(500, "LMS, MMS Subject is Null OR is Over Limit Byte"), MSG_ERROR_MEDIA_SUBJECT(500, "LMS, MMS, KAKAO Subject is Null OR is Over Limit Byte"),
MSG_ERROR_MEDIA_MESSAGE(501, "LMS, MMS Message 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"), MSG_ERROR_REPORT(800, "REPORT DATA is Null OR is invalid"),

View File

@ -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;
}

View File

@ -76,5 +76,31 @@ public final class QueueConstants {
public static final int REPORT_TELECOM_LENGTH = 7; 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);
}
} }

View File

@ -35,4 +35,8 @@ public class BasicMessageDto {
protected int userFileSize01 = 0; protected int userFileSize01 = 0;
protected int userFileSize02 = 0; protected int userFileSize02 = 0;
protected int userFileSize03 = 0; protected int userFileSize03 = 0;
private String kakaoSenderKey;
private String kakaoTemplateCode;
private String kakaoJsonFile;
} }

View File

@ -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);
}

View File

@ -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);
}

View File

@ -1,7 +1,9 @@
package com.munjaon.server.queue.mapper; package com.munjaon.server.queue.mapper;
import com.munjaon.server.queue.dto.BasicMessageDto; import com.munjaon.server.queue.dto.BasicMessageDto;
import org.apache.ibatis.annotations.Mapper;
@Mapper
public interface LmsMapper { public interface LmsMapper {
int insert(BasicMessageDto messageDto); int insert(BasicMessageDto messageDto);
} }

View File

@ -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);
}

View File

@ -6,7 +6,7 @@ public class KakaoAlarmQueuePool extends QueuePool {
private KakaoAlarmQueuePool() {} private KakaoAlarmQueuePool() {}
public synchronized static KakaoAlarmQueuePool getInstance(){ public synchronized static KakaoAlarmQueuePool getInstance() {
if(queueInstance == null){ if(queueInstance == null){
queueInstance = new KakaoAlarmQueuePool(); queueInstance = new KakaoAlarmQueuePool();
} }

View File

@ -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);
}
}

View File

@ -1,21 +1,75 @@
package com.munjaon.server.queue.pool; 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.BasicMessageDto;
import com.munjaon.server.queue.dto.QueueInfo;
import com.munjaon.server.util.MessageUtil;
import java.nio.ByteBuffer;
public class KakaoAlarmWriteQueue extends WriteQueue { public class KakaoAlarmWriteQueue extends WriteQueue {
public KakaoAlarmWriteQueue(QueueInfo queueInfo) throws Exception {
this.queueInfo = queueInfo;
/* 큐초기화 */
// initQueue();
}
@Override @Override
public int isValidateMessageForExtend(BasicMessageDto messageDto) { 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 @Override
public void pushMessageToBuffer(BasicMessageDto messageDto) throws Exception { 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 @Override
public void initDataBuffer() { 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);
} }
} }

View File

@ -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);
}
}

View File

@ -1,20 +1,75 @@
package com.munjaon.server.queue.pool; 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.BasicMessageDto;
import com.munjaon.server.queue.dto.QueueInfo;
import com.munjaon.server.util.MessageUtil;
import java.nio.ByteBuffer;
public class KakaoFriendWriteQueue extends WriteQueue { public class KakaoFriendWriteQueue extends WriteQueue {
public KakaoFriendWriteQueue(QueueInfo queueInfo) throws Exception {
this.queueInfo = queueInfo;
/* 큐초기화 */
// initQueue();
}
@Override @Override
public int isValidateMessageForExtend(BasicMessageDto messageDto) { 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 @Override
public void pushMessageToBuffer(BasicMessageDto messageDto) throws Exception { 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 @Override
public void initDataBuffer() { 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);
} }
} }

View File

@ -150,12 +150,12 @@ public abstract class ReadQueue {
// 생성날짜 가져오기 - 생성날짜(10) / 읽은카운트(10) / 쓴카운트(10) // 생성날짜 가져오기 - 생성날짜(10) / 읽은카운트(10) / 쓴카운트(10)
this.headerBuffer.position(QueueHeaderConfig.CREATE_DATE_POSITION); this.headerBuffer.position(QueueHeaderConfig.CREATE_DATE_POSITION);
this.headerBuffer.get(this.headerArray); 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.headerArray = new byte[QueueHeaderConfig.PUSH_COUNT_LENGTH];
this.headerBuffer.position(QueueHeaderConfig.PUSH_COUNT_POSITION); this.headerBuffer.position(QueueHeaderConfig.PUSH_COUNT_POSITION);
this.headerBuffer.get(this.headerArray); 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) { } catch(Exception e) {
throw e; throw e;
} }

View File

@ -93,12 +93,12 @@ public abstract class WriteQueue {
// 생성날짜 가져오기 - 생성날짜(10) / 읽은카운트(10) / 쓴카운트(10) // 생성날짜 가져오기 - 생성날짜(10) / 읽은카운트(10) / 쓴카운트(10)
this.headerBuffer.position(QueueHeaderConfig.CREATE_DATE_POSITION); this.headerBuffer.position(QueueHeaderConfig.CREATE_DATE_POSITION);
this.headerBuffer.get(this.headerArray); 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.headerArray = new byte[QueueHeaderConfig.PUSH_COUNT_LENGTH];
this.headerBuffer.position(QueueHeaderConfig.PUSH_COUNT_POSITION); this.headerBuffer.position(QueueHeaderConfig.PUSH_COUNT_POSITION);
this.headerBuffer.get(this.headerArray); 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) { } catch(Exception e) {
throw e; throw e;
} }

View File

@ -1,7 +1,10 @@
package com.munjaon.server.queue.service; 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.dto.BasicMessageDto;
import com.munjaon.server.queue.mapper.KatMapper;
import com.munjaon.server.queue.pool.KakaoAlarmMemoryQueue; import com.munjaon.server.queue.pool.KakaoAlarmMemoryQueue;
import com.munjaon.server.queue.pool.KakaoAlarmQueuePool;
import com.munjaon.server.queue.pool.WriteQueue; import com.munjaon.server.queue.pool.WriteQueue;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
@ -11,36 +14,53 @@ import org.springframework.stereotype.Service;
@Service @Service
@RequiredArgsConstructor @RequiredArgsConstructor
public class KakaoAlarmQueueService implements QueueAction { public class KakaoAlarmQueueService implements QueueAction {
private final KatMapper katMapper;
private final KakaoAlarmQueuePool queueInstance = KakaoAlarmQueuePool.getInstance();
private final KakaoAlarmMemoryQueue memoryQueue = KakaoAlarmMemoryQueue.getInstance(); private final KakaoAlarmMemoryQueue memoryQueue = KakaoAlarmMemoryQueue.getInstance();
private final SerialNoService serialNoService;
@Override @Override
public int getQueueSize() { public int getQueueSize() {
return 0; return queueInstance.getQueueSize();
} }
@Override @Override
public boolean isExistQueue(String name) { public boolean isExistQueue(String name) {
return false; return queueInstance.isExistQueue(name);
} }
@Override @Override
public void removeQueue(String name) { public void removeQueue(String name) {
queueInstance.removeQueue(name);
} }
@Override @Override
public void addQueue(WriteQueue queue) { public void addQueue(WriteQueue queue) {
queueInstance.addQueue(queue);
} }
@Override @Override
public void pushQueue(BasicMessageDto data) { 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 @Override
public int saveMessageToTable(BasicMessageDto data) { 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 @Override

View File

@ -1,7 +1,10 @@
package com.munjaon.server.queue.service; 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.dto.BasicMessageDto;
import com.munjaon.server.queue.mapper.KftMapper;
import com.munjaon.server.queue.pool.KakaoAlarmMemoryQueue; import com.munjaon.server.queue.pool.KakaoAlarmMemoryQueue;
import com.munjaon.server.queue.pool.KakaoFriendQueuePool;
import com.munjaon.server.queue.pool.WriteQueue; import com.munjaon.server.queue.pool.WriteQueue;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
@ -11,36 +14,53 @@ import org.springframework.stereotype.Service;
@Service @Service
@RequiredArgsConstructor @RequiredArgsConstructor
public class KakaoFriendQueueService implements QueueAction { public class KakaoFriendQueueService implements QueueAction {
private final KftMapper kftMapper;
private final KakaoFriendQueuePool queueInstance = KakaoFriendQueuePool.getInstance();
private final KakaoAlarmMemoryQueue memoryQueue = KakaoAlarmMemoryQueue.getInstance(); private final KakaoAlarmMemoryQueue memoryQueue = KakaoAlarmMemoryQueue.getInstance();
private final SerialNoService serialNoService;
@Override @Override
public int getQueueSize() { public int getQueueSize() {
return 0; return queueInstance.getQueueSize();
} }
@Override @Override
public boolean isExistQueue(String name) { public boolean isExistQueue(String name) {
return false; return queueInstance.isExistQueue(name);
} }
@Override @Override
public void removeQueue(String name) { public void removeQueue(String name) {
queueInstance.removeQueue(name);
} }
@Override @Override
public void addQueue(WriteQueue queue) { public void addQueue(WriteQueue queue) {
queueInstance.addQueue(queue);
} }
@Override @Override
public void pushQueue(BasicMessageDto data) { 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 @Override
public int saveMessageToTable(BasicMessageDto data) { 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 @Override

View File

@ -1,6 +1,8 @@
package com.munjaon.server.queue.service; 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.dto.BasicMessageDto;
import com.munjaon.server.queue.mapper.MmsMapper;
import com.munjaon.server.queue.pool.MmsMemoryQueue; import com.munjaon.server.queue.pool.MmsMemoryQueue;
import com.munjaon.server.queue.pool.MmsQueuePool; import com.munjaon.server.queue.pool.MmsQueuePool;
import com.munjaon.server.queue.pool.WriteQueue; import com.munjaon.server.queue.pool.WriteQueue;
@ -12,8 +14,10 @@ import org.springframework.stereotype.Service;
@Service @Service
@RequiredArgsConstructor @RequiredArgsConstructor
public class MmsQueueService implements QueueAction { public class MmsQueueService implements QueueAction {
private final MmsMapper mmsMapper;
private final MmsQueuePool queueInstance = MmsQueuePool.getInstance(); private final MmsQueuePool queueInstance = MmsQueuePool.getInstance();
private final MmsMemoryQueue memoryQueue = MmsMemoryQueue.getInstance(); private final MmsMemoryQueue memoryQueue = MmsMemoryQueue.getInstance();
private final SerialNoService serialNoService;
@Override @Override
public int getQueueSize() { public int getQueueSize() {
@ -51,7 +55,12 @@ public class MmsQueueService implements QueueAction {
@Override @Override
public int saveMessageToTable(BasicMessageDto data) { 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 @Override

View 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;
}
}

View File

@ -5,7 +5,7 @@ import com.munjaon.server.util.CommonUtil;
import java.nio.ByteBuffer; import java.nio.ByteBuffer;
public final class LmsMessage { 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; public static final int DELIVER_LMS_ACK_BODY_LENGTH = 21;
/* DELIVER */ /* DELIVER */

View File

@ -5,7 +5,7 @@ import com.munjaon.server.util.CommonUtil;
import java.nio.ByteBuffer; import java.nio.ByteBuffer;
public final class MmsMessage { 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; public static final int DELIVER_MMS_ACK_BODY_LENGTH = 21;
/* DELIVER */ /* DELIVER */
@ -19,6 +19,14 @@ public final class MmsMessage {
public static final int DELIVER_FILECOUNT_LENGTH = 1; 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 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) { public static void putSubjectForDeliver(ByteBuffer buffer, String subject) {
if (buffer == null || subject == null) { if (buffer == null || subject == null) {
return; return;
@ -78,6 +86,40 @@ public final class MmsMessage {
return Packet.getString(destArray); 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) { // public static void makeDataForDeliver(ByteBuffer buffer, MunjaonMsg data) {
// if (buffer == null || data == null) { // if (buffer == null || data == null) {
// return; // return;

View File

@ -47,6 +47,7 @@ public class CollectServerService extends Service {
} else { } else {
this.IS_READY_YN = false; this.IS_READY_YN = false;
} }
saveSystemLog("CollectServerService ready : " + this.IS_READY_YN);
} }
@Override @Override

View File

@ -8,8 +8,9 @@ import com.munjaon.server.queue.enums.QueueTypeWorker;
import com.munjaon.server.server.dto.ConnectUserDto; import com.munjaon.server.server.dto.ConnectUserDto;
import com.munjaon.server.server.packet.*; import com.munjaon.server.server.packet.*;
import com.munjaon.server.server.queue.CollectUserQueue; 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.io.IOException;
import java.nio.ByteBuffer; import java.nio.ByteBuffer;
import java.nio.channels.SelectionKey; import java.nio.channels.SelectionKey;
@ -158,15 +159,144 @@ public class CollectReadTask implements Callable<ConnectUserDto> {
} }
private void recvMmsDeliver(SocketChannel channel, ByteBuffer headBuffer) throws IOException { 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 { 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 { 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 { private void recvLinkCheck(SocketChannel channel) throws IOException {

View File

@ -8,7 +8,10 @@ import java.io.File;
import java.io.FileInputStream; import java.io.FileInputStream;
import java.io.FileOutputStream; import java.io.FileOutputStream;
import java.io.IOException; import java.io.IOException;
import java.nio.ByteBuffer;
import java.nio.channels.FileChannel; import java.nio.channels.FileChannel;
import java.nio.file.Paths;
import java.nio.file.StandardOpenOption;
import java.time.LocalDateTime; import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter; import java.time.format.DateTimeFormatter;
import java.util.ArrayList; import java.util.ArrayList;
@ -346,6 +349,17 @@ public final class JobFileFactory {
return transferStatus; 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) { 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; return rootDirectory + File.separator + orderNo + File.separator + orderNo + "_" + companyNo + File.separator + date;
} }

View File

@ -171,63 +171,75 @@ public final class MessageUtil {
buffer.position(BodyCommonConfig.USERID_BYTE_POSITION); buffer.position(BodyCommonConfig.USERID_BYTE_POSITION);
destArray = new byte[BodyCommonConfig.USERID_BYTE_LENGTH]; destArray = new byte[BodyCommonConfig.USERID_BYTE_LENGTH];
buffer.get(destArray); buffer.get(destArray);
messageDto.setUserId(new String(destArray)); messageDto.setUserId(QueueConstants.getString(destArray));
// messageDto.setUserId(new String(destArray));
/* 2. 요금제(선불 : P / 후불 : A) : final : 아무작업도 하지 않음 */ /* 2. 요금제(선불 : P / 후불 : A) : final : 아무작업도 하지 않음 */
/* 3. 단가 */ /* 3. 단가 */
buffer.position(BodyCommonConfig.UNITCOST_BYTE_POSITION); buffer.position(BodyCommonConfig.UNITCOST_BYTE_POSITION);
destArray = new byte[BodyCommonConfig.UNITCOST_BYTE_LENGTH]; destArray = new byte[BodyCommonConfig.UNITCOST_BYTE_LENGTH];
buffer.get(destArray); buffer.get(destArray);
messageDto.setUnitCost(new String(destArray)); messageDto.setUnitCost(QueueConstants.getString(destArray));
// messageDto.setUnitCost(new String(destArray));
/* 4. MSG Group ID */ /* 4. MSG Group ID */
buffer.position(BodyCommonConfig.MSGGROUPID_BYTE_POSITION); buffer.position(BodyCommonConfig.MSGGROUPID_BYTE_POSITION);
destArray = new byte[BodyCommonConfig.MSGGROUPID_BYTE_LENGTH]; destArray = new byte[BodyCommonConfig.MSGGROUPID_BYTE_LENGTH];
buffer.get(destArray); buffer.get(destArray);
messageDto.setMsgGroupID(new String(destArray)); messageDto.setMsgGroupID(QueueConstants.getString(destArray));
// messageDto.setMsgGroupID(new String(destArray));
/* 5. MSG ID */ /* 5. MSG ID */
buffer.position(BodyCommonConfig.MSGID_BYTE_POSITION); buffer.position(BodyCommonConfig.MSGID_BYTE_POSITION);
destArray = new byte[BodyCommonConfig.MSGID_BYTE_LENGTH]; destArray = new byte[BodyCommonConfig.MSGID_BYTE_LENGTH];
buffer.get(destArray); buffer.get(destArray);
messageDto.setUserMsgID(new String(destArray)); messageDto.setUserMsgID(QueueConstants.getString(destArray));
// messageDto.setUserMsgID(new String(destArray));
/* 6. Service Type */ /* 6. Service Type */
buffer.position(BodyCommonConfig.SERVICETYPE_BYTE_POSITION); buffer.position(BodyCommonConfig.SERVICETYPE_BYTE_POSITION);
destArray = new byte[BodyCommonConfig.SERVICETYPE_BYTE_LENGTH]; destArray = new byte[BodyCommonConfig.SERVICETYPE_BYTE_LENGTH];
buffer.get(destArray); buffer.get(destArray);
messageDto.setServiceType(new String(destArray)); messageDto.setServiceType(QueueConstants.getString(destArray));
// messageDto.setServiceType(new String(destArray));
/* 7. 메시지 전송 결과 >> 성공 : 0 / 필터링 : 기타값 */ /* 7. 메시지 전송 결과 >> 성공 : 0 / 필터링 : 기타값 */
buffer.position(BodyCommonConfig.SENDSTATUS_BYTE_POSITION); buffer.position(BodyCommonConfig.SENDSTATUS_BYTE_POSITION);
destArray = new byte[BodyCommonConfig.SENDSTATUS_BYTE_LENGTH]; destArray = new byte[BodyCommonConfig.SENDSTATUS_BYTE_LENGTH];
buffer.get(destArray); buffer.get(destArray);
messageDto.setSendStatus(new String(destArray)); messageDto.setSendStatus(QueueConstants.getString(destArray));
// messageDto.setSendStatus(new String(destArray));
/* 8. 회신번호 */ /* 8. 회신번호 */
buffer.position(BodyCommonConfig.SENDER_BYTE_POSITION); buffer.position(BodyCommonConfig.SENDER_BYTE_POSITION);
destArray = new byte[BodyCommonConfig.SENDER_BYTE_LENGTH]; destArray = new byte[BodyCommonConfig.SENDER_BYTE_LENGTH];
buffer.get(destArray); buffer.get(destArray);
messageDto.setUserSender(new String(destArray)); messageDto.setUserSender(QueueConstants.getString(destArray));
// messageDto.setUserSender(new String(destArray));
/* 9. 수신번호 */ /* 9. 수신번호 */
buffer.position(BodyCommonConfig.RECEIVER_BYTE_POSITION); buffer.position(BodyCommonConfig.RECEIVER_BYTE_POSITION);
destArray = new byte[BodyCommonConfig.RECEIVER_BYTE_LENGTH]; destArray = new byte[BodyCommonConfig.RECEIVER_BYTE_LENGTH];
buffer.get(destArray); buffer.get(destArray);
messageDto.setUserReceiver(new String(destArray)); messageDto.setUserReceiver(QueueConstants.getString(destArray));
// messageDto.setUserReceiver(new String(destArray));
/* 10. 예약시간 */ /* 10. 예약시간 */
buffer.position(BodyCommonConfig.RESERVEDT_BYTE_POSITION); buffer.position(BodyCommonConfig.RESERVEDT_BYTE_POSITION);
destArray = new byte[BodyCommonConfig.RESERVEDT_BYTE_LENGTH]; destArray = new byte[BodyCommonConfig.RESERVEDT_BYTE_LENGTH];
buffer.get(destArray); buffer.get(destArray);
messageDto.setReserveDt(new String(destArray)); messageDto.setReserveDt(QueueConstants.getString(destArray));
// messageDto.setReserveDt(new String(destArray));
/* 11. 요청시간 */ /* 11. 요청시간 */
buffer.position(BodyCommonConfig.REQUESTDT_BYTE_POSITION); buffer.position(BodyCommonConfig.REQUESTDT_BYTE_POSITION);
destArray = new byte[BodyCommonConfig.REQUESTDT_BYTE_LENGTH]; destArray = new byte[BodyCommonConfig.REQUESTDT_BYTE_LENGTH];
buffer.get(destArray); buffer.get(destArray);
messageDto.setRequestDt(new String(destArray)); messageDto.setRequestDt(QueueConstants.getString(destArray));
// messageDto.setRequestDt(new String(destArray));
/* 12. 원격 주소 */ /* 12. 원격 주소 */
buffer.position(BodyCommonConfig.REMOTEIP_BYTE_POSITION); buffer.position(BodyCommonConfig.REMOTEIP_BYTE_POSITION);
destArray = new byte[BodyCommonConfig.REMOTEIP_BYTE_LENGTH]; destArray = new byte[BodyCommonConfig.REMOTEIP_BYTE_LENGTH];
buffer.get(destArray); buffer.get(destArray);
messageDto.setRemoteIP(new String(destArray)); messageDto.setRemoteIP(QueueConstants.getString(destArray));
// messageDto.setRemoteIP(new String(destArray));
/* 13. 발송망 */ /* 13. 발송망 */
buffer.position(BodyCommonConfig.AGENT_CODE_BYTE_POSITION); buffer.position(BodyCommonConfig.AGENT_CODE_BYTE_POSITION);
destArray = new byte[BodyCommonConfig.AGENT_CODE_BYTE_LENGTH]; destArray = new byte[BodyCommonConfig.AGENT_CODE_BYTE_LENGTH];
buffer.get(destArray); 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) { public static void setBytesForSmsMessage(ByteBuffer buffer, BasicMessageDto messageDto) {
@ -245,7 +257,8 @@ public final class MessageUtil {
buffer.position(SmsBodyConfig.SMS_MSG_BYTE_POSITION); buffer.position(SmsBodyConfig.SMS_MSG_BYTE_POSITION);
destArray = new byte[SmsBodyConfig.SMS_MSG_BYTE_LENGTH]; destArray = new byte[SmsBodyConfig.SMS_MSG_BYTE_LENGTH];
buffer.get(destArray); 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) { public static void setBytesForMediaMessage(ByteBuffer buffer, BasicMessageDto messageDto) {
@ -257,6 +270,61 @@ public final class MessageUtil {
buffer.put(messageDto.getUserMessage().getBytes()); 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) { public static void getBytesForMediaMessage(ByteBuffer buffer, BasicMessageDto messageDto) {
byte[] destArray = null; byte[] destArray = null;
if (buffer == null || messageDto == null) { if (buffer == null || messageDto == null) {
@ -266,12 +334,14 @@ public final class MessageUtil {
buffer.position(MediaBodyConfig.SUBJECT_BYTE_POSITION); buffer.position(MediaBodyConfig.SUBJECT_BYTE_POSITION);
destArray = new byte[MediaBodyConfig.SUBJECT_BYTE_LENGTH]; destArray = new byte[MediaBodyConfig.SUBJECT_BYTE_LENGTH];
buffer.get(destArray); buffer.get(destArray);
messageDto.setUserSubject(new String(destArray)); messageDto.setUserSubject(QueueConstants.getString(destArray));
// messageDto.setUserSubject(new String(destArray));
/* 15. 메시지 */ /* 15. 메시지 */
buffer.position(MediaBodyConfig.MEDIA_MSG_BYTE_POSITION); buffer.position(MediaBodyConfig.MEDIA_MSG_BYTE_POSITION);
destArray = new byte[MediaBodyConfig.MEDIA_MSG_BYTE_LENGTH]; destArray = new byte[MediaBodyConfig.MEDIA_MSG_BYTE_LENGTH];
buffer.get(destArray); 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) { public static void setBytesForMmsMessage(ByteBuffer buffer, BasicMessageDto messageDto) {
@ -304,22 +374,26 @@ public final class MessageUtil {
buffer.position(MediaBodyConfig.FILECNT_BYTE_POSITION); buffer.position(MediaBodyConfig.FILECNT_BYTE_POSITION);
destArray = new byte[MediaBodyConfig.FILECNT_BYTE_LENGTH]; destArray = new byte[MediaBodyConfig.FILECNT_BYTE_LENGTH];
buffer.get(destArray); 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 */ /* 17. 파일명 #1 */
buffer.position(MediaBodyConfig.FILENAME_ONE_BYTE_POSITION); buffer.position(MediaBodyConfig.FILENAME_ONE_BYTE_POSITION);
destArray = new byte[MediaBodyConfig.FILENAME_ONE_BYTE_LENGTH]; destArray = new byte[MediaBodyConfig.FILENAME_ONE_BYTE_LENGTH];
buffer.get(destArray); buffer.get(destArray);
messageDto.setUserFileName01(new String(destArray)); messageDto.setUserFileName01(QueueConstants.getString(destArray));
// messageDto.setUserFileName01(new String(destArray));
/* 18. 파일명 #2 */ /* 18. 파일명 #2 */
buffer.position(MediaBodyConfig.FILENAME_TWO_BYTE_POSITION); buffer.position(MediaBodyConfig.FILENAME_TWO_BYTE_POSITION);
destArray = new byte[MediaBodyConfig.FILENAME_TWO_BYTE_LENGTH]; destArray = new byte[MediaBodyConfig.FILENAME_TWO_BYTE_LENGTH];
buffer.get(destArray); buffer.get(destArray);
messageDto.setUserFileName02(new String(destArray)); messageDto.setUserFileName02(QueueConstants.getString(destArray));
// messageDto.setUserFileName02(new String(destArray));
/* 19. 파일명 #3 */ /* 19. 파일명 #3 */
buffer.position(MediaBodyConfig.FILENAME_THREE_BYTE_POSITION); buffer.position(MediaBodyConfig.FILENAME_THREE_BYTE_POSITION);
destArray = new byte[MediaBodyConfig.FILENAME_THREE_BYTE_LENGTH]; destArray = new byte[MediaBodyConfig.FILENAME_THREE_BYTE_LENGTH];
buffer.get(destArray); buffer.get(destArray);
messageDto.setUserFileName03(new String(destArray)); messageDto.setUserFileName03(QueueConstants.getString(destArray));
// messageDto.setUserFileName03(new String(destArray));
} }
public static int isValidateMessageForReport(ReportDto reportDto) { public static int isValidateMessageForReport(ReportDto reportDto) {

View File

@ -2,7 +2,7 @@ spring:
datasource: datasource:
server: server:
driver-class-name: org.mariadb.jdbc.Driver 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 username: mjonUr_agent
password: mjagent123$ password: mjagent123$
@ -12,6 +12,6 @@ server:
# ### 에이전트 설정 관련 #################################################################################### # ### 에이전트 설정 관련 ####################################################################################
agent: agent:
root-path: C:/apps/agent_server root-path: /home/mjon_server_agent
server-property-file: C:/apps/agent_server/config/server.properties server-property-file: /home/mjon_server_agent/config/server.properties
db-name: mjon_agent_back db-name: mjon_agent_back

View File

@ -2,6 +2,7 @@ spring:
datasource: datasource:
server: server:
driver-class-name: org.mariadb.jdbc.Driver 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 jdbc-url: jdbc:mariadb://119.193.215.98:3306/mjon_agent_back
username: mjonUr_agent username: mjonUr_agent
password: mjagent123$ password: mjagent123$

View 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>

View 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>

View 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>