From c725a4c3ee9cc7a9a16dfd5baf2d24dbdf9be351 Mon Sep 17 00:00:00 2001
From: hurui <177768073@qq.com>
Date: Tue, 7 Dec 2021 15:40:39 +0800
Subject: [PATCH] =?UTF-8?q?=E6=8F=90=E4=BA=A4=E4=BB=A3=E7=A0=81?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 .../dao/HighDiscountPackageActualMapper.java  | 117 +++
 .../HighDiscountPackageActualMapperExt.java   |   7 +
 .../HighDiscountPackageActualSqlProvider.java | 304 +++++++
 .../dao/HighDiscountPackageDetailsMapper.java |  27 +-
 ...HighDiscountPackageDetailsSqlProvider.java |  14 +
 ...ghDiscountPackageDiscountActualMapper.java | 117 +++
 ...iscountPackageDiscountActualMapperExt.java |   7 +
 ...countPackageDiscountActualSqlProvider.java | 304 +++++++
 .../hai/entity/HighDiscountPackageActual.java | 209 +++++
 .../HighDiscountPackageActualExample.java     | 853 ++++++++++++++++++
 .../entity/HighDiscountPackageDetails.java    |  16 +
 .../HighDiscountPackageDetailsExample.java    |  60 ++
 .../HighDiscountPackageDiscountActual.java    | 209 +++++
 ...hDiscountPackageDiscountActualExample.java | 853 ++++++++++++++++++
 14 files changed, 3085 insertions(+), 12 deletions(-)
 create mode 100644 hai-service/src/main/java/com/hai/dao/HighDiscountPackageActualMapper.java
 create mode 100644 hai-service/src/main/java/com/hai/dao/HighDiscountPackageActualMapperExt.java
 create mode 100644 hai-service/src/main/java/com/hai/dao/HighDiscountPackageActualSqlProvider.java
 create mode 100644 hai-service/src/main/java/com/hai/dao/HighDiscountPackageDiscountActualMapper.java
 create mode 100644 hai-service/src/main/java/com/hai/dao/HighDiscountPackageDiscountActualMapperExt.java
 create mode 100644 hai-service/src/main/java/com/hai/dao/HighDiscountPackageDiscountActualSqlProvider.java
 create mode 100644 hai-service/src/main/java/com/hai/entity/HighDiscountPackageActual.java
 create mode 100644 hai-service/src/main/java/com/hai/entity/HighDiscountPackageActualExample.java
 create mode 100644 hai-service/src/main/java/com/hai/entity/HighDiscountPackageDiscountActual.java
 create mode 100644 hai-service/src/main/java/com/hai/entity/HighDiscountPackageDiscountActualExample.java

diff --git a/hai-service/src/main/java/com/hai/dao/HighDiscountPackageActualMapper.java b/hai-service/src/main/java/com/hai/dao/HighDiscountPackageActualMapper.java
new file mode 100644
index 00000000..5460995e
--- /dev/null
+++ b/hai-service/src/main/java/com/hai/dao/HighDiscountPackageActualMapper.java
@@ -0,0 +1,117 @@
+package com.hai.dao;
+
+import com.hai.entity.HighDiscountPackageActual;
+import com.hai.entity.HighDiscountPackageActualExample;
+import java.util.List;
+import org.apache.ibatis.annotations.Delete;
+import org.apache.ibatis.annotations.DeleteProvider;
+import org.apache.ibatis.annotations.Insert;
+import org.apache.ibatis.annotations.InsertProvider;
+import org.apache.ibatis.annotations.Options;
+import org.apache.ibatis.annotations.Param;
+import org.apache.ibatis.annotations.Result;
+import org.apache.ibatis.annotations.Results;
+import org.apache.ibatis.annotations.Select;
+import org.apache.ibatis.annotations.SelectProvider;
+import org.apache.ibatis.annotations.Update;
+import org.apache.ibatis.annotations.UpdateProvider;
+import org.apache.ibatis.type.JdbcType;
+import org.springframework.stereotype.Repository;
+
+/**
+ * 
+ * 代码由工具生成,请勿修改!!!
+ * 如果需要扩展请在其父类进行扩展
+ * 
+ **/
+@Repository
+public interface HighDiscountPackageActualMapper extends HighDiscountPackageActualMapperExt {
+    @SelectProvider(type=HighDiscountPackageActualSqlProvider.class, method="countByExample")
+    long countByExample(HighDiscountPackageActualExample example);
+
+    @DeleteProvider(type=HighDiscountPackageActualSqlProvider.class, method="deleteByExample")
+    int deleteByExample(HighDiscountPackageActualExample example);
+
+    @Delete({
+        "delete from high_discount_package_actual",
+        "where id = #{id,jdbcType=INTEGER}"
+    })
+    int deleteByPrimaryKey(Integer id);
+
+    @Insert({
+        "insert into high_discount_package_actual (discount_package_id, created_user_id, ",
+        "created_time, user_id, ",
+        "allocation_time, `status`, ",
+        "ext_1, ext_2, ext_3)",
+        "values (#{discountPackageId,jdbcType=INTEGER}, #{createdUserId,jdbcType=INTEGER}, ",
+        "#{createdTime,jdbcType=TIMESTAMP}, #{userId,jdbcType=INTEGER}, ",
+        "#{allocationTime,jdbcType=TIMESTAMP}, #{status,jdbcType=INTEGER}, ",
+        "#{ext1,jdbcType=VARCHAR}, #{ext2,jdbcType=VARCHAR}, #{ext3,jdbcType=VARCHAR})"
+    })
+    @Options(useGeneratedKeys=true,keyProperty="id")
+    int insert(HighDiscountPackageActual record);
+
+    @InsertProvider(type=HighDiscountPackageActualSqlProvider.class, method="insertSelective")
+    @Options(useGeneratedKeys=true,keyProperty="id")
+    int insertSelective(HighDiscountPackageActual record);
+
+    @SelectProvider(type=HighDiscountPackageActualSqlProvider.class, method="selectByExample")
+    @Results({
+        @Result(column="id", property="id", jdbcType=JdbcType.INTEGER, id=true),
+        @Result(column="discount_package_id", property="discountPackageId", jdbcType=JdbcType.INTEGER),
+        @Result(column="created_user_id", property="createdUserId", jdbcType=JdbcType.INTEGER),
+        @Result(column="created_time", property="createdTime", jdbcType=JdbcType.TIMESTAMP),
+        @Result(column="user_id", property="userId", jdbcType=JdbcType.INTEGER),
+        @Result(column="allocation_time", property="allocationTime", jdbcType=JdbcType.TIMESTAMP),
+        @Result(column="status", property="status", jdbcType=JdbcType.INTEGER),
+        @Result(column="ext_1", property="ext1", jdbcType=JdbcType.VARCHAR),
+        @Result(column="ext_2", property="ext2", jdbcType=JdbcType.VARCHAR),
+        @Result(column="ext_3", property="ext3", jdbcType=JdbcType.VARCHAR)
+    })
+    List<HighDiscountPackageActual> selectByExample(HighDiscountPackageActualExample example);
+
+    @Select({
+        "select",
+        "id, discount_package_id, created_user_id, created_time, user_id, allocation_time, ",
+        "`status`, ext_1, ext_2, ext_3",
+        "from high_discount_package_actual",
+        "where id = #{id,jdbcType=INTEGER}"
+    })
+    @Results({
+        @Result(column="id", property="id", jdbcType=JdbcType.INTEGER, id=true),
+        @Result(column="discount_package_id", property="discountPackageId", jdbcType=JdbcType.INTEGER),
+        @Result(column="created_user_id", property="createdUserId", jdbcType=JdbcType.INTEGER),
+        @Result(column="created_time", property="createdTime", jdbcType=JdbcType.TIMESTAMP),
+        @Result(column="user_id", property="userId", jdbcType=JdbcType.INTEGER),
+        @Result(column="allocation_time", property="allocationTime", jdbcType=JdbcType.TIMESTAMP),
+        @Result(column="status", property="status", jdbcType=JdbcType.INTEGER),
+        @Result(column="ext_1", property="ext1", jdbcType=JdbcType.VARCHAR),
+        @Result(column="ext_2", property="ext2", jdbcType=JdbcType.VARCHAR),
+        @Result(column="ext_3", property="ext3", jdbcType=JdbcType.VARCHAR)
+    })
+    HighDiscountPackageActual selectByPrimaryKey(Integer id);
+
+    @UpdateProvider(type=HighDiscountPackageActualSqlProvider.class, method="updateByExampleSelective")
+    int updateByExampleSelective(@Param("record") HighDiscountPackageActual record, @Param("example") HighDiscountPackageActualExample example);
+
+    @UpdateProvider(type=HighDiscountPackageActualSqlProvider.class, method="updateByExample")
+    int updateByExample(@Param("record") HighDiscountPackageActual record, @Param("example") HighDiscountPackageActualExample example);
+
+    @UpdateProvider(type=HighDiscountPackageActualSqlProvider.class, method="updateByPrimaryKeySelective")
+    int updateByPrimaryKeySelective(HighDiscountPackageActual record);
+
+    @Update({
+        "update high_discount_package_actual",
+        "set discount_package_id = #{discountPackageId,jdbcType=INTEGER},",
+          "created_user_id = #{createdUserId,jdbcType=INTEGER},",
+          "created_time = #{createdTime,jdbcType=TIMESTAMP},",
+          "user_id = #{userId,jdbcType=INTEGER},",
+          "allocation_time = #{allocationTime,jdbcType=TIMESTAMP},",
+          "`status` = #{status,jdbcType=INTEGER},",
+          "ext_1 = #{ext1,jdbcType=VARCHAR},",
+          "ext_2 = #{ext2,jdbcType=VARCHAR},",
+          "ext_3 = #{ext3,jdbcType=VARCHAR}",
+        "where id = #{id,jdbcType=INTEGER}"
+    })
+    int updateByPrimaryKey(HighDiscountPackageActual record);
+}
\ No newline at end of file
diff --git a/hai-service/src/main/java/com/hai/dao/HighDiscountPackageActualMapperExt.java b/hai-service/src/main/java/com/hai/dao/HighDiscountPackageActualMapperExt.java
new file mode 100644
index 00000000..f5a28145
--- /dev/null
+++ b/hai-service/src/main/java/com/hai/dao/HighDiscountPackageActualMapperExt.java
@@ -0,0 +1,7 @@
+package com.hai.dao;
+
+/**
+ * mapper扩展类
+ */
+public interface HighDiscountPackageActualMapperExt {
+}
\ No newline at end of file
diff --git a/hai-service/src/main/java/com/hai/dao/HighDiscountPackageActualSqlProvider.java b/hai-service/src/main/java/com/hai/dao/HighDiscountPackageActualSqlProvider.java
new file mode 100644
index 00000000..7c1d53eb
--- /dev/null
+++ b/hai-service/src/main/java/com/hai/dao/HighDiscountPackageActualSqlProvider.java
@@ -0,0 +1,304 @@
+package com.hai.dao;
+
+import com.hai.entity.HighDiscountPackageActual;
+import com.hai.entity.HighDiscountPackageActualExample.Criteria;
+import com.hai.entity.HighDiscountPackageActualExample.Criterion;
+import com.hai.entity.HighDiscountPackageActualExample;
+import java.util.List;
+import java.util.Map;
+import org.apache.ibatis.jdbc.SQL;
+
+public class HighDiscountPackageActualSqlProvider {
+
+    public String countByExample(HighDiscountPackageActualExample example) {
+        SQL sql = new SQL();
+        sql.SELECT("count(*)").FROM("high_discount_package_actual");
+        applyWhere(sql, example, false);
+        return sql.toString();
+    }
+
+    public String deleteByExample(HighDiscountPackageActualExample example) {
+        SQL sql = new SQL();
+        sql.DELETE_FROM("high_discount_package_actual");
+        applyWhere(sql, example, false);
+        return sql.toString();
+    }
+
+    public String insertSelective(HighDiscountPackageActual record) {
+        SQL sql = new SQL();
+        sql.INSERT_INTO("high_discount_package_actual");
+        
+        if (record.getDiscountPackageId() != null) {
+            sql.VALUES("discount_package_id", "#{discountPackageId,jdbcType=INTEGER}");
+        }
+        
+        if (record.getCreatedUserId() != null) {
+            sql.VALUES("created_user_id", "#{createdUserId,jdbcType=INTEGER}");
+        }
+        
+        if (record.getCreatedTime() != null) {
+            sql.VALUES("created_time", "#{createdTime,jdbcType=TIMESTAMP}");
+        }
+        
+        if (record.getUserId() != null) {
+            sql.VALUES("user_id", "#{userId,jdbcType=INTEGER}");
+        }
+        
+        if (record.getAllocationTime() != null) {
+            sql.VALUES("allocation_time", "#{allocationTime,jdbcType=TIMESTAMP}");
+        }
+        
+        if (record.getStatus() != null) {
+            sql.VALUES("`status`", "#{status,jdbcType=INTEGER}");
+        }
+        
+        if (record.getExt1() != null) {
+            sql.VALUES("ext_1", "#{ext1,jdbcType=VARCHAR}");
+        }
+        
+        if (record.getExt2() != null) {
+            sql.VALUES("ext_2", "#{ext2,jdbcType=VARCHAR}");
+        }
+        
+        if (record.getExt3() != null) {
+            sql.VALUES("ext_3", "#{ext3,jdbcType=VARCHAR}");
+        }
+        
+        return sql.toString();
+    }
+
+    public String selectByExample(HighDiscountPackageActualExample example) {
+        SQL sql = new SQL();
+        if (example != null && example.isDistinct()) {
+            sql.SELECT_DISTINCT("id");
+        } else {
+            sql.SELECT("id");
+        }
+        sql.SELECT("discount_package_id");
+        sql.SELECT("created_user_id");
+        sql.SELECT("created_time");
+        sql.SELECT("user_id");
+        sql.SELECT("allocation_time");
+        sql.SELECT("`status`");
+        sql.SELECT("ext_1");
+        sql.SELECT("ext_2");
+        sql.SELECT("ext_3");
+        sql.FROM("high_discount_package_actual");
+        applyWhere(sql, example, false);
+        
+        if (example != null && example.getOrderByClause() != null) {
+            sql.ORDER_BY(example.getOrderByClause());
+        }
+        
+        return sql.toString();
+    }
+
+    public String updateByExampleSelective(Map<String, Object> parameter) {
+        HighDiscountPackageActual record = (HighDiscountPackageActual) parameter.get("record");
+        HighDiscountPackageActualExample example = (HighDiscountPackageActualExample) parameter.get("example");
+        
+        SQL sql = new SQL();
+        sql.UPDATE("high_discount_package_actual");
+        
+        if (record.getId() != null) {
+            sql.SET("id = #{record.id,jdbcType=INTEGER}");
+        }
+        
+        if (record.getDiscountPackageId() != null) {
+            sql.SET("discount_package_id = #{record.discountPackageId,jdbcType=INTEGER}");
+        }
+        
+        if (record.getCreatedUserId() != null) {
+            sql.SET("created_user_id = #{record.createdUserId,jdbcType=INTEGER}");
+        }
+        
+        if (record.getCreatedTime() != null) {
+            sql.SET("created_time = #{record.createdTime,jdbcType=TIMESTAMP}");
+        }
+        
+        if (record.getUserId() != null) {
+            sql.SET("user_id = #{record.userId,jdbcType=INTEGER}");
+        }
+        
+        if (record.getAllocationTime() != null) {
+            sql.SET("allocation_time = #{record.allocationTime,jdbcType=TIMESTAMP}");
+        }
+        
+        if (record.getStatus() != null) {
+            sql.SET("`status` = #{record.status,jdbcType=INTEGER}");
+        }
+        
+        if (record.getExt1() != null) {
+            sql.SET("ext_1 = #{record.ext1,jdbcType=VARCHAR}");
+        }
+        
+        if (record.getExt2() != null) {
+            sql.SET("ext_2 = #{record.ext2,jdbcType=VARCHAR}");
+        }
+        
+        if (record.getExt3() != null) {
+            sql.SET("ext_3 = #{record.ext3,jdbcType=VARCHAR}");
+        }
+        
+        applyWhere(sql, example, true);
+        return sql.toString();
+    }
+
+    public String updateByExample(Map<String, Object> parameter) {
+        SQL sql = new SQL();
+        sql.UPDATE("high_discount_package_actual");
+        
+        sql.SET("id = #{record.id,jdbcType=INTEGER}");
+        sql.SET("discount_package_id = #{record.discountPackageId,jdbcType=INTEGER}");
+        sql.SET("created_user_id = #{record.createdUserId,jdbcType=INTEGER}");
+        sql.SET("created_time = #{record.createdTime,jdbcType=TIMESTAMP}");
+        sql.SET("user_id = #{record.userId,jdbcType=INTEGER}");
+        sql.SET("allocation_time = #{record.allocationTime,jdbcType=TIMESTAMP}");
+        sql.SET("`status` = #{record.status,jdbcType=INTEGER}");
+        sql.SET("ext_1 = #{record.ext1,jdbcType=VARCHAR}");
+        sql.SET("ext_2 = #{record.ext2,jdbcType=VARCHAR}");
+        sql.SET("ext_3 = #{record.ext3,jdbcType=VARCHAR}");
+        
+        HighDiscountPackageActualExample example = (HighDiscountPackageActualExample) parameter.get("example");
+        applyWhere(sql, example, true);
+        return sql.toString();
+    }
+
+    public String updateByPrimaryKeySelective(HighDiscountPackageActual record) {
+        SQL sql = new SQL();
+        sql.UPDATE("high_discount_package_actual");
+        
+        if (record.getDiscountPackageId() != null) {
+            sql.SET("discount_package_id = #{discountPackageId,jdbcType=INTEGER}");
+        }
+        
+        if (record.getCreatedUserId() != null) {
+            sql.SET("created_user_id = #{createdUserId,jdbcType=INTEGER}");
+        }
+        
+        if (record.getCreatedTime() != null) {
+            sql.SET("created_time = #{createdTime,jdbcType=TIMESTAMP}");
+        }
+        
+        if (record.getUserId() != null) {
+            sql.SET("user_id = #{userId,jdbcType=INTEGER}");
+        }
+        
+        if (record.getAllocationTime() != null) {
+            sql.SET("allocation_time = #{allocationTime,jdbcType=TIMESTAMP}");
+        }
+        
+        if (record.getStatus() != null) {
+            sql.SET("`status` = #{status,jdbcType=INTEGER}");
+        }
+        
+        if (record.getExt1() != null) {
+            sql.SET("ext_1 = #{ext1,jdbcType=VARCHAR}");
+        }
+        
+        if (record.getExt2() != null) {
+            sql.SET("ext_2 = #{ext2,jdbcType=VARCHAR}");
+        }
+        
+        if (record.getExt3() != null) {
+            sql.SET("ext_3 = #{ext3,jdbcType=VARCHAR}");
+        }
+        
+        sql.WHERE("id = #{id,jdbcType=INTEGER}");
+        
+        return sql.toString();
+    }
+
+    protected void applyWhere(SQL sql, HighDiscountPackageActualExample example, boolean includeExamplePhrase) {
+        if (example == null) {
+            return;
+        }
+        
+        String parmPhrase1;
+        String parmPhrase1_th;
+        String parmPhrase2;
+        String parmPhrase2_th;
+        String parmPhrase3;
+        String parmPhrase3_th;
+        if (includeExamplePhrase) {
+            parmPhrase1 = "%s #{example.oredCriteria[%d].allCriteria[%d].value}";
+            parmPhrase1_th = "%s #{example.oredCriteria[%d].allCriteria[%d].value,typeHandler=%s}";
+            parmPhrase2 = "%s #{example.oredCriteria[%d].allCriteria[%d].value} and #{example.oredCriteria[%d].criteria[%d].secondValue}";
+            parmPhrase2_th = "%s #{example.oredCriteria[%d].allCriteria[%d].value,typeHandler=%s} and #{example.oredCriteria[%d].criteria[%d].secondValue,typeHandler=%s}";
+            parmPhrase3 = "#{example.oredCriteria[%d].allCriteria[%d].value[%d]}";
+            parmPhrase3_th = "#{example.oredCriteria[%d].allCriteria[%d].value[%d],typeHandler=%s}";
+        } else {
+            parmPhrase1 = "%s #{oredCriteria[%d].allCriteria[%d].value}";
+            parmPhrase1_th = "%s #{oredCriteria[%d].allCriteria[%d].value,typeHandler=%s}";
+            parmPhrase2 = "%s #{oredCriteria[%d].allCriteria[%d].value} and #{oredCriteria[%d].criteria[%d].secondValue}";
+            parmPhrase2_th = "%s #{oredCriteria[%d].allCriteria[%d].value,typeHandler=%s} and #{oredCriteria[%d].criteria[%d].secondValue,typeHandler=%s}";
+            parmPhrase3 = "#{oredCriteria[%d].allCriteria[%d].value[%d]}";
+            parmPhrase3_th = "#{oredCriteria[%d].allCriteria[%d].value[%d],typeHandler=%s}";
+        }
+        
+        StringBuilder sb = new StringBuilder();
+        List<Criteria> oredCriteria = example.getOredCriteria();
+        boolean firstCriteria = true;
+        for (int i = 0; i < oredCriteria.size(); i++) {
+            Criteria criteria = oredCriteria.get(i);
+            if (criteria.isValid()) {
+                if (firstCriteria) {
+                    firstCriteria = false;
+                } else {
+                    sb.append(" or ");
+                }
+                
+                sb.append('(');
+                List<Criterion> criterions = criteria.getAllCriteria();
+                boolean firstCriterion = true;
+                for (int j = 0; j < criterions.size(); j++) {
+                    Criterion criterion = criterions.get(j);
+                    if (firstCriterion) {
+                        firstCriterion = false;
+                    } else {
+                        sb.append(" and ");
+                    }
+                    
+                    if (criterion.isNoValue()) {
+                        sb.append(criterion.getCondition());
+                    } else if (criterion.isSingleValue()) {
+                        if (criterion.getTypeHandler() == null) {
+                            sb.append(String.format(parmPhrase1, criterion.getCondition(), i, j));
+                        } else {
+                            sb.append(String.format(parmPhrase1_th, criterion.getCondition(), i, j,criterion.getTypeHandler()));
+                        }
+                    } else if (criterion.isBetweenValue()) {
+                        if (criterion.getTypeHandler() == null) {
+                            sb.append(String.format(parmPhrase2, criterion.getCondition(), i, j, i, j));
+                        } else {
+                            sb.append(String.format(parmPhrase2_th, criterion.getCondition(), i, j, criterion.getTypeHandler(), i, j, criterion.getTypeHandler()));
+                        }
+                    } else if (criterion.isListValue()) {
+                        sb.append(criterion.getCondition());
+                        sb.append(" (");
+                        List<?> listItems = (List<?>) criterion.getValue();
+                        boolean comma = false;
+                        for (int k = 0; k < listItems.size(); k++) {
+                            if (comma) {
+                                sb.append(", ");
+                            } else {
+                                comma = true;
+                            }
+                            if (criterion.getTypeHandler() == null) {
+                                sb.append(String.format(parmPhrase3, i, j, k));
+                            } else {
+                                sb.append(String.format(parmPhrase3_th, i, j, k, criterion.getTypeHandler()));
+                            }
+                        }
+                        sb.append(')');
+                    }
+                }
+                sb.append(')');
+            }
+        }
+        
+        if (sb.length() > 0) {
+            sql.WHERE(sb.toString());
+        }
+    }
+}
\ No newline at end of file
diff --git a/hai-service/src/main/java/com/hai/dao/HighDiscountPackageDetailsMapper.java b/hai-service/src/main/java/com/hai/dao/HighDiscountPackageDetailsMapper.java
index 2829d0b7..97bc1485 100644
--- a/hai-service/src/main/java/com/hai/dao/HighDiscountPackageDetailsMapper.java
+++ b/hai-service/src/main/java/com/hai/dao/HighDiscountPackageDetailsMapper.java
@@ -40,17 +40,17 @@ public interface HighDiscountPackageDetailsMapper extends HighDiscountPackageDet
 
     @Insert({
         "insert into high_discount_package_details (discount_package_id, discount_id, ",
-        "discount_name, num, ",
-        "created_user_id, created_time, ",
-        "updated_user_id, updated_time, ",
-        "`status`, ext_1, ext_2, ",
-        "ext_3)",
+        "agent_id, discount_name, ",
+        "num, created_user_id, ",
+        "created_time, updated_user_id, ",
+        "updated_time, `status`, ",
+        "ext_1, ext_2, ext_3)",
         "values (#{discountPackageId,jdbcType=INTEGER}, #{discountId,jdbcType=INTEGER}, ",
-        "#{discountName,jdbcType=VARCHAR}, #{num,jdbcType=INTEGER}, ",
-        "#{createdUserId,jdbcType=INTEGER}, #{createdTime,jdbcType=TIMESTAMP}, ",
-        "#{updatedUserId,jdbcType=INTEGER}, #{updatedTime,jdbcType=TIMESTAMP}, ",
-        "#{status,jdbcType=INTEGER}, #{ext1,jdbcType=VARCHAR}, #{ext2,jdbcType=VARCHAR}, ",
-        "#{ext3,jdbcType=VARCHAR})"
+        "#{agentId,jdbcType=BIGINT}, #{discountName,jdbcType=VARCHAR}, ",
+        "#{num,jdbcType=INTEGER}, #{createdUserId,jdbcType=INTEGER}, ",
+        "#{createdTime,jdbcType=TIMESTAMP}, #{updatedUserId,jdbcType=INTEGER}, ",
+        "#{updatedTime,jdbcType=TIMESTAMP}, #{status,jdbcType=INTEGER}, ",
+        "#{ext1,jdbcType=VARCHAR}, #{ext2,jdbcType=VARCHAR}, #{ext3,jdbcType=VARCHAR})"
     })
     @Options(useGeneratedKeys=true,keyProperty="id")
     int insert(HighDiscountPackageDetails record);
