Skip to content
This repository was archived by the owner on May 27, 2025. It is now read-only.

Commit 297c9e0

Browse files
authored
Merge pull request #4 from wileyday/main
예약 발송 기능 추가
2 parents 213dd0a + ffd8377 commit 297c9e0

File tree

5 files changed

+29
-13
lines changed

5 files changed

+29
-13
lines changed

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,3 @@
11
config.json
22
db.json
3+
logs/

agent.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -190,7 +190,7 @@ func getAPIConfig(homedir string, apiconf *APIConfig) error {
190190
func pollMsg() {
191191
for {
192192
time.Sleep(time.Second * 1)
193-
rows, err := db.Query("SELECT id, payload FROM msg WHERE sent = false AND createdAt >= SUBDATE(NOW(), INTERVAL 24 HOUR) AND sendAttempts < 3 LIMIT 10000")
193+
rows, err := db.Query("SELECT id, payload FROM msg WHERE sent = false AND scheduledAt <= NOW() AND scheduledAt >= SUBDATE(NOW(), INTERVAL 24 HOUR) AND sendAttempts < 3 LIMIT 10000")
194194
if err != nil {
195195
errlog.Println("[메시지발송] DB Query ERROR:", err)
196196
time.Sleep(time.Second * 5)

create_table.sql

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,10 @@
11
CREATE TABLE msg (
22
id integer AUTO_INCREMENT primary key,
3-
createdAt DATETIME DEFAULT CURRENT_TIMESTAMP,
4-
updatedAt DATETIME DEFAULT CURRENT_TIMESTAMP,
5-
sendAttempts SMALLINT DEFAULT 0,
6-
reportAttempts SMALLINT DEFAULT 0,
3+
createdAt DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
4+
updatedAt DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
5+
scheduledAt DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
6+
sendAttempts SMALLINT NOT NULL DEFAULT 0,
7+
reportAttempts SMALLINT NOT NULL DEFAULT 0,
78
`to` VARCHAR(20) AS (payload->>'$.to') STORED,
89
`from` VARCHAR(20) AS (payload->>'$.from') STORED,
910
groupId VARCHAR(255) AS (result->>'$.groupId') STORED,
@@ -13,9 +14,10 @@ CREATE TABLE msg (
1314
statusMessage VARCHAR(255) AS (result->>'$.statusMessage') STORED,
1415
payload JSON,
1516
result JSON default NULL,
16-
sent BOOLEAN default false,
17+
sent BOOLEAN NOT NULL default false,
1718
KEY (`createdAt`),
1819
KEY (`updatedAt`),
20+
KEY (`scheduledAt`),
1921
KEY (`sendAttempts`),
2022
KEY (`reportAttempts`),
2123
KEY (`to`),

create_table_maria.sql

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,10 @@
11
CREATE TABLE msg (
22
id integer AUTO_INCREMENT primary key,
3-
createdAt DATETIME DEFAULT CURRENT_TIMESTAMP,
4-
updatedAt DATETIME DEFAULT CURRENT_TIMESTAMP,
5-
sendAttempts SMALLINT DEFAULT 0,
6-
reportAttempts SMALLINT DEFAULT 0,
3+
createdAt DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
4+
updatedAt DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
5+
scheduledAt DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
6+
sendAttempts SMALLINT NOT NULL DEFAULT 0,
7+
reportAttempts SMALLINT NOT NULL DEFAULT 0,
78
`to` VARCHAR(20) AS (JSON_UNQUOTE(JSON_EXTRACT(payload, '$.to'))) STORED,
89
`from` VARCHAR(20) AS (JSON_UNQUOTE(JSON_EXTRACT(payload, '$.from'))) STORED,
910
groupId VARCHAR(255) AS (JSON_UNQUOTE(JSON_EXTRACT(result, '$.groupId'))) STORED,
@@ -13,15 +14,17 @@ CREATE TABLE msg (
1314
statusMessage VARCHAR(255) AS (JSON_UNQUOTE(JSON_EXTRACT(result, '$.statusMessage'))) STORED,
1415
payload JSON,
1516
result JSON default NULL,
16-
sent BOOLEAN default false,
17+
sent BOOLEAN NOT NULL default false,
1718
KEY (`createdAt`),
1819
KEY (`updatedAt`),
20+
KEY (`scheduledAt`),
1921
KEY (`sendAttempts`),
2022
KEY (`reportAttempts`),
2123
KEY (`to`),
2224
KEY (`from`),
2325
KEY (groupId),
2426
KEY (messageId),
27+
KEY (status),
2528
KEY (statusCode),
2629
KEY (sent)
2730
) DEFAULT CHARSET=utf8mb4;

samples.sql

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,14 +2,14 @@
22
INSERT INTO msg(payload) VALUES(json_object(
33
'to', '01000000001',
44
'from', '020000001',
5-
'text', '테스트 메시지',
5+
'text', '테스트 메시지'
66
));
77

88
-- LMS 발송
99
INSERT INTO msg(payload) VALUES(json_object(
1010
'to', '01000000001',
1111
'from', '020000001',
12-
'text', '한글 45자, 영자 90자 이상 입력되면 자동으로 LMS타입의 문자메시지가 발송됩니다. 0123456789 ABCDEFGHIJKLMNOPQRSTUVWXYZ',
12+
'text', '한글 45자, 영자 90자 이상 입력되면 자동으로 LMS타입의 문자메시지가 발송됩니다. 0123456789 ABCDEFGHIJKLMNOPQRSTUVWXYZ'
1313
));
1414

1515
-- MMS 발송(JPG 이미지 파일 상대경로 입력 시 /opt/agent/files/ 아래 파일)
@@ -71,3 +71,13 @@ INSERT INTO msg(payload) VALUES(json_object(
7171
))
7272
)
7373
));
74+
75+
-- 발송 예약 (2021년 3월 26일 12시 20분에 발송 예약)
76+
INSERT INTO msg(scheduledAt, payload) VALUES(
77+
'2021-03-26 12:20:00',
78+
json_object(
79+
'to', '01000000001',
80+
'from', '020000001',
81+
'text', '테스트 메시지'
82+
)
83+
);

0 commit comments

Comments
 (0)