22# -*- coding: utf-8 -*-
33import bcrypt
44
5- from sqlalchemy import and_ , desc , select
5+ from sqlalchemy import select
66from sqlalchemy .ext .asyncio import AsyncSession
77from sqlalchemy .orm import noload , selectinload
88from sqlalchemy .sql import Select
@@ -171,16 +171,8 @@ async def get_list(self, dept: int | None, username: str | None, phone: str | No
171171 :param status: 用户状态
172172 :return:
173173 """
174- stmt = (
175- select (self .model )
176- .options (
177- selectinload (self .model .dept ).options (noload (Dept .parent ), noload (Dept .children ), noload (Dept .users )),
178- selectinload (self .model .roles ).options (noload (Role .users ), noload (Role .menus ), noload (Role .scopes )),
179- )
180- .order_by (desc (self .model .join_time ))
181- )
182-
183174 filters = []
175+
184176 if dept :
185177 filters .append (self .model .dept_id == dept )
186178 if username :
@@ -190,10 +182,15 @@ async def get_list(self, dept: int | None, username: str | None, phone: str | No
190182 if status is not None :
191183 filters .append (self .model .status == status )
192184
193- if filters :
194- stmt = stmt .where (and_ (* filters ))
195-
196- return stmt
185+ return await self .select_order (
186+ 'id' ,
187+ 'desc' ,
188+ * filters ,
189+ load_options = [
190+ selectinload (self .model .dept ).options (noload (Dept .parent ), noload (Dept .children ), noload (Dept .users )),
191+ selectinload (self .model .roles ).options (noload (Role .users ), noload (Role .menus ), noload (Role .scopes )),
192+ ],
193+ )
197194
198195 async def get_super (self , db : AsyncSession , user_id : int ) -> bool :
199196 """
@@ -294,22 +291,19 @@ async def get_with_relation(
294291 :param username: 用户名
295292 :return:
296293 """
297- stmt = select (self .model ).options (
298- selectinload (self .model .dept ),
299- selectinload (self .model .roles ).options (selectinload (Role .menus ), selectinload (Role .scopes )),
300- )
301-
302294 filters = []
295+
303296 if user_id :
304297 filters .append (self .model .id == user_id )
305298 if username :
306299 filters .append (self .model .username == username )
307300
308- if filters :
309- stmt = stmt .where (and_ (* filters ))
310-
311- user = await db .execute (stmt )
312- return user .scalars ().first ()
301+ return await self .select_model_by_column (
302+ db ,
303+ * filters ,
304+ load_options = [selectinload (self .model .roles ).options (selectinload (Role .menus ), selectinload (Role .scopes ))],
305+ load_strategies = ['dept' ],
306+ )
313307
314308
315309user_dao : CRUDUser = CRUDUser (User )
0 commit comments