项目初次搭建

This commit is contained in:
2025-02-13 16:29:28 +08:00
parent feef37cbd7
commit 3cb2a4c507
121 changed files with 19550 additions and 0 deletions

View File

@ -0,0 +1,67 @@
from app.model.model import SysUser
from app.model.schemas.sys_user_schemas import SysUserPager, SysUserOut
from app.common.bcrypt_pw import hash_password
from app.db.page_util import get_pager
from sqlalchemy import and_, desc
from sqlalchemy.orm import Session
def user_pager(user: SysUserPager, session: Session):
query = session.query(SysUser).order_by(desc(SysUser.id))
filters = []
if user.username is not None:
filters.append(SysUser.username.ilike(f"%{user.username}%"))
if user.dept_id is not None:
filters.append(SysUser.dept_id == user.dept_id)
if len(filters) > 0:
query.filter(and_(*filters))
pager = get_pager(query, user.pagerNum, user.pagerSize)
pager.data = [SysUserOut.from_orm(user) for user in pager.data]
return pager
def add_user(user: SysUser, session: Session):
user.password = hash_password(user.password)
session.add(user)
session.commit()
return user
def get_user_by_id(id: int, session: Session):
user = session.query(SysUser).filter(SysUser.id == id).first()
return user
def stop_user(user: SysUser, session: Session):
user.user_status = "1"
session.commit();
return user
def start_user(user: SysUser, session: Session):
user.user_status = "0"
session.commit();
return user
def get_user_by_username(username: str, session: Session):
user = session.query(SysUser).filter(SysUser.username == username).first()
return user
# 验证username的唯一性
def check_username(username: str, session: Session):
count = session.query(SysUser).filter(SysUser.username == username).count()
if count > 0:
return True
else:
return False
# 修改密码
def update_pw(user: SysUser, session: Session):
session.query(SysUser).filter_by(id=user.id).update({
"password": user.password
})
session.commit()

29
app/model/model.py Normal file
View File

@ -0,0 +1,29 @@
from app.db.db_base import DbCommon
from sqlalchemy import String,Integer
from sqlalchemy.orm import Mapped, mapped_column
class SysUser(DbCommon):
__tablename__ = "sys_user"
username: Mapped[str] = mapped_column(String(50), unique=True, nullable=False)
password: Mapped[str] = mapped_column(String(255))
dept_id: Mapped[int] = mapped_column(Integer)
login_name: Mapped[str] = mapped_column(String(255))
avatar: Mapped[str] = mapped_column(String(255))
user_status: Mapped[str] = mapped_column(String(10))
def keys(self):
keys = ["username", "password", "dept_id", "login_name", "avatar", "user_status"]
keys.extend(super().keys())
return keys
def __getitem__(self, item):
'''
内置方法, 当使用obj['name']的形式的时候, 将调用这个方法, 这里返回的结果就是值
:param item:
:return:
'''
return getattr(self, item, None)

View File

@ -0,0 +1,43 @@
from pydantic import BaseModel, Field
from typing import Optional
# 用户相关的原型
class SysUserIN(BaseModel):
username: Optional[str] = Field(..., description="用户名", max_length=50)
password: Optional[str] = Field(..., description="密码", max_length=30, min_length=6)
dept_id: Optional[str] = Field(None, description="部门id")
login_name: Optional[str] = Field(None, description="昵称", max_length=20)
class SysUserLogin(BaseModel):
username: Optional[str] = Field(..., description="用户名", max_length=50)
password: Optional[str] = Field(..., description="密码", max_length=30, min_length=6)
class SysUserOut(BaseModel):
id: Optional[int] = Field(..., description="id")
username: Optional[str] = Field(..., description="用户名")
dept_id: Optional[str] = Field(None, description="部门id")
dept_name: Optional[str] = Field(None, description="部门名称")
login_name: Optional[str] = Field(None, description="昵称")
class Config:
orm_mode = True
class SysUserUpdatePw(BaseModel):
id: Optional[int] = Field(..., description="id")
new_password: Optional[str] = Field(..., description="新密码", max_length=30, min_length=8)
original_password: Optional[str] = Field(..., description="旧密码", max_length=30, min_length=8)
class SysUserPager(BaseModel):
username: Optional[str] = Field(None, description="用户名")
dept_id: Optional[str] = Field(None, description="部门id")
login_name: Optional[str] = Field(None, description="昵称")
pagerNum: Optional[int] = Field(1, description="当前页码")
pagerSize: Optional[int] = Field(10, description="每页数量")
class Config:
orm_mode = True