添加舆情资讯表
This commit is contained in:
parent
0576acf91d
commit
ff75e60285
|
@ -9,8 +9,8 @@ class CompanyBaseInfoInfo(BaseModel):
|
|||
legal_person: Optional[str]
|
||||
reg_capital: Optional[str]
|
||||
paid_capital: Optional[str]
|
||||
establish_date: date
|
||||
approved_date: date
|
||||
establish_date: Optional[date]
|
||||
approved_date: Optional[date]
|
||||
license_duration: Optional[str]
|
||||
reg_status: Optional[str]
|
||||
reg_location: Optional[str]
|
||||
|
|
|
@ -0,0 +1,57 @@
|
|||
from sqlalchemy.orm import Session
|
||||
from . import Schemas
|
||||
from .Models import OpinionInformation
|
||||
|
||||
|
||||
def opinion_information_add(db: Session, data: Schemas.OpinionInformationAddInfo):
|
||||
item = OpinionInformation(**data.dict())
|
||||
db.add(item)
|
||||
db.commit()
|
||||
db.refresh(item)
|
||||
return item
|
||||
|
||||
|
||||
def opinion_information_delete(db: Session, item_id: int):
|
||||
db.query(OpinionInformation).filter_by(id=item_id).delete()
|
||||
db.commit()
|
||||
|
||||
|
||||
def opinion_information_update(db: Session, data: Schemas.OpinionInformationUpdateInfo):
|
||||
db.query(OpinionInformation).filter_by(id=data.id).update({key: v for key, v in data.dict().items() if v is not None})
|
||||
db.commit()
|
||||
item = db.query(OpinionInformation).filter_by(id=data.id).first()
|
||||
return item
|
||||
|
||||
|
||||
def opinion_information_get(db: Session, item_id: int):
|
||||
item = db.query(OpinionInformation).filter_by(id=item_id).first()
|
||||
return item
|
||||
|
||||
|
||||
def opinion_information_query(db: Session, params: Schemas.OpinionInformationQuery):
|
||||
params_dict = params.dict()
|
||||
query = db.query(OpinionInformation)
|
||||
db_model = OpinionInformation
|
||||
for key, value in params_dict.items():
|
||||
if key not in ['page', 'page_size'] and value is not None:
|
||||
if type(value) == str:
|
||||
query = query.filter(getattr(db_model, key).like(f'%{value}%'))
|
||||
elif type(value) in [int, float, bool]:
|
||||
query = query.filter_by(**{key: value})
|
||||
else:
|
||||
query = query.filter(getattr(db_model, key) == value)
|
||||
count = query.count()
|
||||
page = None
|
||||
page_size = None
|
||||
if 'page' in params_dict:
|
||||
page = params_dict['page']
|
||||
if 'page_size' in params_dict:
|
||||
page_size = params_dict['page_size']
|
||||
# 页数不超过100
|
||||
page_size = min(page_size, 100)
|
||||
if page is not None and page_size is not None:
|
||||
query = query.offset((page - 1) * page_size).limit(page_size).all()
|
||||
return count, query
|
||||
|
||||
|
||||
################
|
|
@ -0,0 +1,22 @@
|
|||
from sqlalchemy.orm import relationship
|
||||
from Context.common import common_db
|
||||
from sqlalchemy import Column, Integer, String, ForeignKey, Text, DateTime, func, Date
|
||||
|
||||
|
||||
class OpinionInformation(common_db.Base):
|
||||
"""
|
||||
舆情资讯表
|
||||
"""
|
||||
__tablename__ = "opinion_information"
|
||||
id = Column(Integer)
|
||||
type = Column(String(128), comment="主体类别")
|
||||
item_id = Column(Integer, comment="资讯主体id")
|
||||
title = Column(String(128), comment="标题")
|
||||
url = Column(Text, comment="原文链接")
|
||||
publish_date = Column(Date, comment="发布时间")
|
||||
remark = Column(Text, comment="备注")
|
||||
created_at = Column(DateTime, comment="创建时间")
|
||||
|
||||
def to_dict(self):
|
||||
data = {c.name: getattr(self, c.name) for c in self.__table__.columns}
|
||||
return data
|
|
@ -0,0 +1,43 @@
|
|||
from fastapi import APIRouter, Depends, HTTPException
|
||||
from sqlalchemy.orm import Session
|
||||
|
||||
from Context.common import common_db
|
||||
from . import Schemas
|
||||
from . import Crud
|
||||
|
||||
router = APIRouter(tags=["舆情资讯"])
|
||||
|
||||
|
||||
@router.post("/opinion_information/add", summary="添加舆情资讯", response_model=Schemas.OpinionInformationAddRes)
|
||||
def opinion_information_add(req: Schemas.OpinionInformationAddReq, db: Session = Depends(common_db.get_db)):
|
||||
item = Crud.opinion_information_add(db, req)
|
||||
return Schemas.OpinionInformationAddRes(**item.to_dict())
|
||||
|
||||
|
||||
@router.post("/opinion_information/delete", summary="删除舆情资讯")
|
||||
def opinion_information_delete(req: Schemas.OpinionInformationDeleteReq, db: Session = Depends(common_db.get_db)):
|
||||
Crud.opinion_information_delete(db, req.id)
|
||||
return "删除成功"
|
||||
|
||||
|
||||
@router.post("/opinion_information/update", summary="更新舆情资讯", response_model=Schemas.OpinionInformationUpdateRes)
|
||||
def opinion_information_update(req: Schemas.OpinionInformationUpdateReq, db: Session = Depends(common_db.get_db)):
|
||||
item = Crud.opinion_information_update(db, req)
|
||||
return Schemas.OpinionInformationUpdateRes(**item.to_dict())
|
||||
|
||||
|
||||
@router.post("/opinion_information/get", summary="获取舆情资讯", response_model=Schemas.OpinionInformationGetRes)
|
||||
def opinion_information_get(req: Schemas.OpinionInformationGetReq, db: Session = Depends(common_db.get_db)):
|
||||
item = Crud.opinion_information_get(db, req.id)
|
||||
if not item:
|
||||
raise HTTPException(detail="未查询到信息", status_code=404)
|
||||
return Schemas.OpinionInformationGetRes(**item.to_dict())
|
||||
|
||||
|
||||
@router.post("/opinion_information/query", summary="查询舆情资讯", response_model=Schemas.OpinionInformationQueryRes)
|
||||
def opinion_information_query(req: Schemas.OpinionInformationQueryReq, db: Session = Depends(common_db.get_db)):
|
||||
count, query = Crud.opinion_information_query(db, req)
|
||||
items = [Schemas.OpinionInformationInfo(**item.to_dict()) for item in query]
|
||||
return Schemas.OpinionInformationQueryRes(count=count, items=items)
|
||||
|
||||
#########
|
|
@ -0,0 +1,71 @@
|
|||
from datetime import datetime, date
|
||||
from pydantic import BaseModel
|
||||
from typing import Optional, List
|
||||
|
||||
|
||||
class OpinionInformationInfo(BaseModel):
|
||||
id: Optional[int]
|
||||
type: Optional[str]
|
||||
item_id: Optional[int]
|
||||
title: Optional[str]
|
||||
url: Optional[str]
|
||||
publish_date: Optional[date]
|
||||
remark: Optional[str]
|
||||
created_at: Optional[datetime]
|
||||
|
||||
|
||||
class OpinionInformationAddInfo(BaseModel):
|
||||
type: Optional[str]
|
||||
item_id: Optional[int]
|
||||
title: str
|
||||
url: Optional[str]
|
||||
publish_date: Optional[date]
|
||||
remark: Optional[str]
|
||||
|
||||
|
||||
class OpinionInformationAddReq(OpinionInformationAddInfo):
|
||||
pass
|
||||
|
||||
|
||||
class OpinionInformationAddRes(OpinionInformationInfo):
|
||||
pass
|
||||
|
||||
|
||||
class OpinionInformationUpdateInfo(OpinionInformationInfo):
|
||||
pass
|
||||
|
||||
|
||||
class OpinionInformationUpdateReq(OpinionInformationUpdateInfo):
|
||||
pass
|
||||
|
||||
|
||||
class OpinionInformationUpdateRes(OpinionInformationInfo):
|
||||
pass
|
||||
|
||||
|
||||
class OpinionInformationQuery(OpinionInformationInfo):
|
||||
page_size: Optional[int]
|
||||
page: Optional[int]
|
||||
|
||||
|
||||
class OpinionInformationQueryReq(OpinionInformationQuery):
|
||||
pass
|
||||
|
||||
|
||||
class OpinionInformationGetReq(BaseModel):
|
||||
id: int
|
||||
|
||||
|
||||
class OpinionInformationGetRes(OpinionInformationInfo):
|
||||
pass
|
||||
|
||||
|
||||
class OpinionInformationQueryRes(BaseModel):
|
||||
count: int
|
||||
items: List[OpinionInformationInfo]
|
||||
|
||||
|
||||
class OpinionInformationDeleteReq(BaseModel):
|
||||
id: int
|
||||
|
||||
#######################
|
|
@ -0,0 +1,9 @@
|
|||
from fastapi import APIRouter, Depends
|
||||
from .Mods.OpinionInformation import Router as OpinionInformationRouter
|
||||
from Context.common import auth_util
|
||||
|
||||
router = APIRouter(
|
||||
prefix="/api/common_information",
|
||||
dependencies=[Depends(auth_util.token_data_depend)]
|
||||
)
|
||||
router.include_router(OpinionInformationRouter.router)
|
4
main.py
4
main.py
|
@ -7,7 +7,9 @@ from Mods.EditRecord import Router as EditRecordRouter
|
|||
from Mods.User import Router as UserRouter
|
||||
from Mods.BasicInformation import Router as BasicInformationRouter
|
||||
from Mods.OtherInformation import Router as OtherInformationRouter
|
||||
from Mods.CommonInformation import Router as CommonInformationRouter
|
||||
from Utils.RecordUtils import record_middleware
|
||||
|
||||
common_db.init_database()
|
||||
app = FastAPI(
|
||||
title="城投调研工具后端",
|
||||
|
@ -22,12 +24,12 @@ app.add_middleware(
|
|||
allow_headers=["*"],
|
||||
)
|
||||
|
||||
|
||||
app.middleware('http')(record_middleware)
|
||||
|
||||
app.include_router(EditRecordRouter.router)
|
||||
app.include_router(UserRouter.router)
|
||||
app.include_router(BasicInformationRouter.router)
|
||||
app.include_router(OtherInformationRouter.router)
|
||||
app.include_router(CommonInformationRouter.router)
|
||||
if __name__ == '__main__':
|
||||
uvicorn.run(app, log_config=uvicorn_log_config, port=int(conf['app']['port']))
|
||||
|
|
Loading…
Reference in New Issue