from apiflask import APIBlueprint from flask import session from app import rpc from app.api.v1.exception.interaction import AddInteractionError from app.api.v1.schema.interaction import (InteractionIn, InteractionBriefIn, InteractionListIn, InteractionBriefOut, InteractionListOut) from app.util.auth import login_required interaction = APIBlueprint('interaction', __name__) @interaction.post('/') @interaction.doc(summary='添加互动记录', description='添加互动记录,category 类型int,1:点赞,2:加油,3:评论') @interaction.input(InteractionIn, location='json') @login_required def add_interaction(json_data): try: is_existed = rpc.interaction.add(**{ 'sender': session['user_id'], 'receiver': json_data['receiver_id'], 'category': json_data['category'], 'related_party': json_data.get('related_party_id'), 'comment': json_data.get('comment') }) except Exception as e: raise AddInteractionError(extra_data={'error_docs': str(e)}) if is_existed: return {'msg': '不能重复提交了~', 'code': 401} return {'msg': 'add interaction successfully', 'code': 200} @interaction.get('/brief') @interaction.doc(summary='查询互动简要数据', description='查询互动简要数据') @interaction.input(InteractionBriefIn, location='query') @interaction.output(InteractionBriefOut) @login_required def get_interaction_brief(query_data): current_date = query_data.get('current_date', None) results = rpc.interaction.get_interaction_brief(session['user_id'], current_date=current_date) return results @interaction.get('/list') @interaction.doc(summary='查询互动列表数据', description='查询互动列表数据') @interaction.input(InteractionListIn, location='query') @interaction.output(InteractionListOut) @login_required def get_interaction_list(query_data): current_date = query_data.get('current_date', None) results = rpc.interaction.get_interaction_list(session['user_id'], category=query_data['category'], current_date=current_date) return {'interactions': results}