修改默认方式和默认查询方式, 首先业务人员判断, 然后才去判断后缀
This commit is contained in:
@@ -25,29 +25,33 @@ fun Query.select(fields: Array<String>): Query {
|
|||||||
* 根据参数获取查询条件
|
* 根据参数获取查询条件
|
||||||
*
|
*
|
||||||
* @param params 参数列表
|
* @param params 参数列表
|
||||||
|
* @param onWhere 获取字段查询方式的方法
|
||||||
*/
|
*/
|
||||||
fun Query.where(params: Map<String, Any>?, onWhere: ((v: String) -> Operator) = { Operator.eq }): Query {
|
fun Query.where(params: Map<String, Any>?, onWhere: ((v: String) -> Operator) = { Operator.default }): Query {
|
||||||
val criteria = Criteria()
|
val criteria = Criteria()
|
||||||
val rangeStartSuffix = ".start" //范围查询开始后缀
|
val rangeStartSuffix = ".start" //范围查询开始后缀
|
||||||
val rangeEndSuffix = ".end" //范围查询结束后缀
|
val rangeEndSuffix = ".end" //范围查询结束后缀
|
||||||
if (params != null) {
|
if (params != null) {
|
||||||
for (param in params) {
|
for (param in params) {
|
||||||
val key = param.key
|
val key = param.key
|
||||||
when {
|
when (onWhere(key)) {
|
||||||
//以范围查询开始后缀结尾表示要用大于或等于查询方式
|
Operator.eq -> criteria.and(key).`is`(param.value)
|
||||||
key.endsWith(rangeStartSuffix) ->
|
Operator.ne -> criteria.and(key).ne(param.value)
|
||||||
criteria.and(key.removeSuffix(rangeStartSuffix)).gte(param.value)
|
Operator.lt -> criteria.and(key).lt(param.value)
|
||||||
//以范围查询结束后缀结尾表示要用小于或等于查询方式
|
Operator.gt -> criteria.and(key).gt(param.value)
|
||||||
key.endsWith(rangeEndSuffix) ->
|
Operator.lte -> criteria.and(key).lte(param.value)
|
||||||
criteria.and(key.removeSuffix(rangeEndSuffix)).gte(param.value)
|
Operator.gte -> criteria.and(key).gte(param.value)
|
||||||
else -> when (onWhere(key)) {
|
Operator.like -> criteria.and(key).regex(param.value.toString())
|
||||||
Operator.eq -> criteria.and(key).`is`(param.value)
|
Operator.default -> {
|
||||||
Operator.ne -> criteria.and(key).ne(param.value)
|
when {
|
||||||
Operator.lt -> criteria.and(key).lt(param.value)
|
//以范围查询开始后缀结尾表示要用大于或等于查询方式
|
||||||
Operator.gt -> criteria.and(key).gt(param.value)
|
key.endsWith(rangeStartSuffix) ->
|
||||||
Operator.lte -> criteria.and(key).lte(param.value)
|
criteria.and(key.removeSuffix(rangeStartSuffix)).gte(param.value)
|
||||||
Operator.gte -> criteria.and(key).gte(param.value)
|
//以范围查询结束后缀结尾表示要用小于或等于查询方式
|
||||||
Operator.like -> criteria.and(key).regex(param.value.toString())
|
key.endsWith(rangeEndSuffix) ->
|
||||||
|
criteria.and(key.removeSuffix(rangeEndSuffix)).gte(param.value)
|
||||||
|
else -> criteria.and(key).`is`(param.value)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -34,5 +34,10 @@ enum class Operator {
|
|||||||
/**
|
/**
|
||||||
* 模糊匹配
|
* 模糊匹配
|
||||||
*/
|
*/
|
||||||
like
|
like,
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 默认查询, 未定义查询方式, 业务人员自己实现查询方式
|
||||||
|
*/
|
||||||
|
default
|
||||||
}
|
}
|
||||||
Reference in New Issue
Block a user