Skip to content

Commit 42f1884

Browse files
insistencegitee-org
authored andcommitted
!5 Dash-FastAPI-Admin v1.0.1
Merge pull request !5 from insistence/develop
2 parents 2899ff3 + a99fcb0 commit 42f1884

File tree

39 files changed

+2724
-345
lines changed

39 files changed

+2724
-345
lines changed

dash-fastapi-backend/module_admin/controller/role_controller.py

Lines changed: 61 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
from config.get_db import get_db
44
from module_admin.service.login_service import get_current_user, CurrentUserInfoServiceResponse
55
from module_admin.service.role_service import *
6+
from module_admin.service.user_service import UserService, UserRoleQueryModel, UserRolePageObject, UserRolePageObjectResponse, CrudUserRoleModel
67
from module_admin.entity.vo.role_vo import *
78
from utils.response_util import *
89
from utils.log_util import *
@@ -117,3 +118,63 @@ async def export_system_role_list(request: Request, role_query: RoleQueryModel,
117118
except Exception as e:
118119
logger.exception(e)
119120
return response_500(data="", message=str(e))
121+
122+
123+
@roleController.post("/role/authUser/allocatedList", response_model=UserRolePageObjectResponse, dependencies=[Depends(CheckUserInterfaceAuth('common'))])
124+
async def get_system_allocated_user_list(request: Request, user_role: UserRolePageObject, query_db: Session = Depends(get_db)):
125+
try:
126+
user_role_query = UserRoleQueryModel(**user_role.dict())
127+
user_role_allocated_query_result = UserService.get_user_role_allocated_list_services(query_db, user_role_query)
128+
# 分页操作
129+
user_role_allocated_page_query_result = get_page_obj(user_role_allocated_query_result, user_role.page_num, user_role.page_size)
130+
logger.info('获取成功')
131+
return response_200(data=user_role_allocated_page_query_result, message="获取成功")
132+
except Exception as e:
133+
logger.exception(e)
134+
return response_500(data="", message=str(e))
135+
136+
137+
@roleController.post("/role/authUser/unallocatedList", response_model=UserRolePageObjectResponse, dependencies=[Depends(CheckUserInterfaceAuth('common'))])
138+
async def get_system_unallocated_user_list(request: Request, user_role: UserRolePageObject, query_db: Session = Depends(get_db)):
139+
try:
140+
user_role_query = UserRoleQueryModel(**user_role.dict())
141+
user_role_unallocated_query_result = UserService.get_user_role_unallocated_list_services(query_db, user_role_query)
142+
# 分页操作
143+
user_role_unallocated_page_query_result = get_page_obj(user_role_unallocated_query_result, user_role.page_num, user_role.page_size)
144+
logger.info('获取成功')
145+
return response_200(data=user_role_unallocated_page_query_result, message="获取成功")
146+
except Exception as e:
147+
logger.exception(e)
148+
return response_500(data="", message=str(e))
149+
150+
151+
@roleController.post("/role/authUser/selectAll", response_model=CrudRoleResponse, dependencies=[Depends(CheckUserInterfaceAuth('system:role:edit'))])
152+
@log_decorator(title='角色管理', business_type=4)
153+
async def add_system_role_user(request: Request, add_user_role: CrudUserRoleModel, query_db: Session = Depends(get_db)):
154+
try:
155+
add_user_role_result = UserService.add_user_role_services(query_db, add_user_role)
156+
if add_user_role_result.is_success:
157+
logger.info(add_user_role_result.message)
158+
return response_200(data=add_user_role_result, message=add_user_role_result.message)
159+
else:
160+
logger.warning(add_user_role_result.message)
161+
return response_400(data="", message=add_user_role_result.message)
162+
except Exception as e:
163+
logger.exception(e)
164+
return response_500(data="", message=str(e))
165+
166+
167+
@roleController.post("/role/authUser/cancel", response_model=CrudRoleResponse, dependencies=[Depends(CheckUserInterfaceAuth('system:role:edit'))])
168+
@log_decorator(title='角色管理', business_type=4)
169+
async def cancel_system_role_user(request: Request, cancel_user_role: CrudUserRoleModel, query_db: Session = Depends(get_db)):
170+
try:
171+
cancel_user_role_result = UserService.delete_user_role_services(query_db, cancel_user_role)
172+
if cancel_user_role_result.is_success:
173+
logger.info(cancel_user_role_result.message)
174+
return response_200(data=cancel_user_role_result, message=cancel_user_role_result.message)
175+
else:
176+
logger.warning(cancel_user_role_result.message)
177+
return response_400(data="", message=cancel_user_role_result.message)
178+
except Exception as e:
179+
logger.exception(e)
180+
return response_500(data="", message=str(e))

dash-fastapi-backend/module_admin/controller/user_controller.py

Lines changed: 88 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -153,7 +153,7 @@ async def change_system_user_profile_info(request: Request, edit_user: AddUserMo
153153

154154
@userController.patch("/user/profile/resetPwd", response_model=CrudUserResponse, dependencies=[Depends(CheckUserInterfaceAuth('common'))])
155155
@log_decorator(title='个人信息', business_type=2)
156-
async def reset_system_user_password(request: Request, reset_user: ResetUserModel, query_db: Session = Depends(get_db), current_user: CurrentUserInfoServiceResponse = Depends(get_current_user)):
156+
async def reset_system_user_password(request: Request, reset_user: ResetUserModel, query_db: Session = Depends(get_db), current_user: CurrentUserInfoServiceResponse = Depends(get_current_user)):
157157
try:
158158
if not reset_user.user_id and reset_user.old_password:
159159
reset_user.user_id = current_user.user.user_id
@@ -172,6 +172,33 @@ async def reset_system_user_password(request: Request, reset_user: ResetUserMode
172172
return response_500(data="", message=str(e))
173173

174174

175+
@userController.post("/user/importData", dependencies=[Depends(CheckUserInterfaceAuth('system:user:import'))])
176+
@log_decorator(title='用户管理', business_type=6)
177+
async def batch_import_system_user(request: Request, user_import: ImportUserModel, query_db: Session = Depends(get_db), current_user: CurrentUserInfoServiceResponse = Depends(get_current_user)):
178+
try:
179+
batch_import_result = UserService.batch_import_user_services(query_db, user_import, current_user)
180+
if batch_import_result.is_success:
181+
logger.info(batch_import_result.message)
182+
return response_200(data=batch_import_result, message=batch_import_result.message)
183+
else:
184+
logger.warning(batch_import_result.message)
185+
return response_400(data="", message=batch_import_result.message)
186+
except Exception as e:
187+
logger.exception(e)
188+
return response_500(data="", message=str(e))
189+
190+
191+
@userController.post("/user/importTemplate", dependencies=[Depends(CheckUserInterfaceAuth('system:user:import'))])
192+
async def export_system_user_template(request: Request, query_db: Session = Depends(get_db)):
193+
try:
194+
user_import_template_result = UserService.get_user_import_template_services()
195+
logger.info('获取成功')
196+
return streaming_response_200(data=bytes2file_response(user_import_template_result))
197+
except Exception as e:
198+
logger.exception(e)
199+
return response_500(data="", message=str(e))
200+
201+
175202
@userController.post("/user/export", dependencies=[Depends(CheckUserInterfaceAuth('system:user:export'))])
176203
@log_decorator(title='用户管理', business_type=5)
177204
async def export_system_user_list(request: Request, user_query: UserQueryModel, query_db: Session = Depends(get_db)):
@@ -184,3 +211,63 @@ async def export_system_user_list(request: Request, user_query: UserQueryModel,
184211
except Exception as e:
185212
logger.exception(e)
186213
return response_500(data="", message=str(e))
214+
215+
216+
@userController.post("/user/authRole/allocatedList", response_model=UserRolePageObjectResponse, dependencies=[Depends(CheckUserInterfaceAuth('common'))])
217+
async def get_system_allocated_role_list(request: Request, user_role: UserRolePageObject, query_db: Session = Depends(get_db)):
218+
try:
219+
user_role_query = UserRoleQueryModel(**user_role.dict())
220+
user_role_allocated_query_result = UserService.get_user_role_allocated_list_services(query_db, user_role_query)
221+
# 分页操作
222+
user_role_allocated_page_query_result = get_page_obj(user_role_allocated_query_result, user_role.page_num, user_role.page_size)
223+
logger.info('获取成功')
224+
return response_200(data=user_role_allocated_page_query_result, message="获取成功")
225+
except Exception as e:
226+
logger.exception(e)
227+
return response_500(data="", message=str(e))
228+
229+
230+
@userController.post("/user/authRole/unallocatedList", response_model=UserRolePageObjectResponse, dependencies=[Depends(CheckUserInterfaceAuth('common'))])
231+
async def get_system_unallocated_role_list(request: Request, user_role: UserRolePageObject, query_db: Session = Depends(get_db)):
232+
try:
233+
user_role_query = UserRoleQueryModel(**user_role.dict())
234+
user_role_unallocated_query_result = UserService.get_user_role_unallocated_list_services(query_db, user_role_query)
235+
# 分页操作
236+
user_role_unallocated_page_query_result = get_page_obj(user_role_unallocated_query_result, user_role.page_num, user_role.page_size)
237+
logger.info('获取成功')
238+
return response_200(data=user_role_unallocated_page_query_result, message="获取成功")
239+
except Exception as e:
240+
logger.exception(e)
241+
return response_500(data="", message=str(e))
242+
243+
244+
@userController.post("/user/authRole/selectAll", response_model=CrudUserResponse, dependencies=[Depends(CheckUserInterfaceAuth('system:user:edit'))])
245+
@log_decorator(title='用户管理', business_type=4)
246+
async def add_system_role_user(request: Request, add_user_role: CrudUserRoleModel, query_db: Session = Depends(get_db)):
247+
try:
248+
add_user_role_result = UserService.add_user_role_services(query_db, add_user_role)
249+
if add_user_role_result.is_success:
250+
logger.info(add_user_role_result.message)
251+
return response_200(data=add_user_role_result, message=add_user_role_result.message)
252+
else:
253+
logger.warning(add_user_role_result.message)
254+
return response_400(data="", message=add_user_role_result.message)
255+
except Exception as e:
256+
logger.exception(e)
257+
return response_500(data="", message=str(e))
258+
259+
260+
@userController.post("/user/authRole/cancel", response_model=CrudUserResponse, dependencies=[Depends(CheckUserInterfaceAuth('system:user:edit'))])
261+
@log_decorator(title='用户管理', business_type=4)
262+
async def cancel_system_role_user(request: Request, cancel_user_role: CrudUserRoleModel, query_db: Session = Depends(get_db)):
263+
try:
264+
cancel_user_role_result = UserService.delete_user_role_services(query_db, cancel_user_role)
265+
if cancel_user_role_result.is_success:
266+
logger.info(cancel_user_role_result.message)
267+
return response_200(data=cancel_user_role_result, message=cancel_user_role_result.message)
268+
else:
269+
logger.warning(cancel_user_role_result.message)
270+
return response_400(data="", message=cancel_user_role_result.message)
271+
except Exception as e:
272+
logger.exception(e)
273+
return response_500(data="", message=str(e))

dash-fastapi-backend/module_admin/dao/user_dao.py

Lines changed: 111 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
from module_admin.entity.do.dept_do import SysDept
66
from module_admin.entity.do.post_do import SysPost
77
from module_admin.entity.do.menu_do import SysMenu
8-
from module_admin.entity.vo.user_vo import UserModel, UserRoleModel, UserPostModel, CurrentUserInfo, UserQueryModel
8+
from module_admin.entity.vo.user_vo import UserModel, UserRoleModel, UserPostModel, CurrentUserInfo, UserQueryModel, UserRoleQueryModel
99
from utils.time_format_util import list_format_datetime, format_datetime_dict_list
1010
from datetime import datetime, time
1111
from typing import Union, List
@@ -231,6 +231,90 @@ def delete_user_dao(cls, db: Session, user: UserModel):
231231
.filter(SysUser.user_id == user.user_id) \
232232
.update({SysUser.del_flag: '2', SysUser.update_by: user.update_by, SysUser.update_time: user.update_time})
233233

234+
@classmethod
235+
def get_user_role_allocated_list_by_user_id(cls, db: Session, query_object: UserRoleQueryModel):
236+
"""
237+
根据用户id获取用户已分配的角色列表信息数据库操作
238+
:param db: orm对象
239+
:param query_object: 用户角色查询对象
240+
:return: 用户已分配的角色列表信息
241+
"""
242+
allocated_role_list = db.query(SysRole) \
243+
.filter(
244+
SysRole.del_flag == 0,
245+
SysRole.role_id != 1,
246+
SysRole.role_name == query_object.role_name if query_object.role_name else True,
247+
SysRole.role_key == query_object.role_key if query_object.role_key else True,
248+
SysRole.role_id.in_(
249+
db.query(SysUserRole.role_id).filter(SysUserRole.user_id == query_object.user_id)
250+
)
251+
).distinct().all()
252+
253+
return list_format_datetime(allocated_role_list)
254+
255+
@classmethod
256+
def get_user_role_unallocated_list_by_user_id(cls, db: Session, query_object: UserRoleQueryModel):
257+
"""
258+
根据用户id获取用户未分配的角色列表信息数据库操作
259+
:param db: orm对象
260+
:param query_object: 用户角色查询对象
261+
:return: 用户未分配的角色列表信息
262+
"""
263+
unallocated_role_list = db.query(SysRole) \
264+
.filter(
265+
SysRole.del_flag == 0,
266+
SysRole.role_id != 1,
267+
SysRole.role_name == query_object.role_name if query_object.role_name else True,
268+
SysRole.role_key == query_object.role_key if query_object.role_key else True,
269+
~SysRole.role_id.in_(
270+
db.query(SysUserRole.role_id).filter(SysUserRole.user_id == query_object.user_id)
271+
)
272+
).distinct().all()
273+
274+
return list_format_datetime(unallocated_role_list)
275+
276+
@classmethod
277+
def get_user_role_allocated_list_by_role_id(cls, db: Session, query_object: UserRoleQueryModel):
278+
"""
279+
根据角色id获取已分配的用户列表信息
280+
:param db: orm对象
281+
:param query_object: 用户角色查询对象
282+
:return: 角色已分配的用户列表信息
283+
"""
284+
allocated_user_list = db.query(SysUser) \
285+
.filter(
286+
SysUser.del_flag == 0,
287+
SysUser.user_id != 1,
288+
SysUser.user_name == query_object.user_name if query_object.user_name else True,
289+
SysUser.phonenumber == query_object.phonenumber if query_object.phonenumber else True,
290+
SysUser.user_id.in_(
291+
db.query(SysUserRole.user_id).filter(SysUserRole.role_id == query_object.role_id)
292+
)
293+
).distinct().all()
294+
295+
return list_format_datetime(allocated_user_list)
296+
297+
@classmethod
298+
def get_user_role_unallocated_list_by_role_id(cls, db: Session, query_object: UserRoleQueryModel):
299+
"""
300+
根据角色id获取未分配的用户列表信息
301+
:param db: orm对象
302+
:param query_object: 用户角色查询对象
303+
:return: 角色未分配的用户列表信息
304+
"""
305+
unallocated_user_list = db.query(SysUser) \
306+
.filter(
307+
SysUser.del_flag == 0,
308+
SysUser.user_id != 1,
309+
SysUser.user_name == query_object.user_name if query_object.user_name else True,
310+
SysUser.phonenumber == query_object.phonenumber if query_object.phonenumber else True,
311+
~SysUser.user_id.in_(
312+
db.query(SysUserRole.user_id).filter(SysUserRole.role_id == query_object.role_id)
313+
)
314+
).distinct().all()
315+
316+
return list_format_datetime(unallocated_user_list)
317+
234318
@classmethod
235319
def add_user_role_dao(cls, db: Session, user_role: UserRoleModel):
236320
"""
@@ -254,6 +338,32 @@ def delete_user_role_dao(cls, db: Session, user_role: UserRoleModel):
254338
.filter(SysUserRole.user_id == user_role.user_id) \
255339
.delete()
256340

341+
@classmethod
342+
def delete_user_role_by_user_and_role_dao(cls, db: Session, user_role: UserRoleModel):
343+
"""
344+
根据用户id及角色id删除用户角色关联信息数据库操作
345+
:param db: orm对象
346+
:param user_role: 用户角色关联对象
347+
:return:
348+
"""
349+
db.query(SysUserRole) \
350+
.filter(SysUserRole.user_id == user_role.user_id, SysUserRole.role_id == user_role.role_id) \
351+
.delete()
352+
353+
@classmethod
354+
def get_user_role_detail(cls, db: Session, user_role: UserRoleModel):
355+
"""
356+
根据用户角色关联获取用户角色关联详细信息
357+
:param db: orm对象
358+
:param user_role: 用户角色关联对象
359+
:return: 用户角色关联信息
360+
"""
361+
user_role_info = db.query(SysUserRole) \
362+
.filter(SysUserRole.user_id == user_role.user_id, SysUserRole.role_id == user_role.role_id) \
363+
.distinct().first()
364+
365+
return user_role_info
366+
257367
@classmethod
258368
def add_user_post_dao(cls, db: Session, user_post: UserPostModel):
259369
"""

dash-fastapi-backend/module_admin/entity/vo/user_vo.py

Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -213,6 +213,51 @@ class DeleteUserModel(BaseModel):
213213
update_time: Optional[str]
214214

215215

216+
class UserRoleQueryModel(UserRoleModel):
217+
"""
218+
用户角色关联管理不分页查询模型
219+
"""
220+
user_name: Optional[str]
221+
phonenumber: Optional[str]
222+
role_name: Optional[str]
223+
role_key: Optional[str]
224+
225+
226+
class UserRolePageObject(UserRoleQueryModel):
227+
"""
228+
用户角色关联管理分页查询模型
229+
"""
230+
page_num: int
231+
page_size: int
232+
233+
234+
class UserRolePageObjectResponse(BaseModel):
235+
"""
236+
用户角色关联管理列表分页查询返回模型
237+
"""
238+
rows: List = []
239+
page_num: int
240+
page_size: int
241+
total: int
242+
has_next: bool
243+
244+
245+
class CrudUserRoleModel(BaseModel):
246+
"""
247+
新增、删除用户关联角色及角色关联用户模型
248+
"""
249+
user_ids: Optional[str]
250+
role_ids: Optional[str]
251+
252+
253+
class ImportUserModel(BaseModel):
254+
"""
255+
批量导入用户模型
256+
"""
257+
url: str
258+
is_update: bool
259+
260+
216261
class CrudUserResponse(BaseModel):
217262
"""
218263
操作用户响应模型

0 commit comments

Comments
 (0)