Commit afb6928a authored by 赵杰's avatar 赵杰

添加数据服务脚本

parent 8596d80e
#!/usr/bin/python3.6
# -*- coding: utf-8 -*-
# @Time : 2020/11/18 19:12
# @Author : Jie. Z
# @Email : zhaojiestudy@163.com
# @File : data_service.py
# @Software: PyCharm
import pandas as pd
import numpy as np
from sqlalchemy import and_
from app.api.engine import tamp_user_session, tamp_product_session
from app.model.tamp_user_models import t_customer_order, t_customer_info
from app.model.tamp_product_models import t_fund_info
class UserCustomerDataAdaptor:
fund_nav_total = pd.DataFrame()
user_id = ""
customer_id = ""
def __init__(self, user_id, customer_id):
self.user_id = user_id
self.customer_id = customer_id
self.user_customer_order_df = self.get_user_customer_order_data()
# 获取理财师下该用户所有订单列表
def get_user_customer_order_data(self):
# data1 = tamp_user_session.query(t_customer_order)\
# .filter(user_id = self.user_id).all()
# data2 = tamp_user_session.query(t_customer_info).all()
# data3 = tamp_product_session.query(t_fund_info).all()
sql_user = """select f2.realname,f3.customer_name,fund_id,f1.order_type,f1.pay_date,f1.subscription_fee,f1.confirm_share_date,f1.confirm_share,f1.confirm_amount,f1.nav,f1.folio_name from customer_order f1, user_info f2,customer_info f3 where f2.id=f1.user_id and f3.id=f1.customer_id and f1.user_id='{}' and f1.customer_id='{}'""".format(self.user_id, self.customer_id)
cur = tamp_user_session.execute(sql_user)
data = cur.fetchall()
order_df = pd.DataFrame(list(data), columns=['username', 'customer_name', 'fund_id', 'order_type', 'pay_date',
'subscription_fee', 'confirm_share_date', 'confirm_share',
'confirm_amount', 'nav', 'folio_name'])
sql_product = "select distinct `id`, `fund_short_name`, `nav_frequency`, `substrategy` from `fund_info`"
cur = tamp_product_session.execute(sql_product)
data = cur.fetchall()
product_df = pd.DataFrame(list(data), columns=['fund_id', 'fund_name', 'freq', 'substrategy'])
user_customer_order_df = order_df.set_index('fund_id').join(product_df.set_index('fund_id')).reset_index()
return user_customer_order_df
# 获取客户持有的基金净值数据
def get_customer_fund_nav_data(self):
for cur_fund_id in self.user_customer_order_df["fund_id"].unique():
# 对应基金净值
sql = """select distinct `price_date`, `nav`,`cumulative_nav` from `fund_nav` where `fund_id`='{}' order by `price_date` ASC""".format(cur_fund_id)
cur = tamp_product_session.execute(sql)
data = cur.fetchall()
cur_fund_nav_df = pd.DataFrame(list(data), columns=['price_date', 'nav', 'cnav'])
# 对应基金分红
sql = """select distinct `distribute_date`, `distribution` from `fund_distribution` where `fund_id`='{}' and `distribute_type`='1' order by `distribute_date` ASC""".format(
cur_fund_id)
cur = tamp_product_session.execute(sql)
data = cur.fetchall()
cur_fund_distribution_df = pd.DataFrame(list(data), columns=['price_date', 'distribution'])
print(cur_fund_id)
return
# 获取客户对比指数净值数据
def get_customer_index_nav_data(self, index_id):
pass
# 组合收益
def combine_ratio(self):
pass
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