免费A级毛片无码专区网站-成人国产精品视频一区二区-啊 日出水了 用力乖乖在线-国产黑色丝袜在线观看下-天天操美女夜夜操美女-日韩网站在线观看中文字幕-AV高清hd片XXX国产-亚洲av中文字字幕乱码综合-搬开女人下面使劲插视频

20 基于SqlSugar的開發(fā)框架循序漸進(jìn)介紹-- 在基于UniApp+Vue的移動端實(shí)現(xiàn)多條件查詢的處理

在做一些常規(guī)應(yīng)用的時(shí)候,我們往往需要確定條件的內(nèi)容,以便在后臺進(jìn)行區(qū)分的進(jìn)行精確查詢,在移動端,由于受限于屏幕界面的情況,一般會對多個(gè)指定的條件進(jìn)行模糊的搜索,而這個(gè)搜索的處理,也是和前者強(qiáng)類型的條件查詢處理類似的處理過程,因此本篇隨筆探討兩種不同查詢在前端界面上的展示效果,以及后端基于.netCore的Web API端的基類進(jìn)行的統(tǒng)一封裝處理 。
1、前端精確條件的查詢處理在基于Vue3+Typescript+ElementPlus的前端界面中,查詢是很多界面需要擁有的功能,如下所示 。

20 基于SqlSugar的開發(fā)框架循序漸進(jìn)介紹-- 在基于UniApp+Vue的移動端實(shí)現(xiàn)多條件查詢的處理

文章插圖
展開后的全部查詢條件
20 基于SqlSugar的開發(fā)框架循序漸進(jìn)介紹-- 在基于UniApp+Vue的移動端實(shí)現(xiàn)多條件查詢的處理

文章插圖
以上的查詢部分是一個(gè)查詢函數(shù)的處理,如下代碼所示 。
// 查詢列表處理async function search() {pageInfo.pageIndex = 1; // 重置為第一頁//默認(rèn)使用當(dāng)前用戶公司const userInfo = $u.util.storageSession.getItem('user_info');searchForm.company_ID = userInfo?.company_ID; //所屬公司await getlist(); //獲取列表}//列表數(shù)據(jù)獲取async function getlist() {loading.value = https://www.huyubaike.com/biancheng/true;var param = {// 分頁條件SkipCount: (pageInfo.pageIndex - 1) * pageInfo.pageSize,MaxResultCount: pageInfo.pageSize,Sorting: sorting.value,// 查詢過濾條件Name: searchForm.name,MobilePhone: searchForm.mobilePhone,Email: searchForm.email,QQ: searchForm.qq,Nickname: searchForm.nickname,HandNo: searchForm.handNo,IsExpire: searchForm.isExpire,Title: searchForm.title,dept_ID: searchForm.dept_id,company_ID: searchForm.company_ID};//日期條件處理addDateRange(param, searchForm.creationTime);let result = await user.GetList(param);if (result) {list.value = result.items;pageInfo.totalCount = result.totalCount;}setTimeout(() => {loading.value = false;}, 500);}我們看到,這些條件都是由特定的參數(shù)組成的,因此他們是精確性的屬性查詢 。
前端根據(jù)框架后端的接口進(jìn)行前端JS端的類的封裝處理,引入了ES6類的概念實(shí)現(xiàn)業(yè)務(wù)基類接口的統(tǒng)一封裝,簡化代碼 。
權(quán)限模塊我們涉及到的用戶管理、機(jī)構(gòu)管理、角色管理、菜單管理、功能管理、操作日志、登錄日志等業(yè)務(wù)類,那么這些類繼承BaseApi,就會具有相關(guān)的接口了,如下所示繼承關(guān)系 。
20 基于SqlSugar的開發(fā)框架循序漸進(jìn)介紹-- 在基于UniApp+Vue的移動端實(shí)現(xiàn)多條件查詢的處理

文章插圖
按照這個(gè)思路,我們在BaseApi的ES6類里面定義了對應(yīng)Web API基類里面的操作方法,如下所示 。
20 基于SqlSugar的開發(fā)框架循序漸進(jìn)介紹-- 在基于UniApp+Vue的移動端實(shí)現(xiàn)多條件查詢的處理

文章插圖
這樣,我們在創(chuàng)建一個(gè)業(yè)務(wù)類的時(shí)候,如果沒有特殊的自定義接口,只需要繼承基類BaseApi即可具有所有的常規(guī)基類方法了 。
20 基于SqlSugar的開發(fā)框架循序漸進(jìn)介紹-- 在基于UniApp+Vue的移動端實(shí)現(xiàn)多條件查詢的處理

文章插圖
我們再來后端看看具體的查詢邏輯實(shí)現(xiàn),首先需要了解各個(gè)控制器之間的繼承關(guān)系,如下圖所示。
20 基于SqlSugar的開發(fā)框架循序漸進(jìn)介紹-- 在基于UniApp+Vue的移動端實(shí)現(xiàn)多條件查詢的處理

文章插圖
同樣,我們基礎(chǔ)的查詢處理邏輯,主要也是放在BusinessController里面實(shí)現(xiàn),畢竟是通用的邏輯,變化的只是一些實(shí)體信息,因此可以通過泛型的模板方法設(shè)計(jì)模式處理變化的部分 。
20 基于SqlSugar的開發(fā)框架循序漸進(jìn)介紹-- 在基于UniApp+Vue的移動端實(shí)現(xiàn)多條件查詢的處理

文章插圖
我們可以看到,在BusinessController控制器部分,它也只是對Service層邏輯的簡單封裝一下,核心的處理邏輯部分,在下面的基類Service層的代碼中 。
/// <summary>/// 根據(jù)條件獲取列表/// </summary>/// <param name="input">分頁查詢條件</param>/// <returns></returns>public virtual async Task<PagedResultDto<TEntity>> GetListAsync(TGetListInput input){var query = CreateFilteredQueryAsync(input);var totalCount = await query.CountAsync();query = ApplySorting(query, input);query = ApplyPaging(query, input);var list = await query.ToListAsync();return new PagedResultDto<TEntity>(totalCount,list);}

經(jīng)驗(yàn)總結(jié)擴(kuò)展閱讀