项目初次提交
This commit is contained in:
0
apps/vadmin/resource/__init__.py
Normal file
0
apps/vadmin/resource/__init__.py
Normal file
20
apps/vadmin/resource/crud.py
Normal file
20
apps/vadmin/resource/crud.py
Normal file
@ -0,0 +1,20 @@
|
||||
#!/usr/bin/python
|
||||
# -*- coding: utf-8 -*-
|
||||
# @version : 1.0
|
||||
# @Create Time : 2023/8/25 13:15
|
||||
# @File : crud.py
|
||||
# @IDE : PyCharm
|
||||
# @desc : 简要说明
|
||||
|
||||
from sqlalchemy.ext.asyncio import AsyncSession
|
||||
from core.crud import DalBase
|
||||
from . import models, schemas
|
||||
|
||||
|
||||
class ImagesDal(DalBase):
|
||||
|
||||
def __init__(self, db: AsyncSession):
|
||||
super(ImagesDal, self).__init__()
|
||||
self.db = db
|
||||
self.model = models.VadminImages
|
||||
self.schema = schemas.ImagesSimpleOut
|
1
apps/vadmin/resource/models/__init__.py
Normal file
1
apps/vadmin/resource/models/__init__.py
Normal file
@ -0,0 +1 @@
|
||||
from .images import VadminImages
|
27
apps/vadmin/resource/models/images.py
Normal file
27
apps/vadmin/resource/models/images.py
Normal file
@ -0,0 +1,27 @@
|
||||
#!/usr/bin/python
|
||||
# -*- coding: utf-8 -*-
|
||||
# @version : 1.0
|
||||
# @Create Time : 2023/8/25 13:41
|
||||
# @File : images.py
|
||||
# @IDE : PyCharm
|
||||
# @desc : 图片素材表
|
||||
|
||||
from sqlalchemy.orm import relationship, Mapped, mapped_column
|
||||
from apps.vadmin.auth.models import VadminUser
|
||||
from db.db_base import BaseModel
|
||||
from sqlalchemy import String, ForeignKey, Integer
|
||||
|
||||
|
||||
class VadminImages(BaseModel):
|
||||
__tablename__ = "vadmin_resource_images"
|
||||
__table_args__ = ({'comment': '图片素材表'})
|
||||
|
||||
filename: Mapped[str] = mapped_column(String(255), nullable=False, comment="原图片名称")
|
||||
image_url: Mapped[str] = mapped_column(String(500), nullable=False, comment="图片链接")
|
||||
|
||||
create_user_id: Mapped[int] = mapped_column(
|
||||
Integer,
|
||||
ForeignKey("vadmin_auth_user.id", ondelete='RESTRICT'),
|
||||
comment="创建人"
|
||||
)
|
||||
create_user: Mapped[VadminUser] = relationship(foreign_keys=create_user_id)
|
1
apps/vadmin/resource/params/__init__.py
Normal file
1
apps/vadmin/resource/params/__init__.py
Normal file
@ -0,0 +1 @@
|
||||
from .images import ImagesParams
|
27
apps/vadmin/resource/params/images.py
Normal file
27
apps/vadmin/resource/params/images.py
Normal file
@ -0,0 +1,27 @@
|
||||
#!/usr/bin/python
|
||||
# -*- coding: utf-8 -*-
|
||||
# @version : 1.0
|
||||
# @Create Time : 2023/8/25 14:59
|
||||
# @File : images.py
|
||||
# @IDE : PyCharm
|
||||
# @desc : 简要说明
|
||||
|
||||
|
||||
from fastapi import Depends
|
||||
from core.dependencies import Paging, QueryParams
|
||||
|
||||
|
||||
class ImagesParams(QueryParams):
|
||||
"""
|
||||
列表分页
|
||||
"""
|
||||
|
||||
def __init__(
|
||||
self,
|
||||
filename: str = None,
|
||||
params: Paging = Depends()
|
||||
):
|
||||
super().__init__(params)
|
||||
self.filename = ('like', filename)
|
||||
self.v_order = "desc"
|
||||
self.v_order_field = "create_datetime"
|
1
apps/vadmin/resource/schemas/__init__.py
Normal file
1
apps/vadmin/resource/schemas/__init__.py
Normal file
@ -0,0 +1 @@
|
||||
from .images import Images, ImagesOut, ImagesSimpleOut
|
33
apps/vadmin/resource/schemas/images.py
Normal file
33
apps/vadmin/resource/schemas/images.py
Normal file
@ -0,0 +1,33 @@
|
||||
#!/usr/bin/python
|
||||
# -*- coding: utf-8 -*-
|
||||
# @version : 1.0
|
||||
# @Create Time : 2023/8/25 14:49
|
||||
# @File : images.py
|
||||
# @IDE : PyCharm
|
||||
# @desc : 简要说明
|
||||
|
||||
|
||||
from pydantic import BaseModel, ConfigDict
|
||||
from core.data_types import DatetimeStr
|
||||
from apps.vadmin.auth.schemas import UserSimpleOut
|
||||
|
||||
|
||||
class Images(BaseModel):
|
||||
filename: str
|
||||
image_url: str
|
||||
|
||||
create_user_id: int
|
||||
|
||||
|
||||
class ImagesSimpleOut(Images):
|
||||
model_config = ConfigDict(from_attributes=True)
|
||||
|
||||
id: int
|
||||
create_datetime: DatetimeStr
|
||||
update_datetime: DatetimeStr
|
||||
|
||||
|
||||
class ImagesOut(ImagesSimpleOut):
|
||||
model_config = ConfigDict(from_attributes=True)
|
||||
|
||||
create_user: UserSimpleOut
|
60
apps/vadmin/resource/views.py
Normal file
60
apps/vadmin/resource/views.py
Normal file
@ -0,0 +1,60 @@
|
||||
#!/usr/bin/python
|
||||
# -*- coding: utf-8 -*-
|
||||
# @version : 1.0
|
||||
# @Create Time : 2023/8/25 9:29
|
||||
# @File : views.py
|
||||
# @IDE : PyCharm
|
||||
# @desc : 简要说明
|
||||
|
||||
from fastapi import APIRouter, Depends, UploadFile
|
||||
from sqlalchemy.orm import joinedload
|
||||
from core.dependencies import IdList
|
||||
from utils.file.aliyun_oss import AliyunOSS, BucketConf
|
||||
from utils.response import SuccessResponse
|
||||
from . import schemas, crud, params, models
|
||||
from apps.vadmin.auth.utils.current import FullAdminAuth
|
||||
from apps.vadmin.auth.utils.validation.auth import Auth
|
||||
from application.settings import ALIYUN_OSS
|
||||
|
||||
app = APIRouter()
|
||||
|
||||
|
||||
###########################################################
|
||||
# 图片资源管理
|
||||
###########################################################
|
||||
@app.get("/images", summary="获取图片列表")
|
||||
async def get_images_list(p: params.ImagesParams = Depends(), auth: Auth = Depends(FullAdminAuth())):
|
||||
model = models.VadminImages
|
||||
v_options = [joinedload(model.create_user)]
|
||||
v_schema = schemas.ImagesOut
|
||||
datas, count = await crud.ImagesDal(auth.db).get_datas(
|
||||
**p.dict(),
|
||||
v_options=v_options,
|
||||
v_schema=v_schema,
|
||||
v_return_count=True
|
||||
)
|
||||
return SuccessResponse(datas, count=count)
|
||||
|
||||
|
||||
@app.post("/images", summary="创建图片")
|
||||
async def create_images(file: UploadFile, auth: Auth = Depends(FullAdminAuth())):
|
||||
filepath = f"/resource/images/"
|
||||
result = await AliyunOSS(BucketConf(**ALIYUN_OSS)).upload_image(filepath, file)
|
||||
data = schemas.Images(
|
||||
filename=file.filename,
|
||||
image_url=result,
|
||||
create_user_id=auth.user.id
|
||||
)
|
||||
|
||||
return SuccessResponse(await crud.ImagesDal(auth.db).create_data(data=data))
|
||||
|
||||
|
||||
@app.delete("/images", summary="删除图片", description="硬删除")
|
||||
async def delete_images(ids: IdList = Depends(), auth: Auth = Depends(FullAdminAuth())):
|
||||
await crud.ImagesDal(auth.db).delete_datas(ids.ids, v_soft=False)
|
||||
return SuccessResponse("删除成功")
|
||||
|
||||
|
||||
@app.get("/images/{data_id}", summary="获取图片信息")
|
||||
async def get_images(data_id: int, auth: Auth = Depends(FullAdminAuth())):
|
||||
return SuccessResponse(await crud.ImagesDal(auth.db).get_data(data_id, v_schema=schemas.ImagesSimpleOut))
|
Reference in New Issue
Block a user