添加,自定义排序

This commit is contained in:
Wang Chen Chen
2024-08-05 11:22:42 +08:00
parent 6ecd8219c6
commit c465eb19e7
7 changed files with 50 additions and 20 deletions

View File

@@ -45,7 +45,7 @@ function createService() {
case 400010:
case 400011:
case 400012:
logout(apiData.message, "登录过期")
logout("登录过期", apiData.message)
return Promise.reject(new Error(apiData.message))
case 400444:
case 400445:

View File

@@ -13,10 +13,10 @@ x-tenant-id: {{tenantId}}
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:86.0) Gecko/20100101 Firefox/86.0
{
"username": "eRiiBycWxMc8F0f3RIaaSuwVW+WsgDZcYUe+xqQEJklBjIzhRVhzjlRYDjyV6si93PN8fzgqt0olvbfUOnxtHauWGNoFQndqm5Ak71eau6IIKe0Z7VeV7IntNjO18JpogmkNrjAeAIXkCWNW09gmWeBkK2oAnaVSdK0E+tdPLnJNWmioXuApPVdF6yOWXDqF/UmNtBUz/Ytm/Mg76QRUvnudb6fVrfzJ2Fd6NBN4u07pr53VrZO9mb+a9dewURVWni4p++FrQoWcM6Kc6swfGgFWGQ7+oBOgs5nURsNwpGX3A1uwcaPRUS9ILzwOyxjAfNNxIl1XkFfNnSHpBQ54Ag==",
"password": "eRiiBycWxMc8F0f3RIaaSuwVW+WsgDZcYUe+xqQEJklBjIzhRVhzjlRYDjyV6si93PN8fzgqt0olvbfUOnxtHauWGNoFQndqm5Ak71eau6IIKe0Z7VeV7IntNjO18JpogmkNrjAeAIXkCWNW09gmWeBkK2oAnaVSdK0E+tdPLnJNWmioXuApPVdF6yOWXDqF/UmNtBUz/Ytm/Mg76QRUvnudb6fVrfzJ2Fd6NBN4u07pr53VrZO9mb+a9dewURVWni4p++FrQoWcM6Kc6swfGgFWGQ7+oBOgs5nURsNwpGX3A1uwcaPRUS9ILzwOyxjAfNNxIl1XkFfNnSHpBQ54Ag==",
"password": "bbBZpMGRm6Mflw8qaVD7AdRNWoaFbtJ21Tf4Ra4t5dK3eRo2VSPl+Z4QH3d5vy3rWdQTuiP1da5ERTbXoz2ZyAifq4w6GsJC0jZZav3e8KZunezWC8GQJmmTMbgTwV+XvEdafa3Asb9Q9lcRRCoJ1/trzHDMq9MUiEF/0bT32ULp9Lmz/CjilsZuj1tETLXEFxV3W3H7QgGiK8qRqehfqfGAQf/hLOij0954Wa2G9FLhKBdAtvxUzxu4RCRlzTVYoEEUOiWBqgp5/3YSR/XAnI0GW/xzQg2uQj1xs6I9lvB1tk3IfczLPqeqmc3nQaP8dylv1hUAFOaKe7fCtNqurQ==",
"username": "pMHtPBxc54hHAiM5WJW2R4hXNQc4wzz9ELuuKPQKGkEpy8ntNTazGq3LyMka9X6rBvAD59imR0CJMWwXs0tATv6TEMzYgjo/cpk8ZjF0vuiROisRYkfnAwteVEkeH0QitmVw6ker1rtlf8QhDxLb/qHhEqO5BdV02x8Mbr2329AHIRx6Hse48HTp3kEXvhc1GvFcE31Wfbh65qwpc2uos8Wp88YuKdNpthYipOShhDwPAx/cwsN2+Y76atIoD03ZaaOlAm/UxfmHYDbCj6sch07ngYAKm0JOfcXECzAkoFkCLUZZGSyhZy3PsP7riCkQ0GHNHgbGdCtMnTc4ajA19A==",
"codeKey": "5jXzuwcoUzbtnHNh",
"codeText": "55g9"
"codeText": "fpvn"
}
> {%

View File

@@ -7,7 +7,7 @@ Authorization: Bearer {{tokenValue}}
### 分页查询设备
GET {{baseUrl}}/cms/device/query?includeCauu=true
GET {{baseUrl}}/cms/device/query?includeCauu=false&orderByColumns=createUser,lastUpdateTime,deviceId
Content-Type: application/json
x-tenant-id: {{tenantId}}
x-project-id: {{projectId}}

View File

@@ -6,6 +6,8 @@ import lombok.Setter;
import lombok.ToString;
import java.time.LocalDate;
import java.util.List;
import java.util.Set;
import static io.swagger.v3.oas.annotations.media.Schema.RequiredMode.REQUIRED;
@@ -53,4 +55,16 @@ public class PagePO implements java.io.Serializable {
@Schema(description = "结束日期")
private LocalDate endDate;
/**
* 排序的方向 "desc" 或者 "asc".
*/
@Schema(description = "排序的方向, true: 顺序、false: 倒序")
private boolean asc;
/**
* 排序的字段,如: createUser,lastUpdateTime
*/
@Schema(description = "排序的字段,如: createUser,lastUpdateTime")
private Set<String> orderByColumns;
}

View File

@@ -162,7 +162,7 @@ public class JwtTokenServiceImpl implements JwtTokenService {
// 删除 被挤下线 的消息提示
removeLoginUser(forcedOfflineKey);
var errMsg = String.format("您的账号在[ %s ]被其他用户拥下线了!", offlineTime);
log.info("errMsg {}", errMsg);
log.warn("errMsg {}", errMsg);
throw new JwtAuthException(errMsg);
}
}

