From 224458a8a197d95c814293db27892ec1a54cfb11 Mon Sep 17 00:00:00 2001 From: chlehdwon Date: Mon, 29 May 2023 13:03:15 +0000 Subject: [PATCH 01/27] Add: sendEmail --- package-lock.json | 49 ++++++++++++++++++++----------------- package.json | 2 +- src/modules/stores/awsS3.js | 31 +++++++++++++++++++++++ 3 files changed, 58 insertions(+), 24 deletions(-) diff --git a/package-lock.json b/package-lock.json index 73853d65..eabd9c67 100644 --- a/package-lock.json +++ b/package-lock.json @@ -15,7 +15,7 @@ "ajv": "^8.12.0", "ajv-errors": "^3.0.0", "ajv-formats": "^2.1.1", - "aws-sdk": "^2.1182.0", + "aws-sdk": "^2.1386.0", "axios": "^0.27.2", "ci": "^2.2.0", "connect-mongo": "^4.6.0", @@ -4941,9 +4941,9 @@ } }, "node_modules/aws-sdk": { - "version": "2.1334.0", - "resolved": "https://registry.npmjs.org/aws-sdk/-/aws-sdk-2.1334.0.tgz", - "integrity": "sha512-nJuV8QYY39sI1Q7u7Dsd2XcxDkUG/Z5oGosc41LrTBAHQjPib3rXV06zaL9jS+4yQ9Ko7qon2f/0ZVVuUPJjDA==", + "version": "2.1386.0", + "resolved": "https://registry.npmjs.org/aws-sdk/-/aws-sdk-2.1386.0.tgz", + "integrity": "sha512-bmUvpNRR4x1YvTaAm7WK/2lSNVPrNuiYlleU47GA5Xskh8PKaWedGHvGinH2YwhC720hM0Qc4f4/snUPGJ0eYg==", "dependencies": { "buffer": "4.9.2", "events": "1.1.1", @@ -4954,7 +4954,7 @@ "url": "0.10.3", "util": "^0.12.4", "uuid": "8.0.0", - "xml2js": "0.4.19" + "xml2js": "0.5.0" }, "engines": { "node": ">= 10.0.0" @@ -11819,18 +11819,21 @@ } }, "node_modules/xml2js": { - "version": "0.4.19", - "resolved": "https://registry.npmjs.org/xml2js/-/xml2js-0.4.19.tgz", - "integrity": "sha512-esZnJZJOiJR9wWKMyuvSE1y6Dq5LCuJanqhxslH2bxM6duahNZ+HMpCLhBQGZkbX6xRf8x1Y2eJlgt2q3qo49Q==", + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/xml2js/-/xml2js-0.5.0.tgz", + "integrity": "sha512-drPFnkQJik/O+uPKpqSgr22mpuFHqKdbS835iAQrUC73L2F5WkboIRd63ai/2Yg6I1jzifPFKH2NTK+cfglkIA==", "dependencies": { "sax": ">=0.6.0", - "xmlbuilder": "~9.0.1" + "xmlbuilder": "~11.0.0" + }, + "engines": { + "node": ">=4.0.0" } }, "node_modules/xmlbuilder": { - "version": "9.0.7", - "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-9.0.7.tgz", - "integrity": "sha512-7YXTQc3P2l9+0rjaUbLwMKRhtmwg1M1eDf6nag7urC7pIPYLD9W/jmzQ4ptRSUbodw5S0jfoGTflLemQibSpeQ==", + "version": "11.0.1", + "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-11.0.1.tgz", + "integrity": "sha512-fDlsI/kFEx7gLvbecc0/ohLG50fugQp8ryHzMTuW9vSa1GJ0XYWKnhsUx7oie3G98+r56aTQIUB4kht42R3JvA==", "engines": { "node": ">=4.0" } @@ -15642,9 +15645,9 @@ "integrity": "sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==" }, "aws-sdk": { - "version": "2.1334.0", - "resolved": "https://registry.npmjs.org/aws-sdk/-/aws-sdk-2.1334.0.tgz", - "integrity": "sha512-nJuV8QYY39sI1Q7u7Dsd2XcxDkUG/Z5oGosc41LrTBAHQjPib3rXV06zaL9jS+4yQ9Ko7qon2f/0ZVVuUPJjDA==", + "version": "2.1386.0", + "resolved": "https://registry.npmjs.org/aws-sdk/-/aws-sdk-2.1386.0.tgz", + "integrity": "sha512-bmUvpNRR4x1YvTaAm7WK/2lSNVPrNuiYlleU47GA5Xskh8PKaWedGHvGinH2YwhC720hM0Qc4f4/snUPGJ0eYg==", "requires": { "buffer": "4.9.2", "events": "1.1.1", @@ -15655,7 +15658,7 @@ "url": "0.10.3", "util": "^0.12.4", "uuid": "8.0.0", - "xml2js": "0.4.19" + "xml2js": "0.5.0" }, "dependencies": { "querystring": { @@ -20816,18 +20819,18 @@ "requires": {} }, "xml2js": { - "version": "0.4.19", - "resolved": "https://registry.npmjs.org/xml2js/-/xml2js-0.4.19.tgz", - "integrity": "sha512-esZnJZJOiJR9wWKMyuvSE1y6Dq5LCuJanqhxslH2bxM6duahNZ+HMpCLhBQGZkbX6xRf8x1Y2eJlgt2q3qo49Q==", + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/xml2js/-/xml2js-0.5.0.tgz", + "integrity": "sha512-drPFnkQJik/O+uPKpqSgr22mpuFHqKdbS835iAQrUC73L2F5WkboIRd63ai/2Yg6I1jzifPFKH2NTK+cfglkIA==", "requires": { "sax": ">=0.6.0", - "xmlbuilder": "~9.0.1" + "xmlbuilder": "~11.0.0" } }, "xmlbuilder": { - "version": "9.0.7", - "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-9.0.7.tgz", - "integrity": "sha512-7YXTQc3P2l9+0rjaUbLwMKRhtmwg1M1eDf6nag7urC7pIPYLD9W/jmzQ4ptRSUbodw5S0jfoGTflLemQibSpeQ==" + "version": "11.0.1", + "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-11.0.1.tgz", + "integrity": "sha512-fDlsI/kFEx7gLvbecc0/ohLG50fugQp8ryHzMTuW9vSa1GJ0XYWKnhsUx7oie3G98+r56aTQIUB4kht42R3JvA==" }, "xmlcreate": { "version": "2.0.4", diff --git a/package.json b/package.json index 9c7d1fd9..ab385843 100644 --- a/package.json +++ b/package.json @@ -10,7 +10,7 @@ "ajv": "^8.12.0", "ajv-errors": "^3.0.0", "ajv-formats": "^2.1.1", - "aws-sdk": "^2.1182.0", + "aws-sdk": "^2.1386.0", "axios": "^0.27.2", "ci": "^2.2.0", "connect-mongo": "^4.6.0", diff --git a/src/modules/stores/awsS3.js b/src/modules/stores/awsS3.js index ccdac2c8..084d3433 100644 --- a/src/modules/stores/awsS3.js +++ b/src/modules/stores/awsS3.js @@ -6,7 +6,9 @@ AWS.config.update({ region: "ap-northeast-2", signatureVersion: "v4", }); + const s3 = new AWS.S3({ apiVersion: "2006-03-01" }); +const ses = new AWS.SES({ apiVersion: "2010-12-01" }); // function to list Object module.exports.getList = (directoryPath, cb) => { @@ -80,3 +82,32 @@ module.exports.foundObject = (filePath, cb) => { module.exports.getS3Url = (filePath) => { return `${awsEnv.s3Url}${filePath}`; }; + +module.exports.sendReportEmail = (reportUser, reportedEmail) => { + const params = { + Destination: { + ToAddresses: [reportedEmail], + }, + Message: { + Body: { + Text: { + Charset: "UTF-8", + Data: `본문`, + }, + }, + Subject: { + Charset: "UTF-8", + Data: `[SPARCS TAXI] ${reportUser}님으로부터 신고가 접수되었습니다.`, + }, + }, + Source: "sparcs-taxi@gmail.com", + }; + + ses.sendEmail(params, (err, data) => { + if (err) { + console.log("Error sending email:", err); + } else { + console.log("Email sent successfully:", data); + } + }); +}; From d27858741ecc0982be7c98fd1b568bd6bdcf0ef3 Mon Sep 17 00:00:00 2001 From: chlehdwon Date: Mon, 29 May 2023 13:16:25 +0000 Subject: [PATCH 02/27] Refactor: change awsS3 to aws --- src/modules/socket.js | 2 +- src/modules/stores/{awsS3.js => aws.js} | 4 ++-- src/services/chats.js | 6 +++--- src/services/reports.js | 4 ++++ src/services/users.js | 6 +++--- 5 files changed, 13 insertions(+), 9 deletions(-) rename src/modules/stores/{awsS3.js => aws.js} (95%) diff --git a/src/modules/socket.js b/src/modules/socket.js index c16e7856..a8a20ef7 100644 --- a/src/modules/socket.js +++ b/src/modules/socket.js @@ -4,7 +4,7 @@ const sessionMiddleware = require("../middlewares/session"); const logger = require("./logger"); const { getLoginInfo } = require("./auths/login"); const { roomModel, userModel, chatModel } = require("./stores/mongo"); -const { getS3Url } = require("./stores/awsS3"); +const { getS3Url } = require("./stores/aws"); const { getTokensOfUsers, sendMessageByTokens } = require("./fcm"); const { frontUrl } = require("../../loadenv"); diff --git a/src/modules/stores/awsS3.js b/src/modules/stores/aws.js similarity index 95% rename from src/modules/stores/awsS3.js rename to src/modules/stores/aws.js index 084d3433..5e5cc314 100644 --- a/src/modules/stores/awsS3.js +++ b/src/modules/stores/aws.js @@ -83,7 +83,7 @@ module.exports.getS3Url = (filePath) => { return `${awsEnv.s3Url}${filePath}`; }; -module.exports.sendReportEmail = (reportUser, reportedEmail) => { +module.exports.sendReportEmail = (reportUser, reportedEmail, report) => { const params = { Destination: { ToAddresses: [reportedEmail], @@ -92,7 +92,7 @@ module.exports.sendReportEmail = (reportUser, reportedEmail) => { Body: { Text: { Charset: "UTF-8", - Data: `본문`, + Data: `본문(추가예정)`, }, }, Subject: { diff --git a/src/services/chats.js b/src/services/chats.js index 22e765b1..14063e0e 100644 --- a/src/services/chats.js +++ b/src/services/chats.js @@ -1,6 +1,6 @@ const { chatModel, userModel, roomModel } = require("../modules/stores/mongo"); const { chatPopulateOption } = require("../modules/populates/chats"); -const awsS3 = require("../modules/stores/awsS3"); +const aws = require("../modules/stores/aws"); const { transformChatsForRoom, emitChatEvent } = require("../modules/socket"); const chatCount = 60; @@ -188,7 +188,7 @@ const uploadChatImgGetPUrlHandler = async (req, res) => { }); const chat = await chatDocument.save(); const key = `chat-img/${chat._id}`; - awsS3.getUploadPUrlPost(key, type, (err, data) => { + aws.getUploadPUrlPost(key, type, (err, data) => { if (err) { return res .status(500) @@ -234,7 +234,7 @@ const uploadChatImgDoneHandler = async (req, res) => { }); } const key = `chat-img/${chat._id}`; - awsS3.foundObject(key, async (err, data) => { + aws.foundObject(key, async (err, data) => { if (err) { return res .status(500) diff --git a/src/services/reports.js b/src/services/reports.js index 1ce7b5ae..a8ceca48 100644 --- a/src/services/reports.js +++ b/src/services/reports.js @@ -1,5 +1,6 @@ const { userModel, reportModel } = require("../modules/stores/mongo"); const { reportPopulateOption } = require("../modules/populates/reports"); +const { sendReportEmail } = require("../modules/stores/aws"); const logger = require("../modules/logger"); const createHandler = async (req, res) => { @@ -24,6 +25,9 @@ const createHandler = async (req, res) => { }); await report.save(); + + sendReportEmail(user.nickname, reported.email, report); + res.status(200).send("User/report : report successful"); } catch (err) { logger.error(err); diff --git a/src/services/users.js b/src/services/users.js index 31a8403d..77af8c7d 100644 --- a/src/services/users.js +++ b/src/services/users.js @@ -1,6 +1,6 @@ const { userModel } = require("../modules/stores/mongo"); const logger = require("../modules/logger"); -const awsS3 = require("../modules/stores/awsS3"); +const aws = require("../modules/stores/aws"); const agreeOnTermsOfServiceHandler = async (req, res) => { try { @@ -83,7 +83,7 @@ const editProfileImgGetPUrlHandler = async (req, res) => { .send("User/editProfileImg/getPUrl : internal server error"); } const key = `profile-img/${user._id}`; - awsS3.getUploadPUrlPost(key, type, (err, data) => { + aws.getUploadPUrlPost(key, type, (err, data) => { if (err) { return res .status(500) @@ -110,7 +110,7 @@ const editProfileImgDoneHandler = async (req, res) => { .send("User/editProfileImg/done : internal server error"); } const key = `profile-img/${user._id}`; - awsS3.foundObject(key, async (err) => { + aws.foundObject(key, async (err) => { if (err) { logger.error(err); return res From 66ab41dbc64bf2177dfc00e453d68a15988f6416 Mon Sep 17 00:00:00 2001 From: withsang Date: Tue, 30 May 2023 23:29:44 +0900 Subject: [PATCH 03/27] Fix: send account chat notification --- src/modules/socket.js | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/src/modules/socket.js b/src/modules/socket.js index c16e7856..8a556dc9 100644 --- a/src/modules/socket.js +++ b/src/modules/socket.js @@ -55,8 +55,10 @@ const transformChatsForRoom = async (chats) => { return chatsToSend; }; -// FCM 알림으로 보내는 content는 채팅 type에 따라 달라집니다. -// type이 text인 경우 `${nickname}: ${content}`를, 아닌 경우 `${nickname}`를 보냅니다. +/** + * FCM 알림으로 보내는 content는 채팅 type에 따라 달라집니다. + * 예를 들어, type이 "text"인 경우 `${nickname}: ${content}`를 보냅니다. + */ const getMessageBody = (type, nickname, content) => { // TODO: 채팅 메시지 유형에 따라 Body를 다르게 표시합니다. if (type === "text") { @@ -65,7 +67,7 @@ const getMessageBody = (type, nickname, content) => { } else if (type === "s3img") { // 채팅 유형이 이미지인 경우 본문은 "${nickname} 님이 이미지를 전송하였습니다"가 됩니다. // TODO: 사용자 언어를 가져올 수 있으면 개선할 수 있다고 생각합니다. - const suffix = " 님이 이미지를 전송하였습니다."; + const suffix = " 님이 이미지를 전송하였습니다"; return `${nickname} ${suffix}`; } else if (type === "in" || type === "out") { // 채팅 메시지 type이 "in"이거나 "out"인 경우 본문은 "${nickname} 님이 입장하였습니다" 또는 "${nickname} 님이 퇴장하였습니다"가 됩니다. @@ -81,6 +83,12 @@ const getMessageBody = (type, nickname, content) => { ? " 님이 결제를 완료하였습니다" : " 님이 정산을 완료하였습니다"; return `${nickname} ${suffix}`; + } else if (type === "account") { + const suffix = " 님이 계좌번호를 전송하였습니다"; + return `${nickname} ${suffix}`; + } else { + // 정의되지 않은 type의 경우에는 nickname만 반환합니다. + return nickname; } }; From 1721535cf70a4f6ac1bb183022e4762334db8d6b Mon Sep 17 00:00:00 2001 From: chlehdwon Date: Wed, 28 Jun 2023 14:56:34 +0000 Subject: [PATCH 04/27] Fix: change email address --- src/modules/stores/aws.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/modules/stores/aws.js b/src/modules/stores/aws.js index 5e5cc314..1d856175 100644 --- a/src/modules/stores/aws.js +++ b/src/modules/stores/aws.js @@ -100,7 +100,7 @@ module.exports.sendReportEmail = (reportUser, reportedEmail, report) => { Data: `[SPARCS TAXI] ${reportUser}님으로부터 신고가 접수되었습니다.`, }, }, - Source: "sparcs-taxi@gmail.com", + Source: "taxi.sparcs@gmail.com", }; ses.sendEmail(params, (err, data) => { From da7e772424ade068975f70c16e7e85394d780245 Mon Sep 17 00:00:00 2001 From: Hyogyeong8 Date: Fri, 14 Jul 2023 23:49:44 +0900 Subject: [PATCH 05/27] Add: first commit --- src/views/email copy.html | 46 +++++++++++++++++++++++++++++++++++++++ src/views/email.js | 32 +++++++++++++++++++++++++++ 2 files changed, 78 insertions(+) create mode 100644 src/views/email copy.html create mode 100644 src/views/email.js diff --git a/src/views/email copy.html b/src/views/email copy.html new file mode 100644 index 00000000..28716938 --- /dev/null +++ b/src/views/email copy.html @@ -0,0 +1,46 @@ + +
+
+
+ +
+
+
+ 미정산 내역 관리 안내 +
+ +
+
diff --git a/src/views/email.js b/src/views/email.js new file mode 100644 index 00000000..acb64b7c --- /dev/null +++ b/src/views/email.js @@ -0,0 +1,32 @@ +const styleTitle: CSS = { + display: "flex", + alignItems: "center", + ...theme.font14, + color: theme.gray_text, + whiteSpace: "nowrap", + marginTop: "10px", +}; +const styleNickname: CSS = { + width: "100%", + ...theme.font14, + border: "none", + outline: "none", + borderRadius: "6px", + padding: "6px 12px", + marginLeft: "10px", + background: theme.purple_light, + boxShadow: theme.shadow_purple_input_inset, +}; + +const emailView = (title, contents) => ` + +
+
+ 제목제목제목제목 +
+
+`; From cd8353e433bcf4472d177d9b8b0ac5e658d221d3 Mon Sep 17 00:00:00 2001 From: chlehdwon Date: Tue, 18 Jul 2023 02:21:44 +0000 Subject: [PATCH 06/27] Add: slack webhook --- loadenv.js | 1 + src/modules/stores/aws.js | 33 ++++++++++++++++++++++++++++----- 2 files changed, 29 insertions(+), 5 deletions(-) diff --git a/loadenv.js b/loadenv.js index 39500181..48b375f5 100644 --- a/loadenv.js +++ b/loadenv.js @@ -35,4 +35,5 @@ module.exports = { JSON.parse(process.env.GOOGLE_APPLICATION_CREDENTIALS), testAccounts: process.env.TEST_ACCOUNTS && JSON.parse(process.env.TEST_ACCOUNTS), + slackWebhookUrl: process.env.SLACK_WEBHOOK_URL || "" }; diff --git a/src/modules/stores/aws.js b/src/modules/stores/aws.js index 1d856175..c4a1bb32 100644 --- a/src/modules/stores/aws.js +++ b/src/modules/stores/aws.js @@ -1,5 +1,6 @@ -const { aws: awsEnv } = require("../../../loadenv"); - +const { aws: awsEnv, slackWebhookUrl: slackUrl } = require("../../../loadenv"); +const axios = require("axios"); +const logger = require("../logger"); // Load the AWS-SDK and s3 const AWS = require("aws-sdk"); AWS.config.update({ @@ -83,7 +84,7 @@ module.exports.getS3Url = (filePath) => { return `${awsEnv.s3Url}${filePath}`; }; -module.exports.sendReportEmail = (reportUser, reportedEmail, report) => { +module.exports.sendReportEmail = async (reportUser, reportedEmail, report) => { const params = { Destination: { ToAddresses: [reportedEmail], @@ -105,9 +106,31 @@ module.exports.sendReportEmail = (reportUser, reportedEmail, report) => { ses.sendEmail(params, (err, data) => { if (err) { - console.log("Error sending email:", err); + logger.info("Fail to send email", err); } else { - console.log("Email sent successfully:", data); + const reportTypeMap = { + "no-settlement": "정산을 하지 않음", + "no-show": "택시에 동승하지 않음", + "etc-reason": "기타 사유" + } + const data = { + 'text' : + `${reportUser}님으로부터 신고가 접수되었습니다. + + 신고자 ID: ${report.creatorId} + 신고 ID: ${report.reportedId} + 사유: ${reportTypeMap[report.type]} + 기타: ${report.etcDetail} + `}; + const config = {"Content-Type": 'application/json'}; + + axios.post(slackUrl, data, config).then(res => { + logger.info("Slack webhook sent successfully") + }).catch(err => { + logger.info("Fail to send slack webhook", err) + }) + + logger.info("Email sent successfully"); } }); }; From ca36ad5b92e70a8623919df6fa865f32798a5dd6 Mon Sep 17 00:00:00 2001 From: chlehdwon Date: Tue, 18 Jul 2023 02:23:06 +0000 Subject: [PATCH 07/27] Fix: remove async --- src/modules/stores/aws.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/modules/stores/aws.js b/src/modules/stores/aws.js index c4a1bb32..43058766 100644 --- a/src/modules/stores/aws.js +++ b/src/modules/stores/aws.js @@ -84,7 +84,7 @@ module.exports.getS3Url = (filePath) => { return `${awsEnv.s3Url}${filePath}`; }; -module.exports.sendReportEmail = async (reportUser, reportedEmail, report) => { +module.exports.sendReportEmail = (reportUser, reportedEmail, report) => { const params = { Destination: { ToAddresses: [reportedEmail], From 19eee14d2ecc13707e2f9f5632fe01eb2aecf31d Mon Sep 17 00:00:00 2001 From: 14Kgun Date: Wed, 19 Jul 2023 19:29:38 +0900 Subject: [PATCH 08/27] Add: views/loginReplacePage --- src/services/auth.replace.js | 51 ++--------------------------------- src/views/loginReplacePage.js | 47 ++++++++++++++++++++++++++++++++ 2 files changed, 49 insertions(+), 49 deletions(-) create mode 100644 src/views/loginReplacePage.js diff --git a/src/services/auth.replace.js b/src/services/auth.replace.js index 7049977b..d6470680 100644 --- a/src/services/auth.replace.js +++ b/src/services/auth.replace.js @@ -11,54 +11,7 @@ const logger = require("../modules/logger"); const jwt = require("../modules/auths/jwt"); const { registerDeviceTokenHandler } = require("../services/auth"); - -const loginHtmlBuilder = (redirectPath) => ` - - - - replace Login - - - - - - -
아이디 입력
- -
로그인
- - -`; +const loginReplacePage = require("../views/loginReplacePage"); const makeInfo = (id) => { const info = { @@ -144,7 +97,7 @@ const sparcsssoHandler = (req, res) => { const isApp = !!req.query.isApp; req.session.isApp = isApp; - res.end(loginHtmlBuilder(redirectPath)); + res.end(loginReplacePage(redirectPath)); }; const logoutHandler = async (req, res) => { diff --git a/src/views/loginReplacePage.js b/src/views/loginReplacePage.js new file mode 100644 index 00000000..c41c6025 --- /dev/null +++ b/src/views/loginReplacePage.js @@ -0,0 +1,47 @@ +module.exports = (redirectPath) => ` + + + + replace Login + + + + + + +
아이디 입력
+ +
로그인
+ + +`; From a651908cfe397cee03458ea35a9f0212a5fa731d Mon Sep 17 00:00:00 2001 From: 14Kgun Date: Wed, 19 Jul 2023 21:07:01 +0900 Subject: [PATCH 09/27] Add: emailNoSettlementPage --- src/views/emailNoSettlementPage.js | 31 +++++++++++++ src/views/emailReportPage.js | 72 ++++++++++++++++++++++++++++++ 2 files changed, 103 insertions(+) create mode 100644 src/views/emailNoSettlementPage.js create mode 100644 src/views/emailReportPage.js diff --git a/src/views/emailNoSettlementPage.js b/src/views/emailNoSettlementPage.js new file mode 100644 index 00000000..f58599c1 --- /dev/null +++ b/src/views/emailNoSettlementPage.js @@ -0,0 +1,31 @@ +const { frontUrl } = require("../../loadenv"); +const emailReportPage = require("./emailReportPage"); + +module.exports = (name, nickname, roomName, payer, roomId) => + emailReportPage( + "미정산 내역 관련 안내", + `${name} (${nickname}) 님께

+ 안녕하세요, ${name} (${nickname}) 님.
+ KAIST 학부 총학생회 산하 특별기구 SPARCS의 Taxi 팀입니다.

+ 최근 참여하신 방에서 정산이 이루어지지 않았다는 사용자의 문의가 접수되어 메일을 보내드립니다.

+
+ 위 방에서 채팅을 확인하실 수 있으며, 결제하신 분께 해당 금액을 정산해주시기를 부탁드립니다.
+ 미정산이 반복되는 경우 Taxi 서비스 이용이 제한될 수 있음을 알려드립니다.
+ 문의가 필요하신 경우, 택시 서비스 내부의 "채널톡 문의하기" 혹은 메일 회신 주시면 됩니다.

+ 감사합니다.
+ SPARCS Taxi팀 드림. + ` + ); diff --git a/src/views/emailReportPage.js b/src/views/emailReportPage.js new file mode 100644 index 00000000..bffb995f --- /dev/null +++ b/src/views/emailReportPage.js @@ -0,0 +1,72 @@ +const { getS3Url } = require("../modules/stores/aws"); + +module.exports = (title, content) => ` +`; From 81b7531ca10d0505df59db1c3ab10d08e1485e76 Mon Sep 17 00:00:00 2001 From: Hyogyeong8 Date: Wed, 19 Jul 2023 21:19:39 +0900 Subject: [PATCH 10/27] add: contents --- src/views/email copy.html | 32 ++++++++++++++++++++++++++++---- src/views/email.js | 20 -------------------- 2 files changed, 28 insertions(+), 24 deletions(-) diff --git a/src/views/email copy.html b/src/views/email copy.html index 28716938..fc479dc4 100644 --- a/src/views/email copy.html +++ b/src/views/email copy.html @@ -24,10 +24,12 @@ text-align: left; color: #FFFFFF; } + .body { display: flex; width: 800px; } +
@@ -37,10 +39,32 @@
Taxi
-
-
- 미정산 내역 관리 안내 +
+
미정산 내역 관리 안내
+
+ OOO (까다로운 기초항공프로젝트_OOOOO) 님께 + + 안녕하세요, OOO (까다로운 기초항공프로젝트_OOOOO) 님. + KAIST 학부 총학생회 산하 특별기구 SPARCS의 Taxi 팀입니다. + + 최근 참여하신 방에서 정산이 이루어지지 않았다는 사용자의 문의가 접수되어 메일을 보내드립니다. + + 방 제목: 환경을 생각하는 동승 + 결제자: 깜찍한 제조 프로세스 혁신_OOOOO + 링크: https://taxi.sparcs.org/myroom/xxxxxxxxxxxxxxxx + + 위 방에서 채팅을 확인하실 수 있으며, 결제하신 분께 해당 금액을 정산해주시기를 부탁드립니다. + 미정산이 반복되는 경우 Taxi 서비스 이용이 제한될 수 있음을 알려드립니다. + 문의가 필요하신 경우, 서비스 내부의 "채널톡 문의하기" 혹은 메일 회신 주시면 됩니다. + + 감사합니다. + SPARCS Taxi 팀 드림. +
+
+ -
diff --git a/src/views/email.js b/src/views/email.js index acb64b7c..c26dd872 100644 --- a/src/views/email.js +++ b/src/views/email.js @@ -1,23 +1,3 @@ -const styleTitle: CSS = { - display: "flex", - alignItems: "center", - ...theme.font14, - color: theme.gray_text, - whiteSpace: "nowrap", - marginTop: "10px", -}; -const styleNickname: CSS = { - width: "100%", - ...theme.font14, - border: "none", - outline: "none", - borderRadius: "6px", - padding: "6px 12px", - marginLeft: "10px", - background: theme.purple_light, - boxShadow: theme.shadow_purple_input_inset, -}; - const emailView = (title, contents) => ` @@ -41,14 +76,18 @@
미정산 내역 관리 안내
-
- OOO (까다로운 기초항공프로젝트_OOOOO) 님께 - +
+
OOO (까다로운 기초항공프로젝트_OOOOO)
+
님께
+
+
안녕하세요, OOO (까다로운 기초항공프로젝트_OOOOO) 님. +
KAIST 학부 총학생회 산하 특별기구 SPARCS의 Taxi 팀입니다. - - 최근 참여하신 방에서 정산이 이루어지지 않았다는 사용자의 문의가 접수되어 메일을 보내드립니다. - +

+

+ 최근 참여하신 방에서 정산이 이루어지지 않았다는 사용자의 문의가 접수되어 메일을 보내드립니다. +

방 제목: 환경을 생각하는 동승 결제자: 깜찍한 제조 프로세스 혁신_OOOOO 링크: https://taxi.sparcs.org/myroom/xxxxxxxxxxxxxxxx From 857d7436ecbf459f7b80d74d469f31265988110a Mon Sep 17 00:00:00 2001 From: chlehdwon Date: Wed, 19 Jul 2023 14:46:48 +0000 Subject: [PATCH 12/27] Fix: add roomId in transformChatsForRoom --- src/modules/socket.js | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/modules/socket.js b/src/modules/socket.js index 8a556dc9..f00d2fa0 100644 --- a/src/modules/socket.js +++ b/src/modules/socket.js @@ -42,6 +42,7 @@ const transformChatsForRoom = async (chats) => { ); } chatsToSend.push({ + roomId: chat.roomId, type: chat.type, authorId: chat.authorId._id, authorName: chat.authorId.nickname, @@ -52,6 +53,7 @@ const transformChatsForRoom = async (chats) => { inOutNames: chat.inOutNames, }); } + return chatsToSend; }; From 2bf2fb01b141d7d72449f1851e1c02a788a1ffa9 Mon Sep 17 00:00:00 2001 From: 14Kgun Date: Fri, 21 Jul 2023 03:01:25 +0900 Subject: [PATCH 13/27] Fix: css in views/emailPage --- src/views/email copy.html | 109 ------------------ src/views/email.js | 12 -- src/views/emailNoSettlementPage.js | 12 +- .../{emailReportPage.js => emailPage.js} | 24 ++-- 4 files changed, 18 insertions(+), 139 deletions(-) delete mode 100644 src/views/email copy.html delete mode 100644 src/views/email.js rename src/views/{emailReportPage.js => emailPage.js} (85%) diff --git a/src/views/email copy.html b/src/views/email copy.html deleted file mode 100644 index cb47ae2e..00000000 --- a/src/views/email copy.html +++ /dev/null @@ -1,109 +0,0 @@ - -
-
-
- -
-
-
미정산 내역 관리 안내
-
-
OOO (까다로운 기초항공프로젝트_OOOOO)
-
님께
-
-
- 안녕하세요, OOO (까다로운 기초항공프로젝트_OOOOO) 님. -
- KAIST 학부 총학생회 산하 특별기구 SPARCS의 Taxi 팀입니다. -

-

- 최근 참여하신 방에서 정산이 이루어지지 않았다는 사용자의 문의가 접수되어 메일을 보내드립니다. -

- 방 제목: 환경을 생각하는 동승 - 결제자: 깜찍한 제조 프로세스 혁신_OOOOO - 링크: https://taxi.sparcs.org/myroom/xxxxxxxxxxxxxxxx - - 위 방에서 채팅을 확인하실 수 있으며, 결제하신 분께 해당 금액을 정산해주시기를 부탁드립니다. - 미정산이 반복되는 경우 Taxi 서비스 이용이 제한될 수 있음을 알려드립니다. - 문의가 필요하신 경우, 서비스 내부의 "채널톡 문의하기" 혹은 메일 회신 주시면 됩니다. - - 감사합니다. - SPARCS Taxi 팀 드림. -
-
- -
-
diff --git a/src/views/email.js b/src/views/email.js deleted file mode 100644 index c26dd872..00000000 --- a/src/views/email.js +++ /dev/null @@ -1,12 +0,0 @@ -const emailView = (title, contents) => ` - -
-
- 제목제목제목제목 -
-
-`; diff --git a/src/views/emailNoSettlementPage.js b/src/views/emailNoSettlementPage.js index f58599c1..49bb0ceb 100644 --- a/src/views/emailNoSettlementPage.js +++ b/src/views/emailNoSettlementPage.js @@ -1,24 +1,24 @@ const { frontUrl } = require("../../loadenv"); -const emailReportPage = require("./emailReportPage"); +const emailPage = require("./emailPage"); module.exports = (name, nickname, roomName, payer, roomId) => - emailReportPage( + emailPage( "미정산 내역 관련 안내", `${name} (${nickname}) 님께

안녕하세요, ${name} (${nickname}) 님.
KAIST 학부 총학생회 산하 특별기구 SPARCS의 Taxi 팀입니다.

최근 참여하신 방에서 정산이 이루어지지 않았다는 사용자의 문의가 접수되어 메일을 보내드립니다.

-