Browse Source

客服消息,只能消息

lijilei 3 years ago
parent
commit
fb76424222
33 changed files with 8483 additions and 112 deletions
  1. 632 0
      book-dao/src/main/java/com/book/dao/cps/entity/CustomMediaPush.java
  2. 678 0
      book-dao/src/main/java/com/book/dao/cps/entity/CustomUrl.java
  3. 204 0
      book-dao/src/main/java/com/book/dao/cps/mapper/CustomMediaPushMapper.java
  4. 164 0
      book-dao/src/main/java/com/book/dao/cps/mapper/CustomUrlMapper.java
  5. 1791 0
      book-dao/src/main/java/com/book/dao/cps/pojo/example/CustomMediaPushExample.java
  6. 2371 0
      book-dao/src/main/java/com/book/dao/cps/pojo/example/CustomUrlExample.java
  7. 1095 0
      book-dao/src/main/resources/mapper/cps/CustomMediaPushMapper.xml
  8. 1006 0
      book-dao/src/main/resources/mapper/cps/CustomUrlMapper.xml
  9. 8 8
      book-dao/src/main/resources/mapper/cps/UserMapper.xml
  10. 4 1
      book-dao/src/main/resources/mybatis-generator.xml
  11. 1 1
      book-dao/src/main/resources/polar-mybatis-generator.xml
  12. 4 4
      book-dao/src/main/resources/shard-mybatis-generator.xml
  13. 2 2
      book-push/src/main/java/com/book/push/Application.java
  14. 0 22
      book-push/src/main/java/com/book/push/action/PushAction.java
  15. 26 22
      book-push/src/main/java/com/book/push/config/KeyExpiredListener.java
  16. 1 7
      book-push/src/main/java/com/book/push/handler/MenuHandler.java
  17. 28 12
      book-push/src/main/java/com/book/push/handler/MsgHandler.java
  18. 19 8
      book-push/src/main/java/com/book/push/handler/SubscribeHandler.java
  19. 14 0
      book-push/src/main/java/com/book/push/service/dao/CustomMediaPushService.java
  20. 17 0
      book-push/src/main/java/com/book/push/service/dao/CustomUrlService.java
  21. 2 0
      book-push/src/main/java/com/book/push/service/dao/OrdersService.java
  22. 3 0
      book-push/src/main/java/com/book/push/service/dao/UserRecentReadService.java
  23. 25 0
      book-push/src/main/java/com/book/push/service/dao/impl/CustomMediaPushServiceIml.java
  24. 32 0
      book-push/src/main/java/com/book/push/service/dao/impl/CustomUrlServiceImpl.java
  25. 5 0
      book-push/src/main/java/com/book/push/service/dao/impl/OrdersServiceImpl.java
  26. 5 0
      book-push/src/main/java/com/book/push/service/dao/impl/UserRecentReadServiceImpl.java
  27. 32 0
      book-push/src/main/java/com/book/push/service/push/IntellectPushService.java
  28. 246 0
      book-push/src/main/java/com/book/push/service/push/impl/IntellectPushServiceImpl.java
  29. 1 1
      book-push/src/main/java/com/book/push/service/redis/impl/Subscriber.java
  30. 2 2
      book-push/src/main/java/com/book/push/task/CacheTask.java
  31. 62 19
      book-push/src/main/java/com/book/push/task/KefuTask.java
  32. 1 1
      book-push/src/main/java/com/book/push/task/NoSignTask.java
  33. 2 2
      book-push/src/main/resources/log4j2.xml

+ 632 - 0
book-dao/src/main/java/com/book/dao/cps/entity/CustomMediaPush.java

@@ -0,0 +1,632 @@
+package com.book.dao.cps.entity;
+
+import java.io.Serializable;
+import java.util.ArrayList;
+import java.util.Arrays;
+import lombok.Data;
+
+@Data
+public class CustomMediaPush implements Serializable {
+    /**
+     *
+     * This field was generated by MyBatis Generator.
+     * This field corresponds to the database column custom_media_push.id
+     *
+     * @mbg.generated Wed Sep 08 15:22:38 CST 2021
+     */
+    private Integer id;
+
+    /**
+     *
+     * This field was generated by MyBatis Generator.
+     * This field corresponds to the database column custom_media_push.custom_media_id
+     *
+     * @mbg.generated Wed Sep 08 15:22:38 CST 2021
+     */
+    private Integer customMediaId;
+
+    /**
+     *
+     * This field was generated by MyBatis Generator.
+     * This field corresponds to the database column custom_media_push.created_admin_id
+     *
+     * @mbg.generated Wed Sep 08 15:22:38 CST 2021
+     */
+    private Integer createdAdminId;
+
+    /**
+     *
+     * This field was generated by MyBatis Generator.
+     * This field corresponds to the database column custom_media_push.message_type
+     *
+     * @mbg.generated Wed Sep 08 15:22:38 CST 2021
+     */
+    private String messageType;
+
+    /**
+     *
+     * This field was generated by MyBatis Generator.
+     * This field corresponds to the database column custom_media_push.official_account_type
+     *
+     * @mbg.generated Wed Sep 08 15:22:38 CST 2021
+     */
+    private String officialAccountType;
+
+    /**
+     *
+     * This field was generated by MyBatis Generator.
+     * This field corresponds to the database column custom_media_push.official_account_subscribe_ids
+     *
+     * @mbg.generated Wed Sep 08 15:22:38 CST 2021
+     */
+    private String officialAccountSubscribeIds;
+
+    /**
+     *
+     * This field was generated by MyBatis Generator.
+     * This field corresponds to the database column custom_media_push.sendtime
+     *
+     * @mbg.generated Wed Sep 08 15:22:38 CST 2021
+     */
+    private Integer sendtime;
+
+    /**
+     *
+     * This field was generated by MyBatis Generator.
+     * This field corresponds to the database column custom_media_push.status
+     *
+     * @mbg.generated Wed Sep 08 15:22:38 CST 2021
+     */
+    private String status;
+
+    /**
+     *
+     * This field was generated by MyBatis Generator.
+     * This field corresponds to the database column custom_media_push.created_from
+     *
+     * @mbg.generated Wed Sep 08 15:22:38 CST 2021
+     */
+    private String createdFrom;
+
+    /**
+     *
+     * This field was generated by MyBatis Generator.
+     * This field corresponds to the database column custom_media_push.createtime
+     *
+     * @mbg.generated Wed Sep 08 15:22:38 CST 2021
+     */
+    private Integer createtime;
+
+    /**
+     *
+     * This field was generated by MyBatis Generator.
+     * This field corresponds to the database column custom_media_push.updatetime
+     *
+     * @mbg.generated Wed Sep 08 15:22:38 CST 2021
+     */
+    private Integer updatetime;
+
+    /**
+     *
+     * This field was generated by MyBatis Generator.
+     * This field corresponds to the database column custom_media_push.select_type
+     *
+     * @mbg.generated Wed Sep 08 15:22:38 CST 2021
+     */
+    private Byte selectType;
+
+    /**
+     *
+     * This field was generated by MyBatis Generator.
+     * This field corresponds to the database column custom_media_push.group_id
+     *
+     * @mbg.generated Wed Sep 08 15:22:38 CST 2021
+     */
+    private String groupId;
+
+    /**
+     *
+     * This field was generated by MyBatis Generator.
+     * This field corresponds to the database column custom_media_push.message_json
+     *
+     * @mbg.generated Wed Sep 08 15:22:38 CST 2021
+     */
+    private String messageJson;
+
+    /**
+     *
+     * This field was generated by MyBatis Generator.
+     * This field corresponds to the database column custom_media_push.message_text
+     *
+     * @mbg.generated Wed Sep 08 15:22:38 CST 2021
+     */
+    private String messageText;
+
+    /**
+     *
+     * This field was generated by MyBatis Generator.
+     * This field corresponds to the database column custom_media_push.official_account_service_ids
+     *
+     * @mbg.generated Wed Sep 08 15:22:38 CST 2021
+     */
+    private String officialAccountServiceIds;
+
+    /**
+     *
+     * This field was generated by MyBatis Generator.
+     * This field corresponds to the database column custom_media_push.user_json
+     *
+     * @mbg.generated Wed Sep 08 15:22:38 CST 2021
+     */
+    private String userJson;
+
+    /**
+     * This field was generated by MyBatis Generator.
+     * This field corresponds to the database table custom_media_push
+     *
+     * @mbg.generated Wed Sep 08 15:22:38 CST 2021
+     */
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * This method was generated by MyBatis Generator.
+     * This method corresponds to the database table custom_media_push
+     *
+     * @mbg.generated Wed Sep 08 15:22:38 CST 2021
+     */
+    public static CustomMediaPush.Builder builder() {
+        return new CustomMediaPush.Builder();
+    }
+
+    /**
+     * This class was generated by MyBatis Generator.
+     * This class corresponds to the database table custom_media_push
+     *
+     * @mbg.generated Wed Sep 08 15:22:38 CST 2021
+     */
+    public static class Builder {
+        /**
+         * This field was generated by MyBatis Generator.
+         * This field corresponds to the database table custom_media_push
+         *
+         * @mbg.generated Wed Sep 08 15:22:38 CST 2021
+         */
+        private CustomMediaPush obj;
+
+        /**
+         * This method was generated by MyBatis Generator.
+         * This method corresponds to the database table custom_media_push
+         *
+         * @mbg.generated Wed Sep 08 15:22:38 CST 2021
+         */
+        public Builder() {
+            this.obj = new CustomMediaPush();
+        }
+
+        /**
+         * This method was generated by MyBatis Generator.
+         * This method sets the value of the database column custom_media_push.id
+         *
+         * @param id the value for custom_media_push.id
+         *
+         * @mbg.generated Wed Sep 08 15:22:38 CST 2021
+         */
+        public Builder id(Integer id) {
+            obj.setId(id);
+            return this;
+        }
+
+        /**
+         * This method was generated by MyBatis Generator.
+         * This method sets the value of the database column custom_media_push.custom_media_id
+         *
+         * @param customMediaId the value for custom_media_push.custom_media_id
+         *
+         * @mbg.generated Wed Sep 08 15:22:38 CST 2021
+         */
+        public Builder customMediaId(Integer customMediaId) {
+            obj.setCustomMediaId(customMediaId);
+            return this;
+        }
+
+        /**
+         * This method was generated by MyBatis Generator.
+         * This method sets the value of the database column custom_media_push.created_admin_id
+         *
+         * @param createdAdminId the value for custom_media_push.created_admin_id
+         *
+         * @mbg.generated Wed Sep 08 15:22:38 CST 2021
+         */
+        public Builder createdAdminId(Integer createdAdminId) {
+            obj.setCreatedAdminId(createdAdminId);
+            return this;
+        }
+
+        /**
+         * This method was generated by MyBatis Generator.
+         * This method sets the value of the database column custom_media_push.message_type
+         *
+         * @param messageType the value for custom_media_push.message_type
+         *
+         * @mbg.generated Wed Sep 08 15:22:38 CST 2021
+         */
+        public Builder messageType(String messageType) {
+            obj.setMessageType(messageType);
+            return this;
+        }
+
+        /**
+         * This method was generated by MyBatis Generator.
+         * This method sets the value of the database column custom_media_push.official_account_type
+         *
+         * @param officialAccountType the value for custom_media_push.official_account_type
+         *
+         * @mbg.generated Wed Sep 08 15:22:38 CST 2021
+         */
+        public Builder officialAccountType(String officialAccountType) {
+            obj.setOfficialAccountType(officialAccountType);
+            return this;
+        }
+
+        /**
+         * This method was generated by MyBatis Generator.
+         * This method sets the value of the database column custom_media_push.official_account_subscribe_ids
+         *
+         * @param officialAccountSubscribeIds the value for custom_media_push.official_account_subscribe_ids
+         *
+         * @mbg.generated Wed Sep 08 15:22:38 CST 2021
+         */
+        public Builder officialAccountSubscribeIds(String officialAccountSubscribeIds) {
+            obj.setOfficialAccountSubscribeIds(officialAccountSubscribeIds);
+            return this;
+        }
+
+        /**
+         * This method was generated by MyBatis Generator.
+         * This method sets the value of the database column custom_media_push.sendtime
+         *
+         * @param sendtime the value for custom_media_push.sendtime
+         *
+         * @mbg.generated Wed Sep 08 15:22:38 CST 2021
+         */
+        public Builder sendtime(Integer sendtime) {
+            obj.setSendtime(sendtime);
+            return this;
+        }
+
+        /**
+         * This method was generated by MyBatis Generator.
+         * This method sets the value of the database column custom_media_push.status
+         *
+         * @param status the value for custom_media_push.status
+         *
+         * @mbg.generated Wed Sep 08 15:22:38 CST 2021
+         */
+        public Builder status(String status) {
+            obj.setStatus(status);
+            return this;
+        }
+
+        /**
+         * This method was generated by MyBatis Generator.
+         * This method sets the value of the database column custom_media_push.created_from
+         *
+         * @param createdFrom the value for custom_media_push.created_from
+         *
+         * @mbg.generated Wed Sep 08 15:22:38 CST 2021
+         */
+        public Builder createdFrom(String createdFrom) {
+            obj.setCreatedFrom(createdFrom);
+            return this;
+        }
+
+        /**
+         * This method was generated by MyBatis Generator.
+         * This method sets the value of the database column custom_media_push.createtime
+         *
+         * @param createtime the value for custom_media_push.createtime
+         *
+         * @mbg.generated Wed Sep 08 15:22:38 CST 2021
+         */
+        public Builder createtime(Integer createtime) {
+            obj.setCreatetime(createtime);
+            return this;
+        }
+
+        /**
+         * This method was generated by MyBatis Generator.
+         * This method sets the value of the database column custom_media_push.updatetime
+         *
+         * @param updatetime the value for custom_media_push.updatetime
+         *
+         * @mbg.generated Wed Sep 08 15:22:38 CST 2021
+         */
+        public Builder updatetime(Integer updatetime) {
+            obj.setUpdatetime(updatetime);
+            return this;
+        }
+
+        /**
+         * This method was generated by MyBatis Generator.
+         * This method sets the value of the database column custom_media_push.select_type
+         *
+         * @param selectType the value for custom_media_push.select_type
+         *
+         * @mbg.generated Wed Sep 08 15:22:38 CST 2021
+         */
+        public Builder selectType(Byte selectType) {
+            obj.setSelectType(selectType);
+            return this;
+        }
+
+        /**
+         * This method was generated by MyBatis Generator.
+         * This method sets the value of the database column custom_media_push.group_id
+         *
+         * @param groupId the value for custom_media_push.group_id
+         *
+         * @mbg.generated Wed Sep 08 15:22:38 CST 2021
+         */
+        public Builder groupId(String groupId) {
+            obj.setGroupId(groupId);
+            return this;
+        }
+
+        /**
+         * This method was generated by MyBatis Generator.
+         * This method sets the value of the database column custom_media_push.message_json
+         *
+         * @param messageJson the value for custom_media_push.message_json
+         *
+         * @mbg.generated Wed Sep 08 15:22:38 CST 2021
+         */
+        public Builder messageJson(String messageJson) {
+            obj.setMessageJson(messageJson);
+            return this;
+        }
+
+        /**
+         * This method was generated by MyBatis Generator.
+         * This method sets the value of the database column custom_media_push.message_text
+         *
+         * @param messageText the value for custom_media_push.message_text
+         *
+         * @mbg.generated Wed Sep 08 15:22:38 CST 2021
+         */
+        public Builder messageText(String messageText) {
+            obj.setMessageText(messageText);
+            return this;
+        }
+
+        /**
+         * This method was generated by MyBatis Generator.
+         * This method sets the value of the database column custom_media_push.official_account_service_ids
+         *
+         * @param officialAccountServiceIds the value for custom_media_push.official_account_service_ids
+         *
+         * @mbg.generated Wed Sep 08 15:22:38 CST 2021
+         */
+        public Builder officialAccountServiceIds(String officialAccountServiceIds) {
+            obj.setOfficialAccountServiceIds(officialAccountServiceIds);
+            return this;
+        }
+
+        /**
+         * This method was generated by MyBatis Generator.
+         * This method sets the value of the database column custom_media_push.user_json
+         *
+         * @param userJson the value for custom_media_push.user_json
+         *
+         * @mbg.generated Wed Sep 08 15:22:38 CST 2021
+         */
+        public Builder userJson(String userJson) {
+            obj.setUserJson(userJson);
+            return this;
+        }
+
+        /**
+         * This method was generated by MyBatis Generator.
+         * This method corresponds to the database table custom_media_push
+         *
+         * @mbg.generated Wed Sep 08 15:22:38 CST 2021
+         */
+        public CustomMediaPush build() {
+            return this.obj;
+        }
+    }
+
+    /**
+     * This enum was generated by MyBatis Generator.
+     * This enum corresponds to the database table custom_media_push
+     *
+     * @mbg.generated Wed Sep 08 15:22:38 CST 2021
+     */
+    public enum Column {
+        id("id", "id", "INTEGER", false),
+        customMediaId("custom_media_id", "customMediaId", "INTEGER", false),
+        createdAdminId("created_admin_id", "createdAdminId", "INTEGER", false),
+        messageType("message_type", "messageType", "CHAR", false),
+        officialAccountType("official_account_type", "officialAccountType", "CHAR", false),
+        officialAccountSubscribeIds("official_account_subscribe_ids", "officialAccountSubscribeIds", "VARCHAR", false),
+        sendtime("sendtime", "sendtime", "INTEGER", false),
+        status("status", "status", "CHAR", false),
+        createdFrom("created_from", "createdFrom", "CHAR", false),
+        createtime("createtime", "createtime", "INTEGER", false),
+        updatetime("updatetime", "updatetime", "INTEGER", false),
+        selectType("select_type", "selectType", "TINYINT", false),
+        groupId("group_id", "groupId", "VARCHAR", false),
+        messageJson("message_json", "messageJson", "LONGVARCHAR", false),
+        messageText("message_text", "messageText", "LONGVARCHAR", false),
+        officialAccountServiceIds("official_account_service_ids", "officialAccountServiceIds", "LONGVARCHAR", false),
+        userJson("user_json", "userJson", "LONGVARCHAR", false);
+
+        /**
+         * This field was generated by MyBatis Generator.
+         * This field corresponds to the database table custom_media_push
+         *
+         * @mbg.generated Wed Sep 08 15:22:38 CST 2021
+         */
+        private static final String BEGINNING_DELIMITER = "\"";
+
+        /**
+         * This field was generated by MyBatis Generator.
+         * This field corresponds to the database table custom_media_push
+         *
+         * @mbg.generated Wed Sep 08 15:22:38 CST 2021
+         */
+        private static final String ENDING_DELIMITER = "\"";
+
+        /**
+         * This field was generated by MyBatis Generator.
+         * This field corresponds to the database table custom_media_push
+         *
+         * @mbg.generated Wed Sep 08 15:22:38 CST 2021
+         */
+        private final String column;
+
+        /**
+         * This field was generated by MyBatis Generator.
+         * This field corresponds to the database table custom_media_push
+         *
+         * @mbg.generated Wed Sep 08 15:22:38 CST 2021
+         */
+        private final boolean isColumnNameDelimited;
+
+        /**
+         * This field was generated by MyBatis Generator.
+         * This field corresponds to the database table custom_media_push
+         *
+         * @mbg.generated Wed Sep 08 15:22:38 CST 2021
+         */
+        private final String javaProperty;
+
+        /**
+         * This field was generated by MyBatis Generator.
+         * This field corresponds to the database table custom_media_push
+         *
+         * @mbg.generated Wed Sep 08 15:22:38 CST 2021
+         */
+        private final String jdbcType;
+
+        /**
+         * This method was generated by MyBatis Generator.
+         * This method corresponds to the database table custom_media_push
+         *
+         * @mbg.generated Wed Sep 08 15:22:38 CST 2021
+         */
+        public String value() {
+            return this.column;
+        }
+
+        /**
+         * This method was generated by MyBatis Generator.
+         * This method corresponds to the database table custom_media_push
+         *
+         * @mbg.generated Wed Sep 08 15:22:38 CST 2021
+         */
+        public String getValue() {
+            return this.column;
+        }
+
+        /**
+         * This method was generated by MyBatis Generator.
+         * This method corresponds to the database table custom_media_push
+         *
+         * @mbg.generated Wed Sep 08 15:22:38 CST 2021
+         */
+        public String getJavaProperty() {
+            return this.javaProperty;
+        }
+
+        /**
+         * This method was generated by MyBatis Generator.
+         * This method corresponds to the database table custom_media_push
+         *
+         * @mbg.generated Wed Sep 08 15:22:38 CST 2021
+         */
+        public String getJdbcType() {
+            return this.jdbcType;
+        }
+
+        /**
+         * This method was generated by MyBatis Generator.
+         * This method corresponds to the database table custom_media_push
+         *
+         * @mbg.generated Wed Sep 08 15:22:38 CST 2021
+         */
+        Column(String column, String javaProperty, String jdbcType, boolean isColumnNameDelimited) {
+            this.column = column;
+            this.javaProperty = javaProperty;
+            this.jdbcType = jdbcType;
+            this.isColumnNameDelimited = isColumnNameDelimited;
+        }
+
+        /**
+         * This method was generated by MyBatis Generator.
+         * This method corresponds to the database table custom_media_push
+         *
+         * @mbg.generated Wed Sep 08 15:22:38 CST 2021
+         */
+        public String desc() {
+            return this.getEscapedColumnName() + " DESC";
+        }
+
+        /**
+         * This method was generated by MyBatis Generator.
+         * This method corresponds to the database table custom_media_push
+         *
+         * @mbg.generated Wed Sep 08 15:22:38 CST 2021
+         */
+        public String asc() {
+            return this.getEscapedColumnName() + " ASC";
+        }
+
+        /**
+         * This method was generated by MyBatis Generator.
+         * This method corresponds to the database table custom_media_push
+         *
+         * @mbg.generated Wed Sep 08 15:22:38 CST 2021
+         */
+        public static Column[] excludes(Column ... excludes) {
+            ArrayList<Column> columns = new ArrayList<>(Arrays.asList(Column.values()));
+            if (excludes != null && excludes.length > 0) {
+                columns.removeAll(new ArrayList<>(Arrays.asList(excludes)));
+            }
+            return columns.toArray(new Column[]{});
+        }
+
+        /**
+         * This method was generated by MyBatis Generator.
+         * This method corresponds to the database table custom_media_push
+         *
+         * @mbg.generated Wed Sep 08 15:22:38 CST 2021
+         */
+        public static Column[] all() {
+            return Column.values();
+        }
+
+        /**
+         * This method was generated by MyBatis Generator.
+         * This method corresponds to the database table custom_media_push
+         *
+         * @mbg.generated Wed Sep 08 15:22:38 CST 2021
+         */
+        public String getEscapedColumnName() {
+            if (this.isColumnNameDelimited) {
+                return new StringBuilder().append(BEGINNING_DELIMITER).append(this.column).append(ENDING_DELIMITER).toString();
+            } else {
+                return this.column;
+            }
+        }
+
+        /**
+         * This method was generated by MyBatis Generator.
+         * This method corresponds to the database table custom_media_push
+         *
+         * @mbg.generated Wed Sep 08 15:22:38 CST 2021
+         */
+        public String getAliasedEscapedColumnName() {
+            return this.getEscapedColumnName();
+        }
+    }
+}

+ 678 - 0
book-dao/src/main/java/com/book/dao/cps/entity/CustomUrl.java

@@ -0,0 +1,678 @@
+package com.book.dao.cps.entity;
+
+import java.io.Serializable;
+import java.util.ArrayList;
+import java.util.Arrays;
+import lombok.Data;
+
+@Data
+public class CustomUrl implements Serializable {
+    /**
+     *
+     * This field was generated by MyBatis Generator.
+     * This field corresponds to the database column custom_url.id
+     *
+     * @mbg.generated Wed Sep 08 15:22:38 CST 2021
+     */
+    private Integer id;
+
+    /**
+     *
+     * This field was generated by MyBatis Generator.
+     * This field corresponds to the database column custom_url.custom_id
+     *
+     * @mbg.generated Wed Sep 08 15:22:38 CST 2021
+     */
+    private Integer customId;
+
+    /**
+     *
+     * This field was generated by MyBatis Generator.
+     * This field corresponds to the database column custom_url.idx
+     *
+     * @mbg.generated Wed Sep 08 15:22:38 CST 2021
+     */
+    private Byte idx;
+
+    /**
+     *
+     * This field was generated by MyBatis Generator.
+     * This field corresponds to the database column custom_url.custom_media_push_id
+     *
+     * @mbg.generated Wed Sep 08 15:22:38 CST 2021
+     */
+    private Integer customMediaPushId;
+
+    /**
+     *
+     * This field was generated by MyBatis Generator.
+     * This field corresponds to the database column custom_url.title
+     *
+     * @mbg.generated Wed Sep 08 15:22:38 CST 2021
+     */
+    private String title;
+
+    /**
+     *
+     * This field was generated by MyBatis Generator.
+     * This field corresponds to the database column custom_url.message_type
+     *
+     * @mbg.generated Wed Sep 08 15:22:38 CST 2021
+     */
+    private String messageType;
+
+    /**
+     *
+     * This field was generated by MyBatis Generator.
+     * This field corresponds to the database column custom_url.url
+     *
+     * @mbg.generated Wed Sep 08 15:22:38 CST 2021
+     */
+    private String url;
+
+    /**
+     *
+     * This field was generated by MyBatis Generator.
+     * This field corresponds to the database column custom_url.type
+     *
+     * @mbg.generated Wed Sep 08 15:22:38 CST 2021
+     */
+    private String type;
+
+    /**
+     *
+     * This field was generated by MyBatis Generator.
+     * This field corresponds to the database column custom_url.official_account_id
+     *
+     * @mbg.generated Wed Sep 08 15:22:38 CST 2021
+     */
+    private Integer officialAccountId;
+
+    /**
+     *
+     * This field was generated by MyBatis Generator.
+     * This field corresponds to the database column custom_url.official_account_type
+     *
+     * @mbg.generated Wed Sep 08 15:22:38 CST 2021
+     */
+    private String officialAccountType;
+
+    /**
+     *
+     * This field was generated by MyBatis Generator.
+     * This field corresponds to the database column custom_url.official_account_name
+     *
+     * @mbg.generated Wed Sep 08 15:22:38 CST 2021
+     */
+    private String officialAccountName;
+
+    /**
+     *
+     * This field was generated by MyBatis Generator.
+     * This field corresponds to the database column custom_url.push_type
+     *
+     * @mbg.generated Wed Sep 08 15:22:38 CST 2021
+     */
+    private String pushType;
+
+    /**
+     *
+     * This field was generated by MyBatis Generator.
+     * This field corresponds to the database column custom_url.book_id
+     *
+     * @mbg.generated Wed Sep 08 15:22:38 CST 2021
+     */
+    private Long bookId;
+
+    /**
+     *
+     * This field was generated by MyBatis Generator.
+     * This field corresponds to the database column custom_url.book_name
+     *
+     * @mbg.generated Wed Sep 08 15:22:38 CST 2021
+     */
+    private String bookName;
+
+    /**
+     *
+     * This field was generated by MyBatis Generator.
+     * This field corresponds to the database column custom_url.book_realname
+     *
+     * @mbg.generated Wed Sep 08 15:22:38 CST 2021
+     */
+    private String bookRealname;
+
+    /**
+     *
+     * This field was generated by MyBatis Generator.
+     * This field corresponds to the database column custom_url.sendtime
+     *
+     * @mbg.generated Wed Sep 08 15:22:38 CST 2021
+     */
+    private Integer sendtime;
+
+    /**
+     *
+     * This field was generated by MyBatis Generator.
+     * This field corresponds to the database column custom_url.sendstatus
+     *
+     * @mbg.generated Wed Sep 08 15:22:38 CST 2021
+     */
+    private String sendstatus;
+
+    /**
+     *
+     * This field was generated by MyBatis Generator.
+     * This field corresponds to the database column custom_url.createtime
+     *
+     * @mbg.generated Wed Sep 08 15:22:38 CST 2021
+     */
+    private Integer createtime;
+
+    /**
+     *
+     * This field was generated by MyBatis Generator.
+     * This field corresponds to the database column custom_url.updatetime
+     *
+     * @mbg.generated Wed Sep 08 15:22:38 CST 2021
+     */
+    private Integer updatetime;
+
+    /**
+     * This field was generated by MyBatis Generator.
+     * This field corresponds to the database table custom_url
+     *
+     * @mbg.generated Wed Sep 08 15:22:38 CST 2021
+     */
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * This method was generated by MyBatis Generator.
+     * This method corresponds to the database table custom_url
+     *
+     * @mbg.generated Wed Sep 08 15:22:38 CST 2021
+     */
+    public static CustomUrl.Builder builder() {
+        return new CustomUrl.Builder();
+    }
+
+    /**
+     * This class was generated by MyBatis Generator.
+     * This class corresponds to the database table custom_url
+     *
+     * @mbg.generated Wed Sep 08 15:22:38 CST 2021
+     */
+    public static class Builder {
+        /**
+         * This field was generated by MyBatis Generator.
+         * This field corresponds to the database table custom_url
+         *
+         * @mbg.generated Wed Sep 08 15:22:38 CST 2021
+         */
+        private CustomUrl obj;
+
+        /**
+         * This method was generated by MyBatis Generator.
+         * This method corresponds to the database table custom_url
+         *
+         * @mbg.generated Wed Sep 08 15:22:38 CST 2021
+         */
+        public Builder() {
+            this.obj = new CustomUrl();
+        }
+
+        /**
+         * This method was generated by MyBatis Generator.
+         * This method sets the value of the database column custom_url.id
+         *
+         * @param id the value for custom_url.id
+         *
+         * @mbg.generated Wed Sep 08 15:22:38 CST 2021
+         */
+        public Builder id(Integer id) {
+            obj.setId(id);
+            return this;
+        }
+
+        /**
+         * This method was generated by MyBatis Generator.
+         * This method sets the value of the database column custom_url.idx
+         *
+         * @param idx the value for custom_url.idx
+         *
+         * @mbg.generated Wed Sep 08 15:22:38 CST 2021
+         */
+        public Builder idx(Byte idx) {
+            obj.setIdx(idx);
+            return this;
+        }
+
+        /**
+         * This method was generated by MyBatis Generator.
+         * This method sets the value of the database column custom_url.custom_id
+         *
+         * @param customId the value for custom_url.custom_id
+         *
+         * @mbg.generated Wed Sep 08 15:22:38 CST 2021
+         */
+        public Builder customId(Integer customId) {
+            obj.setCustomId(customId);
+            return this;
+        }
+
+        /**
+         * This method was generated by MyBatis Generator.
+         * This method sets the value of the database column custom_url.custom_media_push_id
+         *
+         * @param customMediaPushId the value for custom_url.custom_media_push_id
+         *
+         * @mbg.generated Wed Sep 08 15:22:38 CST 2021
+         */
+        public Builder customMediaPushId(Integer customMediaPushId) {
+            obj.setCustomMediaPushId(customMediaPushId);
+            return this;
+        }
+
+        /**
+         * This method was generated by MyBatis Generator.
+         * This method sets the value of the database column custom_url.title
+         *
+         * @param title the value for custom_url.title
+         *
+         * @mbg.generated Wed Sep 08 15:22:38 CST 2021
+         */
+        public Builder title(String title) {
+            obj.setTitle(title);
+            return this;
+        }
+
+        /**
+         * This method was generated by MyBatis Generator.
+         * This method sets the value of the database column custom_url.message_type
+         *
+         * @param messageType the value for custom_url.message_type
+         *
+         * @mbg.generated Wed Sep 08 15:22:38 CST 2021
+         */
+        public Builder messageType(String messageType) {
+            obj.setMessageType(messageType);
+            return this;
+        }
+
+        /**
+         * This method was generated by MyBatis Generator.
+         * This method sets the value of the database column custom_url.url
+         *
+         * @param url the value for custom_url.url
+         *
+         * @mbg.generated Wed Sep 08 15:22:38 CST 2021
+         */
+        public Builder url(String url) {
+            obj.setUrl(url);
+            return this;
+        }
+
+        /**
+         * This method was generated by MyBatis Generator.
+         * This method sets the value of the database column custom_url.type
+         *
+         * @param type the value for custom_url.type
+         *
+         * @mbg.generated Wed Sep 08 15:22:38 CST 2021
+         */
+        public Builder type(String type) {
+            obj.setType(type);
+            return this;
+        }
+
+        /**
+         * This method was generated by MyBatis Generator.
+         * This method sets the value of the database column custom_url.official_account_id
+         *
+         * @param officialAccountId the value for custom_url.official_account_id
+         *
+         * @mbg.generated Wed Sep 08 15:22:38 CST 2021
+         */
+        public Builder officialAccountId(Integer officialAccountId) {
+            obj.setOfficialAccountId(officialAccountId);
+            return this;
+        }
+
+        /**
+         * This method was generated by MyBatis Generator.
+         * This method sets the value of the database column custom_url.official_account_type
+         *
+         * @param officialAccountType the value for custom_url.official_account_type
+         *
+         * @mbg.generated Wed Sep 08 15:22:38 CST 2021
+         */
+        public Builder officialAccountType(String officialAccountType) {
+            obj.setOfficialAccountType(officialAccountType);
+            return this;
+        }
+
+        /**
+         * This method was generated by MyBatis Generator.
+         * This method sets the value of the database column custom_url.official_account_name
+         *
+         * @param officialAccountName the value for custom_url.official_account_name
+         *
+         * @mbg.generated Wed Sep 08 15:22:38 CST 2021
+         */
+        public Builder officialAccountName(String officialAccountName) {
+            obj.setOfficialAccountName(officialAccountName);
+            return this;
+        }
+
+        /**
+         * This method was generated by MyBatis Generator.
+         * This method sets the value of the database column custom_url.push_type
+         *
+         * @param pushType the value for custom_url.push_type
+         *
+         * @mbg.generated Wed Sep 08 15:22:38 CST 2021
+         */
+        public Builder pushType(String pushType) {
+            obj.setPushType(pushType);
+            return this;
+        }
+
+        /**
+         * This method was generated by MyBatis Generator.
+         * This method sets the value of the database column custom_url.book_id
+         *
+         * @param bookId the value for custom_url.book_id
+         *
+         * @mbg.generated Wed Sep 08 15:22:38 CST 2021
+         */
+        public Builder bookId(Long bookId) {
+            obj.setBookId(bookId);
+            return this;
+        }
+
+        /**
+         * This method was generated by MyBatis Generator.
+         * This method sets the value of the database column custom_url.book_name
+         *
+         * @param bookName the value for custom_url.book_name
+         *
+         * @mbg.generated Wed Sep 08 15:22:38 CST 2021
+         */
+        public Builder bookName(String bookName) {
+            obj.setBookName(bookName);
+            return this;
+        }
+
+        /**
+         * This method was generated by MyBatis Generator.
+         * This method sets the value of the database column custom_url.book_realname
+         *
+         * @param bookRealname the value for custom_url.book_realname
+         *
+         * @mbg.generated Wed Sep 08 15:22:38 CST 2021
+         */
+        public Builder bookRealname(String bookRealname) {
+            obj.setBookRealname(bookRealname);
+            return this;
+        }
+
+        /**
+         * This method was generated by MyBatis Generator.
+         * This method sets the value of the database column custom_url.sendtime
+         *
+         * @param sendtime the value for custom_url.sendtime
+         *
+         * @mbg.generated Wed Sep 08 15:22:38 CST 2021
+         */
+        public Builder sendtime(Integer sendtime) {
+            obj.setSendtime(sendtime);
+            return this;
+        }
+
+        /**
+         * This method was generated by MyBatis Generator.
+         * This method sets the value of the database column custom_url.sendstatus
+         *
+         * @param sendstatus the value for custom_url.sendstatus
+         *
+         * @mbg.generated Wed Sep 08 15:22:38 CST 2021
+         */
+        public Builder sendstatus(String sendstatus) {
+            obj.setSendstatus(sendstatus);
+            return this;
+        }
+
+        /**
+         * This method was generated by MyBatis Generator.
+         * This method sets the value of the database column custom_url.createtime
+         *
+         * @param createtime the value for custom_url.createtime
+         *
+         * @mbg.generated Wed Sep 08 15:22:38 CST 2021
+         */
+        public Builder createtime(Integer createtime) {
+            obj.setCreatetime(createtime);
+            return this;
+        }
+
+        /**
+         * This method was generated by MyBatis Generator.
+         * This method sets the value of the database column custom_url.updatetime
+         *
+         * @param updatetime the value for custom_url.updatetime
+         *
+         * @mbg.generated Wed Sep 08 15:22:38 CST 2021
+         */
+        public Builder updatetime(Integer updatetime) {
+            obj.setUpdatetime(updatetime);
+            return this;
+        }
+
+        /**
+         * This method was generated by MyBatis Generator.
+         * This method corresponds to the database table custom_url
+         *
+         * @mbg.generated Wed Sep 08 15:22:38 CST 2021
+         */
+        public CustomUrl build() {
+            return this.obj;
+        }
+    }
+
+    /**
+     * This enum was generated by MyBatis Generator.
+     * This enum corresponds to the database table custom_url
+     *
+     * @mbg.generated Wed Sep 08 15:22:38 CST 2021
+     */
+    public enum Column {
+        id("id", "id", "INTEGER", false),
+        customId("custom_id", "customId", "INTEGER", false),
+        idx("idx", "idx", "TINYINT", false),
+        customMediaPushId("custom_media_push_id", "customMediaPushId", "INTEGER", false),
+        title("title", "title", "VARCHAR", false),
+        messageType("message_type", "messageType", "CHAR", false),
+        url("url", "url", "VARCHAR", false),
+        type("type", "type", "CHAR", false),
+        officialAccountId("official_account_id", "officialAccountId", "INTEGER", false),
+        officialAccountType("official_account_type", "officialAccountType", "CHAR", false),
+        officialAccountName("official_account_name", "officialAccountName", "VARCHAR", false),
+        pushType("push_type", "pushType", "CHAR", false),
+        bookId("book_id", "bookId", "BIGINT", false),
+        bookName("book_name", "bookName", "VARCHAR", false),
+        bookRealname("book_realname", "bookRealname", "VARCHAR", false),
+        sendtime("sendtime", "sendtime", "INTEGER", false),
+        sendstatus("sendstatus", "sendstatus", "CHAR", false),
+        createtime("createtime", "createtime", "INTEGER", false),
+        updatetime("updatetime", "updatetime", "INTEGER", false);
+
+        /**
+         * This field was generated by MyBatis Generator.
+         * This field corresponds to the database table custom_url
+         *
+         * @mbg.generated Wed Sep 08 15:22:38 CST 2021
+         */
+        private static final String BEGINNING_DELIMITER = "\"";
+
+        /**
+         * This field was generated by MyBatis Generator.
+         * This field corresponds to the database table custom_url
+         *
+         * @mbg.generated Wed Sep 08 15:22:38 CST 2021
+         */
+        private static final String ENDING_DELIMITER = "\"";
+
+        /**
+         * This field was generated by MyBatis Generator.
+         * This field corresponds to the database table custom_url
+         *
+         * @mbg.generated Wed Sep 08 15:22:38 CST 2021
+         */
+        private final String column;
+
+        /**
+         * This field was generated by MyBatis Generator.
+         * This field corresponds to the database table custom_url
+         *
+         * @mbg.generated Wed Sep 08 15:22:38 CST 2021
+         */
+        private final boolean isColumnNameDelimited;
+
+        /**
+         * This field was generated by MyBatis Generator.
+         * This field corresponds to the database table custom_url
+         *
+         * @mbg.generated Wed Sep 08 15:22:38 CST 2021
+         */
+        private final String javaProperty;
+
+        /**
+         * This field was generated by MyBatis Generator.
+         * This field corresponds to the database table custom_url
+         *
+         * @mbg.generated Wed Sep 08 15:22:38 CST 2021
+         */
+        private final String jdbcType;
+
+        /**
+         * This method was generated by MyBatis Generator.
+         * This method corresponds to the database table custom_url
+         *
+         * @mbg.generated Wed Sep 08 15:22:38 CST 2021
+         */
+        public String value() {
+            return this.column;
+        }
+
+        /**
+         * This method was generated by MyBatis Generator.
+         * This method corresponds to the database table custom_url
+         *
+         * @mbg.generated Wed Sep 08 15:22:38 CST 2021
+         */
+        public String getValue() {
+            return this.column;
+        }
+
+        /**
+         * This method was generated by MyBatis Generator.
+         * This method corresponds to the database table custom_url
+         *
+         * @mbg.generated Wed Sep 08 15:22:38 CST 2021
+         */
+        public String getJavaProperty() {
+            return this.javaProperty;
+        }
+
+        /**
+         * This method was generated by MyBatis Generator.
+         * This method corresponds to the database table custom_url
+         *
+         * @mbg.generated Wed Sep 08 15:22:38 CST 2021
+         */
+        public String getJdbcType() {
+            return this.jdbcType;
+        }
+
+        /**
+         * This method was generated by MyBatis Generator.
+         * This method corresponds to the database table custom_url
+         *
+         * @mbg.generated Wed Sep 08 15:22:38 CST 2021
+         */
+        Column(String column, String javaProperty, String jdbcType, boolean isColumnNameDelimited) {
+            this.column = column;
+            this.javaProperty = javaProperty;
+            this.jdbcType = jdbcType;
+            this.isColumnNameDelimited = isColumnNameDelimited;
+        }
+
+        /**
+         * This method was generated by MyBatis Generator.
+         * This method corresponds to the database table custom_url
+         *
+         * @mbg.generated Wed Sep 08 15:22:38 CST 2021
+         */
+        public String desc() {
+            return this.getEscapedColumnName() + " DESC";
+        }
+
+        /**
+         * This method was generated by MyBatis Generator.
+         * This method corresponds to the database table custom_url
+         *
+         * @mbg.generated Wed Sep 08 15:22:38 CST 2021
+         */
+        public String asc() {
+            return this.getEscapedColumnName() + " ASC";
+        }
+
+        /**
+         * This method was generated by MyBatis Generator.
+         * This method corresponds to the database table custom_url
+         *
+         * @mbg.generated Wed Sep 08 15:22:38 CST 2021
+         */
+        public static Column[] excludes(Column ... excludes) {
+            ArrayList<Column> columns = new ArrayList<>(Arrays.asList(Column.values()));
+            if (excludes != null && excludes.length > 0) {
+                columns.removeAll(new ArrayList<>(Arrays.asList(excludes)));
+            }
+            return columns.toArray(new Column[]{});
+        }
+
+        /**
+         * This method was generated by MyBatis Generator.
+         * This method corresponds to the database table custom_url
+         *
+         * @mbg.generated Wed Sep 08 15:22:38 CST 2021
+         */
+        public static Column[] all() {
+            return Column.values();
+        }
+
+        /**
+         * This method was generated by MyBatis Generator.
+         * This method corresponds to the database table custom_url
+         *
+         * @mbg.generated Wed Sep 08 15:22:38 CST 2021
+         */
+        public String getEscapedColumnName() {
+            if (this.isColumnNameDelimited) {
+                return new StringBuilder().append(BEGINNING_DELIMITER).append(this.column).append(ENDING_DELIMITER).toString();
+            } else {
+                return this.column;
+            }
+        }
+
+        /**
+         * This method was generated by MyBatis Generator.
+         * This method corresponds to the database table custom_url
+         *
+         * @mbg.generated Wed Sep 08 15:22:38 CST 2021
+         */
+        public String getAliasedEscapedColumnName() {
+            return this.getEscapedColumnName();
+        }
+    }
+}