View File

@@ -1,5 +1,6 @@
package com.xaaef.molly.tenant.base.service.impl;
import cn.hutool.core.collection.CollectionUtil;
import com.baomidou.mybatisplus.core.conditions.Wrapper;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
@@ -19,9 +20,11 @@ import org.apache.commons.lang3.StringUtils;
import org.springframework.context.annotation.Lazy;
import java.time.LocalDate;
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
import static com.xaaef.molly.common.consts.MbpConst.CREATE_TIME;
@@ -121,6 +124,19 @@ public class BaseServiceImpl<M extends BaseMapper<T>, T extends BaseEntity> exte
wrapper.between(String.format("DATE(%s)", CREATE_TIME), params.getStartDate(), LocalDate.now());
}
}
// 排序
if (CollectionUtil.isNotEmpty(params.getOrderByColumns())) {
var orderByColumns = params.getOrderByColumns()
.stream()
.map(column -> column.replaceAll("([A-Z])", "_$1").toLowerCase())
.collect(Collectors.toList());
if (params.isAsc()) {
wrapper.orderByAsc(orderByColumns);
} else {
wrapper.orderByDesc(orderByColumns);
}
}
// 搜索
if (StringUtils.isNotBlank(params.getKeywords()) && columns != null && !columns.isEmpty()) {
wrapper.and(childWrapper -> {
var index = 0;

View File

@@ -1,11 +1,11 @@
import axios, { AxiosResponse, type AxiosInstance, type AxiosRequestConfig } from "axios"
import { useUserStoreHook } from "@/store/modules/user"
import { ElMessage, ElMessageBox } from "element-plus"
import { get, merge } from "lodash-es"
import { getToken } from "./cache/local-storage"
import { useProjectStoreHook } from "@/store/modules/project"
import { getEnvBaseURLPrefix } from "."
import { ISimpleProject } from "@/types/base"
import axios, {AxiosResponse, type AxiosInstance, type AxiosRequestConfig} from "axios"
import {useUserStoreHook} from "@/store/modules/user"
import {ElMessage, ElMessageBox} from "element-plus"
import {get, merge} from "lodash-es"
import {getToken} from "./cache/local-storage"
import {useProjectStoreHook} from "@/store/modules/project"
import {getEnvBaseURLPrefix} from "."
import {ISimpleProject} from "@/types/base"
/** 创建请求实例 */
function createService() {
@@ -41,7 +41,7 @@ function createService() {
case 400010:
case 400011:
case 400012:
logout(apiData.message, "登录过期")
logout("登录过期", apiData.message)
return Promise.reject(new Error(apiData.message))
case 400444:
ElMessage.error(apiData.message)
@@ -180,22 +180,22 @@ function httpRequest<T>(config: AxiosRequestConfig): Promise<T> {
/** 单独抽离的get工具函数 */
function httpGet<T, P>(url: string, params?: T): Promise<P> {
return httpRequest<P>({ method: "get", url, params })
return httpRequest<P>({method: "get", url, params})
}
/** 单独抽离的post工具函数 */
function httpPost<T, P>(url: string, data?: T): Promise<P> {
return httpRequest<P>({ method: "post", url, data })
return httpRequest<P>({method: "post", url, data})
}
/** 单独抽离的put工具函数 */
function httpPut<T, P>(url: string, data?: T): Promise<P> {
return httpRequest<P>({ method: "put", url, data })
return httpRequest<P>({method: "put", url, data})
}
/** 单独抽离的delete工具函数 */
function httpDelete<T, P>(url: string, params?: T): Promise<P> {
return httpRequest<P>({ method: "delete", url, params })
return httpRequest<P>({method: "delete", url, params})
}
export { httpRequest, httpGet, httpPost, httpPut, httpDelete, axiosRequest }
export {httpRequest, httpGet, httpPost, httpPut, httpDelete, axiosRequest}