MMS, 알림톡, 친구톡 기능 추가
This commit is contained in:
parent
2679d17629
commit
aa4fc21692
@ -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
|
||||||
|
|||||||
@ -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() {
|
||||||
|
|||||||
@ -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"),
|
||||||
|
|||||||
@ -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 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 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;
|
||||||
}
|
}
|
||||||
|
|||||||
@ -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;
|
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);
|
||||||
}
|
}
|
||||||
|
|||||||
@ -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() {}
|
private KakaoAlarmQueuePool() {}
|
||||||
|
|
||||||
public synchronized static KakaoAlarmQueuePool getInstance(){
|
public synchronized static KakaoAlarmQueuePool getInstance() {
|
||||||
if(queueInstance == null){
|
if(queueInstance == null){
|
||||||
queueInstance = new KakaoAlarmQueuePool();
|
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;
|
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);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -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;
|
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);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -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;
|
||||||
}
|
}
|
||||||
|
|||||||
@ -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;
|
||||||
}
|
}
|
||||||
|
|||||||
@ -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
|
||||||
|
|||||||
@ -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
|
||||||
|
|||||||
@ -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
|
||||||
|
|||||||
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;
|
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 */
|
||||||
|
|||||||
@ -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;
|
||||||
|
|||||||
@ -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
|
||||||
|
|||||||
@ -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 {
|
||||||
|
|||||||
@ -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;
|
||||||
}
|
}
|
||||||
|
|||||||
@ -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) {
|
||||||
|
|||||||
@ -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
|
||||||
@ -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$
|
||||||
|
|||||||
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