+ 204 - 0
book-dao/src/main/java/com/book/dao/cps/mapper/CustomMediaPushMapper.java

@@ -0,0 +1,204 @@
+package com.book.dao.cps.mapper;
+
+import com.book.dao.cps.entity.CustomMediaPush;
+import com.book.dao.cps.pojo.example.CustomMediaPushExample;
+import java.util.List;
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+import org.springframework.stereotype.Repository;
+
+@Mapper
+@Repository
+public interface CustomMediaPushMapper {
+    /**
+     * This method was generated by MyBatis Generator.
+     * This method corresponds to the database table custom_media_push
+     *
+     * @mbg.generated Wed Sep 08 15:22:38 CST 2021
+     */
+    long countByExample(CustomMediaPushExample example);
+
+    /**
+     * This method was generated by MyBatis Generator.
+     * This method corresponds to the database table custom_media_push
+     *
+     * @mbg.generated Wed Sep 08 15:22:38 CST 2021
+     */
+    int deleteByExample(CustomMediaPushExample example);
+
+    /**
+     * This method was generated by MyBatis Generator.
+     * This method corresponds to the database table custom_media_push
+     *
+     * @mbg.generated Wed Sep 08 15:22:38 CST 2021
+     */
+    int deleteByPrimaryKey(Integer id);
+
+    /**
+     * This method was generated by MyBatis Generator.
+     * This method corresponds to the database table custom_media_push
+     *
+     * @mbg.generated Wed Sep 08 15:22:38 CST 2021
+     */
+    int insert(CustomMediaPush record);
+
+    /**
+     * This method was generated by MyBatis Generator.
+     * This method corresponds to the database table custom_media_push
+     *
+     * @mbg.generated Wed Sep 08 15:22:38 CST 2021
+     */
+    int insertSelective(@Param("record") CustomMediaPush record, @Param("selective") CustomMediaPush.Column ... selective);
+
+    /**
+     * This method was generated by MyBatis Generator.
+     * This method corresponds to the database table custom_media_push
+     *
+     * @mbg.generated Wed Sep 08 15:22:38 CST 2021
+     */
+    CustomMediaPush selectOneByExample(CustomMediaPushExample example);
+
+    /**
+     * This method was generated by MyBatis Generator.
+     * This method corresponds to the database table custom_media_push
+     *
+     * @mbg.generated Wed Sep 08 15:22:38 CST 2021
+     */
+    CustomMediaPush selectOneByExampleSelective(@Param("example") CustomMediaPushExample example, @Param("selective") CustomMediaPush.Column ... selective);
+
+    /**
+     * This method was generated by MyBatis Generator.
+     * This method corresponds to the database table custom_media_push
+     *
+     * @mbg.generated Wed Sep 08 15:22:38 CST 2021
+     */
+    CustomMediaPush selectOneByExampleWithBLOBs(CustomMediaPushExample example);
+
+    /**
+     * This method was generated by MyBatis Generator.
+     * This method corresponds to the database table custom_media_push
+     *
+     * @mbg.generated Wed Sep 08 15:22:38 CST 2021
+     */
+    List<CustomMediaPush> selectByExampleSelective(@Param("example") CustomMediaPushExample example, @Param("selective") CustomMediaPush.Column ... selective);
+
+    /**
+     * This method was generated by MyBatis Generator.
+     * This method corresponds to the database table custom_media_push
+     *
+     * @mbg.generated Wed Sep 08 15:22:38 CST 2021
+     */
+    List<CustomMediaPush> selectByExampleWithBLOBs(CustomMediaPushExample example);
+
+    /**
+     * This method was generated by MyBatis Generator.
+     * This method corresponds to the database table custom_media_push
+     *
+     * @mbg.generated Wed Sep 08 15:22:38 CST 2021
+     */
+    List<CustomMediaPush> selectByExample(CustomMediaPushExample example);
+
+    /**
+     * This method was generated by MyBatis Generator.
+     * This method corresponds to the database table custom_media_push
+     *
+     * @mbg.generated Wed Sep 08 15:22:38 CST 2021
+     */
+    CustomMediaPush selectByPrimaryKeySelective(@Param("id") Integer id, @Param("selective") CustomMediaPush.Column ... selective);
+
+    /**
+     * This method was generated by MyBatis Generator.
+     * This method corresponds to the database table custom_media_push
+     *
+     * @mbg.generated Wed Sep 08 15:22:38 CST 2021
+     */
+    CustomMediaPush selectByPrimaryKey(Integer id);
+
+    /**
+     * This method was generated by MyBatis Generator.
+     * This method corresponds to the database table custom_media_push
+     *
+     * @mbg.generated Wed Sep 08 15:22:38 CST 2021
+     */
+    int updateByExampleSelective(@Param("record") CustomMediaPush record, @Param("example") CustomMediaPushExample example, @Param("selective") CustomMediaPush.Column ... selective);
+
+    /**
+     * This method was generated by MyBatis Generator.
+     * This method corresponds to the database table custom_media_push
+     *
+     * @mbg.generated Wed Sep 08 15:22:38 CST 2021
+     */
+    int updateByExampleWithBLOBs(@Param("record") CustomMediaPush record, @Param("example") CustomMediaPushExample example);
+
+    /**
+     * This method was generated by MyBatis Generator.
+     * This method corresponds to the database table custom_media_push
+     *
+     * @mbg.generated Wed Sep 08 15:22:38 CST 2021
+     */
+    int updateByExample(@Param("record") CustomMediaPush record, @Param("example") CustomMediaPushExample example);
+
+    /**
+     * This method was generated by MyBatis Generator.
+     * This method corresponds to the database table custom_media_push
+     *
+     * @mbg.generated Wed Sep 08 15:22:38 CST 2021
+     */
+    int updateByPrimaryKeySelective(@Param("record") CustomMediaPush record, @Param("selective") CustomMediaPush.Column ... selective);
+
+    /**
+     * This method was generated by MyBatis Generator.
+     * This method corresponds to the database table custom_media_push
+     *
+     * @mbg.generated Wed Sep 08 15:22:38 CST 2021
+     */
+    int updateByPrimaryKeyWithBLOBs(CustomMediaPush record);
+
+    /**
+     * This method was generated by MyBatis Generator.
+     * This method corresponds to the database table custom_media_push
+     *
+     * @mbg.generated Wed Sep 08 15:22:38 CST 2021
+     */
+    int updateByPrimaryKey(CustomMediaPush record);
+
+    /**
+     * This method was generated by MyBatis Generator.
+     * This method corresponds to the database table custom_media_push
+     *
+     * @mbg.generated Wed Sep 08 15:22:38 CST 2021
+     */
+    int batchInsert(@Param("list") List<CustomMediaPush> list);
+
+    /**
+     * This method was generated by MyBatis Generator.
+     * This method corresponds to the database table custom_media_push
+     *
+     * @mbg.generated Wed Sep 08 15:22:38 CST 2021
+     */
+    int batchInsertSelective(@Param("list") List<CustomMediaPush> list, @Param("selective") CustomMediaPush.Column ... selective);
+
+    /**
+     * This method was generated by MyBatis Generator.
+     * This method corresponds to the database table custom_media_push
+     *
+     * @mbg.generated Wed Sep 08 15:22:38 CST 2021
+     */
+    int upsert(CustomMediaPush record);
+
+    /**
+     * This method was generated by MyBatis Generator.
+     * This method corresponds to the database table custom_media_push
+     *
+     * @mbg.generated Wed Sep 08 15:22:38 CST 2021
+     */
+    int upsertSelective(@Param("record") CustomMediaPush record, @Param("selective") CustomMediaPush.Column ... selective);
+
+    /**
+     * This method was generated by MyBatis Generator.
+     * This method corresponds to the database table custom_media_push
+     *
+     * @mbg.generated Wed Sep 08 15:22:38 CST 2021
+     */
+    int upsertWithBLOBs(CustomMediaPush record);
+}

+ 164 - 0
book-dao/src/main/java/com/book/dao/cps/mapper/CustomUrlMapper.java

@@ -0,0 +1,164 @@
+package com.book.dao.cps.mapper;
+
+import com.book.dao.cps.entity.CustomUrl;
+import com.book.dao.cps.pojo.example.CustomUrlExample;
+import java.util.List;
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+import org.springframework.stereotype.Repository;
+
+@Mapper
+@Repository
+public interface CustomUrlMapper {
+    /**
+     * This method was generated by MyBatis Generator.
+     * This method corresponds to the database table custom_url
+     *
+     * @mbg.generated Wed Sep 08 15:22:38 CST 2021
+     */
+    long countByExample(CustomUrlExample example);
+
+    /**
+     * This method was generated by MyBatis Generator.
+     * This method corresponds to the database table custom_url
+     *
+     * @mbg.generated Wed Sep 08 15:22:38 CST 2021
+     */
+    int deleteByExample(CustomUrlExample example);
+
+    /**
+     * This method was generated by MyBatis Generator.
+     * This method corresponds to the database table custom_url
+     *
+     * @mbg.generated Wed Sep 08 15:22:38 CST 2021
+     */
+    int deleteByPrimaryKey(Integer id);
+
+    /**
+     * This method was generated by MyBatis Generator.
+     * This method corresponds to the database table custom_url
+     *
+     * @mbg.generated Wed Sep 08 15:22:38 CST 2021
+     */
+    int insert(CustomUrl record);
+
+    /**
+     * This method was generated by MyBatis Generator.
+     * This method corresponds to the database table custom_url
+     *
+     * @mbg.generated Wed Sep 08 15:22:38 CST 2021
+     */
+    int insertSelective(@Param("record") CustomUrl record, @Param("selective") CustomUrl.Column ... selective);
+
+    /**
+     * This method was generated by MyBatis Generator.
+     * This method corresponds to the database table custom_url
+     *
+     * @mbg.generated Wed Sep 08 15:22:38 CST 2021
+     */
+    CustomUrl selectOneByExample(CustomUrlExample example);
+
+    /**
+     * This method was generated by MyBatis Generator.
+     * This method corresponds to the database table custom_url
+     *
+     * @mbg.generated Wed Sep 08 15:22:38 CST 2021
+     */
+    CustomUrl selectOneByExampleSelective(@Param("example") CustomUrlExample example, @Param("selective") CustomUrl.Column ... selective);
+
+    /**
+     * This method was generated by MyBatis Generator.
+     * This method corresponds to the database table custom_url
+     *
+     * @mbg.generated Wed Sep 08 15:22:38 CST 2021
+     */
+    List<CustomUrl> selectByExampleSelective(@Param("example") CustomUrlExample example, @Param("selective") CustomUrl.Column ... selective);
+
+    /**
+     * This method was generated by MyBatis Generator.
+     * This method corresponds to the database table custom_url
+     *
+     * @mbg.generated Wed Sep 08 15:22:38 CST 2021
+     */
+    List<CustomUrl> selectByExample(CustomUrlExample example);
+
+    /**
+     * This method was generated by MyBatis Generator.
+     * This method corresponds to the database table custom_url
+     *
+     * @mbg.generated Wed Sep 08 15:22:38 CST 2021
+     */
+    CustomUrl selectByPrimaryKeySelective(@Param("id") Integer id, @Param("selective") CustomUrl.Column ... selective);
+
+    /**
+     * This method was generated by MyBatis Generator.
+     * This method corresponds to the database table custom_url
+     *
+     * @mbg.generated Wed Sep 08 15:22:38 CST 2021
+     */
+    CustomUrl selectByPrimaryKey(Integer id);
+
+    /**
+     * This method was generated by MyBatis Generator.
+     * This method corresponds to the database table custom_url
+     *
+     * @mbg.generated Wed Sep 08 15:22:38 CST 2021
+     */
+    int updateByExampleSelective(@Param("record") CustomUrl record, @Param("example") CustomUrlExample example, @Param("selective") CustomUrl.Column ... selective);
+
+    /**
+     * This method was generated by MyBatis Generator.
+     * This method corresponds to the database table custom_url
+     *
+     * @mbg.generated Wed Sep 08 15:22:38 CST 2021
+     */
+    int updateByExample(@Param("record") CustomUrl record, @Param("example") CustomUrlExample example);
+
+    /**
+     * This method was generated by MyBatis Generator.
+     * This method corresponds to the database table custom_url
+     *
+     * @mbg.generated Wed Sep 08 15:22:38 CST 2021
+     */
+    int updateByPrimaryKeySelective(@Param("record") CustomUrl record, @Param("selective") CustomUrl.Column ... selective);
+
+    /**
+     * This method was generated by MyBatis Generator.
+     * This method corresponds to the database table custom_url
+     *
+     * @mbg.generated Wed Sep 08 15:22:38 CST 2021
+     */
+    int updateByPrimaryKey(CustomUrl record);
+
+    /**
+     * This method was generated by MyBatis Generator.
+     * This method corresponds to the database table custom_url
+     *
+     * @mbg.generated Wed Sep 08 15:22:38 CST 2021
+     */
+    int batchInsert(@Param("list") List<CustomUrl> list);
+
+    /**
+     * This method was generated by MyBatis Generator.
+     * This method corresponds to the database table custom_url
+     *
+     * @mbg.generated Wed Sep 08 15:22:38 CST 2021
+     */
+    int batchInsertSelective(@Param("list") List<CustomUrl> list, @Param("selective") CustomUrl.Column ... selective);
+
+    /**
+     * This method was generated by MyBatis Generator.
+     * This method corresponds to the database table custom_url
+     *
+     * @mbg.generated Wed Sep 08 15:22:38 CST 2021
+     */
+    int upsert(CustomUrl record);
+
+    /**
+     * This method was generated by MyBatis Generator.
+     * This method corresponds to the database table custom_url
+     *
+     * @mbg.generated Wed Sep 08 15:22:38 CST 2021
+     */
+    int upsertSelective(@Param("record") CustomUrl record, @Param("selective") CustomUrl.Column ... selective);
+}

+ 1791 - 0
book-dao/src/main/java/com/book/dao/cps/pojo/example/CustomMediaPushExample.java

@@ -0,0 +1,1791 @@
+package com.book.dao.cps.pojo.example;
+
+import com.book.dao.cps.entity.CustomMediaPush;
+import java.util.ArrayList;
+import java.util.List;
+
+public class CustomMediaPushExample {
+    /**
+     * This field was generated by MyBatis Generator.
+     * This field corresponds to the database table custom_media_push
+     *
+     * @mbg.generated Wed Sep 08 15:22:38 CST 2021
+     */
+    protected String orderByClause;
+
+    /**
+     * This field was generated by MyBatis Generator.
+     * This field corresponds to the database table custom_media_push
+     *
+     * @mbg.generated Wed Sep 08 15:22:38 CST 2021
+     */
+    protected boolean distinct;
+
+    /**
+     * This field was generated by MyBatis Generator.
+     * This field corresponds to the database table custom_media_push
+     *
+     * @mbg.generated Wed Sep 08 15:22:38 CST 2021
+     */
+    protected List<Criteria> oredCriteria;
+
+    /**
+     * This field was generated by MyBatis Generator.
+     * This field corresponds to the database table custom_media_push
+     *
+     * @mbg.generated Wed Sep 08 15:22:38 CST 2021
+     */
+    protected Integer offset;
+
+    /**
+     * This field was generated by MyBatis Generator.
+     * This field corresponds to the database table custom_media_push
+     *
+     * @mbg.generated Wed Sep 08 15:22:38 CST 2021
+     */
+    protected Integer rows;
+
+    /**
+     * This method was generated by MyBatis Generator.
+     * This method corresponds to the database table custom_media_push
+     *
+     * @mbg.generated Wed Sep 08 15:22:38 CST 2021
+     */
+    public CustomMediaPushExample() {
+        oredCriteria = new ArrayList<Criteria>();
+    }
+
+    /**
+     * This method was generated by MyBatis Generator.
+     * This method corresponds to the database table custom_media_push
+     *
+     * @mbg.generated Wed Sep 08 15:22:38 CST 2021
+     */
+    public void setOrderByClause(String orderByClause) {
+        this.orderByClause = orderByClause;
+    }
+
+    /**
+     * This method was generated by MyBatis Generator.
+     * This method corresponds to the database table custom_media_push
+     *
+     * @mbg.generated Wed Sep 08 15:22:38 CST 2021
+     */
+    public String getOrderByClause() {
+        return orderByClause;
+    }
+
+    /**
+     * This method was generated by MyBatis Generator.
+     * This method corresponds to the database table custom_media_push
+     *
+     * @mbg.generated Wed Sep 08 15:22:38 CST 2021
+     */
+    public void setDistinct(boolean distinct) {
+        this.distinct = distinct;
+    }
+
+    /**
+     * This method was generated by MyBatis Generator.
+     * This method corresponds to the database table custom_media_push
+     *
+     * @mbg.generated Wed Sep 08 15:22:38 CST 2021
+     */
+    public boolean isDistinct() {
+        return distinct;
+    }
+
+    /**
+     * This method was generated by MyBatis Generator.
+     * This method corresponds to the database table custom_media_push
+     *
+     * @mbg.generated Wed Sep 08 15:22:38 CST 2021
+     */
+    public List<Criteria> getOredCriteria() {
+        return oredCriteria;
+    }
+
+    /**
+     * This method was generated by MyBatis Generator.
+     * This method corresponds to the database table custom_media_push
+     *
+     * @mbg.generated Wed Sep 08 15:22:38 CST 2021
+     */
+    public void or(Criteria criteria) {
+        oredCriteria.add(criteria);
+    }
+
+    /**
+     * This method was generated by MyBatis Generator.
+     * This method corresponds to the database table custom_media_push
+     *
+     * @mbg.generated Wed Sep 08 15:22:38 CST 2021
+     */
+    public Criteria or() {
+        Criteria criteria = createCriteriaInternal();
+        oredCriteria.add(criteria);
+        return criteria;
+    }
+
+    /**
+     * This method was generated by MyBatis Generator.
+     * This method corresponds to the database table custom_media_push
+     *
+     * @mbg.generated Wed Sep 08 15:22:38 CST 2021
+     */
+    public CustomMediaPushExample orderBy(String orderByClause) {
+        this.setOrderByClause(orderByClause);
+        return this;
+    }
+
+    /**
+     * This method was generated by MyBatis Generator.
+     * This method corresponds to the database table custom_media_push
+     *
+     * @mbg.generated Wed Sep 08 15:22:38 CST 2021
+     */
+    public CustomMediaPushExample orderBy(String ... orderByClauses) {
+        StringBuffer sb = new StringBuffer();
+        for (int i = 0; i < orderByClauses.length; i++) {
+            sb.append(orderByClauses[i]);
+            if (i < orderByClauses.length - 1) {
+                sb.append(" , ");
+            }
+        }
+        this.setOrderByClause(sb.toString());
+        return this;
+    }
+
+    /**
+     * This method was generated by MyBatis Generator.
+     * This method corresponds to the database table custom_media_push
+     *
+     * @mbg.generated Wed Sep 08 15:22:38 CST 2021
+     */
+    public Criteria createCriteria() {
+        Criteria criteria = createCriteriaInternal();
+        if (oredCriteria.size() == 0) {
+            oredCriteria.add(criteria);
+        }
+        return criteria;
+    }
+
+    /**
+     * This method was generated by MyBatis Generator.
+     * This method corresponds to the database table custom_media_push
+     *
+     * @mbg.generated Wed Sep 08 15:22:38 CST 2021
+     */
+    protected Criteria createCriteriaInternal() {
+        Criteria criteria = new Criteria(this);
+        return criteria;
+    }
+
+    /**
+     * This method was generated by MyBatis Generator.
+     * This method corresponds to the database table custom_media_push
+     *
+     * @mbg.generated Wed Sep 08 15:22:38 CST 2021
+     */
+    public void clear() {
+        oredCriteria.clear();
+        orderByClause = null;
+        distinct = false;
+        rows = null;
+        offset = null;
+    }
+
+    /**
+     * This method was generated by MyBatis Generator.
+     * This method corresponds to the database table custom_media_push
+     *
+     * @mbg.generated Wed Sep 08 15:22:38 CST 2021
+     */
+    public void setOffset(Integer offset) {
+        this.offset = offset;
+    }
+
+    /**
+     * This method was generated by MyBatis Generator.
+     * This method corresponds to the database table custom_media_push
+     *
+     * @mbg.generated Wed Sep 08 15:22:38 CST 2021
+     */
+    public Integer getOffset() {
+        return this.offset;
+    }
+
+    /**
+     * This method was generated by MyBatis Generator.
+     * This method corresponds to the database table custom_media_push
+     *
+     * @mbg.generated Wed Sep 08 15:22:38 CST 2021
+     */
+    public void setRows(Integer rows) {
+        this.rows = rows;
+    }
+
+    /**
+     * This method was generated by MyBatis Generator.
+     * This method corresponds to the database table custom_media_push
+     *
+     * @mbg.generated Wed Sep 08 15:22:38 CST 2021
+     */
+    public Integer getRows() {
+        return this.rows;
+    }
+
+    /**
+     * This method was generated by MyBatis Generator.
+     * This method corresponds to the database table custom_media_push
+     *
+     * @mbg.generated Wed Sep 08 15:22:38 CST 2021
+     */
+    public CustomMediaPushExample limit(Integer rows) {
+        this.rows = rows;
+        return this;
+    }
+
+    /**
+     * This method was generated by MyBatis Generator.
+     * This method corresponds to the database table custom_media_push
+     *
+     * @mbg.generated Wed Sep 08 15:22:38 CST 2021
+     */
+    public CustomMediaPushExample limit(Integer offset, Integer rows) {
+        this.offset = offset;
+        this.rows = rows;
+        return this;
+    }
+
+    /**
+     * This method was generated by MyBatis Generator.
+     * This method corresponds to the database table custom_media_push
+     *
+     * @mbg.generated Wed Sep 08 15:22:38 CST 2021
+     */
+    public CustomMediaPushExample page(Integer page, Integer pageSize) {
+        this.offset = page * pageSize;
+        this.rows = pageSize;
+        return this;
+    }
+
+    /**
+     * This method was generated by MyBatis Generator.
+     * This method corresponds to the database table custom_media_push
+     *
+     * @mbg.generated Wed Sep 08 15:22:38 CST 2021
+     */
+    public static Criteria newAndCreateCriteria() {
+        CustomMediaPushExample example = new CustomMediaPushExample();
+        return example.createCriteria();
+    }
+
+    /**
+     * This method was generated by MyBatis Generator.
+     * This method corresponds to the database table custom_media_push
+     *
+     * @mbg.generated Wed Sep 08 15:22:38 CST 2021
+     */
+    public CustomMediaPushExample when(boolean condition, IExampleWhen then) {
+        if (condition) {
+            then.example(this);
+        }
+        return this;
+    }
+
+    /**
+     * This method was generated by MyBatis Generator.
+     * This method corresponds to the database table custom_media_push
+     *
+     * @mbg.generated Wed Sep 08 15:22:38 CST 2021
+     */
+    public CustomMediaPushExample when(boolean condition, IExampleWhen then, IExampleWhen otherwise) {
+        if (condition) {
+            then.example(this);
+        } else {
+            otherwise.example(this);
+        }
+        return this;
+    }
+
+    /**
+     * This class was generated by MyBatis Generator.
+     * This class corresponds to the database table custom_media_push
+     *
+     * @mbg.generated Wed Sep 08 15:22:38 CST 2021
+     */
+    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 andIdEqualToColumn(CustomMediaPush.Column column) {
+            addCriterion(new StringBuilder("id = ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andIdNotEqualTo(Integer value) {
+            addCriterion("id <>", value, "id");
+            return (Criteria) this;
+        }
+
+        public Criteria andIdNotEqualToColumn(CustomMediaPush.Column column) {
+            addCriterion(new StringBuilder("id <> ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andIdGreaterThan(Integer value) {
+            addCriterion("id >", value, "id");
+            return (Criteria) this;
+        }
+
+        public Criteria andIdGreaterThanColumn(CustomMediaPush.Column column) {
+            addCriterion(new StringBuilder("id > ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andIdGreaterThanOrEqualTo(Integer value) {
+            addCriterion("id >=", value, "id");
+            return (Criteria) this;
+        }
+
+        public Criteria andIdGreaterThanOrEqualToColumn(CustomMediaPush.Column column) {
+            addCriterion(new StringBuilder("id >= ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andIdLessThan(Integer value) {
+            addCriterion("id <", value, "id");
+            return (Criteria) this;
+        }
+
+        public Criteria andIdLessThanColumn(CustomMediaPush.Column column) {
+            addCriterion(new StringBuilder("id < ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andIdLessThanOrEqualTo(Integer value) {
+            addCriterion("id <=", value, "id");
+            return (Criteria) this;
+        }
+
+        public Criteria andIdLessThanOrEqualToColumn(CustomMediaPush.Column column) {
+            addCriterion(new StringBuilder("id <= ").append(column.getEscapedColumnName()).toString());
+            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 andCustomMediaIdIsNull() {
+            addCriterion("custom_media_id is null");
+            return (Criteria) this;
+        }
+
+        public Criteria andCustomMediaIdIsNotNull() {
+            addCriterion("custom_media_id is not null");
+            return (Criteria) this;
+        }
+
+        public Criteria andCustomMediaIdEqualTo(Integer value) {
+            addCriterion("custom_media_id =", value, "customMediaId");
+            return (Criteria) this;
+        }
+
+        public Criteria andCustomMediaIdEqualToColumn(CustomMediaPush.Column column) {
+            addCriterion(new StringBuilder("custom_media_id = ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andCustomMediaIdNotEqualTo(Integer value) {
+            addCriterion("custom_media_id <>", value, "customMediaId");
+            return (Criteria) this;
+        }
+
+        public Criteria andCustomMediaIdNotEqualToColumn(CustomMediaPush.Column column) {
+            addCriterion(new StringBuilder("custom_media_id <> ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andCustomMediaIdGreaterThan(Integer value) {
+            addCriterion("custom_media_id >", value, "customMediaId");
+            return (Criteria) this;
+        }
+
+        public Criteria andCustomMediaIdGreaterThanColumn(CustomMediaPush.Column column) {
+            addCriterion(new StringBuilder("custom_media_id > ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andCustomMediaIdGreaterThanOrEqualTo(Integer value) {
+            addCriterion("custom_media_id >=", value, "customMediaId");
+            return (Criteria) this;
+        }
+
+        public Criteria andCustomMediaIdGreaterThanOrEqualToColumn(CustomMediaPush.Column column) {
+            addCriterion(new StringBuilder("custom_media_id >= ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andCustomMediaIdLessThan(Integer value) {
+            addCriterion("custom_media_id <", value, "customMediaId");
+            return (Criteria) this;
+        }
+
+        public Criteria andCustomMediaIdLessThanColumn(CustomMediaPush.Column column) {
+            addCriterion(new StringBuilder("custom_media_id < ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andCustomMediaIdLessThanOrEqualTo(Integer value) {
+            addCriterion("custom_media_id <=", value, "customMediaId");
+            return (Criteria) this;
+        }
+
+        public Criteria andCustomMediaIdLessThanOrEqualToColumn(CustomMediaPush.Column column) {
+            addCriterion(new StringBuilder("custom_media_id <= ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andCustomMediaIdIn(List<Integer> values) {
+            addCriterion("custom_media_id in", values, "customMediaId");
+            return (Criteria) this;
+        }
+
+        public Criteria andCustomMediaIdNotIn(List<Integer> values) {
+            addCriterion("custom_media_id not in", values, "customMediaId");
+            return (Criteria) this;
+        }
+
+        public Criteria andCustomMediaIdBetween(Integer value1, Integer value2) {
+            addCriterion("custom_media_id between", value1, value2, "customMediaId");
+            return (Criteria) this;
+        }
+
+        public Criteria andCustomMediaIdNotBetween(Integer value1, Integer value2) {
+            addCriterion("custom_media_id not between", value1, value2, "customMediaId");
+            return (Criteria) this;
+        }
+
+        public Criteria andCreatedAdminIdIsNull() {
+            addCriterion("created_admin_id is null");
+            return (Criteria) this;
+        }
+
+        public Criteria andCreatedAdminIdIsNotNull() {
+            addCriterion("created_admin_id is not null");
+            return (Criteria) this;
+        }
+
+        public Criteria andCreatedAdminIdEqualTo(Integer value) {
+            addCriterion("created_admin_id =", value, "createdAdminId");
+            return (Criteria) this;
+        }
+
+        public Criteria andCreatedAdminIdEqualToColumn(CustomMediaPush.Column column) {
+            addCriterion(new StringBuilder("created_admin_id = ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andCreatedAdminIdNotEqualTo(Integer value) {
+            addCriterion("created_admin_id <>", value, "createdAdminId");
+            return (Criteria) this;
+        }
+
+        public Criteria andCreatedAdminIdNotEqualToColumn(CustomMediaPush.Column column) {
+            addCriterion(new StringBuilder("created_admin_id <> ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andCreatedAdminIdGreaterThan(Integer value) {
+            addCriterion("created_admin_id >", value, "createdAdminId");
+            return (Criteria) this;
+        }
+
+        public Criteria andCreatedAdminIdGreaterThanColumn(CustomMediaPush.Column column) {
+            addCriterion(new StringBuilder("created_admin_id > ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andCreatedAdminIdGreaterThanOrEqualTo(Integer value) {
+            addCriterion("created_admin_id >=", value, "createdAdminId");
+            return (Criteria) this;
+        }
+
+        public Criteria andCreatedAdminIdGreaterThanOrEqualToColumn(CustomMediaPush.Column column) {
+            addCriterion(new StringBuilder("created_admin_id >= ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andCreatedAdminIdLessThan(Integer value) {
+            addCriterion("created_admin_id <", value, "createdAdminId");
+            return (Criteria) this;
+        }
+
+        public Criteria andCreatedAdminIdLessThanColumn(CustomMediaPush.Column column) {
+            addCriterion(new StringBuilder("created_admin_id < ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andCreatedAdminIdLessThanOrEqualTo(Integer value) {
+            addCriterion("created_admin_id <=", value, "createdAdminId");
+            return (Criteria) this;
+        }
+
+        public Criteria andCreatedAdminIdLessThanOrEqualToColumn(CustomMediaPush.Column column) {
+            addCriterion(new StringBuilder("created_admin_id <= ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andCreatedAdminIdIn(List<Integer> values) {
+            addCriterion("created_admin_id in", values, "createdAdminId");
+            return (Criteria) this;
+        }
+
+        public Criteria andCreatedAdminIdNotIn(List<Integer> values) {
+            addCriterion("created_admin_id not in", values, "createdAdminId");
+            return (Criteria) this;
+        }
+
+        public Criteria andCreatedAdminIdBetween(Integer value1, Integer value2) {
+            addCriterion("created_admin_id between", value1, value2, "createdAdminId");
+            return (Criteria) this;
+        }
+
+        public Criteria andCreatedAdminIdNotBetween(Integer value1, Integer value2) {
+            addCriterion("created_admin_id not between", value1, value2, "createdAdminId");
+            return (Criteria) this;
+        }
+
+        public Criteria andMessageTypeIsNull() {
+            addCriterion("message_type is null");
+            return (Criteria) this;
+        }
+
+        public Criteria andMessageTypeIsNotNull() {
+            addCriterion("message_type is not null");
+            return (Criteria) this;
+        }
+
+        public Criteria andMessageTypeEqualTo(String value) {
+            addCriterion("message_type =", value, "messageType");
+            return (Criteria) this;
+        }
+
+        public Criteria andMessageTypeEqualToColumn(CustomMediaPush.Column column) {
+            addCriterion(new StringBuilder("message_type = ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andMessageTypeNotEqualTo(String value) {
+            addCriterion("message_type <>", value, "messageType");
+            return (Criteria) this;
+        }
+
+        public Criteria andMessageTypeNotEqualToColumn(CustomMediaPush.Column column) {
+            addCriterion(new StringBuilder("message_type <> ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andMessageTypeGreaterThan(String value) {
+            addCriterion("message_type >", value, "messageType");
+            return (Criteria) this;
+        }
+
+        public Criteria andMessageTypeGreaterThanColumn(CustomMediaPush.Column column) {
+            addCriterion(new StringBuilder("message_type > ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andMessageTypeGreaterThanOrEqualTo(String value) {
+            addCriterion("message_type >=", value, "messageType");
+            return (Criteria) this;
+        }
+
+        public Criteria andMessageTypeGreaterThanOrEqualToColumn(CustomMediaPush.Column column) {
+            addCriterion(new StringBuilder("message_type >= ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andMessageTypeLessThan(String value) {
+            addCriterion("message_type <", value, "messageType");
+            return (Criteria) this;
+        }
+
+        public Criteria andMessageTypeLessThanColumn(CustomMediaPush.Column column) {
+            addCriterion(new StringBuilder("message_type < ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andMessageTypeLessThanOrEqualTo(String value) {
+            addCriterion("message_type <=", value, "messageType");
+            return (Criteria) this;
+        }
+
+        public Criteria andMessageTypeLessThanOrEqualToColumn(CustomMediaPush.Column column) {
+            addCriterion(new StringBuilder("message_type <= ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andMessageTypeLike(String value) {
+            addCriterion("message_type like", value, "messageType");
+            return (Criteria) this;
+        }
+
+        public Criteria andMessageTypeNotLike(String value) {
+            addCriterion("message_type not like", value, "messageType");
+            return (Criteria) this;
+        }
+
+        public Criteria andMessageTypeIn(List<String> values) {
+            addCriterion("message_type in", values, "messageType");
+            return (Criteria) this;
+        }
+
+        public Criteria andMessageTypeNotIn(List<String> values) {
+            addCriterion("message_type not in", values, "messageType");
+            return (Criteria) this;
+        }
+
+        public Criteria andMessageTypeBetween(String value1, String value2) {
+            addCriterion("message_type between", value1, value2, "messageType");
+            return (Criteria) this;
+        }
+
+        public Criteria andMessageTypeNotBetween(String value1, String value2) {
+            addCriterion("message_type not between", value1, value2, "messageType");
+            return (Criteria) this;
+        }
+
+        public Criteria andOfficialAccountTypeIsNull() {
+            addCriterion("official_account_type is null");
+            return (Criteria) this;
+        }
+
+        public Criteria andOfficialAccountTypeIsNotNull() {
+            addCriterion("official_account_type is not null");
+            return (Criteria) this;
+        }
+
+        public Criteria andOfficialAccountTypeEqualTo(String value) {
+            addCriterion("official_account_type =", value, "officialAccountType");
+            return (Criteria) this;
+        }
+
+        public Criteria andOfficialAccountTypeEqualToColumn(CustomMediaPush.Column column) {
+            addCriterion(new StringBuilder("official_account_type = ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andOfficialAccountTypeNotEqualTo(String value) {
+            addCriterion("official_account_type <>", value, "officialAccountType");
+            return (Criteria) this;
+        }
+
+        public Criteria andOfficialAccountTypeNotEqualToColumn(CustomMediaPush.Column column) {
+            addCriterion(new StringBuilder("official_account_type <> ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andOfficialAccountTypeGreaterThan(String value) {
+            addCriterion("official_account_type >", value, "officialAccountType");
+            return (Criteria) this;
+        }
+
+        public Criteria andOfficialAccountTypeGreaterThanColumn(CustomMediaPush.Column column) {
+            addCriterion(new StringBuilder("official_account_type > ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andOfficialAccountTypeGreaterThanOrEqualTo(String value) {
+            addCriterion("official_account_type >=", value, "officialAccountType");
+            return (Criteria) this;
+        }
+
+        public Criteria andOfficialAccountTypeGreaterThanOrEqualToColumn(CustomMediaPush.Column column) {
+            addCriterion(new StringBuilder("official_account_type >= ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andOfficialAccountTypeLessThan(String value) {
+            addCriterion("official_account_type <", value, "officialAccountType");
+            return (Criteria) this;
+        }
+
+        public Criteria andOfficialAccountTypeLessThanColumn(CustomMediaPush.Column column) {
+            addCriterion(new StringBuilder("official_account_type < ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andOfficialAccountTypeLessThanOrEqualTo(String value) {
+            addCriterion("official_account_type <=", value, "officialAccountType");
+            return (Criteria) this;
+        }
+
+        public Criteria andOfficialAccountTypeLessThanOrEqualToColumn(CustomMediaPush.Column column) {
+            addCriterion(new StringBuilder("official_account_type <= ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andOfficialAccountTypeLike(String value) {
+            addCriterion("official_account_type like", value, "officialAccountType");
+            return (Criteria) this;
+        }
+
+        public Criteria andOfficialAccountTypeNotLike(String value) {
+            addCriterion("official_account_type not like", value, "officialAccountType");
+            return (Criteria) this;
+        }
+
+        public Criteria andOfficialAccountTypeIn(List<String> values) {
+            addCriterion("official_account_type in", values, "officialAccountType");
+            return (Criteria) this;
+        }
+
+        public Criteria andOfficialAccountTypeNotIn(List<String> values) {
+            addCriterion("official_account_type not in", values, "officialAccountType");
+            return (Criteria) this;
+        }
+
+        public Criteria andOfficialAccountTypeBetween(String value1, String value2) {
+            addCriterion("official_account_type between", value1, value2, "officialAccountType");
+            return (Criteria) this;
+        }
+
+        public Criteria andOfficialAccountTypeNotBetween(String value1, String value2) {
+            addCriterion("official_account_type not between", value1, value2, "officialAccountType");
+            return (Criteria) this;
+        }
+
+        public Criteria andOfficialAccountSubscribeIdsIsNull() {
+            addCriterion("official_account_subscribe_ids is null");
+            return (Criteria) this;
+        }
+
+        public Criteria andOfficialAccountSubscribeIdsIsNotNull() {
+            addCriterion("official_account_subscribe_ids is not null");
+            return (Criteria) this;
+        }
+
+        public Criteria andOfficialAccountSubscribeIdsEqualTo(String value) {
+            addCriterion("official_account_subscribe_ids =", value, "officialAccountSubscribeIds");
+            return (Criteria) this;
+        }
+
+        public Criteria andOfficialAccountSubscribeIdsEqualToColumn(CustomMediaPush.Column column) {
+            addCriterion(new StringBuilder("official_account_subscribe_ids = ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andOfficialAccountSubscribeIdsNotEqualTo(String value) {
+            addCriterion("official_account_subscribe_ids <>", value, "officialAccountSubscribeIds");
+            return (Criteria) this;
+        }
+
+        public Criteria andOfficialAccountSubscribeIdsNotEqualToColumn(CustomMediaPush.Column column) {
+            addCriterion(new StringBuilder("official_account_subscribe_ids <> ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andOfficialAccountSubscribeIdsGreaterThan(String value) {
+            addCriterion("official_account_subscribe_ids >", value, "officialAccountSubscribeIds");
+            return (Criteria) this;
+        }
+
+        public Criteria andOfficialAccountSubscribeIdsGreaterThanColumn(CustomMediaPush.Column column) {
+            addCriterion(new StringBuilder("official_account_subscribe_ids > ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andOfficialAccountSubscribeIdsGreaterThanOrEqualTo(String value) {
+            addCriterion("official_account_subscribe_ids >=", value, "officialAccountSubscribeIds");
+            return (Criteria) this;
+        }
+
+        public Criteria andOfficialAccountSubscribeIdsGreaterThanOrEqualToColumn(CustomMediaPush.Column column) {
+            addCriterion(new StringBuilder("official_account_subscribe_ids >= ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andOfficialAccountSubscribeIdsLessThan(String value) {
+            addCriterion("official_account_subscribe_ids <", value, "officialAccountSubscribeIds");
+            return (Criteria) this;
+        }
+
+        public Criteria andOfficialAccountSubscribeIdsLessThanColumn(CustomMediaPush.Column column) {
+            addCriterion(new StringBuilder("official_account_subscribe_ids < ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andOfficialAccountSubscribeIdsLessThanOrEqualTo(String value) {
+            addCriterion("official_account_subscribe_ids <=", value, "officialAccountSubscribeIds");
+            return (Criteria) this;
+        }
+
+        public Criteria andOfficialAccountSubscribeIdsLessThanOrEqualToColumn(CustomMediaPush.Column column) {
+            addCriterion(new StringBuilder("official_account_subscribe_ids <= ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andOfficialAccountSubscribeIdsLike(String value) {
+            addCriterion("official_account_subscribe_ids like", value, "officialAccountSubscribeIds");
+            return (Criteria) this;
+        }
+
+        public Criteria andOfficialAccountSubscribeIdsNotLike(String value) {
+            addCriterion("official_account_subscribe_ids not like", value, "officialAccountSubscribeIds");
+            return (Criteria) this;
+        }
+
+        public Criteria andOfficialAccountSubscribeIdsIn(List<String> values) {
+            addCriterion("official_account_subscribe_ids in", values, "officialAccountSubscribeIds");
+            return (Criteria) this;
+        }
+
+        public Criteria andOfficialAccountSubscribeIdsNotIn(List<String> values) {
+            addCriterion("official_account_subscribe_ids not in", values, "officialAccountSubscribeIds");
+            return (Criteria) this;
+        }
+
+        public Criteria andOfficialAccountSubscribeIdsBetween(String value1, String value2) {
+            addCriterion("official_account_subscribe_ids between", value1, value2, "officialAccountSubscribeIds");
+            return (Criteria) this;
+        }
+
+        public Criteria andOfficialAccountSubscribeIdsNotBetween(String value1, String value2) {
+            addCriterion("official_account_subscribe_ids not between", value1, value2, "officialAccountSubscribeIds");
+            return (Criteria) this;
+        }
+
+        public Criteria andSendtimeIsNull() {
+            addCriterion("sendtime is null");
+            return (Criteria) this;
+        }
+
+        public Criteria andSendtimeIsNotNull() {
+            addCriterion("sendtime is not null");
+            return (Criteria) this;
+        }
+
+        public Criteria andSendtimeEqualTo(Integer value) {
+            addCriterion("sendtime =", value, "sendtime");
+            return (Criteria) this;
+        }
+
+        public Criteria andSendtimeEqualToColumn(CustomMediaPush.Column column) {
+            addCriterion(new StringBuilder("sendtime = ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andSendtimeNotEqualTo(Integer value) {
+            addCriterion("sendtime <>", value, "sendtime");
+            return (Criteria) this;
+        }
+
+        public Criteria andSendtimeNotEqualToColumn(CustomMediaPush.Column column) {
+            addCriterion(new StringBuilder("sendtime <> ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andSendtimeGreaterThan(Integer value) {
+            addCriterion("sendtime >", value, "sendtime");
+            return (Criteria) this;
+        }
+
+        public Criteria andSendtimeGreaterThanColumn(CustomMediaPush.Column column) {
+            addCriterion(new StringBuilder("sendtime > ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andSendtimeGreaterThanOrEqualTo(Integer value) {
+            addCriterion("sendtime >=", value, "sendtime");
+            return (Criteria) this;
+        }
+
+        public Criteria andSendtimeGreaterThanOrEqualToColumn(CustomMediaPush.Column column) {
+            addCriterion(new StringBuilder("sendtime >= ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andSendtimeLessThan(Integer value) {
+            addCriterion("sendtime <", value, "sendtime");
+            return (Criteria) this;
+        }
+
+        public Criteria andSendtimeLessThanColumn(CustomMediaPush.Column column) {
+            addCriterion(new StringBuilder("sendtime < ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andSendtimeLessThanOrEqualTo(Integer value) {
+            addCriterion("sendtime <=", value, "sendtime");
+            return (Criteria) this;
+        }
+
+        public Criteria andSendtimeLessThanOrEqualToColumn(CustomMediaPush.Column column) {
+            addCriterion(new StringBuilder("sendtime <= ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andSendtimeIn(List<Integer> values) {
+            addCriterion("sendtime in", values, "sendtime");
+            return (Criteria) this;
+        }
+
+        public Criteria andSendtimeNotIn(List<Integer> values) {
+            addCriterion("sendtime not in", values, "sendtime");
+            return (Criteria) this;
+        }
+
+        public Criteria andSendtimeBetween(Integer value1, Integer value2) {
+            addCriterion("sendtime between", value1, value2, "sendtime");
+            return (Criteria) this;
+        }
+
+        public Criteria andSendtimeNotBetween(Integer value1, Integer value2) {
+            addCriterion("sendtime not between", value1, value2, "sendtime");
+            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(String value) {
+            addCriterion("status =", value, "status");
+            return (Criteria) this;
+        }
+
+        public Criteria andStatusEqualToColumn(CustomMediaPush.Column column) {
+            addCriterion(new StringBuilder("status = ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andStatusNotEqualTo(String value) {
+            addCriterion("status <>", value, "status");
+            return (Criteria) this;
+        }
+
+        public Criteria andStatusNotEqualToColumn(CustomMediaPush.Column column) {
+            addCriterion(new StringBuilder("status <> ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andStatusGreaterThan(String value) {
+            addCriterion("status >", value, "status");
+            return (Criteria) this;
+        }
+
+        public Criteria andStatusGreaterThanColumn(CustomMediaPush.Column column) {
+            addCriterion(new StringBuilder("status > ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andStatusGreaterThanOrEqualTo(String value) {
+            addCriterion("status >=", value, "status");
+            return (Criteria) this;
+        }
+
+        public Criteria andStatusGreaterThanOrEqualToColumn(CustomMediaPush.Column column) {
+            addCriterion(new StringBuilder("status >= ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andStatusLessThan(String value) {
+            addCriterion("status <", value, "status");
+            return (Criteria) this;
+        }
+
+        public Criteria andStatusLessThanColumn(CustomMediaPush.Column column) {
+            addCriterion(new StringBuilder("status < ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andStatusLessThanOrEqualTo(String value) {
+            addCriterion("status <=", value, "status");
+            return (Criteria) this;
+        }
+
+        public Criteria andStatusLessThanOrEqualToColumn(CustomMediaPush.Column column) {
+            addCriterion(new StringBuilder("status <= ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andStatusLike(String value) {
+            addCriterion("status like", value, "status");
+            return (Criteria) this;
+        }
+
+        public Criteria andStatusNotLike(String value) {
+            addCriterion("status not like", value, "status");
+            return (Criteria) this;
+        }
+
+        public Criteria andStatusIn(List<String> values) {
+            addCriterion("status in", values, "status");
+            return (Criteria) this;
+        }
+
+        public Criteria andStatusNotIn(List<String> values) {
+            addCriterion("status not in", values, "status");
+            return (Criteria) this;
+        }
+
+        public Criteria andStatusBetween(String value1, String value2) {
+            addCriterion("status between", value1, value2, "status");
+            return (Criteria) this;
+        }
+
+        public Criteria andStatusNotBetween(String value1, String value2) {
+            addCriterion("status not between", value1, value2, "status");
+            return (Criteria) this;
+        }
+
+        public Criteria andCreatedFromIsNull() {
+            addCriterion("created_from is null");
+            return (Criteria) this;
+        }
+
+        public Criteria andCreatedFromIsNotNull() {
+            addCriterion("created_from is not null");
+            return (Criteria) this;
+        }
+
+        public Criteria andCreatedFromEqualTo(String value) {
+            addCriterion("created_from =", value, "createdFrom");
+            return (Criteria) this;
+        }
+
+        public Criteria andCreatedFromEqualToColumn(CustomMediaPush.Column column) {
+            addCriterion(new StringBuilder("created_from = ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andCreatedFromNotEqualTo(String value) {
+            addCriterion("created_from <>", value, "createdFrom");
+            return (Criteria) this;
+        }
+
+        public Criteria andCreatedFromNotEqualToColumn(CustomMediaPush.Column column) {
+            addCriterion(new StringBuilder("created_from <> ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andCreatedFromGreaterThan(String value) {
+            addCriterion("created_from >", value, "createdFrom");
+            return (Criteria) this;
+        }
+
+        public Criteria andCreatedFromGreaterThanColumn(CustomMediaPush.Column column) {
+            addCriterion(new StringBuilder("created_from > ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andCreatedFromGreaterThanOrEqualTo(String value) {
+            addCriterion("created_from >=", value, "createdFrom");
+            return (Criteria) this;
+        }
+
+        public Criteria andCreatedFromGreaterThanOrEqualToColumn(CustomMediaPush.Column column) {
+            addCriterion(new StringBuilder("created_from >= ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andCreatedFromLessThan(String value) {
+            addCriterion("created_from <", value, "createdFrom");
+            return (Criteria) this;
+        }
+
+        public Criteria andCreatedFromLessThanColumn(CustomMediaPush.Column column) {
+            addCriterion(new StringBuilder("created_from < ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andCreatedFromLessThanOrEqualTo(String value) {
+            addCriterion("created_from <=", value, "createdFrom");
+            return (Criteria) this;
+        }
+
+        public Criteria andCreatedFromLessThanOrEqualToColumn(CustomMediaPush.Column column) {
+            addCriterion(new StringBuilder("created_from <= ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andCreatedFromLike(String value) {
+            addCriterion("created_from like", value, "createdFrom");
+            return (Criteria) this;
+        }
+
+        public Criteria andCreatedFromNotLike(String value) {
+            addCriterion("created_from not like", value, "createdFrom");
+            return (Criteria) this;
+        }
+
+        public Criteria andCreatedFromIn(List<String> values) {
+            addCriterion("created_from in", values, "createdFrom");
+            return (Criteria) this;
+        }
+
+        public Criteria andCreatedFromNotIn(List<String> values) {
+            addCriterion("created_from not in", values, "createdFrom");
+            return (Criteria) this;
+        }
+
+        public Criteria andCreatedFromBetween(String value1, String value2) {
+            addCriterion("created_from between", value1, value2, "createdFrom");
+            return (Criteria) this;
+        }
+
+        public Criteria andCreatedFromNotBetween(String value1, String value2) {
+            addCriterion("created_from not between", value1, value2, "createdFrom");
+            return (Criteria) this;
+        }
+
+        public Criteria andCreatetimeIsNull() {
+            addCriterion("createtime is null");
+            return (Criteria) this;
+        }
+
+        public Criteria andCreatetimeIsNotNull() {
+            addCriterion("createtime is not null");
+            return (Criteria) this;
+        }
+
+        public Criteria andCreatetimeEqualTo(Integer value) {
+            addCriterion("createtime =", value, "createtime");
+            return (Criteria) this;
+        }
+
+        public Criteria andCreatetimeEqualToColumn(CustomMediaPush.Column column) {
+            addCriterion(new StringBuilder("createtime = ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andCreatetimeNotEqualTo(Integer value) {
+            addCriterion("createtime <>", value, "createtime");
+            return (Criteria) this;
+        }
+
+        public Criteria andCreatetimeNotEqualToColumn(CustomMediaPush.Column column) {
+            addCriterion(new StringBuilder("createtime <> ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andCreatetimeGreaterThan(Integer value) {
+            addCriterion("createtime >", value, "createtime");
+            return (Criteria) this;
+        }
+
+        public Criteria andCreatetimeGreaterThanColumn(CustomMediaPush.Column column) {
+            addCriterion(new StringBuilder("createtime > ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andCreatetimeGreaterThanOrEqualTo(Integer value) {
+            addCriterion("createtime >=", value, "createtime");
+            return (Criteria) this;
+        }
+
+        public Criteria andCreatetimeGreaterThanOrEqualToColumn(CustomMediaPush.Column column) {
+            addCriterion(new StringBuilder("createtime >= ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andCreatetimeLessThan(Integer value) {
+            addCriterion("createtime <", value, "createtime");
+            return (Criteria) this;
+        }
+
+        public Criteria andCreatetimeLessThanColumn(CustomMediaPush.Column column) {
+            addCriterion(new StringBuilder("createtime < ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andCreatetimeLessThanOrEqualTo(Integer value) {
+            addCriterion("createtime <=", value, "createtime");
+            return (Criteria) this;
+        }
+
+        public Criteria andCreatetimeLessThanOrEqualToColumn(CustomMediaPush.Column column) {
+            addCriterion(new StringBuilder("createtime <= ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andCreatetimeIn(List<Integer> values) {
+            addCriterion("createtime in", values, "createtime");
+            return (Criteria) this;
+        }
+
+        public Criteria andCreatetimeNotIn(List<Integer> values) {
+            addCriterion("createtime not in", values, "createtime");
+            return (Criteria) this;
+        }
+
+        public Criteria andCreatetimeBetween(Integer value1, Integer value2) {
+            addCriterion("createtime between", value1, value2, "createtime");
+            return (Criteria) this;
+        }
+
+        public Criteria andCreatetimeNotBetween(Integer value1, Integer value2) {
+            addCriterion("createtime not between", value1, value2, "createtime");
+            return (Criteria) this;
+        }
+
+        public Criteria andUpdatetimeIsNull() {
+            addCriterion("updatetime is null");
+            return (Criteria) this;
+        }
+
+        public Criteria andUpdatetimeIsNotNull() {
+            addCriterion("updatetime is not null");
+            return (Criteria) this;
+        }
+
+        public Criteria andUpdatetimeEqualTo(Integer value) {
+            addCriterion("updatetime =", value, "updatetime");
+            return (Criteria) this;
+        }
+
+        public Criteria andUpdatetimeEqualToColumn(CustomMediaPush.Column column) {
+            addCriterion(new StringBuilder("updatetime = ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andUpdatetimeNotEqualTo(Integer value) {
+            addCriterion("updatetime <>", value, "updatetime");
+            return (Criteria) this;
+        }
+
+        public Criteria andUpdatetimeNotEqualToColumn(CustomMediaPush.Column column) {
+            addCriterion(new StringBuilder("updatetime <> ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andUpdatetimeGreaterThan(Integer value) {
+            addCriterion("updatetime >", value, "updatetime");
+            return (Criteria) this;
+        }
+
+        public Criteria andUpdatetimeGreaterThanColumn(CustomMediaPush.Column column) {
+            addCriterion(new StringBuilder("updatetime > ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andUpdatetimeGreaterThanOrEqualTo(Integer value) {
+            addCriterion("updatetime >=", value, "updatetime");
+            return (Criteria) this;
+        }
+
+        public Criteria andUpdatetimeGreaterThanOrEqualToColumn(CustomMediaPush.Column column) {
+            addCriterion(new StringBuilder("updatetime >= ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andUpdatetimeLessThan(Integer value) {
+            addCriterion("updatetime <", value, "updatetime");
+            return (Criteria) this;
+        }
+
+        public Criteria andUpdatetimeLessThanColumn(CustomMediaPush.Column column) {
+            addCriterion(new StringBuilder("updatetime < ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andUpdatetimeLessThanOrEqualTo(Integer value) {
+            addCriterion("updatetime <=", value, "updatetime");
+            return (Criteria) this;
+        }
+
+        public Criteria andUpdatetimeLessThanOrEqualToColumn(CustomMediaPush.Column column) {
+            addCriterion(new StringBuilder("updatetime <= ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andUpdatetimeIn(List<Integer> values) {
+            addCriterion("updatetime in", values, "updatetime");
+            return (Criteria) this;
+        }
+
+        public Criteria andUpdatetimeNotIn(List<Integer> values) {
+            addCriterion("updatetime not in", values, "updatetime");
+            return (Criteria) this;
+        }
+
+        public Criteria andUpdatetimeBetween(Integer value1, Integer value2) {
+            addCriterion("updatetime between", value1, value2, "updatetime");
+            return (Criteria) this;
+        }
+
+        public Criteria andUpdatetimeNotBetween(Integer value1, Integer value2) {
+            addCriterion("updatetime not between", value1, value2, "updatetime");
+            return (Criteria) this;
+        }
+
+        public Criteria andSelectTypeIsNull() {
+            addCriterion("select_type is null");
+            return (Criteria) this;
+        }
+
+        public Criteria andSelectTypeIsNotNull() {
+            addCriterion("select_type is not null");
+            return (Criteria) this;
+        }
+
+        public Criteria andSelectTypeEqualTo(Byte value) {
+            addCriterion("select_type =", value, "selectType");
+            return (Criteria) this;
+        }
+
+        public Criteria andSelectTypeEqualToColumn(CustomMediaPush.Column column) {
+            addCriterion(new StringBuilder("select_type = ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andSelectTypeNotEqualTo(Byte value) {
+            addCriterion("select_type <>", value, "selectType");
+            return (Criteria) this;
+        }
+
+        public Criteria andSelectTypeNotEqualToColumn(CustomMediaPush.Column column) {
+            addCriterion(new StringBuilder("select_type <> ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andSelectTypeGreaterThan(Byte value) {
+            addCriterion("select_type >", value, "selectType");
+            return (Criteria) this;
+        }
+
+        public Criteria andSelectTypeGreaterThanColumn(CustomMediaPush.Column column) {
+            addCriterion(new StringBuilder("select_type > ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andSelectTypeGreaterThanOrEqualTo(Byte value) {
+            addCriterion("select_type >=", value, "selectType");
+            return (Criteria) this;
+        }
+
+        public Criteria andSelectTypeGreaterThanOrEqualToColumn(CustomMediaPush.Column column) {
+            addCriterion(new StringBuilder("select_type >= ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andSelectTypeLessThan(Byte value) {
+            addCriterion("select_type <", value, "selectType");
+            return (Criteria) this;
+        }
+
+        public Criteria andSelectTypeLessThanColumn(CustomMediaPush.Column column) {
+            addCriterion(new StringBuilder("select_type < ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andSelectTypeLessThanOrEqualTo(Byte value) {
+            addCriterion("select_type <=", value, "selectType");
+            return (Criteria) this;
+        }
+
+        public Criteria andSelectTypeLessThanOrEqualToColumn(CustomMediaPush.Column column) {
+            addCriterion(new StringBuilder("select_type <= ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andSelectTypeIn(List<Byte> values) {
+            addCriterion("select_type in", values, "selectType");
+            return (Criteria) this;
+        }
+
+        public Criteria andSelectTypeNotIn(List<Byte> values) {
+            addCriterion("select_type not in", values, "selectType");
+            return (Criteria) this;
+        }
+
+        public Criteria andSelectTypeBetween(Byte value1, Byte value2) {
+            addCriterion("select_type between", value1, value2, "selectType");
+            return (Criteria) this;
+        }
+
+        public Criteria andSelectTypeNotBetween(Byte value1, Byte value2) {
+            addCriterion("select_type not between", value1, value2, "selectType");
+            return (Criteria) this;
+        }
+
+        public Criteria andGroupIdIsNull() {
+            addCriterion("group_id is null");
+            return (Criteria) this;
+        }
+
+        public Criteria andGroupIdIsNotNull() {
+            addCriterion("group_id is not null");
+            return (Criteria) this;
+        }
+
+        public Criteria andGroupIdEqualTo(String value) {
+            addCriterion("group_id =", value, "groupId");
+            return (Criteria) this;
+        }
+
+        public Criteria andGroupIdEqualToColumn(CustomMediaPush.Column column) {
+            addCriterion(new StringBuilder("group_id = ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andGroupIdNotEqualTo(String value) {
+            addCriterion("group_id <>", value, "groupId");
+            return (Criteria) this;
+        }
+
+        public Criteria andGroupIdNotEqualToColumn(CustomMediaPush.Column column) {
+            addCriterion(new StringBuilder("group_id <> ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andGroupIdGreaterThan(String value) {
+            addCriterion("group_id >", value, "groupId");
+            return (Criteria) this;
+        }
+
+        public Criteria andGroupIdGreaterThanColumn(CustomMediaPush.Column column) {
+            addCriterion(new StringBuilder("group_id > ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andGroupIdGreaterThanOrEqualTo(String value) {
+            addCriterion("group_id >=", value, "groupId");
+            return (Criteria) this;
+        }
+
+        public Criteria andGroupIdGreaterThanOrEqualToColumn(CustomMediaPush.Column column) {
+            addCriterion(new StringBuilder("group_id >= ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andGroupIdLessThan(String value) {
+            addCriterion("group_id <", value, "groupId");
+            return (Criteria) this;
+        }
+
+        public Criteria andGroupIdLessThanColumn(CustomMediaPush.Column column) {
+            addCriterion(new StringBuilder("group_id < ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andGroupIdLessThanOrEqualTo(String value) {
+            addCriterion("group_id <=", value, "groupId");
+            return (Criteria) this;
+        }
+
+        public Criteria andGroupIdLessThanOrEqualToColumn(CustomMediaPush.Column column) {
+            addCriterion(new StringBuilder("group_id <= ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andGroupIdLike(String value) {
+            addCriterion("group_id like", value, "groupId");
+            return (Criteria) this;
+        }
+
+        public Criteria andGroupIdNotLike(String value) {
+            addCriterion("group_id not like", value, "groupId");
+            return (Criteria) this;
+        }
+
+        public Criteria andGroupIdIn(List<String> values) {
+            addCriterion("group_id in", values, "groupId");
+            return (Criteria) this;
+        }
+
+        public Criteria andGroupIdNotIn(List<String> values) {
+            addCriterion("group_id not in", values, "groupId");
+            return (Criteria) this;
+        }
+
+        public Criteria andGroupIdBetween(String value1, String value2) {
+            addCriterion("group_id between", value1, value2, "groupId");
+            return (Criteria) this;
+        }
+
+        public Criteria andGroupIdNotBetween(String value1, String value2) {
+            addCriterion("group_id not between", value1, value2, "groupId");
+            return (Criteria) this;
+        }
+    }
+
+    /**
+     * This class was generated by MyBatis Generator.
+     * This class corresponds to the database table custom_media_push
+     *
+     * @mbg.generated do_not_delete_during_merge Wed Sep 08 15:22:38 CST 2021
+     */
+    public static class Criteria extends GeneratedCriteria {
+        /**
+         * This field was generated by MyBatis Generator.
+         * This field corresponds to the database table custom_media_push
+         *
+         * @mbg.generated Wed Sep 08 15:22:38 CST 2021
+         */
+        private CustomMediaPushExample example;
+
+        /**
+         * This method was generated by MyBatis Generator.
+         * This method corresponds to the database table custom_media_push
+         *
+         * @mbg.generated Wed Sep 08 15:22:38 CST 2021
+         */
+        protected Criteria(CustomMediaPushExample example) {
+            super();
+            this.example = example;
+        }
+
+        /**
+         * This method was generated by MyBatis Generator.
+         * This method corresponds to the database table custom_media_push
+         *
+         * @mbg.generated Wed Sep 08 15:22:38 CST 2021
+         */
+        public CustomMediaPushExample example() {
+            return this.example;
+        }
+
+        /**
+         * This method was generated by MyBatis Generator.
+         * This method corresponds to the database table custom_media_push
+         *
+         * @mbg.generated Wed Sep 08 15:22:38 CST 2021
+         */
+        @Deprecated
+        public Criteria andIf(boolean ifAdd, ICriteriaAdd add) {
+            if (ifAdd) {
+                add.add(this);
+            }
+            return this;
+        }
+
+        /**
+         * This method was generated by MyBatis Generator.
+         * This method corresponds to the database table custom_media_push
+         *
+         * @mbg.generated Wed Sep 08 15:22:38 CST 2021
+         */
+        public Criteria when(boolean condition, ICriteriaWhen then) {
+            if (condition) {
+                then.criteria(this);
+            }
+            return this;
+        }
+
+        /**
+         * This method was generated by MyBatis Generator.
+         * This method corresponds to the database table custom_media_push
+         *
+         * @mbg.generated Wed Sep 08 15:22:38 CST 2021
+         */
+        public Criteria when(boolean condition, ICriteriaWhen then, ICriteriaWhen otherwise) {
+            if (condition) {
+                then.criteria(this);
+            } else {
+                otherwise.criteria(this);
+            }
+            return this;
+        }
+
+        @Deprecated
+        public interface ICriteriaAdd {
+            /**
+             * This method was generated by MyBatis Generator.
+             * This method corresponds to the database table custom_media_push
+             *
+             * @mbg.generated Wed Sep 08 15:22:38 CST 2021
+             */
+            Criteria add(Criteria add);
+        }
+    }
+
+    /**
+     * This class was generated by MyBatis Generator.
+     * This class corresponds to the database table custom_media_push
+     *
+     * @mbg.generated Wed Sep 08 15:22:38 CST 2021
+     */
+    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);
+        }
+    }
+
+    public interface ICriteriaWhen {
+        /**
+         * This method was generated by MyBatis Generator.
+         * This method corresponds to the database table custom_media_push
+         *
+         * @mbg.generated Wed Sep 08 15:22:38 CST 2021
+         */
+        void criteria(Criteria criteria);
+    }
+
+    public interface IExampleWhen {
+        /**
+         * This method was generated by MyBatis Generator.
+         * This method corresponds to the database table custom_media_push
+         *
+         * @mbg.generated Wed Sep 08 15:22:38 CST 2021
+         */
+        void example(com.book.dao.cps.pojo.example.CustomMediaPushExample example);
+    }
+}

+ 2371 - 0
book-dao/src/main/java/com/book/dao/cps/pojo/example/CustomUrlExample.java

@@ -0,0 +1,2371 @@
+package com.book.dao.cps.pojo.example;
+
+import com.book.dao.cps.entity.CustomUrl;
+import java.util.ArrayList;
+import java.util.List;
+
+public class CustomUrlExample {
+    /**
+     * This field was generated by MyBatis Generator.
+     * This field corresponds to the database table custom_url
+     *
+     * @mbg.generated Wed Sep 08 15:22:38 CST 2021
+     */
+    protected String orderByClause;
+
+    /**
+     * This field was generated by MyBatis Generator.
+     * This field corresponds to the database table custom_url
+     *
+     * @mbg.generated Wed Sep 08 15:22:38 CST 2021
+     */
+    protected boolean distinct;
+
+    /**
+     * This field was generated by MyBatis Generator.
+     * This field corresponds to the database table custom_url
+     *
+     * @mbg.generated Wed Sep 08 15:22:38 CST 2021
+     */
+    protected List<Criteria> oredCriteria;
+
+    /**
+     * This field was generated by MyBatis Generator.
+     * This field corresponds to the database table custom_url
+     *
+     * @mbg.generated Wed Sep 08 15:22:38 CST 2021
+     */
+    protected Integer offset;
+
+    /**
+     * This field was generated by MyBatis Generator.
+     * This field corresponds to the database table custom_url
+     *
+     * @mbg.generated Wed Sep 08 15:22:38 CST 2021
+     */
+    protected Integer rows;
+
+    /**
+     * This method was generated by MyBatis Generator.
+     * This method corresponds to the database table custom_url
+     *
+     * @mbg.generated Wed Sep 08 15:22:38 CST 2021
+     */
+    public CustomUrlExample() {
+        oredCriteria = new ArrayList<Criteria>();
+    }
+
+    /**
+     * This method was generated by MyBatis Generator.
+     * This method corresponds to the database table custom_url
+     *
+     * @mbg.generated Wed Sep 08 15:22:38 CST 2021
+     */
+    public void setOrderByClause(String orderByClause) {
+        this.orderByClause = orderByClause;
+    }
+
+    /**
+     * This method was generated by MyBatis Generator.
+     * This method corresponds to the database table custom_url
+     *
+     * @mbg.generated Wed Sep 08 15:22:38 CST 2021
+     */
+    public String getOrderByClause() {
+        return orderByClause;
+    }
+
+    /**
+     * This method was generated by MyBatis Generator.
+     * This method corresponds to the database table custom_url
+     *
+     * @mbg.generated Wed Sep 08 15:22:38 CST 2021
+     */
+    public void setDistinct(boolean distinct) {
+        this.distinct = distinct;
+    }
+
+    /**
+     * This method was generated by MyBatis Generator.
+     * This method corresponds to the database table custom_url
+     *
+     * @mbg.generated Wed Sep 08 15:22:38 CST 2021
+     */
+    public boolean isDistinct() {
+        return distinct;
+    }
+
+    /**
+     * This method was generated by MyBatis Generator.
+     * This method corresponds to the database table custom_url
+     *
+     * @mbg.generated Wed Sep 08 15:22:38 CST 2021
+     */
+    public List<Criteria> getOredCriteria() {
+        return oredCriteria;
+    }
+
+    /**
+     * This method was generated by MyBatis Generator.
+     * This method corresponds to the database table custom_url
+     *
+     * @mbg.generated Wed Sep 08 15:22:38 CST 2021
+     */
+    public void or(Criteria criteria) {
+        oredCriteria.add(criteria);
+    }
+
+    /**
+     * This method was generated by MyBatis Generator.
+     * This method corresponds to the database table custom_url
+     *
+     * @mbg.generated Wed Sep 08 15:22:38 CST 2021
+     */
+    public Criteria or() {
+        Criteria criteria = createCriteriaInternal();
+        oredCriteria.add(criteria);
+        return criteria;
+    }
+
+    /**
+     * This method was generated by MyBatis Generator.
+     * This method corresponds to the database table custom_url
+     *
+     * @mbg.generated Wed Sep 08 15:22:38 CST 2021
+     */
+    public CustomUrlExample orderBy(String orderByClause) {
+        this.setOrderByClause(orderByClause);
+        return this;
+    }
+
+    /**
+     * This method was generated by MyBatis Generator.
+     * This method corresponds to the database table custom_url
+     *
+     * @mbg.generated Wed Sep 08 15:22:38 CST 2021
+     */
+    public CustomUrlExample orderBy(String ... orderByClauses) {
+        StringBuffer sb = new StringBuffer();
+        for (int i = 0; i < orderByClauses.length; i++) {
+            sb.append(orderByClauses[i]);
+            if (i < orderByClauses.length - 1) {
+                sb.append(" , ");
+            }
+        }
+        this.setOrderByClause(sb.toString());
+        return this;
+    }
+
+    /**
+     * This method was generated by MyBatis Generator.
+     * This method corresponds to the database table custom_url
+     *
+     * @mbg.generated Wed Sep 08 15:22:38 CST 2021
+     */
+    public Criteria createCriteria() {
+        Criteria criteria = createCriteriaInternal();
+        if (oredCriteria.size() == 0) {
+            oredCriteria.add(criteria);
+        }
+        return criteria;
+    }
+
+    /**
+     * This method was generated by MyBatis Generator.
+     * This method corresponds to the database table custom_url
+     *
+     * @mbg.generated Wed Sep 08 15:22:38 CST 2021
+     */
+    protected Criteria createCriteriaInternal() {
+        Criteria criteria = new Criteria(this);
+        return criteria;
+    }
+
+    /**
+     * This method was generated by MyBatis Generator.
+     * This method corresponds to the database table custom_url
+     *
+     * @mbg.generated Wed Sep 08 15:22:38 CST 2021
+     */
+    public void clear() {
+        oredCriteria.clear();
+        orderByClause = null;
+        distinct = false;
+        rows = null;
+        offset = null;
+    }
+
+    /**
+     * This method was generated by MyBatis Generator.
+     * This method corresponds to the database table custom_url
+     *
+     * @mbg.generated Wed Sep 08 15:22:38 CST 2021
+     */
+    public void setOffset(Integer offset) {
+        this.offset = offset;
+    }
+
+    /**
+     * This method was generated by MyBatis Generator.
+     * This method corresponds to the database table custom_url
+     *
+     * @mbg.generated Wed Sep 08 15:22:38 CST 2021
+     */
+    public Integer getOffset() {
+        return this.offset;
+    }
+
+    /**
+     * This method was generated by MyBatis Generator.
+     * This method corresponds to the database table custom_url
+     *
+     * @mbg.generated Wed Sep 08 15:22:38 CST 2021
+     */
+    public void setRows(Integer rows) {
+        this.rows = rows;
+    }
+
+    /**
+     * This method was generated by MyBatis Generator.
+     * This method corresponds to the database table custom_url
+     *
+     * @mbg.generated Wed Sep 08 15:22:38 CST 2021
+     */
+    public Integer getRows() {
+        return this.rows;
+    }
+
+    /**
+     * This method was generated by MyBatis Generator.
+     * This method corresponds to the database table custom_url
+     *
+     * @mbg.generated Wed Sep 08 15:22:38 CST 2021
+     */
+    public CustomUrlExample limit(Integer rows) {
+        this.rows = rows;
+        return this;
+    }
+
+    /**
+     * This method was generated by MyBatis Generator.
+     * This method corresponds to the database table custom_url
+     *
+     * @mbg.generated Wed Sep 08 15:22:38 CST 2021
+     */
+    public CustomUrlExample limit(Integer offset, Integer rows) {
+        this.offset = offset;
+        this.rows = rows;
+        return this;
+    }
+
+    /**
+     * This method was generated by MyBatis Generator.
+     * This method corresponds to the database table custom_url
+     *
+     * @mbg.generated Wed Sep 08 15:22:38 CST 2021
+     */
+    public CustomUrlExample page(Integer page, Integer pageSize) {
+        this.offset = page * pageSize;
+        this.rows = pageSize;
+        return this;
+    }
+
+    /**
+     * This method was generated by MyBatis Generator.
+     * This method corresponds to the database table custom_url
+     *
+     * @mbg.generated Wed Sep 08 15:22:38 CST 2021
+     */
+    public static Criteria newAndCreateCriteria() {
+        CustomUrlExample example = new CustomUrlExample();
+        return example.createCriteria();
+    }
+
+    /**
+     * This method was generated by MyBatis Generator.
+     * This method corresponds to the database table custom_url
+     *
+     * @mbg.generated Wed Sep 08 15:22:38 CST 2021
+     */
+    public CustomUrlExample when(boolean condition, IExampleWhen then) {
+        if (condition) {
+            then.example(this);
+        }
+        return this;
+    }
+
+    /**
+     * This method was generated by MyBatis Generator.
+     * This method corresponds to the database table custom_url
+     *
+     * @mbg.generated Wed Sep 08 15:22:38 CST 2021
+     */
+    public CustomUrlExample when(boolean condition, IExampleWhen then, IExampleWhen otherwise) {
+        if (condition) {
+            then.example(this);
+        } else {
+            otherwise.example(this);
+        }
+        return this;
+    }
+
+    /**
+     * This class was generated by MyBatis Generator.
+     * This class corresponds to the database table custom_url
+     *
+     * @mbg.generated Wed Sep 08 15:22:38 CST 2021
+     */
+    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 andIdEqualToColumn(CustomUrl.Column column) {
+            addCriterion(new StringBuilder("id = ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andIdNotEqualTo(Integer value) {
+            addCriterion("id <>", value, "id");
+            return (Criteria) this;
+        }
+
+        public Criteria andIdNotEqualToColumn(CustomUrl.Column column) {
+            addCriterion(new StringBuilder("id <> ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andIdGreaterThan(Integer value) {
+            addCriterion("id >", value, "id");
+            return (Criteria) this;
+        }
+
+        public Criteria andIdGreaterThanColumn(CustomUrl.Column column) {
+            addCriterion(new StringBuilder("id > ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andIdGreaterThanOrEqualTo(Integer value) {
+            addCriterion("id >=", value, "id");
+            return (Criteria) this;
+        }
+
+        public Criteria andIdGreaterThanOrEqualToColumn(CustomUrl.Column column) {
+            addCriterion(new StringBuilder("id >= ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andIdLessThan(Integer value) {
+            addCriterion("id <", value, "id");
+            return (Criteria) this;
+        }
+
+        public Criteria andIdLessThanColumn(CustomUrl.Column column) {
+            addCriterion(new StringBuilder("id < ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andIdLessThanOrEqualTo(Integer value) {
+            addCriterion("id <=", value, "id");
+            return (Criteria) this;
+        }
+
+        public Criteria andIdLessThanOrEqualToColumn(CustomUrl.Column column) {
+            addCriterion(new StringBuilder("id <= ").append(column.getEscapedColumnName()).toString());
+            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 andCustomIdIsNull() {
+            addCriterion("custom_id is null");
+            return (Criteria) this;
+        }
+
+        public Criteria andCustomIdIsNotNull() {
+            addCriterion("custom_id is not null");
+            return (Criteria) this;
+        }
+
+        public Criteria andCustomIdEqualTo(Integer value) {
+            addCriterion("custom_id =", value, "customId");
+            return (Criteria) this;
+        }
+
+        public Criteria andCustomIdEqualToColumn(CustomUrl.Column column) {
+            addCriterion(new StringBuilder("custom_id = ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andCustomIdNotEqualTo(Integer value) {
+            addCriterion("custom_id <>", value, "customId");
+            return (Criteria) this;
+        }
+
+        public Criteria andCustomIdNotEqualToColumn(CustomUrl.Column column) {
+            addCriterion(new StringBuilder("custom_id <> ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andCustomIdGreaterThan(Integer value) {
+            addCriterion("custom_id >", value, "customId");
+            return (Criteria) this;
+        }
+
+        public Criteria andCustomIdGreaterThanColumn(CustomUrl.Column column) {
+            addCriterion(new StringBuilder("custom_id > ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andCustomIdGreaterThanOrEqualTo(Integer value) {
+            addCriterion("custom_id >=", value, "customId");
+            return (Criteria) this;
+        }
+
+        public Criteria andCustomIdGreaterThanOrEqualToColumn(CustomUrl.Column column) {
+            addCriterion(new StringBuilder("custom_id >= ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andCustomIdLessThan(Integer value) {
+            addCriterion("custom_id <", value, "customId");
+            return (Criteria) this;
+        }
+
+        public Criteria andCustomIdLessThanColumn(CustomUrl.Column column) {
+            addCriterion(new StringBuilder("custom_id < ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andCustomIdLessThanOrEqualTo(Integer value) {
+            addCriterion("custom_id <=", value, "customId");
+            return (Criteria) this;
+        }
+
+        public Criteria andCustomIdLessThanOrEqualToColumn(CustomUrl.Column column) {
+            addCriterion(new StringBuilder("custom_id <= ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andCustomIdIn(List<Integer> values) {
+            addCriterion("custom_id in", values, "customId");
+            return (Criteria) this;
+        }
+
+        public Criteria andCustomIdNotIn(List<Integer> values) {
+            addCriterion("custom_id not in", values, "customId");
+            return (Criteria) this;
+        }
+
+        public Criteria andCustomIdBetween(Integer value1, Integer value2) {
+            addCriterion("custom_id between", value1, value2, "customId");
+            return (Criteria) this;
+        }
+
+        public Criteria andCustomIdNotBetween(Integer value1, Integer value2) {
+            addCriterion("custom_id not between", value1, value2, "customId");
+            return (Criteria) this;
+        }
+
+        public Criteria andIdxIsNull() {
+            addCriterion("idx is null");
+            return (Criteria) this;
+        }
+
+        public Criteria andIdxIsNotNull() {
+            addCriterion("idx is not null");
+            return (Criteria) this;
+        }
+
+        public Criteria andIdxEqualTo(Byte value) {
+            addCriterion("idx =", value, "idx");
+            return (Criteria) this;
+        }
+
+        public Criteria andIdxEqualToColumn(CustomUrl.Column column) {
+            addCriterion(new StringBuilder("idx = ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andIdxNotEqualTo(Byte value) {
+            addCriterion("idx <>", value, "idx");
+            return (Criteria) this;
+        }
+
+        public Criteria andIdxNotEqualToColumn(CustomUrl.Column column) {
+            addCriterion(new StringBuilder("idx <> ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andIdxGreaterThan(Byte value) {
+            addCriterion("idx >", value, "idx");
+            return (Criteria) this;
+        }
+
+        public Criteria andIdxGreaterThanColumn(CustomUrl.Column column) {
+            addCriterion(new StringBuilder("idx > ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andIdxGreaterThanOrEqualTo(Byte value) {
+            addCriterion("idx >=", value, "idx");
+            return (Criteria) this;
+        }
+
+        public Criteria andIdxGreaterThanOrEqualToColumn(CustomUrl.Column column) {
+            addCriterion(new StringBuilder("idx >= ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andIdxLessThan(Byte value) {
+            addCriterion("idx <", value, "idx");
+            return (Criteria) this;
+        }
+
+        public Criteria andIdxLessThanColumn(CustomUrl.Column column) {
+            addCriterion(new StringBuilder("idx < ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andIdxLessThanOrEqualTo(Byte value) {
+            addCriterion("idx <=", value, "idx");
+            return (Criteria) this;
+        }
+
+        public Criteria andIdxLessThanOrEqualToColumn(CustomUrl.Column column) {
+            addCriterion(new StringBuilder("idx <= ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andIdxIn(List<Byte> values) {
+            addCriterion("idx in", values, "idx");
+            return (Criteria) this;
+        }
+
+        public Criteria andIdxNotIn(List<Byte> values) {
+            addCriterion("idx not in", values, "idx");
+            return (Criteria) this;
+        }
+
+        public Criteria andIdxBetween(Byte value1, Byte value2) {
+            addCriterion("idx between", value1, value2, "idx");
+            return (Criteria) this;
+        }
+
+        public Criteria andIdxNotBetween(Byte value1, Byte value2) {
+            addCriterion("idx not between", value1, value2, "idx");
+            return (Criteria) this;
+        }
+
+        public Criteria andCustomMediaPushIdIsNull() {
+            addCriterion("custom_media_push_id is null");
+            return (Criteria) this;
+        }
+
+        public Criteria andCustomMediaPushIdIsNotNull() {
+            addCriterion("custom_media_push_id is not null");
+            return (Criteria) this;
+        }
+
+        public Criteria andCustomMediaPushIdEqualTo(Integer value) {
+            addCriterion("custom_media_push_id =", value, "customMediaPushId");
+            return (Criteria) this;
+        }
+
+        public Criteria andCustomMediaPushIdEqualToColumn(CustomUrl.Column column) {
+            addCriterion(new StringBuilder("custom_media_push_id = ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andCustomMediaPushIdNotEqualTo(Integer value) {
+            addCriterion("custom_media_push_id <>", value, "customMediaPushId");
+            return (Criteria) this;
+        }
+
+        public Criteria andCustomMediaPushIdNotEqualToColumn(CustomUrl.Column column) {
+            addCriterion(new StringBuilder("custom_media_push_id <> ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andCustomMediaPushIdGreaterThan(Integer value) {
+            addCriterion("custom_media_push_id >", value, "customMediaPushId");
+            return (Criteria) this;
+        }
+
+        public Criteria andCustomMediaPushIdGreaterThanColumn(CustomUrl.Column column) {
+            addCriterion(new StringBuilder("custom_media_push_id > ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andCustomMediaPushIdGreaterThanOrEqualTo(Integer value) {
+            addCriterion("custom_media_push_id >=", value, "customMediaPushId");
+            return (Criteria) this;
+        }
+
+        public Criteria andCustomMediaPushIdGreaterThanOrEqualToColumn(CustomUrl.Column column) {
+            addCriterion(new StringBuilder("custom_media_push_id >= ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andCustomMediaPushIdLessThan(Integer value) {
+            addCriterion("custom_media_push_id <", value, "customMediaPushId");
+            return (Criteria) this;
+        }
+
+        public Criteria andCustomMediaPushIdLessThanColumn(CustomUrl.Column column) {
+            addCriterion(new StringBuilder("custom_media_push_id < ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andCustomMediaPushIdLessThanOrEqualTo(Integer value) {
+            addCriterion("custom_media_push_id <=", value, "customMediaPushId");
+            return (Criteria) this;
+        }
+
+        public Criteria andCustomMediaPushIdLessThanOrEqualToColumn(CustomUrl.Column column) {
+            addCriterion(new StringBuilder("custom_media_push_id <= ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andCustomMediaPushIdIn(List<Integer> values) {
+            addCriterion("custom_media_push_id in", values, "customMediaPushId");
+            return (Criteria) this;
+        }
+
+        public Criteria andCustomMediaPushIdNotIn(List<Integer> values) {
+            addCriterion("custom_media_push_id not in", values, "customMediaPushId");
+            return (Criteria) this;
+        }
+
+        public Criteria andCustomMediaPushIdBetween(Integer value1, Integer value2) {
+            addCriterion("custom_media_push_id between", value1, value2, "customMediaPushId");
+            return (Criteria) this;
+        }
+
+        public Criteria andCustomMediaPushIdNotBetween(Integer value1, Integer value2) {
+            addCriterion("custom_media_push_id not between", value1, value2, "customMediaPushId");
+            return (Criteria) this;
+        }
+
+        public Criteria andTitleIsNull() {
+            addCriterion("title is null");
+            return (Criteria) this;
+        }
+
+        public Criteria andTitleIsNotNull() {
+            addCriterion("title is not null");
+            return (Criteria) this;
+        }
+
+        public Criteria andTitleEqualTo(String value) {
+            addCriterion("title =", value, "title");
+            return (Criteria) this;
+        }
+
+        public Criteria andTitleEqualToColumn(CustomUrl.Column column) {
+            addCriterion(new StringBuilder("title = ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andTitleNotEqualTo(String value) {
+            addCriterion("title <>", value, "title");
+            return (Criteria) this;
+        }
+
+        public Criteria andTitleNotEqualToColumn(CustomUrl.Column column) {
+            addCriterion(new StringBuilder("title <> ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andTitleGreaterThan(String value) {
+            addCriterion("title >", value, "title");
+            return (Criteria) this;
+        }
+
+        public Criteria andTitleGreaterThanColumn(CustomUrl.Column column) {
+            addCriterion(new StringBuilder("title > ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andTitleGreaterThanOrEqualTo(String value) {
+            addCriterion("title >=", value, "title");
+            return (Criteria) this;
+        }
+
+        public Criteria andTitleGreaterThanOrEqualToColumn(CustomUrl.Column column) {
+            addCriterion(new StringBuilder("title >= ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andTitleLessThan(String value) {
+            addCriterion("title <", value, "title");
+            return (Criteria) this;
+        }
+
+        public Criteria andTitleLessThanColumn(CustomUrl.Column column) {
+            addCriterion(new StringBuilder("title < ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andTitleLessThanOrEqualTo(String value) {
+            addCriterion("title <=", value, "title");
+            return (Criteria) this;
+        }
+
+        public Criteria andTitleLessThanOrEqualToColumn(CustomUrl.Column column) {
+            addCriterion(new StringBuilder("title <= ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andTitleLike(String value) {
+            addCriterion("title like", value, "title");
+            return (Criteria) this;
+        }
+
+        public Criteria andTitleNotLike(String value) {
+            addCriterion("title not like", value, "title");
+            return (Criteria) this;
+        }
+
+        public Criteria andTitleIn(List<String> values) {
+            addCriterion("title in", values, "title");
+            return (Criteria) this;
+        }
+
+        public Criteria andTitleNotIn(List<String> values) {
+            addCriterion("title not in", values, "title");
+            return (Criteria) this;
+        }
+
+        public Criteria andTitleBetween(String value1, String value2) {
+            addCriterion("title between", value1, value2, "title");
+            return (Criteria) this;
+        }
+
+        public Criteria andTitleNotBetween(String value1, String value2) {
+            addCriterion("title not between", value1, value2, "title");
+            return (Criteria) this;
+        }
+
+        public Criteria andMessageTypeIsNull() {
+            addCriterion("message_type is null");
+            return (Criteria) this;
+        }
+
+        public Criteria andMessageTypeIsNotNull() {
+            addCriterion("message_type is not null");
+            return (Criteria) this;
+        }
+
+        public Criteria andMessageTypeEqualTo(String value) {
+            addCriterion("message_type =", value, "messageType");
+            return (Criteria) this;
+        }
+
+        public Criteria andMessageTypeEqualToColumn(CustomUrl.Column column) {
+            addCriterion(new StringBuilder("message_type = ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andMessageTypeNotEqualTo(String value) {
+            addCriterion("message_type <>", value, "messageType");
+            return (Criteria) this;
+        }
+
+        public Criteria andMessageTypeNotEqualToColumn(CustomUrl.Column column) {
+            addCriterion(new StringBuilder("message_type <> ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andMessageTypeGreaterThan(String value) {
+            addCriterion("message_type >", value, "messageType");
+            return (Criteria) this;
+        }
+
+        public Criteria andMessageTypeGreaterThanColumn(CustomUrl.Column column) {
+            addCriterion(new StringBuilder("message_type > ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andMessageTypeGreaterThanOrEqualTo(String value) {
+            addCriterion("message_type >=", value, "messageType");
+            return (Criteria) this;
+        }
+
+        public Criteria andMessageTypeGreaterThanOrEqualToColumn(CustomUrl.Column column) {
+            addCriterion(new StringBuilder("message_type >= ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andMessageTypeLessThan(String value) {
+            addCriterion("message_type <", value, "messageType");
+            return (Criteria) this;
+        }
+
+        public Criteria andMessageTypeLessThanColumn(CustomUrl.Column column) {
+            addCriterion(new StringBuilder("message_type < ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andMessageTypeLessThanOrEqualTo(String value) {
+            addCriterion("message_type <=", value, "messageType");
+            return (Criteria) this;
+        }
+
+        public Criteria andMessageTypeLessThanOrEqualToColumn(CustomUrl.Column column) {
+            addCriterion(new StringBuilder("message_type <= ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andMessageTypeLike(String value) {
+            addCriterion("message_type like", value, "messageType");
+            return (Criteria) this;
+        }
+
+        public Criteria andMessageTypeNotLike(String value) {
+            addCriterion("message_type not like", value, "messageType");
+            return (Criteria) this;
+        }
+
+        public Criteria andMessageTypeIn(List<String> values) {
+            addCriterion("message_type in", values, "messageType");
+            return (Criteria) this;
+        }
+
+        public Criteria andMessageTypeNotIn(List<String> values) {
+            addCriterion("message_type not in", values, "messageType");
+            return (Criteria) this;
+        }
+
+        public Criteria andMessageTypeBetween(String value1, String value2) {
+            addCriterion("message_type between", value1, value2, "messageType");
+            return (Criteria) this;
+        }
+
+        public Criteria andMessageTypeNotBetween(String value1, String value2) {
+            addCriterion("message_type not between", value1, value2, "messageType");
+            return (Criteria) this;
+        }
+
+        public Criteria andUrlIsNull() {
+            addCriterion("url is null");
+            return (Criteria) this;
+        }
+
+        public Criteria andUrlIsNotNull() {
+            addCriterion("url is not null");
+            return (Criteria) this;
+        }
+
+        public Criteria andUrlEqualTo(String value) {
+            addCriterion("url =", value, "url");
+            return (Criteria) this;
+        }
+
+        public Criteria andUrlEqualToColumn(CustomUrl.Column column) {
+            addCriterion(new StringBuilder("url = ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andUrlNotEqualTo(String value) {
+            addCriterion("url <>", value, "url");
+            return (Criteria) this;
+        }
+
+        public Criteria andUrlNotEqualToColumn(CustomUrl.Column column) {
+            addCriterion(new StringBuilder("url <> ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andUrlGreaterThan(String value) {
+            addCriterion("url >", value, "url");
+            return (Criteria) this;
+        }
+
+        public Criteria andUrlGreaterThanColumn(CustomUrl.Column column) {
+            addCriterion(new StringBuilder("url > ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andUrlGreaterThanOrEqualTo(String value) {
+            addCriterion("url >=", value, "url");
+            return (Criteria) this;
+        }
+
+        public Criteria andUrlGreaterThanOrEqualToColumn(CustomUrl.Column column) {
+            addCriterion(new StringBuilder("url >= ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andUrlLessThan(String value) {
+            addCriterion("url <", value, "url");
+            return (Criteria) this;
+        }
+
+        public Criteria andUrlLessThanColumn(CustomUrl.Column column) {
+            addCriterion(new StringBuilder("url < ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andUrlLessThanOrEqualTo(String value) {
+            addCriterion("url <=", value, "url");
+            return (Criteria) this;
+        }
+
+        public Criteria andUrlLessThanOrEqualToColumn(CustomUrl.Column column) {
+            addCriterion(new StringBuilder("url <= ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andUrlLike(String value) {
+            addCriterion("url like", value, "url");
+            return (Criteria) this;
+        }
+
+        public Criteria andUrlNotLike(String value) {
+            addCriterion("url not like", value, "url");
+            return (Criteria) this;
+        }
+
+        public Criteria andUrlIn(List<String> values) {
+            addCriterion("url in", values, "url");
+            return (Criteria) this;
+        }
+
+        public Criteria andUrlNotIn(List<String> values) {
+            addCriterion("url not in", values, "url");
+            return (Criteria) this;
+        }
+
+        public Criteria andUrlBetween(String value1, String value2) {
+            addCriterion("url between", value1, value2, "url");
+            return (Criteria) this;
+        }
+
+        public Criteria andUrlNotBetween(String value1, String value2) {
+            addCriterion("url not between", value1, value2, "url");
+            return (Criteria) this;
+        }
+
+        public Criteria andTypeIsNull() {
+            addCriterion("type is null");
+            return (Criteria) this;
+        }
+
+        public Criteria andTypeIsNotNull() {
+            addCriterion("type is not null");
+            return (Criteria) this;
+        }
+
+        public Criteria andTypeEqualTo(String value) {
+            addCriterion("type =", value, "type");
+            return (Criteria) this;
+        }
+
+        public Criteria andTypeEqualToColumn(CustomUrl.Column column) {
+            addCriterion(new StringBuilder("type = ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andTypeNotEqualTo(String value) {
+            addCriterion("type <>", value, "type");
+            return (Criteria) this;
+        }
+
+        public Criteria andTypeNotEqualToColumn(CustomUrl.Column column) {
+            addCriterion(new StringBuilder("type <> ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andTypeGreaterThan(String value) {
+            addCriterion("type >", value, "type");
+            return (Criteria) this;
+        }
+
+        public Criteria andTypeGreaterThanColumn(CustomUrl.Column column) {
+            addCriterion(new StringBuilder("type > ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andTypeGreaterThanOrEqualTo(String value) {
+            addCriterion("type >=", value, "type");
+            return (Criteria) this;
+        }
+
+        public Criteria andTypeGreaterThanOrEqualToColumn(CustomUrl.Column column) {
+            addCriterion(new StringBuilder("type >= ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andTypeLessThan(String value) {
+            addCriterion("type <", value, "type");
+            return (Criteria) this;
+        }
+
+        public Criteria andTypeLessThanColumn(CustomUrl.Column column) {
+            addCriterion(new StringBuilder("type < ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andTypeLessThanOrEqualTo(String value) {
+            addCriterion("type <=", value, "type");
+            return (Criteria) this;
+        }
+
+        public Criteria andTypeLessThanOrEqualToColumn(CustomUrl.Column column) {
+            addCriterion(new StringBuilder("type <= ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andTypeLike(String value) {
+            addCriterion("type like", value, "type");
+            return (Criteria) this;
+        }
+
+        public Criteria andTypeNotLike(String value) {
+            addCriterion("type not like", value, "type");
+            return (Criteria) this;
+        }
+
+        public Criteria andTypeIn(List<String> values) {
+            addCriterion("type in", values, "type");
+            return (Criteria) this;
+        }
+
+        public Criteria andTypeNotIn(List<String> values) {
+            addCriterion("type not in", values, "type");
+            return (Criteria) this;
+        }
+
+        public Criteria andTypeBetween(String value1, String value2) {
+            addCriterion("type between", value1, value2, "type");
+            return (Criteria) this;
+        }
+
+        public Criteria andTypeNotBetween(String value1, String value2) {
+            addCriterion("type not between", value1, value2, "type");
+            return (Criteria) this;
+        }
+
+        public Criteria andOfficialAccountIdIsNull() {
+            addCriterion("official_account_id is null");
+            return (Criteria) this;
+        }
+
+        public Criteria andOfficialAccountIdIsNotNull() {
+            addCriterion("official_account_id is not null");
+            return (Criteria) this;
+        }
+
+        public Criteria andOfficialAccountIdEqualTo(Integer value) {
+            addCriterion("official_account_id =", value, "officialAccountId");
+            return (Criteria) this;
+        }
+
+        public Criteria andOfficialAccountIdEqualToColumn(CustomUrl.Column column) {
+            addCriterion(new StringBuilder("official_account_id = ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andOfficialAccountIdNotEqualTo(Integer value) {
+            addCriterion("official_account_id <>", value, "officialAccountId");
+            return (Criteria) this;
+        }
+
+        public Criteria andOfficialAccountIdNotEqualToColumn(CustomUrl.Column column) {
+            addCriterion(new StringBuilder("official_account_id <> ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andOfficialAccountIdGreaterThan(Integer value) {
+            addCriterion("official_account_id >", value, "officialAccountId");
+            return (Criteria) this;
+        }
+
+        public Criteria andOfficialAccountIdGreaterThanColumn(CustomUrl.Column column) {
+            addCriterion(new StringBuilder("official_account_id > ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andOfficialAccountIdGreaterThanOrEqualTo(Integer value) {
+            addCriterion("official_account_id >=", value, "officialAccountId");
+            return (Criteria) this;
+        }
+
+        public Criteria andOfficialAccountIdGreaterThanOrEqualToColumn(CustomUrl.Column column) {
+            addCriterion(new StringBuilder("official_account_id >= ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andOfficialAccountIdLessThan(Integer value) {
+            addCriterion("official_account_id <", value, "officialAccountId");
+            return (Criteria) this;
+        }
+
+        public Criteria andOfficialAccountIdLessThanColumn(CustomUrl.Column column) {
+            addCriterion(new StringBuilder("official_account_id < ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andOfficialAccountIdLessThanOrEqualTo(Integer value) {
+            addCriterion("official_account_id <=", value, "officialAccountId");
+            return (Criteria) this;
+        }
+
+        public Criteria andOfficialAccountIdLessThanOrEqualToColumn(CustomUrl.Column column) {
+            addCriterion(new StringBuilder("official_account_id <= ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andOfficialAccountIdIn(List<Integer> values) {
+            addCriterion("official_account_id in", values, "officialAccountId");
+            return (Criteria) this;
+        }
+
+        public Criteria andOfficialAccountIdNotIn(List<Integer> values) {
+            addCriterion("official_account_id not in", values, "officialAccountId");
+            return (Criteria) this;
+        }
+
+        public Criteria andOfficialAccountIdBetween(Integer value1, Integer value2) {
+            addCriterion("official_account_id between", value1, value2, "officialAccountId");
+            return (Criteria) this;
+        }
+
+        public Criteria andOfficialAccountIdNotBetween(Integer value1, Integer value2) {
+            addCriterion("official_account_id not between", value1, value2, "officialAccountId");
+            return (Criteria) this;
+        }
+
+        public Criteria andOfficialAccountTypeIsNull() {
+            addCriterion("official_account_type is null");
+            return (Criteria) this;
+        }
+
+        public Criteria andOfficialAccountTypeIsNotNull() {
+            addCriterion("official_account_type is not null");
+            return (Criteria) this;
+        }
+
+        public Criteria andOfficialAccountTypeEqualTo(String value) {
+            addCriterion("official_account_type =", value, "officialAccountType");
+            return (Criteria) this;
+        }
+
+        public Criteria andOfficialAccountTypeEqualToColumn(CustomUrl.Column column) {
+            addCriterion(new StringBuilder("official_account_type = ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andOfficialAccountTypeNotEqualTo(String value) {
+            addCriterion("official_account_type <>", value, "officialAccountType");
+            return (Criteria) this;
+        }
+
+        public Criteria andOfficialAccountTypeNotEqualToColumn(CustomUrl.Column column) {
+            addCriterion(new StringBuilder("official_account_type <> ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andOfficialAccountTypeGreaterThan(String value) {
+            addCriterion("official_account_type >", value, "officialAccountType");
+            return (Criteria) this;
+        }
+
+        public Criteria andOfficialAccountTypeGreaterThanColumn(CustomUrl.Column column) {
+            addCriterion(new StringBuilder("official_account_type > ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andOfficialAccountTypeGreaterThanOrEqualTo(String value) {
+            addCriterion("official_account_type >=", value, "officialAccountType");
+            return (Criteria) this;
+        }
+
+        public Criteria andOfficialAccountTypeGreaterThanOrEqualToColumn(CustomUrl.Column column) {
+            addCriterion(new StringBuilder("official_account_type >= ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andOfficialAccountTypeLessThan(String value) {
+            addCriterion("official_account_type <", value, "officialAccountType");
+            return (Criteria) this;
+        }
+
+        public Criteria andOfficialAccountTypeLessThanColumn(CustomUrl.Column column) {
+            addCriterion(new StringBuilder("official_account_type < ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andOfficialAccountTypeLessThanOrEqualTo(String value) {
+            addCriterion("official_account_type <=", value, "officialAccountType");
+            return (Criteria) this;
+        }
+
+        public Criteria andOfficialAccountTypeLessThanOrEqualToColumn(CustomUrl.Column column) {
+            addCriterion(new StringBuilder("official_account_type <= ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andOfficialAccountTypeLike(String value) {
+            addCriterion("official_account_type like", value, "officialAccountType");
+            return (Criteria) this;
+        }
+
+        public Criteria andOfficialAccountTypeNotLike(String value) {
+            addCriterion("official_account_type not like", value, "officialAccountType");
+            return (Criteria) this;
+        }
+
+        public Criteria andOfficialAccountTypeIn(List<String> values) {
+            addCriterion("official_account_type in", values, "officialAccountType");
+            return (Criteria) this;
+        }
+
+        public Criteria andOfficialAccountTypeNotIn(List<String> values) {
+            addCriterion("official_account_type not in", values, "officialAccountType");
+            return (Criteria) this;
+        }
+
+        public Criteria andOfficialAccountTypeBetween(String value1, String value2) {
+            addCriterion("official_account_type between", value1, value2, "officialAccountType");
+            return (Criteria) this;
+        }
+
+        public Criteria andOfficialAccountTypeNotBetween(String value1, String value2) {
+            addCriterion("official_account_type not between", value1, value2, "officialAccountType");
+            return (Criteria) this;
+        }
+
+        public Criteria andOfficialAccountNameIsNull() {
+            addCriterion("official_account_name is null");
+            return (Criteria) this;
+        }
+
+        public Criteria andOfficialAccountNameIsNotNull() {
+            addCriterion("official_account_name is not null");
+            return (Criteria) this;
+        }
+
+        public Criteria andOfficialAccountNameEqualTo(String value) {
+            addCriterion("official_account_name =", value, "officialAccountName");
+            return (Criteria) this;
+        }
+
+        public Criteria andOfficialAccountNameEqualToColumn(CustomUrl.Column column) {
+            addCriterion(new StringBuilder("official_account_name = ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andOfficialAccountNameNotEqualTo(String value) {
+            addCriterion("official_account_name <>", value, "officialAccountName");
+            return (Criteria) this;
+        }
+
+        public Criteria andOfficialAccountNameNotEqualToColumn(CustomUrl.Column column) {
+            addCriterion(new StringBuilder("official_account_name <> ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andOfficialAccountNameGreaterThan(String value) {
+            addCriterion("official_account_name >", value, "officialAccountName");
+            return (Criteria) this;
+        }
+
+        public Criteria andOfficialAccountNameGreaterThanColumn(CustomUrl.Column column) {
+            addCriterion(new StringBuilder("official_account_name > ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andOfficialAccountNameGreaterThanOrEqualTo(String value) {
+            addCriterion("official_account_name >=", value, "officialAccountName");
+            return (Criteria) this;
+        }
+
+        public Criteria andOfficialAccountNameGreaterThanOrEqualToColumn(CustomUrl.Column column) {
+            addCriterion(new StringBuilder("official_account_name >= ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andOfficialAccountNameLessThan(String value) {
+            addCriterion("official_account_name <", value, "officialAccountName");
+            return (Criteria) this;
+        }
+
+        public Criteria andOfficialAccountNameLessThanColumn(CustomUrl.Column column) {
+            addCriterion(new StringBuilder("official_account_name < ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andOfficialAccountNameLessThanOrEqualTo(String value) {
+            addCriterion("official_account_name <=", value, "officialAccountName");
+            return (Criteria) this;
+        }
+
+        public Criteria andOfficialAccountNameLessThanOrEqualToColumn(CustomUrl.Column column) {
+            addCriterion(new StringBuilder("official_account_name <= ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andOfficialAccountNameLike(String value) {
+            addCriterion("official_account_name like", value, "officialAccountName");
+            return (Criteria) this;
+        }
+
+        public Criteria andOfficialAccountNameNotLike(String value) {
+            addCriterion("official_account_name not like", value, "officialAccountName");
+            return (Criteria) this;
+        }
+
+        public Criteria andOfficialAccountNameIn(List<String> values) {
+            addCriterion("official_account_name in", values, "officialAccountName");
+            return (Criteria) this;
+        }
+
+        public Criteria andOfficialAccountNameNotIn(List<String> values) {
+            addCriterion("official_account_name not in", values, "officialAccountName");
+            return (Criteria) this;
+        }
+
+        public Criteria andOfficialAccountNameBetween(String value1, String value2) {
+            addCriterion("official_account_name between", value1, value2, "officialAccountName");
+            return (Criteria) this;
+        }
+
+        public Criteria andOfficialAccountNameNotBetween(String value1, String value2) {
+            addCriterion("official_account_name not between", value1, value2, "officialAccountName");
+            return (Criteria) this;
+        }
+
+        public Criteria andPushTypeIsNull() {
+            addCriterion("push_type is null");
+            return (Criteria) this;
+        }
+
+        public Criteria andPushTypeIsNotNull() {
+            addCriterion("push_type is not null");
+            return (Criteria) this;
+        }
+
+        public Criteria andPushTypeEqualTo(String value) {
+            addCriterion("push_type =", value, "pushType");
+            return (Criteria) this;
+        }
+
+        public Criteria andPushTypeEqualToColumn(CustomUrl.Column column) {
+            addCriterion(new StringBuilder("push_type = ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andPushTypeNotEqualTo(String value) {
+            addCriterion("push_type <>", value, "pushType");
+            return (Criteria) this;
+        }
+
+        public Criteria andPushTypeNotEqualToColumn(CustomUrl.Column column) {
+            addCriterion(new StringBuilder("push_type <> ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andPushTypeGreaterThan(String value) {
+            addCriterion("push_type >", value, "pushType");
+            return (Criteria) this;
+        }
+
+        public Criteria andPushTypeGreaterThanColumn(CustomUrl.Column column) {
+            addCriterion(new StringBuilder("push_type > ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andPushTypeGreaterThanOrEqualTo(String value) {
+            addCriterion("push_type >=", value, "pushType");
+            return (Criteria) this;
+        }
+
+        public Criteria andPushTypeGreaterThanOrEqualToColumn(CustomUrl.Column column) {
+            addCriterion(new StringBuilder("push_type >= ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andPushTypeLessThan(String value) {
+            addCriterion("push_type <", value, "pushType");
+            return (Criteria) this;
+        }
+
+        public Criteria andPushTypeLessThanColumn(CustomUrl.Column column) {
+            addCriterion(new StringBuilder("push_type < ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andPushTypeLessThanOrEqualTo(String value) {
+            addCriterion("push_type <=", value, "pushType");
+            return (Criteria) this;
+        }
+
+        public Criteria andPushTypeLessThanOrEqualToColumn(CustomUrl.Column column) {
+            addCriterion(new StringBuilder("push_type <= ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andPushTypeLike(String value) {
+            addCriterion("push_type like", value, "pushType");
+            return (Criteria) this;
+        }
+
+        public Criteria andPushTypeNotLike(String value) {
+            addCriterion("push_type not like", value, "pushType");
+            return (Criteria) this;
+        }
+
+        public Criteria andPushTypeIn(List<String> values) {
+            addCriterion("push_type in", values, "pushType");
+            return (Criteria) this;
+        }
+
+        public Criteria andPushTypeNotIn(List<String> values) {
+            addCriterion("push_type not in", values, "pushType");
+            return (Criteria) this;
+        }
+
+        public Criteria andPushTypeBetween(String value1, String value2) {
+            addCriterion("push_type between", value1, value2, "pushType");
+            return (Criteria) this;
+        }
+
+        public Criteria andPushTypeNotBetween(String value1, String value2) {
+            addCriterion("push_type not between", value1, value2, "pushType");
+            return (Criteria) this;
+        }
+
+        public Criteria andBookIdIsNull() {
+            addCriterion("book_id is null");
+            return (Criteria) this;
+        }
+
+        public Criteria andBookIdIsNotNull() {
+            addCriterion("book_id is not null");
+            return (Criteria) this;
+        }
+
+        public Criteria andBookIdEqualTo(Long value) {
+            addCriterion("book_id =", value, "bookId");
+            return (Criteria) this;
+        }
+
+        public Criteria andBookIdEqualToColumn(CustomUrl.Column column) {
+            addCriterion(new StringBuilder("book_id = ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andBookIdNotEqualTo(Long value) {
+            addCriterion("book_id <>", value, "bookId");
+            return (Criteria) this;
+        }
+
+        public Criteria andBookIdNotEqualToColumn(CustomUrl.Column column) {
+            addCriterion(new StringBuilder("book_id <> ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andBookIdGreaterThan(Long value) {
+            addCriterion("book_id >", value, "bookId");
+            return (Criteria) this;
+        }
+
+        public Criteria andBookIdGreaterThanColumn(CustomUrl.Column column) {
+            addCriterion(new StringBuilder("book_id > ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andBookIdGreaterThanOrEqualTo(Long value) {
+            addCriterion("book_id >=", value, "bookId");
+            return (Criteria) this;
+        }
+
+        public Criteria andBookIdGreaterThanOrEqualToColumn(CustomUrl.Column column) {
+            addCriterion(new StringBuilder("book_id >= ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andBookIdLessThan(Long value) {
+            addCriterion("book_id <", value, "bookId");
+            return (Criteria) this;
+        }
+
+        public Criteria andBookIdLessThanColumn(CustomUrl.Column column) {
+            addCriterion(new StringBuilder("book_id < ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andBookIdLessThanOrEqualTo(Long value) {
+            addCriterion("book_id <=", value, "bookId");
+            return (Criteria) this;
+        }
+
+        public Criteria andBookIdLessThanOrEqualToColumn(CustomUrl.Column column) {
+            addCriterion(new StringBuilder("book_id <= ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andBookIdIn(List<Long> values) {
+            addCriterion("book_id in", values, "bookId");
+            return (Criteria) this;
+        }
+
+        public Criteria andBookIdNotIn(List<Long> values) {
+            addCriterion("book_id not in", values, "bookId");
+            return (Criteria) this;
+        }
+
+        public Criteria andBookIdBetween(Long value1, Long value2) {
+            addCriterion("book_id between", value1, value2, "bookId");
+            return (Criteria) this;
+        }
+
+        public Criteria andBookIdNotBetween(Long value1, Long value2) {
+            addCriterion("book_id not between", value1, value2, "bookId");
+            return (Criteria) this;
+        }
+
+        public Criteria andBookNameIsNull() {
+            addCriterion("book_name is null");
+            return (Criteria) this;
+        }
+
+        public Criteria andBookNameIsNotNull() {
+            addCriterion("book_name is not null");
+            return (Criteria) this;
+        }
+
+        public Criteria andBookNameEqualTo(String value) {
+            addCriterion("book_name =", value, "bookName");
+            return (Criteria) this;
+        }
+
+        public Criteria andBookNameEqualToColumn(CustomUrl.Column column) {
+            addCriterion(new StringBuilder("book_name = ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andBookNameNotEqualTo(String value) {
+            addCriterion("book_name <>", value, "bookName");
+            return (Criteria) this;
+        }
+
+        public Criteria andBookNameNotEqualToColumn(CustomUrl.Column column) {
+            addCriterion(new StringBuilder("book_name <> ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andBookNameGreaterThan(String value) {
+            addCriterion("book_name >", value, "bookName");
+            return (Criteria) this;
+        }
+
+        public Criteria andBookNameGreaterThanColumn(CustomUrl.Column column) {
+            addCriterion(new StringBuilder("book_name > ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andBookNameGreaterThanOrEqualTo(String value) {
+            addCriterion("book_name >=", value, "bookName");
+            return (Criteria) this;
+        }
+
+        public Criteria andBookNameGreaterThanOrEqualToColumn(CustomUrl.Column column) {
+            addCriterion(new StringBuilder("book_name >= ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andBookNameLessThan(String value) {
+            addCriterion("book_name <", value, "bookName");
+            return (Criteria) this;
+        }
+
+        public Criteria andBookNameLessThanColumn(CustomUrl.Column column) {
+            addCriterion(new StringBuilder("book_name < ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andBookNameLessThanOrEqualTo(String value) {
+            addCriterion("book_name <=", value, "bookName");
+            return (Criteria) this;
+        }
+
+        public Criteria andBookNameLessThanOrEqualToColumn(CustomUrl.Column column) {
+            addCriterion(new StringBuilder("book_name <= ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andBookNameLike(String value) {
+            addCriterion("book_name like", value, "bookName");
+            return (Criteria) this;
+        }
+
+        public Criteria andBookNameNotLike(String value) {
+            addCriterion("book_name not like", value, "bookName");
+            return (Criteria) this;
+        }
+
+        public Criteria andBookNameIn(List<String> values) {
+            addCriterion("book_name in", values, "bookName");
+            return (Criteria) this;
+        }
+
+        public Criteria andBookNameNotIn(List<String> values) {
+            addCriterion("book_name not in", values, "bookName");
+            return (Criteria) this;
+        }
+
+        public Criteria andBookNameBetween(String value1, String value2) {
+            addCriterion("book_name between", value1, value2, "bookName");
+            return (Criteria) this;
+        }
+
+        public Criteria andBookNameNotBetween(String value1, String value2) {
+            addCriterion("book_name not between", value1, value2, "bookName");
+            return (Criteria) this;
+        }
+
+        public Criteria andBookRealnameIsNull() {
+            addCriterion("book_realname is null");
+            return (Criteria) this;
+        }
+
+        public Criteria andBookRealnameIsNotNull() {
+            addCriterion("book_realname is not null");
+            return (Criteria) this;
+        }
+
+        public Criteria andBookRealnameEqualTo(String value) {
+            addCriterion("book_realname =", value, "bookRealname");
+            return (Criteria) this;
+        }
+
+        public Criteria andBookRealnameEqualToColumn(CustomUrl.Column column) {
+            addCriterion(new StringBuilder("book_realname = ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andBookRealnameNotEqualTo(String value) {
+            addCriterion("book_realname <>", value, "bookRealname");
+            return (Criteria) this;
+        }
+
+        public Criteria andBookRealnameNotEqualToColumn(CustomUrl.Column column) {
+            addCriterion(new StringBuilder("book_realname <> ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andBookRealnameGreaterThan(String value) {
+            addCriterion("book_realname >", value, "bookRealname");
+            return (Criteria) this;
+        }
+
+        public Criteria andBookRealnameGreaterThanColumn(CustomUrl.Column column) {
+            addCriterion(new StringBuilder("book_realname > ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andBookRealnameGreaterThanOrEqualTo(String value) {
+            addCriterion("book_realname >=", value, "bookRealname");
+            return (Criteria) this;
+        }
+
+        public Criteria andBookRealnameGreaterThanOrEqualToColumn(CustomUrl.Column column) {
+            addCriterion(new StringBuilder("book_realname >= ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andBookRealnameLessThan(String value) {
+            addCriterion("book_realname <", value, "bookRealname");
+            return (Criteria) this;
+        }
+
+        public Criteria andBookRealnameLessThanColumn(CustomUrl.Column column) {
+            addCriterion(new StringBuilder("book_realname < ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andBookRealnameLessThanOrEqualTo(String value) {
+            addCriterion("book_realname <=", value, "bookRealname");
+            return (Criteria) this;
+        }
+
+        public Criteria andBookRealnameLessThanOrEqualToColumn(CustomUrl.Column column) {
+            addCriterion(new StringBuilder("book_realname <= ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andBookRealnameLike(String value) {
+            addCriterion("book_realname like", value, "bookRealname");
+            return (Criteria) this;
+        }
+
+        public Criteria andBookRealnameNotLike(String value) {
+            addCriterion("book_realname not like", value, "bookRealname");
+            return (Criteria) this;
+        }
+
+        public Criteria andBookRealnameIn(List<String> values) {
+            addCriterion("book_realname in", values, "bookRealname");
+            return (Criteria) this;
+        }
+
+        public Criteria andBookRealnameNotIn(List<String> values) {
+            addCriterion("book_realname not in", values, "bookRealname");
+            return (Criteria) this;
+        }
+
+        public Criteria andBookRealnameBetween(String value1, String value2) {
+            addCriterion("book_realname between", value1, value2, "bookRealname");
+            return (Criteria) this;
+        }
+
+        public Criteria andBookRealnameNotBetween(String value1, String value2) {
+            addCriterion("book_realname not between", value1, value2, "bookRealname");
+            return (Criteria) this;
+        }
+
+        public Criteria andSendtimeIsNull() {
+            addCriterion("sendtime is null");
+            return (Criteria) this;
+        }
+
+        public Criteria andSendtimeIsNotNull() {
+            addCriterion("sendtime is not null");
+            return (Criteria) this;
+        }
+
+        public Criteria andSendtimeEqualTo(Integer value) {
+            addCriterion("sendtime =", value, "sendtime");
+            return (Criteria) this;
+        }
+
+        public Criteria andSendtimeEqualToColumn(CustomUrl.Column column) {
+            addCriterion(new StringBuilder("sendtime = ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andSendtimeNotEqualTo(Integer value) {
+            addCriterion("sendtime <>", value, "sendtime");
+            return (Criteria) this;
+        }
+
+        public Criteria andSendtimeNotEqualToColumn(CustomUrl.Column column) {
+            addCriterion(new StringBuilder("sendtime <> ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andSendtimeGreaterThan(Integer value) {
+            addCriterion("sendtime >", value, "sendtime");
+            return (Criteria) this;
+        }
+
+        public Criteria andSendtimeGreaterThanColumn(CustomUrl.Column column) {
+            addCriterion(new StringBuilder("sendtime > ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andSendtimeGreaterThanOrEqualTo(Integer value) {
+            addCriterion("sendtime >=", value, "sendtime");
+            return (Criteria) this;
+        }
+
+        public Criteria andSendtimeGreaterThanOrEqualToColumn(CustomUrl.Column column) {
+            addCriterion(new StringBuilder("sendtime >= ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andSendtimeLessThan(Integer value) {
+            addCriterion("sendtime <", value, "sendtime");
+            return (Criteria) this;
+        }
+
+        public Criteria andSendtimeLessThanColumn(CustomUrl.Column column) {
+            addCriterion(new StringBuilder("sendtime < ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andSendtimeLessThanOrEqualTo(Integer value) {
+            addCriterion("sendtime <=", value, "sendtime");
+            return (Criteria) this;
+        }
+
+        public Criteria andSendtimeLessThanOrEqualToColumn(CustomUrl.Column column) {
+            addCriterion(new StringBuilder("sendtime <= ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andSendtimeIn(List<Integer> values) {
+            addCriterion("sendtime in", values, "sendtime");
+            return (Criteria) this;
+        }
+
+        public Criteria andSendtimeNotIn(List<Integer> values) {
+            addCriterion("sendtime not in", values, "sendtime");
+            return (Criteria) this;
+        }
+
+        public Criteria andSendtimeBetween(Integer value1, Integer value2) {
+            addCriterion("sendtime between", value1, value2, "sendtime");
+            return (Criteria) this;
+        }
+
+        public Criteria andSendtimeNotBetween(Integer value1, Integer value2) {
+            addCriterion("sendtime not between", value1, value2, "sendtime");
+            return (Criteria) this;
+        }
+
+        public Criteria andSendstatusIsNull() {
+            addCriterion("sendstatus is null");
+            return (Criteria) this;
+        }
+
+        public Criteria andSendstatusIsNotNull() {
+            addCriterion("sendstatus is not null");
+            return (Criteria) this;
+        }
+
+        public Criteria andSendstatusEqualTo(String value) {
+            addCriterion("sendstatus =", value, "sendstatus");
+            return (Criteria) this;
+        }
+
+        public Criteria andSendstatusEqualToColumn(CustomUrl.Column column) {
+            addCriterion(new StringBuilder("sendstatus = ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andSendstatusNotEqualTo(String value) {
+            addCriterion("sendstatus <>", value, "sendstatus");
+            return (Criteria) this;
+        }
+
+        public Criteria andSendstatusNotEqualToColumn(CustomUrl.Column column) {
+            addCriterion(new StringBuilder("sendstatus <> ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andSendstatusGreaterThan(String value) {
+            addCriterion("sendstatus >", value, "sendstatus");
+            return (Criteria) this;
+        }
+
+        public Criteria andSendstatusGreaterThanColumn(CustomUrl.Column column) {
+            addCriterion(new StringBuilder("sendstatus > ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andSendstatusGreaterThanOrEqualTo(String value) {
+            addCriterion("sendstatus >=", value, "sendstatus");
+            return (Criteria) this;
+        }
+
+        public Criteria andSendstatusGreaterThanOrEqualToColumn(CustomUrl.Column column) {
+            addCriterion(new StringBuilder("sendstatus >= ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andSendstatusLessThan(String value) {
+            addCriterion("sendstatus <", value, "sendstatus");
+            return (Criteria) this;
+        }
+
+        public Criteria andSendstatusLessThanColumn(CustomUrl.Column column) {
+            addCriterion(new StringBuilder("sendstatus < ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andSendstatusLessThanOrEqualTo(String value) {
+            addCriterion("sendstatus <=", value, "sendstatus");
+            return (Criteria) this;
+        }
+
+        public Criteria andSendstatusLessThanOrEqualToColumn(CustomUrl.Column column) {
+            addCriterion(new StringBuilder("sendstatus <= ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andSendstatusLike(String value) {
+            addCriterion("sendstatus like", value, "sendstatus");
+            return (Criteria) this;
+        }
+
+        public Criteria andSendstatusNotLike(String value) {
+            addCriterion("sendstatus not like", value, "sendstatus");
+            return (Criteria) this;
+        }
+
+        public Criteria andSendstatusIn(List<String> values) {
+            addCriterion("sendstatus in", values, "sendstatus");
+            return (Criteria) this;
+        }
+
+        public Criteria andSendstatusNotIn(List<String> values) {
+            addCriterion("sendstatus not in", values, "sendstatus");
+            return (Criteria) this;
+        }
+
+        public Criteria andSendstatusBetween(String value1, String value2) {
+            addCriterion("sendstatus between", value1, value2, "sendstatus");
+            return (Criteria) this;
+        }
+
+        public Criteria andSendstatusNotBetween(String value1, String value2) {
+            addCriterion("sendstatus not between", value1, value2, "sendstatus");
+            return (Criteria) this;
+        }
+
+        public Criteria andCreatetimeIsNull() {
+            addCriterion("createtime is null");
+            return (Criteria) this;
+        }
+
+        public Criteria andCreatetimeIsNotNull() {
+            addCriterion("createtime is not null");
+            return (Criteria) this;
+        }
+
+        public Criteria andCreatetimeEqualTo(Integer value) {
+            addCriterion("createtime =", value, "createtime");
+            return (Criteria) this;
+        }
+
+        public Criteria andCreatetimeEqualToColumn(CustomUrl.Column column) {
+            addCriterion(new StringBuilder("createtime = ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andCreatetimeNotEqualTo(Integer value) {
+            addCriterion("createtime <>", value, "createtime");
+            return (Criteria) this;
+        }
+
+        public Criteria andCreatetimeNotEqualToColumn(CustomUrl.Column column) {
+            addCriterion(new StringBuilder("createtime <> ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andCreatetimeGreaterThan(Integer value) {
+            addCriterion("createtime >", value, "createtime");
+            return (Criteria) this;
+        }
+
+        public Criteria andCreatetimeGreaterThanColumn(CustomUrl.Column column) {
+            addCriterion(new StringBuilder("createtime > ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andCreatetimeGreaterThanOrEqualTo(Integer value) {
+            addCriterion("createtime >=", value, "createtime");
+            return (Criteria) this;
+        }
+
+        public Criteria andCreatetimeGreaterThanOrEqualToColumn(CustomUrl.Column column) {
+            addCriterion(new StringBuilder("createtime >= ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andCreatetimeLessThan(Integer value) {
+            addCriterion("createtime <", value, "createtime");
+            return (Criteria) this;
+        }
+
+        public Criteria andCreatetimeLessThanColumn(CustomUrl.Column column) {
+            addCriterion(new StringBuilder("createtime < ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andCreatetimeLessThanOrEqualTo(Integer value) {
+            addCriterion("createtime <=", value, "createtime");
+            return (Criteria) this;
+        }
+
+        public Criteria andCreatetimeLessThanOrEqualToColumn(CustomUrl.Column column) {
+            addCriterion(new StringBuilder("createtime <= ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andCreatetimeIn(List<Integer> values) {
+            addCriterion("createtime in", values, "createtime");
+            return (Criteria) this;
+        }
+
+        public Criteria andCreatetimeNotIn(List<Integer> values) {
+            addCriterion("createtime not in", values, "createtime");
+            return (Criteria) this;
+        }
+
+        public Criteria andCreatetimeBetween(Integer value1, Integer value2) {
+            addCriterion("createtime between", value1, value2, "createtime");
+            return (Criteria) this;
+        }
+
+        public Criteria andCreatetimeNotBetween(Integer value1, Integer value2) {
+            addCriterion("createtime not between", value1, value2, "createtime");
+            return (Criteria) this;
+        }
+
+        public Criteria andUpdatetimeIsNull() {
+            addCriterion("updatetime is null");
+            return (Criteria) this;
+        }
+
+        public Criteria andUpdatetimeIsNotNull() {
+            addCriterion("updatetime is not null");
+            return (Criteria) this;
+        }
+
+        public Criteria andUpdatetimeEqualTo(Integer value) {
+            addCriterion("updatetime =", value, "updatetime");
+            return (Criteria) this;
+        }
+
+        public Criteria andUpdatetimeEqualToColumn(CustomUrl.Column column) {
+            addCriterion(new StringBuilder("updatetime = ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andUpdatetimeNotEqualTo(Integer value) {
+            addCriterion("updatetime <>", value, "updatetime");
+            return (Criteria) this;
+        }
+
+        public Criteria andUpdatetimeNotEqualToColumn(CustomUrl.Column column) {
+            addCriterion(new StringBuilder("updatetime <> ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andUpdatetimeGreaterThan(Integer value) {
+            addCriterion("updatetime >", value, "updatetime");
+            return (Criteria) this;
+        }
+
+        public Criteria andUpdatetimeGreaterThanColumn(CustomUrl.Column column) {
+            addCriterion(new StringBuilder("updatetime > ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andUpdatetimeGreaterThanOrEqualTo(Integer value) {
+            addCriterion("updatetime >=", value, "updatetime");
+            return (Criteria) this;
+        }
+
+        public Criteria andUpdatetimeGreaterThanOrEqualToColumn(CustomUrl.Column column) {
+            addCriterion(new StringBuilder("updatetime >= ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andUpdatetimeLessThan(Integer value) {
+            addCriterion("updatetime <", value, "updatetime");
+            return (Criteria) this;
+        }
+
+        public Criteria andUpdatetimeLessThanColumn(CustomUrl.Column column) {
+            addCriterion(new StringBuilder("updatetime < ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andUpdatetimeLessThanOrEqualTo(Integer value) {
+            addCriterion("updatetime <=", value, "updatetime");
+            return (Criteria) this;
+        }
+
+        public Criteria andUpdatetimeLessThanOrEqualToColumn(CustomUrl.Column column) {
+            addCriterion(new StringBuilder("updatetime <= ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andUpdatetimeIn(List<Integer> values) {
+            addCriterion("updatetime in", values, "updatetime");
+            return (Criteria) this;
+        }
+
+        public Criteria andUpdatetimeNotIn(List<Integer> values) {
+            addCriterion("updatetime not in", values, "updatetime");
+            return (Criteria) this;
+        }
+
+        public Criteria andUpdatetimeBetween(Integer value1, Integer value2) {
+            addCriterion("updatetime between", value1, value2, "updatetime");
+            return (Criteria) this;
+        }
+
+        public Criteria andUpdatetimeNotBetween(Integer value1, Integer value2) {
+            addCriterion("updatetime not between", value1, value2, "updatetime");
+            return (Criteria) this;
+        }
+    }
+
+    /**
+     * This class was generated by MyBatis Generator.
+     * This class corresponds to the database table custom_url
+     *
+     * @mbg.generated do_not_delete_during_merge Wed Sep 08 15:22:38 CST 2021
+     */
+    public static class Criteria extends GeneratedCriteria {
+        /**
+         * This field was generated by MyBatis Generator.
+         * This field corresponds to the database table custom_url
+         *
+         * @mbg.generated Wed Sep 08 15:22:38 CST 2021
+         */
+        private CustomUrlExample example;
+
+        /**
+         * This method was generated by MyBatis Generator.
+         * This method corresponds to the database table custom_url
+         *
+         * @mbg.generated Wed Sep 08 15:22:38 CST 2021
+         */
+        protected Criteria(CustomUrlExample example) {
+            super();
+            this.example = example;
+        }
+
+        /**
+         * This method was generated by MyBatis Generator.
+         * This method corresponds to the database table custom_url
+         *
+         * @mbg.generated Wed Sep 08 15:22:38 CST 2021
+         */
+        public CustomUrlExample example() {
+            return this.example;
+        }
+
+        /**
+         * This method was generated by MyBatis Generator.
+         * This method corresponds to the database table custom_url
+         *
+         * @mbg.generated Wed Sep 08 15:22:38 CST 2021
+         */
+        @Deprecated
+        public Criteria andIf(boolean ifAdd, ICriteriaAdd add) {
+            if (ifAdd) {
+                add.add(this);
+            }
+            return this;
+        }
+
+        /**
+         * This method was generated by MyBatis Generator.
+         * This method corresponds to the database table custom_url
+         *
+         * @mbg.generated Wed Sep 08 15:22:38 CST 2021
+         */
+        public Criteria when(boolean condition, ICriteriaWhen then) {
+            if (condition) {
+                then.criteria(this);
+            }
+            return this;
+        }
+
+        /**
+         * This method was generated by MyBatis Generator.
+         * This method corresponds to the database table custom_url
+         *
+         * @mbg.generated Wed Sep 08 15:22:38 CST 2021
+         */
+        public Criteria when(boolean condition, ICriteriaWhen then, ICriteriaWhen otherwise) {
+            if (condition) {
+                then.criteria(this);
+            } else {
+                otherwise.criteria(this);
+            }
+            return this;
+        }
+
+        @Deprecated
+        public interface ICriteriaAdd {
+            /**
+             * This method was generated by MyBatis Generator.
+             * This method corresponds to the database table custom_url
+             *
+             * @mbg.generated Wed Sep 08 15:22:38 CST 2021
+             */
+            Criteria add(Criteria add);
+        }
+    }
+
+    /**
+     * This class was generated by MyBatis Generator.
+     * This class corresponds to the database table custom_url
+     *
+     * @mbg.generated Wed Sep 08 15:22:38 CST 2021
+     */
+    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);
+        }
+    }
+
+    public interface ICriteriaWhen {
+        /**
+         * This method was generated by MyBatis Generator.
+         * This method corresponds to the database table custom_url
+         *
+         * @mbg.generated Wed Sep 08 15:22:38 CST 2021
+         */
+        void criteria(Criteria criteria);
+    }
+
+    public interface IExampleWhen {
+        /**
+         * This method was generated by MyBatis Generator.
+         * This method corresponds to the database table custom_url
+         *
+         * @mbg.generated Wed Sep 08 15:22:38 CST 2021
+         */
+        void example(com.book.dao.cps.pojo.example.CustomUrlExample example);
+    }
+}

+ 1095 - 0
book-dao/src/main/resources/mapper/cps/CustomMediaPushMapper.xml

@@ -0,0 +1,1095 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.book.dao.cps.mapper.CustomMediaPushMapper">
+  <resultMap id="BaseResultMap" type="com.book.dao.cps.entity.CustomMediaPush">
+    <!--
+      WARNING - @mbg.generated
+      This element is automatically generated by MyBatis Generator, do not modify.
+      This element was generated on Wed Sep 08 15:22:38 CST 2021.
+    -->
+    <id column="id" jdbcType="INTEGER" property="id" />
+    <result column="custom_media_id" jdbcType="INTEGER" property="customMediaId" />
+    <result column="created_admin_id" jdbcType="INTEGER" property="createdAdminId" />
+    <result column="message_type" jdbcType="CHAR" property="messageType" />
+    <result column="official_account_type" jdbcType="CHAR" property="officialAccountType" />
+    <result column="official_account_subscribe_ids" jdbcType="VARCHAR" property="officialAccountSubscribeIds" />
+    <result column="sendtime" jdbcType="INTEGER" property="sendtime" />
+    <result column="status" jdbcType="CHAR" property="status" />
+    <result column="created_from" jdbcType="CHAR" property="createdFrom" />
+    <result column="createtime" jdbcType="INTEGER" property="createtime" />
+    <result column="updatetime" jdbcType="INTEGER" property="updatetime" />
+    <result column="select_type" jdbcType="TINYINT" property="selectType" />
+    <result column="group_id" jdbcType="VARCHAR" property="groupId" />
+  </resultMap>
+  <resultMap extends="BaseResultMap" id="ResultMapWithBLOBs" type="com.book.dao.cps.entity.CustomMediaPush">
+    <!--
+      WARNING - @mbg.generated
+      This element is automatically generated by MyBatis Generator, do not modify.
+      This element was generated on Wed Sep 08 15:22:38 CST 2021.
+    -->
+    <result column="message_json" jdbcType="LONGVARCHAR" property="messageJson" />
+    <result column="message_text" jdbcType="LONGVARCHAR" property="messageText" />
+    <result column="official_account_service_ids" jdbcType="LONGVARCHAR" property="officialAccountServiceIds" />
+    <result column="user_json" jdbcType="LONGVARCHAR" property="userJson" />
+  </resultMap>
+  <sql id="Example_Where_Clause">
+    <!--
+      WARNING - @mbg.generated
+      This element is automatically generated by MyBatis Generator, do not modify.
+      This element was generated on Wed Sep 08 15:22:38 CST 2021.
+    -->
+    <where>
+      <foreach collection="oredCriteria" item="criteria" separator="or">
+        <if test="criteria.valid">
+          <trim prefix="(" prefixOverrides="and" suffix=")">
+            <foreach collection="criteria.criteria" item="criterion">
+              <choose>
+                <when test="criterion.noValue">
+                  and ${criterion.condition}
+                </when>
+                <when test="criterion.singleValue">
+                  and ${criterion.condition} #{criterion.value}
+                </when>
+                <when test="criterion.betweenValue">
+                  and ${criterion.condition} #{criterion.value} and #{criterion.secondValue}
+                </when>
+                <when test="criterion.listValue">
+                  and ${criterion.condition}
+                  <foreach close=")" collection="criterion.value" item="listItem" open="(" separator=",">
+                    #{listItem}
+                  </foreach>
+                </when>
+              </choose>
+            </foreach>
+          </trim>
+        </if>
+      </foreach>
+    </where>
+  </sql>
+  <sql id="Update_By_Example_Where_Clause">
+    <!--
+      WARNING - @mbg.generated
+      This element is automatically generated by MyBatis Generator, do not modify.
+      This element was generated on Wed Sep 08 15:22:38 CST 2021.
+    -->
+    <where>
+      <foreach collection="example.oredCriteria" item="criteria" separator="or">
+        <if test="criteria.valid">
+          <trim prefix="(" prefixOverrides="and" suffix=")">
+            <foreach collection="criteria.criteria" item="criterion">
+              <choose>
+                <when test="criterion.noValue">
+                  and ${criterion.condition}
+                </when>
+                <when test="criterion.singleValue">
+                  and ${criterion.condition} #{criterion.value}
+                </when>
+                <when test="criterion.betweenValue">
+                  and ${criterion.condition} #{criterion.value} and #{criterion.secondValue}
+                </when>
+                <when test="criterion.listValue">
+                  and ${criterion.condition}
+                  <foreach close=")" collection="criterion.value" item="listItem" open="(" separator=",">
+                    #{listItem}
+                  </foreach>
+                </when>
+              </choose>
+            </foreach>
+          </trim>
+        </if>
+      </foreach>
+    </where>
+  </sql>
+  <sql id="Base_Column_List">
+    <!--
+      WARNING - @mbg.generated
+      This element is automatically generated by MyBatis Generator, do not modify.
+      This element was generated on Wed Sep 08 15:22:38 CST 2021.
+    -->
+    id, custom_media_id, created_admin_id, message_type, official_account_type, official_account_subscribe_ids, 
+    sendtime, status, created_from, createtime, updatetime, select_type, group_id
+  </sql>
+  <sql id="Blob_Column_List">
+    <!--
+      WARNING - @mbg.generated
+      This element is automatically generated by MyBatis Generator, do not modify.
+      This element was generated on Wed Sep 08 15:22:38 CST 2021.
+    -->
+    message_json, message_text, official_account_service_ids, user_json
+  </sql>
+  <select id="selectByExampleWithBLOBs" parameterType="com.book.dao.cps.pojo.example.CustomMediaPushExample" resultMap="ResultMapWithBLOBs">
+    <!--
+      WARNING - @mbg.generated
+      This element is automatically generated by MyBatis Generator, do not modify.
+      This element was generated on Wed Sep 08 15:22:38 CST 2021.
+    -->
+    select
+    <if test="distinct">
+      distinct
+    </if>
+    <include refid="Base_Column_List" />
+    ,
+    <include refid="Blob_Column_List" />
+    from custom_media_push
+    <if test="_parameter != null">
+      <include refid="Example_Where_Clause" />
+    </if>
+    <if test="orderByClause != null">
+      order by ${orderByClause}
+    </if>
+    <if test="rows != null">
+      <if test="offset != null">
+        limit ${offset}, ${rows}
+      </if>
+      <if test="offset == null">
+        limit ${rows}
+      </if>
+    </if>
+  </select>
+  <select id="selectByExample" parameterType="com.book.dao.cps.pojo.example.CustomMediaPushExample" resultMap="BaseResultMap">
+    <!--
+      WARNING - @mbg.generated
+      This element is automatically generated by MyBatis Generator, do not modify.
+      This element was generated on Wed Sep 08 15:22:38 CST 2021.
+    -->
+    select
+    <if test="distinct">
+      distinct
+    </if>
+    <include refid="Base_Column_List" />
+    from custom_media_push
+    <if test="_parameter != null">
+      <include refid="Example_Where_Clause" />
+    </if>
+    <if test="orderByClause != null">
+      order by ${orderByClause}
+    </if>
+    <if test="rows != null">
+      <if test="offset != null">
+        limit ${offset}, ${rows}
+      </if>
+      <if test="offset == null">
+        limit ${rows}
+      </if>
+    </if>
+  </select>
+  <select id="selectByExampleSelective" parameterType="map" resultMap="ResultMapWithBLOBs">
+    <!--
+      WARNING - @mbg.generated
+      This element is automatically generated by MyBatis Generator, do not modify.
+      This element was generated on Wed Sep 08 15:22:38 CST 2021.
+    -->
+    select
+    <if test="example != null and example.distinct">
+      distinct
+    </if>
+    <choose>
+      <when test="selective != null and selective.length > 0">
+        <foreach collection="selective" item="column" separator=",">
+          ${column.aliasedEscapedColumnName}
+        </foreach>
+      </when>
+      <otherwise>
+        <include refid="Base_Column_List" />
+        ,
+        <include refid="Blob_Column_List" />
+      </otherwise>
+    </choose>
+    from custom_media_push
+    <if test="example != null">
+      <include refid="Update_By_Example_Where_Clause" />
+    </if>
+    <if test="example != null and example.orderByClause != null">
+      order by ${example.orderByClause}
+    </if>
+    <if test="example != null and example.rows != null">
+      <if test="example.offset != null">
+        limit ${example.offset}, ${example.rows}
+      </if>
+      <if test="example.offset == null">
+        limit ${example.rows}
+      </if>
+    </if>
+  </select>
+  <select id="selectByPrimaryKey" parameterType="java.lang.Integer" resultMap="ResultMapWithBLOBs">
+    <!--
+      WARNING - @mbg.generated
+      This element is automatically generated by MyBatis Generator, do not modify.
+      This element was generated on Wed Sep 08 15:22:38 CST 2021.
+    -->
+    select 
+    <include refid="Base_Column_List" />
+    ,
+    <include refid="Blob_Column_List" />
+    from custom_media_push
+    where id = #{id,jdbcType=INTEGER}
+  </select>
+  <select id="selectByPrimaryKeySelective" parameterType="map" resultMap="ResultMapWithBLOBs">
+    <!--
+      WARNING - @mbg.generated
+      This element is automatically generated by MyBatis Generator, do not modify.
+      This element was generated on Wed Sep 08 15:22:38 CST 2021.
+    -->
+    select
+    <choose>
+      <when test="selective != null and selective.length > 0">
+        <foreach collection="selective" item="column" separator=",">
+          ${column.aliasedEscapedColumnName}
+        </foreach>
+      </when>
+      <otherwise>
+        <include refid="Base_Column_List" />
+        ,
+        <include refid="Blob_Column_List" />
+      </otherwise>
+    </choose>
+    from custom_media_push
+    where id = #{id,jdbcType=INTEGER}
+  </select>
+  <delete id="deleteByPrimaryKey" parameterType="java.lang.Integer">
+    <!--
+      WARNING - @mbg.generated
+      This element is automatically generated by MyBatis Generator, do not modify.
+      This element was generated on Wed Sep 08 15:22:38 CST 2021.
+    -->
+    delete from custom_media_push
+    where id = #{id,jdbcType=INTEGER}
+  </delete>
+  <delete id="deleteByExample" parameterType="com.book.dao.cps.pojo.example.CustomMediaPushExample">
+    <!--
+      WARNING - @mbg.generated
+      This element is automatically generated by MyBatis Generator, do not modify.
+      This element was generated on Wed Sep 08 15:22:38 CST 2021.
+    -->
+    delete from custom_media_push
+    <if test="_parameter != null">
+      <include refid="Example_Where_Clause" />
+    </if>
+  </delete>
+  <insert id="insert" parameterType="com.book.dao.cps.entity.CustomMediaPush">
+    <!--
+      WARNING - @mbg.generated
+      This element is automatically generated by MyBatis Generator, do not modify.
+      This element was generated on Wed Sep 08 15:22:38 CST 2021.
+    -->
+    insert into custom_media_push (id, custom_media_id, created_admin_id, 
+      message_type, official_account_type, official_account_subscribe_ids, 
+      sendtime, status, created_from, 
+      createtime, updatetime, select_type, 
+      group_id, message_json, message_text, 
+      official_account_service_ids, user_json
+      )
+    values (#{id,jdbcType=INTEGER}, #{customMediaId,jdbcType=INTEGER}, #{createdAdminId,jdbcType=INTEGER}, 
+      #{messageType,jdbcType=CHAR}, #{officialAccountType,jdbcType=CHAR}, #{officialAccountSubscribeIds,jdbcType=VARCHAR}, 
+      #{sendtime,jdbcType=INTEGER}, #{status,jdbcType=CHAR}, #{createdFrom,jdbcType=CHAR}, 
+      #{createtime,jdbcType=INTEGER}, #{updatetime,jdbcType=INTEGER}, #{selectType,jdbcType=TINYINT}, 
+      #{groupId,jdbcType=VARCHAR}, #{messageJson,jdbcType=LONGVARCHAR}, #{messageText,jdbcType=LONGVARCHAR}, 
+      #{officialAccountServiceIds,jdbcType=LONGVARCHAR}, #{userJson,jdbcType=LONGVARCHAR}
+      )
+  </insert>
+  <insert id="insertSelective" parameterType="map">
+    <!--
+      WARNING - @mbg.generated
+      This element is automatically generated by MyBatis Generator, do not modify.
+      This element was generated on Wed Sep 08 15:22:38 CST 2021.
+    -->
+    insert into custom_media_push
+    <choose>
+      <when test="selective != null and selective.length > 0">
+        <foreach close=")" collection="selective" item="column" open="(" separator=",">
+          ${column.escapedColumnName}
+        </foreach>
+      </when>
+      <otherwise>
+        <trim prefix="(" suffix=")" suffixOverrides=",">
+          <if test="record.id != null">
+            id,
+          </if>
+          <if test="record.customMediaId != null">
+            custom_media_id,
+          </if>
+          <if test="record.createdAdminId != null">
+            created_admin_id,
+          </if>
+          <if test="record.messageType != null">
+            message_type,
+          </if>
+          <if test="record.officialAccountType != null">
+            official_account_type,
+          </if>
+          <if test="record.officialAccountSubscribeIds != null">
+            official_account_subscribe_ids,
+          </if>
+          <if test="record.sendtime != null">
+            sendtime,
+          </if>
+          <if test="record.status != null">
+            status,
+          </if>
+          <if test="record.createdFrom != null">
+            created_from,
+          </if>
+          <if test="record.createtime != null">
+            createtime,
+          </if>
+          <if test="record.updatetime != null">
+            updatetime,
+          </if>
+          <if test="record.selectType != null">
+            select_type,
+          </if>
+          <if test="record.groupId != null">
+            group_id,
+          </if>
+          <if test="record.messageJson != null">
+            message_json,
+          </if>
+          <if test="record.messageText != null">
+            message_text,
+          </if>
+          <if test="record.officialAccountServiceIds != null">
+            official_account_service_ids,
+          </if>
+          <if test="record.userJson != null">
+            user_json,
+          </if>
+        </trim>
+        <trim prefix="(" suffix=")" suffixOverrides="," />
+      </otherwise>
+    </choose>
+    values
+    <choose>
+      <when test="selective != null and selective.length > 0">
+        <foreach close=")" collection="selective" item="column" open="(" separator=",">
+          #{record.${column.javaProperty},jdbcType=${column.jdbcType}}
+        </foreach>
+      </when>
+      <otherwise>
+        <trim prefix="(" suffix=")" suffixOverrides=",">
+          <if test="record.id != null">
+            #{record.id,jdbcType=INTEGER},
+          </if>
+          <if test="record.customMediaId != null">
+            #{record.customMediaId,jdbcType=INTEGER},
+          </if>
+          <if test="record.createdAdminId != null">
+            #{record.createdAdminId,jdbcType=INTEGER},
+          </if>
+          <if test="record.messageType != null">
+            #{record.messageType,jdbcType=CHAR},
+          </if>
+          <if test="record.officialAccountType != null">
+            #{record.officialAccountType,jdbcType=CHAR},
+          </if>
+          <if test="record.officialAccountSubscribeIds != null">
+            #{record.officialAccountSubscribeIds,jdbcType=VARCHAR},
+          </if>
+          <if test="record.sendtime != null">
+            #{record.sendtime,jdbcType=INTEGER},
+          </if>
+          <if test="record.status != null">
+            #{record.status,jdbcType=CHAR},
+          </if>
+          <if test="record.createdFrom != null">
+            #{record.createdFrom,jdbcType=CHAR},
+          </if>
+          <if test="record.createtime != null">
+            #{record.createtime,jdbcType=INTEGER},
+          </if>
+          <if test="record.updatetime != null">
+            #{record.updatetime,jdbcType=INTEGER},
+          </if>
+          <if test="record.selectType != null">
+            #{record.selectType,jdbcType=TINYINT},
+          </if>
+          <if test="record.groupId != null">
+            #{record.groupId,jdbcType=VARCHAR},
+          </if>
+          <if test="record.messageJson != null">
+            #{record.messageJson,jdbcType=LONGVARCHAR},
+          </if>
+          <if test="record.messageText != null">
+            #{record.messageText,jdbcType=LONGVARCHAR},
+          </if>
+          <if test="record.officialAccountServiceIds != null">
+            #{record.officialAccountServiceIds,jdbcType=LONGVARCHAR},
+          </if>
+          <if test="record.userJson != null">
+            #{record.userJson,jdbcType=LONGVARCHAR},
+          </if>
+        </trim>
+      </otherwise>
+    </choose>
+  </insert>
+  <select id="countByExample" parameterType="com.book.dao.cps.pojo.example.CustomMediaPushExample" resultType="java.lang.Long">
+    <!--
+      WARNING - @mbg.generated
+      This element is automatically generated by MyBatis Generator, do not modify.
+      This element was generated on Wed Sep 08 15:22:38 CST 2021.
+    -->
+    select count(*) from custom_media_push
+    <if test="_parameter != null">
+      <include refid="Example_Where_Clause" />
+    </if>
+  </select>
+  <update id="updateByExampleSelective" parameterType="map">
+    <!--
+      WARNING - @mbg.generated
+      This element is automatically generated by MyBatis Generator, do not modify.
+      This element was generated on Wed Sep 08 15:22:38 CST 2021.
+    -->
+    update custom_media_push
+    SET
+    <choose>
+      <when test="selective != null and selective.length > 0">
+        <foreach collection="selective" item="column" separator=",">
+          ${column.escapedColumnName} = #{record.${column.javaProperty},jdbcType=${column.jdbcType}}
+        </foreach>
+      </when>
+      <otherwise>
+        <trim suffixOverrides=",">
+          <if test="record.id != null">
+            id = #{record.id,jdbcType=INTEGER},
+          </if>
+          <if test="record.customMediaId != null">
+            custom_media_id = #{record.customMediaId,jdbcType=INTEGER},
+          </if>
+          <if test="record.createdAdminId != null">
+            created_admin_id = #{record.createdAdminId,jdbcType=INTEGER},
+          </if>
+          <if test="record.messageType != null">
+            message_type = #{record.messageType,jdbcType=CHAR},
+          </if>
+          <if test="record.officialAccountType != null">
+            official_account_type = #{record.officialAccountType,jdbcType=CHAR},
+          </if>
+          <if test="record.officialAccountSubscribeIds != null">
+            official_account_subscribe_ids = #{record.officialAccountSubscribeIds,jdbcType=VARCHAR},
+          </if>
+          <if test="record.sendtime != null">
+            sendtime = #{record.sendtime,jdbcType=INTEGER},
+          </if>
+          <if test="record.status != null">
+            status = #{record.status,jdbcType=CHAR},
+          </if>
+          <if test="record.createdFrom != null">
+            created_from = #{record.createdFrom,jdbcType=CHAR},
+          </if>
+          <if test="record.createtime != null">
+            createtime = #{record.createtime,jdbcType=INTEGER},
+          </if>
+          <if test="record.updatetime != null">
+            updatetime = #{record.updatetime,jdbcType=INTEGER},
+          </if>
+          <if test="record.selectType != null">
+            select_type = #{record.selectType,jdbcType=TINYINT},
+          </if>
+          <if test="record.groupId != null">
+            group_id = #{record.groupId,jdbcType=VARCHAR},
+          </if>
+          <if test="record.messageJson != null">
+            message_json = #{record.messageJson,jdbcType=LONGVARCHAR},
+          </if>
+          <if test="record.messageText != null">
+            message_text = #{record.messageText,jdbcType=LONGVARCHAR},
+          </if>
+          <if test="record.officialAccountServiceIds != null">
+            official_account_service_ids = #{record.officialAccountServiceIds,jdbcType=LONGVARCHAR},
+          </if>
+          <if test="record.userJson != null">
+            user_json = #{record.userJson,jdbcType=LONGVARCHAR},
+          </if>
+        </trim>
+      </otherwise>
+    </choose>
+    <if test="_parameter != null">
+      <include refid="Update_By_Example_Where_Clause" />
+    </if>
+  </update>
+  <update id="updateByExampleWithBLOBs" parameterType="map">
+    <!--
+      WARNING - @mbg.generated
+      This element is automatically generated by MyBatis Generator, do not modify.
+      This element was generated on Wed Sep 08 15:22:38 CST 2021.
+    -->
+    update custom_media_push
+    set id = #{record.id,jdbcType=INTEGER},
+      custom_media_id = #{record.customMediaId,jdbcType=INTEGER},
+      created_admin_id = #{record.createdAdminId,jdbcType=INTEGER},
+      message_type = #{record.messageType,jdbcType=CHAR},
+      official_account_type = #{record.officialAccountType,jdbcType=CHAR},
+      official_account_subscribe_ids = #{record.officialAccountSubscribeIds,jdbcType=VARCHAR},
+      sendtime = #{record.sendtime,jdbcType=INTEGER},
+      status = #{record.status,jdbcType=CHAR},
+      created_from = #{record.createdFrom,jdbcType=CHAR},
+      createtime = #{record.createtime,jdbcType=INTEGER},
+      updatetime = #{record.updatetime,jdbcType=INTEGER},
+      select_type = #{record.selectType,jdbcType=TINYINT},
+      group_id = #{record.groupId,jdbcType=VARCHAR},
+      message_json = #{record.messageJson,jdbcType=LONGVARCHAR},
+      message_text = #{record.messageText,jdbcType=LONGVARCHAR},
+      official_account_service_ids = #{record.officialAccountServiceIds,jdbcType=LONGVARCHAR},
+      user_json = #{record.userJson,jdbcType=LONGVARCHAR}
+    <if test="_parameter != null">
+      <include refid="Update_By_Example_Where_Clause" />
+    </if>
+  </update>
+  <update id="updateByExample" parameterType="map">
+    <!--
+      WARNING - @mbg.generated
+      This element is automatically generated by MyBatis Generator, do not modify.
+      This element was generated on Wed Sep 08 15:22:38 CST 2021.
+    -->
+    update custom_media_push
+    set id = #{record.id,jdbcType=INTEGER},
+      custom_media_id = #{record.customMediaId,jdbcType=INTEGER},
+      created_admin_id = #{record.createdAdminId,jdbcType=INTEGER},
+      message_type = #{record.messageType,jdbcType=CHAR},
+      official_account_type = #{record.officialAccountType,jdbcType=CHAR},
+      official_account_subscribe_ids = #{record.officialAccountSubscribeIds,jdbcType=VARCHAR},
+      sendtime = #{record.sendtime,jdbcType=INTEGER},
+      status = #{record.status,jdbcType=CHAR},
+      created_from = #{record.createdFrom,jdbcType=CHAR},
+      createtime = #{record.createtime,jdbcType=INTEGER},
+      updatetime = #{record.updatetime,jdbcType=INTEGER},
+      select_type = #{record.selectType,jdbcType=TINYINT},
+      group_id = #{record.groupId,jdbcType=VARCHAR}
+    <if test="_parameter != null">
+      <include refid="Update_By_Example_Where_Clause" />
+    </if>
+  </update>
+  <update id="updateByPrimaryKeySelective" parameterType="map">
+    <!--
+      WARNING - @mbg.generated
+      This element is automatically generated by MyBatis Generator, do not modify.
+      This element was generated on Wed Sep 08 15:22:38 CST 2021.
+    -->
+    update custom_media_push
+    SET
+    <choose>
+      <when test="selective != null and selective.length > 0">
+        <foreach collection="selective" item="column" separator=",">
+          ${column.escapedColumnName} = #{record.${column.javaProperty},jdbcType=${column.jdbcType}}
+        </foreach>
+      </when>
+      <otherwise>
+        <trim suffixOverrides=",">
+          <if test="record.customMediaId != null">
+            custom_media_id = #{record.customMediaId,jdbcType=INTEGER},
+          </if>
+          <if test="record.createdAdminId != null">
+            created_admin_id = #{record.createdAdminId,jdbcType=INTEGER},
+          </if>
+          <if test="record.messageType != null">
+            message_type = #{record.messageType,jdbcType=CHAR},
+          </if>
+          <if test="record.officialAccountType != null">
+            official_account_type = #{record.officialAccountType,jdbcType=CHAR},
+          </if>
+          <if test="record.officialAccountSubscribeIds != null">
+            official_account_subscribe_ids = #{record.officialAccountSubscribeIds,jdbcType=VARCHAR},
+          </if>
+          <if test="record.sendtime != null">
+            sendtime = #{record.sendtime,jdbcType=INTEGER},
+          </if>
+          <if test="record.status != null">
+            status = #{record.status,jdbcType=CHAR},
+          </if>
+          <if test="record.createdFrom != null">
+            created_from = #{record.createdFrom,jdbcType=CHAR},
+          </if>
+          <if test="record.createtime != null">
+            createtime = #{record.createtime,jdbcType=INTEGER},
+          </if>
+          <if test="record.updatetime != null">
+            updatetime = #{record.updatetime,jdbcType=INTEGER},
+          </if>
+          <if test="record.selectType != null">
+            select_type = #{record.selectType,jdbcType=TINYINT},
+          </if>
+          <if test="record.groupId != null">
+            group_id = #{record.groupId,jdbcType=VARCHAR},
+          </if>
+          <if test="record.messageJson != null">
+            message_json = #{record.messageJson,jdbcType=LONGVARCHAR},
+          </if>
+          <if test="record.messageText != null">
+            message_text = #{record.messageText,jdbcType=LONGVARCHAR},
+          </if>
+          <if test="record.officialAccountServiceIds != null">
+            official_account_service_ids = #{record.officialAccountServiceIds,jdbcType=LONGVARCHAR},
+          </if>
+          <if test="record.userJson != null">
+            user_json = #{record.userJson,jdbcType=LONGVARCHAR},
+          </if>
+        </trim>
+      </otherwise>
+    </choose>
+    where id = #{record.id,jdbcType=INTEGER}
+  </update>
+  <update id="updateByPrimaryKeyWithBLOBs" parameterType="com.book.dao.cps.entity.CustomMediaPush">
+    <!--
+      WARNING - @mbg.generated
+      This element is automatically generated by MyBatis Generator, do not modify.
+      This element was generated on Wed Sep 08 15:22:38 CST 2021.
+    -->
+    update custom_media_push
+    set custom_media_id = #{customMediaId,jdbcType=INTEGER},
+      created_admin_id = #{createdAdminId,jdbcType=INTEGER},
+      message_type = #{messageType,jdbcType=CHAR},
+      official_account_type = #{officialAccountType,jdbcType=CHAR},
+      official_account_subscribe_ids = #{officialAccountSubscribeIds,jdbcType=VARCHAR},
+      sendtime = #{sendtime,jdbcType=INTEGER},
+      status = #{status,jdbcType=CHAR},
+      created_from = #{createdFrom,jdbcType=CHAR},
+      createtime = #{createtime,jdbcType=INTEGER},
+      updatetime = #{updatetime,jdbcType=INTEGER},
+      select_type = #{selectType,jdbcType=TINYINT},
+      group_id = #{groupId,jdbcType=VARCHAR},
+      message_json = #{messageJson,jdbcType=LONGVARCHAR},
+      message_text = #{messageText,jdbcType=LONGVARCHAR},
+      official_account_service_ids = #{officialAccountServiceIds,jdbcType=LONGVARCHAR},
+      user_json = #{userJson,jdbcType=LONGVARCHAR}
+    where id = #{id,jdbcType=INTEGER}
+  </update>
+  <update id="updateByPrimaryKey" parameterType="com.book.dao.cps.entity.CustomMediaPush">
+    <!--
+      WARNING - @mbg.generated
+      This element is automatically generated by MyBatis Generator, do not modify.
+      This element was generated on Wed Sep 08 15:22:38 CST 2021.
+    -->
+    update custom_media_push
+    set custom_media_id = #{customMediaId,jdbcType=INTEGER},
+      created_admin_id = #{createdAdminId,jdbcType=INTEGER},
+      message_type = #{messageType,jdbcType=CHAR},
+      official_account_type = #{officialAccountType,jdbcType=CHAR},
+      official_account_subscribe_ids = #{officialAccountSubscribeIds,jdbcType=VARCHAR},
+      sendtime = #{sendtime,jdbcType=INTEGER},
+      status = #{status,jdbcType=CHAR},
+      created_from = #{createdFrom,jdbcType=CHAR},
+      createtime = #{createtime,jdbcType=INTEGER},
+      updatetime = #{updatetime,jdbcType=INTEGER},
+      select_type = #{selectType,jdbcType=TINYINT},
+      group_id = #{groupId,jdbcType=VARCHAR}
+    where id = #{id,jdbcType=INTEGER}
+  </update>
+  <select id="selectOneByExample" parameterType="com.book.dao.cps.pojo.example.CustomMediaPushExample" resultMap="BaseResultMap">
+    <!--
+      WARNING - @mbg.generated
+      This element is automatically generated by MyBatis Generator, do not modify.
+      This element was generated on Wed Sep 08 15:22:38 CST 2021.
+    -->
+    select
+    <include refid="Base_Column_List" />
+    from custom_media_push
+    <if test="_parameter != null">
+      <include refid="Example_Where_Clause" />
+    </if>
+    <if test="orderByClause != null">
+      order by ${orderByClause}
+    </if>
+    limit 1
+  </select>
+  <select id="selectOneByExampleWithBLOBs" parameterType="com.book.dao.cps.pojo.example.CustomMediaPushExample" resultMap="ResultMapWithBLOBs">
+    <!--
+      WARNING - @mbg.generated
+      This element is automatically generated by MyBatis Generator, do not modify.
+      This element was generated on Wed Sep 08 15:22:38 CST 2021.
+    -->
+    select
+    <include refid="Base_Column_List" />
+    ,
+    <include refid="Blob_Column_List" />
+    from custom_media_push
+    <if test="_parameter != null">
+      <include refid="Example_Where_Clause" />
+    </if>
+    <if test="orderByClause != null">
+      order by ${orderByClause}
+    </if>
+    limit 1
+  </select>
+  <select id="selectOneByExampleSelective" parameterType="map" resultMap="ResultMapWithBLOBs">
+    <!--
+      WARNING - @mbg.generated
+      This element is automatically generated by MyBatis Generator, do not modify.
+      This element was generated on Wed Sep 08 15:22:38 CST 2021.
+    -->
+    select
+    <choose>
+      <when test="selective != null and selective.length > 0">
+        <foreach collection="selective" item="column" separator=",">
+          ${column.aliasedEscapedColumnName}
+        </foreach>
+      </when>
+      <otherwise>
+        <include refid="Base_Column_List" />
+        ,
+        <include refid="Blob_Column_List" />
+      </otherwise>
+    </choose>
+    from custom_media_push
+    <if test="example != null">
+      <include refid="Update_By_Example_Where_Clause" />
+    </if>
+    <if test="example != null and example.orderByClause != null">
+      order by ${example.orderByClause}
+    </if>
+    limit 1
+  </select>
+  <insert id="batchInsert" parameterType="map">
+    <!--
+      WARNING - @mbg.generated
+      This element is automatically generated by MyBatis Generator, do not modify.
+      This element was generated on Wed Sep 08 15:22:38 CST 2021.
+    -->
+    insert into custom_media_push
+    (id, custom_media_id, created_admin_id, message_type, official_account_type, official_account_subscribe_ids, 
+      sendtime, status, created_from, createtime, updatetime, select_type, group_id, 
+      message_json, message_text, official_account_service_ids, user_json)
+    values
+    <foreach collection="list" item="item" separator=",">
+      (#{item.id,jdbcType=INTEGER}, #{item.customMediaId,jdbcType=INTEGER}, #{item.createdAdminId,jdbcType=INTEGER}, 
+        #{item.messageType,jdbcType=CHAR}, #{item.officialAccountType,jdbcType=CHAR}, #{item.officialAccountSubscribeIds,jdbcType=VARCHAR}, 
+        #{item.sendtime,jdbcType=INTEGER}, #{item.status,jdbcType=CHAR}, #{item.createdFrom,jdbcType=CHAR}, 
+        #{item.createtime,jdbcType=INTEGER}, #{item.updatetime,jdbcType=INTEGER}, #{item.selectType,jdbcType=TINYINT}, 
+        #{item.groupId,jdbcType=VARCHAR}, #{item.messageJson,jdbcType=LONGVARCHAR}, #{item.messageText,jdbcType=LONGVARCHAR}, 
+        #{item.officialAccountServiceIds,jdbcType=LONGVARCHAR}, #{item.userJson,jdbcType=LONGVARCHAR}
+        )
+    </foreach>
+  </insert>
+  <insert id="batchInsertSelective" parameterType="map">
+    <!--
+      WARNING - @mbg.generated
+      This element is automatically generated by MyBatis Generator, do not modify.
+      This element was generated on Wed Sep 08 15:22:38 CST 2021.
+    -->
+    insert into custom_media_push (
+    <foreach collection="selective" item="column" separator=",">
+      ${column.escapedColumnName}
+    </foreach>
+    )
+    values
+    <foreach collection="list" item="item" separator=",">
+      (
+      <foreach collection="selective" item="column" separator=",">
+        <if test="'id'.toString() == column.value">
+          #{item.id,jdbcType=INTEGER}
+        </if>
+        <if test="'custom_media_id'.toString() == column.value">
+          #{item.customMediaId,jdbcType=INTEGER}
+        </if>
+        <if test="'created_admin_id'.toString() == column.value">
+          #{item.createdAdminId,jdbcType=INTEGER}
+        </if>
+        <if test="'message_type'.toString() == column.value">
+          #{item.messageType,jdbcType=CHAR}
+        </if>
+        <if test="'official_account_type'.toString() == column.value">
+          #{item.officialAccountType,jdbcType=CHAR}
+        </if>
+        <if test="'official_account_subscribe_ids'.toString() == column.value">
+          #{item.officialAccountSubscribeIds,jdbcType=VARCHAR}
+        </if>
+        <if test="'sendtime'.toString() == column.value">
+          #{item.sendtime,jdbcType=INTEGER}
+        </if>
+        <if test="'status'.toString() == column.value">
+          #{item.status,jdbcType=CHAR}
+        </if>
+        <if test="'created_from'.toString() == column.value">
+          #{item.createdFrom,jdbcType=CHAR}
+        </if>
+        <if test="'createtime'.toString() == column.value">
+          #{item.createtime,jdbcType=INTEGER}
+        </if>
+        <if test="'updatetime'.toString() == column.value">
+          #{item.updatetime,jdbcType=INTEGER}
+        </if>
+        <if test="'select_type'.toString() == column.value">
+          #{item.selectType,jdbcType=TINYINT}
+        </if>
+        <if test="'group_id'.toString() == column.value">
+          #{item.groupId,jdbcType=VARCHAR}
+        </if>
+        <if test="'message_json'.toString() == column.value">
+          #{item.messageJson,jdbcType=LONGVARCHAR}
+        </if>
+        <if test="'message_text'.toString() == column.value">
+          #{item.messageText,jdbcType=LONGVARCHAR}
+        </if>
+        <if test="'official_account_service_ids'.toString() == column.value">
+          #{item.officialAccountServiceIds,jdbcType=LONGVARCHAR}
+        </if>
+        <if test="'user_json'.toString() == column.value">
+          #{item.userJson,jdbcType=LONGVARCHAR}
+        </if>
+      </foreach>
+      )
+    </foreach>
+  </insert>
+  <insert id="upsertSelective" parameterType="map">
+    <!--
+      WARNING - @mbg.generated
+      This element is automatically generated by MyBatis Generator, do not modify.
+      This element was generated on Wed Sep 08 15:22:38 CST 2021.
+    -->
+    insert into custom_media_push
+    <choose>
+      <when test="selective != null and selective.length > 0">
+        <foreach close=")" collection="selective" item="column" open="(" separator=",">
+          ${column.escapedColumnName}
+        </foreach>
+      </when>
+      <otherwise>
+        <trim prefix="(" suffix=")" suffixOverrides=",">
+          <if test="record.id != null">
+            id,
+          </if>
+          <if test="record.customMediaId != null">
+            custom_media_id,
+          </if>
+          <if test="record.createdAdminId != null">
+            created_admin_id,
+          </if>
+          <if test="record.messageType != null">
+            message_type,
+          </if>
+          <if test="record.officialAccountType != null">
+            official_account_type,
+          </if>
+          <if test="record.officialAccountSubscribeIds != null">
+            official_account_subscribe_ids,
+          </if>
+          <if test="record.sendtime != null">
+            sendtime,
+          </if>
+          <if test="record.status != null">
+            status,
+          </if>
+          <if test="record.createdFrom != null">
+            created_from,
+          </if>
+          <if test="record.createtime != null">
+            createtime,
+          </if>
+          <if test="record.updatetime != null">
+            updatetime,
+          </if>
+          <if test="record.selectType != null">
+            select_type,
+          </if>
+          <if test="record.groupId != null">
+            group_id,
+          </if>
+          <if test="record.messageJson != null">
+            message_json,
+          </if>
+          <if test="record.messageText != null">
+            message_text,
+          </if>
+          <if test="record.officialAccountServiceIds != null">
+            official_account_service_ids,
+          </if>
+          <if test="record.userJson != null">
+            user_json,
+          </if>
+        </trim>
+        <trim prefix="(" suffix=")" suffixOverrides="," />
+      </otherwise>
+    </choose>
+    values
+    <choose>
+      <when test="selective != null and selective.length > 0">
+        <foreach close=")" collection="selective" item="column" open="(" separator=",">
+          #{record.${column.javaProperty},jdbcType=${column.jdbcType}}
+        </foreach>
+      </when>
+      <otherwise>
+        <trim prefix="(" suffix=")" suffixOverrides=",">
+          <if test="record.id != null">
+            #{record.id,jdbcType=INTEGER},
+          </if>
+          <if test="record.customMediaId != null">
+            #{record.customMediaId,jdbcType=INTEGER},
+          </if>
+          <if test="record.createdAdminId != null">
+            #{record.createdAdminId,jdbcType=INTEGER},
+          </if>
+          <if test="record.messageType != null">
+            #{record.messageType,jdbcType=CHAR},
+          </if>
+          <if test="record.officialAccountType != null">
+            #{record.officialAccountType,jdbcType=CHAR},
+          </if>
+          <if test="record.officialAccountSubscribeIds != null">
+            #{record.officialAccountSubscribeIds,jdbcType=VARCHAR},
+          </if>
+          <if test="record.sendtime != null">
+            #{record.sendtime,jdbcType=INTEGER},
+          </if>
+          <if test="record.status != null">
+            #{record.status,jdbcType=CHAR},
+          </if>
+          <if test="record.createdFrom != null">
+            #{record.createdFrom,jdbcType=CHAR},
+          </if>
+          <if test="record.createtime != null">
+            #{record.createtime,jdbcType=INTEGER},
+          </if>
+          <if test="record.updatetime != null">
+            #{record.updatetime,jdbcType=INTEGER},
+          </if>
+          <if test="record.selectType != null">
+            #{record.selectType,jdbcType=TINYINT},
+          </if>
+          <if test="record.groupId != null">
+            #{record.groupId,jdbcType=VARCHAR},
+          </if>
+          <if test="record.messageJson != null">
+            #{record.messageJson,jdbcType=LONGVARCHAR},
+          </if>
+          <if test="record.messageText != null">
+            #{record.messageText,jdbcType=LONGVARCHAR},
+          </if>
+          <if test="record.officialAccountServiceIds != null">
+            #{record.officialAccountServiceIds,jdbcType=LONGVARCHAR},
+          </if>
+          <if test="record.userJson != null">
+            #{record.userJson,jdbcType=LONGVARCHAR},
+          </if>
+        </trim>
+      </otherwise>
+    </choose>
+    on duplicate key update 
+    <choose>
+      <when test="selective != null and selective.length > 0">
+        <foreach collection="selective" item="column" separator=",">
+          ${column.escapedColumnName} = #{record.${column.javaProperty},jdbcType=${column.jdbcType}}
+        </foreach>
+      </when>
+      <otherwise>
+        <trim suffixOverrides=",">
+          <if test="record.id != null">
+            id = #{record.id,jdbcType=INTEGER},
+          </if>
+          <if test="record.customMediaId != null">
+            custom_media_id = #{record.customMediaId,jdbcType=INTEGER},
+          </if>
+          <if test="record.createdAdminId != null">
+            created_admin_id = #{record.createdAdminId,jdbcType=INTEGER},
+          </if>
+          <if test="record.messageType != null">
+            message_type = #{record.messageType,jdbcType=CHAR},
+          </if>
+          <if test="record.officialAccountType != null">
+            official_account_type = #{record.officialAccountType,jdbcType=CHAR},
+          </if>
+          <if test="record.officialAccountSubscribeIds != null">
+            official_account_subscribe_ids = #{record.officialAccountSubscribeIds,jdbcType=VARCHAR},
+          </if>
+          <if test="record.sendtime != null">
+            sendtime = #{record.sendtime,jdbcType=INTEGER},
+          </if>
+          <if test="record.status != null">
+            status = #{record.status,jdbcType=CHAR},
+          </if>
+          <if test="record.createdFrom != null">
+            created_from = #{record.createdFrom,jdbcType=CHAR},
+          </if>
+          <if test="record.createtime != null">
+            createtime = #{record.createtime,jdbcType=INTEGER},
+          </if>
+          <if test="record.updatetime != null">
+            updatetime = #{record.updatetime,jdbcType=INTEGER},
+          </if>
+          <if test="record.selectType != null">
+            select_type = #{record.selectType,jdbcType=TINYINT},
+          </if>
+          <if test="record.groupId != null">
+            group_id = #{record.groupId,jdbcType=VARCHAR},
+          </if>
+          <if test="record.messageJson != null">
+            message_json = #{record.messageJson,jdbcType=LONGVARCHAR},
+          </if>
+          <if test="record.messageText != null">
+            message_text = #{record.messageText,jdbcType=LONGVARCHAR},
+          </if>
+          <if test="record.officialAccountServiceIds != null">
+            official_account_service_ids = #{record.officialAccountServiceIds,jdbcType=LONGVARCHAR},
+          </if>
+          <if test="record.userJson != null">
+            user_json = #{record.userJson,jdbcType=LONGVARCHAR},
+          </if>
+        </trim>
+      </otherwise>
+    </choose>
+  </insert>
+  <insert id="upsert" parameterType="com.book.dao.cps.entity.CustomMediaPush">
+    <!--
+      WARNING - @mbg.generated
+      This element is automatically generated by MyBatis Generator, do not modify.
+      This element was generated on Wed Sep 08 15:22:38 CST 2021.
+    -->
+    insert into custom_media_push
+    (id, custom_media_id, created_admin_id, message_type, official_account_type, official_account_subscribe_ids, 
+      sendtime, status, created_from, createtime, updatetime, select_type, group_id)
+    values
+    (#{id,jdbcType=INTEGER}, #{customMediaId,jdbcType=INTEGER}, #{createdAdminId,jdbcType=INTEGER}, 
+      #{messageType,jdbcType=CHAR}, #{officialAccountType,jdbcType=CHAR}, #{officialAccountSubscribeIds,jdbcType=VARCHAR}, 
+      #{sendtime,jdbcType=INTEGER}, #{status,jdbcType=CHAR}, #{createdFrom,jdbcType=CHAR}, 
+      #{createtime,jdbcType=INTEGER}, #{updatetime,jdbcType=INTEGER}, #{selectType,jdbcType=TINYINT}, 
+      #{groupId,jdbcType=VARCHAR})
+    on duplicate key update 
+    id = #{id,jdbcType=INTEGER}, 
+    custom_media_id = #{customMediaId,jdbcType=INTEGER}, 
+    created_admin_id = #{createdAdminId,jdbcType=INTEGER}, 
+    message_type = #{messageType,jdbcType=CHAR}, 
+    official_account_type = #{officialAccountType,jdbcType=CHAR}, 
+    official_account_subscribe_ids = #{officialAccountSubscribeIds,jdbcType=VARCHAR}, 
+    sendtime = #{sendtime,jdbcType=INTEGER}, 
+    status = #{status,jdbcType=CHAR}, 
+    created_from = #{createdFrom,jdbcType=CHAR}, 
+    createtime = #{createtime,jdbcType=INTEGER}, 
+    updatetime = #{updatetime,jdbcType=INTEGER}, 
+    select_type = #{selectType,jdbcType=TINYINT}, 
+    group_id = #{groupId,jdbcType=VARCHAR}
+  </insert>
+  <insert id="upsertWithBLOBs" parameterType="com.book.dao.cps.entity.CustomMediaPush">
+    <!--
+      WARNING - @mbg.generated
+      This element is automatically generated by MyBatis Generator, do not modify.
+      This element was generated on Wed Sep 08 15:22:38 CST 2021.
+    -->
+    insert into custom_media_push
+    (id, custom_media_id, created_admin_id, message_type, official_account_type, official_account_subscribe_ids, 
+      sendtime, status, created_from, createtime, updatetime, select_type, group_id, 
+      message_json, message_text, official_account_service_ids, user_json)
+    values
+    (#{id,jdbcType=INTEGER}, #{customMediaId,jdbcType=INTEGER}, #{createdAdminId,jdbcType=INTEGER}, 
+      #{messageType,jdbcType=CHAR}, #{officialAccountType,jdbcType=CHAR}, #{officialAccountSubscribeIds,jdbcType=VARCHAR}, 
+      #{sendtime,jdbcType=INTEGER}, #{status,jdbcType=CHAR}, #{createdFrom,jdbcType=CHAR}, 
+      #{createtime,jdbcType=INTEGER}, #{updatetime,jdbcType=INTEGER}, #{selectType,jdbcType=TINYINT}, 
+      #{groupId,jdbcType=VARCHAR}, #{messageJson,jdbcType=LONGVARCHAR}, #{messageText,jdbcType=LONGVARCHAR}, 
+      #{officialAccountServiceIds,jdbcType=LONGVARCHAR}, #{userJson,jdbcType=LONGVARCHAR}
+      )
+    on duplicate key update 
+    id = #{id,jdbcType=INTEGER}, 
+    custom_media_id = #{customMediaId,jdbcType=INTEGER}, 
+    created_admin_id = #{createdAdminId,jdbcType=INTEGER}, 
+    message_type = #{messageType,jdbcType=CHAR}, 
+    official_account_type = #{officialAccountType,jdbcType=CHAR}, 
+    official_account_subscribe_ids = #{officialAccountSubscribeIds,jdbcType=VARCHAR}, 
+    sendtime = #{sendtime,jdbcType=INTEGER}, 
+    status = #{status,jdbcType=CHAR}, 
+    created_from = #{createdFrom,jdbcType=CHAR}, 
+    createtime = #{createtime,jdbcType=INTEGER}, 
+    updatetime = #{updatetime,jdbcType=INTEGER}, 
+    select_type = #{selectType,jdbcType=TINYINT}, 
+    group_id = #{groupId,jdbcType=VARCHAR}, 
+    message_json = #{messageJson,jdbcType=LONGVARCHAR}, 
+    message_text = #{messageText,jdbcType=LONGVARCHAR}, 
+    official_account_service_ids = #{officialAccountServiceIds,jdbcType=LONGVARCHAR}, 
+    user_json = #{userJson,jdbcType=LONGVARCHAR}
+  </insert>
+</mapper>

+ 1006 - 0
book-dao/src/main/resources/mapper/cps/CustomUrlMapper.xml

@@ -0,0 +1,1006 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.book.dao.cps.mapper.CustomUrlMapper">
+  <resultMap id="BaseResultMap" type="com.book.dao.cps.entity.CustomUrl">
+    <!--
+      WARNING - @mbg.generated
+      This element is automatically generated by MyBatis Generator, do not modify.
+      This element was generated on Wed Sep 08 15:22:38 CST 2021.
+    -->
+    <id column="id" jdbcType="INTEGER" property="id" />
+    <result column="custom_id" jdbcType="INTEGER" property="customId" />
+    <result column="idx" jdbcType="TINYINT" property="idx" />
+    <result column="custom_media_push_id" jdbcType="INTEGER" property="customMediaPushId" />
+    <result column="title" jdbcType="VARCHAR" property="title" />
+    <result column="message_type" jdbcType="CHAR" property="messageType" />
+    <result column="url" jdbcType="VARCHAR" property="url" />
+    <result column="type" jdbcType="CHAR" property="type" />
+    <result column="official_account_id" jdbcType="INTEGER" property="officialAccountId" />
+    <result column="official_account_type" jdbcType="CHAR" property="officialAccountType" />
+    <result column="official_account_name" jdbcType="VARCHAR" property="officialAccountName" />
+    <result column="push_type" jdbcType="CHAR" property="pushType" />
+    <result column="book_id" jdbcType="BIGINT" property="bookId" />
+    <result column="book_name" jdbcType="VARCHAR" property="bookName" />
+    <result column="book_realname" jdbcType="VARCHAR" property="bookRealname" />
+    <result column="sendtime" jdbcType="INTEGER" property="sendtime" />
+    <result column="sendstatus" jdbcType="CHAR" property="sendstatus" />
+    <result column="createtime" jdbcType="INTEGER" property="createtime" />
+    <result column="updatetime" jdbcType="INTEGER" property="updatetime" />
+  </resultMap>
+  <sql id="Example_Where_Clause">
+    <!--
+      WARNING - @mbg.generated
+      This element is automatically generated by MyBatis Generator, do not modify.
+      This element was generated on Wed Sep 08 15:22:38 CST 2021.
+    -->
+    <where>
+      <foreach collection="oredCriteria" item="criteria" separator="or">
+        <if test="criteria.valid">
+          <trim prefix="(" prefixOverrides="and" suffix=")">
+            <foreach collection="criteria.criteria" item="criterion">
+              <choose>
+                <when test="criterion.noValue">
+                  and ${criterion.condition}
+                </when>
+                <when test="criterion.singleValue">
+                  and ${criterion.condition} #{criterion.value}
+                </when>
+                <when test="criterion.betweenValue">
+                  and ${criterion.condition} #{criterion.value} and #{criterion.secondValue}
+                </when>
+                <when test="criterion.listValue">
+                  and ${criterion.condition}
+                  <foreach close=")" collection="criterion.value" item="listItem" open="(" separator=",">
+                    #{listItem}
+                  </foreach>
+                </when>
+              </choose>
+            </foreach>
+          </trim>
+        </if>
+      </foreach>
+    </where>
+  </sql>
+  <sql id="Update_By_Example_Where_Clause">
+    <!--
+      WARNING - @mbg.generated
+      This element is automatically generated by MyBatis Generator, do not modify.
+      This element was generated on Wed Sep 08 15:22:38 CST 2021.
+    -->
+    <where>
+      <foreach collection="example.oredCriteria" item="criteria" separator="or">
+        <if test="criteria.valid">
+          <trim prefix="(" prefixOverrides="and" suffix=")">
+            <foreach collection="criteria.criteria" item="criterion">
+              <choose>
+                <when test="criterion.noValue">
+                  and ${criterion.condition}
+                </when>
+                <when test="criterion.singleValue">
+                  and ${criterion.condition} #{criterion.value}
+                </when>
+                <when test="criterion.betweenValue">
+                  and ${criterion.condition} #{criterion.value} and #{criterion.secondValue}
+                </when>
+                <when test="criterion.listValue">
+                  and ${criterion.condition}
+                  <foreach close=")" collection="criterion.value" item="listItem" open="(" separator=",">
+                    #{listItem}
+                  </foreach>
+                </when>
+              </choose>
+            </foreach>
+          </trim>
+        </if>
+      </foreach>
+    </where>
+  </sql>
+  <sql id="Base_Column_List">
+    <!--
+      WARNING - @mbg.generated
+      This element is automatically generated by MyBatis Generator, do not modify.
+      This element was generated on Wed Sep 08 15:22:38 CST 2021.
+    -->
+    id, custom_id, idx, custom_media_push_id, title, message_type, url, type, official_account_id, 
+    official_account_type, official_account_name, push_type, book_id, book_name, book_realname, 
+    sendtime, sendstatus, createtime, updatetime
+  </sql>
+  <select id="selectByExample" parameterType="com.book.dao.cps.pojo.example.CustomUrlExample" resultMap="BaseResultMap">
+    <!--
+      WARNING - @mbg.generated
+      This element is automatically generated by MyBatis Generator, do not modify.
+      This element was generated on Wed Sep 08 15:22:38 CST 2021.
+    -->
+    select
+    <if test="distinct">
+      distinct
+    </if>
+    <include refid="Base_Column_List" />
+    from custom_url
+    <if test="_parameter != null">
+      <include refid="Example_Where_Clause" />
+    </if>
+    <if test="orderByClause != null">
+      order by ${orderByClause}
+    </if>
+    <if test="rows != null">
+      <if test="offset != null">
+        limit ${offset}, ${rows}
+      </if>
+      <if test="offset == null">
+        limit ${rows}
+      </if>
+    </if>
+  </select>
+  <select id="selectByExampleSelective" parameterType="map" resultMap="BaseResultMap">
+    <!--
+      WARNING - @mbg.generated
+      This element is automatically generated by MyBatis Generator, do not modify.
+      This element was generated on Wed Sep 08 15:22:38 CST 2021.
+    -->
+    select
+    <if test="example != null and example.distinct">
+      distinct
+    </if>
+    <choose>
+      <when test="selective != null and selective.length > 0">
+        <foreach collection="selective" item="column" separator=",">
+          ${column.aliasedEscapedColumnName}
+        </foreach>
+      </when>
+      <otherwise>
+        <include refid="Base_Column_List" />
+      </otherwise>
+    </choose>
+    from custom_url
+    <if test="example != null">
+      <include refid="Update_By_Example_Where_Clause" />
+    </if>
+    <if test="example != null and example.orderByClause != null">
+      order by ${example.orderByClause}
+    </if>
+    <if test="example != null and example.rows != null">
+      <if test="example.offset != null">
+        limit ${example.offset}, ${example.rows}
+      </if>
+      <if test="example.offset == null">
+        limit ${example.rows}
+      </if>
+    </if>
+  </select>
+  <select id="selectByPrimaryKey" parameterType="java.lang.Integer" resultMap="BaseResultMap">
+    <!--
+      WARNING - @mbg.generated
+      This element is automatically generated by MyBatis Generator, do not modify.
+      This element was generated on Wed Sep 08 15:22:38 CST 2021.
+    -->
+    select 
+    <include refid="Base_Column_List" />
+    from custom_url
+    where id = #{id,jdbcType=INTEGER}
+  </select>
+  <select id="selectByPrimaryKeySelective" parameterType="map" resultMap="BaseResultMap">
+    <!--
+      WARNING - @mbg.generated
+      This element is automatically generated by MyBatis Generator, do not modify.
+      This element was generated on Wed Sep 08 15:22:38 CST 2021.
+    -->
+    select
+    <choose>
+      <when test="selective != null and selective.length > 0">
+        <foreach collection="selective" item="column" separator=",">
+          ${column.aliasedEscapedColumnName}
+        </foreach>
+      </when>
+      <otherwise>
+        <include refid="Base_Column_List" />
+      </otherwise>
+    </choose>
+    from custom_url
+    where id = #{id,jdbcType=INTEGER}
+  </select>
+  <delete id="deleteByPrimaryKey" parameterType="java.lang.Integer">
+    <!--
+      WARNING - @mbg.generated
+      This element is automatically generated by MyBatis Generator, do not modify.
+      This element was generated on Wed Sep 08 15:22:38 CST 2021.
+    -->
+    delete from custom_url
+    where id = #{id,jdbcType=INTEGER}
+  </delete>
+  <delete id="deleteByExample" parameterType="com.book.dao.cps.pojo.example.CustomUrlExample">
+    <!--
+      WARNING - @mbg.generated
+      This element is automatically generated by MyBatis Generator, do not modify.
+      This element was generated on Wed Sep 08 15:22:38 CST 2021.
+    -->
+    delete from custom_url
+    <if test="_parameter != null">
+      <include refid="Example_Where_Clause" />
+    </if>
+  </delete>
+  <insert id="insert" parameterType="com.book.dao.cps.entity.CustomUrl">
+    <!--
+      WARNING - @mbg.generated
+      This element is automatically generated by MyBatis Generator, do not modify.
+      This element was generated on Wed Sep 08 15:22:38 CST 2021.
+    -->
+    insert into custom_url (id, custom_id, idx, 
+      custom_media_push_id, title, message_type, 
+      url, type, official_account_id, 
+      official_account_type, official_account_name, 
+      push_type, book_id, book_name, 
+      book_realname, sendtime, sendstatus, 
+      createtime, updatetime)
+    values (#{id,jdbcType=INTEGER}, #{customId,jdbcType=INTEGER}, #{idx,jdbcType=TINYINT}, 
+      #{customMediaPushId,jdbcType=INTEGER}, #{title,jdbcType=VARCHAR}, #{messageType,jdbcType=CHAR}, 
+      #{url,jdbcType=VARCHAR}, #{type,jdbcType=CHAR}, #{officialAccountId,jdbcType=INTEGER}, 
+      #{officialAccountType,jdbcType=CHAR}, #{officialAccountName,jdbcType=VARCHAR}, 
+      #{pushType,jdbcType=CHAR}, #{bookId,jdbcType=BIGINT}, #{bookName,jdbcType=VARCHAR}, 
+      #{bookRealname,jdbcType=VARCHAR}, #{sendtime,jdbcType=INTEGER}, #{sendstatus,jdbcType=CHAR}, 
+      #{createtime,jdbcType=INTEGER}, #{updatetime,jdbcType=INTEGER})
+  </insert>
+  <insert id="insertSelective" parameterType="map">
+    <!--
+      WARNING - @mbg.generated
+      This element is automatically generated by MyBatis Generator, do not modify.
+      This element was generated on Wed Sep 08 15:22:38 CST 2021.
+    -->
+    insert into custom_url
+    <choose>
+      <when test="selective != null and selective.length > 0">
+        <foreach close=")" collection="selective" item="column" open="(" separator=",">
+          ${column.escapedColumnName}
+        </foreach>
+      </when>
+      <otherwise>
+        <trim prefix="(" suffix=")" suffixOverrides=",">
+          <if test="record.id != null">
+            id,
+          </if>
+          <if test="record.customId != null">
+            custom_id,
+          </if>
+          <if test="record.idx != null">
+            idx,
+          </if>
+          <if test="record.customMediaPushId != null">
+            custom_media_push_id,
+          </if>
+          <if test="record.title != null">
+            title,
+          </if>
+          <if test="record.messageType != null">
+            message_type,
+          </if>
+          <if test="record.url != null">
+            url,
+          </if>
+          <if test="record.type != null">
+            type,
+          </if>
+          <if test="record.officialAccountId != null">
+            official_account_id,
+          </if>
+          <if test="record.officialAccountType != null">
+            official_account_type,
+          </if>
+          <if test="record.officialAccountName != null">
+            official_account_name,
+          </if>
+          <if test="record.pushType != null">
+            push_type,
+          </if>
+          <if test="record.bookId != null">
+            book_id,
+          </if>
+          <if test="record.bookName != null">
+            book_name,
+          </if>
+          <if test="record.bookRealname != null">
+            book_realname,
+          </if>
+          <if test="record.sendtime != null">
+            sendtime,
+          </if>
+          <if test="record.sendstatus != null">
+            sendstatus,
+          </if>
+          <if test="record.createtime != null">
+            createtime,
+          </if>
+          <if test="record.updatetime != null">
+            updatetime,
+          </if>
+        </trim>
+        <trim prefix="(" suffix=")" suffixOverrides="," />
+      </otherwise>
+    </choose>
+    values
+    <choose>
+      <when test="selective != null and selective.length > 0">
+        <foreach close=")" collection="selective" item="column" open="(" separator=",">
+          #{record.${column.javaProperty},jdbcType=${column.jdbcType}}
+        </foreach>
+      </when>
+      <otherwise>
+        <trim prefix="(" suffix=")" suffixOverrides=",">
+          <if test="record.id != null">
+            #{record.id,jdbcType=INTEGER},
+          </if>
+          <if test="record.customId != null">
+            #{record.customId,jdbcType=INTEGER},
+          </if>
+          <if test="record.idx != null">
+            #{record.idx,jdbcType=TINYINT},
+          </if>
+          <if test="record.customMediaPushId != null">
+            #{record.customMediaPushId,jdbcType=INTEGER},
+          </if>
+          <if test="record.title != null">
+            #{record.title,jdbcType=VARCHAR},
+          </if>
+          <if test="record.messageType != null">
+            #{record.messageType,jdbcType=CHAR},
+          </if>
+          <if test="record.url != null">
+            #{record.url,jdbcType=VARCHAR},
+          </if>
+          <if test="record.type != null">
+            #{record.type,jdbcType=CHAR},
+          </if>
+          <if test="record.officialAccountId != null">
+            #{record.officialAccountId,jdbcType=INTEGER},
+          </if>
+          <if test="record.officialAccountType != null">
+            #{record.officialAccountType,jdbcType=CHAR},
+          </if>
+          <if test="record.officialAccountName != null">
+            #{record.officialAccountName,jdbcType=VARCHAR},
+          </if>
+          <if test="record.pushType != null">
+            #{record.pushType,jdbcType=CHAR},
+          </if>
+          <if test="record.bookId != null">
+            #{record.bookId,jdbcType=BIGINT},
+          </if>
+          <if test="record.bookName != null">
+            #{record.bookName,jdbcType=VARCHAR},
+          </if>
+          <if test="record.bookRealname != null">
+            #{record.bookRealname,jdbcType=VARCHAR},
+          </if>
+          <if test="record.sendtime != null">
+            #{record.sendtime,jdbcType=INTEGER},
+          </if>
+          <if test="record.sendstatus != null">
+            #{record.sendstatus,jdbcType=CHAR},
+          </if>
+          <if test="record.createtime != null">
+            #{record.createtime,jdbcType=INTEGER},
+          </if>
+          <if test="record.updatetime != null">
+            #{record.updatetime,jdbcType=INTEGER},
+          </if>
+        </trim>
+      </otherwise>
+    </choose>
+  </insert>
+  <select id="countByExample" parameterType="com.book.dao.cps.pojo.example.CustomUrlExample" resultType="java.lang.Long">
+    <!--
+      WARNING - @mbg.generated
+      This element is automatically generated by MyBatis Generator, do not modify.
+      This element was generated on Wed Sep 08 15:22:38 CST 2021.
+    -->
+    select count(*) from custom_url
+    <if test="_parameter != null">
+      <include refid="Example_Where_Clause" />
+    </if>
+  </select>
+  <update id="updateByExampleSelective" parameterType="map">
+    <!--
+      WARNING - @mbg.generated
+      This element is automatically generated by MyBatis Generator, do not modify.
+      This element was generated on Wed Sep 08 15:22:38 CST 2021.
+    -->
+    update custom_url
+    SET
+    <choose>
+      <when test="selective != null and selective.length > 0">
+        <foreach collection="selective" item="column" separator=",">
+          ${column.escapedColumnName} = #{record.${column.javaProperty},jdbcType=${column.jdbcType}}
+        </foreach>
+      </when>
+      <otherwise>
+        <trim suffixOverrides=",">
+          <if test="record.id != null">
+            id = #{record.id,jdbcType=INTEGER},
+          </if>
+          <if test="record.customId != null">
+            custom_id = #{record.customId,jdbcType=INTEGER},
+          </if>
+          <if test="record.idx != null">
+            idx = #{record.idx,jdbcType=TINYINT},
+          </if>
+          <if test="record.customMediaPushId != null">
+            custom_media_push_id = #{record.customMediaPushId,jdbcType=INTEGER},
+          </if>
+          <if test="record.title != null">
+            title = #{record.title,jdbcType=VARCHAR},
+          </if>
+          <if test="record.messageType != null">
+            message_type = #{record.messageType,jdbcType=CHAR},
+          </if>
+          <if test="record.url != null">
+            url = #{record.url,jdbcType=VARCHAR},
+          </if>
+          <if test="record.type != null">
+            type = #{record.type,jdbcType=CHAR},
+          </if>
+          <if test="record.officialAccountId != null">
+            official_account_id = #{record.officialAccountId,jdbcType=INTEGER},
+          </if>
+          <if test="record.officialAccountType != null">
+            official_account_type = #{record.officialAccountType,jdbcType=CHAR},
+          </if>
+          <if test="record.officialAccountName != null">
+            official_account_name = #{record.officialAccountName,jdbcType=VARCHAR},
+          </if>
+          <if test="record.pushType != null">
+            push_type = #{record.pushType,jdbcType=CHAR},
+          </if>
+          <if test="record.bookId != null">
+            book_id = #{record.bookId,jdbcType=BIGINT},
+          </if>
+          <if test="record.bookName != null">
+            book_name = #{record.bookName,jdbcType=VARCHAR},
+          </if>
+          <if test="record.bookRealname != null">
+            book_realname = #{record.bookRealname,jdbcType=VARCHAR},
+          </if>
+          <if test="record.sendtime != null">
+            sendtime = #{record.sendtime,jdbcType=INTEGER},
+          </if>
+          <if test="record.sendstatus != null">
+            sendstatus = #{record.sendstatus,jdbcType=CHAR},
+          </if>
+          <if test="record.createtime != null">
+            createtime = #{record.createtime,jdbcType=INTEGER},
+          </if>
+          <if test="record.updatetime != null">
+            updatetime = #{record.updatetime,jdbcType=INTEGER},
+          </if>
+        </trim>
+      </otherwise>
+    </choose>
+    <if test="_parameter != null">
+      <include refid="Update_By_Example_Where_Clause" />
+    </if>
+  </update>
+  <update id="updateByExample" parameterType="map">
+    <!--
+      WARNING - @mbg.generated
+      This element is automatically generated by MyBatis Generator, do not modify.
+      This element was generated on Wed Sep 08 15:22:38 CST 2021.
+    -->
+    update custom_url
+    set id = #{record.id,jdbcType=INTEGER},
+      custom_id = #{record.customId,jdbcType=INTEGER},
+      idx = #{record.idx,jdbcType=TINYINT},
+      custom_media_push_id = #{record.customMediaPushId,jdbcType=INTEGER},
+      title = #{record.title,jdbcType=VARCHAR},
+      message_type = #{record.messageType,jdbcType=CHAR},
+      url = #{record.url,jdbcType=VARCHAR},
+      type = #{record.type,jdbcType=CHAR},
+      official_account_id = #{record.officialAccountId,jdbcType=INTEGER},
+      official_account_type = #{record.officialAccountType,jdbcType=CHAR},
+      official_account_name = #{record.officialAccountName,jdbcType=VARCHAR},
+      push_type = #{record.pushType,jdbcType=CHAR},
+      book_id = #{record.bookId,jdbcType=BIGINT},
+      book_name = #{record.bookName,jdbcType=VARCHAR},
+      book_realname = #{record.bookRealname,jdbcType=VARCHAR},
+      sendtime = #{record.sendtime,jdbcType=INTEGER},
+      sendstatus = #{record.sendstatus,jdbcType=CHAR},
+      createtime = #{record.createtime,jdbcType=INTEGER},
+      updatetime = #{record.updatetime,jdbcType=INTEGER}
+    <if test="_parameter != null">
+      <include refid="Update_By_Example_Where_Clause" />
+    </if>
+  </update>
+  <update id="updateByPrimaryKeySelective" parameterType="map">
+    <!--
+      WARNING - @mbg.generated
+      This element is automatically generated by MyBatis Generator, do not modify.
+      This element was generated on Wed Sep 08 15:22:38 CST 2021.
+    -->
+    update custom_url
+    SET
+    <choose>
+      <when test="selective != null and selective.length > 0">
+        <foreach collection="selective" item="column" separator=",">
+          ${column.escapedColumnName} = #{record.${column.javaProperty},jdbcType=${column.jdbcType}}
+        </foreach>
+      </when>
+      <otherwise>
+        <trim suffixOverrides=",">
+          <if test="record.customId != null">
+            custom_id = #{record.customId,jdbcType=INTEGER},
+          </if>
+          <if test="record.idx != null">
+            idx = #{record.idx,jdbcType=TINYINT},
+          </if>
+          <if test="record.customMediaPushId != null">
+            custom_media_push_id = #{record.customMediaPushId,jdbcType=INTEGER},
+          </if>
+          <if test="record.title != null">
+            title = #{record.title,jdbcType=VARCHAR},
+          </if>
+          <if test="record.messageType != null">
+            message_type = #{record.messageType,jdbcType=CHAR},
+          </if>
+          <if test="record.url != null">
+            url = #{record.url,jdbcType=VARCHAR},
+          </if>
+          <if test="record.type != null">
+            type = #{record.type,jdbcType=CHAR},
+          </if>
+          <if test="record.officialAccountId != null">
+            official_account_id = #{record.officialAccountId,jdbcType=INTEGER},
+          </if>
+          <if test="record.officialAccountType != null">
+            official_account_type = #{record.officialAccountType,jdbcType=CHAR},
+          </if>
+          <if test="record.officialAccountName != null">
+            official_account_name = #{record.officialAccountName,jdbcType=VARCHAR},
+          </if>
+          <if test="record.pushType != null">
+            push_type = #{record.pushType,jdbcType=CHAR},
+          </if>
+          <if test="record.bookId != null">
+            book_id = #{record.bookId,jdbcType=BIGINT},
+          </if>
+          <if test="record.bookName != null">
+            book_name = #{record.bookName,jdbcType=VARCHAR},
+          </if>
+          <if test="record.bookRealname != null">
+            book_realname = #{record.bookRealname,jdbcType=VARCHAR},
+          </if>
+          <if test="record.sendtime != null">
+            sendtime = #{record.sendtime,jdbcType=INTEGER},
+          </if>
+          <if test="record.sendstatus != null">
+            sendstatus = #{record.sendstatus,jdbcType=CHAR},
+          </if>
+          <if test="record.createtime != null">
+            createtime = #{record.createtime,jdbcType=INTEGER},
+          </if>
+          <if test="record.updatetime != null">
+            updatetime = #{record.updatetime,jdbcType=INTEGER},
+          </if>
+        </trim>
+      </otherwise>
+    </choose>
+    where id = #{record.id,jdbcType=INTEGER}
+  </update>
+  <update id="updateByPrimaryKey" parameterType="com.book.dao.cps.entity.CustomUrl">
+    <!--
+      WARNING - @mbg.generated
+      This element is automatically generated by MyBatis Generator, do not modify.
+      This element was generated on Wed Sep 08 15:22:38 CST 2021.
+    -->
+    update custom_url
+    set custom_id = #{customId,jdbcType=INTEGER},
+      idx = #{idx,jdbcType=TINYINT},
+      custom_media_push_id = #{customMediaPushId,jdbcType=INTEGER},
+      title = #{title,jdbcType=VARCHAR},
+      message_type = #{messageType,jdbcType=CHAR},
+      url = #{url,jdbcType=VARCHAR},
+      type = #{type,jdbcType=CHAR},
+      official_account_id = #{officialAccountId,jdbcType=INTEGER},
+      official_account_type = #{officialAccountType,jdbcType=CHAR},
+      official_account_name = #{officialAccountName,jdbcType=VARCHAR},
+      push_type = #{pushType,jdbcType=CHAR},
+      book_id = #{bookId,jdbcType=BIGINT},
+      book_name = #{bookName,jdbcType=VARCHAR},
+      book_realname = #{bookRealname,jdbcType=VARCHAR},
+      sendtime = #{sendtime,jdbcType=INTEGER},
+      sendstatus = #{sendstatus,jdbcType=CHAR},
+      createtime = #{createtime,jdbcType=INTEGER},
+      updatetime = #{updatetime,jdbcType=INTEGER}
+    where id = #{id,jdbcType=INTEGER}
+  </update>
+  <select id="selectOneByExample" parameterType="com.book.dao.cps.pojo.example.CustomUrlExample" resultMap="BaseResultMap">
+    <!--
+      WARNING - @mbg.generated
+      This element is automatically generated by MyBatis Generator, do not modify.
+      This element was generated on Wed Sep 08 15:22:38 CST 2021.
+    -->
+    select
+    <include refid="Base_Column_List" />
+    from custom_url
+    <if test="_parameter != null">
+      <include refid="Example_Where_Clause" />
+    </if>
+    <if test="orderByClause != null">
+      order by ${orderByClause}
+    </if>
+    limit 1
+  </select>
+  <select id="selectOneByExampleSelective" parameterType="map" resultMap="BaseResultMap">
+    <!--
+      WARNING - @mbg.generated
+      This element is automatically generated by MyBatis Generator, do not modify.
+      This element was generated on Wed Sep 08 15:22:38 CST 2021.
+    -->
+    select
+    <choose>
+      <when test="selective != null and selective.length > 0">
+        <foreach collection="selective" item="column" separator=",">
+          ${column.aliasedEscapedColumnName}
+        </foreach>
+      </when>
+      <otherwise>
+        <include refid="Base_Column_List" />
+      </otherwise>
+    </choose>
+    from custom_url
+    <if test="example != null">
+      <include refid="Update_By_Example_Where_Clause" />
+    </if>
+    <if test="example != null and example.orderByClause != null">
+      order by ${example.orderByClause}
+    </if>
+    limit 1
+  </select>
+  <insert id="batchInsert" parameterType="map">
+    <!--
+      WARNING - @mbg.generated
+      This element is automatically generated by MyBatis Generator, do not modify.
+      This element was generated on Wed Sep 08 15:22:38 CST 2021.
+    -->
+    insert into custom_url
+    (id, custom_id, idx, custom_media_push_id, title, message_type, url, type, official_account_id, 
+      official_account_type, official_account_name, push_type, book_id, book_name, book_realname, 
+      sendtime, sendstatus, createtime, updatetime)
+    values
+    <foreach collection="list" item="item" separator=",">
+      (#{item.id,jdbcType=INTEGER}, #{item.customId,jdbcType=INTEGER}, #{item.idx,jdbcType=TINYINT}, 
+        #{item.customMediaPushId,jdbcType=INTEGER}, #{item.title,jdbcType=VARCHAR}, #{item.messageType,jdbcType=CHAR}, 
+        #{item.url,jdbcType=VARCHAR}, #{item.type,jdbcType=CHAR}, #{item.officialAccountId,jdbcType=INTEGER}, 
+        #{item.officialAccountType,jdbcType=CHAR}, #{item.officialAccountName,jdbcType=VARCHAR}, 
+        #{item.pushType,jdbcType=CHAR}, #{item.bookId,jdbcType=BIGINT}, #{item.bookName,jdbcType=VARCHAR}, 
+        #{item.bookRealname,jdbcType=VARCHAR}, #{item.sendtime,jdbcType=INTEGER}, #{item.sendstatus,jdbcType=CHAR}, 
+        #{item.createtime,jdbcType=INTEGER}, #{item.updatetime,jdbcType=INTEGER})
+    </foreach>
+  </insert>
+  <insert id="batchInsertSelective" parameterType="map">
+    <!--
+      WARNING - @mbg.generated
+      This element is automatically generated by MyBatis Generator, do not modify.
+      This element was generated on Wed Sep 08 15:22:38 CST 2021.
+    -->
+    insert into custom_url (
+    <foreach collection="selective" item="column" separator=",">
+      ${column.escapedColumnName}
+    </foreach>
+    )
+    values
+    <foreach collection="list" item="item" separator=",">
+      (
+      <foreach collection="selective" item="column" separator=",">
+        <if test="'id'.toString() == column.value">
+          #{item.id,jdbcType=INTEGER}
+        </if>
+        <if test="'custom_id'.toString() == column.value">
+          #{item.customId,jdbcType=INTEGER}
+        </if>
+        <if test="'idx'.toString() == column.value">
+          #{item.idx,jdbcType=TINYINT}
+        </if>
+        <if test="'custom_media_push_id'.toString() == column.value">
+          #{item.customMediaPushId,jdbcType=INTEGER}
+        </if>
+        <if test="'title'.toString() == column.value">
+          #{item.title,jdbcType=VARCHAR}
+        </if>
+        <if test="'message_type'.toString() == column.value">
+          #{item.messageType,jdbcType=CHAR}
+        </if>
+        <if test="'url'.toString() == column.value">
+          #{item.url,jdbcType=VARCHAR}
+        </if>
+        <if test="'type'.toString() == column.value">
+          #{item.type,jdbcType=CHAR}
+        </if>
+        <if test="'official_account_id'.toString() == column.value">
+          #{item.officialAccountId,jdbcType=INTEGER}
+        </if>
+        <if test="'official_account_type'.toString() == column.value">
+          #{item.officialAccountType,jdbcType=CHAR}
+        </if>
+        <if test="'official_account_name'.toString() == column.value">
+          #{item.officialAccountName,jdbcType=VARCHAR}
+        </if>
+        <if test="'push_type'.toString() == column.value">
+          #{item.pushType,jdbcType=CHAR}
+        </if>
+        <if test="'book_id'.toString() == column.value">
+          #{item.bookId,jdbcType=BIGINT}
+        </if>
+        <if test="'book_name'.toString() == column.value">
+          #{item.bookName,jdbcType=VARCHAR}
+        </if>
+        <if test="'book_realname'.toString() == column.value">
+          #{item.bookRealname,jdbcType=VARCHAR}
+        </if>
+        <if test="'sendtime'.toString() == column.value">
+          #{item.sendtime,jdbcType=INTEGER}
+        </if>
+        <if test="'sendstatus'.toString() == column.value">
+          #{item.sendstatus,jdbcType=CHAR}
+        </if>
+        <if test="'createtime'.toString() == column.value">
+          #{item.createtime,jdbcType=INTEGER}
+        </if>
+        <if test="'updatetime'.toString() == column.value">
+          #{item.updatetime,jdbcType=INTEGER}
+        </if>
+      </foreach>
+      )
+    </foreach>
+  </insert>
+  <insert id="upsertSelective" parameterType="map">
+    <!--
+      WARNING - @mbg.generated
+      This element is automatically generated by MyBatis Generator, do not modify.
+      This element was generated on Wed Sep 08 15:22:38 CST 2021.
+    -->
+    insert into custom_url
+    <choose>
+      <when test="selective != null and selective.length > 0">
+        <foreach close=")" collection="selective" item="column" open="(" separator=",">
+          ${column.escapedColumnName}
+        </foreach>
+      </when>
+      <otherwise>
+        <trim prefix="(" suffix=")" suffixOverrides=",">
+          <if test="record.id != null">
+            id,
+          </if>
+          <if test="record.customId != null">
+            custom_id,
+          </if>
+          <if test="record.idx != null">
+            idx,
+          </if>
+          <if test="record.customMediaPushId != null">
+            custom_media_push_id,
+          </if>
+          <if test="record.title != null">
+            title,
+          </if>
+          <if test="record.messageType != null">
+            message_type,
+          </if>
+          <if test="record.url != null">
+            url,
+          </if>
+          <if test="record.type != null">
+            type,
+          </if>
+          <if test="record.officialAccountId != null">
+            official_account_id,
+          </if>
+          <if test="record.officialAccountType != null">
+            official_account_type,
+          </if>
+          <if test="record.officialAccountName != null">
+            official_account_name,
+          </if>
+          <if test="record.pushType != null">
+            push_type,
+          </if>
+          <if test="record.bookId != null">
+            book_id,
+          </if>
+          <if test="record.bookName != null">
+            book_name,
+          </if>
+          <if test="record.bookRealname != null">
+            book_realname,
+          </if>
+          <if test="record.sendtime != null">
+            sendtime,
+          </if>
+          <if test="record.sendstatus != null">
+            sendstatus,
+          </if>
+          <if test="record.createtime != null">
+            createtime,
+          </if>
+          <if test="record.updatetime != null">
+            updatetime,
+          </if>
+        </trim>
+        <trim prefix="(" suffix=")" suffixOverrides="," />
+      </otherwise>
+    </choose>
+    values
+    <choose>
+      <when test="selective != null and selective.length > 0">
+        <foreach close=")" collection="selective" item="column" open="(" separator=",">
+          #{record.${column.javaProperty},jdbcType=${column.jdbcType}}
+        </foreach>
+      </when>
+      <otherwise>
+        <trim prefix="(" suffix=")" suffixOverrides=",">
+          <if test="record.id != null">
+            #{record.id,jdbcType=INTEGER},
+          </if>
+          <if test="record.customId != null">
+            #{record.customId,jdbcType=INTEGER},
+          </if>
+          <if test="record.idx != null">
+            #{record.idx,jdbcType=TINYINT},
+          </if>
+          <if test="record.customMediaPushId != null">
+            #{record.customMediaPushId,jdbcType=INTEGER},
+          </if>
+          <if test="record.title != null">
+            #{record.title,jdbcType=VARCHAR},
+          </if>
+          <if test="record.messageType != null">
+            #{record.messageType,jdbcType=CHAR},
+          </if>
+          <if test="record.url != null">
+            #{record.url,jdbcType=VARCHAR},
+          </if>
+          <if test="record.type != null">
+            #{record.type,jdbcType=CHAR},
+          </if>
+          <if test="record.officialAccountId != null">
+            #{record.officialAccountId,jdbcType=INTEGER},
+          </if>
+          <if test="record.officialAccountType != null">
+            #{record.officialAccountType,jdbcType=CHAR},
+          </if>
+          <if test="record.officialAccountName != null">
+            #{record.officialAccountName,jdbcType=VARCHAR},
+          </if>
+          <if test="record.pushType != null">
+            #{record.pushType,jdbcType=CHAR},
+          </if>
+          <if test="record.bookId != null">
+            #{record.bookId,jdbcType=BIGINT},
+          </if>
+          <if test="record.bookName != null">
+            #{record.bookName,jdbcType=VARCHAR},
+          </if>
+          <if test="record.bookRealname != null">
+            #{record.bookRealname,jdbcType=VARCHAR},
+          </if>
+          <if test="record.sendtime != null">
+            #{record.sendtime,jdbcType=INTEGER},
+          </if>
+          <if test="record.sendstatus != null">
+            #{record.sendstatus,jdbcType=CHAR},
+          </if>
+          <if test="record.createtime != null">
+            #{record.createtime,jdbcType=INTEGER},
+          </if>
+          <if test="record.updatetime != null">
+            #{record.updatetime,jdbcType=INTEGER},
+          </if>
+        </trim>
+      </otherwise>
+    </choose>
+    on duplicate key update 
+    <choose>
+      <when test="selective != null and selective.length > 0">
+        <foreach collection="selective" item="column" separator=",">
+          ${column.escapedColumnName} = #{record.${column.javaProperty},jdbcType=${column.jdbcType}}
+        </foreach>
+      </when>
+      <otherwise>
+        <trim suffixOverrides=",">
+          <if test="record.id != null">
+            id = #{record.id,jdbcType=INTEGER},
+          </if>
+          <if test="record.customId != null">
+            custom_id = #{record.customId,jdbcType=INTEGER},
+          </if>
+          <if test="record.idx != null">
+            idx = #{record.idx,jdbcType=TINYINT},
+          </if>
+          <if test="record.customMediaPushId != null">
+            custom_media_push_id = #{record.customMediaPushId,jdbcType=INTEGER},
+          </if>
+          <if test="record.title != null">
+            title = #{record.title,jdbcType=VARCHAR},
+          </if>
+          <if test="record.messageType != null">
+            message_type = #{record.messageType,jdbcType=CHAR},
+          </if>
+          <if test="record.url != null">
+            url = #{record.url,jdbcType=VARCHAR},
+          </if>
+          <if test="record.type != null">
+            type = #{record.type,jdbcType=CHAR},
+          </if>
+          <if test="record.officialAccountId != null">
+            official_account_id = #{record.officialAccountId,jdbcType=INTEGER},
+          </if>
+          <if test="record.officialAccountType != null">
+            official_account_type = #{record.officialAccountType,jdbcType=CHAR},
+          </if>
+          <if test="record.officialAccountName != null">
+            official_account_name = #{record.officialAccountName,jdbcType=VARCHAR},
+          </if>
+          <if test="record.pushType != null">
+            push_type = #{record.pushType,jdbcType=CHAR},
+          </if>
+          <if test="record.bookId != null">
+            book_id = #{record.bookId,jdbcType=BIGINT},
+          </if>
+          <if test="record.bookName != null">
+            book_name = #{record.bookName,jdbcType=VARCHAR},
+          </if>
+          <if test="record.bookRealname != null">
+            book_realname = #{record.bookRealname,jdbcType=VARCHAR},
+          </if>
+          <if test="record.sendtime != null">
+            sendtime = #{record.sendtime,jdbcType=INTEGER},
+          </if>
+          <if test="record.sendstatus != null">
+            sendstatus = #{record.sendstatus,jdbcType=CHAR},
+          </if>
+          <if test="record.createtime != null">
+            createtime = #{record.createtime,jdbcType=INTEGER},
+          </if>
+          <if test="record.updatetime != null">
+            updatetime = #{record.updatetime,jdbcType=INTEGER},
+          </if>
+        </trim>
+      </otherwise>
+    </choose>
+  </insert>
+  <insert id="upsert" parameterType="com.book.dao.cps.entity.CustomUrl">
+    <!--
+      WARNING - @mbg.generated
+      This element is automatically generated by MyBatis Generator, do not modify.
+      This element was generated on Wed Sep 08 15:22:38 CST 2021.
+    -->
+    insert into custom_url
+    (id, custom_id, idx, custom_media_push_id, title, message_type, url, type, official_account_id, 
+      official_account_type, official_account_name, push_type, book_id, book_name, book_realname, 
+      sendtime, sendstatus, createtime, updatetime)
+    values
+    (#{id,jdbcType=INTEGER}, #{customId,jdbcType=INTEGER}, #{idx,jdbcType=TINYINT}, #{customMediaPushId,jdbcType=INTEGER}, 
+      #{title,jdbcType=VARCHAR}, #{messageType,jdbcType=CHAR}, #{url,jdbcType=VARCHAR}, 
+      #{type,jdbcType=CHAR}, #{officialAccountId,jdbcType=INTEGER}, #{officialAccountType,jdbcType=CHAR}, 
+      #{officialAccountName,jdbcType=VARCHAR}, #{pushType,jdbcType=CHAR}, #{bookId,jdbcType=BIGINT}, 
+      #{bookName,jdbcType=VARCHAR}, #{bookRealname,jdbcType=VARCHAR}, #{sendtime,jdbcType=INTEGER}, 
+      #{sendstatus,jdbcType=CHAR}, #{createtime,jdbcType=INTEGER}, #{updatetime,jdbcType=INTEGER}
+      )
+    on duplicate key update 
+    id = #{id,jdbcType=INTEGER}, 
+    custom_id = #{customId,jdbcType=INTEGER}, 
+    idx = #{idx,jdbcType=TINYINT}, 
+    custom_media_push_id = #{customMediaPushId,jdbcType=INTEGER}, 
+    title = #{title,jdbcType=VARCHAR}, 
+    message_type = #{messageType,jdbcType=CHAR}, 
+    url = #{url,jdbcType=VARCHAR}, 
+    type = #{type,jdbcType=CHAR}, 
+    official_account_id = #{officialAccountId,jdbcType=INTEGER}, 
+    official_account_type = #{officialAccountType,jdbcType=CHAR}, 
+    official_account_name = #{officialAccountName,jdbcType=VARCHAR}, 
+    push_type = #{pushType,jdbcType=CHAR}, 
+    book_id = #{bookId,jdbcType=BIGINT}, 
+    book_name = #{bookName,jdbcType=VARCHAR}, 
+    book_realname = #{bookRealname,jdbcType=VARCHAR}, 
+    sendtime = #{sendtime,jdbcType=INTEGER}, 
+    sendstatus = #{sendstatus,jdbcType=CHAR}, 
+    createtime = #{createtime,jdbcType=INTEGER}, 
+    updatetime = #{updatetime,jdbcType=INTEGER}
+  </insert>
+</mapper>

+ 8 - 8
book-dao/src/main/resources/mapper/cps/UserMapper.xml

@@ -71,16 +71,14 @@
         SELECT * FROM user
         <trim prefix="WHERE" prefixOverrides="AND | OR">
             <if test="openid!=null and openid!=''">
-                and openid != #{openid}
-            </if>
-            <if test="mobile!=null and mobile!=''">
-                and mobile != #{mobile}
+                and openid = #{openid}
             </if>
+
             <if test="channel_id!=null and channel_id!=0">
-                and channel_id != #{channel_id}
+                and channel_id = #{channel_id}
             </if>
             <if test="sex!=null and sex!='-1'">
-                and sex != #{sex}
+                and sex = #{sex}
             </if>
             <if test="tag!=null and tag!='-1'">
                 and (
@@ -90,7 +88,7 @@
                 )
             </if>
             <if test="is_pay!=null and is_pay!='-1'">
-                and is_pay != #{is_pay}
+                and is_pay = #{is_pay}
             </if>
             <if test="kandian_max!=null and kandian_max!=''">
                 and kandian &lt;= #{kandian_max}
@@ -101,7 +99,9 @@
             <if test="subscribe_time!=null and subscribe_time!='-1'">
                 and subscribe_time &gt;= #{subscribe_time}
             </if>
-            and operate_time &lt; (UNIX_TIMESTAMP(NOW()) - 172800)
+            and operate_time &gt; (UNIX_TIMESTAMP(NOW()) - 172800)
+            and state ='1'
+            and is_subscribe = '1'
 
         </trim>
 

+ 4 - 1
book-dao/src/main/resources/mybatis-generator.xml

@@ -128,11 +128,14 @@
 <!--        <table tableName="return_recommand"></table>-->
 <!--        <table tableName="bookshelf_recommand"></table>-->
 <!--        <table tableName="smart_recommand"></table>-->
-        <table tableName="upload_book"></table>
+  <!--      <table tableName="upload_book"></table>-->
 <!--        <table tableName="edit_book"></table>-->
 <!--        <table tableName="login"></table>-->
 <!--        <table tableName="goods"></table>-->
 <!--        <table tableName="user_read_config"></table>-->
+        <table tableName="custom_url"></table>
+        <table tableName="custom_media_push"></table>
+
 
     </context>
 

+ 1 - 1
book-dao/src/main/resources/polar-mybatis-generator.xml

@@ -129,7 +129,7 @@
 <!--        <table tableName="bookshelf_recommand"></table>-->
 <!--        <table tableName="smart_recommand"></table>-->
 <!--        <table tableName="ad_user_group_extend"></table>-->
-        <table tableName="ad_user_group_extend"/>
+<!--        <table tableName="ad_user_group_extend"/>-->
     </context>
 
 </generatorConfiguration>

+ 4 - 4
book-dao/src/main/resources/shard-mybatis-generator.xml

@@ -119,10 +119,10 @@
                              targetProject="src/main/java" type="XMLMAPPER"/>
 
         <!--指定数据表名,可以使用_和%通配符,可以配置generatedKey,会返回insert之后的id-->
-        <table tableName="user_recently_read"/>
-        <table tableName="sign"/>
-        <table tableName="recharge"/>
-        <table tableName="consume"/>
+<!--        <table tableName="user_recently_read"/>-->
+<!--        <table tableName="sign"/>-->
+<!--        <table tableName="recharge"/>-->
+<!--        <table tableName="consume"/>-->
     </context>
 
 </generatorConfiguration>

+ 2 - 2
book-push/src/main/java/com/book/push/Application.java

@@ -18,8 +18,8 @@ public class Application {
     public static void main(String[] args) {
 
         //下面语句使得日志输出使用异步处理,减小输出日志对性能的影响
-        System.setProperty("Log4jContextSelector",
-                "org.apache.logging.log4j.core.async.AsyncLoggerContextSelector");
+//        System.setProperty("Log4jContextSelector",
+//                "org.apache.logging.log4j.core.async.AsyncLoggerContextSelector");
         SpringApplication.run(Application.class);
         System.out.println("---------------------------------------------------------------------------------------------------------------");
         System.out.println("----------------     -         application book-push run success                 ---------------------------");

+ 0 - 22
book-push/src/main/java/com/book/push/action/PushAction.java

@@ -1,22 +0,0 @@
-package com.book.push.action;
-
-import lombok.extern.slf4j.Slf4j;
-import org.springframework.stereotype.Component;
-import org.springframework.stereotype.Service;
-
-/**
- * created in 2021/9/7
- * Project: book-store
- *
- * @author win7
- */
-@Component
-@Slf4j
-public class PushAction {
-
-    public void pushBySubscribe(Integer platformId, String appid, String openid) {
-        log.info("关注后智能推送:" );
-    }
-
-
-}

+ 26 - 22
book-push/src/main/java/com/book/push/config/KeyExpiredListener.java

@@ -1,6 +1,6 @@
 package com.book.push.config;
 
-import com.book.push.action.PushAction;
+import com.book.push.service.push.IntellectPushService;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -24,7 +24,7 @@ public class KeyExpiredListener extends JedisPubSub {
     public static final String KEY_PREFIX_MP_NOSIGN = "mp_nosign";
     public static final String prefix = "auto_push:";
     @Autowired
-    private PushAction pushAction;
+    private IntellectPushService intellectPushService;
 
     @Bean
     public KeyExpiredListener getBean() {
@@ -52,49 +52,53 @@ public class KeyExpiredListener extends JedisPubSub {
         String actionString = split[1];
         Integer platformId = Integer.valueOf(split[2]);
         String appid = split[3];
-        String openid = split[4];
-        log.info("智能推送:platformId:{},appid:{},openid:{}", platformId, appid, openid);
+
+        log.info("智能推送:platformId:{},appid:{},openid:{}", platformId, appid, split[4]);
         if (actionString.startsWith(KEY_PREFIX_MP_SUBSCRIBE)) {
-            pushAction.pushBySubscribe(platformId, appid, openid);
+            Long userId = Long.parseLong(split[4]);
+            intellectPushService.pushBySubscribe(platformId, appid, userId);
 
         } else if (actionString.startsWith(KEY_PREFIX_MP_SIGN)) {
-
+            Long userId = Long.parseLong(split[4]);
+            intellectPushService.pushBySign(platformId, appid, userId);
 
         } else if (actionString.startsWith(KEY_PREFIX_BOOK_CONTINUE_READ)) {
-
+            Integer id = Integer.parseInt(split[4]);
+            intellectPushService.pushByContinueRead(platformId, appid, id);
 
         } else if (actionString.startsWith(KEY_PREFIX_ORDER_NOPAY)) {
-
+            Integer id = Integer.parseInt(split[4]);
+            intellectPushService.pushByNopay(platformId, appid, id);
 
         } else if (actionString.startsWith(KEY_PREFIX_MP_NOSIGN)) {
-
-
+            Long userId = Long.parseLong(split[4]);
+            intellectPushService.pushByNoSign(platformId, appid, userId);
         }
     }
 
-    protected String getKey(Integer platformId, String appid, String openid, String keyPrefix) {
-        return prefix + keyPrefix + ":" + platformId + ":" + appid + ":" + openid;
+    protected String getKey(Integer platformId, String appid, String id, String keyPrefix) {
+        return prefix + keyPrefix + ":" + platformId + ":" + appid + ":" + id;
     }
 
 
-    public String getKeyMpSubscribe(Integer platformId, String appid, String openid) {
-        return getKey(platformId, appid, openid, KEY_PREFIX_MP_SUBSCRIBE);
+    public String getKeyMpSubscribe(Integer platformId, String appid, Long userId) {
+        return getKey(platformId, appid, String.valueOf(userId), KEY_PREFIX_MP_SUBSCRIBE);
     }
 
-    public String getKeyMpSign(Integer platformId, String appid, String openid) {
-        return getKey(platformId, appid, openid, KEY_PREFIX_MP_SIGN);
+    public String getKeyMpSign(Integer platformId,  String appid, Long userId ) {
+        return getKey(platformId,appid, String.valueOf(userId),  KEY_PREFIX_MP_SIGN);
     }
 
-    public String getKeyPrefixBookContinueRead(Integer platformId, String appid, String openid) {
-        return getKey(platformId, appid, openid, KEY_PREFIX_BOOK_CONTINUE_READ);
+    public String getKeyPrefixBookContinueRead(Integer platformId, String appid,  Integer id) {
+        return getKey(platformId, appid, String.valueOf(id), KEY_PREFIX_BOOK_CONTINUE_READ);
     }
 
-    public String getKeyPrefixOrderNopay(Integer platformId, String appid, String openid) {
-        return getKey(platformId, appid, openid, KEY_PREFIX_ORDER_NOPAY);
+    public String getKeyOrderNopay(Integer platformId, String appid,  Integer orderId) {
+        return getKey(platformId, appid, String.valueOf(orderId), KEY_PREFIX_ORDER_NOPAY);
     }
 
-    public String getKeyPrefixMpNosign(Integer platformId, String appid, String openid) {
-        return getKey(platformId, appid, openid, KEY_PREFIX_MP_NOSIGN);
+    public String getKeyMpNosign(Integer platformId, String appid,  Long userId) {
+        return getKey(platformId, appid, String.valueOf(userId), KEY_PREFIX_MP_NOSIGN);
     }
 
 

+ 1 - 7
book-push/src/main/java/com/book/push/handler/MenuHandler.java

@@ -50,15 +50,9 @@ public class MenuHandler extends AbstractHandler {
         }
 
         String appid = wxMessage.getToUser();
-        User user = userService.selectByOpenId(wxMessage.getFromUser());
 
-        Integer channelId = user.getChannelId();
-        AdminConfig adminConfig = adminConfigService.selectByAdminId(channelId);
 
-        Long id = user.getId();
-
-
-        return msgAfterSing(wxMessage, appid, user.getOpenid());
+        return msgAfterSing(wxMessage, appid,wxMessage.getFromUser());
 
 
     }

+ 28 - 12
book-push/src/main/java/com/book/push/handler/MsgHandler.java

@@ -11,6 +11,7 @@ import com.book.push.builder.TuWenBuilder;
 import com.book.push.cons.SiteCons;
 import com.book.push.cons.UrlCons;
 import com.book.push.service.dao.*;
+import com.book.push.service.push.IntellectPushService;
 import com.book.push.service.push.PushService;
 import com.book.push.service.redis.RedisService;
 import com.book.push.service.wx.WxThirdPartService;
@@ -70,6 +71,7 @@ public class MsgHandler extends AbstractHandler {
     @Lazy
     @Autowired
     private WxThirdPartService wxThirdPartService;
+
     @Override
     public WxMpXmlOutMessage handle(WxMpXmlMessage wxMessage,
                                     Map<String, Object> context, WxMpService weixinService,
@@ -79,12 +81,13 @@ public class MsgHandler extends AbstractHandler {
         AdminConfig adminConfig = adminConfigService.selectByAppid(wxMessage.getToUser());
         WechatAutoreply wechatAutoreply = wechatAutoreplayService.selectByAdminIdAndText(adminConfig.getAdminId(), wxMessage.getContent());
         User user = userService.selectByOpenId(wxMessage.getFromUser());
-        if ("签到".equals(wxMessage.getContent())){
+        if ("签到".equals(wxMessage.getContent())) {
             SignExample example = SignExample.newAndCreateCriteria().andUidEqualTo(user.getId().intValue()).andCreatedateEqualTo(TimeUtil.getCurrentIntDate(TimeUtil.YYYYMMDD_N)).example();
             Sign sign = signMapper.selectOneByExample(example);
             if ("1".equals(adminConfig.getSignTip())) {
 
-                pushMessage(user, adminConfig, adminConfig.getAppid(), sign != null);
+                //  pushMessage(user, adminConfig, adminConfig.getAppid(), sign != null);
+                intellectPush(adminConfig, user);
             }
             Config config = configService.selectByName(SiteCons.SIGN_KANDIAN);
             int kandian = Integer.valueOf(config.getValue());
@@ -100,20 +103,23 @@ public class MsgHandler extends AbstractHandler {
 
                 addKandian(user, kandian);
             }
-
+           return autoReplay(adminConfig,wechatAutoreply,user,wxMessage,weixinService);
         }
+        return null;
 
+    }
 
+    WxMpXmlOutMessage autoReplay(AdminConfig adminConfig, WechatAutoreply wechatAutoreply, User user, WxMpXmlMessage wxMessage, WxMpService weixinService) {
         String host = opHostService.selectById(adminConfig.getOphostId()).getHost();
         if (wechatAutoreply != null) {
             String type = wechatAutoreply.getType();
             if (MESSAGE_TYPE_TEXT.equals(type)) {
                 String textContent = wechatAutoreply.getTextContent();
-               TextMsgContent[] textMsgContents = JsonUtils.getArray(textContent, TextMsgContent.class);
+                TextMsgContent[] textMsgContents = JsonUtils.getArray(textContent, TextMsgContent.class);
                 StringBuilder sb = new StringBuilder();
                 for (TextMsgContent textMsgContent : textMsgContents) {
-                    String url = (textMsgContent.getUrl() !=null?textMsgContent.getUrl():textMsgContent.getReferral_url());
-                    if (url==null){
+                    String url = (textMsgContent.getUrl() != null ? textMsgContent.getUrl() : textMsgContent.getReferral_url());
+                    if (url == null) {
                         url = String.format(UrlCons.FRONT_URL, adminConfig.getAppid(), host, UrlCons.MODEL_BOOK, adminConfig.getAdminId(), user.getId() + "")
                                 .concat("&bookId=").concat(textMsgContent.getBook_id()).concat("&").concat(textMsgContent.getChapter_id());
                     }
@@ -144,15 +150,14 @@ public class MsgHandler extends AbstractHandler {
                     items.add(item);
                 }
 
-            return     new TuWenBuilder().build(items, wxMessage, weixinService);
+                return new TuWenBuilder().build(items, wxMessage, weixinService);
             }
 
         }
-
-
         return null;
-
     }
+
+
     /**
      * 添加看点
      *
@@ -161,8 +166,8 @@ public class MsgHandler extends AbstractHandler {
      */
     private void addKandian(User user, int kandian) {
         //TODO
-        userService.insertKandian(user.getId(),"5",0,kandian);
-        redisService.del("freeCoin_"+user.getId());
+        userService.insertKandian(user.getId(), "5", 0, kandian);
+        redisService.del("freeCoin_" + user.getId());
     }
 
 
@@ -200,12 +205,23 @@ public class MsgHandler extends AbstractHandler {
         System.out.println("发送失败");
 
     }
+
     private String createUrl(Long bookId, AdminConfig adminConfig, User user) {
 
         return bookService.createBookUrl(bookId, adminConfig, user);
 
     }
 
+    private void intellectPush(AdminConfig adminConfig, User user) {
+        if ("0".equals(adminConfig.getSignTip())) {
+            return;
+        }
+        String keyMpSign = redisService.getKeyListener().getKeyMpSign(adminConfig.getPlatformId(), adminConfig.getAppid(), user.getId());
+        redisService.set(keyMpSign, JsonUtils.toJsonString(user), IntellectPushService.TIME_AFTER_SIGN);
+        String keyMpNosign = redisService.getKeyListener().getKeyMpNosign(adminConfig.getPlatformId(), adminConfig.getAppid(), user.getId());
+        redisService.set(keyMpNosign, JsonUtils.toJsonString(user), IntellectPushService.TIME_AFTER_NOSIGN);
+    }
+
     public static void main(String[] args) {
         String s = "[{\"book_id\":3584,\"chapter_id\":\"\",\"title\":\"曾经是雇佣兵王的他,退役归来,横行都市,左拥右抱..\",\"description\":\"我噢噢噢噢噢噢噢噢\",\"image_type\":3,\"activity_url\":\"\",\"referral_url\":\"http:\\/\\/wxe1271417b2ff5b1c.{$ophost}\\/t\\/1175\",\"give_activity_url\":\"\",\"url\":\"http:\\/\\/wxe1271417b2ff5b1c.{$ophost}\\/t\\/1175\",\"image\":\"https:\\/\\/cpsn.zsjwaw.cn\\/uploads\\/20180601\\/e14a04e6ffe3ab0464cd965b6f34e6f2.jpg\"}]";
         NewsMsgContent[] newsMsgContents = JsonUtils.getArray(s, NewsMsgContent.class);

+ 19 - 8
book-push/src/main/java/com/book/push/handler/SubscribeHandler.java

@@ -8,6 +8,7 @@ import com.book.push.builder.TextBuilder;
 import com.book.push.builder.TuWenBuilder;
 import com.book.push.cons.UrlCons;
 import com.book.push.service.dao.*;
+import com.book.push.service.push.IntellectPushService;
 import com.book.push.service.redis.RedisService;
 import com.book.push.utils.JsonUtils;
 import com.book.push.vo.NewsMsgContent;
@@ -65,16 +66,13 @@ public class SubscribeHandler extends AbstractHandler {
                     .userInfo(wxMessage.getFromUser(), null);
             if (userWxInfo != null) {
                 // TODO 可以添加关注用户到本地数据库
-
                 if (user == null) {
                     user = userService.insertUserByWxUser(userWxInfo, adminConfig.getAdminId());
-                }else {
-                    user = userService.updateUserByWxUser(user.getId(),userWxInfo);
+                } else {
+                    user = userService.updateUserByWxUser(user.getId(), userWxInfo);
                 }
 
-
-                String keyMpSubscribe = redisService.getKeyListener().getKeyMpSubscribe(adminConfig.getPlatformId(), appid, openId);
-                redisService.set(keyMpSubscribe, JsonUtils.toJsonString(user),60L);
+                intellectPush(adminConfig, user);
 
             }
         } catch (WxErrorException e) {
@@ -96,9 +94,13 @@ public class SubscribeHandler extends AbstractHandler {
         }
 
 
+        return replay(adminConfig, user, wxMessage, weixinService);
+    }
+
+    public WxMpXmlOutMessage replay(AdminConfig adminConfig, User user, WxMpXmlMessage wxMessage, WxMpService weixinService) {
         try {
             WechatSubscribeSwitch wechatSubscribeSwitch = wechatSubscribeSwitchService.selectByAdminId(adminConfig.getAdminId());
-            if (wechatSubscribeSwitch ==null){
+            if (wechatSubscribeSwitch == null) {
                 return null;
             }
             Byte status = wechatSubscribeSwitch.getStatus();
@@ -152,10 +154,19 @@ public class SubscribeHandler extends AbstractHandler {
         } catch (Exception e) {
             log.error(e.getMessage(), e);
         }
+        return null;
+    }
+
 
-        return new TextBuilder().build(String.format("@%s,感谢关注啦", user.getNickname()), wxMessage, weixinService);
+    private void intellectPush(AdminConfig adminConfig, User user) {
+        if ("0".equals(adminConfig.getSubscribeTip())){
+            return;
+        }
+        String keyMpSubscribe = redisService.getKeyListener().getKeyMpSubscribe(adminConfig.getPlatformId(), adminConfig.getAppid(), user.getId());
+        redisService.set(keyMpSubscribe, JsonUtils.toJsonString(user), IntellectPushService.TIME_AFTER_SUBSCRIBE);
     }
 
+
     /**
      * 处理特殊请求,比如如果是扫码进来的,可以做相应处理
      */

+ 14 - 0
book-push/src/main/java/com/book/push/service/dao/CustomMediaPushService.java

@@ -0,0 +1,14 @@
+package com.book.push.service.dao;
+
+import com.book.dao.cps.entity.CustomMediaPush;
+
+/**
+ * created in 2021/9/8
+ * Project: book-store
+ *
+ * @author win7
+ */
+
+public interface CustomMediaPushService {
+ CustomMediaPush selectById(Integer id);
+}

+ 17 - 0
book-push/src/main/java/com/book/push/service/dao/CustomUrlService.java

@@ -0,0 +1,17 @@
+package com.book.push.service.dao;
+
+import com.book.dao.cps.entity.CustomUrl;
+import com.book.dao.cps.mapper.CustomUrlMapper;
+
+/**
+ * created in 2021/9/8
+ * Project: book-store
+ *
+ * @author win7
+ */
+
+public interface CustomUrlService {
+    CustomUrl selectById(Integer id);
+
+    CustomUrl selectByCustomId(Integer customId);
+}

+ 2 - 0
book-push/src/main/java/com/book/push/service/dao/OrdersService.java

@@ -13,4 +13,6 @@ import java.util.List;
 
 public interface OrdersService {
     List<Orders> selectNoPayOrderBetweenCreate(Integer from, Integer to);
+
+    Orders selectById(Integer id);
 }

+ 3 - 0
book-push/src/main/java/com/book/push/service/dao/UserRecentReadService.java

@@ -16,4 +16,7 @@ public interface UserRecentReadService {
 
     List<UserRecentlyRead> selectLastGroupByUserId(Integer from,Integer to);
 
+
+    UserRecentlyRead selectUserRecentlyReadById(Integer id);
+
 }

+ 25 - 0
book-push/src/main/java/com/book/push/service/dao/impl/CustomMediaPushServiceIml.java

@@ -0,0 +1,25 @@
+package com.book.push.service.dao.impl;
+
+import com.book.dao.cps.entity.CustomMediaPush;
+import com.book.dao.cps.mapper.CustomMediaPushMapper;
+import com.book.push.service.dao.CustomMediaPushService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+/**
+ * created in 2021/9/8
+ * Project: book-store
+ *
+ * @author win7
+ */
+@Service
+public class CustomMediaPushServiceIml implements CustomMediaPushService {
+
+    @Autowired
+    private CustomMediaPushMapper customMediaPushMapper;
+
+    @Override
+    public CustomMediaPush selectById(Integer id) {
+        return customMediaPushMapper.selectByPrimaryKey(id);
+    }
+}

+ 32 - 0
book-push/src/main/java/com/book/push/service/dao/impl/CustomUrlServiceImpl.java

@@ -0,0 +1,32 @@
+package com.book.push.service.dao.impl;
+
+import com.book.dao.cps.entity.CustomUrl;
+import com.book.dao.cps.mapper.CustomUrlMapper;
+import com.book.dao.cps.pojo.example.CustomUrlExample;
+import com.book.push.service.dao.CustomUrlService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+/**
+ * created in 2021/9/8
+ * Project: book-store
+ *
+ * @author win7
+ */
+@Service
+public class CustomUrlServiceImpl implements CustomUrlService {
+    @Autowired
+    private CustomUrlMapper customUrlMapper;
+
+    @Override
+    public CustomUrl selectById(Integer id) {
+        return customUrlMapper.selectByPrimaryKey(id);
+    }
+
+    @Override
+    public CustomUrl selectByCustomId(Integer customId) {
+        CustomUrlExample example = CustomUrlExample.newAndCreateCriteria().andCustomIdEqualTo(customId).example();
+        return customUrlMapper.selectOneByExample(example);
+
+    }
+}

+ 5 - 0
book-push/src/main/java/com/book/push/service/dao/impl/OrdersServiceImpl.java

@@ -23,4 +23,9 @@ public class OrdersServiceImpl implements OrdersService {
     public List<Orders> selectNoPayOrderBetweenCreate(Integer from, Integer to) {
         return ordersMapper.selectNoPayOrderBetweenCreate(from,to);
     }
+
+    @Override
+    public Orders selectById(Integer id) {
+        return ordersMapper.selectByPrimaryKey(id);
+    }
 }

+ 5 - 0
book-push/src/main/java/com/book/push/service/dao/impl/UserRecentReadServiceImpl.java

@@ -32,4 +32,9 @@ public class UserRecentReadServiceImpl implements UserRecentReadService {
 
         return userRecentlyReadMapper.selectLastGroupByUserId(from, to);
     }
+
+    @Override
+    public UserRecentlyRead selectUserRecentlyReadById(Integer id) {
+        return userRecentlyReadMapper.selectByPrimaryKey(id);
+    }
 }

+ 32 - 0
book-push/src/main/java/com/book/push/service/push/IntellectPushService.java

@@ -0,0 +1,32 @@
+package com.book.push.service.push;
+
+import com.sun.org.apache.bcel.internal.generic.PUSH;
+import me.chanjar.weixin.mp.bean.kefu.WxMpKefuMessage;
+
+/**
+ * created in 2021/9/7
+ * Project: book-store
+ *
+ * @author win7
+ */
+
+public interface IntellectPushService {
+    public static final long TIME_AFTER_SUBSCRIBE = 6 * 60 * 60;
+    public static final long TIME_AFTER_SIGN = 10 * 60 * 60;
+//    public static final long TIME_AFTER_SIGN = 2* 60;
+    public static final long TIME_AFTER_NOSIGN = 24 * 60 * 60;
+    public static final long TIME_AFTER_READ =  7* 60 * 60;
+
+
+    void pushBySubscribe(Integer platformId, String appid, Long userId);
+
+    void pushBySign(Integer platformId, String appid, Long userId);
+
+    void pushByContinueRead(Integer platformId, String appid, Integer id);
+
+    void pushByNopay(Integer platformId, String appid, Integer id);
+
+    void pushByNoSign(Integer platformId, String appid, Long userId);
+
+
+}

+ 246 - 0
book-push/src/main/java/com/book/push/service/push/impl/IntellectPushServiceImpl.java

@@ -0,0 +1,246 @@
+package com.book.push.service.push.impl;
+
+import com.book.dao.cps.pojo.*;
+import com.book.dao.cpsshard.entity.Sign;
+import com.book.dao.cpsshard.entity.UserRecentlyRead;
+import com.book.dao.cpsshard.mapper.SignMapper;
+import com.book.dao.cpsshard.pojo.example.SignExample;
+import com.book.dao.utils.TimeUtil;
+import com.book.push.service.dao.*;
+import com.book.push.service.push.IntellectPushService;
+import com.book.push.service.redis.RedisService;
+import com.book.push.service.wx.WxThirdPartService;
+import lombok.extern.slf4j.Slf4j;
+import me.chanjar.weixin.common.error.WxErrorException;
+import me.chanjar.weixin.mp.bean.kefu.WxMpKefuMessage;
+import me.chanjar.weixin.mp.builder.kefu.NewsBuilder;
+import me.chanjar.weixin.mp.builder.kefu.TextBuilder;
+import me.chanjar.weixin.open.api.WxOpenMpService;
+import me.chanjar.weixin.open.api.WxOpenService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.context.annotation.Lazy;
+import org.springframework.stereotype.Service;
+
+import java.util.Calendar;
+
+/**
+ * created in 2021/9/7
+ * Project: book-store
+ *
+ * @author win7
+ */
+@Service
+@Slf4j
+public class IntellectPushServiceImpl implements IntellectPushService {
+    @Autowired
+    private WechatAutoreplayService wechatAutoreplayService;
+    @Autowired
+    private AdminConfigService adminConfigService;
+    @Autowired
+    private UserService userService;
+    @Autowired
+    private OpHostService opHostService;
+    @Autowired
+    private SignMapper signMapper;
+    @Autowired
+    private SignRecommendService signRecommendService;
+    @Autowired
+    private SignedRecommendService signedRecommendService;
+    @Autowired
+    private ManageTitleService manageTitleService;
+    @Autowired
+    private ManageCoverService manageCoverService;
+    @Autowired
+    private OrdersService ordersService;
+    @Autowired
+    private ConfigService configService;
+    @Autowired
+    private BookService bookService;
+    @Autowired
+    private RedisService redisService;
+    @Lazy
+    @Autowired
+    private WxThirdPartService wxThirdPartService;
+    @Autowired
+    private UserRecentReadService userRecentReadService;
+
+    public WxMpKefuMessage createSubscribeMessage(Integer platformId, String appid, Long userId) {
+        return createSignMessage(platformId, appid, userId);
+    }
+
+    public WxMpKefuMessage createSignMessage(Integer platformId, String appid, Long userId) {
+        Long bookId;
+        User user = userService.selectById(userId);
+        AdminConfig adminConfig = adminConfigService.selectByAppid(appid);
+        SignExample example = SignExample.newAndCreateCriteria().andUidEqualTo(user.getId().intValue()).andCreatedateEqualTo(TimeUtil.getCurrentIntDate(TimeUtil.YYYYMMDD_N)).example();
+        Sign sign = signMapper.selectOneByExample(example);
+        if (sign == null) {
+            SignedRecommand signRecommand = signedRecommendService.selectRandom(user.getSex().toString());
+            bookId = signRecommand.getBookId();
+        } else {
+            SignRecommand signRecommand = signRecommendService.selectRandom(user.getSex().toString());
+            bookId = signRecommand.getBookId();
+
+        }
+        ManageTitle manageTitle = manageTitleService.selectRandom(user.getSex().toString());
+        ManageCover manageCover = manageCoverService.selectRandom("1", user.getSex().toString());
+        WxMpKefuMessage.WxArticle wxArticle = new WxMpKefuMessage.WxArticle();
+        wxArticle.setTitle(manageTitle.getTitle());
+        wxArticle.setPicUrl(manageCover.getImage());
+        wxArticle.setUrl(bookService.createBookUrl(bookId, adminConfig, user));
+        WxMpKefuMessage wxMpKefuMessage = new NewsBuilder().toUser(user.getOpenid()).addArticle(wxArticle).build();
+        return wxMpKefuMessage;
+    }
+
+    public WxMpKefuMessage createContinueReadMessage(Integer platformId, String appid, Integer id) {
+        UserRecentlyRead userRecentlyRead = userRecentReadService.selectUserRecentlyReadById(id);
+        Long userId = userRecentlyRead.getUserId();
+        User user = userService.selectById(userId);
+        Integer channelId = user.getChannelId();
+        AdminConfig adminConfig = adminConfigService.selectByAdminId(channelId);
+        Book book = bookService.selectById(userRecentlyRead.getBookId());
+        WxOpenService wxOpenService = wxThirdPartService.getWxOpenServiceByPlatFormId(platformId);
+        WxOpenMpService wxMpService = wxOpenService.getWxOpenComponentService().getWxMpServiceByAppid(appid);
+        String msg = "亲,你上次看的书还在等着你呐~ 点击继续阅读%n>%s%n首冲50元即可畅读90万字,365元年份会员更可全年无线畅读。%n%n为了下次方便阅读,请置顶公众号";
+        Long bookId = userRecentlyRead.getBookId();
+        String url = bookService.createBookUrl(bookId, adminConfig, user);
+        String link = "<a href='" + url + "'>《" + book.getName() + "》</a>";
+        msg = String.format(msg, link);
+        WxMpKefuMessage wxMpKefuMessage = new TextBuilder().toUser(user.getOpenid()).content(msg).build();
+
+
+        return wxMpKefuMessage;
+    }
+
+    public WxMpKefuMessage createNopayMessage(Integer platformId, String appid, Integer id) {
+        Orders orders = ordersService.selectById(id);
+        User user = userService.selectById(orders.getUserId());
+        String msg = "亲,你上次看的书还在等着你呐~ 点击继续阅读%n>%s%n首冲50元即可畅读90万字,365元年份会员更可全年无线畅读。%n%n为了下次方便阅读,请置顶公众号";
+        Long bookId = orders.getBookId();
+        if (bookId==null){
+
+            UserRecentlyRead userRecentlyRead = userRecentReadService.selectLastByUserId(orders.getUserId());
+             bookId = userRecentlyRead.getBookId();
+        }
+        AdminConfig adminConfig = adminConfigService.selectByAppid(appid);
+
+        String url =bookService.createBookUrl(bookId,adminConfig,user);
+        Book book = bookService.selectById(bookId);
+        String link = "<a href='"+url+"'>《"+book.getName()+"》</a>";
+        msg = String.format(msg,link);
+        WxMpKefuMessage wxMpKefuMessage = new TextBuilder().toUser(user.getOpenid()).content(msg).build();
+        return wxMpKefuMessage;
+    }
+
+    public WxMpKefuMessage createNoSignMessage(Integer platformId, String appid, Long userId) {
+        String msg = String.format("亲,您今天还没有签到哦,点击%n签到即可领取书币哟~%n%n<a href='weixin://bizmsgmenu?msgmenucontent=签到&msgmenuid=0'>点我签到</a>%n%n为了方便下次阅读,请置顶公众号");
+        User user = userService.selectById(userId);
+        WxMpKefuMessage wxMpKefuMessage = new TextBuilder().toUser(user.getOpenid()).content(msg).build();
+        return wxMpKefuMessage;
+    }
+
+    @Override
+    public void pushBySubscribe(Integer platformId, String appid, Long userId) {
+        Integer second = afterNow();
+        if (second > 0) {
+            redisService.set(redisService.getKeyListener().getKeyMpSubscribe(platformId, appid, userId), userId + "", second);
+            return;
+        }
+        WxMpKefuMessage signMessage = createSubscribeMessage(platformId, appid, userId);
+
+
+        WxOpenService wxOpenService = wxThirdPartService.getWxOpenServiceByPlatFormId(platformId);
+        WxOpenMpService wxMpService = wxOpenService.getWxOpenComponentService().getWxMpServiceByAppid(appid);
+        try {
+            wxMpService.getKefuService().sendKefuMessage(signMessage);
+        } catch (WxErrorException e) {
+            e.printStackTrace();
+            log.error("签到智能推送失败");
+        }
+
+    }
+
+    @Override
+    public void pushBySign(Integer platformId, String appid, Long userId) {
+        Integer second = afterNow();
+        if (second > 0) {
+            redisService.set(redisService.getKeyListener().getKeyMpSign(platformId, appid, userId), userId + "", second);
+            return;
+        }
+        WxMpKefuMessage signMessage = createSignMessage(platformId, appid, userId);
+
+
+        WxOpenService wxOpenService = wxThirdPartService.getWxOpenServiceByPlatFormId(platformId);
+        WxOpenMpService wxMpService = wxOpenService.getWxOpenComponentService().getWxMpServiceByAppid(appid);
+        try {
+            wxMpService.getKefuService().sendKefuMessage(signMessage);
+        } catch (WxErrorException e) {
+            e.printStackTrace();
+            log.error("签到智能推送失败");
+        }
+
+
+    }
+
+
+    @Override
+    public void pushByContinueRead(Integer platformId, String appid, Integer id) {
+        Integer second = afterNow();
+        if (second > 0) {
+            redisService.set(redisService.getKeyListener().getKeyPrefixBookContinueRead(platformId, appid, id), id + "", second);
+            return;
+        }
+        WxMpKefuMessage signMessage = createContinueReadMessage(platformId, appid, id);
+
+
+        WxOpenService wxOpenService = wxThirdPartService.getWxOpenServiceByPlatFormId(platformId);
+        WxOpenMpService wxMpService = wxOpenService.getWxOpenComponentService().getWxMpServiceByAppid(appid);
+        try {
+            wxMpService.getKefuService().sendKefuMessage(signMessage);
+        } catch (WxErrorException e) {
+            e.printStackTrace();
+            log.error("继续阅读智能推送失败");
+        }
+
+    }
+
+    @Override
+    public void pushByNopay(Integer platformId, String appid, Integer id) {
+        WxMpKefuMessage signMessage = createNopayMessage(platformId, appid, id);
+
+        WxOpenService wxOpenService = wxThirdPartService.getWxOpenServiceByPlatFormId(platformId);
+        WxOpenMpService wxMpService = wxOpenService.getWxOpenComponentService().getWxMpServiceByAppid(appid);
+        try {
+            wxMpService.getKefuService().sendKefuMessage(signMessage);
+        } catch (WxErrorException e) {
+            e.printStackTrace();
+            log.error("未支付提醒智能推送失败");
+        }
+    }
+
+    @Override
+    public void pushByNoSign(Integer platformId, String appid, Long userId) {
+        Integer second = afterNow();
+        if (second > 0) {
+            redisService.set(redisService.getKeyListener().getKeyMpNosign(platformId, appid, userId), userId + "", second);
+            return;
+        }
+        WxMpKefuMessage signMessage = createNoSignMessage(platformId, appid, userId);
+
+        WxOpenService wxOpenService = wxThirdPartService.getWxOpenServiceByPlatFormId(platformId);
+        WxOpenMpService wxMpService = wxOpenService.getWxOpenComponentService().getWxMpServiceByAppid(appid);
+        try {
+            wxMpService.getKefuService().sendKefuMessage(signMessage);
+        } catch (WxErrorException e) {
+            e.printStackTrace();
+            log.error("未签到提醒智能推送失败");
+        }
+    }
+
+
+    private Integer afterNow() {
+        Calendar calendar = Calendar.getInstance();
+        int i = calendar.get(Calendar.HOUR_OF_DAY);
+        return (6 - i) * 3600;
+    }
+}

+ 1 - 1
book-push/src/main/java/com/book/push/service/redis/impl/Subscriber.java

@@ -17,7 +17,7 @@ import redis.clients.jedis.JedisPool;
 @Component
 @Order(1)
 public class Subscriber implements CommandLineRunner {
-    private String redisTopic = "__keyevnet@0__:expired";
+    private String redisTopic = "__keyevent@0__:expired";
 
 
     @Autowired

+ 2 - 2
book-push/src/main/java/com/book/push/task/CacheTask.java

@@ -24,12 +24,12 @@ public class CacheTask {
 
     @Autowired
     private PlatformService platformService;
-    @Scheduled(cron = "0 0/5 * * * ?")
+//    @Scheduled(cron = "0 0/5 * * * ?")
     public void refreshChannelCache() {
         Map<String, AdminConfig> stringAdminConfigMap = adminConfigService.selectAll();
     }
 
-    @Scheduled(cron = "0 0/20 * * * ?")
+//    @Scheduled(cron = "0 0/20 * * * ?")
     public void refreshPlatform(){
         Map<Integer, Platform> integerPlatformMap = platformService.selectAll();
     }

+ 62 - 19
book-push/src/main/java/com/book/push/task/KefuTask.java

@@ -1,20 +1,25 @@
 package com.book.push.task;
 
+import com.book.dao.cps.entity.CustomMediaPush;
+import com.book.dao.cps.entity.CustomUrl;
 import com.book.dao.cps.pojo.AdminConfig;
 import com.book.dao.cps.pojo.Custom;
+import com.book.dao.cps.pojo.Ophost;
 import com.book.dao.cps.pojo.User;
 import com.book.dao.utils.DateUtils;
-import com.book.push.service.dao.AdminConfigService;
-import com.book.push.service.dao.CustomService;
-import com.book.push.service.dao.UserService;
+import com.book.push.service.dao.*;
 import com.book.push.service.push.PushService;
 import com.book.push.service.push.vo.CustomMessage;
 import com.book.push.service.wx.WxThirdPartService;
 import com.book.push.utils.JsonUtils;
+import com.sun.corba.se.spi.ior.IdentifiableFactory;
+import lombok.extern.slf4j.Slf4j;
 import me.chanjar.weixin.mp.bean.kefu.WxMpKefuMessage;
 import me.chanjar.weixin.mp.builder.kefu.NewsBuilder;
+import me.chanjar.weixin.mp.builder.kefu.TextBuilder;
 import me.chanjar.weixin.open.api.WxOpenMpService;
 import me.chanjar.weixin.open.api.WxOpenService;
+import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.scheduling.annotation.Scheduled;
 import org.springframework.stereotype.Component;
@@ -34,6 +39,7 @@ import java.util.concurrent.TimeUnit;
  */
 
 @Component
+
 public class KefuTask {
     @Autowired
     private CustomService customService;
@@ -45,44 +51,81 @@ public class KefuTask {
     private UserService userService;
     @Autowired
     private PushService pushService;
+    @Autowired
+    private CustomUrlService customUrlService;
+    @Autowired
+    private CustomMediaPushService customMediaPushService;
+    @Autowired
+    private OpHostService opHostService;
+
     @Scheduled(fixedRate = 1000 * 60 * 10)
     public void run() {
         Integer now = DateUtils.getNow();
         Integer to = now + (1000 * 60 * 10);
         List<Custom> customs = customService.selectListBetweenSendTime(now, to);
         for (Custom custom : customs) {
+
+            System.out.println("kefu-task...");
             Integer sendtime = custom.getSendtime();
             Integer delay = sendtime - DateUtils.getNow();
+
+            Integer customId = custom.getId();
+            Integer customMediaPushId = custom.getCustomMediaPushId();
+            CustomMediaPush customMediaPush = customMediaPushService.selectById(customMediaPushId);
+            CustomUrl customUrl = customUrlService.selectByCustomId(customId);
+
+
             Integer adminId = custom.getAdminId();
             AdminConfig adminConfig = adminConfigService.selectByAdminId(adminId);
             String appid = adminConfig.getAppid();
             Integer platformId = adminConfig.getPlatformId();
+            Ophost ophost = opHostService.selectById(adminConfig.getOphostId());
+
             String userJsonStr = custom.getUserJson().toString();
-            userJsonStr = userJsonStr.substring(1,userJsonStr.length()-1).replace("\\","");
+            userJsonStr = userJsonStr.substring(1, userJsonStr.length() - 1).replace("\\", "");
             Custom.UserJson userJson = JsonUtils.getObject(userJsonStr, Custom.UserJson.class);
             List<User> userList = getListByjson(userJson, adminId);
-            String messageJson = custom.getMessageJson().toString().replace("\\","");
-            messageJson = messageJson.replace("\\","").substring(1,messageJson.length()-1);
-
-            List<Custom.MessageJson> list = JsonUtils.getList(messageJson, Custom.MessageJson.class);
 
             List<WxMpKefuMessage> messageList = new ArrayList<>();
-            for (User user:userList){
-                NewsBuilder newsBuilder = new NewsBuilder().toUser(user.getOpenid());
-                for (Custom.MessageJson  message:list){
-                    WxMpKefuMessage.WxArticle wxArticle = new WxMpKefuMessage.WxArticle();
-                    wxArticle.setTitle(message.getTitle());
-                    wxArticle.setPicUrl(message.getImage());
-                    wxArticle.setUrl(message.getUrl());
-                    newsBuilder.addArticle(wxArticle);
+
+
+            for (User user : userList) {
+
+                if ("0".equals(custom.getMessageType())) {
+                    String messageJson = custom.getMessageJson().toString().replace("\\", "");
+                    messageJson = messageJson.replace("\\", "").substring(1, messageJson.length() - 1);
+
+                   Custom.MessageJson[] messageJsons = JsonUtils.getArray(messageJson, Custom.MessageJson.class);
+                    NewsBuilder newsBuilder = new NewsBuilder().toUser(user.getOpenid());
+                    for (Custom.MessageJson message : messageJsons) {
+                        WxMpKefuMessage.WxArticle wxArticle = new WxMpKefuMessage.WxArticle();
+                        wxArticle.setTitle(message.getTitle());
+                        wxArticle.setPicUrl(message.getImage());
+                        wxArticle.setDescription(message.getDescription());
+                        String url = message.getUrl()==null?"":message.getUrl().replace("{$ophost}",ophost.getHost());
+                        wxArticle.setUrl(url);
+                        newsBuilder.addArticle(wxArticle);
+
+                    }
+                    WxMpKefuMessage kefuMessage = newsBuilder.build();
+                    messageList.add(kefuMessage);
+                } else {
+                    if (StringUtils.isNotEmpty(custom.getMessageText())){
+                        String text = custom.getMessageText();
+
+                            text = text.replace("{$ophost}",ophost.getHost());
+                        WxMpKefuMessage build = new TextBuilder().toUser(user.getOpenid()).content(text).build();
+                        messageList.add(build);
+                    }
+
 
                 }
-                WxMpKefuMessage kefuMessage = newsBuilder.build();
-                messageList.add(kefuMessage);
             }
+
+
             custom.setSendNum(messageList.size());
             WxOpenService wxOpenService = wxThirdPartService.getWxOpenServiceByPlatFormId(platformId);
-            WxOpenMpService wxMpService = wxOpenService.getWxOpenComponentService().getWxMpServiceByAppid(appid);
+            WxOpenMpService wxMpService = wxOpenService.getWxOpenComponentService().getWxMpServiceByAppid(adminConfig.getAppid());
             CustomMessage customMessage = new CustomMessage();
             customMessage.setCustom(custom);
             customMessage.setMessageList(messageList);

+ 1 - 1
book-push/src/main/java/com/book/push/task/NoSignTask.java

@@ -42,7 +42,7 @@ public class NoSignTask {
     @Autowired
     private BookService bookService;
 
-    @Scheduled(fixedRate = 1000 * 60 * 30)
+//    @Scheduled(fixedRate = 1000 * 60 * 30)
     public void run() {
         Integer from = DateUtils.getNow() - 24 * 60 * 60;
         Integer to = from + (30 * 60);

+ 2 - 2
book-push/src/main/resources/log4j2.xml

@@ -55,12 +55,12 @@
     <!--然后定义logger,只有定义了logger并引入的appender,appender才会生效-->
     <loggers>
         <!-- com.example 包下日志采用异步模式 -->
-        <AsyncLogger name="com.book" level="info" additivity="false" includeLocation="true">
+      <!--  <AsyncLogger name="com.book" level="info" additivity="false" includeLocation="true">
             <AppenderRef ref="Console" />
             <AppenderRef ref="RollingFileInfo" />
             <AppenderRef ref="RollingFileWarn" />
             <AppenderRef ref="RollingFileError" />
-        </AsyncLogger>
+        </AsyncLogger>-->
         <!--过滤掉spring和mybatis的一些无用的DEBUG信息-->
         <logger name="org.springframework" level="INFO"/>
         <logger name="org.mybatis" level="INFO"/>