From 1e1acb64d3399032e2cb0e314e9999020bc980e0 Mon Sep 17 00:00:00 2001 From: alex Date: Mon, 25 May 2020 09:36:18 +0800 Subject: [PATCH] =?UTF-8?q?=E7=BA=A6=E5=AE=9A=E4=BB=A5.start=E6=88=96.end?= =?UTF-8?q?=E7=BB=93=E5=B0=BE=E7=9A=84=E6=9F=A5=E8=AF=A2=E6=96=B9=E5=BC=8F?= =?UTF-8?q?=E4=B8=BA=E8=8C=83=E5=9B=B4=E6=9F=A5=E8=AF=A2,=E7=94=A8>=3D/): Query { */ fun Query.where(params: Map?, onWhere: ((v: String) -> Operator) = { Operator.eq }): Query { val criteria = Criteria() + val rangeStartSuffix = ".start" //范围查询开始后缀 + val rangeEndSuffix = ".end" //范围查询结束后缀 if (params != null) { for (param in params) { - val where = onWhere(param.key) - when (where) { - Operator.eq -> criteria.and(param.key).`is`(param.value) - Operator.ne -> criteria.and(param.key).ne(param.value) - Operator.lt -> criteria.and(param.key).lt(param.value) - Operator.gt -> criteria.and(param.key).gt(param.value) - Operator.lte -> criteria.and(param.key).lte(param.value) - Operator.gte -> criteria.and(param.key).gte(param.value) - Operator.like -> criteria.and(param.key).regex(param.value.toString()) + val key = param.key + when { + //以范围查询开始后缀结尾表示要用大于或等于查询方式 + key.endsWith(rangeStartSuffix) -> + criteria.and(key.removeSuffix(rangeStartSuffix)).gte(param.value) + //以范围查询结束后缀结尾表示要用小于或等于查询方式 + key.endsWith(rangeEndSuffix) -> + criteria.and(key.removeSuffix(rangeEndSuffix)).gte(param.value) + else -> when (onWhere(key)) { + Operator.eq -> criteria.and(key).`is`(param.value) + Operator.ne -> criteria.and(key).ne(param.value) + Operator.lt -> criteria.and(key).lt(param.value) + Operator.gt -> criteria.and(key).gt(param.value) + Operator.lte -> criteria.and(key).lte(param.value) + Operator.gte -> criteria.and(key).gte(param.value) + Operator.like -> criteria.and(key).regex(param.value.toString()) + } } - } } return this.addCriteria(criteria)