Commit 9e9909c6 authored by pengxiong's avatar pengxiong

init

parent 0483b2b5
<?xml version="1.0" encoding="UTF-8"?>
<module type="PYTHON_MODULE" version="4">
<component name="NewModuleRootManager">
<content url="file://$MODULE_DIR$" />
<content url="file://$MODULE_DIR$/../fund_report" />
<orderEntry type="jdk" jdkName="Python 3.7" jdkType="Python SDK" />
<orderEntry type="sourceFolder" forTests="false" />
<orderEntry type="module" module-name="tamp_course_order" />
......
......@@ -8,23 +8,25 @@
# -----------------------------------------------------------------------------
# import logging
import logging
import redis
import os
import sys
import yaml
from sqlalchemy import create_engine
from sqlalchemy.orm import sessionmaker, scoped_session
from sqlalchemy.pool import NullPool
env = sys.argv[-1]
env = sys.argv[-1] if sys.argv[-1] in ["dev", "test", "prod"] else "test"
work_dir = os.getcwd()
CFG_FILEPATH = work_dir + '/app/config/config.yaml'
template_folder = work_dir+'/app/templates'
config = yaml.load(open(CFG_FILEPATH, 'r'), Loader=yaml.FullLoader)
pdf_folder = os.path.join(work_dir,"app/pdf", config[env]['PDF']['pdf_folder'])
http_dir = config[env]['PDF']['http_dir']
temp_img_save_folder = work_dir + '/app/templates/temp_img/productionenv/ReportTempImg/'
pdf_save_folder = work_dir + '/app/pdf/productionenv/AppHoldReport/'
template_folder = config[env]['oss']['imgs_url_prefix']
pdf_folder = config[env]['oss']['pdf_url_prefix']
tamp_product_engine = create_engine(
'mysql+mysqldb://{user}:{password}@{host}:{port}/{db}?charset={charset}'.format(
......@@ -35,10 +37,7 @@ tamp_product_engine = create_engine(
password=config[env]['MySQL']['password'],
charset="utf8"
),
max_overflow=0, # 超过连接池大小外最多创建的连接
pool_size=100, # 连接池大小
pool_timeout=5,
pool_recycle=600
poolclass=NullPool
)
tamp_order_engine = create_engine(
'mysql+mysqldb://{user}:{password}@{host}:{port}/{db}?charset={charset}'.format(
......@@ -49,10 +48,7 @@ tamp_order_engine = create_engine(
password=config[env]['MySQL']['password'],
charset="utf8"
),
max_overflow=0, # 超过连接池大小外最多创建的连接
pool_size=100, # 连接池大小
pool_timeout=5,
pool_recycle=600
poolclass=NullPool
)
tamp_user_engine = create_engine(
......@@ -64,10 +60,7 @@ tamp_user_engine = create_engine(
password=config[env]['MySQL']['password'],
charset="utf8"
),
max_overflow=0, # 超过连接池大小外最多创建的连接
pool_size=100, # 连接池大小
pool_timeout=5,
pool_recycle=600
poolclass=NullPool
)
tamp_fund_engine = create_engine(
......@@ -79,10 +72,7 @@ tamp_fund_engine = create_engine(
password=config[env]['MySQL']['password'],
charset="utf8"
),
max_overflow=0, # 超过连接池大小外最多创建的连接
pool_size=100, # 连接池大小
pool_timeout=5,
pool_recycle=600
poolclass=NullPool
)
tamp_diagnose_app_engine = create_engine(
......@@ -93,7 +83,8 @@ tamp_diagnose_app_engine = create_engine(
user=config[env]['MySQL']['user'],
password=config[env]['MySQL']['password'],
charset="utf8"
)
),
poolclass=NullPool
)
......@@ -104,12 +95,17 @@ redis = redis.StrictRedis(
password=config[env]['redis']['password']
)
# logging.basicConfig(level=logging.INFO,
# filename=work_dir + config[env]['log']['filename'],
# filemode=config[env]['log']['filemode'],
# format=config[env]['log']['format'],
# datefmt=config[env]['log']['datefmt']
# )
redis_host=config[env]['redis']['host'],
redis_port=config[env]['redis']['port'],
redis_db=config[env]['redis']['db'],
redis_password=config[env]['redis']['password']
logging.basicConfig(level=logging.INFO,
filename=work_dir + config[env]['log']['filename'],
filemode=config[env]['log']['filemode'],
format=config[env]['log']['format'],
datefmt=config[env]['log']['datefmt']
)
class TAMP_SQL(object):
"""[sqlalchemy 封装]
......
......@@ -3,15 +3,20 @@ dev:
tamp_product_db: tamp_product
tamp_order_db: tamp_order
tamp_user_db: tamp_user
tamp_fund_db: tamp_fund
tamp_diagnose_app_db: tamp_diagnose_app
host: 47.101.189.151
port: 31931
user: root
password: mysql
user: dev
password: qimeng123
redis:
host: localhost
port: 6379
db: 0
password:
oss:
imgs_url_prefix: https://devtamper.tanpuyun.com/hangjiapc/report/productionenv/ReportTempImg/
pdf_url_prefix: https://devtamper.tanpuyun.com/hangjiapc/report/productionenv/AppHoldReport/
account: LTAI4FzkGhAMecinBCKwuoUW
password: KJpPWg9U0kYO71yB41gqYbrFNJ4hso
log:
......@@ -26,14 +31,21 @@ test:
tamp_product_db: tamp_product
tamp_order_db: tamp_order
tamp_user_db: tamp_user
host: tools.caixiaoquan.com
tamp_fund_db: tamp_fund
tamp_diagnose_app_db: tamp_diagnose_app
host: 118.190.63.109
# host: tools.caixiaoquan.com
port: 3306
user: root
password: '@imeng123'
redis:
host: localhost
port: 6379
host: 118.190.63.109
port: 56379
db: 0
password: 'qimeng123'
oss:
imgs_url_prefix: https://testtamper.tanpuyun.com/hangjiapc/report/productionenv/ReportTempImg/
pdf_url_prefix: https://testtamper.tanpuyun.com/hangjiapc/report/productionenv/AppHoldReport/
log:
filename: /logs/fund_report.log
filemode: a
......@@ -53,10 +65,13 @@ prod:
user: tamp_fund
password: '@imeng408'
redis:
host: localhost
host: r-uf6atruhdbq89enqz0.redis.rds.aliyuncs.com
port: 6379
db: 0
password: '@imeng123'
oss:
imgs_url_prefix: https://tamper.tanpuyun.com/hangjiapc/report/productionenv/ReportTempImg/
pdf_url_prefix: https://tamper.tanpuyun.com/hangjiapc/report/productionenv/AppHoldReport/
account: LTAI4FzkGhAMecinBCKwuoUW
password: KJpPWg9U0kYO71yB41gqYbrFNJ4hso
log:
......
This diff is collapsed.
......@@ -10,12 +10,13 @@ import datetime
import time
from flask_restful import Resource, reqparse
from flask import request, render_template
from flask import request, render_template, g
from flask import make_response
from app.api.engine import config
from app.utils.auth import login_require
from app.utils.html_to_pdf import html_to_pdf
from app.api.engine import pdf_folder, redis, env, TAMP_SQL, tamp_diagnose_app_engine, http_dir
from app.api.engine import pdf_folder, redis, env, TAMP_SQL, tamp_diagnose_app_engine
from app.utils.jinjia2html_v2 import DataIntegrate
......@@ -26,90 +27,18 @@ class ReportHandlers(Resource):
"""."""
self.parser = reqparse.RequestParser()
@login_require
def get(self):
"""."""
# self.parser.add_argument('ifa_id', type=str, required=True, help='ifa_id不能为空')
self.parser.add_argument('customer_id', type=str, required=True, help='customer_id不能为空')
args = self.parser.parse_args()
token = request.headers.get('Authorization', '')
token = 's:sid:' + token.split(' ')[1]
ifa_id = redis.get(token).decode()
if not ifa_id:
return {"code":40005,"data":None,"lang":"zh_CN","msg":"请登陆"}
if '\''in ifa_id:
ifa_id = ifa_id.replace('\'', '')
if '\"'in ifa_id:
ifa_id = ifa_id.replace('\"', '')
customer_id = args['customer_id']
pdf_name = str(ifa_id) + str(customer_id) + '.pdf'
with TAMP_SQL(tamp_diagnose_app_engine) as tamp_diagnose_app:
tamp_diagnose_app_session = tamp_diagnose_app.session
sql = "update hold_report set update_time='{}', update_status='{}' where ifa_id='{}' and customer_id='{}'".format(
datetime.datetime.now(),
1,
ifa_id,
customer_id
)
tamp_diagnose_app_session.execute(sql)
start = time.time()
check = 0
try:
dt = DataIntegrate(ifa_id=ifa_id, customer_id=customer_id, pdf_name=pdf_name)
dt.render_data()
check = 1
except OSError:
check = 1
except:
check = 0
print('耗时{}秒'.format(round(time.time() - start, 2)))
if check == 0:
with TAMP_SQL(tamp_diagnose_app_engine) as tamp_diagnose_app:
tamp_diagnose_app_session = tamp_diagnose_app.session
sql = "update hold_report set update_time='{}', update_status='{}' where ifa_id='{}' and customer_id='{}'".format(
datetime.datetime.now(),
0,
ifa_id,
customer_id
)
tamp_diagnose_app_session.execute(sql)
return {"code":-1, "msg": "内部错误"}
# auth = oss2.Auth(config[env]['oss']['account'], config[env]['oss']['password'])
# # Endpoint以杭州为例,其它Region请按实际情况填写。
# bucket = oss2.Bucket(auth, 'http://oss-cn-shanghai.aliyuncs.com', config[env]['oss']['env'])
# 生成下载文件的签名URL,有效时间为60s。
# path = bucket.sign_url('GET', config[env]['oss']['path'] + pdf_name, config[env]['oss']['validtime'])
with TAMP_SQL(tamp_diagnose_app_engine) as tamp_diagnose_app:
tamp_diagnose_app_session = tamp_diagnose_app.session
sql = "update hold_report set update_time='{}', update_status='{}', file='{}' where ifa_id='{}' and customer_id='{}'".format(
datetime.datetime.now(),
2,
pdf_name,
ifa_id,
customer_id
)
tamp_diagnose_app_session.execute(sql)
with TAMP_SQL(tamp_diagnose_app_engine) as tamp_diagnose_app:
tamp_diagnose_app_session = tamp_diagnose_app.session
sql = "SELECT id, file, customer_id, ifa_id, update_status, update_time from hold_report where ifa_id='{}' and customer_id='{}'".format(
ifa_id,
customer_id,
)
ret = tamp_diagnose_app_session.execute(sql).fetchone()
data = {"id":ret[0],"file": http_dir + ret[1],"customer_id":ret[2],
"ifa_id":ret[3],"update_status":ret[4],
"update_time":ret[5].strftime("%Y-%m-%d %H:%M:%S")}
ifa_id = g.ifa_id
# 默认模版制作持仓报告
resp = {
"code": 0,
"data": data,
"data": [],
"lang": "zh_CN",
"msg": "成功"
}
......
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
# -*- encoding: utf-8 -*-
# -----------------------------------------------------------------------------
# @File Name : auth.py
# @Time : 2021/1/15 下午4:54
# @Author : X. Peng
# @Email : acepengxiong@163.com
# @Software : PyCharm
# -----------------------------------------------------------------------------
from flask import request, g
from app.api.engine import redis
def login_require(func):
def auth(*args, **kwargs):
token = request.headers.get('Authorization', '')
token = 's:sid:' + token.split(' ')[1]
ifa_id = redis.get(token)
if not ifa_id:
return {"code": '9005', "message": "请登录", "attributes": []}
g.ifa_id = ifa_id.decode().replace('\"', '')
return func(*args, **kwargs)
return auth
\ No newline at end of file
import datetime
from celery import Celery
from sqlalchemy import and_, or_
from app.api.engine import TAMP_SQL, tamp_diagnose_app_engine, template_folder, redis_host, redis_port, redis_db, redis_password
from app.model.tamp_diagnose_app import HoldReport, HoldDiagnoseReport, PeriodicReport, Customer, ReportView
from app.utils.jinjia2html_v2 import DataIntegrate
celery_app = Celery(__name__)
celery_conf = "redis://:{}@{}:{}/{}".format(redis_password,redis_host[0],redis_port[0],"1")
celery_app.conf.update({"broker_url": celery_conf, "result_backend": celery_conf})
@celery_app.task
def save_pdf(id, ifa_id, customer_id, pdf_name, type, report_data):
"""
加法
:param x:
:param y:
:return:
"""
try:
dt = DataIntegrate(ifa_id=ifa_id, customer_id=customer_id, pdf_name=pdf_name, type=type)
dt.render_data(data=report_data)
except:
pass
with TAMP_SQL(tamp_diagnose_app_engine) as tamp_diagnose_app:
tamp_diagnose_session = tamp_diagnose_app.session
res = None
if type == 1:
res = tamp_diagnose_session.query(HoldReport).filter(and_(
HoldReport.id == id,
HoldReport.ifa_id == ifa_id,
))
elif type == 2:
res = tamp_diagnose_session.query(HoldDiagnoseReport).filter(and_(
HoldDiagnoseReport.id == id,
HoldDiagnoseReport.ifa_id == ifa_id,
))
elif type == 3:
res = tamp_diagnose_session.query(PeriodicReport).filter(and_(
PeriodicReport.id == id,
PeriodicReport.ifa_id == ifa_id,
))
else:
return False
if res.all():
res.update({
'file': pdf_name,
'update_status': 2,
'update_time': datetime.datetime.now()
})
return True
This diff is collapsed.
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment