添加舆情资讯表
This commit is contained in:
parent
0576acf91d
commit
ff75e60285
|
@ -9,8 +9,8 @@ class CompanyBaseInfoInfo(BaseModel):
|
||||||
legal_person: Optional[str]
|
legal_person: Optional[str]
|
||||||
reg_capital: Optional[str]
|
reg_capital: Optional[str]
|
||||||
paid_capital: Optional[str]
|
paid_capital: Optional[str]
|
||||||
establish_date: date
|
establish_date: Optional[date]
|
||||||
approved_date: date
|
approved_date: Optional[date]
|
||||||
license_duration: Optional[str]
|
license_duration: Optional[str]
|
||||||
reg_status: Optional[str]
|
reg_status: Optional[str]
|
||||||
reg_location: 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.User import Router as UserRouter
|
||||||
from Mods.BasicInformation import Router as BasicInformationRouter
|
from Mods.BasicInformation import Router as BasicInformationRouter
|
||||||
from Mods.OtherInformation import Router as OtherInformationRouter
|
from Mods.OtherInformation import Router as OtherInformationRouter
|
||||||
|
from Mods.CommonInformation import Router as CommonInformationRouter
|
||||||
from Utils.RecordUtils import record_middleware
|
from Utils.RecordUtils import record_middleware
|
||||||
|
|
||||||
common_db.init_database()
|
common_db.init_database()
|
||||||
app = FastAPI(
|
app = FastAPI(
|
||||||
title="城投调研工具后端",
|
title="城投调研工具后端",
|
||||||
|
@ -22,12 +24,12 @@ app.add_middleware(
|
||||||
allow_headers=["*"],
|
allow_headers=["*"],
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
app.middleware('http')(record_middleware)
|
app.middleware('http')(record_middleware)
|
||||||
|
|
||||||
app.include_router(EditRecordRouter.router)
|
app.include_router(EditRecordRouter.router)
|
||||||
app.include_router(UserRouter.router)
|
app.include_router(UserRouter.router)
|
||||||
app.include_router(BasicInformationRouter.router)
|
app.include_router(BasicInformationRouter.router)
|
||||||
app.include_router(OtherInformationRouter.router)
|
app.include_router(OtherInformationRouter.router)
|
||||||
|
app.include_router(CommonInformationRouter.router)
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
uvicorn.run(app, log_config=uvicorn_log_config, port=int(conf['app']['port']))
|
uvicorn.run(app, log_config=uvicorn_log_config, port=int(conf['app']['port']))
|
||||||
|
|
Loading…
Reference in New Issue