@@ -64,6 +64,7 @@ public interface HighDiscountPackageDetailsMapper extends HighDiscountPackageDet
         @Result(column="id", property="id", jdbcType=JdbcType.INTEGER, id=true),
         @Result(column="discount_package_id", property="discountPackageId", jdbcType=JdbcType.INTEGER),
         @Result(column="discount_id", property="discountId", jdbcType=JdbcType.INTEGER),
+        @Result(column="agent_id", property="agentId", jdbcType=JdbcType.BIGINT),
         @Result(column="discount_name", property="discountName", jdbcType=JdbcType.VARCHAR),
         @Result(column="num", property="num", jdbcType=JdbcType.INTEGER),
         @Result(column="created_user_id", property="createdUserId", jdbcType=JdbcType.INTEGER),
@@ -79,8 +80,8 @@ public interface HighDiscountPackageDetailsMapper extends HighDiscountPackageDet
 
     @Select({
         "select",
-        "id, discount_package_id, discount_id, discount_name, num, created_user_id, created_time, ",
-        "updated_user_id, updated_time, `status`, ext_1, ext_2, ext_3",
+        "id, discount_package_id, discount_id, agent_id, discount_name, num, created_user_id, ",
+        "created_time, updated_user_id, updated_time, `status`, ext_1, ext_2, ext_3",
         "from high_discount_package_details",
         "where id = #{id,jdbcType=INTEGER}"
     })
@@ -88,6 +89,7 @@ public interface HighDiscountPackageDetailsMapper extends HighDiscountPackageDet
         @Result(column="id", property="id", jdbcType=JdbcType.INTEGER, id=true),
         @Result(column="discount_package_id", property="discountPackageId", jdbcType=JdbcType.INTEGER),
         @Result(column="discount_id", property="discountId", jdbcType=JdbcType.INTEGER),
+        @Result(column="agent_id", property="agentId", jdbcType=JdbcType.BIGINT),
         @Result(column="discount_name", property="discountName", jdbcType=JdbcType.VARCHAR),
         @Result(column="num", property="num", jdbcType=JdbcType.INTEGER),
         @Result(column="created_user_id", property="createdUserId", jdbcType=JdbcType.INTEGER),
@@ -114,6 +116,7 @@ public interface HighDiscountPackageDetailsMapper extends HighDiscountPackageDet
         "update high_discount_package_details",
         "set discount_package_id = #{discountPackageId,jdbcType=INTEGER},",
           "discount_id = #{discountId,jdbcType=INTEGER},",
+          "agent_id = #{agentId,jdbcType=BIGINT},",
           "discount_name = #{discountName,jdbcType=VARCHAR},",
           "num = #{num,jdbcType=INTEGER},",
           "created_user_id = #{createdUserId,jdbcType=INTEGER},",
diff --git a/hai-service/src/main/java/com/hai/dao/HighDiscountPackageDetailsSqlProvider.java b/hai-service/src/main/java/com/hai/dao/HighDiscountPackageDetailsSqlProvider.java
index e84b3e0c..298f9723 100644
--- a/hai-service/src/main/java/com/hai/dao/HighDiscountPackageDetailsSqlProvider.java
+++ b/hai-service/src/main/java/com/hai/dao/HighDiscountPackageDetailsSqlProvider.java
@@ -36,6 +36,10 @@ public class HighDiscountPackageDetailsSqlProvider {
             sql.VALUES("discount_id", "#{discountId,jdbcType=INTEGER}");
         }
         
+        if (record.getAgentId() != null) {
+            sql.VALUES("agent_id", "#{agentId,jdbcType=BIGINT}");
+        }
+        
         if (record.getDiscountName() != null) {
             sql.VALUES("discount_name", "#{discountName,jdbcType=VARCHAR}");
         }
@@ -88,6 +92,7 @@ public class HighDiscountPackageDetailsSqlProvider {
         }
         sql.SELECT("discount_package_id");
         sql.SELECT("discount_id");
+        sql.SELECT("agent_id");
         sql.SELECT("discount_name");
         sql.SELECT("num");
         sql.SELECT("created_user_id");
@@ -127,6 +132,10 @@ public class HighDiscountPackageDetailsSqlProvider {
             sql.SET("discount_id = #{record.discountId,jdbcType=INTEGER}");
         }
         
+        if (record.getAgentId() != null) {
+            sql.SET("agent_id = #{record.agentId,jdbcType=BIGINT}");
+        }
+        
         if (record.getDiscountName() != null) {
             sql.SET("discount_name = #{record.discountName,jdbcType=VARCHAR}");
         }
