项目初次搭建
This commit is contained in:
67
app/model/crud/sys_user_crud.py
Normal file
67
app/model/crud/sys_user_crud.py
Normal 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
29
app/model/model.py
Normal 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)
|
43
app/model/schemas/sys_user_schemas.py
Normal file
43
app/model/schemas/sys_user_schemas.py
Normal 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
|
Reference in New Issue
Block a user