Fix: send mail to 30days, 7days left maestro python

This commit is contained in:
2019-10-19 15:10:10 +09:00
parent 9e095e31d8
commit 72cf9b58a1
7 changed files with 241 additions and 32 deletions
+28 -28
View File
@@ -103,33 +103,6 @@ $(document).ready(function() {
<br/>
<!-- account extension -->
<div class="card bg-light">
<h5 class="card-header">계정 연장</h5>
<div class="card-body">
<p class="card-text">
<div class="row mx-1">
<div class="col-12">
<h5 class="mb-2">유효 기간 연장 방법</h5>
</div> <!-- col -->
</div> <!-- row -->
<ul>
<li>
마에스트로 계정 유효 기간이 30일 남았을 때부터 계정 연장 화면이 나타납니다.<br/>
<span class="text-muted">(유효 기간이 30일 넘게 남았을 때는 안보입니다)</span>
</li>
<li>화면 상단에 유효 기간 연장 화면이 보이면, 오른쪽의 <kbd>계정 연장</kbd> 버튼을 눌러주세요.</li>
</ul>
</p> <!-- card teext -->
</div> <!-- card body -->
</div> <!-- card -->
<br/>
<!-- account upgrade -->
<div class="card bg-light">
<h5 class="card-header">계정 업그레이드</h5>
@@ -146,7 +119,7 @@ $(document).ready(function() {
<ul>
<li>화면 상단 오른쪽의 <kbd>업그레이드</kbd> 버튼을 눌러주세요.</li>
<li>모든 요금제의 기능은 동일합니다. 요금제에 따라 최대 등록 학생수만 늘어납니다.</li>
<li>기존 요금제의 남은 유효 기간과 상관 없이, 업그레이드 날짜로부터 다시 1년동안 사용하실 수 있습니다.</li>
<li>기존 요금제의 남은 유효기간과 상관 없이, 업그레이드 날짜로부터 다시 1년동안 사용하실 수 있습니다.</li>
<li>
높은 요금제로 올릴 수는 있지만, 낮은 요금제로 내릴 수는 없습니다.<br/>
<span class="text-muted">(현재 계정을 취소하여 남은 기간만큼 환불받고, 새로운 계정을 신청하세요)</span>
@@ -159,6 +132,33 @@ $(document).ready(function() {
<br/>
<!-- account extension -->
<div class="card bg-light">
<h5 class="card-header">계정 유효기간 연장</h5>
<div class="card-body">
<p class="card-text">
<div class="row mx-1">
<div class="col-12">
<h5 class="mb-2">유효기간 연장 방법</h5>
</div> <!-- col -->
</div> <!-- row -->
<ul>
<li>
마에스트로 계정 유효기간이 30일 남았을 때부터 계정 유효기간 연장 화면이 나타납니다.<br/>
<span class="text-muted">(유효기간이 30일 넘게 남았을 때는 안보입니다)</span>
</li>
<li>화면 상단에 유효기간 연장 화면이 보이면, 오른쪽의 <kbd>유효기간 연장</kbd> 버튼을 눌러주세요.</li>
</ul>
</p> <!-- card teext -->
</div> <!-- card body -->
</div> <!-- card -->
<br/>
<!-- player management -->
<div class="card bg-light">
<h5 class="card-header">학생 목록 관리</h5>
+4 -4
View File
@@ -50,7 +50,7 @@ function showEndDate(date) {
var endDay = new Date(endDate);
var diffDay = getDiffDay(endDay, today);
$("#maestro_count_down_date").html("유효 기간 : ~ " + endDate + " <span id='countdown_day'>(남은 기간 : " + Math.ceil(diffDay) + "일)</span>");
$("#maestro_count_down_date").html("유효기간 : ~ " + endDate + " <span id='countdown_day'>(남은 기간 : " + Math.ceil(diffDay) + "일)</span>");
if(diffDay < 30)
$("#countdown_day").addClass("text-danger");
else if(diffDay < 10)
@@ -74,9 +74,9 @@ function showMaestroExtensionMessage(maestroName, date) {
return;
$("#maestro_extension").removeClass("d-none");
var message = "<span class='font-weight-bold'>" + maestroName + "</span> 계정의 유효 기간이 얼마 남지 않았습니다.<br/>1년 더 사용을 원하신다면 우측의 [계정 연장] 버튼을 눌러주세요.";
var message = "<span class='font-weight-bold'>" + maestroName + "</span> 계정의 유효기간이 얼마 남지 않았습니다.<br/>1년 더 사용을 원하신다면 우측의 [유효기간 연장] 버튼을 눌러주세요.";
if(diffDay < 0)
message = "<span class='font-weight-bold'>" + maestroName + "</span> 계정의 유효 기간이 지났습니다. 등록된 학생들의 정보는 유지되지만, 로그인이 제한됩니다.<br/>계정 연장을 하시면 다시 로그인하고 사용할 수 있게 됩니다.";
message = "<span class='font-weight-bold'>" + maestroName + "</span> 계정의 유효기간이 지났습니다. 등록된 학생들의 정보는 유지되지만, 로그인이 제한됩니다.<br/>유효기간 연장을 하시면 다시 로그인하고 사용할 수 있게 됩니다.";
$("#maestro_extension_message").html(message);
}
@@ -205,7 +205,7 @@ function showModal(popupModalID, popupContentID, contentFileName) {
message
</div>
<div class="col-sm-offset my-auto">
<a class="btn btn-primary pull-right" role="button" href="./../maestro/extension.html" style="float:right;">계정 연장</a>
<a class="btn btn-primary pull-right" role="button" href="./../maestro/extension.html" style="float:right;">유효기간 연장</a>
</div>
</div>
</div>
@@ -0,0 +1,52 @@
<?php
require_once __DIR__."/mail/mail_sender.php";
require_once __DIR__."/mail/mail_setting.php";
require_once __DIR__."/mail/chocomae_info.php";
if($argc != 4) {
echo "check the input arguments\n";
exit(0);
}
// for($i = 0; $i < $argc; $i++) {
// echo "[".$i."] : ".$argv[$i]."\n";
// }
// exit(0);
$maestroEmail = $argv[1];
$maestroName = $argv[2];
$date = $argv[3];
$year = substr($date, 0, 4);
$month = substr($date, 4, 2);
$day = substr($date, 6, 2);
$registerDate = $year."".$month."".$day."";
$parameters = array(
"maestro_name" => $maestroName,
"available_date" => $registerDate
);
$recipientParam = array(
"maestro_name" => $maestroName
);
$nCloudSetting = new MailSetting();
$chocomae = new ChocomaeInfo();
$mailSender = new MailSender();
$mailSender->setMailSetting($nCloudSetting);
$mailSender->setSenderInfo($chocomae->sender_name, $chocomae->sender_email);
$mailSender->makePostParam(333);
$mailSender->setParameters($parameters);
$mailSender->addRecipient($maestroEmail, $maestroName, "R", $recipientParam);
$mailSender->addRecipient($chocomae->sender_bcc, $chocomae->sender_name, "B", $recipientParam);
// $mailSender->showSettings();
$mailSender->send();
?>
@@ -0,0 +1,52 @@
<?php
require_once __DIR__."/mail/mail_sender.php";
require_once __DIR__."/mail/mail_setting.php";
require_once __DIR__."/mail/chocomae_info.php";
if($argc != 4) {
echo "check the input arguments\n";
exit(0);
}
// for($i = 0; $i < $argc; $i++) {
// echo "[".$i."] : ".$argv[$i]."\n";
// }
// exit(0);
$maestroEmail = $argv[1];
$maestroName = $argv[2];
$date = $argv[3];
$year = substr($date, 0, 4);
$month = substr($date, 4, 2);
$day = substr($date, 6, 2);
$registerDate = $year."".$month."".$day."";
$parameters = array(
"maestro_name" => $maestroName,
"available_date" => $registerDate
);
$recipientParam = array(
"maestro_name" => $maestroName
);
$nCloudSetting = new MailSetting();
$chocomae = new ChocomaeInfo();
$mailSender = new MailSender();
$mailSender->setMailSetting($nCloudSetting);
$mailSender->setSenderInfo($chocomae->sender_name, $chocomae->sender_email);
$mailSender->makePostParam(691);
$mailSender->setParameters($parameters);
$mailSender->addRecipient($maestroEmail, $maestroName, "R", $recipientParam);
$mailSender->addRecipient($chocomae->sender_bcc, $chocomae->sender_name, "B", $recipientParam);
// $mailSender->showSettings();
$mailSender->send();
?>
@@ -0,0 +1,21 @@
from lib.database.db_manager import DBManager
class ExpireMaestroManager:
db_params = None
db_man = None
def __init__(self, mode):
self.db_man = DBManager(mode)
def get_30days_left_maestro_list(self):
unpaid_30days_sql = 'select * from maestro \
where DATE(AvailableActivateDateTime) - INTERVAL 30 DAY = DATE(NOW()) AND ActivateStatus = 1'
day30_maestro_list = self.db_man.select(unpaid_30days_sql)
return day30_maestro_list
def get_7days_left_maestro_list(self):
unpaid_7days_sql = 'select * from maestro \
where DATE(AvailableActivateDateTime) - INTERVAL 7 DAY = DATE(NOW()) AND ActivateStatus = 1'
day7_maestro_list = self.db_man.select(unpaid_7days_sql)
return day7_maestro_list
@@ -0,0 +1,82 @@
import sys
from datetime import datetime
import subprocess
from batch.expire_maestro_manager import ExpireMaestroManager
# print('# args : {}'.format(len(sys.argv)))
# print('args : {}'.format(str(sys.argv)))
mode = 'mac'
arg_count = len(sys.argv)
if arg_count > 1:
mode = str(sys.argv[1]).lower()
def print_items(list):
for item in list:
print(item)
def send_mail_30days_left(email, name, available_date):
filename = 'send_mail_to_30days_left_maestro.php'
path = ''
if mode == 'mac':
path = '/Applications/MAMP/htdocs/mouse_typing/src/web/php/'
else:
path = '/var/www/html/mouse_typing/src/web/php/'
command_send_mail = []
command_send_mail.append('/usr/bin/php')
command_send_mail.append(path + filename)
command_send_mail.append(email)
command_send_mail.append(name)
date = available_date.strftime('%Y%m%d')
command_send_mail.append(date)
# print(command_send_mail)
# command_move_dir = ['cd', path]
# print(command_move_dir)
# subprocess.call(command_move_dir)
# command_move_pwd = ['pwd']
# subprocess.call(command_move_pwd)
subprocess.call(command_send_mail)
def send_mail_7days_left(email, name, available_date):
filename = 'send_mail_to_7days_left_maestro.php'
path = ''
if mode == 'mac':
path = '/Applications/MAMP/htdocs/mouse_typing/src/web/php/'
else:
path = '/var/www/html/mouse_typing/src/web/php/'
command_send_mail = []
command_send_mail.append('/usr/bin/php')
command_send_mail.append(path + filename)
command_send_mail.append(email)
command_send_mail.append(name)
date = available_date.strftime('%Y%m%d')
command_send_mail.append(date)
# print(command_send_mail)
# command_move_dir = ['cd', path]
# print(command_move_dir)
# subprocess.call(command_move_dir)
# command_move_pwd = ['pwd']
# subprocess.call(command_move_pwd)
subprocess.call(command_send_mail)
# insert log and delete from DB
# print("30 days left");
expireMaestroMan = ExpireMaestroManager(mode)
maestro_list = expireMaestroMan.get_30days_left_maestro_list()
# print_items(maestro_list)
for maestro in maestro_list:
send_mail_30days_left(maestro['Email'], maestro['Name'], maestro['AvailableActivateDateTime'])
# print("\n7 days left");
maestro_list = expireMaestroMan.get_7days_left_maestro_list()
# print_items(maestro_list)
for maestro in maestro_list:
send_mail_7days_left(maestro['Email'], maestro['Name'], maestro['AvailableActivateDateTime'])
+2
View File
@@ -30,12 +30,14 @@ if($loginData === null) {
set_error_message("마에스트로 계정이 아직 활성화되지 않았습니다.");
send_result_fail();
exit;
/*
} else if($loginData[activateStatus] === 1 && $date < $now) {
set_error_code("over_date");
$date = new DateTime($loginData[availableActivateDateTime]);
set_error_message("마에스트로 계정의 유효기간이 지났습니다. : ".$date->format("Y-m-d H:i:s"));
send_result_fail();
exit;
*/
} else if($loginData[maestroID] === null) {
set_error_code("wrong_password");
set_error_message("비밀번호가 틀렸습니다.");