update 标签管理

This commit is contained in:
P3ngSaM 2022-06-29 11:02:15 +08:00
parent fb10a80bc9
commit 9fc6da3b01
7 changed files with 146 additions and 57 deletions

View File

@ -191,7 +191,7 @@ class MongoHelper:
def update_single_data(self, param1, param2, param3, param4): def update_single_data(self, param1, param2, param3, param4):
""" """
插入单条数据 更新单条数据
param1: str 数据库 param1: str 数据库
param2: str 数据表 param2: str 数据表
param3: dict 查询条件 param3: dict 查询条件
@ -202,6 +202,32 @@ class MongoHelper:
collection = self.client[param1][param2] collection = self.client[param1][param2]
collection.update_one(param3, {"$set": param4}) collection.update_one(param3, {"$set": param4})
def update_single_data_by_pull(self, param1, param2, param3, param4):
"""
更新单条数据
param1: str 数据库
param2: str 数据表
param3: dict 查询条件
param4: dict 更新或新插入的数据
return:
None
"""
collection = self.client[param1][param2]
collection.update_one(param3, {"$pull": param4})
def update_single_data_by_add(self, param1, param2, param3, param4):
"""
更新单条数据
param1: str 数据库
param2: str 数据表
param3: dict 查询条件
param4: dict 更新或新插入的数据
return:
None
"""
collection = self.client[param1][param2]
collection.update_one(param3, {"$addToSet": param4})
def delete_single_data(self, param1, param2, param3): def delete_single_data(self, param1, param2, param3):
""" """
根据查询条件删除一条文档 根据查询条件删除一条文档

View File

@ -1,46 +0,0 @@
from flask import Blueprint, request
from Modules.Indicators.IndicatorImpl import IndicatorImpl
from Utils.ErrorUtil import APIReturnError
from Utils.RouteUtil import RouteParamsCheck
indicator_route = Blueprint('indicator', __name__)
@indicator_route.route('/search_tags', methods=['GET'])
def search_tags_route():
"""查询标签"""
try:
RouteParamsCheck(request.args, ["tag_name", "page_no", "page_size"]).required()
tag_name = request.args["tag_name"]
page_no = request.args["page_no"]
page_size = request.args["page_size"]
impl = IndicatorImpl()
result = impl.search_tags(tag_name=tag_name, page_no=page_no, page_size=page_size)
return {"info": "标签搜索", "result": result}, 200
except APIReturnError as e:
return {"info": e.__str__()}, e.status_code
@indicator_route.route('/new_tags', methods=['GET'])
def new_tags_route():
"""新增标签"""
try:
RouteParamsCheck(request.args, ["tag_name"]).required()
tag_name = request.args["tag_name"]
impl = IndicatorImpl()
result = impl.new_tags(tag_name=tag_name)
return {"info": "新增标签", "result": result}, 200
except APIReturnError as e:
return {"info": e.__str__()}, e.status_code
@indicator_route.route('/new_indicator', methods=['POST'])
def new_indicator_route():
"""构建指标"""
try:
RouteParamsCheck(request.args, ["tag_name"]).required()
except APIReturnError as e:
return {"inof": e.__str__()}, e.status_code

View File

@ -1,9 +1,11 @@
import time
from DBHelper.MongoHelperInstance import DB_TEST from DBHelper.MongoHelperInstance import DB_TEST
from Modules.Indicators.IndicatorObj import TagObj from Modules.Indicators.Tags.TagsObj import TagObj
from Utils.CommonUtil import CommonUtils from Utils.CommonUtil import CommonUtils
class IndicatorImpl(object): class TagsImpl(object):
@staticmethod @staticmethod
def make_new_cid(): def make_new_cid():
@ -28,12 +30,12 @@ class IndicatorImpl(object):
{'标签名称': {"$regex": kwargs['tag_name']}} {'标签名称': {"$regex": kwargs['tag_name']}}
) )
records = DB_TEST.find_all_data_with_single_sort( records = DB_TEST.find_data_by_page_with_sort(
'模型数据', '模型数据',
'标签数据', '标签数据',
{'标签名称': {"$regex": kwargs['tag_name']}}, {'标签名称': {"$regex": kwargs['tag_name']}},
['标签名称'], ['标签名称', '创建日期'],
{'标签名称': -1}, {'创建日期': -1},
kwargs['page_size'], kwargs['page_size'],
kwargs['page_no'] kwargs['page_no']
) )
@ -51,6 +53,8 @@ class IndicatorImpl(object):
obj = TagObj() obj = TagObj()
obj.tag_id = self.make_new_cid() obj.tag_id = self.make_new_cid()
obj.tag_field = filed obj.tag_field = filed
obj.associate_func = list()
obj.create_date = time.strftime('%Y-%m-%d', time.localtime())
DB_TEST.upsert_single_data( DB_TEST.upsert_single_data(
'模型数据', '模型数据',
'标签数据', '标签数据',
@ -58,3 +62,38 @@ class IndicatorImpl(object):
obj.fields_toggle() obj.fields_toggle()
) )
return '新增成功' return '新增成功'
@staticmethod
def cancel_associate_func(**kwargs):
"""取消关联函数"""
tag_id = kwargs['tag_id']
func_id = kwargs['func_id']
DB_TEST.update_single_data_by_pull(
'模型数据',
'标签数据',
{'标签ID': tag_id},
{"关联函数": {"函数ID": func_id}}
)
return '取消关联成功'
@staticmethod
def associate_func(**kwargs):
"""关联函数"""
tag_id = kwargs['tag_id']
func_id = kwargs['func_id']
func_name = kwargs['func_name']
obj = TagObj.AssociateFunc()
obj.func_id = func_id
obj.func_name = func_name
DB_TEST.update_single_data_by_add(
'模型数据',
'标签数据',
{'标签ID': tag_id},
{"关联函数": obj.fields_toggle()}
)
return '关联成功'

