Commit cfdfac27 authored by wang zhengwei's avatar wang zhengwei

增加7 附件订单,并且优化查询速度

parent 4fc297b8
...@@ -44,7 +44,7 @@ class OrderFlow(Base, BaseModel): ...@@ -44,7 +44,7 @@ class OrderFlow(Base, BaseModel):
ab_payment = Column(BIGINT, comment='支付通道付款金额') ab_payment = Column(BIGINT, comment='支付通道付款金额')
ab_pay_mode = Column(String(3), comment='支付方式 1:免费,2:积分,3现金,4:探普贝,5:app微信支付,6:支付宝支付,7:苹果支付, 8:微信公众号支付') ab_pay_mode = Column(String(3), comment='支付方式 1:免费,2:积分,3现金,4:探普贝,5:app微信支付,6:支付宝支付,7:苹果支付, 8:微信公众号支付')
ab_total_money = Column(BIGINT, comment='订单总额') ab_total_money = Column(BIGINT, comment='订单总额')
ab_type = Column(String(3), comment='产品类型 购买类型 1:栏目 3:直播 4:视频 5 音频 6:探普') ab_type = Column(String(3), comment='产品类型 购买类型 1:栏目 3:直播 4:视频 5 音频 6:探普贝 7:附件')
ab_proid = Column(String(64), comment='产品ID') ab_proid = Column(String(64), comment='产品ID')
ab_pro_siid = Column(String(64), comment='产品规格ID') ab_pro_siid = Column(String(64), comment='产品规格ID')
ab_si_type = Column(String(3), comment='购买类型') ab_si_type = Column(String(3), comment='购买类型')
......
...@@ -3562,21 +3562,21 @@ class ZhiboExamAnswer(Base, BaseModel): ...@@ -3562,21 +3562,21 @@ class ZhiboExamAnswer(Base, BaseModel):
deletetag = Column(String(3), comment='删除标识') deletetag = Column(String(3), comment='删除标识')
class ZhiboFile(Base, BaseModel): # class ZhiboFile(Base, BaseModel):
__tablename__ = 'zhibo_file' # __tablename__ = 'zhibo_file'
id = Column(String(64), primary_key=True, comment='唯一主键') # id = Column(String(64), primary_key=True, comment='唯一主键')
zf_themeid = Column(String(32), comment='主题ID') # zf_themeid = Column(String(32), comment='主题ID')
zf_url = Column(String(32), comment='附件地址') # zf_url = Column(String(32), comment='附件地址')
zf_file_type = Column(String(3), comment='上传类型') # zf_file_type = Column(String(3), comment='上传类型')
zf_use = Column(String(3), comment='用途') # zf_use = Column(String(3), comment='用途')
zf_no = Column(INTEGER(3), comment='序号') # zf_no = Column(INTEGER(3), comment='序号')
create_time = Column(DateTime, comment='创建时间') # create_time = Column(DateTime, comment='创建时间')
create_by = Column(String(64), comment='创建人') # create_by = Column(String(64), comment='创建人')
update_time = Column(DateTime, comment='修改时间') # update_time = Column(DateTime, comment='修改时间')
update_by = Column(String(64), comment='修改人') # update_by = Column(String(64), comment='修改人')
deletetag = Column(String(3), comment='删除标识') # deletetag = Column(String(3), comment='删除标识')
org_id = Column(String(64), comment='机构ID') # org_id = Column(String(64), comment='机构ID')
class ZhiboHost(Base, BaseModel): class ZhiboHost(Base, BaseModel):
......
...@@ -80,3 +80,28 @@ class ZhiboTheme(Base, BaseModel): ...@@ -80,3 +80,28 @@ class ZhiboTheme(Base, BaseModel):
iscreate_group_success = Column(INTEGER(3), server_default=text("'0'"), comment='是否已创建群组 0:否 1:是') iscreate_group_success = Column(INTEGER(3), server_default=text("'0'"), comment='是否已创建群组 0:否 1:是')
max_online_num = Column(INTEGER(11), server_default=text("'0'"), comment='在线人数峰值') max_online_num = Column(INTEGER(11), server_default=text("'0'"), comment='在线人数峰值')
tags = Column(String(255), comment='标签') tags = Column(String(255), comment='标签')
class ZhiboFile(Base, BaseModel):
__tablename__ = 'zhibo_file'
__table_args__ = {'comment': '直播间附件表'}
id = Column(String(64), primary_key=True, comment='唯一主键')
zf_themeid = Column(String(32), comment='主题ID')
zf_url = Column(String(256), comment='附件地址')
zf_file_type = Column(String(3), comment='上传类型 1直播间附件,2直播间图片 ,3直播间转码视频,4直播间转码音频,5直播间原始视频,6直播间原始音频,7讲师本地上传图片,8用户头像,9问卷图片,10 直播间课件')
zf_use = Column(String(3), comment='用途')
zf_no = Column(String(3), comment='序号')
create_time = Column(DateTime, nullable=False, comment='创建时间')
create_by = Column(String(64), comment='创建人')
update_time = Column(DateTime, comment='修改时间')
update_by = Column(String(64), comment='修改人')
deletetag = Column(String(3), comment='删除标识 0:正常,1: 删除 2:草稿')
org_id = Column(String(64), server_default=text("'1'"), comment='机构ID')
file_ext = Column(String(10), comment='文件扩展名')
file_size = Column(INTEGER(11), comment='文件大小')
file_md5 = Column(String(32), comment='文件Md5')
remark = Column(String(100), comment='备注 文件名')
status = Column(String(5), comment='文件状态 0:未完成,1:已完成')
task_id = Column(String(64), comment='阿里云异步转换id')
cs_file_id = Column(String(64), comment='filerecord记录id')
file_num = Column(String(11), comment='附件总页数 用于转换图片使用')
\ No newline at end of file
...@@ -21,7 +21,7 @@ from app.model.curriculum_order import OrderFlow ...@@ -21,7 +21,7 @@ from app.model.curriculum_order import OrderFlow
from app.model.tamp_user_models import CurriculumPrice, CurriculumColumn, CurriculumRes from app.model.tamp_user_models import CurriculumPrice, CurriculumColumn, CurriculumRes
from xml.etree import cElementTree as etree from xml.etree import cElementTree as etree
from app.model.tamp_zhibo_models import ZhiboTheme from app.model.tamp_zhibo_models import ZhiboTheme, ZhiboFile
from app.utils.alipay.alipayWap import prePay from app.utils.alipay.alipayWap import prePay
from app.utils.apple_pay import apple_pay from app.utils.apple_pay import apple_pay
from app.utils.wxpay import wx_jsapi_pay from app.utils.wxpay import wx_jsapi_pay
...@@ -139,17 +139,16 @@ class CurriculumOrderService: ...@@ -139,17 +139,16 @@ class CurriculumOrderService:
with TAMP_SQL(tamp_user_engine) as tamp_user, TAMP_SQL(tamp_zhibo_engine) as tamp_zhibo: with TAMP_SQL(tamp_user_engine) as tamp_user, TAMP_SQL(tamp_zhibo_engine) as tamp_zhibo:
tamp_user_session = tamp_user.session tamp_user_session = tamp_user.session
tamp_zhibo_session = tamp_zhibo.session tamp_zhibo_session = tamp_zhibo.session
curriculum_column = tamp_user_session.query(CurriculumColumn.id, CurriculumColumn.title, CurriculumColumn.cover, CurriculumColumn.info).all() # curriculum_column = tamp_user_session.query(CurriculumColumn.id, CurriculumColumn.title, CurriculumColumn.cover, CurriculumColumn.info).all()
curriculum_res = tamp_user_session.query(CurriculumRes.id, CurriculumRes.title, CurriculumRes.cover, CurriculumRes.teacher_name).all() # curriculum_res = tamp_user_session.query(CurriculumRes.id, CurriculumRes.title, CurriculumRes.cover, CurriculumRes.teacher_name).all()
zhibo = tamp_zhibo_session.query(ZhiboTheme.id, ZhiboTheme.zt_name, ZhiboTheme.zt_img, ZhiboTheme.manager_name, ZhiboTheme.zt_starttime).all() # zhibo = tamp_zhibo_session.query(ZhiboTheme.id, ZhiboTheme.zt_name, ZhiboTheme.zt_img, ZhiboTheme.manager_name, ZhiboTheme.zt_starttime).all()
totalSize = tamp_user_session.query(OrderFlow.id).filter( # zhibo_file = tamp_zhibo_session.query(ZhiboFile.id, ZhiboFile.remark)
and_(
OrderFlow.createby == user_id, curriculum_column = tamp_user_session.query(CurriculumColumn)
OrderFlow.ab_type != '6', curriculum_res = tamp_user_session.query(CurriculumRes)
OrderFlow.ab_status == 'SUCCESS', zhibo = tamp_zhibo_session.query(ZhiboTheme)
OrderFlow.deletetag == '0' zhibo_file = tamp_zhibo_session.query(ZhiboFile)
)
).count()
res = tamp_user_session.query(OrderFlow).filter( res = tamp_user_session.query(OrderFlow).filter(
and_( and_(
OrderFlow.createby == user_id, OrderFlow.createby == user_id,
...@@ -157,31 +156,66 @@ class CurriculumOrderService: ...@@ -157,31 +156,66 @@ class CurriculumOrderService:
OrderFlow.ab_status == 'SUCCESS', OrderFlow.ab_status == 'SUCCESS',
OrderFlow.deletetag == '0' OrderFlow.deletetag == '0'
) )
).order_by(OrderFlow.createtime.desc()).offset(offset).limit(pageSize) )
totalSize = res.count()
res = res.order_by(OrderFlow.createtime.desc()).offset(offset).limit(pageSize)
# 找出 1栏目表 , 3直播间信息表, [4,5]课程资源, 7附件 的list id
orders = [r.to_dict() for r in res if r.to_dict()['ab_status'] == 'SUCCESS']
orders_dict = {'1':[], '3':[], '45':[], '7':[]}
for i in orders:
prod_type = i.get('ab_type', '')
prod_id = i.get('ab_proid', '')
if prod_type in '13457' and prod_id:
orders_dict[prod_type].append(prod_id)
# 四组组合查询,将 需要的 1栏目表 , 3直播间信息表, [4,5]课程资源, 7附件 查出
curriculum_column = tamp_user_session.query(CurriculumColumn.id, CurriculumColumn.title,
CurriculumColumn.cover, CurriculumColumn.info).\
filter(CurriculumColumn.id.in_(orders_dict["1"])).all()
curriculum_res = tamp_user_session.query(CurriculumRes.id, CurriculumRes.title,
CurriculumRes.cover, CurriculumRes.teacher_name).\
filter(CurriculumRes.id.in_(orders_dict["45"])).all()
zhibo = tamp_zhibo_session.query(ZhiboTheme.id, ZhiboTheme.zt_name, ZhiboTheme.zt_img,
ZhiboTheme.manager_name, ZhiboTheme.zt_starttime).\
filter(ZhiboTheme.id.in_(orders_dict["3"])).all()
zhibo_file = tamp_zhibo_session.query(ZhiboFile.id, ZhiboFile.remark).\
filter(ZhiboFile.id.in_(orders_dict["7"])).all()
curriculum_column = {r[0]: {'title': r[1], 'cover': r[2], 'info': r[3]} for r in curriculum_column} curriculum_column = {r[0]: {'title': r[1], 'cover': r[2], 'info': r[3]} for r in curriculum_column}
curriculum_res = {r[0]: {'title': r[1], 'cover': r[2], 'info': r[3]} for r in curriculum_res} curriculum_res = {r[0]: {'title': r[1], 'cover': r[2], 'info': r[3]} for r in curriculum_res}
zhibo = {r[0]: {'title': r[1], 'cover': r[2], 'info': r[3], 'zb_start_time': int(r[4].timestamp()) if r[4] else 0} for r in zhibo} zhibo = {r[0]: {'title': r[1], 'cover': r[2], 'info': r[3], 'zb_start_time': int(r[4].timestamp()) if r[4] else 0} for r in zhibo}
orders = [r.to_dict() for r in res if r.to_dict()['ab_status'] == 'SUCCESS'] zhibo_file = {r[0]: {'title': r[1]} for r in zhibo_file}
# orders = [r.to_dict() for r in res if r.to_dict()['ab_status'] == 'SUCCESS']
allowed = {'id', 'title', 'cover', 'info', 'ab_type', 'ab_payment', 'ab_score', 'ab_pay_mode', 'ab_ordernum', 'transaction_serial_no', 'pay_method', 'createtime', 'pay_time', 'complete_time',
'ab_status', 'ab_pro_siid', 'zb_start_time'}
temp_orders = [] temp_orders = []
for order in orders: for order in orders:
prod_type = order.get('ab_type', '') prod_type = order.get('ab_type', '')
prod_id = order.get('ab_proid', '') prod_id = order.get('ab_proid', '')
if prod_type == '1' and curriculum_column.get(prod_id, None): if prod_type == '1' and curriculum_column.get(prod_id):
order = {**order, **curriculum_column.get(prod_id, None)} order = {**order, **curriculum_column.get(prod_id, None)}
elif prod_type == '3' and zhibo.get(prod_id, None): elif prod_type == '3' and zhibo.get(prod_id, None):
order = {**order, **zhibo.get(prod_id, None)} order = {**order, **zhibo.get(prod_id, None)}
elif prod_type in ['4', '5'] and curriculum_res.get(prod_id, None): elif prod_type in ['4', '5'] and curriculum_res.get(prod_id, None):
order = {**order, **curriculum_res.get(prod_id, None)} order = {**order, **curriculum_res.get(prod_id, None)}
temp_orders.append(order) elif prod_type == '7' and zhibo_file.get(prod_id, None):
temp_orders = temp_orders[offset: offset+pageSize] order = {**order, **zhibo_file.get(prod_id, None)}
allowed = {'id', 'title', 'cover', 'info', 'ab_type', 'ab_payment', 'ab_score', 'ab_pay_mode', 'ab_ordernum', 'transaction_serial_no', 'pay_method', 'createtime', 'pay_time', 'complete_time', keys = set(order.keys()) - allowed
'ab_status', 'ab_pro_siid', 'zb_start_time'}
for r in temp_orders:
keys = set(r.keys()) - allowed
for key in keys: for key in keys:
del r[key] del order[key]
if not temp_orders: temp_orders.append(order)
temp_orders = [] # temp_orders = temp_orders[offset: offset+pageSize]
# allowed = {'id', 'title', 'cover', 'info', 'ab_type', 'ab_payment', 'ab_score', 'ab_pay_mode', 'ab_ordernum', 'transaction_serial_no', 'pay_method', 'createtime', 'pay_time', 'complete_time',
# 'ab_status', 'ab_pro_siid', 'zb_start_time'}
# for r in temp_orders:
# keys = set(r.keys()) - allowed
# for key in keys:
# del r[key]
# if not temp_orders:
# temp_orders = []
return { return {
'content': temp_orders, 'content': temp_orders,
'pageNum': pageNumber, 'pageNum': pageNumber,
...@@ -386,51 +420,82 @@ def getAllOrders(args): ...@@ -386,51 +420,82 @@ def getAllOrders(args):
with TAMP_SQL(tamp_user_engine) as tamp_user, TAMP_SQL(tamp_zhibo_engine) as tamp_zhibo: with TAMP_SQL(tamp_user_engine) as tamp_user, TAMP_SQL(tamp_zhibo_engine) as tamp_zhibo:
tamp_user_session = tamp_user.session tamp_user_session = tamp_user.session
tamp_zhibo_session = tamp_zhibo.session tamp_zhibo_session = tamp_zhibo.session
# 全部订单 # 全部订单
curriculum_column = tamp_user_session.query(CurriculumColumn.id, CurriculumColumn.title, CurriculumColumn.cover, # curriculum_column = tamp_user_session.query(CurriculumColumn.id, CurriculumColumn.title, CurriculumColumn.cover,
CurriculumColumn.info).all() # CurriculumColumn.info).all()
curriculum_res = tamp_user_session.query(CurriculumRes.id, CurriculumRes.title, CurriculumRes.cover, # curriculum_res = tamp_user_session.query(CurriculumRes.id, CurriculumRes.title, CurriculumRes.cover,
CurriculumRes.teacher_name).all() # CurriculumRes.teacher_name).all()
zhibo = tamp_zhibo_session.query(ZhiboTheme.id, ZhiboTheme.zt_name, ZhiboTheme.zt_img, ZhiboTheme.manager_name, # zhibo = tamp_zhibo_session.query(ZhiboTheme.id, ZhiboTheme.zt_name, ZhiboTheme.zt_img, ZhiboTheme.manager_name,
ZhiboTheme.zt_starttime).all() # ZhiboTheme.zt_starttime).all()
totalSize = tamp_user_session.query(OrderFlow.id).filter(
and_(
OrderFlow.createby == user_id,
OrderFlow.ab_status == 'SUCCESS',
OrderFlow.deletetag == '0'
)
).count()
res = tamp_user_session.query(OrderFlow).filter( res = tamp_user_session.query(OrderFlow).filter(
and_( and_(
OrderFlow.createby == user_id, OrderFlow.createby == user_id,
OrderFlow.ab_status == 'SUCCESS', OrderFlow.ab_status == 'SUCCESS',
OrderFlow.deletetag == '0' OrderFlow.deletetag == '0'
) )
).order_by(OrderFlow.createtime.desc()).offset(offset).limit(pageSize) )
totalSize = res.count()
res = res.order_by(OrderFlow.createtime.desc()).offset(offset).limit(pageSize)
# 找出 1栏目表 , 3直播间信息表, [4,5]课程资源, 7附件 的list id
orders = [r.to_dict() for r in res if r.to_dict()['ab_status'] == 'SUCCESS']
orders_dict = {'1':[], '3':[], '45':[], '7':[]}
for i in orders:
prod_type = i.get('ab_type', '')
prod_id = i.get('ab_proid', '')
if prod_type in '13457' and prod_id:
orders_dict[prod_type].append(prod_id)
# 四组组合查询,将 需要的 1栏目表 , 3直播间信息表, [4,5]课程资源, 7附件 查出
curriculum_column = tamp_user_session.query(CurriculumColumn.id, CurriculumColumn.title,
CurriculumColumn.cover, CurriculumColumn.info).\
filter(CurriculumColumn.id.in_(orders_dict["1"])).all()
curriculum_res = tamp_user_session.query(CurriculumRes.id, CurriculumRes.title,
CurriculumRes.cover, CurriculumRes.teacher_name).\
filter(CurriculumRes.id.in_(orders_dict["45"])).all()
zhibo = tamp_zhibo_session.query(ZhiboTheme.id, ZhiboTheme.zt_name, ZhiboTheme.zt_img,
ZhiboTheme.manager_name, ZhiboTheme.zt_starttime).\
filter(ZhiboTheme.id.in_(orders_dict["3"])).all()
zhibo_file = tamp_zhibo_session.query(ZhiboFile.id, ZhiboFile.remark).\
filter(ZhiboFile.id.in_(orders_dict["7"])).all()
curriculum_column = {r[0]: {'title': r[1], 'cover': r[2], 'info': r[3]} for r in curriculum_column} curriculum_column = {r[0]: {'title': r[1], 'cover': r[2], 'info': r[3]} for r in curriculum_column}
curriculum_res = {r[0]: {'title': r[1], 'cover': r[2], 'info': r[3]} for r in curriculum_res} curriculum_res = {r[0]: {'title': r[1], 'cover': r[2], 'info': r[3]} for r in curriculum_res}
zhibo = {r[0]: {'title': r[1], 'cover': r[2], 'info': r[3], 'zb_start_time': int(r[4].timestamp()) if r[4] else 0} for r in zhibo} zhibo = {r[0]: {'title': r[1], 'cover': r[2], 'info': r[3], 'zb_start_time': int(r[4].timestamp()) if r[4] else 0} for r in zhibo}
orders = [r.to_dict() for r in res if r.to_dict()['ab_status'] == 'SUCCESS'] zhibo_file = {r[0]: {'title': r[1]} for r in zhibo_file}
allowed = {'id', 'title', 'cover', 'info', 'ab_type', 'ab_payment', 'ab_score', 'ab_pay_mode', 'ab_ordernum',
'transaction_serial_no', 'pay_method', 'createtime', 'pay_time', 'complete_time',
'ab_status', 'ab_pro_siid', 'zt_start_time'}
temp_orders = [] temp_orders = []
for order in orders: for order in orders:
prod_type = order.get('ab_type', '') prod_type = order.get('ab_type', '')
prod_id = order.get('ab_proid', '') prod_id = order.get('ab_proid', '')
if prod_type == '1' and curriculum_column.get(prod_id, None): if prod_type == '1' and curriculum_column.get(prod_id, None):
order = {**order, **curriculum_column.get(prod_id, None)} order = {**order, **curriculum_column.get(prod_id, None)}
elif prod_type == '3' and zhibo.get(prod_id, None): elif prod_type == '3' and zhibo.get(prod_id, None):
order = {**order, **zhibo.get(prod_id, None)} order = {**order, **zhibo.get(prod_id, None)}
elif prod_type in ['4', '5'] and curriculum_res.get(prod_id, None): elif prod_type in ['4', '5'] and curriculum_res.get(prod_id, None):
order = {**order, **curriculum_res.get(prod_id, None)} order = {**order, **curriculum_res.get(prod_id, None)}
temp_orders.append(order) elif prod_type == '7' and zhibo_file.get(prod_id, None):
allowed = {'id', 'title', 'cover', 'info', 'ab_type', 'ab_payment', 'ab_score', 'ab_pay_mode', 'ab_ordernum', order = {**order, **zhibo_file.get(prod_id, None)}
'transaction_serial_no', 'pay_method', 'createtime', 'pay_time', 'complete_time',
'ab_status', 'ab_pro_siid', 'zt_start_time'} # 将多余字段删除
for r in temp_orders: keys = set(order.keys()) - allowed
keys = set(r.keys()) - allowed
for key in keys: for key in keys:
del r[key] del order[key]
if not temp_orders:
temp_orders = [] temp_orders.append(order)
# for r in temp_orders:
# keys = set(r.keys()) - allowed
# for key in keys:
# del r[key]
# if not temp_orders:
# temp_orders = []
return { return {
'content': temp_orders, 'content': temp_orders,
'pageNum': pageNumber, 'pageNum': pageNumber,
......
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