@@ -178,6 +187,7 @@ public class HighDiscountPackageDetailsSqlProvider {
         sql.SET("id = #{record.id,jdbcType=INTEGER}");
         sql.SET("discount_package_id = #{record.discountPackageId,jdbcType=INTEGER}");
         sql.SET("discount_id = #{record.discountId,jdbcType=INTEGER}");
+        sql.SET("agent_id = #{record.agentId,jdbcType=BIGINT}");
         sql.SET("discount_name = #{record.discountName,jdbcType=VARCHAR}");
         sql.SET("num = #{record.num,jdbcType=INTEGER}");
         sql.SET("created_user_id = #{record.createdUserId,jdbcType=INTEGER}");
@@ -206,6 +216,10 @@ public class HighDiscountPackageDetailsSqlProvider {
             sql.SET("discount_id = #{discountId,jdbcType=INTEGER}");
         }
         
+        if (record.getAgentId() != null) {
+            sql.SET("agent_id = #{agentId,jdbcType=BIGINT}");
+        }
+        
         if (record.getDiscountName() != null) {
             sql.SET("discount_name = #{discountName,jdbcType=VARCHAR}");
         }
diff --git a/hai-service/src/main/java/com/hai/dao/HighDiscountPackageDiscountActualMapper.java b/hai-service/src/main/java/com/hai/dao/HighDiscountPackageDiscountActualMapper.java
new file mode 100644
index 00000000..e4a82c7c
--- /dev/null
+++ b/hai-service/src/main/java/com/hai/dao/HighDiscountPackageDiscountActualMapper.java
@@ -0,0 +1,117 @@
+package com.hai.dao;
+
+import com.hai.entity.HighDiscountPackageDiscountActual;
+import com.hai.entity.HighDiscountPackageDiscountActualExample;
+import java.util.List;
+import org.apache.ibatis.annotations.Delete;
+import org.apache.ibatis.annotations.DeleteProvider;
+import org.apache.ibatis.annotations.Insert;
+import org.apache.ibatis.annotations.InsertProvider;
+import org.apache.ibatis.annotations.Options;
+import org.apache.ibatis.annotations.Param;
+import org.apache.ibatis.annotations.Result;
+import org.apache.ibatis.annotations.Results;
+import org.apache.ibatis.annotations.Select;
+import org.apache.ibatis.annotations.SelectProvider;
+import org.apache.ibatis.annotations.Update;
+import org.apache.ibatis.annotations.UpdateProvider;
+import org.apache.ibatis.type.JdbcType;
+import org.springframework.stereotype.Repository;
+
+/**
+ * 
+ * 代码由工具生成,请勿修改!!!
+ * 如果需要扩展请在其父类进行扩展
+ * 
+ **/
+@Repository
+public interface HighDiscountPackageDiscountActualMapper extends HighDiscountPackageDiscountActualMapperExt {
+    @SelectProvider(type=HighDiscountPackageDiscountActualSqlProvider.class, method="countByExample")
+    long countByExample(HighDiscountPackageDiscountActualExample example);
+
+    @DeleteProvider(type=HighDiscountPackageDiscountActualSqlProvider.class, method="deleteByExample")
+    int deleteByExample(HighDiscountPackageDiscountActualExample example);
+
+    @Delete({
+        "delete from high_discount_package_discount_actual",
+        "where id = #{id,jdbcType=INTEGER}"
+    })
+    int deleteByPrimaryKey(Integer id);
+
+    @Insert({
+        "insert into high_discount_package_discount_actual (agent_discount_code_id, discount_package_id, ",
+        "discount_package_actual_id, created_user_id, ",
+        "created_time, `status`, ",
+        "ext_1, ext_2, ext_3)",
+        "values (#{agentDiscountCodeId,jdbcType=BIGINT}, #{discountPackageId,jdbcType=INTEGER}, ",
+        "#{discountPackageActualId,jdbcType=INTEGER}, #{createdUserId,jdbcType=INTEGER}, ",
+        "#{createdTime,jdbcType=TIMESTAMP}, #{status,jdbcType=INTEGER}, ",
+        "#{ext1,jdbcType=VARCHAR}, #{ext2,jdbcType=VARCHAR}, #{ext3,jdbcType=VARCHAR})"
+    })
+    @Options(useGeneratedKeys=true,keyProperty="id")
+    int insert(HighDiscountPackageDiscountActual record);
+
+    @InsertProvider(type=HighDiscountPackageDiscountActualSqlProvider.class, method="insertSelective")
+    @Options(useGeneratedKeys=true,keyProperty="id")
+    int insertSelective(HighDiscountPackageDiscountActual record);
+
+    @SelectProvider(type=HighDiscountPackageDiscountActualSqlProvider.class, method="selectByExample")
+    @Results({
+        @Result(column="id", property="id", jdbcType=JdbcType.INTEGER, id=true),
+        @Result(column="agent_discount_code_id", property="agentDiscountCodeId", jdbcType=JdbcType.BIGINT),
+        @Result(column="discount_package_id", property="discountPackageId", jdbcType=JdbcType.INTEGER),
+        @Result(column="discount_package_actual_id", property="discountPackageActualId", jdbcType=JdbcType.INTEGER),
+        @Result(column="created_user_id", property="createdUserId", jdbcType=JdbcType.INTEGER),
+        @Result(column="created_time", property="createdTime", jdbcType=JdbcType.TIMESTAMP),
+        @Result(column="status", property="status", jdbcType=JdbcType.INTEGER),
+        @Result(column="ext_1", property="ext1", jdbcType=JdbcType.VARCHAR),
+        @Result(column="ext_2", property="ext2", jdbcType=JdbcType.VARCHAR),
+        @Result(column="ext_3", property="ext3", jdbcType=JdbcType.VARCHAR)
+    })
+    List<HighDiscountPackageDiscountActual> selectByExample(HighDiscountPackageDiscountActualExample example);
+
+    @Select({
+        "select",
+        "id, agent_discount_code_id, discount_package_id, discount_package_actual_id, ",
+        "created_user_id, created_time, `status`, ext_1, ext_2, ext_3",
+        "from high_discount_package_discount_actual",
+        "where id = #{id,jdbcType=INTEGER}"
+    })
+    @Results({
+        @Result(column="id", property="id", jdbcType=JdbcType.INTEGER, id=true),
+        @Result(column="agent_discount_code_id", property="agentDiscountCodeId", jdbcType=JdbcType.BIGINT),
+        @Result(column="discount_package_id", property="discountPackageId", jdbcType=JdbcType.INTEGER),
+        @Result(column="discount_package_actual_id", property="discountPackageActualId", jdbcType=JdbcType.INTEGER),
+        @Result(column="created_user_id", property="createdUserId", jdbcType=JdbcType.INTEGER),
+        @Result(column="created_time", property="createdTime", jdbcType=JdbcType.TIMESTAMP),
+        @Result(column="status", property="status", jdbcType=JdbcType.INTEGER),
+        @Result(column="ext_1", property="ext1", jdbcType=JdbcType.VARCHAR),
+        @Result(column="ext_2", property="ext2", jdbcType=JdbcType.VARCHAR),
+        @Result(column="ext_3", property="ext3", jdbcType=JdbcType.VARCHAR)
+    })
+    HighDiscountPackageDiscountActual selectByPrimaryKey(Integer id);
+
+    @UpdateProvider(type=HighDiscountPackageDiscountActualSqlProvider.class, method="updateByExampleSelective")
+    int updateByExampleSelective(@Param("record") HighDiscountPackageDiscountActual record, @Param("example") HighDiscountPackageDiscountActualExample example);
+
+    @UpdateProvider(type=HighDiscountPackageDiscountActualSqlProvider.class, method="updateByExample")
+    int updateByExample(@Param("record") HighDiscountPackageDiscountActual record, @Param("example") HighDiscountPackageDiscountActualExample example);
+
+    @UpdateProvider(type=HighDiscountPackageDiscountActualSqlProvider.class, method="updateByPrimaryKeySelective")
+    int updateByPrimaryKeySelective(HighDiscountPackageDiscountActual record);
+
+    @Update({
+        "update high_discount_package_discount_actual",
+        "set agent_discount_code_id = #{agentDiscountCodeId,jdbcType=BIGINT},",
+          "discount_package_id = #{discountPackageId,jdbcType=INTEGER},",
+          "discount_package_actual_id = #{discountPackageActualId,jdbcType=INTEGER},",
+          "created_user_id = #{createdUserId,jdbcType=INTEGER},",
+          "created_time = #{createdTime,jdbcType=TIMESTAMP},",
+          "`status` = #{status,jdbcType=INTEGER},",
+          "ext_1 = #{ext1,jdbcType=VARCHAR},",
+          "ext_2 = #{ext2,jdbcType=VARCHAR},",
+          "ext_3 = #{ext3,jdbcType=VARCHAR}",
+        "where id = #{id,jdbcType=INTEGER}"
+    })
+    int updateByPrimaryKey(HighDiscountPackageDiscountActual record);
+}
\ No newline at end of file
diff --git a/hai-service/src/main/java/com/hai/dao/HighDiscountPackageDiscountActualMapperExt.java b/hai-service/src/main/java/com/hai/dao/HighDiscountPackageDiscountActualMapperExt.java
new file mode 100644
index 00000000..4e3054ca
--- /dev/null
+++ b/hai-service/src/main/java/com/hai/dao/HighDiscountPackageDiscountActualMapperExt.java
@@ -0,0 +1,7 @@
+package com.hai.dao;
+
+/**
+ * mapper扩展类
+ */
+public interface HighDiscountPackageDiscountActualMapperExt {
+}
\ No newline at end of file
diff --git a/hai-service/src/main/java/com/hai/dao/HighDiscountPackageDiscountActualSqlProvider.java b/hai-service/src/main/java/com/hai/dao/HighDiscountPackageDiscountActualSqlProvider.java
new file mode 100644
index 00000000..d781a712
--- /dev/null
+++ b/hai-service/src/main/java/com/hai/dao/HighDiscountPackageDiscountActualSqlProvider.java
@@ -0,0 +1,304 @@
+package com.hai.dao;
+
+import com.hai.entity.HighDiscountPackageDiscountActual;
+import com.hai.entity.HighDiscountPackageDiscountActualExample.Criteria;
+import com.hai.entity.HighDiscountPackageDiscountActualExample.Criterion;
+import com.hai.entity.HighDiscountPackageDiscountActualExample;
+import java.util.List;
+import java.util.Map;
+import org.apache.ibatis.jdbc.SQL;
+
+public class HighDiscountPackageDiscountActualSqlProvider {
+
+    public String countByExample(HighDiscountPackageDiscountActualExample example) {
+        SQL sql = new SQL();
+        sql.SELECT("count(*)").FROM("high_discount_package_discount_actual");
+        applyWhere(sql, example, false);
+        return sql.toString();
+    }
+
+    public String deleteByExample(HighDiscountPackageDiscountActualExample example) {
+        SQL sql = new SQL();
+        sql.DELETE_FROM("high_discount_package_discount_actual");
+        applyWhere(sql, example, false);
+        return sql.toString();
+    }
+
+    public String insertSelective(HighDiscountPackageDiscountActual record) {
+        SQL sql = new SQL();
+        sql.INSERT_INTO("high_discount_package_discount_actual");
+        
+        if (record.getAgentDiscountCodeId() != null) {
+            sql.VALUES("agent_discount_code_id", "#{agentDiscountCodeId,jdbcType=BIGINT}");
+        }
+        
+        if (record.getDiscountPackageId() != null) {
+            sql.VALUES("discount_package_id", "#{discountPackageId,jdbcType=INTEGER}");
+        }
+        
+        if (record.getDiscountPackageActualId() != null) {
+            sql.VALUES("discount_package_actual_id", "#{discountPackageActualId,jdbcType=INTEGER}");
+        }
+        
+        if (record.getCreatedUserId() != null) {
+            sql.VALUES("created_user_id", "#{createdUserId,jdbcType=INTEGER}");
+        }
+        
+        if (record.getCreatedTime() != null) {
+            sql.VALUES("created_time", "#{createdTime,jdbcType=TIMESTAMP}");
+        }
+        
+        if (record.getStatus() != null) {
+            sql.VALUES("`status`", "#{status,jdbcType=INTEGER}");
+        }
+        
+        if (record.getExt1() != null) {
+            sql.VALUES("ext_1", "#{ext1,jdbcType=VARCHAR}");
+        }
+        
+        if (record.getExt2() != null) {
+            sql.VALUES("ext_2", "#{ext2,jdbcType=VARCHAR}");
+        }
+        
+        if (record.getExt3() != null) {
+            sql.VALUES("ext_3", "#{ext3,jdbcType=VARCHAR}");
+        }
+        
+        return sql.toString();
+    }
+
+    public String selectByExample(HighDiscountPackageDiscountActualExample example) {
+        SQL sql = new SQL();
+        if (example != null && example.isDistinct()) {
+            sql.SELECT_DISTINCT("id");
+        } else {
+            sql.SELECT("id");
+        }
+        sql.SELECT("agent_discount_code_id");
+        sql.SELECT("discount_package_id");
+        sql.SELECT("discount_package_actual_id");
+        sql.SELECT("created_user_id");
+        sql.SELECT("created_time");
+        sql.SELECT("`status`");
+        sql.SELECT("ext_1");
+        sql.SELECT("ext_2");
+        sql.SELECT("ext_3");
+        sql.FROM("high_discount_package_discount_actual");
+        applyWhere(sql, example, false);
+        
+        if (example != null && example.getOrderByClause() != null) {
+            sql.ORDER_BY(example.getOrderByClause());
+        }
+        
+        return sql.toString();
+    }
+
+    public String updateByExampleSelective(Map<String, Object> parameter) {
+        HighDiscountPackageDiscountActual record = (HighDiscountPackageDiscountActual) parameter.get("record");
+        HighDiscountPackageDiscountActualExample example = (HighDiscountPackageDiscountActualExample) parameter.get("example");
+        
+        SQL sql = new SQL();
+        sql.UPDATE("high_discount_package_discount_actual");
+        
+        if (record.getId() != null) {
+            sql.SET("id = #{record.id,jdbcType=INTEGER}");
+        }
+        
+        if (record.getAgentDiscountCodeId() != null) {
+            sql.SET("agent_discount_code_id = #{record.agentDiscountCodeId,jdbcType=BIGINT}");
+        }
+        
+        if (record.getDiscountPackageId() != null) {
+            sql.SET("discount_package_id = #{record.discountPackageId,jdbcType=INTEGER}");
+        }
+        
+        if (record.getDiscountPackageActualId() != null) {
+            sql.SET("discount_package_actual_id = #{record.discountPackageActualId,jdbcType=INTEGER}");
+        }
+        
+        if (record.getCreatedUserId() != null) {
+            sql.SET("created_user_id = #{record.createdUserId,jdbcType=INTEGER}");
+        }
+        
+        if (record.getCreatedTime() != null) {
+            sql.SET("created_time = #{record.createdTime,jdbcType=TIMESTAMP}");
+        }
+        
+        if (record.getStatus() != null) {
+            sql.SET("`status` = #{record.status,jdbcType=INTEGER}");
+        }
+        
+        if (record.getExt1() != null) {
+            sql.SET("ext_1 = #{record.ext1,jdbcType=VARCHAR}");
+        }
+        
+        if (record.getExt2() != null) {
+            sql.SET("ext_2 = #{record.ext2,jdbcType=VARCHAR}");
+        }
+        
+        if (record.getExt3() != null) {
+            sql.SET("ext_3 = #{record.ext3,jdbcType=VARCHAR}");
+        }
+        
+        applyWhere(sql, example, true);
+        return sql.toString();
+    }
+
+    public String updateByExample(Map<String, Object> parameter) {
+        SQL sql = new SQL();
+        sql.UPDATE("high_discount_package_discount_actual");
+        
+        sql.SET("id = #{record.id,jdbcType=INTEGER}");
+        sql.SET("agent_discount_code_id = #{record.agentDiscountCodeId,jdbcType=BIGINT}");
+        sql.SET("discount_package_id = #{record.discountPackageId,jdbcType=INTEGER}");
+        sql.SET("discount_package_actual_id = #{record.discountPackageActualId,jdbcType=INTEGER}");
+        sql.SET("created_user_id = #{record.createdUserId,jdbcType=INTEGER}");
+        sql.SET("created_time = #{record.createdTime,jdbcType=TIMESTAMP}");
+        sql.SET("`status` = #{record.status,jdbcType=INTEGER}");
+        sql.SET("ext_1 = #{record.ext1,jdbcType=VARCHAR}");
+        sql.SET("ext_2 = #{record.ext2,jdbcType=VARCHAR}");
+        sql.SET("ext_3 = #{record.ext3,jdbcType=VARCHAR}");
+        
+        HighDiscountPackageDiscountActualExample example = (HighDiscountPackageDiscountActualExample) parameter.get("example");
+        applyWhere(sql, example, true);
+        return sql.toString();
+    }
+
+    public String updateByPrimaryKeySelective(HighDiscountPackageDiscountActual record) {
+        SQL sql = new SQL();
+        sql.UPDATE("high_discount_package_discount_actual");
+        
+        if (record.getAgentDiscountCodeId() != null) {
+            sql.SET("agent_discount_code_id = #{agentDiscountCodeId,jdbcType=BIGINT}");
+        }
+        
+        if (record.getDiscountPackageId() != null) {
+            sql.SET("discount_package_id = #{discountPackageId,jdbcType=INTEGER}");
+        }
+        
+        if (record.getDiscountPackageActualId() != null) {
+            sql.SET("discount_package_actual_id = #{discountPackageActualId,jdbcType=INTEGER}");
+        }
+        
+        if (record.getCreatedUserId() != null) {
+            sql.SET("created_user_id = #{createdUserId,jdbcType=INTEGER}");
+        }
+        
+        if (record.getCreatedTime() != null) {
+            sql.SET("created_time = #{createdTime,jdbcType=TIMESTAMP}");
+        }
+        
+        if (record.getStatus() != null) {
+            sql.SET("`status` = #{status,jdbcType=INTEGER}");
+        }
+        
+        if (record.getExt1() != null) {
+            sql.SET("ext_1 = #{ext1,jdbcType=VARCHAR}");
+        }
+        
+        if (record.getExt2() != null) {
+            sql.SET("ext_2 = #{ext2,jdbcType=VARCHAR}");
+        }
+        
+        if (record.getExt3() != null) {
+            sql.SET("ext_3 = #{ext3,jdbcType=VARCHAR}");
+        }
+        
+        sql.WHERE("id = #{id,jdbcType=INTEGER}");
+        
+        return sql.toString();
+    }
+
+    protected void applyWhere(SQL sql, HighDiscountPackageDiscountActualExample example, boolean includeExamplePhrase) {
+        if (example == null) {
+            return;
+        }
+        
+        String parmPhrase1;
+        String parmPhrase1_th;
+        String parmPhrase2;
+        String parmPhrase2_th;
+        String parmPhrase3;
+        String parmPhrase3_th;
+        if (includeExamplePhrase) {
+            parmPhrase1 = "%s #{example.oredCriteria[%d].allCriteria[%d].value}";
+            parmPhrase1_th = "%s #{example.oredCriteria[%d].allCriteria[%d].value,typeHandler=%s}";
+            parmPhrase2 = "%s #{example.oredCriteria[%d].allCriteria[%d].value} and #{example.oredCriteria[%d].criteria[%d].secondValue}";
+            parmPhrase2_th = "%s #{example.oredCriteria[%d].allCriteria[%d].value,typeHandler=%s} and #{example.oredCriteria[%d].criteria[%d].secondValue,typeHandler=%s}";
+            parmPhrase3 = "#{example.oredCriteria[%d].allCriteria[%d].value[%d]}";
+            parmPhrase3_th = "#{example.oredCriteria[%d].allCriteria[%d].value[%d],typeHandler=%s}";
+        } else {
+            parmPhrase1 = "%s #{oredCriteria[%d].allCriteria[%d].value}";
+            parmPhrase1_th = "%s #{oredCriteria[%d].allCriteria[%d].value,typeHandler=%s}";
+            parmPhrase2 = "%s #{oredCriteria[%d].allCriteria[%d].value} and #{oredCriteria[%d].criteria[%d].secondValue}";
+            parmPhrase2_th = "%s #{oredCriteria[%d].allCriteria[%d].value,typeHandler=%s} and #{oredCriteria[%d].criteria[%d].secondValue,typeHandler=%s}";
+            parmPhrase3 = "#{oredCriteria[%d].allCriteria[%d].value[%d]}";
+            parmPhrase3_th = "#{oredCriteria[%d].allCriteria[%d].value[%d],typeHandler=%s}";
+        }
+        
+        StringBuilder sb = new StringBuilder();
+        List<Criteria> oredCriteria = example.getOredCriteria();
+        boolean firstCriteria = true;
+        for (int i = 0; i < oredCriteria.size(); i++) {
+            Criteria criteria = oredCriteria.get(i);
+            if (criteria.isValid()) {
+                if (firstCriteria) {
+                    firstCriteria = false;
+                } else {
+                    sb.append(" or ");
+                }
+                
+                sb.append('(');
+                List<Criterion> criterions = criteria.getAllCriteria();
+                boolean firstCriterion = true;
+                for (int j = 0; j < criterions.size(); j++) {
+                    Criterion criterion = criterions.get(j);
+                    if (firstCriterion) {
+                        firstCriterion = false;
+                    } else {
+                        sb.append(" and ");
+                    }
+                    
+                    if (criterion.isNoValue()) {
+                        sb.append(criterion.getCondition());
+                    } else if (criterion.isSingleValue()) {
+                        if (criterion.getTypeHandler() == null) {
+                            sb.append(String.format(parmPhrase1, criterion.getCondition(), i, j));
+                        } else {
+                            sb.append(String.format(parmPhrase1_th, criterion.getCondition(), i, j,criterion.getTypeHandler()));
+                        }
+                    } else if (criterion.isBetweenValue()) {
+                        if (criterion.getTypeHandler() == null) {
+                            sb.append(String.format(parmPhrase2, criterion.getCondition(), i, j, i, j));
+                        } else {
+                            sb.append(String.format(parmPhrase2_th, criterion.getCondition(), i, j, criterion.getTypeHandler(), i, j, criterion.getTypeHandler()));
+                        }
+                    } else if (criterion.isListValue()) {
+                        sb.append(criterion.getCondition());
+                        sb.append(" (");
+                        List<?> listItems = (List<?>) criterion.getValue();
+                        boolean comma = false;
+                        for (int k = 0; k < listItems.size(); k++) {
+                            if (comma) {
+                                sb.append(", ");
+                            } else {
+                                comma = true;
+                            }
+                            if (criterion.getTypeHandler() == null) {
+                                sb.append(String.format(parmPhrase3, i, j, k));
+                            } else {
+                                sb.append(String.format(parmPhrase3_th, i, j, k, criterion.getTypeHandler()));
+                            }
+                        }
+                        sb.append(')');
+                    }
+                }
+                sb.append(')');
+            }
+        }
+        
+        if (sb.length() > 0) {
+            sql.WHERE(sb.toString());
+        }
+    }
+}
\ No newline at end of file
diff --git a/hai-service/src/main/java/com/hai/entity/HighDiscountPackageActual.java b/hai-service/src/main/java/com/hai/entity/HighDiscountPackageActual.java
new file mode 100644
index 00000000..5eccde6c
--- /dev/null
+++ b/hai-service/src/main/java/com/hai/entity/HighDiscountPackageActual.java
@@ -0,0 +1,209 @@
+package com.hai.entity;
+
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * high_discount_package_actual
+ * @author 
+ */
+/**
+ * 
+ * 代码由工具生成
+ * 
+ **/
+public class HighDiscountPackageActual implements Serializable {
+    /**
+     * 主键
+     */
+    private Integer id;
+
+    /**
+     * 优惠券包id
+     */
+    private Integer discountPackageId;
+
+    /**
+     * 创建人
+     */
+    private Integer createdUserId;
+
+    /**
+     * 创建时间
+     */
+    private Date createdTime;
+
+    /**
+     * 用户id
+     */
+    private Integer userId;
+
+    /**
+     * 分配时间
+     */
+    private Date allocationTime;
+
+    /**
+     * 状态: 1: 待分配 2:预分配(售卖)3:已分配
+     */
+    private Integer status;
+
+    /**
+     * 扩展字段
+     */
+    private String ext1;
+
+    /**
+     * 扩展字段
+     */
+    private String ext2;
+
+    /**
+     * 扩展字段
+     */
+    private String ext3;
+
+    private static final long serialVersionUID = 1L;
+
+    public Integer getId() {
+        return id;
+    }
+
+    public void setId(Integer id) {
+        this.id = id;
+    }
+
+    public Integer getDiscountPackageId() {
+        return discountPackageId;
+    }
+
+    public void setDiscountPackageId(Integer discountPackageId) {
+        this.discountPackageId = discountPackageId;
+    }
+
+    public Integer getCreatedUserId() {
+        return createdUserId;
+    }
+
+    public void setCreatedUserId(Integer createdUserId) {
+        this.createdUserId = createdUserId;
+    }
+
+    public Date getCreatedTime() {
+        return createdTime;
+    }
+
+    public void setCreatedTime(Date createdTime) {
+        this.createdTime = createdTime;
+    }
+
+    public Integer getUserId() {
+        return userId;
+    }
+
+    public void setUserId(Integer userId) {
+        this.userId = userId;
+    }
+
+    public Date getAllocationTime() {
+        return allocationTime;
+    }
+
+    public void setAllocationTime(Date allocationTime) {
+        this.allocationTime = allocationTime;
+    }
+
+    public Integer getStatus() {
+        return status;
+    }
+
+    public void setStatus(Integer status) {
+        this.status = status;
+    }
+
+    public String getExt1() {
+        return ext1;
+    }
+
+    public void setExt1(String ext1) {
+        this.ext1 = ext1;
+    }
+
+    public String getExt2() {
+        return ext2;
+    }
+
+    public void setExt2(String ext2) {
+        this.ext2 = ext2;
+    }
+
+    public String getExt3() {
+        return ext3;
+    }
+
+    public void setExt3(String ext3) {
+        this.ext3 = ext3;
+    }
+
+    @Override
+    public boolean equals(Object that) {
+        if (this == that) {
+            return true;
+        }
+        if (that == null) {
+            return false;
+        }
+        if (getClass() != that.getClass()) {
+            return false;
+        }
+        HighDiscountPackageActual other = (HighDiscountPackageActual) that;
+        return (this.getId() == null ? other.getId() == null : this.getId().equals(other.getId()))
+            && (this.getDiscountPackageId() == null ? other.getDiscountPackageId() == null : this.getDiscountPackageId().equals(other.getDiscountPackageId()))
+            && (this.getCreatedUserId() == null ? other.getCreatedUserId() == null : this.getCreatedUserId().equals(other.getCreatedUserId()))
+            && (this.getCreatedTime() == null ? other.getCreatedTime() == null : this.getCreatedTime().equals(other.getCreatedTime()))
+            && (this.getUserId() == null ? other.getUserId() == null : this.getUserId().equals(other.getUserId()))
+            && (this.getAllocationTime() == null ? other.getAllocationTime() == null : this.getAllocationTime().equals(other.getAllocationTime()))
+            && (this.getStatus() == null ? other.getStatus() == null : this.getStatus().equals(other.getStatus()))
+            && (this.getExt1() == null ? other.getExt1() == null : this.getExt1().equals(other.getExt1()))
+            && (this.getExt2() == null ? other.getExt2() == null : this.getExt2().equals(other.getExt2()))
+            && (this.getExt3() == null ? other.getExt3() == null : this.getExt3().equals(other.getExt3()));
+    }
+
+    @Override
+    public int hashCode() {
+        final int prime = 31;
+        int result = 1;
+        result = prime * result + ((getId() == null) ? 0 : getId().hashCode());
+        result = prime * result + ((getDiscountPackageId() == null) ? 0 : getDiscountPackageId().hashCode());
+        result = prime * result + ((getCreatedUserId() == null) ? 0 : getCreatedUserId().hashCode());
+        result = prime * result + ((getCreatedTime() == null) ? 0 : getCreatedTime().hashCode());
+        result = prime * result + ((getUserId() == null) ? 0 : getUserId().hashCode());
+        result = prime * result + ((getAllocationTime() == null) ? 0 : getAllocationTime().hashCode());
+        result = prime * result + ((getStatus() == null) ? 0 : getStatus().hashCode());
+        result = prime * result + ((getExt1() == null) ? 0 : getExt1().hashCode());
+        result = prime * result + ((getExt2() == null) ? 0 : getExt2().hashCode());
+        result = prime * result + ((getExt3() == null) ? 0 : getExt3().hashCode());
+        return result;
+    }
+
+    @Override
+    public String toString() {
+        StringBuilder sb = new StringBuilder();
+        sb.append(getClass().getSimpleName());
+        sb.append(" [");
+        sb.append("Hash = ").append(hashCode());
+        sb.append(", id=").append(id);
+        sb.append(", discountPackageId=").append(discountPackageId);
+        sb.append(", createdUserId=").append(createdUserId);
+        sb.append(", createdTime=").append(createdTime);
+        sb.append(", userId=").append(userId);
+        sb.append(", allocationTime=").append(allocationTime);
+        sb.append(", status=").append(status);
+        sb.append(", ext1=").append(ext1);
+        sb.append(", ext2=").append(ext2);
+        sb.append(", ext3=").append(ext3);
+        sb.append(", serialVersionUID=").append(serialVersionUID);
+        sb.append("]");
+        return sb.toString();
+    }
+}
\ No newline at end of file
diff --git a/hai-service/src/main/java/com/hai/entity/HighDiscountPackageActualExample.java b/hai-service/src/main/java/com/hai/entity/HighDiscountPackageActualExample.java
new file mode 100644
index 00000000..f0e24573
--- /dev/null
+++ b/hai-service/src/main/java/com/hai/entity/HighDiscountPackageActualExample.java
@@ -0,0 +1,853 @@
+package com.hai.entity;
+
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.List;
+
+public class HighDiscountPackageActualExample {
+    protected String orderByClause;
+
+    protected boolean distinct;
+
+    protected List<Criteria> oredCriteria;
+
+    private Integer limit;
+
+    private Long offset;
+
+    public HighDiscountPackageActualExample() {
+        oredCriteria = new ArrayList<Criteria>();
+    }
+
+    public void setOrderByClause(String orderByClause) {
+        this.orderByClause = orderByClause;
+    }
+
+    public String getOrderByClause() {
+        return orderByClause;
+    }
+
+    public void setDistinct(boolean distinct) {
+        this.distinct = distinct;
+    }
+
+    public boolean isDistinct() {
+        return distinct;
+    }
+
+    public List<Criteria> getOredCriteria() {
+        return oredCriteria;
+    }
+
+    public void or(Criteria criteria) {
+        oredCriteria.add(criteria);
+    }
+
+    public Criteria or() {
+        Criteria criteria = createCriteriaInternal();
+        oredCriteria.add(criteria);
+        return criteria;
+    }
+
+    public Criteria createCriteria() {
+        Criteria criteria = createCriteriaInternal();
+        if (oredCriteria.size() == 0) {
+            oredCriteria.add(criteria);
+        }
+        return criteria;
+    }
+
+    protected Criteria createCriteriaInternal() {
+        Criteria criteria = new Criteria();
+        return criteria;
+    }
+
+    public void clear() {
+        oredCriteria.clear();
+        orderByClause = null;
+        distinct = false;
+    }
+
+    public void setLimit(Integer limit) {
+        this.limit = limit;
+    }
+
+    public Integer getLimit() {
+        return limit;
+    }
+
+    public void setOffset(Long offset) {
+        this.offset = offset;
+    }
+
+    public Long getOffset() {
+        return offset;
+    }
+
+    protected abstract static class GeneratedCriteria {
+        protected List<Criterion> criteria;
+
+        protected GeneratedCriteria() {
+            super();
+            criteria = new ArrayList<Criterion>();
+        }
+
+        public boolean isValid() {
+            return criteria.size() > 0;
+        }
+
+        public List<Criterion> getAllCriteria() {
+            return criteria;
+        }
+
+        public List<Criterion> getCriteria() {
+            return criteria;
+        }
+
+        protected void addCriterion(String condition) {
+            if (condition == null) {
+                throw new RuntimeException("Value for condition cannot be null");
+            }
+            criteria.add(new Criterion(condition));
+        }
+
+        protected void addCriterion(String condition, Object value, String property) {
+            if (value == null) {
+                throw new RuntimeException("Value for " + property + " cannot be null");
+            }
+            criteria.add(new Criterion(condition, value));
+        }
+
+        protected void addCriterion(String condition, Object value1, Object value2, String property) {
+            if (value1 == null || value2 == null) {
+                throw new RuntimeException("Between values for " + property + " cannot be null");
+            }
+            criteria.add(new Criterion(condition, value1, value2));
+        }
+
+        public Criteria andIdIsNull() {
+            addCriterion("id is null");
+            return (Criteria) this;
+        }
+
+        public Criteria andIdIsNotNull() {
+            addCriterion("id is not null");
+            return (Criteria) this;
+        }
+
+        public Criteria andIdEqualTo(Integer value) {
+            addCriterion("id =", value, "id");
+            return (Criteria) this;
+        }
+
+        public Criteria andIdNotEqualTo(Integer value) {
+            addCriterion("id <>", value, "id");
+            return (Criteria) this;
+        }
+
+        public Criteria andIdGreaterThan(Integer value) {
+            addCriterion("id >", value, "id");
+            return (Criteria) this;
+        }
+
+        public Criteria andIdGreaterThanOrEqualTo(Integer value) {
+            addCriterion("id >=", value, "id");
+            return (Criteria) this;
+        }
+
+        public Criteria andIdLessThan(Integer value) {
+            addCriterion("id <", value, "id");
+            return (Criteria) this;
+        }
+
+        public Criteria andIdLessThanOrEqualTo(Integer value) {
+            addCriterion("id <=", value, "id");
+            return (Criteria) this;
+        }
+
+        public Criteria andIdIn(List<Integer> values) {
+            addCriterion("id in", values, "id");
+            return (Criteria) this;
+        }
+
+        public Criteria andIdNotIn(List<Integer> values) {
+            addCriterion("id not in", values, "id");
+            return (Criteria) this;
+        }
+
+        public Criteria andIdBetween(Integer value1, Integer value2) {
+            addCriterion("id between", value1, value2, "id");
+            return (Criteria) this;
+        }
+
+        public Criteria andIdNotBetween(Integer value1, Integer value2) {
+            addCriterion("id not between", value1, value2, "id");
+            return (Criteria) this;
+        }
+
+        public Criteria andDiscountPackageIdIsNull() {
+            addCriterion("discount_package_id is null");
+            return (Criteria) this;
+        }
+
+        public Criteria andDiscountPackageIdIsNotNull() {
+            addCriterion("discount_package_id is not null");
+            return (Criteria) this;
+        }
+
+        public Criteria andDiscountPackageIdEqualTo(Integer value) {
+            addCriterion("discount_package_id =", value, "discountPackageId");
+            return (Criteria) this;
+        }
+
+        public Criteria andDiscountPackageIdNotEqualTo(Integer value) {
+            addCriterion("discount_package_id <>", value, "discountPackageId");
+            return (Criteria) this;
+        }
+
+        public Criteria andDiscountPackageIdGreaterThan(Integer value) {
+            addCriterion("discount_package_id >", value, "discountPackageId");
+            return (Criteria) this;
+        }
+
+        public Criteria andDiscountPackageIdGreaterThanOrEqualTo(Integer value) {
+            addCriterion("discount_package_id >=", value, "discountPackageId");
+            return (Criteria) this;
+        }
+
+        public Criteria andDiscountPackageIdLessThan(Integer value) {
+            addCriterion("discount_package_id <", value, "discountPackageId");
+            return (Criteria) this;
+        }
+
+        public Criteria andDiscountPackageIdLessThanOrEqualTo(Integer value) {
+            addCriterion("discount_package_id <=", value, "discountPackageId");
+            return (Criteria) this;
+        }
+
+        public Criteria andDiscountPackageIdIn(List<Integer> values) {
+            addCriterion("discount_package_id in", values, "discountPackageId");
+            return (Criteria) this;
+        }
+
+        public Criteria andDiscountPackageIdNotIn(List<Integer> values) {
+            addCriterion("discount_package_id not in", values, "discountPackageId");
+            return (Criteria) this;
+        }
+
+        public Criteria andDiscountPackageIdBetween(Integer value1, Integer value2) {
+            addCriterion("discount_package_id between", value1, value2, "discountPackageId");
+            return (Criteria) this;
+        }
+
+        public Criteria andDiscountPackageIdNotBetween(Integer value1, Integer value2) {
+            addCriterion("discount_package_id not between", value1, value2, "discountPackageId");
+            return (Criteria) this;
+        }
+
+        public Criteria andCreatedUserIdIsNull() {
+            addCriterion("created_user_id is null");
+            return (Criteria) this;
+        }
+
+        public Criteria andCreatedUserIdIsNotNull() {
+            addCriterion("created_user_id is not null");
+            return (Criteria) this;
+        }
+
+        public Criteria andCreatedUserIdEqualTo(Integer value) {
+            addCriterion("created_user_id =", value, "createdUserId");
+            return (Criteria) this;
+        }
+
+        public Criteria andCreatedUserIdNotEqualTo(Integer value) {
+            addCriterion("created_user_id <>", value, "createdUserId");
+            return (Criteria) this;
+        }
+
+        public Criteria andCreatedUserIdGreaterThan(Integer value) {
+            addCriterion("created_user_id >", value, "createdUserId");
+            return (Criteria) this;
+        }
+
+        public Criteria andCreatedUserIdGreaterThanOrEqualTo(Integer value) {
+            addCriterion("created_user_id >=", value, "createdUserId");
+            return (Criteria) this;
+        }
+
+        public Criteria andCreatedUserIdLessThan(Integer value) {
+            addCriterion("created_user_id <", value, "createdUserId");
+            return (Criteria) this;
+        }
+
+        public Criteria andCreatedUserIdLessThanOrEqualTo(Integer value) {
+            addCriterion("created_user_id <=", value, "createdUserId");
+            return (Criteria) this;
+        }
+
+        public Criteria andCreatedUserIdIn(List<Integer> values) {
+            addCriterion("created_user_id in", values, "createdUserId");
+            return (Criteria) this;
+        }
+
+        public Criteria andCreatedUserIdNotIn(List<Integer> values) {
+            addCriterion("created_user_id not in", values, "createdUserId");
+            return (Criteria) this;
+        }
+
+        public Criteria andCreatedUserIdBetween(Integer value1, Integer value2) {
+            addCriterion("created_user_id between", value1, value2, "createdUserId");
+            return (Criteria) this;
+        }
+
+        public Criteria andCreatedUserIdNotBetween(Integer value1, Integer value2) {
+            addCriterion("created_user_id not between", value1, value2, "createdUserId");
+            return (Criteria) this;
+        }
+
+        public Criteria andCreatedTimeIsNull() {
+            addCriterion("created_time is null");
+            return (Criteria) this;
+        }
+
+        public Criteria andCreatedTimeIsNotNull() {
+            addCriterion("created_time is not null");
+            return (Criteria) this;
+        }
+
+        public Criteria andCreatedTimeEqualTo(Date value) {
+            addCriterion("created_time =", value, "createdTime");
+            return (Criteria) this;
+        }
+
+        public Criteria andCreatedTimeNotEqualTo(Date value) {
+            addCriterion("created_time <>", value, "createdTime");
+            return (Criteria) this;
+        }
+
+        public Criteria andCreatedTimeGreaterThan(Date value) {
+            addCriterion("created_time >", value, "createdTime");
+            return (Criteria) this;
+        }
+
+        public Criteria andCreatedTimeGreaterThanOrEqualTo(Date value) {
+            addCriterion("created_time >=", value, "createdTime");
+            return (Criteria) this;
+        }
+
+        public Criteria andCreatedTimeLessThan(Date value) {
+            addCriterion("created_time <", value, "createdTime");
+            return (Criteria) this;
+        }
+
+        public Criteria andCreatedTimeLessThanOrEqualTo(Date value) {
+            addCriterion("created_time <=", value, "createdTime");
+            return (Criteria) this;
+        }
+
+        public Criteria andCreatedTimeIn(List<Date> values) {
+            addCriterion("created_time in", values, "createdTime");
+            return (Criteria) this;
+        }
+
+        public Criteria andCreatedTimeNotIn(List<Date> values) {
+            addCriterion("created_time not in", values, "createdTime");
+            return (Criteria) this;
+        }
+
+        public Criteria andCreatedTimeBetween(Date value1, Date value2) {
+            addCriterion("created_time between", value1, value2, "createdTime");
+            return (Criteria) this;
+        }
+
+        public Criteria andCreatedTimeNotBetween(Date value1, Date value2) {
+            addCriterion("created_time not between", value1, value2, "createdTime");
+            return (Criteria) this;
+        }
+
+        public Criteria andUserIdIsNull() {
+            addCriterion("user_id is null");
+            return (Criteria) this;
+        }
+
+        public Criteria andUserIdIsNotNull() {
+            addCriterion("user_id is not null");
+            return (Criteria) this;
+        }
+
+        public Criteria andUserIdEqualTo(Integer value) {
+            addCriterion("user_id =", value, "userId");
+            return (Criteria) this;
+        }
+
+        public Criteria andUserIdNotEqualTo(Integer value) {
+            addCriterion("user_id <>", value, "userId");
+            return (Criteria) this;
+        }
+
+        public Criteria andUserIdGreaterThan(Integer value) {
+            addCriterion("user_id >", value, "userId");
+            return (Criteria) this;
+        }
+
+        public Criteria andUserIdGreaterThanOrEqualTo(Integer value) {
+            addCriterion("user_id >=", value, "userId");
+            return (Criteria) this;
+        }
+
+        public Criteria andUserIdLessThan(Integer value) {
+            addCriterion("user_id <", value, "userId");
+            return (Criteria) this;
+        }
+
+        public Criteria andUserIdLessThanOrEqualTo(Integer value) {
+            addCriterion("user_id <=", value, "userId");
+            return (Criteria) this;
+        }
+
+        public Criteria andUserIdIn(List<Integer> values) {
+            addCriterion("user_id in", values, "userId");
+            return (Criteria) this;
+        }
+
+        public Criteria andUserIdNotIn(List<Integer> values) {
+            addCriterion("user_id not in", values, "userId");
+            return (Criteria) this;
+        }
+
+        public Criteria andUserIdBetween(Integer value1, Integer value2) {
+            addCriterion("user_id between", value1, value2, "userId");
+            return (Criteria) this;
+        }
+
+        public Criteria andUserIdNotBetween(Integer value1, Integer value2) {
+            addCriterion("user_id not between", value1, value2, "userId");
+            return (Criteria) this;
+        }
+
+        public Criteria andAllocationTimeIsNull() {
+            addCriterion("allocation_time is null");
+            return (Criteria) this;
+        }
+
+        public Criteria andAllocationTimeIsNotNull() {
+            addCriterion("allocation_time is not null");
+            return (Criteria) this;
+        }
+
+        public Criteria andAllocationTimeEqualTo(Date value) {
+            addCriterion("allocation_time =", value, "allocationTime");
+            return (Criteria) this;
+        }
+
+        public Criteria andAllocationTimeNotEqualTo(Date value) {
+            addCriterion("allocation_time <>", value, "allocationTime");
+            return (Criteria) this;
+        }
+
+        public Criteria andAllocationTimeGreaterThan(Date value) {
+            addCriterion("allocation_time >", value, "allocationTime");
+            return (Criteria) this;
+        }
+
+        public Criteria andAllocationTimeGreaterThanOrEqualTo(Date value) {
+            addCriterion("allocation_time >=", value, "allocationTime");
+            return (Criteria) this;
+        }
+
+        public Criteria andAllocationTimeLessThan(Date value) {
+            addCriterion("allocation_time <", value, "allocationTime");
+            return (Criteria) this;
+        }
+
+        public Criteria andAllocationTimeLessThanOrEqualTo(Date value) {
+            addCriterion("allocation_time <=", value, "allocationTime");
+            return (Criteria) this;
+        }
+
+        public Criteria andAllocationTimeIn(List<Date> values) {
+            addCriterion("allocation_time in", values, "allocationTime");
+            return (Criteria) this;
+        }
+
+        public Criteria andAllocationTimeNotIn(List<Date> values) {
+            addCriterion("allocation_time not in", values, "allocationTime");
+            return (Criteria) this;
+        }
+
+        public Criteria andAllocationTimeBetween(Date value1, Date value2) {
+            addCriterion("allocation_time between", value1, value2, "allocationTime");
+            return (Criteria) this;
+        }
+
+        public Criteria andAllocationTimeNotBetween(Date value1, Date value2) {
+            addCriterion("allocation_time not between", value1, value2, "allocationTime");
+            return (Criteria) this;
+        }
+
+        public Criteria andStatusIsNull() {
+            addCriterion("`status` is null");
+            return (Criteria) this;
+        }
+
+        public Criteria andStatusIsNotNull() {
+            addCriterion("`status` is not null");
+            return (Criteria) this;
+        }
+
+        public Criteria andStatusEqualTo(Integer value) {
+            addCriterion("`status` =", value, "status");
+            return (Criteria) this;
+        }
+
+        public Criteria andStatusNotEqualTo(Integer value) {
+            addCriterion("`status` <>", value, "status");
+            return (Criteria) this;
+        }
+
+        public Criteria andStatusGreaterThan(Integer value) {
+            addCriterion("`status` >", value, "status");
+            return (Criteria) this;
+        }
+
+        public Criteria andStatusGreaterThanOrEqualTo(Integer value) {
+            addCriterion("`status` >=", value, "status");
+            return (Criteria) this;
+        }
+
+        public Criteria andStatusLessThan(Integer value) {
+            addCriterion("`status` <", value, "status");
+            return (Criteria) this;
+        }
+
+        public Criteria andStatusLessThanOrEqualTo(Integer value) {
+            addCriterion("`status` <=", value, "status");
+            return (Criteria) this;
+        }
+
+        public Criteria andStatusIn(List<Integer> values) {
+            addCriterion("`status` in", values, "status");
+            return (Criteria) this;
+        }
+
+        public Criteria andStatusNotIn(List<Integer> values) {
+            addCriterion("`status` not in", values, "status");
+            return (Criteria) this;
+        }
+
+        public Criteria andStatusBetween(Integer value1, Integer value2) {
+            addCriterion("`status` between", value1, value2, "status");
+            return (Criteria) this;
+        }
+
+        public Criteria andStatusNotBetween(Integer value1, Integer value2) {
+            addCriterion("`status` not between", value1, value2, "status");
+            return (Criteria) this;
+        }
+
+        public Criteria andExt1IsNull() {
+            addCriterion("ext_1 is null");
+            return (Criteria) this;
+        }
+
+        public Criteria andExt1IsNotNull() {
+            addCriterion("ext_1 is not null");
+            return (Criteria) this;
+        }
+
+        public Criteria andExt1EqualTo(String value) {
+            addCriterion("ext_1 =", value, "ext1");
+            return (Criteria) this;
+        }
+
+        public Criteria andExt1NotEqualTo(String value) {
+            addCriterion("ext_1 <>", value, "ext1");
+            return (Criteria) this;
+        }
+
+        public Criteria andExt1GreaterThan(String value) {
+            addCriterion("ext_1 >", value, "ext1");
+            return (Criteria) this;
+        }
+
+        public Criteria andExt1GreaterThanOrEqualTo(String value) {
+            addCriterion("ext_1 >=", value, "ext1");
+            return (Criteria) this;
+        }
+
+        public Criteria andExt1LessThan(String value) {
+            addCriterion("ext_1 <", value, "ext1");
+            return (Criteria) this;
+        }
+
+        public Criteria andExt1LessThanOrEqualTo(String value) {
+            addCriterion("ext_1 <=", value, "ext1");
+            return (Criteria) this;
+        }
+
+        public Criteria andExt1Like(String value) {
+            addCriterion("ext_1 like", value, "ext1");
+            return (Criteria) this;
+        }
+
+        public Criteria andExt1NotLike(String value) {
+            addCriterion("ext_1 not like", value, "ext1");
+            return (Criteria) this;
+        }
+
+        public Criteria andExt1In(List<String> values) {
+            addCriterion("ext_1 in", values, "ext1");
+            return (Criteria) this;
+        }
+
+        public Criteria andExt1NotIn(List<String> values) {
+            addCriterion("ext_1 not in", values, "ext1");
+            return (Criteria) this;
+        }
+
+        public Criteria andExt1Between(String value1, String value2) {
+            addCriterion("ext_1 between", value1, value2, "ext1");
+            return (Criteria) this;
+        }
+
+        public Criteria andExt1NotBetween(String value1, String value2) {
+            addCriterion("ext_1 not between", value1, value2, "ext1");
+            return (Criteria) this;
+        }
+
+        public Criteria andExt2IsNull() {
+            addCriterion("ext_2 is null");
+            return (Criteria) this;
+        }
+
+        public Criteria andExt2IsNotNull() {
+            addCriterion("ext_2 is not null");
+            return (Criteria) this;
+        }
+
+        public Criteria andExt2EqualTo(String value) {
+            addCriterion("ext_2 =", value, "ext2");
+            return (Criteria) this;
+        }
+
+        public Criteria andExt2NotEqualTo(String value) {
+            addCriterion("ext_2 <>", value, "ext2");
+            return (Criteria) this;
+        }
+
+        public Criteria andExt2GreaterThan(String value) {
+            addCriterion("ext_2 >", value, "ext2");
+            return (Criteria) this;
+        }
+
+        public Criteria andExt2GreaterThanOrEqualTo(String value) {
+            addCriterion("ext_2 >=", value, "ext2");
+            return (Criteria) this;
+        }
+
+        public Criteria andExt2LessThan(String value) {
+            addCriterion("ext_2 <", value, "ext2");
+            return (Criteria) this;
+        }
+
+        public Criteria andExt2LessThanOrEqualTo(String value) {
+            addCriterion("ext_2 <=", value, "ext2");
+            return (Criteria) this;
+        }
+
+        public Criteria andExt2Like(String value) {
+            addCriterion("ext_2 like", value, "ext2");
+            return (Criteria) this;
+        }
+
+        public Criteria andExt2NotLike(String value) {
+            addCriterion("ext_2 not like", value, "ext2");
+            return (Criteria) this;
+        }
+
+        public Criteria andExt2In(List<String> values) {
+            addCriterion("ext_2 in", values, "ext2");
+            return (Criteria) this;
+        }
+
+        public Criteria andExt2NotIn(List<String> values) {
+            addCriterion("ext_2 not in", values, "ext2");
+            return (Criteria) this;
+        }
+
+        public Criteria andExt2Between(String value1, String value2) {
+            addCriterion("ext_2 between", value1, value2, "ext2");
+            return (Criteria) this;
+        }
+
+        public Criteria andExt2NotBetween(String value1, String value2) {
+            addCriterion("ext_2 not between", value1, value2, "ext2");
+            return (Criteria) this;
+        }
+
+        public Criteria andExt3IsNull() {
+            addCriterion("ext_3 is null");
+            return (Criteria) this;
+        }
+
+        public Criteria andExt3IsNotNull() {
+            addCriterion("ext_3 is not null");
+            return (Criteria) this;
+        }
+
+        public Criteria andExt3EqualTo(String value) {
+            addCriterion("ext_3 =", value, "ext3");
+            return (Criteria) this;
+        }
+
+        public Criteria andExt3NotEqualTo(String value) {
+            addCriterion("ext_3 <>", value, "ext3");
+            return (Criteria) this;
+        }
+
+        public Criteria andExt3GreaterThan(String value) {
+            addCriterion("ext_3 >", value, "ext3");
+            return (Criteria) this;
+        }
+
+        public Criteria andExt3GreaterThanOrEqualTo(String value) {
+            addCriterion("ext_3 >=", value, "ext3");
+            return (Criteria) this;
+        }
+
+        public Criteria andExt3LessThan(String value) {
+            addCriterion("ext_3 <", value, "ext3");
+            return (Criteria) this;
+        }
+
+        public Criteria andExt3LessThanOrEqualTo(String value) {
+            addCriterion("ext_3 <=", value, "ext3");
+            return (Criteria) this;
+        }
+
+        public Criteria andExt3Like(String value) {
+            addCriterion("ext_3 like", value, "ext3");
+            return (Criteria) this;
+        }
+
+        public Criteria andExt3NotLike(String value) {
+            addCriterion("ext_3 not like", value, "ext3");
+            return (Criteria) this;
+        }
+
+        public Criteria andExt3In(List<String> values) {
+            addCriterion("ext_3 in", values, "ext3");
+            return (Criteria) this;
+        }
+
+        public Criteria andExt3NotIn(List<String> values) {
+            addCriterion("ext_3 not in", values, "ext3");
+            return (Criteria) this;
+        }
+
+        public Criteria andExt3Between(String value1, String value2) {
+            addCriterion("ext_3 between", value1, value2, "ext3");
+            return (Criteria) this;
+        }
+
+        public Criteria andExt3NotBetween(String value1, String value2) {
+            addCriterion("ext_3 not between", value1, value2, "ext3");
+            return (Criteria) this;
+        }
+    }
+
+    /**
+     */
+    public static class Criteria extends GeneratedCriteria {
+
+        protected Criteria() {
+            super();
+        }
+    }
+
+    public static class Criterion {
+        private String condition;
+
+        private Object value;
+
+        private Object secondValue;
+
+        private boolean noValue;
+
+        private boolean singleValue;
+
+        private boolean betweenValue;
+
+        private boolean listValue;
+
+        private String typeHandler;
+
+        public String getCondition() {
+            return condition;
+        }
+
+        public Object getValue() {
+            return value;
+        }
+
+        public Object getSecondValue() {
+            return secondValue;
+        }
+
+        public boolean isNoValue() {
+            return noValue;
+        }
+
+        public boolean isSingleValue() {
+            return singleValue;
+        }
+
+        public boolean isBetweenValue() {
+            return betweenValue;
+        }
+
+        public boolean isListValue() {
+            return listValue;
+        }
+
+        public String getTypeHandler() {
+            return typeHandler;
+        }
+
+        protected Criterion(String condition) {
+            super();
+            this.condition = condition;
+            this.typeHandler = null;
+            this.noValue = true;
+        }
+
+        protected Criterion(String condition, Object value, String typeHandler) {
+            super();
+            this.condition = condition;
+            this.value = value;
+            this.typeHandler = typeHandler;
+            if (value instanceof List<?>) {
+                this.listValue = true;
+            } else {
+                this.singleValue = true;
+            }
+        }
+
+        protected Criterion(String condition, Object value) {
+            this(condition, value, null);
+        }
+
+        protected Criterion(String condition, Object value, Object secondValue, String typeHandler) {
+            super();
+            this.condition = condition;
+            this.value = value;
+            this.secondValue = secondValue;
+            this.typeHandler = typeHandler;
+            this.betweenValue = true;
+        }
+
+        protected Criterion(String condition, Object value, Object secondValue) {
+            this(condition, value, secondValue, null);
+        }
+    }
+}
\ No newline at end of file
diff --git a/hai-service/src/main/java/com/hai/entity/HighDiscountPackageDetails.java b/hai-service/src/main/java/com/hai/entity/HighDiscountPackageDetails.java
index 3a874628..ef7058a5 100644
--- a/hai-service/src/main/java/com/hai/entity/HighDiscountPackageDetails.java
+++ b/hai-service/src/main/java/com/hai/entity/HighDiscountPackageDetails.java
@@ -28,6 +28,11 @@ public class HighDiscountPackageDetails implements Serializable {
      */
     private Integer discountId;
 
+    /**
+     * 代理商id
+     */
+    private Long agentId;
+
     /**
      * 优惠券名称
      */
@@ -104,6 +109,14 @@ public class HighDiscountPackageDetails implements Serializable {
         this.discountId = discountId;
     }
 
+    public Long getAgentId() {
+        return agentId;
+    }
+
+    public void setAgentId(Long agentId) {
+        this.agentId = agentId;
+    }
+
     public String getDiscountName() {
         return discountName;
     }
@@ -199,6 +212,7 @@ public class HighDiscountPackageDetails implements Serializable {
         return (this.getId() == null ? other.getId() == null : this.getId().equals(other.getId()))
             && (this.getDiscountPackageId() == null ? other.getDiscountPackageId() == null : this.getDiscountPackageId().equals(other.getDiscountPackageId()))
             && (this.getDiscountId() == null ? other.getDiscountId() == null : this.getDiscountId().equals(other.getDiscountId()))
+            && (this.getAgentId() == null ? other.getAgentId() == null : this.getAgentId().equals(other.getAgentId()))
             && (this.getDiscountName() == null ? other.getDiscountName() == null : this.getDiscountName().equals(other.getDiscountName()))
             && (this.getNum() == null ? other.getNum() == null : this.getNum().equals(other.getNum()))
             && (this.getCreatedUserId() == null ? other.getCreatedUserId() == null : this.getCreatedUserId().equals(other.getCreatedUserId()))
@@ -218,6 +232,7 @@ public class HighDiscountPackageDetails implements Serializable {
         result = prime * result + ((getId() == null) ? 0 : getId().hashCode());
         result = prime * result + ((getDiscountPackageId() == null) ? 0 : getDiscountPackageId().hashCode());
         result = prime * result + ((getDiscountId() == null) ? 0 : getDiscountId().hashCode());
+        result = prime * result + ((getAgentId() == null) ? 0 : getAgentId().hashCode());
         result = prime * result + ((getDiscountName() == null) ? 0 : getDiscountName().hashCode());
         result = prime * result + ((getNum() == null) ? 0 : getNum().hashCode());
         result = prime * result + ((getCreatedUserId() == null) ? 0 : getCreatedUserId().hashCode());
@@ -240,6 +255,7 @@ public class HighDiscountPackageDetails implements Serializable {
         sb.append(", id=").append(id);
         sb.append(", discountPackageId=").append(discountPackageId);
         sb.append(", discountId=").append(discountId);
+        sb.append(", agentId=").append(agentId);
         sb.append(", discountName=").append(discountName);
         sb.append(", num=").append(num);
         sb.append(", createdUserId=").append(createdUserId);
diff --git a/hai-service/src/main/java/com/hai/entity/HighDiscountPackageDetailsExample.java b/hai-service/src/main/java/com/hai/entity/HighDiscountPackageDetailsExample.java
index 52f76359..f25325fb 100644
--- a/hai-service/src/main/java/com/hai/entity/HighDiscountPackageDetailsExample.java
+++ b/hai-service/src/main/java/com/hai/entity/HighDiscountPackageDetailsExample.java
@@ -305,6 +305,66 @@ public class HighDiscountPackageDetailsExample {
             return (Criteria) this;
         }
 
+        public Criteria andAgentIdIsNull() {
+            addCriterion("agent_id is null");
+            return (Criteria) this;
+        }
+
+        public Criteria andAgentIdIsNotNull() {
+            addCriterion("agent_id is not null");
+            return (Criteria) this;
+        }
+
+        public Criteria andAgentIdEqualTo(Long value) {
+            addCriterion("agent_id =", value, "agentId");
+            return (Criteria) this;
+        }
+
+        public Criteria andAgentIdNotEqualTo(Long value) {
+            addCriterion("agent_id <>", value, "agentId");
+            return (Criteria) this;
+        }
+
+        public Criteria andAgentIdGreaterThan(Long value) {
+            addCriterion("agent_id >", value, "agentId");
+            return (Criteria) this;
+        }
+
+        public Criteria andAgentIdGreaterThanOrEqualTo(Long value) {
+            addCriterion("agent_id >=", value, "agentId");
+            return (Criteria) this;
+        }
+
+        public Criteria andAgentIdLessThan(Long value) {
+            addCriterion("agent_id <", value, "agentId");
+            return (Criteria) this;
+        }
+
+        public Criteria andAgentIdLessThanOrEqualTo(Long value) {
+            addCriterion("agent_id <=", value, "agentId");
+            return (Criteria) this;
+        }
+
+        public Criteria andAgentIdIn(List<Long> values) {
+            addCriterion("agent_id in", values, "agentId");
+            return (Criteria) this;
+        }
+
+        public Criteria andAgentIdNotIn(List<Long> values) {
+            addCriterion("agent_id not in", values, "agentId");
+            return (Criteria) this;
+        }
+
+        public Criteria andAgentIdBetween(Long value1, Long value2) {
+            addCriterion("agent_id between", value1, value2, "agentId");
+            return (Criteria) this;
+        }
+
+        public Criteria andAgentIdNotBetween(Long value1, Long value2) {
+            addCriterion("agent_id not between", value1, value2, "agentId");
+            return (Criteria) this;
+        }
+
         public Criteria andDiscountNameIsNull() {
             addCriterion("discount_name is null");
             return (Criteria) this;
diff --git a/hai-service/src/main/java/com/hai/entity/HighDiscountPackageDiscountActual.java b/hai-service/src/main/java/com/hai/entity/HighDiscountPackageDiscountActual.java
new file mode 100644
index 00000000..cd347b9a
--- /dev/null
+++ b/hai-service/src/main/java/com/hai/entity/HighDiscountPackageDiscountActual.java
@@ -0,0 +1,209 @@
+package com.hai.entity;
+
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * high_discount_package_discount_actual
+ * @author 
+ */
+/**
+ * 
+ * 代码由工具生成
+ * 
+ **/
+public class HighDiscountPackageDiscountActual implements Serializable {
+    /**
+     * 主键
+     */
+    private Integer id;
+
+    /**
+     * 代理商优惠券关系id
+     */
+    private Long agentDiscountCodeId;
+
+    /**
+     * 优惠券包id
+     */
+    private Integer discountPackageId;
+
+    /**
+     * 优惠券包真实库存关系id
+     */
+    private Integer discountPackageActualId;
+
+    /**
+     * 创建人
+     */
+    private Integer createdUserId;
+
+    /**
+     * 创建时间
+     */
+    private Date createdTime;
+
+    /**
+     * 状态 0: 不可用 1:可用
+     */
+    private Integer status;
+
+    /**
+     * 扩展字段
+     */
+    private String ext1;
+
+    /**
+     * 扩展字段
+     */
+    private String ext2;
+
+    /**
+     * 扩展字段
+     */
+    private String ext3;
+
+    private static final long serialVersionUID = 1L;
+
+    public Integer getId() {
+        return id;
+    }
+
+    public void setId(Integer id) {
+        this.id = id;
+    }
+
+    public Long getAgentDiscountCodeId() {
+        return agentDiscountCodeId;
+    }
+
+    public void setAgentDiscountCodeId(Long agentDiscountCodeId) {
+        this.agentDiscountCodeId = agentDiscountCodeId;
+    }
+
+    public Integer getDiscountPackageId() {
+        return discountPackageId;
+    }
+
+    public void setDiscountPackageId(Integer discountPackageId) {
+        this.discountPackageId = discountPackageId;
+    }
+
+    public Integer getDiscountPackageActualId() {
+        return discountPackageActualId;
+    }
+
+    public void setDiscountPackageActualId(Integer discountPackageActualId) {
+        this.discountPackageActualId = discountPackageActualId;
+    }
+
+    public Integer getCreatedUserId() {
+        return createdUserId;
+    }
+
+    public void setCreatedUserId(Integer createdUserId) {
+        this.createdUserId = createdUserId;
+    }
+
+    public Date getCreatedTime() {
+        return createdTime;
+    }
+
+    public void setCreatedTime(Date createdTime) {
+        this.createdTime = createdTime;
+    }
+
+    public Integer getStatus() {
+        return status;
+    }
+
+    public void setStatus(Integer status) {
+        this.status = status;
+    }
+
+    public String getExt1() {
+        return ext1;
+    }
+
+    public void setExt1(String ext1) {
+        this.ext1 = ext1;
+    }
+
+    public String getExt2() {
+        return ext2;
+    }
+
+    public void setExt2(String ext2) {
+        this.ext2 = ext2;
+    }
+
+    public String getExt3() {
+        return ext3;
+    }
+
+    public void setExt3(String ext3) {
+        this.ext3 = ext3;
+    }
+
+    @Override
+    public boolean equals(Object that) {
+        if (this == that) {
+            return true;
+        }
+        if (that == null) {
+            return false;
+        }
+        if (getClass() != that.getClass()) {
+            return false;
+        }
+        HighDiscountPackageDiscountActual other = (HighDiscountPackageDiscountActual) that;
+        return (this.getId() == null ? other.getId() == null : this.getId().equals(other.getId()))
+            && (this.getAgentDiscountCodeId() == null ? other.getAgentDiscountCodeId() == null : this.getAgentDiscountCodeId().equals(other.getAgentDiscountCodeId()))
+            && (this.getDiscountPackageId() == null ? other.getDiscountPackageId() == null : this.getDiscountPackageId().equals(other.getDiscountPackageId()))
+            && (this.getDiscountPackageActualId() == null ? other.getDiscountPackageActualId() == null : this.getDiscountPackageActualId().equals(other.getDiscountPackageActualId()))
+            && (this.getCreatedUserId() == null ? other.getCreatedUserId() == null : this.getCreatedUserId().equals(other.getCreatedUserId()))
+            && (this.getCreatedTime() == null ? other.getCreatedTime() == null : this.getCreatedTime().equals(other.getCreatedTime()))
+            && (this.getStatus() == null ? other.getStatus() == null : this.getStatus().equals(other.getStatus()))
+            && (this.getExt1() == null ? other.getExt1() == null : this.getExt1().equals(other.getExt1()))
+            && (this.getExt2() == null ? other.getExt2() == null : this.getExt2().equals(other.getExt2()))
+            && (this.getExt3() == null ? other.getExt3() == null : this.getExt3().equals(other.getExt3()));
+    }
+
+    @Override
+    public int hashCode() {
+        final int prime = 31;
+        int result = 1;
+        result = prime * result + ((getId() == null) ? 0 : getId().hashCode());
+        result = prime * result + ((getAgentDiscountCodeId() == null) ? 0 : getAgentDiscountCodeId().hashCode());
+        result = prime * result + ((getDiscountPackageId() == null) ? 0 : getDiscountPackageId().hashCode());
+        result = prime * result + ((getDiscountPackageActualId() == null) ? 0 : getDiscountPackageActualId().hashCode());
+        result = prime * result + ((getCreatedUserId() == null) ? 0 : getCreatedUserId().hashCode());
+        result = prime * result + ((getCreatedTime() == null) ? 0 : getCreatedTime().hashCode());
+        result = prime * result + ((getStatus() == null) ? 0 : getStatus().hashCode());
+        result = prime * result + ((getExt1() == null) ? 0 : getExt1().hashCode());
+        result = prime * result + ((getExt2() == null) ? 0 : getExt2().hashCode());
+        result = prime * result + ((getExt3() == null) ? 0 : getExt3().hashCode());
+        return result;
+    }
+
+    @Override
+    public String toString() {
+        StringBuilder sb = new StringBuilder();
+        sb.append(getClass().getSimpleName());
+        sb.append(" [");
+        sb.append("Hash = ").append(hashCode());
+        sb.append(", id=").append(id);
+        sb.append(", agentDiscountCodeId=").append(agentDiscountCodeId);
+        sb.append(", discountPackageId=").append(discountPackageId);
+        sb.append(", discountPackageActualId=").append(discountPackageActualId);
+        sb.append(", createdUserId=").append(createdUserId);
+        sb.append(", createdTime=").append(createdTime);
+        sb.append(", status=").append(status);
+        sb.append(", ext1=").append(ext1);
+        sb.append(", ext2=").append(ext2);
+        sb.append(", ext3=").append(ext3);
+        sb.append(", serialVersionUID=").append(serialVersionUID);
+        sb.append("]");
+        return sb.toString();
+    }
+}
\ No newline at end of file
diff --git a/hai-service/src/main/java/com/hai/entity/HighDiscountPackageDiscountActualExample.java b/hai-service/src/main/java/com/hai/entity/HighDiscountPackageDiscountActualExample.java
new file mode 100644
index 00000000..45f535d7
--- /dev/null
+++ b/hai-service/src/main/java/com/hai/entity/HighDiscountPackageDiscountActualExample.java
@@ -0,0 +1,853 @@
+package com.hai.entity;
+
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.List;
+
+public class HighDiscountPackageDiscountActualExample {
+    protected String orderByClause;
+
+    protected boolean distinct;
+
+    protected List<Criteria> oredCriteria;
+
+    private Integer limit;
+
+    private Long offset;
+
+    public HighDiscountPackageDiscountActualExample() {
+        oredCriteria = new ArrayList<Criteria>();
+    }
+
+    public void setOrderByClause(String orderByClause) {
+        this.orderByClause = orderByClause;
+    }
+
+    public String getOrderByClause() {
+        return orderByClause;
+    }
+
+    public void setDistinct(boolean distinct) {
+        this.distinct = distinct;
+    }
+
+    public boolean isDistinct() {
+        return distinct;
+    }
+
+    public List<Criteria> getOredCriteria() {
+        return oredCriteria;
+    }
+
+    public void or(Criteria criteria) {
+        oredCriteria.add(criteria);
+    }
+
+    public Criteria or() {
+        Criteria criteria = createCriteriaInternal();
+        oredCriteria.add(criteria);
+        return criteria;
+    }
+
+    public Criteria createCriteria() {
+        Criteria criteria = createCriteriaInternal();
+        if (oredCriteria.size() == 0) {
+            oredCriteria.add(criteria);
+        }
+        return criteria;
+    }
+
+    protected Criteria createCriteriaInternal() {
+        Criteria criteria = new Criteria();
+        return criteria;
+    }
+
+    public void clear() {
+        oredCriteria.clear();
+        orderByClause = null;
+        distinct = false;
+    }
+
+    public void setLimit(Integer limit) {
+        this.limit = limit;
+    }
+
+    public Integer getLimit() {
+        return limit;
+    }
+
+    public void setOffset(Long offset) {
+        this.offset = offset;
+    }
+
+    public Long getOffset() {
+        return offset;
+    }
+
+    protected abstract static class GeneratedCriteria {
+        protected List<Criterion> criteria;
+
+        protected GeneratedCriteria() {
+            super();
+            criteria = new ArrayList<Criterion>();
+        }
+
+        public boolean isValid() {
+            return criteria.size() > 0;
+        }
+
+        public List<Criterion> getAllCriteria() {
+            return criteria;
+        }
+
+        public List<Criterion> getCriteria() {
+            return criteria;
+        }
+
+        protected void addCriterion(String condition) {
+            if (condition == null) {
+                throw new RuntimeException("Value for condition cannot be null");
+            }
+            criteria.add(new Criterion(condition));
+        }
+
+        protected void addCriterion(String condition, Object value, String property) {
+            if (value == null) {
+                throw new RuntimeException("Value for " + property + " cannot be null");
+            }
+            criteria.add(new Criterion(condition, value));
+        }
+
+        protected void addCriterion(String condition, Object value1, Object value2, String property) {
+            if (value1 == null || value2 == null) {
+                throw new RuntimeException("Between values for " + property + " cannot be null");
+            }
+            criteria.add(new Criterion(condition, value1, value2));
+        }
+
+        public Criteria andIdIsNull() {
+            addCriterion("id is null");
+            return (Criteria) this;
+        }
+
+        public Criteria andIdIsNotNull() {
+            addCriterion("id is not null");
+            return (Criteria) this;
+        }
+
+        public Criteria andIdEqualTo(Integer value) {
+            addCriterion("id =", value, "id");
+            return (Criteria) this;
+        }
+
+        public Criteria andIdNotEqualTo(Integer value) {
+            addCriterion("id <>", value, "id");
+            return (Criteria) this;
+        }
+
+        public Criteria andIdGreaterThan(Integer value) {
+            addCriterion("id >", value, "id");
+            return (Criteria) this;
+        }
+
+        public Criteria andIdGreaterThanOrEqualTo(Integer value) {
+            addCriterion("id >=", value, "id");
+            return (Criteria) this;
+        }
+
+        public Criteria andIdLessThan(Integer value) {
+            addCriterion("id <", value, "id");
+            return (Criteria) this;
+        }
+
+        public Criteria andIdLessThanOrEqualTo(Integer value) {
+            addCriterion("id <=", value, "id");
+            return (Criteria) this;
+        }
+
+        public Criteria andIdIn(List<Integer> values) {
+            addCriterion("id in", values, "id");
+            return (Criteria) this;
+        }
+
+        public Criteria andIdNotIn(List<Integer> values) {
+            addCriterion("id not in", values, "id");
+            return (Criteria) this;
+        }
+
+        public Criteria andIdBetween(Integer value1, Integer value2) {
+            addCriterion("id between", value1, value2, "id");
+            return (Criteria) this;
+        }
+
+        public Criteria andIdNotBetween(Integer value1, Integer value2) {
+            addCriterion("id not between", value1, value2, "id");
+            return (Criteria) this;
+        }
+
+        public Criteria andAgentDiscountCodeIdIsNull() {
+            addCriterion("agent_discount_code_id is null");
+            return (Criteria) this;
+        }
+
+        public Criteria andAgentDiscountCodeIdIsNotNull() {
+            addCriterion("agent_discount_code_id is not null");
+            return (Criteria) this;
+        }
+
+        public Criteria andAgentDiscountCodeIdEqualTo(Long value) {
+            addCriterion("agent_discount_code_id =", value, "agentDiscountCodeId");
+            return (Criteria) this;
+        }
+
+        public Criteria andAgentDiscountCodeIdNotEqualTo(Long value) {
+            addCriterion("agent_discount_code_id <>", value, "agentDiscountCodeId");
+            return (Criteria) this;
+        }
+
+        public Criteria andAgentDiscountCodeIdGreaterThan(Long value) {
+            addCriterion("agent_discount_code_id >", value, "agentDiscountCodeId");
+            return (Criteria) this;
+        }
+
+        public Criteria andAgentDiscountCodeIdGreaterThanOrEqualTo(Long value) {
+            addCriterion("agent_discount_code_id >=", value, "agentDiscountCodeId");
+            return (Criteria) this;
+        }
+
+        public Criteria andAgentDiscountCodeIdLessThan(Long value) {
+            addCriterion("agent_discount_code_id <", value, "agentDiscountCodeId");
+            return (Criteria) this;
+        }
+
+        public Criteria andAgentDiscountCodeIdLessThanOrEqualTo(Long value) {
+            addCriterion("agent_discount_code_id <=", value, "agentDiscountCodeId");
+            return (Criteria) this;
+        }
+
+        public Criteria andAgentDiscountCodeIdIn(List<Long> values) {
+            addCriterion("agent_discount_code_id in", values, "agentDiscountCodeId");
+            return (Criteria) this;
+        }
+
+        public Criteria andAgentDiscountCodeIdNotIn(List<Long> values) {
+            addCriterion("agent_discount_code_id not in", values, "agentDiscountCodeId");
+            return (Criteria) this;
+        }
+
+        public Criteria andAgentDiscountCodeIdBetween(Long value1, Long value2) {
+            addCriterion("agent_discount_code_id between", value1, value2, "agentDiscountCodeId");
+            return (Criteria) this;
+        }
+
+        public Criteria andAgentDiscountCodeIdNotBetween(Long value1, Long value2) {
+            addCriterion("agent_discount_code_id not between", value1, value2, "agentDiscountCodeId");
+            return (Criteria) this;
+        }
+
+        public Criteria andDiscountPackageIdIsNull() {
+            addCriterion("discount_package_id is null");
+            return (Criteria) this;
+        }
+
+        public Criteria andDiscountPackageIdIsNotNull() {
+            addCriterion("discount_package_id is not null");
+            return (Criteria) this;
+        }
+
+        public Criteria andDiscountPackageIdEqualTo(Integer value) {
+            addCriterion("discount_package_id =", value, "discountPackageId");
+            return (Criteria) this;
+        }
+
+        public Criteria andDiscountPackageIdNotEqualTo(Integer value) {
+            addCriterion("discount_package_id <>", value, "discountPackageId");
+            return (Criteria) this;
+        }
+
+        public Criteria andDiscountPackageIdGreaterThan(Integer value) {
+            addCriterion("discount_package_id >", value, "discountPackageId");
+            return (Criteria) this;
+        }
+
+        public Criteria andDiscountPackageIdGreaterThanOrEqualTo(Integer value) {
+            addCriterion("discount_package_id >=", value, "discountPackageId");
+            return (Criteria) this;
+        }
+
+        public Criteria andDiscountPackageIdLessThan(Integer value) {
+            addCriterion("discount_package_id <", value, "discountPackageId");
+            return (Criteria) this;
+        }
+
+        public Criteria andDiscountPackageIdLessThanOrEqualTo(Integer value) {
+            addCriterion("discount_package_id <=", value, "discountPackageId");
+            return (Criteria) this;
+        }
+
+        public Criteria andDiscountPackageIdIn(List<Integer> values) {
+            addCriterion("discount_package_id in", values, "discountPackageId");
+            return (Criteria) this;
+        }
+
+        public Criteria andDiscountPackageIdNotIn(List<Integer> values) {
+            addCriterion("discount_package_id not in", values, "discountPackageId");
+            return (Criteria) this;
+        }
+
+        public Criteria andDiscountPackageIdBetween(Integer value1, Integer value2) {
+            addCriterion("discount_package_id between", value1, value2, "discountPackageId");
+            return (Criteria) this;
+        }
+
+        public Criteria andDiscountPackageIdNotBetween(Integer value1, Integer value2) {
+            addCriterion("discount_package_id not between", value1, value2, "discountPackageId");
+            return (Criteria) this;
+        }
+
+        public Criteria andDiscountPackageActualIdIsNull() {
+            addCriterion("discount_package_actual_id is null");
+            return (Criteria) this;
+        }
+
+        public Criteria andDiscountPackageActualIdIsNotNull() {
+            addCriterion("discount_package_actual_id is not null");
+            return (Criteria) this;
+        }
+
+        public Criteria andDiscountPackageActualIdEqualTo(Integer value) {
+            addCriterion("discount_package_actual_id =", value, "discountPackageActualId");
+            return (Criteria) this;
+        }
+
+        public Criteria andDiscountPackageActualIdNotEqualTo(Integer value) {
+            addCriterion("discount_package_actual_id <>", value, "discountPackageActualId");
+            return (Criteria) this;
+        }
+
+        public Criteria andDiscountPackageActualIdGreaterThan(Integer value) {
+            addCriterion("discount_package_actual_id >", value, "discountPackageActualId");
+            return (Criteria) this;
+        }
+
+        public Criteria andDiscountPackageActualIdGreaterThanOrEqualTo(Integer value) {
+            addCriterion("discount_package_actual_id >=", value, "discountPackageActualId");
+            return (Criteria) this;
+        }
+
+        public Criteria andDiscountPackageActualIdLessThan(Integer value) {
+            addCriterion("discount_package_actual_id <", value, "discountPackageActualId");
+            return (Criteria) this;
+        }
+
+        public Criteria andDiscountPackageActualIdLessThanOrEqualTo(Integer value) {
+            addCriterion("discount_package_actual_id <=", value, "discountPackageActualId");
+            return (Criteria) this;
+        }
+
+        public Criteria andDiscountPackageActualIdIn(List<Integer> values) {
+            addCriterion("discount_package_actual_id in", values, "discountPackageActualId");
+            return (Criteria) this;
+        }
+
+        public Criteria andDiscountPackageActualIdNotIn(List<Integer> values) {
+            addCriterion("discount_package_actual_id not in", values, "discountPackageActualId");
+            return (Criteria) this;
+        }
+
+        public Criteria andDiscountPackageActualIdBetween(Integer value1, Integer value2) {
+            addCriterion("discount_package_actual_id between", value1, value2, "discountPackageActualId");
+            return (Criteria) this;
+        }
+
+        public Criteria andDiscountPackageActualIdNotBetween(Integer value1, Integer value2) {
+            addCriterion("discount_package_actual_id not between", value1, value2, "discountPackageActualId");
+            return (Criteria) this;
+        }
+
+        public Criteria andCreatedUserIdIsNull() {
+            addCriterion("created_user_id is null");
+            return (Criteria) this;
+        }
+
+        public Criteria andCreatedUserIdIsNotNull() {
+            addCriterion("created_user_id is not null");
+            return (Criteria) this;
+        }
+
+        public Criteria andCreatedUserIdEqualTo(Integer value) {
+            addCriterion("created_user_id =", value, "createdUserId");
+            return (Criteria) this;
+        }
+
+        public Criteria andCreatedUserIdNotEqualTo(Integer value) {
+            addCriterion("created_user_id <>", value, "createdUserId");
+            return (Criteria) this;
+        }
+
+        public Criteria andCreatedUserIdGreaterThan(Integer value) {
+            addCriterion("created_user_id >", value, "createdUserId");
+            return (Criteria) this;
+        }
+
+        public Criteria andCreatedUserIdGreaterThanOrEqualTo(Integer value) {
+            addCriterion("created_user_id >=", value, "createdUserId");
+            return (Criteria) this;
+        }
+
+        public Criteria andCreatedUserIdLessThan(Integer value) {
+            addCriterion("created_user_id <", value, "createdUserId");
+            return (Criteria) this;
+        }
+
+        public Criteria andCreatedUserIdLessThanOrEqualTo(Integer value) {
+            addCriterion("created_user_id <=", value, "createdUserId");
+            return (Criteria) this;
+        }
+
+        public Criteria andCreatedUserIdIn(List<Integer> values) {
+            addCriterion("created_user_id in", values, "createdUserId");
+            return (Criteria) this;
+        }
+
+        public Criteria andCreatedUserIdNotIn(List<Integer> values) {
+            addCriterion("created_user_id not in", values, "createdUserId");
+            return (Criteria) this;
+        }
+
+        public Criteria andCreatedUserIdBetween(Integer value1, Integer value2) {
+            addCriterion("created_user_id between", value1, value2, "createdUserId");
+            return (Criteria) this;
+        }
+
+        public Criteria andCreatedUserIdNotBetween(Integer value1, Integer value2) {
+            addCriterion("created_user_id not between", value1, value2, "createdUserId");
+            return (Criteria) this;
+        }
+
+        public Criteria andCreatedTimeIsNull() {
+            addCriterion("created_time is null");
+            return (Criteria) this;
+        }
+
+        public Criteria andCreatedTimeIsNotNull() {
+            addCriterion("created_time is not null");
+            return (Criteria) this;
+        }
+
+        public Criteria andCreatedTimeEqualTo(Date value) {
+            addCriterion("created_time =", value, "createdTime");
+            return (Criteria) this;
+        }
+
+        public Criteria andCreatedTimeNotEqualTo(Date value) {
+            addCriterion("created_time <>", value, "createdTime");
+            return (Criteria) this;
+        }
+
+        public Criteria andCreatedTimeGreaterThan(Date value) {
+            addCriterion("created_time >", value, "createdTime");
+            return (Criteria) this;
+        }
+
+        public Criteria andCreatedTimeGreaterThanOrEqualTo(Date value) {
+            addCriterion("created_time >=", value, "createdTime");
+            return (Criteria) this;
+        }
+
+        public Criteria andCreatedTimeLessThan(Date value) {
+            addCriterion("created_time <", value, "createdTime");
+            return (Criteria) this;
+        }
+
+        public Criteria andCreatedTimeLessThanOrEqualTo(Date value) {
+            addCriterion("created_time <=", value, "createdTime");
+            return (Criteria) this;
+        }
+
+        public Criteria andCreatedTimeIn(List<Date> values) {
+            addCriterion("created_time in", values, "createdTime");
+            return (Criteria) this;
+        }
+
+        public Criteria andCreatedTimeNotIn(List<Date> values) {
+            addCriterion("created_time not in", values, "createdTime");
+            return (Criteria) this;
+        }
+
+        public Criteria andCreatedTimeBetween(Date value1, Date value2) {
+            addCriterion("created_time between", value1, value2, "createdTime");
+            return (Criteria) this;
+        }
+
+        public Criteria andCreatedTimeNotBetween(Date value1, Date value2) {
+            addCriterion("created_time not between", value1, value2, "createdTime");
+            return (Criteria) this;
+        }
+
+        public Criteria andStatusIsNull() {
+            addCriterion("`status` is null");
+            return (Criteria) this;
+        }
+
+        public Criteria andStatusIsNotNull() {
+            addCriterion("`status` is not null");
+            return (Criteria) this;
+        }
+
+        public Criteria andStatusEqualTo(Integer value) {
+            addCriterion("`status` =", value, "status");
+            return (Criteria) this;
+        }
+
+        public Criteria andStatusNotEqualTo(Integer value) {
+            addCriterion("`status` <>", value, "status");
+            return (Criteria) this;
+        }
+
+        public Criteria andStatusGreaterThan(Integer value) {
+            addCriterion("`status` >", value, "status");
+            return (Criteria) this;
+        }
+
+        public Criteria andStatusGreaterThanOrEqualTo(Integer value) {
+            addCriterion("`status` >=", value, "status");
+            return (Criteria) this;
+        }
+
+        public Criteria andStatusLessThan(Integer value) {
+            addCriterion("`status` <", value, "status");
+            return (Criteria) this;
+        }
+
+        public Criteria andStatusLessThanOrEqualTo(Integer value) {
+            addCriterion("`status` <=", value, "status");
+            return (Criteria) this;
+        }
+
+        public Criteria andStatusIn(List<Integer> values) {
+            addCriterion("`status` in", values, "status");
+            return (Criteria) this;
+        }
+
+        public Criteria andStatusNotIn(List<Integer> values) {
+            addCriterion("`status` not in", values, "status");
+            return (Criteria) this;
+        }
+
+        public Criteria andStatusBetween(Integer value1, Integer value2) {
+            addCriterion("`status` between", value1, value2, "status");
+            return (Criteria) this;
+        }
+
+        public Criteria andStatusNotBetween(Integer value1, Integer value2) {
+            addCriterion("`status` not between", value1, value2, "status");
+            return (Criteria) this;
+        }
+
+        public Criteria andExt1IsNull() {
+            addCriterion("ext_1 is null");
+            return (Criteria) this;
+        }
+
+        public Criteria andExt1IsNotNull() {
+            addCriterion("ext_1 is not null");
+            return (Criteria) this;
+        }
+
+        public Criteria andExt1EqualTo(String value) {
+            addCriterion("ext_1 =", value, "ext1");
+            return (Criteria) this;
+        }
+
+        public Criteria andExt1NotEqualTo(String value) {
+            addCriterion("ext_1 <>", value, "ext1");
+            return (Criteria) this;
+        }
+
+        public Criteria andExt1GreaterThan(String value) {
+            addCriterion("ext_1 >", value, "ext1");
+            return (Criteria) this;
+        }
+
+        public Criteria andExt1GreaterThanOrEqualTo(String value) {
+            addCriterion("ext_1 >=", value, "ext1");
+            return (Criteria) this;
+        }
+
+        public Criteria andExt1LessThan(String value) {
+            addCriterion("ext_1 <", value, "ext1");
+            return (Criteria) this;
+        }
+
+        public Criteria andExt1LessThanOrEqualTo(String value) {
+            addCriterion("ext_1 <=", value, "ext1");
+            return (Criteria) this;
+        }
+
+        public Criteria andExt1Like(String value) {
+            addCriterion("ext_1 like", value, "ext1");
+            return (Criteria) this;
+        }
+
+        public Criteria andExt1NotLike(String value) {
+            addCriterion("ext_1 not like", value, "ext1");
+            return (Criteria) this;
+        }
+
+        public Criteria andExt1In(List<String> values) {
+            addCriterion("ext_1 in", values, "ext1");
+            return (Criteria) this;
+        }
+
+        public Criteria andExt1NotIn(List<String> values) {
+            addCriterion("ext_1 not in", values, "ext1");
+            return (Criteria) this;
+        }
+
+        public Criteria andExt1Between(String value1, String value2) {
+            addCriterion("ext_1 between", value1, value2, "ext1");
+            return (Criteria) this;
+        }
+
+        public Criteria andExt1NotBetween(String value1, String value2) {
+            addCriterion("ext_1 not between", value1, value2, "ext1");
+            return (Criteria) this;
+        }
+
+        public Criteria andExt2IsNull() {
+            addCriterion("ext_2 is null");
+            return (Criteria) this;
+        }
+
+        public Criteria andExt2IsNotNull() {
+            addCriterion("ext_2 is not null");
+            return (Criteria) this;
+        }
+
+        public Criteria andExt2EqualTo(String value) {
+            addCriterion("ext_2 =", value, "ext2");
+            return (Criteria) this;
+        }
+
+        public Criteria andExt2NotEqualTo(String value) {
+            addCriterion("ext_2 <>", value, "ext2");
+            return (Criteria) this;
+        }
+
+        public Criteria andExt2GreaterThan(String value) {
+            addCriterion("ext_2 >", value, "ext2");
+            return (Criteria) this;
+        }
+
+        public Criteria andExt2GreaterThanOrEqualTo(String value) {
+            addCriterion("ext_2 >=", value, "ext2");
+            return (Criteria) this;
+        }
+
+        public Criteria andExt2LessThan(String value) {
+            addCriterion("ext_2 <", value, "ext2");
+            return (Criteria) this;
+        }
+
+        public Criteria andExt2LessThanOrEqualTo(String value) {
+            addCriterion("ext_2 <=", value, "ext2");
+            return (Criteria) this;
+        }
+
+        public Criteria andExt2Like(String value) {
+            addCriterion("ext_2 like", value, "ext2");
+            return (Criteria) this;
+        }
+
+        public Criteria andExt2NotLike(String value) {
+            addCriterion("ext_2 not like", value, "ext2");
+            return (Criteria) this;
+        }
+
+        public Criteria andExt2In(List<String> values) {
+            addCriterion("ext_2 in", values, "ext2");
+            return (Criteria) this;
+        }
+
+        public Criteria andExt2NotIn(List<String> values) {
+            addCriterion("ext_2 not in", values, "ext2");
+            return (Criteria) this;
+        }
+
+        public Criteria andExt2Between(String value1, String value2) {
+            addCriterion("ext_2 between", value1, value2, "ext2");
+            return (Criteria) this;
+        }
+
+        public Criteria andExt2NotBetween(String value1, String value2) {
+            addCriterion("ext_2 not between", value1, value2, "ext2");
+            return (Criteria) this;
+        }
+
+        public Criteria andExt3IsNull() {
+            addCriterion("ext_3 is null");
+            return (Criteria) this;
+        }
+
+        public Criteria andExt3IsNotNull() {
+            addCriterion("ext_3 is not null");
+            return (Criteria) this;
+        }
+
+        public Criteria andExt3EqualTo(String value) {
+            addCriterion("ext_3 =", value, "ext3");
+            return (Criteria) this;
+        }
+
+        public Criteria andExt3NotEqualTo(String value) {
+            addCriterion("ext_3 <>", value, "ext3");
+            return (Criteria) this;
+        }
+
+        public Criteria andExt3GreaterThan(String value) {
+            addCriterion("ext_3 >", value, "ext3");
+            return (Criteria) this;
+        }
+
+        public Criteria andExt3GreaterThanOrEqualTo(String value) {
+            addCriterion("ext_3 >=", value, "ext3");
+            return (Criteria) this;
+        }
+
+        public Criteria andExt3LessThan(String value) {
+            addCriterion("ext_3 <", value, "ext3");
+            return (Criteria) this;
+        }
+
+        public Criteria andExt3LessThanOrEqualTo(String value) {
+            addCriterion("ext_3 <=", value, "ext3");
+            return (Criteria) this;
+        }
+
+        public Criteria andExt3Like(String value) {
+            addCriterion("ext_3 like", value, "ext3");
+            return (Criteria) this;
+        }
+
+        public Criteria andExt3NotLike(String value) {
+            addCriterion("ext_3 not like", value, "ext3");
+            return (Criteria) this;
+        }
+
+        public Criteria andExt3In(List<String> values) {
+            addCriterion("ext_3 in", values, "ext3");
+            return (Criteria) this;
+        }
+
+        public Criteria andExt3NotIn(List<String> values) {
+            addCriterion("ext_3 not in", values, "ext3");
+            return (Criteria) this;
+        }
+
+        public Criteria andExt3Between(String value1, String value2) {
+            addCriterion("ext_3 between", value1, value2, "ext3");
+            return (Criteria) this;
+        }
+
+        public Criteria andExt3NotBetween(String value1, String value2) {
+            addCriterion("ext_3 not between", value1, value2, "ext3");
+            return (Criteria) this;
+        }
+    }
+
+    /**
+     */
+    public static class Criteria extends GeneratedCriteria {
+
+        protected Criteria() {
+            super();
+        }
+    }
+
+    public static class Criterion {
+        private String condition;
+
+        private Object value;
+
+        private Object secondValue;
+
+        private boolean noValue;
+
+        private boolean singleValue;
+
+        private boolean betweenValue;
+
+        private boolean listValue;
+
+        private String typeHandler;
+
+        public String getCondition() {
+            return condition;
+        }
+
+        public Object getValue() {
+            return value;
+        }
+
+        public Object getSecondValue() {
+            return secondValue;
+        }
+
+        public boolean isNoValue() {
+            return noValue;
+        }
+
+        public boolean isSingleValue() {
+            return singleValue;
+        }
+
+        public boolean isBetweenValue() {
+            return betweenValue;
+        }
+
+        public boolean isListValue() {
+            return listValue;
+        }
+
+        public String getTypeHandler() {
+            return typeHandler;
+        }
+
+        protected Criterion(String condition) {
+            super();
+            this.condition = condition;
+            this.typeHandler = null;
+            this.noValue = true;
+        }
+
+        protected Criterion(String condition, Object value, String typeHandler) {
+            super();
+            this.condition = condition;
+            this.value = value;
+            this.typeHandler = typeHandler;
+            if (value instanceof List<?>) {
+                this.listValue = true;
+            } else {
+                this.singleValue = true;
+            }
+        }
+
+        protected Criterion(String condition, Object value) {
+            this(condition, value, null);
+        }
+
+        protected Criterion(String condition, Object value, Object secondValue, String typeHandler) {
+            super();
+            this.condition = condition;
+            this.value = value;
+            this.secondValue = secondValue;
+            this.typeHandler = typeHandler;
+            this.betweenValue = true;
+        }
+
+        protected Criterion(String condition, Object value, Object secondValue) {
+            this(condition, value, secondValue, null);
+        }
+    }
+}
\ No newline at end of file