View File

@ -1,5 +1,5 @@
from Utils.ObjUtil import SpecObject from Utils.ObjUtil import SpecObject
from Utils.ValidateUtil import ValidateAttr from Utils.ValidateUtil import ValidateAttr, Validate
class IndexObj(SpecObject): class IndexObj(SpecObject):
@ -76,13 +76,15 @@ class TagObj(SpecObject):
"func_id": "函数ID", "func_id": "函数ID",
"func_name": "函数名称" "func_name": "函数名称"
} }
tag_id = ValidateAttr(field='tag_id', type=str) tag_id = ValidateAttr(field='tag_id', type=str)
tag_field = ValidateAttr(field='tag_field', type=str) tag_field = ValidateAttr(field='tag_field', type=str)
associate_func = ValidateAttr(field='associate_func', instance_list=AssociateFunc) associate_func = ValidateAttr(field='associate_func', instance_list=AssociateFunc)
create_date = ValidateAttr(field='create_date', func=Validate.date_format)
fields_map = { fields_map = {
"tag_id": "标签ID", "tag_id": "标签ID",
"tag_field": "标签名称", "tag_field": "标签名称",
"associate_func": "关联函数" "associate_func": "关联函数",
"create_date": "创建日期"
} }

View File

@ -0,0 +1,68 @@
from flask import Blueprint, request
from Modules.Indicators.Tags.TagsImpl import TagsImpl
from Utils.ErrorUtil import APIReturnError
from Utils.RouteUtil import RouteParamsCheck
tags_route = Blueprint('tags', __name__)
@tags_route.route('/search_tags', methods=['GET'])
def search_tags_route():
"""查询标签"""
try:
RouteParamsCheck(request.args, ["tag_name", "page_no", "page_size"]).required()
tag_name = request.args["tag_name"]
page_no = request.args["page_no"]
page_size = request.args["page_size"]
impl = TagsImpl()
result = impl.search_tags(tag_name=tag_name, page_no=page_no, page_size=page_size)
return {"info": "标签搜索", "result": result}, 200
except APIReturnError as e:
return {"info": e.__str__()}, e.status_code
@tags_route.route('/new_tags', methods=['GET'])
def new_tags_route():
"""新增标签"""
try:
RouteParamsCheck(request.args, ["tag_name"]).required()
tag_name = request.args["tag_name"]
impl = TagsImpl()
result = impl.new_tags(tag_name=tag_name)
return {"info": "新增标签", "result": result}, 200
except APIReturnError as e:
return {"info": e.__str__()}, e.status_code
@tags_route.route('/cancel_associate_func', methods=['GET'])
def cancel_associate_func_route():
"""取消关联函数"""
try:
RouteParamsCheck(request.args, ["tag_id", "func_id"]).required()
tag_id = request.args['tag_id']
func_id = request.args['func_id']
impl = TagsImpl()
result = impl.cancel_associate_func(tag_id=tag_id, func_id=func_id)
return {"info": "关联函数", "result": result}, 200
except APIReturnError as e:
return {"info": e.__str__()}, e.status_code
@tags_route.route('/associate_func', methods=['GET'])
def associate_func_route():
"""关联函数"""
try:
RouteParamsCheck(request.args, ["tag_id", "func_id", "func_name"]).required()
tag_id = request.args['tag_id']
func_id = request.args['func_id']
func_name = request.args['func_name']
impl = TagsImpl()
result = impl.associate_func(tag_id=tag_id, func_id=func_id, func_name=func_name)
return {"info": "关联函数", "result": result}, 200
except APIReturnError as e:
return {"info": e.__str__()}, e.status_code

View File

4
app.py
View File

@ -2,7 +2,7 @@ from flask import Flask
from flask_cors import * from flask_cors import *
from Modules.Functions.FinIndex.FinIndexRoutes import finance_route from Modules.Functions.FinIndex.FinIndexRoutes import finance_route
from Modules.Indicators.IndicatorRoutes import indicator_route from Modules.Indicators.Tags.TagsRoutes import tags_route
app = Flask(__name__) app = Flask(__name__)
CORS(app, supports_credentials=True) CORS(app, supports_credentials=True)
@ -10,7 +10,7 @@ app.config['JSON_SORT_KEYS'] = False
app.register_blueprint(finance_route, url_prefix='/rating/functions/finance') app.register_blueprint(finance_route, url_prefix='/rating/functions/finance')
app.register_blueprint(indicator_route, url_prefix='/rating/indicator') app.register_blueprint(tags_route, url_prefix='/rating/indicator/tags')
@app.route('/admin/version') @app.route('/admin/version')