Ver Fonte

執行項目預定日修改Email通知_v1

Mike há 3 anos atrás
pai
commit
6cab5398be
1 ficheiros alterados com 207 adições e 0 exclusões
  1. 207 0
      is_set_date_changed_notice.py

+ 207 - 0
is_set_date_changed_notice.py

@@ -0,0 +1,207 @@
+from enum import Enum
+import time
+from datetime import datetime
+from typing import Optional
+from pydantic import BaseModel
+from fastapi import FastAPI, Query, UploadFile, File
+from fastapi import FastAPI
+from fastapi.middleware.cors import CORSMiddleware
+import json
+import urllib.request
+import dataset,json
+
+import dataset
+from datetime import datetime, timedelta
+
+from email.mime.text import MIMEText
+from email.mime.image import MIMEImage
+from email.mime.multipart import MIMEMultipart
+from email.mime.base import MIMEBase
+from email.mime.application import MIMEApplication
+import os
+import boto3
+from botocore.exceptions import ClientError
+
+app = FastAPI()
+
+origins = [
+    "http://139.162.121.30",
+    "http://139.162.121.30:8002",
+]
+
+app.add_middleware(
+    CORSMiddleware,
+    # allow_origins=origins,
+    allow_origins=["*"],
+    allow_credentials=True,
+    allow_methods=["*"],
+    allow_headers=["*"],
+)
+
+
+# 取得資料庫連線
+def get_db_connection():
+    # Choozmo DB
+    # db = dataset.connect("mysql://choozmo:pAssw0rd@db.ptt.cx:3306/hhh?charset=utf8mb4")
+
+    # 測試機 DB
+    db = dataset.connect('mysql://hhh7796hhh:lYmWsu^ujcA1@hhh-v57-cluster.cluster-cmab1ctkglka.ap-northeast-2.rds.amazonaws.com:3306/stage?charset=utf8mb4')
+
+    # 正式機 DB
+    # db = dataset.connect('mysql://hhh7796hhh:lYmWsu^ujcA1@hhh-v57-cluster.cluster-cmab1ctkglka.ap-northeast-2.rds.amazonaws.com:3306/xoops?charset=utf8mb4')
+
+    return db
+
+
+# 寄送執行項目預定日修改Email通知
+def hhh_send_mail(email, subject, html):
+    SENDER = "Gorgeous Space <noreply@hhh.com.tw>"
+    RECIPIENT = email
+    AWS_REGION = "us-east-1"
+    CHARSET = "UTF-8"
+    client = boto3.client('ses',region_name=AWS_REGION)
+    
+    try:
+        msg = MIMEMultipart()
+        msg["Subject"] = subject
+        msg["From"] = "noreply@hhh.com.tw"
+        msg["To"] = email
+
+        # Set message body
+        body = MIMEText(html, "html")
+     
+        msg.attach(body)
+
+        response = client.send_raw_email(
+            Source=msg["From"],
+            Destinations=[msg["To"]],
+            RawMessage={"Data": msg.as_string()}
+        )
+        print(response)
+
+    # Display an error if something goes wrong.	
+    except ClientError as e:
+        print(e.response['Error']['Message'])
+    else:
+        print("Email sent! Message ID:"),
+        print(response['MessageId'])
+
+
+
+@app.get("/is_set_date_changed_notice")
+async def is_set_date_changed_notice(exd_id: str = '', exf_id: str = '', set_date: str = ''):
+    print ('exd_id = ' + exd_id + ', exf_id = ' + exf_id + ', set_date = ' + set_date) # test
+
+    # 取得資料庫連線
+    db = get_db_connection()
+
+    subject = ""
+
+    # 取得執行項目資料
+    q = "SELECT * \
+        FROM execute_detail \
+        WHERE exd_id = " + exd_id
+
+    q_result_count = len(list(db.query(q)))
+
+    if q_result_count == 0: # 無合約資料
+        return
+
+    for r in db.query(q):
+        # 判斷執行項目預定日是否有修改
+        if set_date == r['set_date']: # 執行項目預定日未修改
+            print ('執行項目預定日未修改,不須通知')
+            print ('set_date = ' + set_date + ', r[set_date] = ' + r['set_date']) # test
+            return
+        else: # 執行項目預定日有修改
+            print ('執行項目預定日有修改,須通知')
+
+            subject = '[執行項目-預定日修改通知]' + datetime.now().strftime("%Y-%m-%d %H:%M")
+
+            html = """
+                <!DOCTYPE html>
+                <head>
+                    <meta charset="UTF-8">
+                </head>
+                <body>
+                """
+                       
+            '''
+            # 發送通知給負責業務、Kevin、Sam
+            email_list = ['sam@hhh.com.tw','kevin.h@hhh.com.tw']
+
+            # 負責業務
+            print('負責業務: ' + r['sales_man'])
+            email_list.append(r['sales_man'])
+            '''
+
+            '''
+            # 列出該合約底下所有執行項目(含已完成、未完成)
+            q1 = "SELECT * \
+                FROM execute_detail \
+                WHERE exf_id=" + exf_id + \
+                " ORDER BY execute_man"
+            
+            q1_result_count = len(list(db.query(q1)))
+
+            if q1_result_count > 0: # 有執行項目
+                html += "<br><table style='width:100%;border-collapse: collapse;' border='1'> \
+                <tr style='text-align:left;'> \
+                    <th style='width:5%;'>#</th> \
+                    <th>大項目</th> \
+                    <th>執行項</th> \
+                    <th>單位</th> \
+                    <th>是否完成</th> \
+                    <th>完成人</th> \
+                    <th>備註</th> \
+                    <th>預計排程日期</th> \
+                    <th>第一次提醒日</th> \
+                </tr>";
+
+                idx = 1
+
+                for r1 in db.query(q1):
+                    if r1['set_date'] is None:
+                        r1['set_date'] = '無'
+                    
+                    if r1['alert_date_1'] is None:
+                        r1['alert_date_1'] = '無'
+                    
+                    # 執行單位Email
+                    if r1['execute_man'] == 'hhh_edit@hhh.com.tw':
+                        r1['execute_man'] = '編輯採訪部'
+                    elif r1['execute_man'] == 'hhh_mk@hhh.com.tw':
+                        r1['execute_man'] = '行銷企劃部'
+                    elif r1['execute_man'] == 'hhh_web@hhh.com.tw':
+                        r1['execute_man'] = '網站工程部'
+                    elif r1['execute_man'] == 'hhh_video@hhh.com.tw':
+                        r1['execute_man'] = '影音企劃部'
+                    elif r1['execute_man'] == 'agent@hhh.com.tw':
+                        r1['execute_man'] = '幸福經紀人'
+                    elif r1['execute_man'] == 'hhh_admin@hhh.com.tw':
+                        r1['execute_man'] = '行政部'
+                    elif r1['execute_man'] == 'hhh_sales@hhh.com.tw':
+                        r1['execute_man'] = '業務部'
+                    
+                    html += "<tr><td>" + str(idx) + "</td><td>" + r1['lv1'] + "</td><td>" + r1['lv2'] + "</td><td>" + r1['execute_man'] + "</td><td>" + r1['is_complete'] + "</td><td>" + r1['complete_man'] + "</td><td>" + r1['note'] + "</td><td>" + str(r1['set_date']) + "</td><td>" + str(r1['alert_date_1']) + "</td></tr>"
+
+                    idx += 1
+                
+                html += "</table>"
+
+            html += "<div><br>幸福空間經營團隊敬上<br><br>※此信為系統自動寄送,請勿直接回信。謝謝!</div>"
+
+            html += """
+                </body>
+                </html>
+                """ 
+            '''
+
+'''
+    # Email清單
+    email_list = ['mike@choozmo.com']
+
+    # 寄送合約狀態修改Email通知
+    for email in email_list:
+        hhh_send_mail(email, subject, html)
+'''