From 4967f0b4fe4a3ddc1b30d0c08a1b031189b09cc3 Mon Sep 17 00:00:00 2001
From: fengxiang <110431245@qq.com>
Date: Fri, 17 Aug 2018 17:13:11 +0800
Subject: [PATCH] page 查询参数 生成问题

---
 src/main/java/com/moral/common/util/ExampleUtil.java |   23 ++++++++++++++++++-----
 1 files changed, 18 insertions(+), 5 deletions(-)

diff --git a/src/main/java/com/moral/common/util/ExampleUtil.java b/src/main/java/com/moral/common/util/ExampleUtil.java
index 65f8509..f5f929c 100644
--- a/src/main/java/com/moral/common/util/ExampleUtil.java
+++ b/src/main/java/com/moral/common/util/ExampleUtil.java
@@ -18,9 +18,13 @@
 
 @Log4j
 public class ExampleUtil {
-    private final static String OR_SPLIT = "or\\|";
-    private final static String CRITERIA_SPLIT = "\\|\\|\\|";
-    private final static String CONDITION_SPLIT = "\\|\\|";
+    private final static String SPLIT = "\\|";
+    private final static String OR = "_OR";
+    private final static String OR_SPLIT = OR+SPLIT;
+    private final static String CRITERIA = "_CR";
+    private final static String CRITERIA_SPLIT = CRITERIA+SPLIT;
+    private final static String CONDITION = "_CO";
+    private final static String CONDITION_SPLIT = CONDITION+SPLIT;
     private static Map<String, Method> criteriaMethodMap = new ConcurrentHashMap<>();
     private static void setOrderByClause(Example example,String orderByClause) throws UnsupportedEncodingException, NoSuchFieldException {
            orderByClause = URLDecoder.decode(orderByClause,"UTF-8");
@@ -55,7 +59,7 @@
             }
             if(!StringUtils.isNullOrEmpty(params)){
                 params = URLDecoder.decode(params, "UTF-8");
-                if (!StringUtils.isNullOrEmpty(params) && params.startsWith("or|")) {
+                if (params.startsWith(OR)) {
                     String[] criteria = params.trim().split(OR_SPLIT);
                     for (String criterion : criteria) {
                         // criterion���null���""������
@@ -139,7 +143,16 @@
             List<Example.Criteria> criteriaList = example.getOredCriteria();
             if(criteriaList!=null&&criteriaList.size()>0){
                 for(Example.Criteria cri : criteriaList){
-                    cri.andNotEqualTo("isDelete", Constants.IS_DELETE_TRUE);
+                    boolean isHasIsDelete = false;
+                    for(Example.Criterion con : cri.getCriteria()){
+                          if( con.getCondition().indexOf("is_delete") >-1) {
+                              isHasIsDelete = true;
+                              break;
+                          }
+                    }
+                    if( !isHasIsDelete) {
+                        cri.andNotEqualTo("isDelete", Constants.IS_DELETE_TRUE);
+                    }
                 }
             }else {
                 example.or().andNotEqualTo("isDelete",Constants.IS_DELETE_TRUE);

--
Gitblit v1.8.0