Browse Source

目录功能

tangxiangan 10 months ago
parent
commit
0b5f944a1d
36 changed files with 6239 additions and 83 deletions
  1. 2 60
      pdf-tech-common/src/main/java/constant/CommonConstant.java
  2. 6 0
      pdf-tech-core/pom.xml
  3. 0 10
      pdf-tech-core/src/main/java/cn/kdan/pdf/tech/core/constant/AuthConstant.java
  4. 70 0
      pdf-tech-core/src/main/java/cn/kdan/pdf/tech/core/controller/DirectoryController.java
  5. 134 0
      pdf-tech-core/src/main/java/cn/kdan/pdf/tech/core/controller/DomainController.java
  6. 27 0
      pdf-tech-core/src/main/java/cn/kdan/pdf/tech/core/enums/DomainUsedEnum.java
  7. 27 0
      pdf-tech-core/src/main/java/cn/kdan/pdf/tech/core/enums/DomainVerifiedEnum.java
  8. 28 0
      pdf-tech-core/src/main/java/cn/kdan/pdf/tech/core/enums/DomainVerifyTypeEnum.java
  9. 33 0
      pdf-tech-core/src/main/java/cn/kdan/pdf/tech/core/mapper/DirectoryMapper.java
  10. 33 0
      pdf-tech-core/src/main/java/cn/kdan/pdf/tech/core/mapper/DirectorySyncMapper.java
  11. 33 0
      pdf-tech-core/src/main/java/cn/kdan/pdf/tech/core/mapper/DomainMapper.java
  12. 33 0
      pdf-tech-core/src/main/java/cn/kdan/pdf/tech/core/mapper/ScheduleSettingMapper.java
  13. 238 0
      pdf-tech-core/src/main/java/cn/kdan/pdf/tech/core/model/Directory.java
  14. 995 0
      pdf-tech-core/src/main/java/cn/kdan/pdf/tech/core/model/DirectoryExample.java
  15. 112 0
      pdf-tech-core/src/main/java/cn/kdan/pdf/tech/core/model/DirectorySync.java
  16. 485 0
      pdf-tech-core/src/main/java/cn/kdan/pdf/tech/core/model/DirectorySyncExample.java
  17. 238 0
      pdf-tech-core/src/main/java/cn/kdan/pdf/tech/core/model/Domain.java
  18. 995 0
      pdf-tech-core/src/main/java/cn/kdan/pdf/tech/core/model/DomainExample.java
  19. 165 0
      pdf-tech-core/src/main/java/cn/kdan/pdf/tech/core/model/ScheduleSetting.java
  20. 724 0
      pdf-tech-core/src/main/java/cn/kdan/pdf/tech/core/model/ScheduleSettingExample.java
  21. 11 0
      pdf-tech-core/src/main/java/cn/kdan/pdf/tech/core/pojo/dto/DirectoryCreateDTO.java
  22. 13 0
      pdf-tech-core/src/main/java/cn/kdan/pdf/tech/core/pojo/dto/DirectoryUpdateDTO.java
  23. 40 0
      pdf-tech-core/src/main/java/cn/kdan/pdf/tech/core/pojo/vo/DirectoryVO.java
  24. 36 0
      pdf-tech-core/src/main/java/cn/kdan/pdf/tech/core/service/DirectoryService.java
  25. 15 0
      pdf-tech-core/src/main/java/cn/kdan/pdf/tech/core/service/DirectorySyncService.java
  26. 60 0
      pdf-tech-core/src/main/java/cn/kdan/pdf/tech/core/service/DomainService.java
  27. 15 0
      pdf-tech-core/src/main/java/cn/kdan/pdf/tech/core/service/ScheduleSettingService.java
  28. 108 0
      pdf-tech-core/src/main/java/cn/kdan/pdf/tech/core/service/impl/DirectoryServiceImpl.java
  29. 26 0
      pdf-tech-core/src/main/java/cn/kdan/pdf/tech/core/service/impl/DirectorySyncServiceImpl.java
  30. 181 0
      pdf-tech-core/src/main/java/cn/kdan/pdf/tech/core/service/impl/DomainServiceImpl.java
  31. 26 0
      pdf-tech-core/src/main/java/cn/kdan/pdf/tech/core/service/impl/ScheduleSettingServiceImpl.java
  32. 17 13
      pdf-tech-core/src/main/resources/generatorConfig.xml
  33. 320 0
      pdf-tech-core/src/main/resources/sqlmap/DirectoryMapper.xml
  34. 416 0
      pdf-tech-core/src/main/resources/sqlmap/DirectorySyncMapper.xml
  35. 320 0
      pdf-tech-core/src/main/resources/sqlmap/DomainMapper.xml
  36. 257 0
      pdf-tech-core/src/main/resources/sqlmap/ScheduleSettingMapper.xml

+ 2 - 60
pdf-tech-common/src/main/java/constant/CommonConstant.java

@@ -35,25 +35,15 @@ public interface CommonConstant {
     String STRING_NO_CACHE = "No-cache";
     int SUCCESS = 200;
     String RESULT_SUCCESS = "success";
-    String CODE_SUCCESS = "SUCCESS";
-    String PAGE_INFO = "pageInfo";
 
     String EXCEPTION_MSG_EMAIL_INVALID = "Invalid Email Addresses";
 
-    String PARAMS_MISSING_ERROR = "缺少必要参数!";
-
-    String DUPLICATED_REQUEST_ERROR = "重复请求!";
-    String DUPLICATED_REQUEST_HEADER_TIMESTAMP = "timeStamp";
-    String DUPLICATED_REQUEST_HEADER_RANDOM = "random";
-
     String DEFAULT_ENCRYPT_KEY = "1234567890123456";
     String DEFAULT_ENCRYPT_IV_KEY = "6543********4321";
     /**
      * 参数错误状态
      */
     int EXCEPTION_CODE_PARAMETERS_ERROR = 300;
-    String EXCEPTION_MSG_PARAMETERS_ERROR = "没有获取到必须的参数或参数格式错误";
-    String EXCEPTION_MSG_PARAMETERS_AT_LEAST_ONE = "请至少设置一个有效的参数";
 
     int ERROR = 400; // 400 失败
 
@@ -61,43 +51,13 @@ public interface CommonConstant {
      * 服务错误状态
      */
     int EXCEPTION_CODE_SERVER_ERROR = 500;
-    String EXCEPTION_MSG_SERVER_ERROR = "服务错误";
-
-    /**
-     * 数据库错误状态
-     */
-    int EXCEPTION_CODE_SERVER_DATA_ACCESS_ERROR = 600;
-    String EXCEPTION_MSG_SERVER_DATA_ACCESS_ERROR = "数据库服务错误";
 
     /**
      * 运行错误状态
      */
     int EXCEPTION_CODE_RUNTIME_ERROR = 700;
-    String EXCEPTION_MSG_RUNTIME_ERROR = "运行时错误";
-
-    /**
-     * 用户登录错误状态
-     */
-    int EXCEPTION_CODE_LOGIN_USER_NOT_FOUND = 800;
-    String EXCEPTION_MSG_LOGIN_USER_NOT_FOUND = "未找到登录用户信息";
-
-    int EXCEPTION_CODE_CURRENT_USER_NO_PERMISSION = 801;
     String EXCEPTION_MSG_CURRENT_USER_NO_PERMISSION = "当前用户不具备操作权限";
 
-    int EXCEPTION_CODE_DATA_KEY_DECRYPT = 902;
-    String EXCEPTION_MSG_DATA_KEY_DECRYPT = "数据解密失败";
-
-    int EXCEPTION_CODE_DUPLICATED_REQUEST = 903;
-    String EXCEPTION_MSG_DUPLICATED_REQUEST = "请不要重复请求";
-
-    /**
-     * 字节编码
-     */
-    String ENCODE_UTF8 = "utf-8";
-
-
-    String TEXT_HTML_UTF8 = "text/html; charset=utf-8";
-
     /**
      * 分页默认第一页
      */
@@ -128,26 +88,8 @@ public interface CommonConstant {
             "<p>系统邮件,请勿回复。</p>";
 
     /**
-     * 名称校验不通过信息
-     */
-    String NAME_INVALID_MESSAGE="名称必须以下划线、数字、字母开头,不能包含特殊字符";
-
-    /**
-     * 文件起始行
-     */
-    Integer SOURCE_LINE_FROM = 1;
-
-    String PASSWORD_STRENTH = "1";
-    /**
-     * 文件结束行
+     * 邮箱正则验证
      */
-    Integer SOURCE_LINE_TO = 500;
-
-    String ZERO_STRING = "0";
-
-    /** 手机号正则验证 */
-    String mobileRegex = "^(1[0-9]{10})$";
-    /** 邮箱正则验证 */
     String emailRegex = "^([\\.a-zA-Z0-9_-])+@([a-zA-Z0-9_-])+((\\.[a-zA-Z0-9_-]{2,3}){1,2})$";
 
 
@@ -251,7 +193,7 @@ public interface CommonConstant {
             "\t\t<tr>\n" +
             "\t\t</tr>\n" +
             "\t</tbody>\n" +
-            "</table>\n" ;
+            "</table>\n";
 
 
     String codeInfoTemplate = "<span style=\"font-size:16px;font-weight:bold;color:#0000FF;\">%s(%s)</span> <span style=\"font-size:10pt;\"><br />";

+ 6 - 0
pdf-tech-core/pom.xml

@@ -165,6 +165,12 @@
             <artifactId>hutool-all</artifactId>
             <version>5.8.2</version>
         </dependency>
+
+        <dependency>
+            <groupId>dnsjava</groupId>
+            <artifactId>dnsjava</artifactId>
+            <version>2.1.8</version>
+        </dependency>
     </dependencies>
 
     <dependencyManagement>

+ 0 - 10
pdf-tech-core/src/main/java/cn/kdan/pdf/tech/core/constant/AuthConstant.java

@@ -5,7 +5,6 @@ package cn.kdan.pdf.tech.core.constant;
  */
 public interface AuthConstant {
 
-    int EXCEPTION_CODE_IMAGE_CODE_ERROR = 301;
     String EXCEPTION_MSG_IMAGE_CODE_ERROR = "图形验证码错误";
 
 
@@ -16,15 +15,6 @@ public interface AuthConstant {
     String SUCCESS_MSG_CODE_SEND_MAIL = "邮件发送成功";
     String EXCEPTION_MSG_CODE_SEND_ERROR = "验证码发送失败";
     String EXCEPTION_MAIL_CODE_SEND_ERROR = "邮件发送失败";
-    String EXCEPTION_MSG_CODE_ERROR = "验证码输入错误";
-
-    String EXCEPTION_MSG_RESET_PASSWORD_ERROR = "重置密码链接已过期";
-
-    String EXCEPTION_MSG_EMAIL_CODE_ERROR = "邮箱验证码错误";
-
-    String EXCEPTION_MSG_USER_VERIFY_ERROR = "身份认证失败";
-
-    String VERIFY_CODE_CHECK_SUCCESS = "验证通过";
 
     String EXCEPTION_MSG_CODE_ACTION_ERROR = "操作类型错误";
     String EXCEPTION_MSG_CODE_TYPE_ERROR = "发送方式错误";

+ 70 - 0
pdf-tech-core/src/main/java/cn/kdan/pdf/tech/core/controller/DirectoryController.java

@@ -0,0 +1,70 @@
+package cn.kdan.pdf.tech.core.controller;
+
+import cn.kdan.pdf.tech.core.model.Directory;
+import cn.kdan.pdf.tech.core.pojo.dto.DirectoryCreateDTO;
+import cn.kdan.pdf.tech.core.pojo.dto.DirectoryUpdateDTO;
+import cn.kdan.pdf.tech.core.pojo.vo.DirectoryVO;
+import cn.kdan.pdf.tech.core.service.DirectoryService;
+import constant.CommonConstant;
+import org.springframework.web.bind.annotation.*;
+import pojo.ResultMap;
+
+import javax.annotation.Resource;
+import javax.validation.Valid;
+import java.util.List;
+
+
+@RestController
+@RequestMapping("/directory")
+public class DirectoryController {
+
+    @Resource
+    private DirectoryService directoryService;
+
+    /**
+     * 获取目录列表
+     *
+     * @return DirectoryVO
+     */
+    @GetMapping("/list")
+    public ResultMap<List<DirectoryVO>> list() {
+        List<DirectoryVO> directoryList = directoryService.list();
+        return new ResultMap<>(CommonConstant.SUCCESS, CommonConstant.RESULT_SUCCESS, directoryList);
+    }
+
+    /**
+     * 创建目录
+     *
+     * @param directoryVO 目录信息
+     * @return Directory
+     */
+    @PostMapping("/create")
+    public ResultMap<Directory> create(@RequestBody @Valid DirectoryCreateDTO directoryVO) {
+        Directory createdDirectory = directoryService.create(directoryVO);
+        return new ResultMap<>(CommonConstant.SUCCESS, CommonConstant.RESULT_SUCCESS, createdDirectory);
+    }
+
+    /**
+     * 删除目录
+     *
+     * @param directoryId 目录id
+     * @return String
+     */
+    @PostMapping("/delete")
+    public ResultMap<String> delete(@RequestParam String directoryId) {
+        directoryService.delete(directoryId);
+        return new ResultMap<>(CommonConstant.SUCCESS, CommonConstant.RESULT_SUCCESS);
+    }
+
+    /**
+     * 更新目录
+     *
+     * @param updateDTO 目录信息
+     * @return Directory
+     */
+    @PostMapping("/update")
+    public ResultMap<Directory> create(@RequestBody @Valid DirectoryUpdateDTO updateDTO) {
+        directoryService.update(updateDTO);
+        return new ResultMap<>(CommonConstant.SUCCESS, CommonConstant.RESULT_SUCCESS);
+    }
+}

+ 134 - 0
pdf-tech-core/src/main/java/cn/kdan/pdf/tech/core/controller/DomainController.java

@@ -0,0 +1,134 @@
+package cn.kdan.pdf.tech.core.controller;
+
+import cn.kdan.pdf.tech.core.model.Domain;
+import cn.kdan.pdf.tech.core.service.DomainService;
+import constant.CommonConstant;
+import org.springframework.web.bind.annotation.*;
+import pojo.ResultMap;
+import utils.CommonUtils;
+
+import javax.annotation.Resource;
+import javax.servlet.http.HttpServletResponse;
+import java.io.IOException;
+import java.io.PrintWriter;
+import java.util.List;
+
+
+@RestController
+@RequestMapping("/domain")
+public class DomainController {
+
+    @Resource
+    private DomainService domainService;
+
+    /**
+     * 获取DNS的txt文件
+     *
+     * @return string
+     */
+    @GetMapping("/getDNSTxt")
+    public ResultMap<String> getDNSTxt() {
+        String txt = "PDF-Tech-Editor" + "-domain-verification=" + CommonUtils.generateId();
+        return new ResultMap<>(CommonConstant.SUCCESS, CommonConstant.RESULT_SUCCESS, txt);
+    }
+
+    /**
+     * 获取https验证文件
+     *
+     * @param response file
+     */
+    @GetMapping("/getHttpTxt")
+    public void getHttpTxt(HttpServletResponse response) {
+        String fileName = "PDF-Tech-Editor-domain-verification.txt";
+        String content = "PDF-Tech-Editor-domain-verification=" + CommonUtils.generateId();
+
+        response.setContentType("text/plain");
+        response.setHeader("Content-Disposition", "attachment; filename=" + fileName);
+
+        try (PrintWriter writer = response.getWriter()) {
+            writer.print(content);
+            writer.flush();
+        } catch (IOException e) {
+            e.printStackTrace();
+        }
+    }
+
+    /**
+     * 获取域名列表
+     *
+     * @param directoryId 目录id
+     * @return list
+     */
+    @GetMapping("/listByDirectoryId")
+    public ResultMap<List<Domain>> listByDirectoryId(@RequestParam String directoryId) {
+        List<Domain> domainList = domainService.listByDirectoryId(directoryId);
+        return new ResultMap<>(CommonConstant.SUCCESS, CommonConstant.RESULT_SUCCESS, domainList);
+    }
+
+    /**
+     * 获取域名列表
+     *
+     * @param verified 0 未验证 1 已验证
+     * @return list
+     */
+    @GetMapping("/list")
+    public ResultMap<List<Domain>> list(@RequestParam(required = false) String verified) {
+        List<Domain> domainList = domainService.list(verified);
+        return new ResultMap<>(CommonConstant.SUCCESS, CommonConstant.RESULT_SUCCESS, domainList);
+    }
+
+    /**
+     * 删除域名
+     *
+     * @param domainId 域名id
+     * @return string
+     */
+    @PostMapping("/delete")
+    public ResultMap<String> delete(@RequestParam String domainId) {
+        domainService.delete(domainId);
+        return new ResultMap<>(CommonConstant.SUCCESS, CommonConstant.RESULT_SUCCESS);
+    }
+
+    /**
+     * 创建域名
+     *
+     * @param verifyType 验证类型
+     * @param name       域名
+     * @return string
+     */
+    @PostMapping("/create")
+    public ResultMap<String> create(@RequestParam String verifyType, @RequestParam String name) {
+        domainService.create(verifyType, name);
+        return new ResultMap<>(CommonConstant.SUCCESS, CommonConstant.RESULT_SUCCESS);
+    }
+
+    /**
+     * 验证域名
+     *
+     * @param domainId    域名id
+     * @param verifyCode  验证码
+     * @param fileName    文件名
+     * @param fileContent 文件内容
+     * @return string
+     */
+    @PostMapping("/verify")
+    public ResultMap<String> verify(@RequestParam String domainId, @RequestParam(required = false) String verifyCode,
+                                    @RequestParam(required = false) String fileName, @RequestParam(required = false) String fileContent) {
+        domainService.verify(domainId, verifyCode, fileName, fileContent);
+        return new ResultMap<>(CommonConstant.SUCCESS, CommonConstant.RESULT_SUCCESS);
+    }
+
+    /**
+     * 绑定域名
+     *
+     * @param domainId    域名id
+     * @param directoryId 目录id
+     * @return string
+     */
+    @PostMapping("/bind")
+    public ResultMap<String> bind(@RequestParam String domainId, @RequestParam String directoryId) {
+        domainService.bindDomain(domainId, directoryId);
+        return new ResultMap<>(CommonConstant.SUCCESS, CommonConstant.RESULT_SUCCESS);
+    }
+
+}

+ 27 - 0
pdf-tech-core/src/main/java/cn/kdan/pdf/tech/core/enums/DomainUsedEnum.java

@@ -0,0 +1,27 @@
+package cn.kdan.pdf.tech.core.enums;
+
+public enum DomainUsedEnum {
+
+    AVAILABLE("0"),
+    USED("1");
+
+    private String code;
+
+    DomainUsedEnum(String code) {
+        this.code = code;
+    }
+
+
+    public static DomainUsedEnum getEnumByCode(String code) {
+        for (DomainUsedEnum type : DomainUsedEnum.values()) {
+            if (type.code().equals(code)) {
+                return type;
+            }
+        }
+        return null;
+    }
+
+    public String code() {
+        return code;
+    }
+}

+ 27 - 0
pdf-tech-core/src/main/java/cn/kdan/pdf/tech/core/enums/DomainVerifiedEnum.java

@@ -0,0 +1,27 @@
+package cn.kdan.pdf.tech.core.enums;
+
+public enum DomainVerifiedEnum {
+
+    UNVERIFIED("0"),
+    VERIFIED("1");
+
+    private String code;
+
+    DomainVerifiedEnum(String code) {
+        this.code = code;
+    }
+
+
+    public static DomainVerifiedEnum getEnumByCode(String code) {
+        for (DomainVerifiedEnum type : DomainVerifiedEnum.values()) {
+            if (type.code().equals(code)) {
+                return type;
+            }
+        }
+        return null;
+    }
+
+    public String code() {
+        return code;
+    }
+}

+ 28 - 0
pdf-tech-core/src/main/java/cn/kdan/pdf/tech/core/enums/DomainVerifyTypeEnum.java

@@ -0,0 +1,28 @@
+package cn.kdan.pdf.tech.core.enums;
+
+
+public enum DomainVerifyTypeEnum {
+
+    HTTPS("0"),
+    DNS("1");
+
+    private String code;
+
+    DomainVerifyTypeEnum(String code) {
+        this.code = code;
+    }
+
+
+    public static DomainVerifyTypeEnum getEnumByCode(String code) {
+        for (DomainVerifyTypeEnum type : DomainVerifyTypeEnum.values()) {
+            if (type.code().equals(code)) {
+                return type;
+            }
+        }
+        return null;
+    }
+
+    public String code() {
+        return code;
+    }
+}

+ 33 - 0
pdf-tech-core/src/main/java/cn/kdan/pdf/tech/core/mapper/DirectoryMapper.java

@@ -0,0 +1,33 @@
+package cn.kdan.pdf.tech.core.mapper;
+
+import cn.kdan.pdf.tech.core.model.Directory;
+import cn.kdan.pdf.tech.core.model.DirectoryExample;
+import java.util.List;
+import org.apache.ibatis.annotations.Param;
+import org.apache.ibatis.session.RowBounds;
+
+public interface DirectoryMapper {
+    long countByExample(DirectoryExample example);
+
+    int deleteByExample(DirectoryExample example);
+
+    int deleteByPrimaryKey(String directoryId);
+
+    int insert(Directory row);
+
+    int insertSelective(Directory row);
+
+    List<Directory> selectByExampleWithRowbounds(DirectoryExample example, RowBounds rowBounds);
+
+    List<Directory> selectByExample(DirectoryExample example);
+
+    Directory selectByPrimaryKey(String directoryId);
+
+    int updateByExampleSelective(@Param("row") Directory row, @Param("example") DirectoryExample example);
+
+    int updateByExample(@Param("row") Directory row, @Param("example") DirectoryExample example);
+
+    int updateByPrimaryKeySelective(Directory row);
+
+    int updateByPrimaryKey(Directory row);
+}

+ 33 - 0
pdf-tech-core/src/main/java/cn/kdan/pdf/tech/core/mapper/DirectorySyncMapper.java

@@ -0,0 +1,33 @@
+package cn.kdan.pdf.tech.core.mapper;
+
+import cn.kdan.pdf.tech.core.model.DirectorySync;
+import cn.kdan.pdf.tech.core.model.DirectorySyncExample;
+import java.util.List;
+import org.apache.ibatis.annotations.Param;
+import org.apache.ibatis.session.RowBounds;
+
+public interface DirectorySyncMapper {
+    long countByExample(DirectorySyncExample example);
+
+    int deleteByExample(DirectorySyncExample example);
+
+    int deleteByPrimaryKey(String directorySyncId);
+
+    int insert(DirectorySync row);
+
+    int insertSelective(DirectorySync row);
+
+    List<DirectorySync> selectByExampleWithRowbounds(DirectorySyncExample example, RowBounds rowBounds);
+
+    List<DirectorySync> selectByExample(DirectorySyncExample example);
+
+    DirectorySync selectByPrimaryKey(String directorySyncId);
+
+    int updateByExampleSelective(@Param("row") DirectorySync row, @Param("example") DirectorySyncExample example);
+
+    int updateByExample(@Param("row") DirectorySync row, @Param("example") DirectorySyncExample example);
+
+    int updateByPrimaryKeySelective(DirectorySync row);
+
+    int updateByPrimaryKey(DirectorySync row);
+}

+ 33 - 0
pdf-tech-core/src/main/java/cn/kdan/pdf/tech/core/mapper/DomainMapper.java

@@ -0,0 +1,33 @@
+package cn.kdan.pdf.tech.core.mapper;
+
+import cn.kdan.pdf.tech.core.model.Domain;
+import cn.kdan.pdf.tech.core.model.DomainExample;
+import java.util.List;
+import org.apache.ibatis.annotations.Param;
+import org.apache.ibatis.session.RowBounds;
+
+public interface DomainMapper {
+    long countByExample(DomainExample example);
+
+    int deleteByExample(DomainExample example);
+
+    int deleteByPrimaryKey(String domainId);
+
+    int insert(Domain row);
+
+    int insertSelective(Domain row);
+
+    List<Domain> selectByExampleWithRowbounds(DomainExample example, RowBounds rowBounds);
+
+    List<Domain> selectByExample(DomainExample example);
+
+    Domain selectByPrimaryKey(String domainId);
+
+    int updateByExampleSelective(@Param("row") Domain row, @Param("example") DomainExample example);
+
+    int updateByExample(@Param("row") Domain row, @Param("example") DomainExample example);
+
+    int updateByPrimaryKeySelective(Domain row);
+
+    int updateByPrimaryKey(Domain row);
+}

+ 33 - 0
pdf-tech-core/src/main/java/cn/kdan/pdf/tech/core/mapper/ScheduleSettingMapper.java

@@ -0,0 +1,33 @@
+package cn.kdan.pdf.tech.core.mapper;
+
+import cn.kdan.pdf.tech.core.model.ScheduleSetting;
+import cn.kdan.pdf.tech.core.model.ScheduleSettingExample;
+import java.util.List;
+import org.apache.ibatis.annotations.Param;
+import org.apache.ibatis.session.RowBounds;
+
+public interface ScheduleSettingMapper {
+    long countByExample(ScheduleSettingExample example);
+
+    int deleteByExample(ScheduleSettingExample example);
+
+    int deleteByPrimaryKey(String scheduleSettingId);
+
+    int insert(ScheduleSetting row);
+
+    int insertSelective(ScheduleSetting row);
+
+    List<ScheduleSetting> selectByExampleWithRowbounds(ScheduleSettingExample example, RowBounds rowBounds);
+
+    List<ScheduleSetting> selectByExample(ScheduleSettingExample example);
+
+    ScheduleSetting selectByPrimaryKey(String scheduleSettingId);
+
+    int updateByExampleSelective(@Param("row") ScheduleSetting row, @Param("example") ScheduleSettingExample example);
+
+    int updateByExample(@Param("row") ScheduleSetting row, @Param("example") ScheduleSettingExample example);
+
+    int updateByPrimaryKeySelective(ScheduleSetting row);
+
+    int updateByPrimaryKey(ScheduleSetting row);
+}

+ 238 - 0
pdf-tech-core/src/main/java/cn/kdan/pdf/tech/core/model/Directory.java

@@ -0,0 +1,238 @@
+package cn.kdan.pdf.tech.core.model;
+
+import java.io.Serializable;
+import java.util.Date;
+
+public class Directory implements Serializable {
+    private String directoryId;
+
+    private String name;
+
+    private String clientSecrets;
+
+    private String scope;
+
+    private String tenantId;
+
+    private String type;
+
+    private String applicationId;
+
+    private Date createTime;
+
+    private Date updateTime;
+
+    private String validFlag;
+
+    private String companyId;
+
+    private static final long serialVersionUID = 1L;
+
+    public String getDirectoryId() {
+        return directoryId;
+    }
+
+    public Directory withDirectoryId(String directoryId) {
+        this.setDirectoryId(directoryId);
+        return this;
+    }
+
+    public void setDirectoryId(String directoryId) {
+        this.directoryId = directoryId;
+    }
+
+    public String getName() {
+        return name;
+    }
+
+    public Directory withName(String name) {
+        this.setName(name);
+        return this;
+    }
+
+    public void setName(String name) {
+        this.name = name;
+    }
+
+    public String getClientSecrets() {
+        return clientSecrets;
+    }
+
+    public Directory withClientSecrets(String clientSecrets) {
+        this.setClientSecrets(clientSecrets);
+        return this;
+    }
+
+    public void setClientSecrets(String clientSecrets) {
+        this.clientSecrets = clientSecrets;
+    }
+
+    public String getScope() {
+        return scope;
+    }
+
+    public Directory withScope(String scope) {
+        this.setScope(scope);
+        return this;
+    }
+
+    public void setScope(String scope) {
+        this.scope = scope;
+    }
+
+    public String getTenantId() {
+        return tenantId;
+    }
+
+    public Directory withTenantId(String tenantId) {
+        this.setTenantId(tenantId);
+        return this;
+    }
+
+    public void setTenantId(String tenantId) {
+        this.tenantId = tenantId;
+    }
+
+    public String getType() {
+        return type;
+    }
+
+    public Directory withType(String type) {
+        this.setType(type);
+        return this;
+    }
+
+    public void setType(String type) {
+        this.type = type;
+    }
+
+    public String getApplicationId() {
+        return applicationId;
+    }
+
+    public Directory withApplicationId(String applicationId) {
+        this.setApplicationId(applicationId);
+        return this;
+    }
+
+    public void setApplicationId(String applicationId) {
+        this.applicationId = applicationId;
+    }
+
+    public Date getCreateTime() {
+        return createTime;
+    }
+
+    public Directory withCreateTime(Date createTime) {
+        this.setCreateTime(createTime);
+        return this;
+    }
+
+    public void setCreateTime(Date createTime) {
+        this.createTime = createTime;
+    }
+
+    public Date getUpdateTime() {
+        return updateTime;
+    }
+
+    public Directory withUpdateTime(Date updateTime) {
+        this.setUpdateTime(updateTime);
+        return this;
+    }
+
+    public void setUpdateTime(Date updateTime) {
+        this.updateTime = updateTime;
+    }
+
+    public String getValidFlag() {
+        return validFlag;
+    }
+
+    public Directory withValidFlag(String validFlag) {
+        this.setValidFlag(validFlag);
+        return this;
+    }
+
+    public void setValidFlag(String validFlag) {
+        this.validFlag = validFlag;
+    }
+
+    public String getCompanyId() {
+        return companyId;
+    }
+
+    public Directory withCompanyId(String companyId) {
+        this.setCompanyId(companyId);
+        return this;
+    }
+
+    public void setCompanyId(String companyId) {
+        this.companyId = companyId;
+    }
+
+    @Override
+    public boolean equals(Object that) {
+        if (this == that) {
+            return true;
+        }
+        if (that == null) {
+            return false;
+        }
+        if (getClass() != that.getClass()) {
+            return false;
+        }
+        Directory other = (Directory) that;
+        return (this.getDirectoryId() == null ? other.getDirectoryId() == null : this.getDirectoryId().equals(other.getDirectoryId()))
+            && (this.getName() == null ? other.getName() == null : this.getName().equals(other.getName()))
+            && (this.getClientSecrets() == null ? other.getClientSecrets() == null : this.getClientSecrets().equals(other.getClientSecrets()))
+            && (this.getScope() == null ? other.getScope() == null : this.getScope().equals(other.getScope()))
+            && (this.getTenantId() == null ? other.getTenantId() == null : this.getTenantId().equals(other.getTenantId()))
+            && (this.getType() == null ? other.getType() == null : this.getType().equals(other.getType()))
+            && (this.getApplicationId() == null ? other.getApplicationId() == null : this.getApplicationId().equals(other.getApplicationId()))
+            && (this.getCreateTime() == null ? other.getCreateTime() == null : this.getCreateTime().equals(other.getCreateTime()))
+            && (this.getUpdateTime() == null ? other.getUpdateTime() == null : this.getUpdateTime().equals(other.getUpdateTime()))
+            && (this.getValidFlag() == null ? other.getValidFlag() == null : this.getValidFlag().equals(other.getValidFlag()))
+            && (this.getCompanyId() == null ? other.getCompanyId() == null : this.getCompanyId().equals(other.getCompanyId()));
+    }
+
+    @Override
+    public int hashCode() {
+        final int prime = 31;
+        int result = 1;
+        result = prime * result + ((getDirectoryId() == null) ? 0 : getDirectoryId().hashCode());
+        result = prime * result + ((getName() == null) ? 0 : getName().hashCode());
+        result = prime * result + ((getClientSecrets() == null) ? 0 : getClientSecrets().hashCode());
+        result = prime * result + ((getScope() == null) ? 0 : getScope().hashCode());
+        result = prime * result + ((getTenantId() == null) ? 0 : getTenantId().hashCode());
+        result = prime * result + ((getType() == null) ? 0 : getType().hashCode());
+        result = prime * result + ((getApplicationId() == null) ? 0 : getApplicationId().hashCode());
+        result = prime * result + ((getCreateTime() == null) ? 0 : getCreateTime().hashCode());
+        result = prime * result + ((getUpdateTime() == null) ? 0 : getUpdateTime().hashCode());
+        result = prime * result + ((getValidFlag() == null) ? 0 : getValidFlag().hashCode());
+        result = prime * result + ((getCompanyId() == null) ? 0 : getCompanyId().hashCode());
+        return result;
+    }
+
+    @Override
+    public String toString() {
+        StringBuilder sb = new StringBuilder();
+        sb.append(getClass().getSimpleName());
+        sb.append(" [");
+        sb.append("Hash = ").append(hashCode());
+        sb.append(", directoryId=").append(directoryId);
+        sb.append(", name=").append(name);
+        sb.append(", clientSecrets=").append(clientSecrets);
+        sb.append(", scope=").append(scope);
+        sb.append(", tenantId=").append(tenantId);
+        sb.append(", type=").append(type);
+        sb.append(", applicationId=").append(applicationId);
+        sb.append(", createTime=").append(createTime);
+        sb.append(", updateTime=").append(updateTime);
+        sb.append(", validFlag=").append(validFlag);
+        sb.append(", companyId=").append(companyId);
+        sb.append(", serialVersionUID=").append(serialVersionUID);
+        sb.append("]");
+        return sb.toString();
+    }
+}

+ 995 - 0
pdf-tech-core/src/main/java/cn/kdan/pdf/tech/core/model/DirectoryExample.java

@@ -0,0 +1,995 @@
+package cn.kdan.pdf.tech.core.model;
+
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.List;
+
+public class DirectoryExample {
+    protected String orderByClause;
+
+    protected boolean distinct;
+
+    protected List<Criteria> oredCriteria;
+
+    public DirectoryExample() {
+        oredCriteria = new ArrayList<>();
+    }
+
+    public void setOrderByClause(String orderByClause) {
+        this.orderByClause = orderByClause;
+    }
+
+    public String getOrderByClause() {
+        return orderByClause;
+    }
+
+    public void setDistinct(boolean distinct) {
+        this.distinct = distinct;
+    }
+
+    public boolean isDistinct() {
+        return distinct;
+    }
+
+    public List<Criteria> getOredCriteria() {
+        return oredCriteria;
+    }
+
+    public void or(Criteria criteria) {
+        oredCriteria.add(criteria);
+    }
+
+    public Criteria or() {
+        Criteria criteria = createCriteriaInternal();
+        oredCriteria.add(criteria);
+        return criteria;
+    }
+
+    public Criteria createCriteria() {
+        Criteria criteria = createCriteriaInternal();
+        if (oredCriteria.size() == 0) {
+            oredCriteria.add(criteria);
+        }
+        return criteria;
+    }
+
+    protected Criteria createCriteriaInternal() {
+        Criteria criteria = new Criteria();
+        return criteria;
+    }
+
+    public void clear() {
+        oredCriteria.clear();
+        orderByClause = null;
+        distinct = false;
+    }
+
+    protected abstract static class GeneratedCriteria {
+        protected List<Criterion> criteria;
+
+        protected GeneratedCriteria() {
+            super();
+            criteria = new ArrayList<>();
+        }
+
+        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 andDirectoryIdIsNull() {
+            addCriterion("directory_id is null");
+            return (Criteria) this;
+        }
+
+        public Criteria andDirectoryIdIsNotNull() {
+            addCriterion("directory_id is not null");
+            return (Criteria) this;
+        }
+
+        public Criteria andDirectoryIdEqualTo(String value) {
+            addCriterion("directory_id =", value, "directoryId");
+            return (Criteria) this;
+        }
+
+        public Criteria andDirectoryIdNotEqualTo(String value) {
+            addCriterion("directory_id <>", value, "directoryId");
+            return (Criteria) this;
+        }
+
+        public Criteria andDirectoryIdGreaterThan(String value) {
+            addCriterion("directory_id >", value, "directoryId");
+            return (Criteria) this;
+        }
+
+        public Criteria andDirectoryIdGreaterThanOrEqualTo(String value) {
+            addCriterion("directory_id >=", value, "directoryId");
+            return (Criteria) this;
+        }
+
+        public Criteria andDirectoryIdLessThan(String value) {
+            addCriterion("directory_id <", value, "directoryId");
+            return (Criteria) this;
+        }
+
+        public Criteria andDirectoryIdLessThanOrEqualTo(String value) {
+            addCriterion("directory_id <=", value, "directoryId");
+            return (Criteria) this;
+        }
+
+        public Criteria andDirectoryIdLike(String value) {
+            addCriterion("directory_id like", value, "directoryId");
+            return (Criteria) this;
+        }
+
+        public Criteria andDirectoryIdNotLike(String value) {
+            addCriterion("directory_id not like", value, "directoryId");
+            return (Criteria) this;
+        }
+
+        public Criteria andDirectoryIdIn(List<String> values) {
+            addCriterion("directory_id in", values, "directoryId");
+            return (Criteria) this;
+        }
+
+        public Criteria andDirectoryIdNotIn(List<String> values) {
+            addCriterion("directory_id not in", values, "directoryId");
+            return (Criteria) this;
+        }
+
+        public Criteria andDirectoryIdBetween(String value1, String value2) {
+            addCriterion("directory_id between", value1, value2, "directoryId");
+            return (Criteria) this;
+        }
+
+        public Criteria andDirectoryIdNotBetween(String value1, String value2) {
+            addCriterion("directory_id not between", value1, value2, "directoryId");
+            return (Criteria) this;
+        }
+
+        public Criteria andNameIsNull() {
+            addCriterion("`name` is null");
+            return (Criteria) this;
+        }
+
+        public Criteria andNameIsNotNull() {
+            addCriterion("`name` is not null");
+            return (Criteria) this;
+        }
+
+        public Criteria andNameEqualTo(String value) {
+            addCriterion("`name` =", value, "name");
+            return (Criteria) this;
+        }
+
+        public Criteria andNameNotEqualTo(String value) {
+            addCriterion("`name` <>", value, "name");
+            return (Criteria) this;
+        }
+
+        public Criteria andNameGreaterThan(String value) {
+            addCriterion("`name` >", value, "name");
+            return (Criteria) this;
+        }
+
+        public Criteria andNameGreaterThanOrEqualTo(String value) {
+            addCriterion("`name` >=", value, "name");
+            return (Criteria) this;
+        }
+
+        public Criteria andNameLessThan(String value) {
+            addCriterion("`name` <", value, "name");
+            return (Criteria) this;
+        }
+
+        public Criteria andNameLessThanOrEqualTo(String value) {
+            addCriterion("`name` <=", value, "name");
+            return (Criteria) this;
+        }
+
+        public Criteria andNameLike(String value) {
+            addCriterion("`name` like", value, "name");
+            return (Criteria) this;
+        }
+
+        public Criteria andNameNotLike(String value) {
+            addCriterion("`name` not like", value, "name");
+            return (Criteria) this;
+        }
+
+        public Criteria andNameIn(List<String> values) {
+            addCriterion("`name` in", values, "name");
+            return (Criteria) this;
+        }
+
+        public Criteria andNameNotIn(List<String> values) {
+            addCriterion("`name` not in", values, "name");
+            return (Criteria) this;
+        }
+
+        public Criteria andNameBetween(String value1, String value2) {
+            addCriterion("`name` between", value1, value2, "name");
+            return (Criteria) this;
+        }
+
+        public Criteria andNameNotBetween(String value1, String value2) {
+            addCriterion("`name` not between", value1, value2, "name");
+            return (Criteria) this;
+        }
+
+        public Criteria andClientSecretsIsNull() {
+            addCriterion("client_secrets is null");
+            return (Criteria) this;
+        }
+
+        public Criteria andClientSecretsIsNotNull() {
+            addCriterion("client_secrets is not null");
+            return (Criteria) this;
+        }
+
+        public Criteria andClientSecretsEqualTo(String value) {
+            addCriterion("client_secrets =", value, "clientSecrets");
+            return (Criteria) this;
+        }
+
+        public Criteria andClientSecretsNotEqualTo(String value) {
+            addCriterion("client_secrets <>", value, "clientSecrets");
+            return (Criteria) this;
+        }
+
+        public Criteria andClientSecretsGreaterThan(String value) {
+            addCriterion("client_secrets >", value, "clientSecrets");
+            return (Criteria) this;
+        }
+
+        public Criteria andClientSecretsGreaterThanOrEqualTo(String value) {
+            addCriterion("client_secrets >=", value, "clientSecrets");
+            return (Criteria) this;
+        }
+
+        public Criteria andClientSecretsLessThan(String value) {
+            addCriterion("client_secrets <", value, "clientSecrets");
+            return (Criteria) this;
+        }
+
+        public Criteria andClientSecretsLessThanOrEqualTo(String value) {
+            addCriterion("client_secrets <=", value, "clientSecrets");
+            return (Criteria) this;
+        }
+
+        public Criteria andClientSecretsLike(String value) {
+            addCriterion("client_secrets like", value, "clientSecrets");
+            return (Criteria) this;
+        }
+
+        public Criteria andClientSecretsNotLike(String value) {
+            addCriterion("client_secrets not like", value, "clientSecrets");
+            return (Criteria) this;
+        }
+
+        public Criteria andClientSecretsIn(List<String> values) {
+            addCriterion("client_secrets in", values, "clientSecrets");
+            return (Criteria) this;
+        }
+
+        public Criteria andClientSecretsNotIn(List<String> values) {
+            addCriterion("client_secrets not in", values, "clientSecrets");
+            return (Criteria) this;
+        }
+
+        public Criteria andClientSecretsBetween(String value1, String value2) {
+            addCriterion("client_secrets between", value1, value2, "clientSecrets");
+            return (Criteria) this;
+        }
+
+        public Criteria andClientSecretsNotBetween(String value1, String value2) {
+            addCriterion("client_secrets not between", value1, value2, "clientSecrets");
+            return (Criteria) this;
+        }
+
+        public Criteria andScopeIsNull() {
+            addCriterion("`scope` is null");
+            return (Criteria) this;
+        }
+
+        public Criteria andScopeIsNotNull() {
+            addCriterion("`scope` is not null");
+            return (Criteria) this;
+        }
+
+        public Criteria andScopeEqualTo(String value) {
+            addCriterion("`scope` =", value, "scope");
+            return (Criteria) this;
+        }
+
+        public Criteria andScopeNotEqualTo(String value) {
+            addCriterion("`scope` <>", value, "scope");
+            return (Criteria) this;
+        }
+
+        public Criteria andScopeGreaterThan(String value) {
+            addCriterion("`scope` >", value, "scope");
+            return (Criteria) this;
+        }
+
+        public Criteria andScopeGreaterThanOrEqualTo(String value) {
+            addCriterion("`scope` >=", value, "scope");
+            return (Criteria) this;
+        }
+
+        public Criteria andScopeLessThan(String value) {
+            addCriterion("`scope` <", value, "scope");
+            return (Criteria) this;
+        }
+
+        public Criteria andScopeLessThanOrEqualTo(String value) {
+            addCriterion("`scope` <=", value, "scope");
+            return (Criteria) this;
+        }
+
+        public Criteria andScopeLike(String value) {
+            addCriterion("`scope` like", value, "scope");
+            return (Criteria) this;
+        }
+
+        public Criteria andScopeNotLike(String value) {
+            addCriterion("`scope` not like", value, "scope");
+            return (Criteria) this;
+        }
+
+        public Criteria andScopeIn(List<String> values) {
+            addCriterion("`scope` in", values, "scope");
+            return (Criteria) this;
+        }
+
+        public Criteria andScopeNotIn(List<String> values) {
+            addCriterion("`scope` not in", values, "scope");
+            return (Criteria) this;
+        }
+
+        public Criteria andScopeBetween(String value1, String value2) {
+            addCriterion("`scope` between", value1, value2, "scope");
+            return (Criteria) this;
+        }
+
+        public Criteria andScopeNotBetween(String value1, String value2) {
+            addCriterion("`scope` not between", value1, value2, "scope");
+            return (Criteria) this;
+        }
+
+        public Criteria andTenantIdIsNull() {
+            addCriterion("tenant_id is null");
+            return (Criteria) this;
+        }
+
+        public Criteria andTenantIdIsNotNull() {
+            addCriterion("tenant_id is not null");
+            return (Criteria) this;
+        }
+
+        public Criteria andTenantIdEqualTo(String value) {
+            addCriterion("tenant_id =", value, "tenantId");
+            return (Criteria) this;
+        }
+
+        public Criteria andTenantIdNotEqualTo(String value) {
+            addCriterion("tenant_id <>", value, "tenantId");
+            return (Criteria) this;
+        }
+
+        public Criteria andTenantIdGreaterThan(String value) {
+            addCriterion("tenant_id >", value, "tenantId");
+            return (Criteria) this;
+        }
+
+        public Criteria andTenantIdGreaterThanOrEqualTo(String value) {
+            addCriterion("tenant_id >=", value, "tenantId");
+            return (Criteria) this;
+        }
+
+        public Criteria andTenantIdLessThan(String value) {
+            addCriterion("tenant_id <", value, "tenantId");
+            return (Criteria) this;
+        }
+
+        public Criteria andTenantIdLessThanOrEqualTo(String value) {
+            addCriterion("tenant_id <=", value, "tenantId");
+            return (Criteria) this;
+        }
+
+        public Criteria andTenantIdLike(String value) {
+            addCriterion("tenant_id like", value, "tenantId");
+            return (Criteria) this;
+        }
+
+        public Criteria andTenantIdNotLike(String value) {
+            addCriterion("tenant_id not like", value, "tenantId");
+            return (Criteria) this;
+        }
+
+        public Criteria andTenantIdIn(List<String> values) {
+            addCriterion("tenant_id in", values, "tenantId");
+            return (Criteria) this;
+        }
+
+        public Criteria andTenantIdNotIn(List<String> values) {
+            addCriterion("tenant_id not in", values, "tenantId");
+            return (Criteria) this;
+        }
+
+        public Criteria andTenantIdBetween(String value1, String value2) {
+            addCriterion("tenant_id between", value1, value2, "tenantId");
+            return (Criteria) this;
+        }
+
+        public Criteria andTenantIdNotBetween(String value1, String value2) {
+            addCriterion("tenant_id not between", value1, value2, "tenantId");
+            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 andTypeNotEqualTo(String value) {
+            addCriterion("`type` <>", value, "type");
+            return (Criteria) this;
+        }
+
+        public Criteria andTypeGreaterThan(String value) {
+            addCriterion("`type` >", value, "type");
+            return (Criteria) this;
+        }
+
+        public Criteria andTypeGreaterThanOrEqualTo(String value) {
+            addCriterion("`type` >=", value, "type");
+            return (Criteria) this;
+        }
+
+        public Criteria andTypeLessThan(String value) {
+            addCriterion("`type` <", value, "type");
+            return (Criteria) this;
+        }
+
+        public Criteria andTypeLessThanOrEqualTo(String value) {
+            addCriterion("`type` <=", value, "type");
+            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 andApplicationIdIsNull() {
+            addCriterion("application_id is null");
+            return (Criteria) this;
+        }
+
+        public Criteria andApplicationIdIsNotNull() {
+            addCriterion("application_id is not null");
+            return (Criteria) this;
+        }
+
+        public Criteria andApplicationIdEqualTo(String value) {
+            addCriterion("application_id =", value, "applicationId");
+            return (Criteria) this;
+        }
+
+        public Criteria andApplicationIdNotEqualTo(String value) {
+            addCriterion("application_id <>", value, "applicationId");
+            return (Criteria) this;
+        }
+
+        public Criteria andApplicationIdGreaterThan(String value) {
+            addCriterion("application_id >", value, "applicationId");
+            return (Criteria) this;
+        }
+
+        public Criteria andApplicationIdGreaterThanOrEqualTo(String value) {
+            addCriterion("application_id >=", value, "applicationId");
+            return (Criteria) this;
+        }
+
+        public Criteria andApplicationIdLessThan(String value) {
+            addCriterion("application_id <", value, "applicationId");
+            return (Criteria) this;
+        }
+
+        public Criteria andApplicationIdLessThanOrEqualTo(String value) {
+            addCriterion("application_id <=", value, "applicationId");
+            return (Criteria) this;
+        }
+
+        public Criteria andApplicationIdLike(String value) {
+            addCriterion("application_id like", value, "applicationId");
+            return (Criteria) this;
+        }
+
+        public Criteria andApplicationIdNotLike(String value) {
+            addCriterion("application_id not like", value, "applicationId");
+            return (Criteria) this;
+        }
+
+        public Criteria andApplicationIdIn(List<String> values) {
+            addCriterion("application_id in", values, "applicationId");
+            return (Criteria) this;
+        }
+
+        public Criteria andApplicationIdNotIn(List<String> values) {
+            addCriterion("application_id not in", values, "applicationId");
+            return (Criteria) this;
+        }
+
+        public Criteria andApplicationIdBetween(String value1, String value2) {
+            addCriterion("application_id between", value1, value2, "applicationId");
+            return (Criteria) this;
+        }
+
+        public Criteria andApplicationIdNotBetween(String value1, String value2) {
+            addCriterion("application_id not between", value1, value2, "applicationId");
+            return (Criteria) this;
+        }
+
+        public Criteria andCreateTimeIsNull() {
+            addCriterion("create_time is null");
+            return (Criteria) this;
+        }
+
+        public Criteria andCreateTimeIsNotNull() {
+            addCriterion("create_time is not null");
+            return (Criteria) this;
+        }
+
+        public Criteria andCreateTimeEqualTo(Date value) {
+            addCriterion("create_time =", value, "createTime");
+            return (Criteria) this;
+        }
+
+        public Criteria andCreateTimeNotEqualTo(Date value) {
+            addCriterion("create_time <>", value, "createTime");
+            return (Criteria) this;
+        }
+
+        public Criteria andCreateTimeGreaterThan(Date value) {
+            addCriterion("create_time >", value, "createTime");
+            return (Criteria) this;
+        }
+
+        public Criteria andCreateTimeGreaterThanOrEqualTo(Date value) {
+            addCriterion("create_time >=", value, "createTime");
+            return (Criteria) this;
+        }
+
+        public Criteria andCreateTimeLessThan(Date value) {
+            addCriterion("create_time <", value, "createTime");
+            return (Criteria) this;
+        }
+
+        public Criteria andCreateTimeLessThanOrEqualTo(Date value) {
+            addCriterion("create_time <=", value, "createTime");
+            return (Criteria) this;
+        }
+
+        public Criteria andCreateTimeIn(List<Date> values) {
+            addCriterion("create_time in", values, "createTime");
+            return (Criteria) this;
+        }
+
+        public Criteria andCreateTimeNotIn(List<Date> values) {
+            addCriterion("create_time not in", values, "createTime");
+            return (Criteria) this;
+        }
+
+        public Criteria andCreateTimeBetween(Date value1, Date value2) {
+            addCriterion("create_time between", value1, value2, "createTime");
+            return (Criteria) this;
+        }
+
+        public Criteria andCreateTimeNotBetween(Date value1, Date value2) {
+            addCriterion("create_time not between", value1, value2, "createTime");
+            return (Criteria) this;
+        }
+
+        public Criteria andUpdateTimeIsNull() {
+            addCriterion("update_time is null");
+            return (Criteria) this;
+        }
+
+        public Criteria andUpdateTimeIsNotNull() {
+            addCriterion("update_time is not null");
+            return (Criteria) this;
+        }
+
+        public Criteria andUpdateTimeEqualTo(Date value) {
+            addCriterion("update_time =", value, "updateTime");
+            return (Criteria) this;
+        }
+
+        public Criteria andUpdateTimeNotEqualTo(Date value) {
+            addCriterion("update_time <>", value, "updateTime");
+            return (Criteria) this;
+        }
+
+        public Criteria andUpdateTimeGreaterThan(Date value) {
+            addCriterion("update_time >", value, "updateTime");
+            return (Criteria) this;
+        }
+
+        public Criteria andUpdateTimeGreaterThanOrEqualTo(Date value) {
+            addCriterion("update_time >=", value, "updateTime");
+            return (Criteria) this;
+        }
+
+        public Criteria andUpdateTimeLessThan(Date value) {
+            addCriterion("update_time <", value, "updateTime");
+            return (Criteria) this;
+        }
+
+        public Criteria andUpdateTimeLessThanOrEqualTo(Date value) {
+            addCriterion("update_time <=", value, "updateTime");
+            return (Criteria) this;
+        }
+
+        public Criteria andUpdateTimeIn(List<Date> values) {
+            addCriterion("update_time in", values, "updateTime");
+            return (Criteria) this;
+        }
+
+        public Criteria andUpdateTimeNotIn(List<Date> values) {
+            addCriterion("update_time not in", values, "updateTime");
+            return (Criteria) this;
+        }
+
+        public Criteria andUpdateTimeBetween(Date value1, Date value2) {
+            addCriterion("update_time between", value1, value2, "updateTime");
+            return (Criteria) this;
+        }
+
+        public Criteria andUpdateTimeNotBetween(Date value1, Date value2) {
+            addCriterion("update_time not between", value1, value2, "updateTime");
+            return (Criteria) this;
+        }
+
+        public Criteria andValidFlagIsNull() {
+            addCriterion("valid_flag is null");
+            return (Criteria) this;
+        }
+
+        public Criteria andValidFlagIsNotNull() {
+            addCriterion("valid_flag is not null");
+            return (Criteria) this;
+        }
+
+        public Criteria andValidFlagEqualTo(String value) {
+            addCriterion("valid_flag =", value, "validFlag");
+            return (Criteria) this;
+        }
+
+        public Criteria andValidFlagNotEqualTo(String value) {
+            addCriterion("valid_flag <>", value, "validFlag");
+            return (Criteria) this;
+        }
+
+        public Criteria andValidFlagGreaterThan(String value) {
+            addCriterion("valid_flag >", value, "validFlag");
+            return (Criteria) this;
+        }
+
+        public Criteria andValidFlagGreaterThanOrEqualTo(String value) {
+            addCriterion("valid_flag >=", value, "validFlag");
+            return (Criteria) this;
+        }
+
+        public Criteria andValidFlagLessThan(String value) {
+            addCriterion("valid_flag <", value, "validFlag");
+            return (Criteria) this;
+        }
+
+        public Criteria andValidFlagLessThanOrEqualTo(String value) {
+            addCriterion("valid_flag <=", value, "validFlag");
+            return (Criteria) this;
+        }
+
+        public Criteria andValidFlagLike(String value) {
+            addCriterion("valid_flag like", value, "validFlag");
+            return (Criteria) this;
+        }
+
+        public Criteria andValidFlagNotLike(String value) {
+            addCriterion("valid_flag not like", value, "validFlag");
+            return (Criteria) this;
+        }
+
+        public Criteria andValidFlagIn(List<String> values) {
+            addCriterion("valid_flag in", values, "validFlag");
+            return (Criteria) this;
+        }
+
+        public Criteria andValidFlagNotIn(List<String> values) {
+            addCriterion("valid_flag not in", values, "validFlag");
+            return (Criteria) this;
+        }
+
+        public Criteria andValidFlagBetween(String value1, String value2) {
+            addCriterion("valid_flag between", value1, value2, "validFlag");
+            return (Criteria) this;
+        }
+
+        public Criteria andValidFlagNotBetween(String value1, String value2) {
+            addCriterion("valid_flag not between", value1, value2, "validFlag");
+            return (Criteria) this;
+        }
+
+        public Criteria andCompanyIdIsNull() {
+            addCriterion("company_id is null");
+            return (Criteria) this;
+        }
+
+        public Criteria andCompanyIdIsNotNull() {
+            addCriterion("company_id is not null");
+            return (Criteria) this;
+        }
+
+        public Criteria andCompanyIdEqualTo(String value) {
+            addCriterion("company_id =", value, "companyId");
+            return (Criteria) this;
+        }
+
+        public Criteria andCompanyIdNotEqualTo(String value) {
+            addCriterion("company_id <>", value, "companyId");
+            return (Criteria) this;
+        }
+
+        public Criteria andCompanyIdGreaterThan(String value) {
+            addCriterion("company_id >", value, "companyId");
+            return (Criteria) this;
+        }
+
+        public Criteria andCompanyIdGreaterThanOrEqualTo(String value) {
+            addCriterion("company_id >=", value, "companyId");
+            return (Criteria) this;
+        }
+
+        public Criteria andCompanyIdLessThan(String value) {
+            addCriterion("company_id <", value, "companyId");
+            return (Criteria) this;
+        }
+
+        public Criteria andCompanyIdLessThanOrEqualTo(String value) {
+            addCriterion("company_id <=", value, "companyId");
+            return (Criteria) this;
+        }
+
+        public Criteria andCompanyIdLike(String value) {
+            addCriterion("company_id like", value, "companyId");
+            return (Criteria) this;
+        }
+
+        public Criteria andCompanyIdNotLike(String value) {
+            addCriterion("company_id not like", value, "companyId");
+            return (Criteria) this;
+        }
+
+        public Criteria andCompanyIdIn(List<String> values) {
+            addCriterion("company_id in", values, "companyId");
+            return (Criteria) this;
+        }
+
+        public Criteria andCompanyIdNotIn(List<String> values) {
+            addCriterion("company_id not in", values, "companyId");
+            return (Criteria) this;
+        }
+
+        public Criteria andCompanyIdBetween(String value1, String value2) {
+            addCriterion("company_id between", value1, value2, "companyId");
+            return (Criteria) this;
+        }
+
+        public Criteria andCompanyIdNotBetween(String value1, String value2) {
+            addCriterion("company_id not between", value1, value2, "companyId");
+            return (Criteria) this;
+        }
+
+        public Criteria andDirectoryIdLikeInsensitive(String value) {
+            addCriterion("upper(directory_id) like", value.toUpperCase(), "directoryId");
+            return (Criteria) this;
+        }
+
+        public Criteria andNameLikeInsensitive(String value) {
+            addCriterion("upper(`name`) like", value.toUpperCase(), "name");
+            return (Criteria) this;
+        }
+
+        public Criteria andClientSecretsLikeInsensitive(String value) {
+            addCriterion("upper(client_secrets) like", value.toUpperCase(), "clientSecrets");
+            return (Criteria) this;
+        }
+
+        public Criteria andScopeLikeInsensitive(String value) {
+            addCriterion("upper(`scope`) like", value.toUpperCase(), "scope");
+            return (Criteria) this;
+        }
+
+        public Criteria andTenantIdLikeInsensitive(String value) {
+            addCriterion("upper(tenant_id) like", value.toUpperCase(), "tenantId");
+            return (Criteria) this;
+        }
+
+        public Criteria andTypeLikeInsensitive(String value) {
+            addCriterion("upper(`type`) like", value.toUpperCase(), "type");
+            return (Criteria) this;
+        }
+
+        public Criteria andApplicationIdLikeInsensitive(String value) {
+            addCriterion("upper(application_id) like", value.toUpperCase(), "applicationId");
+            return (Criteria) this;
+        }
+
+        public Criteria andValidFlagLikeInsensitive(String value) {
+            addCriterion("upper(valid_flag) like", value.toUpperCase(), "validFlag");
+            return (Criteria) this;
+        }
+
+        public Criteria andCompanyIdLikeInsensitive(String value) {
+            addCriterion("upper(company_id) like", value.toUpperCase(), "companyId");
+            return (Criteria) this;
+        }
+    }
+
+    public static class Criteria extends GeneratedCriteria {
+        protected Criteria() {
+            super();
+        }
+    }
+
+    public static class Criterion {
+        private String condition;
+
+        private Object value;
+
+        private Object secondValue;
+
+        private boolean noValue;
+
+        private boolean singleValue;
+
+        private boolean betweenValue;
+
+        private boolean listValue;
+
+        private String typeHandler;
+
+        public String getCondition() {
+            return condition;
+        }
+
+        public Object getValue() {
+            return value;
+        }
+
+        public Object getSecondValue() {
+            return secondValue;
+        }
+
+        public boolean isNoValue() {
+            return noValue;
+        }
+
+        public boolean isSingleValue() {
+            return singleValue;
+        }
+
+        public boolean isBetweenValue() {
+            return betweenValue;
+        }
+
+        public boolean isListValue() {
+            return listValue;
+        }
+
+        public String getTypeHandler() {
+            return typeHandler;
+        }
+
+        protected Criterion(String condition) {
+            super();
+            this.condition = condition;
+            this.typeHandler = null;
+            this.noValue = true;
+        }
+
+        protected Criterion(String condition, Object value, String typeHandler) {
+            super();
+            this.condition = condition;
+            this.value = value;
+            this.typeHandler = typeHandler;
+            if (value instanceof List<?>) {
+                this.listValue = true;
+            } else {
+                this.singleValue = true;
+            }
+        }
+
+        protected Criterion(String condition, Object value) {
+            this(condition, value, null);
+        }
+
+        protected Criterion(String condition, Object value, Object secondValue, String typeHandler) {
+            super();
+            this.condition = condition;
+            this.value = value;
+            this.secondValue = secondValue;
+            this.typeHandler = typeHandler;
+            this.betweenValue = true;
+        }
+
+        protected Criterion(String condition, Object value, Object secondValue) {
+            this(condition, value, secondValue, null);
+        }
+    }
+}

+ 112 - 0
pdf-tech-core/src/main/java/cn/kdan/pdf/tech/core/model/DirectorySync.java

@@ -0,0 +1,112 @@
+package cn.kdan.pdf.tech.core.model;
+
+import java.io.Serializable;
+import java.util.Date;
+
+public class DirectorySync implements Serializable {
+    private String directorySyncId;
+
+    private String status;
+
+    private Date syncTime;
+
+    private String directoryId;
+
+    private static final long serialVersionUID = 1L;
+
+    public String getDirectorySyncId() {
+        return directorySyncId;
+    }
+
+    public DirectorySync withDirectorySyncId(String directorySyncId) {
+        this.setDirectorySyncId(directorySyncId);
+        return this;
+    }
+
+    public void setDirectorySyncId(String directorySyncId) {
+        this.directorySyncId = directorySyncId;
+    }
+
+    public String getStatus() {
+        return status;
+    }
+
+    public DirectorySync withStatus(String status) {
+        this.setStatus(status);
+        return this;
+    }
+
+    public void setStatus(String status) {
+        this.status = status;
+    }
+
+    public Date getSyncTime() {
+        return syncTime;
+    }
+
+    public DirectorySync withSyncTime(Date syncTime) {
+        this.setSyncTime(syncTime);
+        return this;
+    }
+
+    public void setSyncTime(Date syncTime) {
+        this.syncTime = syncTime;
+    }
+
+    public String getDirectoryId() {
+        return directoryId;
+    }
+
+    public DirectorySync withDirectoryId(String directoryId) {
+        this.setDirectoryId(directoryId);
+        return this;
+    }
+
+    public void setDirectoryId(String directoryId) {
+        this.directoryId = directoryId;
+    }
+
+    @Override
+    public boolean equals(Object that) {
+        if (this == that) {
+            return true;
+        }
+        if (that == null) {
+            return false;
+        }
+        if (getClass() != that.getClass()) {
+            return false;
+        }
+        DirectorySync other = (DirectorySync) that;
+        return (this.getDirectorySyncId() == null ? other.getDirectorySyncId() == null : this.getDirectorySyncId().equals(other.getDirectorySyncId()))
+            && (this.getStatus() == null ? other.getStatus() == null : this.getStatus().equals(other.getStatus()))
+            && (this.getSyncTime() == null ? other.getSyncTime() == null : this.getSyncTime().equals(other.getSyncTime()))
+            && (this.getDirectoryId() == null ? other.getDirectoryId() == null : this.getDirectoryId().equals(other.getDirectoryId()));
+    }
+
+    @Override
+    public int hashCode() {
+        final int prime = 31;
+        int result = 1;
+        result = prime * result + ((getDirectorySyncId() == null) ? 0 : getDirectorySyncId().hashCode());
+        result = prime * result + ((getStatus() == null) ? 0 : getStatus().hashCode());
+        result = prime * result + ((getSyncTime() == null) ? 0 : getSyncTime().hashCode());
+        result = prime * result + ((getDirectoryId() == null) ? 0 : getDirectoryId().hashCode());
+        return result;
+    }
+
+    @Override
+    public String toString() {
+        StringBuilder sb = new StringBuilder();
+        sb.append(getClass().getSimpleName());
+        sb.append(" [");
+        sb.append("Hash = ").append(hashCode());
+        sb.append(", directorySyncId=").append(directorySyncId);
+        sb.append(", status=").append(status);
+        sb.append(", syncTime=").append(syncTime);
+        sb.append(", directoryId=").append(directoryId);
+        sb.append(", serialVersionUID=").append(serialVersionUID);
+        sb.append("]");
+        return sb.toString();
+    }
+}

+ 485 - 0
pdf-tech-core/src/main/java/cn/kdan/pdf/tech/core/model/DirectorySyncExample.java

@@ -0,0 +1,485 @@
+package cn.kdan.pdf.tech.core.model;
+
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.List;
+
+public class DirectorySyncExample {
+    protected String orderByClause;
+
+    protected boolean distinct;
+
+    protected List<Criteria> oredCriteria;
+
+    public DirectorySyncExample() {
+        oredCriteria = new ArrayList<>();
+    }
+
+    public void setOrderByClause(String orderByClause) {
+        this.orderByClause = orderByClause;
+    }
+
+    public String getOrderByClause() {
+        return orderByClause;
+    }
+
+    public void setDistinct(boolean distinct) {
+        this.distinct = distinct;
+    }
+
+    public boolean isDistinct() {
+        return distinct;
+    }
+
+    public List<Criteria> getOredCriteria() {
+        return oredCriteria;
+    }
+
+    public void or(Criteria criteria) {
+        oredCriteria.add(criteria);
+    }
+
+    public Criteria or() {
+        Criteria criteria = createCriteriaInternal();
+        oredCriteria.add(criteria);
+        return criteria;
+    }
+
+    public Criteria createCriteria() {
+        Criteria criteria = createCriteriaInternal();
+        if (oredCriteria.size() == 0) {
+            oredCriteria.add(criteria);
+        }
+        return criteria;
+    }
+
+    protected Criteria createCriteriaInternal() {
+        Criteria criteria = new Criteria();
+        return criteria;
+    }
+
+    public void clear() {
+        oredCriteria.clear();
+        orderByClause = null;
+        distinct = false;
+    }
+
+    protected abstract static class GeneratedCriteria {
+        protected List<Criterion> criteria;
+
+        protected GeneratedCriteria() {
+            super();
+            criteria = new ArrayList<>();
+        }
+
+        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 andDirectorySyncIdIsNull() {
+            addCriterion("directory_sync_id is null");
+            return (Criteria) this;
+        }
+
+        public Criteria andDirectorySyncIdIsNotNull() {
+            addCriterion("directory_sync_id is not null");
+            return (Criteria) this;
+        }
+
+        public Criteria andDirectorySyncIdEqualTo(String value) {
+            addCriterion("directory_sync_id =", value, "directorySyncId");
+            return (Criteria) this;
+        }
+
+        public Criteria andDirectorySyncIdNotEqualTo(String value) {
+            addCriterion("directory_sync_id <>", value, "directorySyncId");
+            return (Criteria) this;
+        }
+
+        public Criteria andDirectorySyncIdGreaterThan(String value) {
+            addCriterion("directory_sync_id >", value, "directorySyncId");
+            return (Criteria) this;
+        }
+
+        public Criteria andDirectorySyncIdGreaterThanOrEqualTo(String value) {
+            addCriterion("directory_sync_id >=", value, "directorySyncId");
+            return (Criteria) this;
+        }
+
+        public Criteria andDirectorySyncIdLessThan(String value) {
+            addCriterion("directory_sync_id <", value, "directorySyncId");
+            return (Criteria) this;
+        }
+
+        public Criteria andDirectorySyncIdLessThanOrEqualTo(String value) {
+            addCriterion("directory_sync_id <=", value, "directorySyncId");
+            return (Criteria) this;
+        }
+
+        public Criteria andDirectorySyncIdLike(String value) {
+            addCriterion("directory_sync_id like", value, "directorySyncId");
+            return (Criteria) this;
+        }
+
+        public Criteria andDirectorySyncIdNotLike(String value) {
+            addCriterion("directory_sync_id not like", value, "directorySyncId");
+            return (Criteria) this;
+        }
+
+        public Criteria andDirectorySyncIdIn(List<String> values) {
+            addCriterion("directory_sync_id in", values, "directorySyncId");
+            return (Criteria) this;
+        }
+
+        public Criteria andDirectorySyncIdNotIn(List<String> values) {
+            addCriterion("directory_sync_id not in", values, "directorySyncId");
+            return (Criteria) this;
+        }
+
+        public Criteria andDirectorySyncIdBetween(String value1, String value2) {
+            addCriterion("directory_sync_id between", value1, value2, "directorySyncId");
+            return (Criteria) this;
+        }
+
+        public Criteria andDirectorySyncIdNotBetween(String value1, String value2) {
+            addCriterion("directory_sync_id not between", value1, value2, "directorySyncId");
+            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 andStatusNotEqualTo(String value) {
+            addCriterion("`status` <>", value, "status");
+            return (Criteria) this;
+        }
+
+        public Criteria andStatusGreaterThan(String value) {
+            addCriterion("`status` >", value, "status");
+            return (Criteria) this;
+        }
+
+        public Criteria andStatusGreaterThanOrEqualTo(String value) {
+            addCriterion("`status` >=", value, "status");
+            return (Criteria) this;
+        }
+
+        public Criteria andStatusLessThan(String value) {
+            addCriterion("`status` <", value, "status");
+            return (Criteria) this;
+        }
+
+        public Criteria andStatusLessThanOrEqualTo(String value) {
+            addCriterion("`status` <=", value, "status");
+            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 andSyncTimeIsNull() {
+            addCriterion("sync_time is null");
+            return (Criteria) this;
+        }
+
+        public Criteria andSyncTimeIsNotNull() {
+            addCriterion("sync_time is not null");
+            return (Criteria) this;
+        }
+
+        public Criteria andSyncTimeEqualTo(Date value) {
+            addCriterion("sync_time =", value, "syncTime");
+            return (Criteria) this;
+        }
+
+        public Criteria andSyncTimeNotEqualTo(Date value) {
+            addCriterion("sync_time <>", value, "syncTime");
+            return (Criteria) this;
+        }
+
+        public Criteria andSyncTimeGreaterThan(Date value) {
+            addCriterion("sync_time >", value, "syncTime");
+            return (Criteria) this;
+        }
+
+        public Criteria andSyncTimeGreaterThanOrEqualTo(Date value) {
+            addCriterion("sync_time >=", value, "syncTime");
+            return (Criteria) this;
+        }
+
+        public Criteria andSyncTimeLessThan(Date value) {
+            addCriterion("sync_time <", value, "syncTime");
+            return (Criteria) this;
+        }
+
+        public Criteria andSyncTimeLessThanOrEqualTo(Date value) {
+            addCriterion("sync_time <=", value, "syncTime");
+            return (Criteria) this;
+        }
+
+        public Criteria andSyncTimeIn(List<Date> values) {
+            addCriterion("sync_time in", values, "syncTime");
+            return (Criteria) this;
+        }
+
+        public Criteria andSyncTimeNotIn(List<Date> values) {
+            addCriterion("sync_time not in", values, "syncTime");
+            return (Criteria) this;
+        }
+
+        public Criteria andSyncTimeBetween(Date value1, Date value2) {
+            addCriterion("sync_time between", value1, value2, "syncTime");
+            return (Criteria) this;
+        }
+
+        public Criteria andSyncTimeNotBetween(Date value1, Date value2) {
+            addCriterion("sync_time not between", value1, value2, "syncTime");
+            return (Criteria) this;
+        }
+
+        public Criteria andDirectoryIdIsNull() {
+            addCriterion("directory_id is null");
+            return (Criteria) this;
+        }
+
+        public Criteria andDirectoryIdIsNotNull() {
+            addCriterion("directory_id is not null");
+            return (Criteria) this;
+        }
+
+        public Criteria andDirectoryIdEqualTo(String value) {
+            addCriterion("directory_id =", value, "directoryId");
+            return (Criteria) this;
+        }
+
+        public Criteria andDirectoryIdNotEqualTo(String value) {
+            addCriterion("directory_id <>", value, "directoryId");
+            return (Criteria) this;
+        }
+
+        public Criteria andDirectoryIdGreaterThan(String value) {
+            addCriterion("directory_id >", value, "directoryId");
+            return (Criteria) this;
+        }
+
+        public Criteria andDirectoryIdGreaterThanOrEqualTo(String value) {
+            addCriterion("directory_id >=", value, "directoryId");
+            return (Criteria) this;
+        }
+
+        public Criteria andDirectoryIdLessThan(String value) {
+            addCriterion("directory_id <", value, "directoryId");
+            return (Criteria) this;
+        }
+
+        public Criteria andDirectoryIdLessThanOrEqualTo(String value) {
+            addCriterion("directory_id <=", value, "directoryId");
+            return (Criteria) this;
+        }
+
+        public Criteria andDirectoryIdLike(String value) {
+            addCriterion("directory_id like", value, "directoryId");
+            return (Criteria) this;
+        }
+
+        public Criteria andDirectoryIdNotLike(String value) {
+            addCriterion("directory_id not like", value, "directoryId");
+            return (Criteria) this;
+        }
+
+        public Criteria andDirectoryIdIn(List<String> values) {
+            addCriterion("directory_id in", values, "directoryId");
+            return (Criteria) this;
+        }
+
+        public Criteria andDirectoryIdNotIn(List<String> values) {
+            addCriterion("directory_id not in", values, "directoryId");
+            return (Criteria) this;
+        }
+
+        public Criteria andDirectoryIdBetween(String value1, String value2) {
+            addCriterion("directory_id between", value1, value2, "directoryId");
+            return (Criteria) this;
+        }
+
+        public Criteria andDirectoryIdNotBetween(String value1, String value2) {
+            addCriterion("directory_id not between", value1, value2, "directoryId");
+            return (Criteria) this;
+        }
+
+        public Criteria andDirectorySyncIdLikeInsensitive(String value) {
+            addCriterion("upper(directory_sync_id) like", value.toUpperCase(), "directorySyncId");
+            return (Criteria) this;
+        }
+
+        public Criteria andStatusLikeInsensitive(String value) {
+            addCriterion("upper(`status`) like", value.toUpperCase(), "status");
+            return (Criteria) this;
+        }
+
+        public Criteria andDirectoryIdLikeInsensitive(String value) {
+            addCriterion("upper(directory_id) like", value.toUpperCase(), "directoryId");
+            return (Criteria) this;
+        }
+    }
+
+    public static class Criteria extends GeneratedCriteria {
+        protected Criteria() {
+            super();
+        }
+    }
+
+    public static class Criterion {
+        private String condition;
+
+        private Object value;
+
+        private Object secondValue;
+
+        private boolean noValue;
+
+        private boolean singleValue;
+
+        private boolean betweenValue;
+
+        private boolean listValue;
+
+        private String typeHandler;
+
+        public String getCondition() {
+            return condition;
+        }
+
+        public Object getValue() {
+            return value;
+        }
+
+        public Object getSecondValue() {
+            return secondValue;
+        }
+
+        public boolean isNoValue() {
+            return noValue;
+        }
+
+        public boolean isSingleValue() {
+            return singleValue;
+        }
+
+        public boolean isBetweenValue() {
+            return betweenValue;
+        }
+
+        public boolean isListValue() {
+            return listValue;
+        }
+
+        public String getTypeHandler() {
+            return typeHandler;
+        }
+
+        protected Criterion(String condition) {
+            super();
+            this.condition = condition;
+            this.typeHandler = null;
+            this.noValue = true;
+        }
+
+        protected Criterion(String condition, Object value, String typeHandler) {
+            super();
+            this.condition = condition;
+            this.value = value;
+            this.typeHandler = typeHandler;
+            if (value instanceof List<?>) {
+                this.listValue = true;
+            } else {
+                this.singleValue = true;
+            }
+        }
+
+        protected Criterion(String condition, Object value) {
+            this(condition, value, null);
+        }
+
+        protected Criterion(String condition, Object value, Object secondValue, String typeHandler) {
+            super();
+            this.condition = condition;
+            this.value = value;
+            this.secondValue = secondValue;
+            this.typeHandler = typeHandler;
+            this.betweenValue = true;
+        }
+
+        protected Criterion(String condition, Object value, Object secondValue) {
+            this(condition, value, secondValue, null);
+        }
+    }
+}

+ 238 - 0
pdf-tech-core/src/main/java/cn/kdan/pdf/tech/core/model/Domain.java

@@ -0,0 +1,238 @@
+package cn.kdan.pdf.tech.core.model;
+
+import java.io.Serializable;
+import java.util.Date;
+
+public class Domain implements Serializable {
+    private String domainId;
+
+    private String domain;
+
+    private String verifyType;
+
+    private String verified;
+
+    private String status;
+
+    private String used;
+
+    private String directoryId;
+
+    private Date createTime;
+
+    private Date updateTime;
+
+    private String validFlag;
+
+    private String companyId;
+
+    private static final long serialVersionUID = 1L;
+
+    public String getDomainId() {
+        return domainId;
+    }
+
+    public Domain withDomainId(String domainId) {
+        this.setDomainId(domainId);
+        return this;
+    }
+
+    public void setDomainId(String domainId) {
+        this.domainId = domainId;
+    }
+
+    public String getDomain() {
+        return domain;
+    }
+
+    public Domain withDomain(String domain) {
+        this.setDomain(domain);
+        return this;
+    }
+
+    public void setDomain(String domain) {
+        this.domain = domain;
+    }
+
+    public String getVerifyType() {
+        return verifyType;
+    }
+
+    public Domain withVerifyType(String verifyType) {
+        this.setVerifyType(verifyType);
+        return this;
+    }
+
+    public void setVerifyType(String verifyType) {
+        this.verifyType = verifyType;
+    }
+
+    public String getVerified() {
+        return verified;
+    }
+
+    public Domain withVerified(String verified) {
+        this.setVerified(verified);
+        return this;
+    }
+
+    public void setVerified(String verified) {
+        this.verified = verified;
+    }
+
+    public String getStatus() {
+        return status;
+    }
+
+    public Domain withStatus(String status) {
+        this.setStatus(status);
+        return this;
+    }
+
+    public void setStatus(String status) {
+        this.status = status;
+    }
+
+    public String getUsed() {
+        return used;
+    }
+
+    public Domain withUsed(String used) {
+        this.setUsed(used);
+        return this;
+    }
+
+    public void setUsed(String used) {
+        this.used = used;
+    }
+
+    public String getDirectoryId() {
+        return directoryId;
+    }
+
+    public Domain withDirectoryId(String directoryId) {
+        this.setDirectoryId(directoryId);
+        return this;
+    }
+
+    public void setDirectoryId(String directoryId) {
+        this.directoryId = directoryId;
+    }
+
+    public Date getCreateTime() {
+        return createTime;
+    }
+
+    public Domain withCreateTime(Date createTime) {
+        this.setCreateTime(createTime);
+        return this;
+    }
+
+    public void setCreateTime(Date createTime) {
+        this.createTime = createTime;
+    }
+
+    public Date getUpdateTime() {
+        return updateTime;
+    }
+
+    public Domain withUpdateTime(Date updateTime) {
+        this.setUpdateTime(updateTime);
+        return this;
+    }
+
+    public void setUpdateTime(Date updateTime) {
+        this.updateTime = updateTime;
+    }
+
+    public String getValidFlag() {
+        return validFlag;
+    }
+
+    public Domain withValidFlag(String validFlag) {
+        this.setValidFlag(validFlag);
+        return this;
+    }
+
+    public void setValidFlag(String validFlag) {
+        this.validFlag = validFlag;
+    }
+
+    public String getCompanyId() {
+        return companyId;
+    }
+
+    public Domain withCompanyId(String companyId) {
+        this.setCompanyId(companyId);
+        return this;
+    }
+
+    public void setCompanyId(String companyId) {
+        this.companyId = companyId;
+    }
+
+    @Override
+    public boolean equals(Object that) {
+        if (this == that) {
+            return true;
+        }
+        if (that == null) {
+            return false;
+        }
+        if (getClass() != that.getClass()) {
+            return false;
+        }
+        Domain other = (Domain) that;
+        return (this.getDomainId() == null ? other.getDomainId() == null : this.getDomainId().equals(other.getDomainId()))
+            && (this.getDomain() == null ? other.getDomain() == null : this.getDomain().equals(other.getDomain()))
+            && (this.getVerifyType() == null ? other.getVerifyType() == null : this.getVerifyType().equals(other.getVerifyType()))
+            && (this.getVerified() == null ? other.getVerified() == null : this.getVerified().equals(other.getVerified()))
+            && (this.getStatus() == null ? other.getStatus() == null : this.getStatus().equals(other.getStatus()))
+            && (this.getUsed() == null ? other.getUsed() == null : this.getUsed().equals(other.getUsed()))
+            && (this.getDirectoryId() == null ? other.getDirectoryId() == null : this.getDirectoryId().equals(other.getDirectoryId()))
+            && (this.getCreateTime() == null ? other.getCreateTime() == null : this.getCreateTime().equals(other.getCreateTime()))
+            && (this.getUpdateTime() == null ? other.getUpdateTime() == null : this.getUpdateTime().equals(other.getUpdateTime()))
+            && (this.getValidFlag() == null ? other.getValidFlag() == null : this.getValidFlag().equals(other.getValidFlag()))
+            && (this.getCompanyId() == null ? other.getCompanyId() == null : this.getCompanyId().equals(other.getCompanyId()));
+    }
+
+    @Override
+    public int hashCode() {
+        final int prime = 31;
+        int result = 1;
+        result = prime * result + ((getDomainId() == null) ? 0 : getDomainId().hashCode());
+        result = prime * result + ((getDomain() == null) ? 0 : getDomain().hashCode());
+        result = prime * result + ((getVerifyType() == null) ? 0 : getVerifyType().hashCode());
+        result = prime * result + ((getVerified() == null) ? 0 : getVerified().hashCode());
+        result = prime * result + ((getStatus() == null) ? 0 : getStatus().hashCode());
+        result = prime * result + ((getUsed() == null) ? 0 : getUsed().hashCode());
+        result = prime * result + ((getDirectoryId() == null) ? 0 : getDirectoryId().hashCode());
+        result = prime * result + ((getCreateTime() == null) ? 0 : getCreateTime().hashCode());
+        result = prime * result + ((getUpdateTime() == null) ? 0 : getUpdateTime().hashCode());
+        result = prime * result + ((getValidFlag() == null) ? 0 : getValidFlag().hashCode());
+        result = prime * result + ((getCompanyId() == null) ? 0 : getCompanyId().hashCode());
+        return result;
+    }
+
+    @Override
+    public String toString() {
+        StringBuilder sb = new StringBuilder();
+        sb.append(getClass().getSimpleName());
+        sb.append(" [");
+        sb.append("Hash = ").append(hashCode());
+        sb.append(", domainId=").append(domainId);
+        sb.append(", domain=").append(domain);
+        sb.append(", verifyType=").append(verifyType);
+        sb.append(", verified=").append(verified);
+        sb.append(", status=").append(status);
+        sb.append(", used=").append(used);
+        sb.append(", directoryId=").append(directoryId);
+        sb.append(", createTime=").append(createTime);
+        sb.append(", updateTime=").append(updateTime);
+        sb.append(", validFlag=").append(validFlag);
+        sb.append(", companyId=").append(companyId);
+        sb.append(", serialVersionUID=").append(serialVersionUID);
+        sb.append("]");
+        return sb.toString();
+    }
+}

+ 995 - 0
pdf-tech-core/src/main/java/cn/kdan/pdf/tech/core/model/DomainExample.java

@@ -0,0 +1,995 @@
+package cn.kdan.pdf.tech.core.model;
+
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.List;
+
+public class DomainExample {
+    protected String orderByClause;
+
+    protected boolean distinct;
+
+    protected List<Criteria> oredCriteria;
+
+    public DomainExample() {
+        oredCriteria = new ArrayList<>();
+    }
+
+    public void setOrderByClause(String orderByClause) {
+        this.orderByClause = orderByClause;
+    }
+
+    public String getOrderByClause() {
+        return orderByClause;
+    }
+
+    public void setDistinct(boolean distinct) {
+        this.distinct = distinct;
+    }
+
+    public boolean isDistinct() {
+        return distinct;
+    }
+
+    public List<Criteria> getOredCriteria() {
+        return oredCriteria;
+    }
+
+    public void or(Criteria criteria) {
+        oredCriteria.add(criteria);
+    }
+
+    public Criteria or() {
+        Criteria criteria = createCriteriaInternal();
+        oredCriteria.add(criteria);
+        return criteria;
+    }
+
+    public Criteria createCriteria() {
+        Criteria criteria = createCriteriaInternal();
+        if (oredCriteria.size() == 0) {
+            oredCriteria.add(criteria);
+        }
+        return criteria;
+    }
+
+    protected Criteria createCriteriaInternal() {
+        Criteria criteria = new Criteria();
+        return criteria;
+    }
+
+    public void clear() {
+        oredCriteria.clear();
+        orderByClause = null;
+        distinct = false;
+    }
+
+    protected abstract static class GeneratedCriteria {
+        protected List<Criterion> criteria;
+
+        protected GeneratedCriteria() {
+            super();
+            criteria = new ArrayList<>();
+        }
+
+        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 andDomainIdIsNull() {
+            addCriterion("domain_id is null");
+            return (Criteria) this;
+        }
+
+        public Criteria andDomainIdIsNotNull() {
+            addCriterion("domain_id is not null");
+            return (Criteria) this;
+        }
+
+        public Criteria andDomainIdEqualTo(String value) {
+            addCriterion("domain_id =", value, "domainId");
+            return (Criteria) this;
+        }
+
+        public Criteria andDomainIdNotEqualTo(String value) {
+            addCriterion("domain_id <>", value, "domainId");
+            return (Criteria) this;
+        }
+
+        public Criteria andDomainIdGreaterThan(String value) {
+            addCriterion("domain_id >", value, "domainId");
+            return (Criteria) this;
+        }
+
+        public Criteria andDomainIdGreaterThanOrEqualTo(String value) {
+            addCriterion("domain_id >=", value, "domainId");
+            return (Criteria) this;
+        }
+
+        public Criteria andDomainIdLessThan(String value) {
+            addCriterion("domain_id <", value, "domainId");
+            return (Criteria) this;
+        }
+
+        public Criteria andDomainIdLessThanOrEqualTo(String value) {
+            addCriterion("domain_id <=", value, "domainId");
+            return (Criteria) this;
+        }
+
+        public Criteria andDomainIdLike(String value) {
+            addCriterion("domain_id like", value, "domainId");
+            return (Criteria) this;
+        }
+
+        public Criteria andDomainIdNotLike(String value) {
+            addCriterion("domain_id not like", value, "domainId");
+            return (Criteria) this;
+        }
+
+        public Criteria andDomainIdIn(List<String> values) {
+            addCriterion("domain_id in", values, "domainId");
+            return (Criteria) this;
+        }
+
+        public Criteria andDomainIdNotIn(List<String> values) {
+            addCriterion("domain_id not in", values, "domainId");
+            return (Criteria) this;
+        }
+
+        public Criteria andDomainIdBetween(String value1, String value2) {
+            addCriterion("domain_id between", value1, value2, "domainId");
+            return (Criteria) this;
+        }
+
+        public Criteria andDomainIdNotBetween(String value1, String value2) {
+            addCriterion("domain_id not between", value1, value2, "domainId");
+            return (Criteria) this;
+        }
+
+        public Criteria andDomainIsNull() {
+            addCriterion("`domain` is null");
+            return (Criteria) this;
+        }
+
+        public Criteria andDomainIsNotNull() {
+            addCriterion("`domain` is not null");
+            return (Criteria) this;
+        }
+
+        public Criteria andDomainEqualTo(String value) {
+            addCriterion("`domain` =", value, "domain");
+            return (Criteria) this;
+        }
+
+        public Criteria andDomainNotEqualTo(String value) {
+            addCriterion("`domain` <>", value, "domain");
+            return (Criteria) this;
+        }
+
+        public Criteria andDomainGreaterThan(String value) {
+            addCriterion("`domain` >", value, "domain");
+            return (Criteria) this;
+        }
+
+        public Criteria andDomainGreaterThanOrEqualTo(String value) {
+            addCriterion("`domain` >=", value, "domain");
+            return (Criteria) this;
+        }
+
+        public Criteria andDomainLessThan(String value) {
+            addCriterion("`domain` <", value, "domain");
+            return (Criteria) this;
+        }
+
+        public Criteria andDomainLessThanOrEqualTo(String value) {
+            addCriterion("`domain` <=", value, "domain");
+            return (Criteria) this;
+        }
+
+        public Criteria andDomainLike(String value) {
+            addCriterion("`domain` like", value, "domain");
+            return (Criteria) this;
+        }
+
+        public Criteria andDomainNotLike(String value) {
+            addCriterion("`domain` not like", value, "domain");
+            return (Criteria) this;
+        }
+
+        public Criteria andDomainIn(List<String> values) {
+            addCriterion("`domain` in", values, "domain");
+            return (Criteria) this;
+        }
+
+        public Criteria andDomainNotIn(List<String> values) {
+            addCriterion("`domain` not in", values, "domain");
+            return (Criteria) this;
+        }
+
+        public Criteria andDomainBetween(String value1, String value2) {
+            addCriterion("`domain` between", value1, value2, "domain");
+            return (Criteria) this;
+        }
+
+        public Criteria andDomainNotBetween(String value1, String value2) {
+            addCriterion("`domain` not between", value1, value2, "domain");
+            return (Criteria) this;
+        }
+
+        public Criteria andVerifyTypeIsNull() {
+            addCriterion("verify_type is null");
+            return (Criteria) this;
+        }
+
+        public Criteria andVerifyTypeIsNotNull() {
+            addCriterion("verify_type is not null");
+            return (Criteria) this;
+        }
+
+        public Criteria andVerifyTypeEqualTo(String value) {
+            addCriterion("verify_type =", value, "verifyType");
+            return (Criteria) this;
+        }
+
+        public Criteria andVerifyTypeNotEqualTo(String value) {
+            addCriterion("verify_type <>", value, "verifyType");
+            return (Criteria) this;
+        }
+
+        public Criteria andVerifyTypeGreaterThan(String value) {
+            addCriterion("verify_type >", value, "verifyType");
+            return (Criteria) this;
+        }
+
+        public Criteria andVerifyTypeGreaterThanOrEqualTo(String value) {
+            addCriterion("verify_type >=", value, "verifyType");
+            return (Criteria) this;
+        }
+
+        public Criteria andVerifyTypeLessThan(String value) {
+            addCriterion("verify_type <", value, "verifyType");
+            return (Criteria) this;
+        }
+
+        public Criteria andVerifyTypeLessThanOrEqualTo(String value) {
+            addCriterion("verify_type <=", value, "verifyType");
+            return (Criteria) this;
+        }
+
+        public Criteria andVerifyTypeLike(String value) {
+            addCriterion("verify_type like", value, "verifyType");
+            return (Criteria) this;
+        }
+
+        public Criteria andVerifyTypeNotLike(String value) {
+            addCriterion("verify_type not like", value, "verifyType");
+            return (Criteria) this;
+        }
+
+        public Criteria andVerifyTypeIn(List<String> values) {
+            addCriterion("verify_type in", values, "verifyType");
+            return (Criteria) this;
+        }
+
+        public Criteria andVerifyTypeNotIn(List<String> values) {
+            addCriterion("verify_type not in", values, "verifyType");
+            return (Criteria) this;
+        }
+
+        public Criteria andVerifyTypeBetween(String value1, String value2) {
+            addCriterion("verify_type between", value1, value2, "verifyType");
+            return (Criteria) this;
+        }
+
+        public Criteria andVerifyTypeNotBetween(String value1, String value2) {
+            addCriterion("verify_type not between", value1, value2, "verifyType");
+            return (Criteria) this;
+        }
+
+        public Criteria andVerifiedIsNull() {
+            addCriterion("verified is null");
+            return (Criteria) this;
+        }
+
+        public Criteria andVerifiedIsNotNull() {
+            addCriterion("verified is not null");
+            return (Criteria) this;
+        }
+
+        public Criteria andVerifiedEqualTo(String value) {
+            addCriterion("verified =", value, "verified");
+            return (Criteria) this;
+        }
+
+        public Criteria andVerifiedNotEqualTo(String value) {
+            addCriterion("verified <>", value, "verified");
+            return (Criteria) this;
+        }
+
+        public Criteria andVerifiedGreaterThan(String value) {
+            addCriterion("verified >", value, "verified");
+            return (Criteria) this;
+        }
+
+        public Criteria andVerifiedGreaterThanOrEqualTo(String value) {
+            addCriterion("verified >=", value, "verified");
+            return (Criteria) this;
+        }
+
+        public Criteria andVerifiedLessThan(String value) {
+            addCriterion("verified <", value, "verified");
+            return (Criteria) this;
+        }
+
+        public Criteria andVerifiedLessThanOrEqualTo(String value) {
+            addCriterion("verified <=", value, "verified");
+            return (Criteria) this;
+        }
+
+        public Criteria andVerifiedLike(String value) {
+            addCriterion("verified like", value, "verified");
+            return (Criteria) this;
+        }
+
+        public Criteria andVerifiedNotLike(String value) {
+            addCriterion("verified not like", value, "verified");
+            return (Criteria) this;
+        }
+
+        public Criteria andVerifiedIn(List<String> values) {
+            addCriterion("verified in", values, "verified");
+            return (Criteria) this;
+        }
+
+        public Criteria andVerifiedNotIn(List<String> values) {
+            addCriterion("verified not in", values, "verified");
+            return (Criteria) this;
+        }
+
+        public Criteria andVerifiedBetween(String value1, String value2) {
+            addCriterion("verified between", value1, value2, "verified");
+            return (Criteria) this;
+        }
+
+        public Criteria andVerifiedNotBetween(String value1, String value2) {
+            addCriterion("verified not between", value1, value2, "verified");
+            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 andStatusNotEqualTo(String value) {
+            addCriterion("`status` <>", value, "status");
+            return (Criteria) this;
+        }
+
+        public Criteria andStatusGreaterThan(String value) {
+            addCriterion("`status` >", value, "status");
+            return (Criteria) this;
+        }
+
+        public Criteria andStatusGreaterThanOrEqualTo(String value) {
+            addCriterion("`status` >=", value, "status");
+            return (Criteria) this;
+        }
+
+        public Criteria andStatusLessThan(String value) {
+            addCriterion("`status` <", value, "status");
+            return (Criteria) this;
+        }
+
+        public Criteria andStatusLessThanOrEqualTo(String value) {
+            addCriterion("`status` <=", value, "status");
+            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 andUsedIsNull() {
+            addCriterion("used is null");
+            return (Criteria) this;
+        }
+
+        public Criteria andUsedIsNotNull() {
+            addCriterion("used is not null");
+            return (Criteria) this;
+        }
+
+        public Criteria andUsedEqualTo(String value) {
+            addCriterion("used =", value, "used");
+            return (Criteria) this;
+        }
+
+        public Criteria andUsedNotEqualTo(String value) {
+            addCriterion("used <>", value, "used");
+            return (Criteria) this;
+        }
+
+        public Criteria andUsedGreaterThan(String value) {
+            addCriterion("used >", value, "used");
+            return (Criteria) this;
+        }
+
+        public Criteria andUsedGreaterThanOrEqualTo(String value) {
+            addCriterion("used >=", value, "used");
+            return (Criteria) this;
+        }
+
+        public Criteria andUsedLessThan(String value) {
+            addCriterion("used <", value, "used");
+            return (Criteria) this;
+        }
+
+        public Criteria andUsedLessThanOrEqualTo(String value) {
+            addCriterion("used <=", value, "used");
+            return (Criteria) this;
+        }
+
+        public Criteria andUsedLike(String value) {
+            addCriterion("used like", value, "used");
+            return (Criteria) this;
+        }
+
+        public Criteria andUsedNotLike(String value) {
+            addCriterion("used not like", value, "used");
+            return (Criteria) this;
+        }
+
+        public Criteria andUsedIn(List<String> values) {
+            addCriterion("used in", values, "used");
+            return (Criteria) this;
+        }
+
+        public Criteria andUsedNotIn(List<String> values) {
+            addCriterion("used not in", values, "used");
+            return (Criteria) this;
+        }
+
+        public Criteria andUsedBetween(String value1, String value2) {
+            addCriterion("used between", value1, value2, "used");
+            return (Criteria) this;
+        }
+
+        public Criteria andUsedNotBetween(String value1, String value2) {
+            addCriterion("used not between", value1, value2, "used");
+            return (Criteria) this;
+        }
+
+        public Criteria andDirectoryIdIsNull() {
+            addCriterion("directory_id is null");
+            return (Criteria) this;
+        }
+
+        public Criteria andDirectoryIdIsNotNull() {
+            addCriterion("directory_id is not null");
+            return (Criteria) this;
+        }
+
+        public Criteria andDirectoryIdEqualTo(String value) {
+            addCriterion("directory_id =", value, "directoryId");
+            return (Criteria) this;
+        }
+
+        public Criteria andDirectoryIdNotEqualTo(String value) {
+            addCriterion("directory_id <>", value, "directoryId");
+            return (Criteria) this;
+        }
+
+        public Criteria andDirectoryIdGreaterThan(String value) {
+            addCriterion("directory_id >", value, "directoryId");
+            return (Criteria) this;
+        }
+
+        public Criteria andDirectoryIdGreaterThanOrEqualTo(String value) {
+            addCriterion("directory_id >=", value, "directoryId");
+            return (Criteria) this;
+        }
+
+        public Criteria andDirectoryIdLessThan(String value) {
+            addCriterion("directory_id <", value, "directoryId");
+            return (Criteria) this;
+        }
+
+        public Criteria andDirectoryIdLessThanOrEqualTo(String value) {
+            addCriterion("directory_id <=", value, "directoryId");
+            return (Criteria) this;
+        }
+
+        public Criteria andDirectoryIdLike(String value) {
+            addCriterion("directory_id like", value, "directoryId");
+            return (Criteria) this;
+        }
+
+        public Criteria andDirectoryIdNotLike(String value) {
+            addCriterion("directory_id not like", value, "directoryId");
+            return (Criteria) this;
+        }
+
+        public Criteria andDirectoryIdIn(List<String> values) {
+            addCriterion("directory_id in", values, "directoryId");
+            return (Criteria) this;
+        }
+
+        public Criteria andDirectoryIdNotIn(List<String> values) {
+            addCriterion("directory_id not in", values, "directoryId");
+            return (Criteria) this;
+        }
+
+        public Criteria andDirectoryIdBetween(String value1, String value2) {
+            addCriterion("directory_id between", value1, value2, "directoryId");
+            return (Criteria) this;
+        }
+
+        public Criteria andDirectoryIdNotBetween(String value1, String value2) {
+            addCriterion("directory_id not between", value1, value2, "directoryId");
+            return (Criteria) this;
+        }
+
+        public Criteria andCreateTimeIsNull() {
+            addCriterion("create_time is null");
+            return (Criteria) this;
+        }
+
+        public Criteria andCreateTimeIsNotNull() {
+            addCriterion("create_time is not null");
+            return (Criteria) this;
+        }
+
+        public Criteria andCreateTimeEqualTo(Date value) {
+            addCriterion("create_time =", value, "createTime");
+            return (Criteria) this;
+        }
+
+        public Criteria andCreateTimeNotEqualTo(Date value) {
+            addCriterion("create_time <>", value, "createTime");
+            return (Criteria) this;
+        }
+
+        public Criteria andCreateTimeGreaterThan(Date value) {
+            addCriterion("create_time >", value, "createTime");
+            return (Criteria) this;
+        }
+
+        public Criteria andCreateTimeGreaterThanOrEqualTo(Date value) {
+            addCriterion("create_time >=", value, "createTime");
+            return (Criteria) this;
+        }
+
+        public Criteria andCreateTimeLessThan(Date value) {
+            addCriterion("create_time <", value, "createTime");
+            return (Criteria) this;
+        }
+
+        public Criteria andCreateTimeLessThanOrEqualTo(Date value) {
+            addCriterion("create_time <=", value, "createTime");
+            return (Criteria) this;
+        }
+
+        public Criteria andCreateTimeIn(List<Date> values) {
+            addCriterion("create_time in", values, "createTime");
+            return (Criteria) this;
+        }
+
+        public Criteria andCreateTimeNotIn(List<Date> values) {
+            addCriterion("create_time not in", values, "createTime");
+            return (Criteria) this;
+        }
+
+        public Criteria andCreateTimeBetween(Date value1, Date value2) {
+            addCriterion("create_time between", value1, value2, "createTime");
+            return (Criteria) this;
+        }
+
+        public Criteria andCreateTimeNotBetween(Date value1, Date value2) {
+            addCriterion("create_time not between", value1, value2, "createTime");
+            return (Criteria) this;
+        }
+
+        public Criteria andUpdateTimeIsNull() {
+            addCriterion("update_time is null");
+            return (Criteria) this;
+        }
+
+        public Criteria andUpdateTimeIsNotNull() {
+            addCriterion("update_time is not null");
+            return (Criteria) this;
+        }
+
+        public Criteria andUpdateTimeEqualTo(Date value) {
+            addCriterion("update_time =", value, "updateTime");
+            return (Criteria) this;
+        }
+
+        public Criteria andUpdateTimeNotEqualTo(Date value) {
+            addCriterion("update_time <>", value, "updateTime");
+            return (Criteria) this;
+        }
+
+        public Criteria andUpdateTimeGreaterThan(Date value) {
+            addCriterion("update_time >", value, "updateTime");
+            return (Criteria) this;
+        }
+
+        public Criteria andUpdateTimeGreaterThanOrEqualTo(Date value) {
+            addCriterion("update_time >=", value, "updateTime");
+            return (Criteria) this;
+        }
+
+        public Criteria andUpdateTimeLessThan(Date value) {
+            addCriterion("update_time <", value, "updateTime");
+            return (Criteria) this;
+        }
+
+        public Criteria andUpdateTimeLessThanOrEqualTo(Date value) {
+            addCriterion("update_time <=", value, "updateTime");
+            return (Criteria) this;
+        }
+
+        public Criteria andUpdateTimeIn(List<Date> values) {
+            addCriterion("update_time in", values, "updateTime");
+            return (Criteria) this;
+        }
+
+        public Criteria andUpdateTimeNotIn(List<Date> values) {
+            addCriterion("update_time not in", values, "updateTime");
+            return (Criteria) this;
+        }
+
+        public Criteria andUpdateTimeBetween(Date value1, Date value2) {
+            addCriterion("update_time between", value1, value2, "updateTime");
+            return (Criteria) this;
+        }
+
+        public Criteria andUpdateTimeNotBetween(Date value1, Date value2) {
+            addCriterion("update_time not between", value1, value2, "updateTime");
+            return (Criteria) this;
+        }
+
+        public Criteria andValidFlagIsNull() {
+            addCriterion("valid_flag is null");
+            return (Criteria) this;
+        }
+
+        public Criteria andValidFlagIsNotNull() {
+            addCriterion("valid_flag is not null");
+            return (Criteria) this;
+        }
+
+        public Criteria andValidFlagEqualTo(String value) {
+            addCriterion("valid_flag =", value, "validFlag");
+            return (Criteria) this;
+        }
+
+        public Criteria andValidFlagNotEqualTo(String value) {
+            addCriterion("valid_flag <>", value, "validFlag");
+            return (Criteria) this;
+        }
+
+        public Criteria andValidFlagGreaterThan(String value) {
+            addCriterion("valid_flag >", value, "validFlag");
+            return (Criteria) this;
+        }
+
+        public Criteria andValidFlagGreaterThanOrEqualTo(String value) {
+            addCriterion("valid_flag >=", value, "validFlag");
+            return (Criteria) this;
+        }
+
+        public Criteria andValidFlagLessThan(String value) {
+            addCriterion("valid_flag <", value, "validFlag");
+            return (Criteria) this;
+        }
+
+        public Criteria andValidFlagLessThanOrEqualTo(String value) {
+            addCriterion("valid_flag <=", value, "validFlag");
+            return (Criteria) this;
+        }
+
+        public Criteria andValidFlagLike(String value) {
+            addCriterion("valid_flag like", value, "validFlag");
+            return (Criteria) this;
+        }
+
+        public Criteria andValidFlagNotLike(String value) {
+            addCriterion("valid_flag not like", value, "validFlag");
+            return (Criteria) this;
+        }
+
+        public Criteria andValidFlagIn(List<String> values) {
+            addCriterion("valid_flag in", values, "validFlag");
+            return (Criteria) this;
+        }
+
+        public Criteria andValidFlagNotIn(List<String> values) {
+            addCriterion("valid_flag not in", values, "validFlag");
+            return (Criteria) this;
+        }
+
+        public Criteria andValidFlagBetween(String value1, String value2) {
+            addCriterion("valid_flag between", value1, value2, "validFlag");
+            return (Criteria) this;
+        }
+
+        public Criteria andValidFlagNotBetween(String value1, String value2) {
+            addCriterion("valid_flag not between", value1, value2, "validFlag");
+            return (Criteria) this;
+        }
+
+        public Criteria andCompanyIdIsNull() {
+            addCriterion("company_id is null");
+            return (Criteria) this;
+        }
+
+        public Criteria andCompanyIdIsNotNull() {
+            addCriterion("company_id is not null");
+            return (Criteria) this;
+        }
+
+        public Criteria andCompanyIdEqualTo(String value) {
+            addCriterion("company_id =", value, "companyId");
+            return (Criteria) this;
+        }
+
+        public Criteria andCompanyIdNotEqualTo(String value) {
+            addCriterion("company_id <>", value, "companyId");
+            return (Criteria) this;
+        }
+
+        public Criteria andCompanyIdGreaterThan(String value) {
+            addCriterion("company_id >", value, "companyId");
+            return (Criteria) this;
+        }
+
+        public Criteria andCompanyIdGreaterThanOrEqualTo(String value) {
+            addCriterion("company_id >=", value, "companyId");
+            return (Criteria) this;
+        }
+
+        public Criteria andCompanyIdLessThan(String value) {
+            addCriterion("company_id <", value, "companyId");
+            return (Criteria) this;
+        }
+
+        public Criteria andCompanyIdLessThanOrEqualTo(String value) {
+            addCriterion("company_id <=", value, "companyId");
+            return (Criteria) this;
+        }
+
+        public Criteria andCompanyIdLike(String value) {
+            addCriterion("company_id like", value, "companyId");
+            return (Criteria) this;
+        }
+
+        public Criteria andCompanyIdNotLike(String value) {
+            addCriterion("company_id not like", value, "companyId");
+            return (Criteria) this;
+        }
+
+        public Criteria andCompanyIdIn(List<String> values) {
+            addCriterion("company_id in", values, "companyId");
+            return (Criteria) this;
+        }
+
+        public Criteria andCompanyIdNotIn(List<String> values) {
+            addCriterion("company_id not in", values, "companyId");
+            return (Criteria) this;
+        }
+
+        public Criteria andCompanyIdBetween(String value1, String value2) {
+            addCriterion("company_id between", value1, value2, "companyId");
+            return (Criteria) this;
+        }
+
+        public Criteria andCompanyIdNotBetween(String value1, String value2) {
+            addCriterion("company_id not between", value1, value2, "companyId");
+            return (Criteria) this;
+        }
+
+        public Criteria andDomainIdLikeInsensitive(String value) {
+            addCriterion("upper(domain_id) like", value.toUpperCase(), "domainId");
+            return (Criteria) this;
+        }
+
+        public Criteria andDomainLikeInsensitive(String value) {
+            addCriterion("upper(`domain`) like", value.toUpperCase(), "domain");
+            return (Criteria) this;
+        }
+
+        public Criteria andVerifyTypeLikeInsensitive(String value) {
+            addCriterion("upper(verify_type) like", value.toUpperCase(), "verifyType");
+            return (Criteria) this;
+        }
+
+        public Criteria andVerifiedLikeInsensitive(String value) {
+            addCriterion("upper(verified) like", value.toUpperCase(), "verified");
+            return (Criteria) this;
+        }
+
+        public Criteria andStatusLikeInsensitive(String value) {
+            addCriterion("upper(`status`) like", value.toUpperCase(), "status");
+            return (Criteria) this;
+        }
+
+        public Criteria andUsedLikeInsensitive(String value) {
+            addCriterion("upper(used) like", value.toUpperCase(), "used");
+            return (Criteria) this;
+        }
+
+        public Criteria andDirectoryIdLikeInsensitive(String value) {
+            addCriterion("upper(directory_id) like", value.toUpperCase(), "directoryId");
+            return (Criteria) this;
+        }
+
+        public Criteria andValidFlagLikeInsensitive(String value) {
+            addCriterion("upper(valid_flag) like", value.toUpperCase(), "validFlag");
+            return (Criteria) this;
+        }
+
+        public Criteria andCompanyIdLikeInsensitive(String value) {
+            addCriterion("upper(company_id) like", value.toUpperCase(), "companyId");
+            return (Criteria) this;
+        }
+    }
+
+    public static class Criteria extends GeneratedCriteria {
+        protected Criteria() {
+            super();
+        }
+    }
+
+    public static class Criterion {
+        private String condition;
+
+        private Object value;
+
+        private Object secondValue;
+
+        private boolean noValue;
+
+        private boolean singleValue;
+
+        private boolean betweenValue;
+
+        private boolean listValue;
+
+        private String typeHandler;
+
+        public String getCondition() {
+            return condition;
+        }
+
+        public Object getValue() {
+            return value;
+        }
+
+        public Object getSecondValue() {
+            return secondValue;
+        }
+
+        public boolean isNoValue() {
+            return noValue;
+        }
+
+        public boolean isSingleValue() {
+            return singleValue;
+        }
+
+        public boolean isBetweenValue() {
+            return betweenValue;
+        }
+
+        public boolean isListValue() {
+            return listValue;
+        }
+
+        public String getTypeHandler() {
+            return typeHandler;
+        }
+
+        protected Criterion(String condition) {
+            super();
+            this.condition = condition;
+            this.typeHandler = null;
+            this.noValue = true;
+        }
+
+        protected Criterion(String condition, Object value, String typeHandler) {
+            super();
+            this.condition = condition;
+            this.value = value;
+            this.typeHandler = typeHandler;
+            if (value instanceof List<?>) {
+                this.listValue = true;
+            } else {
+                this.singleValue = true;
+            }
+        }
+
+        protected Criterion(String condition, Object value) {
+            this(condition, value, null);
+        }
+
+        protected Criterion(String condition, Object value, Object secondValue, String typeHandler) {
+            super();
+            this.condition = condition;
+            this.value = value;
+            this.secondValue = secondValue;
+            this.typeHandler = typeHandler;
+            this.betweenValue = true;
+        }
+
+        protected Criterion(String condition, Object value, Object secondValue) {
+            this(condition, value, secondValue, null);
+        }
+    }
+}

+ 165 - 0
pdf-tech-core/src/main/java/cn/kdan/pdf/tech/core/model/ScheduleSetting.java

@@ -0,0 +1,165 @@
+package cn.kdan.pdf.tech.core.model;
+
+import java.io.Serializable;
+
+public class ScheduleSetting implements Serializable {
+    private String scheduleSettingId;
+
+    private String type;
+
+    private String day;
+
+    private String month;
+
+    private String time;
+
+    private String timezone;
+
+    private String directoryId;
+
+    private static final long serialVersionUID = 1L;
+
+    public String getScheduleSettingId() {
+        return scheduleSettingId;
+    }
+
+    public ScheduleSetting withScheduleSettingId(String scheduleSettingId) {
+        this.setScheduleSettingId(scheduleSettingId);
+        return this;
+    }
+
+    public void setScheduleSettingId(String scheduleSettingId) {
+        this.scheduleSettingId = scheduleSettingId;
+    }
+
+    public String getType() {
+        return type;
+    }
+
+    public ScheduleSetting withType(String type) {
+        this.setType(type);
+        return this;
+    }
+
+    public void setType(String type) {
+        this.type = type;
+    }
+
+    public String getDay() {
+        return day;
+    }
+
+    public ScheduleSetting withDay(String day) {
+        this.setDay(day);
+        return this;
+    }
+
+    public void setDay(String day) {
+        this.day = day;
+    }
+
+    public String getMonth() {
+        return month;
+    }
+
+    public ScheduleSetting withMonth(String month) {
+        this.setMonth(month);
+        return this;
+    }
+
+    public void setMonth(String month) {
+        this.month = month;
+    }
+
+    public String getTime() {
+        return time;
+    }
+
+    public ScheduleSetting withTime(String time) {
+        this.setTime(time);
+        return this;
+    }
+
+    public void setTime(String time) {
+        this.time = time;
+    }
+
+    public String getTimezone() {
+        return timezone;
+    }
+
+    public ScheduleSetting withTimezone(String timezone) {
+        this.setTimezone(timezone);
+        return this;
+    }
+
+    public void setTimezone(String timezone) {
+        this.timezone = timezone;
+    }
+
+    public String getDirectoryId() {
+        return directoryId;
+    }
+
+    public ScheduleSetting withDirectoryId(String directoryId) {
+        this.setDirectoryId(directoryId);
+        return this;
+    }
+
+    public void setDirectoryId(String directoryId) {
+        this.directoryId = directoryId;
+    }
+
+    @Override
+    public boolean equals(Object that) {
+        if (this == that) {
+            return true;
+        }
+        if (that == null) {
+            return false;
+        }
+        if (getClass() != that.getClass()) {
+            return false;
+        }
+        ScheduleSetting other = (ScheduleSetting) that;
+        return (this.getScheduleSettingId() == null ? other.getScheduleSettingId() == null : this.getScheduleSettingId().equals(other.getScheduleSettingId()))
+            && (this.getType() == null ? other.getType() == null : this.getType().equals(other.getType()))
+            && (this.getDay() == null ? other.getDay() == null : this.getDay().equals(other.getDay()))
+            && (this.getMonth() == null ? other.getMonth() == null : this.getMonth().equals(other.getMonth()))
+            && (this.getTime() == null ? other.getTime() == null : this.getTime().equals(other.getTime()))
+            && (this.getTimezone() == null ? other.getTimezone() == null : this.getTimezone().equals(other.getTimezone()))
+            && (this.getDirectoryId() == null ? other.getDirectoryId() == null : this.getDirectoryId().equals(other.getDirectoryId()));
+    }
+
+    @Override
+    public int hashCode() {
+        final int prime = 31;
+        int result = 1;
+        result = prime * result + ((getScheduleSettingId() == null) ? 0 : getScheduleSettingId().hashCode());
+        result = prime * result + ((getType() == null) ? 0 : getType().hashCode());
+        result = prime * result + ((getDay() == null) ? 0 : getDay().hashCode());
+        result = prime * result + ((getMonth() == null) ? 0 : getMonth().hashCode());
+        result = prime * result + ((getTime() == null) ? 0 : getTime().hashCode());
+        result = prime * result + ((getTimezone() == null) ? 0 : getTimezone().hashCode());
+        result = prime * result + ((getDirectoryId() == null) ? 0 : getDirectoryId().hashCode());
+        return result;
+    }
+
+    @Override
+    public String toString() {
+        StringBuilder sb = new StringBuilder();
+        sb.append(getClass().getSimpleName());
+        sb.append(" [");
+        sb.append("Hash = ").append(hashCode());
+        sb.append(", scheduleSettingId=").append(scheduleSettingId);
+        sb.append(", type=").append(type);
+        sb.append(", day=").append(day);
+        sb.append(", month=").append(month);
+        sb.append(", time=").append(time);
+        sb.append(", timezone=").append(timezone);
+        sb.append(", directoryId=").append(directoryId);
+        sb.append(", serialVersionUID=").append(serialVersionUID);
+        sb.append("]");
+        return sb.toString();
+    }
+}

+ 724 - 0
pdf-tech-core/src/main/java/cn/kdan/pdf/tech/core/model/ScheduleSettingExample.java

@@ -0,0 +1,724 @@
+package cn.kdan.pdf.tech.core.model;
+
+import java.util.ArrayList;
+import java.util.List;
+
+public class ScheduleSettingExample {
+    protected String orderByClause;
+
+    protected boolean distinct;
+
+    protected List<Criteria> oredCriteria;
+
+    public ScheduleSettingExample() {
+        oredCriteria = new ArrayList<>();
+    }
+
+    public void setOrderByClause(String orderByClause) {
+        this.orderByClause = orderByClause;
+    }
+
+    public String getOrderByClause() {
+        return orderByClause;
+    }
+
+    public void setDistinct(boolean distinct) {
+        this.distinct = distinct;
+    }
+
+    public boolean isDistinct() {
+        return distinct;
+    }
+
+    public List<Criteria> getOredCriteria() {
+        return oredCriteria;
+    }
+
+    public void or(Criteria criteria) {
+        oredCriteria.add(criteria);
+    }
+
+    public Criteria or() {
+        Criteria criteria = createCriteriaInternal();
+        oredCriteria.add(criteria);
+        return criteria;
+    }
+
+    public Criteria createCriteria() {
+        Criteria criteria = createCriteriaInternal();
+        if (oredCriteria.size() == 0) {
+            oredCriteria.add(criteria);
+        }
+        return criteria;
+    }
+
+    protected Criteria createCriteriaInternal() {
+        Criteria criteria = new Criteria();
+        return criteria;
+    }
+
+    public void clear() {
+        oredCriteria.clear();
+        orderByClause = null;
+        distinct = false;
+    }
+
+    protected abstract static class GeneratedCriteria {
+        protected List<Criterion> criteria;
+
+        protected GeneratedCriteria() {
+            super();
+            criteria = new ArrayList<>();
+        }
+
+        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 andScheduleSettingIdIsNull() {
+            addCriterion("schedule_setting_id is null");
+            return (Criteria) this;
+        }
+
+        public Criteria andScheduleSettingIdIsNotNull() {
+            addCriterion("schedule_setting_id is not null");
+            return (Criteria) this;
+        }
+
+        public Criteria andScheduleSettingIdEqualTo(String value) {
+            addCriterion("schedule_setting_id =", value, "scheduleSettingId");
+            return (Criteria) this;
+        }
+
+        public Criteria andScheduleSettingIdNotEqualTo(String value) {
+            addCriterion("schedule_setting_id <>", value, "scheduleSettingId");
+            return (Criteria) this;
+        }
+
+        public Criteria andScheduleSettingIdGreaterThan(String value) {
+            addCriterion("schedule_setting_id >", value, "scheduleSettingId");
+            return (Criteria) this;
+        }
+
+        public Criteria andScheduleSettingIdGreaterThanOrEqualTo(String value) {
+            addCriterion("schedule_setting_id >=", value, "scheduleSettingId");
+            return (Criteria) this;
+        }
+
+        public Criteria andScheduleSettingIdLessThan(String value) {
+            addCriterion("schedule_setting_id <", value, "scheduleSettingId");
+            return (Criteria) this;
+        }
+
+        public Criteria andScheduleSettingIdLessThanOrEqualTo(String value) {
+            addCriterion("schedule_setting_id <=", value, "scheduleSettingId");
+            return (Criteria) this;
+        }
+
+        public Criteria andScheduleSettingIdLike(String value) {
+            addCriterion("schedule_setting_id like", value, "scheduleSettingId");
+            return (Criteria) this;
+        }
+
+        public Criteria andScheduleSettingIdNotLike(String value) {
+            addCriterion("schedule_setting_id not like", value, "scheduleSettingId");
+            return (Criteria) this;
+        }
+
+        public Criteria andScheduleSettingIdIn(List<String> values) {
+            addCriterion("schedule_setting_id in", values, "scheduleSettingId");
+            return (Criteria) this;
+        }
+
+        public Criteria andScheduleSettingIdNotIn(List<String> values) {
+            addCriterion("schedule_setting_id not in", values, "scheduleSettingId");
+            return (Criteria) this;
+        }
+
+        public Criteria andScheduleSettingIdBetween(String value1, String value2) {
+            addCriterion("schedule_setting_id between", value1, value2, "scheduleSettingId");
+            return (Criteria) this;
+        }
+
+        public Criteria andScheduleSettingIdNotBetween(String value1, String value2) {
+            addCriterion("schedule_setting_id not between", value1, value2, "scheduleSettingId");
+            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 andTypeNotEqualTo(String value) {
+            addCriterion("`type` <>", value, "type");
+            return (Criteria) this;
+        }
+
+        public Criteria andTypeGreaterThan(String value) {
+            addCriterion("`type` >", value, "type");
+            return (Criteria) this;
+        }
+
+        public Criteria andTypeGreaterThanOrEqualTo(String value) {
+            addCriterion("`type` >=", value, "type");
+            return (Criteria) this;
+        }
+
+        public Criteria andTypeLessThan(String value) {
+            addCriterion("`type` <", value, "type");
+            return (Criteria) this;
+        }
+
+        public Criteria andTypeLessThanOrEqualTo(String value) {
+            addCriterion("`type` <=", value, "type");
+            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 andDayIsNull() {
+            addCriterion("`day` is null");
+            return (Criteria) this;
+        }
+
+        public Criteria andDayIsNotNull() {
+            addCriterion("`day` is not null");
+            return (Criteria) this;
+        }
+
+        public Criteria andDayEqualTo(String value) {
+            addCriterion("`day` =", value, "day");
+            return (Criteria) this;
+        }
+
+        public Criteria andDayNotEqualTo(String value) {
+            addCriterion("`day` <>", value, "day");
+            return (Criteria) this;
+        }
+
+        public Criteria andDayGreaterThan(String value) {
+            addCriterion("`day` >", value, "day");
+            return (Criteria) this;
+        }
+
+        public Criteria andDayGreaterThanOrEqualTo(String value) {
+            addCriterion("`day` >=", value, "day");
+            return (Criteria) this;
+        }
+
+        public Criteria andDayLessThan(String value) {
+            addCriterion("`day` <", value, "day");
+            return (Criteria) this;
+        }
+
+        public Criteria andDayLessThanOrEqualTo(String value) {
+            addCriterion("`day` <=", value, "day");
+            return (Criteria) this;
+        }
+
+        public Criteria andDayLike(String value) {
+            addCriterion("`day` like", value, "day");
+            return (Criteria) this;
+        }
+
+        public Criteria andDayNotLike(String value) {
+            addCriterion("`day` not like", value, "day");
+            return (Criteria) this;
+        }
+
+        public Criteria andDayIn(List<String> values) {
+            addCriterion("`day` in", values, "day");
+            return (Criteria) this;
+        }
+
+        public Criteria andDayNotIn(List<String> values) {
+            addCriterion("`day` not in", values, "day");
+            return (Criteria) this;
+        }
+
+        public Criteria andDayBetween(String value1, String value2) {
+            addCriterion("`day` between", value1, value2, "day");
+            return (Criteria) this;
+        }
+
+        public Criteria andDayNotBetween(String value1, String value2) {
+            addCriterion("`day` not between", value1, value2, "day");
+            return (Criteria) this;
+        }
+
+        public Criteria andMonthIsNull() {
+            addCriterion("`month` is null");
+            return (Criteria) this;
+        }
+
+        public Criteria andMonthIsNotNull() {
+            addCriterion("`month` is not null");
+            return (Criteria) this;
+        }
+
+        public Criteria andMonthEqualTo(String value) {
+            addCriterion("`month` =", value, "month");
+            return (Criteria) this;
+        }
+
+        public Criteria andMonthNotEqualTo(String value) {
+            addCriterion("`month` <>", value, "month");
+            return (Criteria) this;
+        }
+
+        public Criteria andMonthGreaterThan(String value) {
+            addCriterion("`month` >", value, "month");
+            return (Criteria) this;
+        }
+
+        public Criteria andMonthGreaterThanOrEqualTo(String value) {
+            addCriterion("`month` >=", value, "month");
+            return (Criteria) this;
+        }
+
+        public Criteria andMonthLessThan(String value) {
+            addCriterion("`month` <", value, "month");
+            return (Criteria) this;
+        }
+
+        public Criteria andMonthLessThanOrEqualTo(String value) {
+            addCriterion("`month` <=", value, "month");
+            return (Criteria) this;
+        }
+
+        public Criteria andMonthLike(String value) {
+            addCriterion("`month` like", value, "month");
+            return (Criteria) this;
+        }
+
+        public Criteria andMonthNotLike(String value) {
+            addCriterion("`month` not like", value, "month");
+            return (Criteria) this;
+        }
+
+        public Criteria andMonthIn(List<String> values) {
+            addCriterion("`month` in", values, "month");
+            return (Criteria) this;
+        }
+
+        public Criteria andMonthNotIn(List<String> values) {
+            addCriterion("`month` not in", values, "month");
+            return (Criteria) this;
+        }
+
+        public Criteria andMonthBetween(String value1, String value2) {
+            addCriterion("`month` between", value1, value2, "month");
+            return (Criteria) this;
+        }
+
+        public Criteria andMonthNotBetween(String value1, String value2) {
+            addCriterion("`month` not between", value1, value2, "month");
+            return (Criteria) this;
+        }
+
+        public Criteria andTimeIsNull() {
+            addCriterion("`time` is null");
+            return (Criteria) this;
+        }
+
+        public Criteria andTimeIsNotNull() {
+            addCriterion("`time` is not null");
+            return (Criteria) this;
+        }
+
+        public Criteria andTimeEqualTo(String value) {
+            addCriterion("`time` =", value, "time");
+            return (Criteria) this;
+        }
+
+        public Criteria andTimeNotEqualTo(String value) {
+            addCriterion("`time` <>", value, "time");
+            return (Criteria) this;
+        }
+
+        public Criteria andTimeGreaterThan(String value) {
+            addCriterion("`time` >", value, "time");
+            return (Criteria) this;
+        }
+
+        public Criteria andTimeGreaterThanOrEqualTo(String value) {
+            addCriterion("`time` >=", value, "time");
+            return (Criteria) this;
+        }
+
+        public Criteria andTimeLessThan(String value) {
+            addCriterion("`time` <", value, "time");
+            return (Criteria) this;
+        }
+
+        public Criteria andTimeLessThanOrEqualTo(String value) {
+            addCriterion("`time` <=", value, "time");
+            return (Criteria) this;
+        }
+
+        public Criteria andTimeLike(String value) {
+            addCriterion("`time` like", value, "time");
+            return (Criteria) this;
+        }
+
+        public Criteria andTimeNotLike(String value) {
+            addCriterion("`time` not like", value, "time");
+            return (Criteria) this;
+        }
+
+        public Criteria andTimeIn(List<String> values) {
+            addCriterion("`time` in", values, "time");
+            return (Criteria) this;
+        }
+
+        public Criteria andTimeNotIn(List<String> values) {
+            addCriterion("`time` not in", values, "time");
+            return (Criteria) this;
+        }
+
+        public Criteria andTimeBetween(String value1, String value2) {
+            addCriterion("`time` between", value1, value2, "time");
+            return (Criteria) this;
+        }
+
+        public Criteria andTimeNotBetween(String value1, String value2) {
+            addCriterion("`time` not between", value1, value2, "time");
+            return (Criteria) this;
+        }
+
+        public Criteria andTimezoneIsNull() {
+            addCriterion("timezone is null");
+            return (Criteria) this;
+        }
+
+        public Criteria andTimezoneIsNotNull() {
+            addCriterion("timezone is not null");
+            return (Criteria) this;
+        }
+
+        public Criteria andTimezoneEqualTo(String value) {
+            addCriterion("timezone =", value, "timezone");
+            return (Criteria) this;
+        }
+
+        public Criteria andTimezoneNotEqualTo(String value) {
+            addCriterion("timezone <>", value, "timezone");
+            return (Criteria) this;
+        }
+
+        public Criteria andTimezoneGreaterThan(String value) {
+            addCriterion("timezone >", value, "timezone");
+            return (Criteria) this;
+        }
+
+        public Criteria andTimezoneGreaterThanOrEqualTo(String value) {
+            addCriterion("timezone >=", value, "timezone");
+            return (Criteria) this;
+        }
+
+        public Criteria andTimezoneLessThan(String value) {
+            addCriterion("timezone <", value, "timezone");
+            return (Criteria) this;
+        }
+
+        public Criteria andTimezoneLessThanOrEqualTo(String value) {
+            addCriterion("timezone <=", value, "timezone");
+            return (Criteria) this;
+        }
+
+        public Criteria andTimezoneLike(String value) {
+            addCriterion("timezone like", value, "timezone");
+            return (Criteria) this;
+        }
+
+        public Criteria andTimezoneNotLike(String value) {
+            addCriterion("timezone not like", value, "timezone");
+            return (Criteria) this;
+        }
+
+        public Criteria andTimezoneIn(List<String> values) {
+            addCriterion("timezone in", values, "timezone");
+            return (Criteria) this;
+        }
+
+        public Criteria andTimezoneNotIn(List<String> values) {
+            addCriterion("timezone not in", values, "timezone");
+            return (Criteria) this;
+        }
+
+        public Criteria andTimezoneBetween(String value1, String value2) {
+            addCriterion("timezone between", value1, value2, "timezone");
+            return (Criteria) this;
+        }
+
+        public Criteria andTimezoneNotBetween(String value1, String value2) {
+            addCriterion("timezone not between", value1, value2, "timezone");
+            return (Criteria) this;
+        }
+
+        public Criteria andDirectoryIdIsNull() {
+            addCriterion("directory_id is null");
+            return (Criteria) this;
+        }
+
+        public Criteria andDirectoryIdIsNotNull() {
+            addCriterion("directory_id is not null");
+            return (Criteria) this;
+        }
+
+        public Criteria andDirectoryIdEqualTo(String value) {
+            addCriterion("directory_id =", value, "directoryId");
+            return (Criteria) this;
+        }
+
+        public Criteria andDirectoryIdNotEqualTo(String value) {
+            addCriterion("directory_id <>", value, "directoryId");
+            return (Criteria) this;
+        }
+
+        public Criteria andDirectoryIdGreaterThan(String value) {
+            addCriterion("directory_id >", value, "directoryId");
+            return (Criteria) this;
+        }
+
+        public Criteria andDirectoryIdGreaterThanOrEqualTo(String value) {
+            addCriterion("directory_id >=", value, "directoryId");
+            return (Criteria) this;
+        }
+
+        public Criteria andDirectoryIdLessThan(String value) {
+            addCriterion("directory_id <", value, "directoryId");
+            return (Criteria) this;
+        }
+
+        public Criteria andDirectoryIdLessThanOrEqualTo(String value) {
+            addCriterion("directory_id <=", value, "directoryId");
+            return (Criteria) this;
+        }
+
+        public Criteria andDirectoryIdLike(String value) {
+            addCriterion("directory_id like", value, "directoryId");
+            return (Criteria) this;
+        }
+
+        public Criteria andDirectoryIdNotLike(String value) {
+            addCriterion("directory_id not like", value, "directoryId");
+            return (Criteria) this;
+        }
+
+        public Criteria andDirectoryIdIn(List<String> values) {
+            addCriterion("directory_id in", values, "directoryId");
+            return (Criteria) this;
+        }
+
+        public Criteria andDirectoryIdNotIn(List<String> values) {
+            addCriterion("directory_id not in", values, "directoryId");
+            return (Criteria) this;
+        }
+
+        public Criteria andDirectoryIdBetween(String value1, String value2) {
+            addCriterion("directory_id between", value1, value2, "directoryId");
+            return (Criteria) this;
+        }
+
+        public Criteria andDirectoryIdNotBetween(String value1, String value2) {
+            addCriterion("directory_id not between", value1, value2, "directoryId");
+            return (Criteria) this;
+        }
+
+        public Criteria andScheduleSettingIdLikeInsensitive(String value) {
+            addCriterion("upper(schedule_setting_id) like", value.toUpperCase(), "scheduleSettingId");
+            return (Criteria) this;
+        }
+
+        public Criteria andTypeLikeInsensitive(String value) {
+            addCriterion("upper(`type`) like", value.toUpperCase(), "type");
+            return (Criteria) this;
+        }
+
+        public Criteria andDayLikeInsensitive(String value) {
+            addCriterion("upper(`day`) like", value.toUpperCase(), "day");
+            return (Criteria) this;
+        }
+
+        public Criteria andMonthLikeInsensitive(String value) {
+            addCriterion("upper(`month`) like", value.toUpperCase(), "month");
+            return (Criteria) this;
+        }
+
+        public Criteria andTimeLikeInsensitive(String value) {
+            addCriterion("upper(`time`) like", value.toUpperCase(), "time");
+            return (Criteria) this;
+        }
+
+        public Criteria andTimezoneLikeInsensitive(String value) {
+            addCriterion("upper(timezone) like", value.toUpperCase(), "timezone");
+            return (Criteria) this;
+        }
+
+        public Criteria andDirectoryIdLikeInsensitive(String value) {
+            addCriterion("upper(directory_id) like", value.toUpperCase(), "directoryId");
+            return (Criteria) this;
+        }
+    }
+
+    public static class Criteria extends GeneratedCriteria {
+        protected Criteria() {
+            super();
+        }
+    }
+
+    public static class Criterion {
+        private String condition;
+
+        private Object value;
+
+        private Object secondValue;
+
+        private boolean noValue;
+
+        private boolean singleValue;
+
+        private boolean betweenValue;
+
+        private boolean listValue;
+
+        private String typeHandler;
+
+        public String getCondition() {
+            return condition;
+        }
+
+        public Object getValue() {
+            return value;
+        }
+
+        public Object getSecondValue() {
+            return secondValue;
+        }
+
+        public boolean isNoValue() {
+            return noValue;
+        }
+
+        public boolean isSingleValue() {
+            return singleValue;
+        }
+
+        public boolean isBetweenValue() {
+            return betweenValue;
+        }
+
+        public boolean isListValue() {
+            return listValue;
+        }
+
+        public String getTypeHandler() {
+            return typeHandler;
+        }
+
+        protected Criterion(String condition) {
+            super();
+            this.condition = condition;
+            this.typeHandler = null;
+            this.noValue = true;
+        }
+
+        protected Criterion(String condition, Object value, String typeHandler) {
+            super();
+            this.condition = condition;
+            this.value = value;
+            this.typeHandler = typeHandler;
+            if (value instanceof List<?>) {
+                this.listValue = true;
+            } else {
+                this.singleValue = true;
+            }
+        }
+
+        protected Criterion(String condition, Object value) {
+            this(condition, value, null);
+        }
+
+        protected Criterion(String condition, Object value, Object secondValue, String typeHandler) {
+            super();
+            this.condition = condition;
+            this.value = value;
+            this.secondValue = secondValue;
+            this.typeHandler = typeHandler;
+            this.betweenValue = true;
+        }
+
+        protected Criterion(String condition, Object value, Object secondValue) {
+            this(condition, value, secondValue, null);
+        }
+    }
+}

+ 11 - 0
pdf-tech-core/src/main/java/cn/kdan/pdf/tech/core/pojo/dto/DirectoryCreateDTO.java

@@ -0,0 +1,11 @@
+package cn.kdan.pdf.tech.core.pojo.dto;
+
+import lombok.Data;
+
+import javax.validation.constraints.NotBlank;
+
+@Data
+public class DirectoryCreateDTO {
+    @NotBlank
+    private String name;
+}

+ 13 - 0
pdf-tech-core/src/main/java/cn/kdan/pdf/tech/core/pojo/dto/DirectoryUpdateDTO.java

@@ -0,0 +1,13 @@
+package cn.kdan.pdf.tech.core.pojo.dto;
+
+import lombok.Data;
+
+import javax.validation.constraints.NotBlank;
+
+@Data
+public class DirectoryUpdateDTO {
+    @NotBlank
+    private String name;
+    @NotBlank
+    private String directoryId;
+}

+ 40 - 0
pdf-tech-core/src/main/java/cn/kdan/pdf/tech/core/pojo/vo/DirectoryVO.java

@@ -0,0 +1,40 @@
+package cn.kdan.pdf.tech.core.pojo.vo;
+
+import cn.kdan.pdf.tech.core.model.DirectorySync;
+import cn.kdan.pdf.tech.core.model.Domain;
+import cn.kdan.pdf.tech.core.model.ScheduleSetting;
+import lombok.Data;
+
+import java.util.Date;
+import java.util.List;
+
+@Data
+public class DirectoryVO {
+    private String directoryId;
+
+    private String name;
+
+    private String clientSecrets;
+
+    private String scope;
+
+    private String tenantId;
+
+    private String type;
+
+    private String applicationId;
+
+    private Date createTime;
+
+    private Date updateTime;
+
+    private String validFlag;
+
+    private String companyId;
+    private List<Domain> domains;
+
+    private ScheduleSetting scheduleSetting;
+
+    private DirectorySync sync;
+
+}

+ 36 - 0
pdf-tech-core/src/main/java/cn/kdan/pdf/tech/core/service/DirectoryService.java

@@ -0,0 +1,36 @@
+package cn.kdan.pdf.tech.core.service;
+
+import cn.kdan.pdf.tech.core.model.Directory;
+import cn.kdan.pdf.tech.core.pojo.dto.DirectoryCreateDTO;
+import cn.kdan.pdf.tech.core.pojo.dto.DirectoryUpdateDTO;
+import cn.kdan.pdf.tech.core.pojo.vo.DirectoryVO;
+
+import java.util.List;
+
+public interface DirectoryService {
+    /**
+     * 查询公司所有目录
+     * @return List
+     */
+    List<DirectoryVO> list();
+
+    /**
+     * 创建目录
+     * @param directoryVO 目录vo
+     * @return Directory
+     */
+    Directory create(DirectoryCreateDTO directoryVO);
+
+    /**
+     * 删除目录
+     * @param directoryId directoryId
+     */
+    void  delete (String directoryId);
+
+    /**
+     * 更新
+     * @param directoryUpdateDTO directoryUpdateDTO
+     */
+    void  update (DirectoryUpdateDTO directoryUpdateDTO);
+
+}

+ 15 - 0
pdf-tech-core/src/main/java/cn/kdan/pdf/tech/core/service/DirectorySyncService.java

@@ -0,0 +1,15 @@
+package cn.kdan.pdf.tech.core.service;
+
+import cn.kdan.pdf.tech.core.model.DirectorySync;
+
+import java.util.List;
+
+public interface DirectorySyncService {
+    /**
+     * 根据目录id查询
+     *
+     * @param directoryId directoryId
+     * @return List
+     */
+    List<DirectorySync> listByDirectoryId(String directoryId);
+}

+ 60 - 0
pdf-tech-core/src/main/java/cn/kdan/pdf/tech/core/service/DomainService.java

@@ -0,0 +1,60 @@
+package cn.kdan.pdf.tech.core.service;
+
+import cn.kdan.pdf.tech.core.model.Domain;
+
+import java.util.List;
+
+/**
+ * 域名服务类
+ */
+public interface DomainService {
+    /**
+     * 根据目录id获取域名列表
+     *
+     * @param directoryId 目录id
+     * @return 域名列表
+     */
+    List<Domain> listByDirectoryId(String directoryId);
+
+    /**
+     * 根据公司id获取域名列表(已验证的)
+     *
+     * @param verified 是否已验证
+     * @return 域名列表
+     */
+    List<Domain> list(String verified);
+
+    /**
+     * 删除域名
+     *
+     * @param domainId 域名id
+     * @return bool
+     */
+    void delete(String domainId);
+
+    /**
+     * 创建域名
+     *
+     * @param verifyType 验证类型
+     * @param name       域名
+     */
+    void create(String verifyType,String name);
+
+    /**
+     * 验证域名
+     *
+     * @param domainId    域名id
+     * @param verifyCode 验证码
+     * @param fileName 文件名
+     * @param fileContent 文件内容
+     */
+    void verify(String domainId, String verifyCode, String fileName, String fileContent);
+    /**
+     * 绑定域名
+     *
+     * @param domainId    域名id
+     * @param directoryId 目录id
+     */
+    void bindDomain(String domainId, String directoryId);
+
+}

+ 15 - 0
pdf-tech-core/src/main/java/cn/kdan/pdf/tech/core/service/ScheduleSettingService.java

@@ -0,0 +1,15 @@
+package cn.kdan.pdf.tech.core.service;
+
+import cn.kdan.pdf.tech.core.model.ScheduleSetting;
+
+import java.util.List;
+
+public interface ScheduleSettingService {
+    /**
+     * 根据目录id查询
+     *
+     * @param directoryId directoryId
+     * @return List
+     */
+    List<ScheduleSetting> listByDirectoryId(String directoryId);
+}

+ 108 - 0
pdf-tech-core/src/main/java/cn/kdan/pdf/tech/core/service/impl/DirectoryServiceImpl.java

@@ -0,0 +1,108 @@
+package cn.kdan.pdf.tech.core.service.impl;
+
+import cn.kdan.pdf.tech.core.mapper.DirectoryMapper;
+import cn.kdan.pdf.tech.core.model.*;
+import cn.kdan.pdf.tech.core.pojo.dto.DirectoryCreateDTO;
+import cn.kdan.pdf.tech.core.pojo.dto.DirectoryUpdateDTO;
+import cn.kdan.pdf.tech.core.pojo.vo.DirectoryVO;
+import cn.kdan.pdf.tech.core.service.*;
+import enums.ValidStatusEnum;
+import exception.BackendRuntimeException;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.BeanUtils;
+import org.springframework.stereotype.Service;
+import org.springframework.util.CollectionUtils;
+import utils.CommonUtils;
+
+import javax.annotation.Resource;
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.List;
+
+@Service
+@Slf4j
+public class DirectoryServiceImpl implements DirectoryService {
+    @Resource
+    private DirectoryMapper directoryMapper;
+    @Resource
+    private VppMemberService vppMemberService;
+    @Resource
+    private DomainService domainService;
+    @Resource
+    private ScheduleSettingService scheduleSettingService;
+    @Resource
+    private DirectorySyncService directorySyncService;
+    @Override
+    public List<DirectoryVO> list() {
+        //获取当前登录用户公司id
+        VppMember member = vppMemberService.getCurrentUser();
+        //根据公司id查询目录列表
+        List<Directory> directories = listByCompanyId(member.getCompanyId());
+        List<DirectoryVO> directoryVOS = new ArrayList<>();
+        for (Directory directory : directories) {
+            DirectoryVO directoryVO = new DirectoryVO();
+            BeanUtils.copyProperties(directory, directoryVO);
+
+            //根据目录id查询目录下的域名列表
+            List<Domain> domains = domainService.listByDirectoryId(directory.getDirectoryId());
+            directoryVO.setDomains(domains);
+
+            //遍历目录列表填充最新同步记录
+            List<DirectorySync> syncs = directorySyncService.listByDirectoryId(directory.getDirectoryId());
+            directoryVO.setSync(CollectionUtils.isEmpty(syncs) ? null : syncs.get(0));
+
+            //遍历目录列表填充同步配置
+            List<ScheduleSetting> scheduleSettings = scheduleSettingService.listByDirectoryId(directory.getDirectoryId());
+            directoryVO.setScheduleSetting(CollectionUtils.isEmpty(scheduleSettings) ? null : scheduleSettings.get(0));
+
+            directoryVOS.add(directoryVO);
+        }
+        return directoryVOS;
+    }
+
+    @Override
+    public Directory create(DirectoryCreateDTO directoryVO) {
+        checkExist(directoryVO.getName());
+        Directory directory = new Directory();
+        //获取当前登录用户公司id
+        VppMember member = vppMemberService.getCurrentUser();
+        directory.setCompanyId(member.getCompanyId());
+        directory.setCreateTime(new Date());
+        directory.setUpdateTime(new Date());
+        directory.setValidFlag(ValidStatusEnum.VALID.value());
+        directory.setName(directoryVO.getName());
+        directory.setDirectoryId(CommonUtils.generateId());
+        directoryMapper.insert(directory);
+        return directory;
+    }
+
+    @Override
+    public void delete(String directoryId) {
+        directoryMapper.deleteByPrimaryKey(directoryId);
+    }
+
+    @Override
+    public void update(DirectoryUpdateDTO directoryUpdateDTO) {
+        checkExist(directoryUpdateDTO.getName());
+        Directory directory = new Directory();
+        directory.setDirectoryId(directoryUpdateDTO.getDirectoryId());
+        directory.setName(directoryUpdateDTO.getName());
+        directory.setUpdateTime(new Date());
+        directoryMapper.updateByPrimaryKeySelective(directory);
+    }
+
+    public List<Directory> listByCompanyId(String companyId) {
+        DirectoryExample example = new DirectoryExample();
+        example.createCriteria().andCompanyIdEqualTo(companyId).andValidFlagEqualTo(ValidStatusEnum.VALID.value());
+        return directoryMapper.selectByExample(example);
+    }
+    private void checkExist(String name) {
+        DirectoryExample example = new DirectoryExample();
+        example.createCriteria().andNameEqualTo(name).andValidFlagEqualTo(ValidStatusEnum.VALID.value());
+        List<Directory> list = directoryMapper.selectByExample(example);
+        if (!CollectionUtils.isEmpty(list)) {
+            throw new BackendRuntimeException("Directory name already exists");
+        }
+    }
+
+}

+ 26 - 0
pdf-tech-core/src/main/java/cn/kdan/pdf/tech/core/service/impl/DirectorySyncServiceImpl.java

@@ -0,0 +1,26 @@
+package cn.kdan.pdf.tech.core.service.impl;
+
+import cn.kdan.pdf.tech.core.mapper.DirectorySyncMapper;
+import cn.kdan.pdf.tech.core.model.DirectorySync;
+import cn.kdan.pdf.tech.core.model.DirectorySyncExample;
+import cn.kdan.pdf.tech.core.service.DirectorySyncService;
+import org.springframework.stereotype.Service;
+import org.springframework.util.CollectionUtils;
+
+import javax.annotation.Resource;
+import java.util.ArrayList;
+import java.util.List;
+
+@Service
+public class DirectorySyncServiceImpl implements DirectorySyncService {
+    @Resource
+    private DirectorySyncMapper directorySyncMapper;
+
+    @Override
+    public List<DirectorySync> listByDirectoryId(String directoryId) {
+        DirectorySyncExample syncExample = new DirectorySyncExample();
+        syncExample.createCriteria().andDirectoryIdEqualTo(directoryId);
+        List<DirectorySync> list = directorySyncMapper.selectByExample(syncExample);
+        return CollectionUtils.isEmpty(list) ? new ArrayList<>() : list;
+    }
+}

+ 181 - 0
pdf-tech-core/src/main/java/cn/kdan/pdf/tech/core/service/impl/DomainServiceImpl.java

@@ -0,0 +1,181 @@
+package cn.kdan.pdf.tech.core.service.impl;
+
+import cn.kdan.pdf.tech.core.enums.DomainUsedEnum;
+import cn.kdan.pdf.tech.core.enums.DomainVerifiedEnum;
+import cn.kdan.pdf.tech.core.enums.DomainVerifyTypeEnum;
+import cn.kdan.pdf.tech.core.mapper.DomainMapper;
+import cn.kdan.pdf.tech.core.model.Domain;
+import cn.kdan.pdf.tech.core.model.DomainExample;
+import cn.kdan.pdf.tech.core.model.VppMember;
+import cn.kdan.pdf.tech.core.service.DomainService;
+import cn.kdan.pdf.tech.core.service.VppMemberService;
+import enums.ValidStatusEnum;
+import exception.BackendRuntimeException;
+import org.apache.http.HttpResponse;
+import org.apache.http.client.HttpClient;
+import org.apache.http.client.methods.HttpGet;
+import org.apache.http.impl.client.HttpClientBuilder;
+import org.springframework.stereotype.Service;
+import org.springframework.util.CollectionUtils;
+import org.springframework.util.ObjectUtils;
+import org.springframework.util.StringUtils;
+import org.xbill.DNS.Lookup;
+import org.xbill.DNS.Record;
+import org.xbill.DNS.TXTRecord;
+import org.xbill.DNS.Type;
+import utils.CommonUtils;
+
+import javax.annotation.Resource;
+import java.io.BufferedReader;
+import java.io.IOException;
+import java.io.InputStreamReader;
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.List;
+
+@Service
+public class DomainServiceImpl implements DomainService {
+    @Resource
+    private DomainMapper domainMapper;
+    @Resource
+    private VppMemberService vppMemberService;
+
+    @Override
+    public List<Domain> listByDirectoryId(String directoryId) {
+        DomainExample domainExample = new DomainExample();
+        domainExample.createCriteria().andDirectoryIdEqualTo(directoryId).andValidFlagEqualTo(ValidStatusEnum.VALID.value());
+        List<Domain> list = domainMapper.selectByExample(domainExample);
+        return CollectionUtils.isEmpty(list) ? new ArrayList<>() : list;
+    }
+
+    @Override
+    public List<Domain> list(String verified) {
+        VppMember member = vppMemberService.getCurrentUser();
+        DomainExample domainExample = new DomainExample();
+        DomainExample.Criteria criteria = domainExample.createCriteria().andCompanyIdEqualTo(member.getCompanyId())
+                .andValidFlagEqualTo(ValidStatusEnum.VALID.value());
+        if (!StringUtils.isEmpty(verified)) {
+            criteria.andVerifiedEqualTo(verified);
+        }
+        List<Domain> list = domainMapper.selectByExample(domainExample);
+        return CollectionUtils.isEmpty(list) ? new ArrayList<>() : list;
+    }
+
+    @Override
+    public void delete(String domainId) {
+        domainMapper.deleteByPrimaryKey(domainId);
+    }
+
+    @Override
+    public void create(String verifyType, String domain) {
+        //检查域名是否重复
+        checkExist(domain);
+        //创建新域名
+        Domain domains = new Domain();
+        domains.setDomainId(CommonUtils.generateId());
+        domains.setDomain(domain);
+        domains.setVerifyType(verifyType);
+        domains.setCompanyId(vppMemberService.getCurrentUser().getCompanyId());
+        domains.setStatus("0");
+        domains.setUsed(DomainUsedEnum.USED.code());
+        domains.setValidFlag(ValidStatusEnum.VALID.value());
+        domains.setVerified(DomainVerifiedEnum.UNVERIFIED.code());
+        domains.setCreateTime(new Date());
+        domains.setUpdateTime(new Date());
+        domainMapper.insert(domains);
+    }
+
+    @Override
+    public void verify(String domainId, String verifyCode, String fileName, String fileContent) {
+        Domain domain = getById(domainId);
+        //DNS处理方式
+        if (DomainVerifyTypeEnum.DNS.code().equals(domain.getVerifyType())) {
+            checkDns(domain.getDomain(), verifyCode);
+        }else{
+            checkHttp(domain.getDomain(), fileName, fileContent);
+        }
+        domain.setVerified(DomainVerifiedEnum.VERIFIED.code());
+        domainMapper.updateByPrimaryKey(domain);
+    }
+
+    @Override
+    public void bindDomain(String domainId, String directoryId) {
+        Domain domain = getById(domainId);
+        domain.setDirectoryId(directoryId);
+        domain.setUpdateTime(new Date());
+        domain.setUsed(DomainUsedEnum.USED.code());
+        domainMapper.updateByPrimaryKeySelective(domain);
+    }
+
+    private void checkExist(String domain) {
+        DomainExample domainExample = new DomainExample();
+        domainExample.createCriteria().andDomainEqualTo(domain).andValidFlagEqualTo(ValidStatusEnum.VALID.value());
+        List<Domain> list = domainMapper.selectByExample(domainExample);
+        if (!CollectionUtils.isEmpty(list)) {
+            throw new BackendRuntimeException("Domain name already exists");
+        }
+    }
+
+    public Domain getById(String domainId) {
+        Domain domain = domainMapper.selectByPrimaryKey(domainId);
+        if (ObjectUtils.isEmpty(domain)) {
+            throw new BackendRuntimeException("Domain does not exist");
+        }
+        return domain;
+    }
+
+    private void checkDns(String domain, String verifyCode){
+        boolean found = false;
+        try {
+            Lookup lookup = new Lookup(domain, Type.TXT);
+            Record[] records = lookup.run();
+            if (records != null) {
+                for (Record record : records) {
+                    if (record instanceof TXTRecord) {
+                        TXTRecord txtRecord = (TXTRecord) record;
+                        if (txtRecord.rdataToString().equals(verifyCode)) {
+                            found = true;
+                            break;
+                        }
+                        System.out.println("TXT Record: " + txtRecord.rdataToString());
+                    }
+                }
+            } else {
+                throw new BackendRuntimeException("No domain name resolution record found.");
+            }
+        } catch (Exception e) {
+            throw new BackendRuntimeException("No domain name resolution record found.");
+        }
+        if (!found) {
+            throw new BackendRuntimeException("No domain name resolution record found.");
+        }
+    }
+
+    private void checkHttp(String domain, String fileName, String fileContent){
+        String url = "http://" + domain + "/" + fileName;
+        try {
+            HttpClient client = HttpClientBuilder.create().build();
+            HttpGet request = new HttpGet(url);
+
+            HttpResponse response = client.execute(request);
+
+            BufferedReader reader = new BufferedReader(
+                    new InputStreamReader(response.getEntity().getContent()));
+
+            String line;
+            StringBuilder result = new StringBuilder();
+            while ((line = reader.readLine()) != null) {
+                result.append(line);
+            }
+            reader.close();
+
+            // 在这里对读取到的文件内容进行验证
+            String content = result.toString();
+            if (!content.contains(fileContent)) {
+                throw new BackendRuntimeException("File does not exist.");
+            }
+        } catch (IOException e) {
+            throw new BackendRuntimeException("File does not exist.");
+        }
+    }
+}

+ 26 - 0
pdf-tech-core/src/main/java/cn/kdan/pdf/tech/core/service/impl/ScheduleSettingServiceImpl.java

@@ -0,0 +1,26 @@
+package cn.kdan.pdf.tech.core.service.impl;
+
+import cn.kdan.pdf.tech.core.mapper.ScheduleSettingMapper;
+import cn.kdan.pdf.tech.core.model.ScheduleSetting;
+import cn.kdan.pdf.tech.core.model.ScheduleSettingExample;
+import cn.kdan.pdf.tech.core.service.ScheduleSettingService;
+import org.springframework.stereotype.Service;
+import org.springframework.util.CollectionUtils;
+
+import javax.annotation.Resource;
+import java.util.ArrayList;
+import java.util.List;
+
+@Service
+public class ScheduleSettingServiceImpl implements ScheduleSettingService {
+    @Resource
+    private ScheduleSettingMapper scheduleSettingMapper;
+
+    @Override
+    public List<ScheduleSetting> listByDirectoryId(String directoryId) {
+        ScheduleSettingExample scheduleSettingExample = new ScheduleSettingExample();
+        scheduleSettingExample.createCriteria().andDirectoryIdEqualTo(directoryId);
+        List<ScheduleSetting> list = scheduleSettingMapper.selectByExample(scheduleSettingExample);
+        return CollectionUtils.isEmpty(list) ? new ArrayList<>() : list;
+    }
+}

+ 17 - 13
pdf-tech-core/src/main/resources/generatorConfig.xml

@@ -18,7 +18,7 @@
             <property name="suppressAllComments" value="true"/>
         </commentGenerator>
         <jdbcConnection driverClass="org.postgresql.Driver"
-                        connectionURL="jdbc:postgresql://139.196.224.157:5432/db_larger1"
+                        connectionURL="jdbc:postgresql://139.196.160.101:5433/db_larger1"
                         userId="postgres" password="hYG59287"
         >
             <property name="nullCatalogMeansCurrent" value="true"/>
@@ -55,20 +55,24 @@
 <!--            <columnOverride column="product_id" property="productId" javaType="java.lang.Integer" />-->
 <!--            <columnOverride column="valid_flag" property="validFlag" javaType="java.lang.Integer" />-->
 <!--        </table>-->
-        <table tableName="license_codes">
-            <columnOverride column="id" property="id" javaType="java.lang.String" />
-            <columnOverride column="member_id" property="memberId" javaType="java.lang.String" />
-            <columnOverride column="subscription_id" property="subscriptionId" javaType="java.lang.String" />
-            <columnOverride column="product_id" property="productId" javaType="java.lang.Integer" />
-            <columnOverride column="valid_flag" property="validFlag" javaType="java.lang.Integer" />
-        </table>
-        <table tableName="devices">
-            <columnOverride column="id" property="id" javaType="java.lang.String" />
-            <columnOverride column="subscription_id" property="subscriptionId" javaType="java.lang.String" />
-            <columnOverride column="member_id" property="memberId" javaType="java.lang.String" />
-        </table>
+<!--        <table tableName="license_codes">-->
+<!--            <columnOverride column="id" property="id" javaType="java.lang.String" />-->
+<!--            <columnOverride column="member_id" property="memberId" javaType="java.lang.String" />-->
+<!--            <columnOverride column="subscription_id" property="subscriptionId" javaType="java.lang.String" />-->
+<!--            <columnOverride column="product_id" property="productId" javaType="java.lang.Integer" />-->
+<!--            <columnOverride column="valid_flag" property="validFlag" javaType="java.lang.Integer" />-->
+<!--        </table>-->
+<!--        <table tableName="devices">-->
+<!--            <columnOverride column="id" property="id" javaType="java.lang.String" />-->
+<!--            <columnOverride column="subscription_id" property="subscriptionId" javaType="java.lang.String" />-->
+<!--            <columnOverride column="member_id" property="memberId" javaType="java.lang.String" />-->
+<!--        </table>-->
 <!--        <table tableName="orders"/>-->
 <!--        <table tableName="vpp_r_team_member_role"/>-->
 <!--        <table tableName="vpp_company"/>-->
+<!--        <table tableName="directory"/>-->
+<!--        <table tableName="schedule_setting"/>-->
+<!--        <table tableName="domain"/>-->
+        <table tableName="directory_sync"/>
     </context>
 </generatorConfiguration>

+ 320 - 0
pdf-tech-core/src/main/resources/sqlmap/DirectoryMapper.xml

@@ -0,0 +1,320 @@
+<?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="cn.kdan.pdf.tech.core.mapper.DirectoryMapper">
+  <resultMap id="BaseResultMap" type="cn.kdan.pdf.tech.core.model.Directory">
+    <id column="directory_id" jdbcType="VARCHAR" property="directoryId" />
+    <result column="name" jdbcType="VARCHAR" property="name" />
+    <result column="client_secrets" jdbcType="VARCHAR" property="clientSecrets" />
+    <result column="scope" jdbcType="VARCHAR" property="scope" />
+    <result column="tenant_id" jdbcType="VARCHAR" property="tenantId" />
+    <result column="type" jdbcType="VARCHAR" property="type" />
+    <result column="application_id" jdbcType="VARCHAR" property="applicationId" />
+    <result column="create_time" jdbcType="TIMESTAMP" property="createTime" />
+    <result column="update_time" jdbcType="TIMESTAMP" property="updateTime" />
+    <result column="valid_flag" jdbcType="VARCHAR" property="validFlag" />
+    <result column="company_id" jdbcType="VARCHAR" property="companyId" />
+  </resultMap>
+  <sql id="Example_Where_Clause">
+    <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">
+    <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">
+    directory_id, `name`, client_secrets, `scope`, tenant_id, `type`, application_id, 
+    create_time, update_time, valid_flag, company_id
+  </sql>
+  <select id="selectByExample" parameterType="cn.kdan.pdf.tech.core.model.DirectoryExample" resultMap="BaseResultMap">
+    select
+    <if test="distinct">
+      distinct
+    </if>
+    <include refid="Base_Column_List" />
+    from directory
+    <if test="_parameter != null">
+      <include refid="Example_Where_Clause" />
+    </if>
+    <if test="orderByClause != null">
+      order by ${orderByClause}
+    </if>
+  </select>
+  <select id="selectByPrimaryKey" parameterType="java.lang.String" resultMap="BaseResultMap">
+    select 
+    <include refid="Base_Column_List" />
+    from directory
+    where directory_id = #{directoryId,jdbcType=VARCHAR}
+  </select>
+  <delete id="deleteByPrimaryKey" parameterType="java.lang.String">
+    delete from directory
+    where directory_id = #{directoryId,jdbcType=VARCHAR}
+  </delete>
+  <delete id="deleteByExample" parameterType="cn.kdan.pdf.tech.core.model.DirectoryExample">
+    delete from directory
+    <if test="_parameter != null">
+      <include refid="Example_Where_Clause" />
+    </if>
+  </delete>
+  <insert id="insert" parameterType="cn.kdan.pdf.tech.core.model.Directory">
+    insert into directory (directory_id, `name`, client_secrets, 
+      `scope`, tenant_id, `type`, 
+      application_id, create_time, update_time, 
+      valid_flag, company_id)
+    values (#{directoryId,jdbcType=VARCHAR}, #{name,jdbcType=VARCHAR}, #{clientSecrets,jdbcType=VARCHAR}, 
+      #{scope,jdbcType=VARCHAR}, #{tenantId,jdbcType=VARCHAR}, #{type,jdbcType=VARCHAR}, 
+      #{applicationId,jdbcType=VARCHAR}, #{createTime,jdbcType=TIMESTAMP}, #{updateTime,jdbcType=TIMESTAMP}, 
+      #{validFlag,jdbcType=VARCHAR}, #{companyId,jdbcType=VARCHAR})
+  </insert>
+  <insert id="insertSelective" parameterType="cn.kdan.pdf.tech.core.model.Directory">
+    insert into directory
+    <trim prefix="(" suffix=")" suffixOverrides=",">
+      <if test="directoryId != null">
+        directory_id,
+      </if>
+      <if test="name != null">
+        `name`,
+      </if>
+      <if test="clientSecrets != null">
+        client_secrets,
+      </if>
+      <if test="scope != null">
+        `scope`,
+      </if>
+      <if test="tenantId != null">
+        tenant_id,
+      </if>
+      <if test="type != null">
+        `type`,
+      </if>
+      <if test="applicationId != null">
+        application_id,
+      </if>
+      <if test="createTime != null">
+        create_time,
+      </if>
+      <if test="updateTime != null">
+        update_time,
+      </if>
+      <if test="validFlag != null">
+        valid_flag,
+      </if>
+      <if test="companyId != null">
+        company_id,
+      </if>
+    </trim>
+    <trim prefix="values (" suffix=")" suffixOverrides=",">
+      <if test="directoryId != null">
+        #{directoryId,jdbcType=VARCHAR},
+      </if>
+      <if test="name != null">
+        #{name,jdbcType=VARCHAR},
+      </if>
+      <if test="clientSecrets != null">
+        #{clientSecrets,jdbcType=VARCHAR},
+      </if>
+      <if test="scope != null">
+        #{scope,jdbcType=VARCHAR},
+      </if>
+      <if test="tenantId != null">
+        #{tenantId,jdbcType=VARCHAR},
+      </if>
+      <if test="type != null">
+        #{type,jdbcType=VARCHAR},
+      </if>
+      <if test="applicationId != null">
+        #{applicationId,jdbcType=VARCHAR},
+      </if>
+      <if test="createTime != null">
+        #{createTime,jdbcType=TIMESTAMP},
+      </if>
+      <if test="updateTime != null">
+        #{updateTime,jdbcType=TIMESTAMP},
+      </if>
+      <if test="validFlag != null">
+        #{validFlag,jdbcType=VARCHAR},
+      </if>
+      <if test="companyId != null">
+        #{companyId,jdbcType=VARCHAR},
+      </if>
+    </trim>
+  </insert>
+  <select id="countByExample" parameterType="cn.kdan.pdf.tech.core.model.DirectoryExample" resultType="java.lang.Long">
+    select count(*) from directory
+    <if test="_parameter != null">
+      <include refid="Example_Where_Clause" />
+    </if>
+  </select>
+  <update id="updateByExampleSelective" parameterType="map">
+    update directory
+    <set>
+      <if test="row.directoryId != null">
+        directory_id = #{row.directoryId,jdbcType=VARCHAR},
+      </if>
+      <if test="row.name != null">
+        `name` = #{row.name,jdbcType=VARCHAR},
+      </if>
+      <if test="row.clientSecrets != null">
+        client_secrets = #{row.clientSecrets,jdbcType=VARCHAR},
+      </if>
+      <if test="row.scope != null">
+        `scope` = #{row.scope,jdbcType=VARCHAR},
+      </if>
+      <if test="row.tenantId != null">
+        tenant_id = #{row.tenantId,jdbcType=VARCHAR},
+      </if>
+      <if test="row.type != null">
+        `type` = #{row.type,jdbcType=VARCHAR},
+      </if>
+      <if test="row.applicationId != null">
+        application_id = #{row.applicationId,jdbcType=VARCHAR},
+      </if>
+      <if test="row.createTime != null">
+        create_time = #{row.createTime,jdbcType=TIMESTAMP},
+      </if>
+      <if test="row.updateTime != null">
+        update_time = #{row.updateTime,jdbcType=TIMESTAMP},
+      </if>
+      <if test="row.validFlag != null">
+        valid_flag = #{row.validFlag,jdbcType=VARCHAR},
+      </if>
+      <if test="row.companyId != null">
+        company_id = #{row.companyId,jdbcType=VARCHAR},
+      </if>
+    </set>
+    <if test="example != null">
+      <include refid="Update_By_Example_Where_Clause" />
+    </if>
+  </update>
+  <update id="updateByExample" parameterType="map">
+    update directory
+    set directory_id = #{row.directoryId,jdbcType=VARCHAR},
+      `name` = #{row.name,jdbcType=VARCHAR},
+      client_secrets = #{row.clientSecrets,jdbcType=VARCHAR},
+      `scope` = #{row.scope,jdbcType=VARCHAR},
+      tenant_id = #{row.tenantId,jdbcType=VARCHAR},
+      `type` = #{row.type,jdbcType=VARCHAR},
+      application_id = #{row.applicationId,jdbcType=VARCHAR},
+      create_time = #{row.createTime,jdbcType=TIMESTAMP},
+      update_time = #{row.updateTime,jdbcType=TIMESTAMP},
+      valid_flag = #{row.validFlag,jdbcType=VARCHAR},
+      company_id = #{row.companyId,jdbcType=VARCHAR}
+    <if test="example != null">
+      <include refid="Update_By_Example_Where_Clause" />
+    </if>
+  </update>
+  <update id="updateByPrimaryKeySelective" parameterType="cn.kdan.pdf.tech.core.model.Directory">
+    update directory
+    <set>
+      <if test="name != null">
+        `name` = #{name,jdbcType=VARCHAR},
+      </if>
+      <if test="clientSecrets != null">
+        client_secrets = #{clientSecrets,jdbcType=VARCHAR},
+      </if>
+      <if test="scope != null">
+        `scope` = #{scope,jdbcType=VARCHAR},
+      </if>
+      <if test="tenantId != null">
+        tenant_id = #{tenantId,jdbcType=VARCHAR},
+      </if>
+      <if test="type != null">
+        `type` = #{type,jdbcType=VARCHAR},
+      </if>
+      <if test="applicationId != null">
+        application_id = #{applicationId,jdbcType=VARCHAR},
+      </if>
+      <if test="createTime != null">
+        create_time = #{createTime,jdbcType=TIMESTAMP},
+      </if>
+      <if test="updateTime != null">
+        update_time = #{updateTime,jdbcType=TIMESTAMP},
+      </if>
+      <if test="validFlag != null">
+        valid_flag = #{validFlag,jdbcType=VARCHAR},
+      </if>
+      <if test="companyId != null">
+        company_id = #{companyId,jdbcType=VARCHAR},
+      </if>
+    </set>
+    where directory_id = #{directoryId,jdbcType=VARCHAR}
+  </update>
+  <update id="updateByPrimaryKey" parameterType="cn.kdan.pdf.tech.core.model.Directory">
+    update directory
+    set `name` = #{name,jdbcType=VARCHAR},
+      client_secrets = #{clientSecrets,jdbcType=VARCHAR},
+      `scope` = #{scope,jdbcType=VARCHAR},
+      tenant_id = #{tenantId,jdbcType=VARCHAR},
+      `type` = #{type,jdbcType=VARCHAR},
+      application_id = #{applicationId,jdbcType=VARCHAR},
+      create_time = #{createTime,jdbcType=TIMESTAMP},
+      update_time = #{updateTime,jdbcType=TIMESTAMP},
+      valid_flag = #{validFlag,jdbcType=VARCHAR},
+      company_id = #{companyId,jdbcType=VARCHAR}
+    where directory_id = #{directoryId,jdbcType=VARCHAR}
+  </update>
+  <select id="selectByExampleWithRowbounds" parameterType="cn.kdan.pdf.tech.core.model.DirectoryExample" resultMap="BaseResultMap">
+    select
+    <if test="distinct">
+      distinct
+    </if>
+    <include refid="Base_Column_List" />
+    from directory
+    <if test="_parameter != null">
+      <include refid="Example_Where_Clause" />
+    </if>
+    <if test="orderByClause != null">
+      order by ${orderByClause}
+    </if>
+  </select>
+</mapper>

+ 416 - 0
pdf-tech-core/src/main/resources/sqlmap/DirectorySyncMapper.xml

@@ -0,0 +1,416 @@
+<?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="cn.kdan.pdf.tech.core.mapper.DirectorySyncMapper">
+  <resultMap id="BaseResultMap" type="cn.kdan.pdf.tech.core.model.DirectorySync">
+    <id column="directory_sync_id" jdbcType="VARCHAR" property="directorySyncId" />
+    <result column="status" jdbcType="VARCHAR" property="status" />
+    <result column="sync_time" jdbcType="TIMESTAMP" property="syncTime" />
+    <result column="directory_id" jdbcType="VARCHAR" property="directoryId" />
+  </resultMap>
+  <sql id="Example_Where_Clause">
+    <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">
+    <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">
+    directory_sync_id, `status`, sync_time, directory_id
+  </sql>
+  <select id="selectByExample" parameterType="cn.kdan.pdf.tech.core.model.DirectorySyncExample" resultMap="BaseResultMap">
+    select
+    <if test="distinct">
+      distinct
+    </if>
+    <include refid="Base_Column_List" />
+    from directory_sync
+    <if test="_parameter != null">
+      <include refid="Example_Where_Clause" />
+    </if>
+    <if test="orderByClause != null">
+      order by ${orderByClause}
+    </if>
+  </select>
+  <select id="selectByPrimaryKey" parameterType="java.lang.String" resultMap="BaseResultMap">
+    select 
+    <include refid="Base_Column_List" />
+    from directory_sync
+    where directory_sync_id = #{directorySyncId,jdbcType=VARCHAR}
+  </select>
+  <delete id="deleteByPrimaryKey" parameterType="java.lang.String">
+    delete from directory_sync
+    where directory_sync_id = #{directorySyncId,jdbcType=VARCHAR}
+  </delete>
+  <delete id="deleteByExample" parameterType="cn.kdan.pdf.tech.core.model.DirectorySyncExample">
+    delete from directory_sync
+    <if test="_parameter != null">
+      <include refid="Example_Where_Clause" />
+    </if>
+  </delete>
+  <insert id="insert" parameterType="cn.kdan.pdf.tech.core.model.DirectorySync">
+    insert into directory_sync (directory_sync_id, `status`, sync_time, 
+      directory_id)
+    values (#{directorySyncId,jdbcType=VARCHAR}, #{status,jdbcType=VARCHAR}, #{syncTime,jdbcType=TIMESTAMP}, 
+      #{directoryId,jdbcType=VARCHAR})
+  </insert>
+  <insert id="insertSelective" parameterType="cn.kdan.pdf.tech.core.model.DirectorySync">
+    insert into directory_sync
+    <trim prefix="(" suffix=")" suffixOverrides=",">
+      <if test="directorySyncId != null">
+        directory_sync_id,
+      </if>
+      <if test="status != null">
+        `status`,
+      </if>
+      <if test="syncTime != null">
+        sync_time,
+      </if>
+      <if test="directoryId != null">
+        directory_id,
+      </if>
+    </trim>
+    <trim prefix="values (" suffix=")" suffixOverrides=",">
+      <if test="directorySyncId != null">
+        #{directorySyncId,jdbcType=VARCHAR},
+      </if>
+      <if test="status != null">
+        #{status,jdbcType=VARCHAR},
+      </if>
+      <if test="syncTime != null">
+        #{syncTime,jdbcType=TIMESTAMP},
+      </if>
+      <if test="directoryId != null">
+        #{directoryId,jdbcType=VARCHAR},
+      </if>
+    </trim>
+  </insert>
+  <select id="countByExample" parameterType="cn.kdan.pdf.tech.core.model.DirectorySyncExample" resultType="java.lang.Long">
+    select count(*) from directory_sync
+    <if test="_parameter != null">
+      <include refid="Example_Where_Clause" />
+    </if>
+  </select>
+  <update id="updateByExampleSelective" parameterType="map">
+    update directory_sync
+    <set>
+      <if test="row.directorySyncId != null">
+        directory_sync_id = #{row.directorySyncId,jdbcType=VARCHAR},
+      </if>
+      <if test="row.status != null">
+        `status` = #{row.status,jdbcType=VARCHAR},
+      </if>
+      <if test="row.syncTime != null">
+        sync_time = #{row.syncTime,jdbcType=TIMESTAMP},
+      </if>
+      <if test="row.directoryId != null">
+        directory_id = #{row.directoryId,jdbcType=VARCHAR},
+      </if>
+    </set>
+    <if test="example != null">
+      <include refid="Update_By_Example_Where_Clause" />
+    </if>
+  </update>
+  <update id="updateByExample" parameterType="map">
+    update directory_sync
+    set directory_sync_id = #{row.directorySyncId,jdbcType=VARCHAR},
+      `status` = #{row.status,jdbcType=VARCHAR},
+      sync_time = #{row.syncTime,jdbcType=TIMESTAMP},
+      directory_id = #{row.directoryId,jdbcType=VARCHAR}
+    <if test="example != null">
+      <include refid="Update_By_Example_Where_Clause" />
+    </if>
+  </update>
+  <update id="updateByPrimaryKeySelective" parameterType="cn.kdan.pdf.tech.core.model.DirectorySync">
+    update directory_sync
+    <set>
+      <if test="status != null">
+        `status` = #{status,jdbcType=VARCHAR},
+      </if>
+      <if test="syncTime != null">
+        sync_time = #{syncTime,jdbcType=TIMESTAMP},
+      </if>
+      <if test="directoryId != null">
+        directory_id = #{directoryId,jdbcType=VARCHAR},
+      </if>
+    </set>
+    where directory_sync_id = #{directorySyncId,jdbcType=VARCHAR}
+  </update>
+  <update id="updateByPrimaryKey" parameterType="cn.kdan.pdf.tech.core.model.DirectorySync">
+    update directory_sync
+    set `status` = #{status,jdbcType=VARCHAR},
+      sync_time = #{syncTime,jdbcType=TIMESTAMP},
+      directory_id = #{directoryId,jdbcType=VARCHAR}
+    where directory_sync_id = #{directorySyncId,jdbcType=VARCHAR}
+  </update>
+  <select id="selectByExampleWithRowbounds" parameterType="cn.kdan.pdf.tech.core.model.DirectorySyncExample" resultMap="BaseResultMap">
+    select
+    <if test="distinct">
+      distinct
+    </if>
+    <include refid="Base_Column_List" />
+    from directory_sync
+    <if test="_parameter != null">
+      <include refid="Example_Where_Clause" />
+    </if>
+    <if test="orderByClause != null">
+      order by ${orderByClause}
+    </if>
+  </select>
+  <resultMap id="BaseResultMap" type="cn.kdan.pdf.tech.core.model.DirectorySync">
+    <id column="directory_sync_id" jdbcType="VARCHAR" property="directorySyncId" />
+    <result column="status" jdbcType="VARCHAR" property="status" />
+    <result column="sync_time" jdbcType="TIMESTAMP" property="syncTime" />
+    <result column="directory_id" jdbcType="VARCHAR" property="directoryId" />
+  </resultMap>
+  <sql id="Example_Where_Clause">
+    <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">
+    <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">
+    directory_sync_id, `status`, sync_time, directory_id
+  </sql>
+  <select id="selectByExample" parameterType="cn.kdan.pdf.tech.core.model.DirectorySyncExample" resultMap="BaseResultMap">
+    select
+    <if test="distinct">
+      distinct
+    </if>
+    <include refid="Base_Column_List" />
+    from directory_sync
+    <if test="_parameter != null">
+      <include refid="Example_Where_Clause" />
+    </if>
+    <if test="orderByClause != null">
+      order by ${orderByClause}
+    </if>
+  </select>
+  <select id="selectByPrimaryKey" parameterType="java.lang.String" resultMap="BaseResultMap">
+    select 
+    <include refid="Base_Column_List" />
+    from directory_sync
+    where directory_sync_id = #{directorySyncId,jdbcType=VARCHAR}
+  </select>
+  <delete id="deleteByPrimaryKey" parameterType="java.lang.String">
+    delete from directory_sync
+    where directory_sync_id = #{directorySyncId,jdbcType=VARCHAR}
+  </delete>
+  <delete id="deleteByExample" parameterType="cn.kdan.pdf.tech.core.model.DirectorySyncExample">
+    delete from directory_sync
+    <if test="_parameter != null">
+      <include refid="Example_Where_Clause" />
+    </if>
+  </delete>
+  <insert id="insert" parameterType="cn.kdan.pdf.tech.core.model.DirectorySync">
+    insert into directory_sync (directory_sync_id, `status`, sync_time, 
+      directory_id)
+    values (#{directorySyncId,jdbcType=VARCHAR}, #{status,jdbcType=VARCHAR}, #{syncTime,jdbcType=TIMESTAMP}, 
+      #{directoryId,jdbcType=VARCHAR})
+  </insert>
+  <insert id="insertSelective" parameterType="cn.kdan.pdf.tech.core.model.DirectorySync">
+    insert into directory_sync
+    <trim prefix="(" suffix=")" suffixOverrides=",">
+      <if test="directorySyncId != null">
+        directory_sync_id,
+      </if>
+      <if test="status != null">
+        `status`,
+      </if>
+      <if test="syncTime != null">
+        sync_time,
+      </if>
+      <if test="directoryId != null">
+        directory_id,
+      </if>
+    </trim>
+    <trim prefix="values (" suffix=")" suffixOverrides=",">
+      <if test="directorySyncId != null">
+        #{directorySyncId,jdbcType=VARCHAR},
+      </if>
+      <if test="status != null">
+        #{status,jdbcType=VARCHAR},
+      </if>
+      <if test="syncTime != null">
+        #{syncTime,jdbcType=TIMESTAMP},
+      </if>
+      <if test="directoryId != null">
+        #{directoryId,jdbcType=VARCHAR},
+      </if>
+    </trim>
+  </insert>
+  <select id="countByExample" parameterType="cn.kdan.pdf.tech.core.model.DirectorySyncExample" resultType="java.lang.Long">
+    select count(*) from directory_sync
+    <if test="_parameter != null">
+      <include refid="Example_Where_Clause" />
+    </if>
+  </select>
+  <update id="updateByExampleSelective" parameterType="map">
+    update directory_sync
+    <set>
+      <if test="row.directorySyncId != null">
+        directory_sync_id = #{row.directorySyncId,jdbcType=VARCHAR},
+      </if>
+      <if test="row.status != null">
+        `status` = #{row.status,jdbcType=VARCHAR},
+      </if>
+      <if test="row.syncTime != null">
+        sync_time = #{row.syncTime,jdbcType=TIMESTAMP},
+      </if>
+      <if test="row.directoryId != null">
+        directory_id = #{row.directoryId,jdbcType=VARCHAR},
+      </if>
+    </set>
+    <if test="example != null">
+      <include refid="Update_By_Example_Where_Clause" />
+    </if>
+  </update>
+  <update id="updateByExample" parameterType="map">
+    update directory_sync
+    set directory_sync_id = #{row.directorySyncId,jdbcType=VARCHAR},
+      `status` = #{row.status,jdbcType=VARCHAR},
+      sync_time = #{row.syncTime,jdbcType=TIMESTAMP},
+      directory_id = #{row.directoryId,jdbcType=VARCHAR}
+    <if test="example != null">
+      <include refid="Update_By_Example_Where_Clause" />
+    </if>
+  </update>
+  <update id="updateByPrimaryKeySelective" parameterType="cn.kdan.pdf.tech.core.model.DirectorySync">
+    update directory_sync
+    <set>
+      <if test="status != null">
+        `status` = #{status,jdbcType=VARCHAR},
+      </if>
+      <if test="syncTime != null">
+        sync_time = #{syncTime,jdbcType=TIMESTAMP},
+      </if>
+      <if test="directoryId != null">
+        directory_id = #{directoryId,jdbcType=VARCHAR},
+      </if>
+    </set>
+    where directory_sync_id = #{directorySyncId,jdbcType=VARCHAR}
+  </update>
+  <update id="updateByPrimaryKey" parameterType="cn.kdan.pdf.tech.core.model.DirectorySync">
+    update directory_sync
+    set `status` = #{status,jdbcType=VARCHAR},
+      sync_time = #{syncTime,jdbcType=TIMESTAMP},
+      directory_id = #{directoryId,jdbcType=VARCHAR}
+    where directory_sync_id = #{directorySyncId,jdbcType=VARCHAR}
+  </update>
+  <select id="selectByExampleWithRowbounds" parameterType="cn.kdan.pdf.tech.core.model.DirectorySyncExample" resultMap="BaseResultMap">
+    select
+    <if test="distinct">
+      distinct
+    </if>
+    <include refid="Base_Column_List" />
+    from directory_sync
+    <if test="_parameter != null">
+      <include refid="Example_Where_Clause" />
+    </if>
+    <if test="orderByClause != null">
+      order by ${orderByClause}
+    </if>
+  </select>
+</mapper>

+ 320 - 0
pdf-tech-core/src/main/resources/sqlmap/DomainMapper.xml

@@ -0,0 +1,320 @@
+<?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="cn.kdan.pdf.tech.core.mapper.DomainMapper">
+  <resultMap id="BaseResultMap" type="cn.kdan.pdf.tech.core.model.Domain">
+    <id column="domain_id" jdbcType="VARCHAR" property="domainId" />
+    <result column="domain" jdbcType="VARCHAR" property="domain" />
+    <result column="verify_type" jdbcType="VARCHAR" property="verifyType" />
+    <result column="verified" jdbcType="VARCHAR" property="verified" />
+    <result column="status" jdbcType="VARCHAR" property="status" />
+    <result column="used" jdbcType="VARCHAR" property="used" />
+    <result column="directory_id" jdbcType="VARCHAR" property="directoryId" />
+    <result column="create_time" jdbcType="TIMESTAMP" property="createTime" />
+    <result column="update_time" jdbcType="TIMESTAMP" property="updateTime" />
+    <result column="valid_flag" jdbcType="VARCHAR" property="validFlag" />
+    <result column="company_id" jdbcType="VARCHAR" property="companyId" />
+  </resultMap>
+  <sql id="Example_Where_Clause">
+    <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">
+    <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">
+    domain_id, `domain`, verify_type, verified, `status`, used, directory_id, create_time, 
+    update_time, valid_flag, company_id
+  </sql>
+  <select id="selectByExample" parameterType="cn.kdan.pdf.tech.core.model.DomainExample" resultMap="BaseResultMap">
+    select
+    <if test="distinct">
+      distinct
+    </if>
+    <include refid="Base_Column_List" />
+    from domain
+    <if test="_parameter != null">
+      <include refid="Example_Where_Clause" />
+    </if>
+    <if test="orderByClause != null">
+      order by ${orderByClause}
+    </if>
+  </select>
+  <select id="selectByPrimaryKey" parameterType="java.lang.String" resultMap="BaseResultMap">
+    select 
+    <include refid="Base_Column_List" />
+    from domain
+    where domain_id = #{domainId,jdbcType=VARCHAR}
+  </select>
+  <delete id="deleteByPrimaryKey" parameterType="java.lang.String">
+    delete from domain
+    where domain_id = #{domainId,jdbcType=VARCHAR}
+  </delete>
+  <delete id="deleteByExample" parameterType="cn.kdan.pdf.tech.core.model.DomainExample">
+    delete from domain
+    <if test="_parameter != null">
+      <include refid="Example_Where_Clause" />
+    </if>
+  </delete>
+  <insert id="insert" parameterType="cn.kdan.pdf.tech.core.model.Domain">
+    insert into domain (domain_id, `domain`, verify_type, 
+      verified, `status`, used, 
+      directory_id, create_time, update_time, 
+      valid_flag, company_id)
+    values (#{domainId,jdbcType=VARCHAR}, #{domain,jdbcType=VARCHAR}, #{verifyType,jdbcType=VARCHAR}, 
+      #{verified,jdbcType=VARCHAR}, #{status,jdbcType=VARCHAR}, #{used,jdbcType=VARCHAR}, 
+      #{directoryId,jdbcType=VARCHAR}, #{createTime,jdbcType=TIMESTAMP}, #{updateTime,jdbcType=TIMESTAMP}, 
+      #{validFlag,jdbcType=VARCHAR}, #{companyId,jdbcType=VARCHAR})
+  </insert>
+  <insert id="insertSelective" parameterType="cn.kdan.pdf.tech.core.model.Domain">
+    insert into domain
+    <trim prefix="(" suffix=")" suffixOverrides=",">
+      <if test="domainId != null">
+        domain_id,
+      </if>
+      <if test="domain != null">
+        `domain`,
+      </if>
+      <if test="verifyType != null">
+        verify_type,
+      </if>
+      <if test="verified != null">
+        verified,
+      </if>
+      <if test="status != null">
+        `status`,
+      </if>
+      <if test="used != null">
+        used,
+      </if>
+      <if test="directoryId != null">
+        directory_id,
+      </if>
+      <if test="createTime != null">
+        create_time,
+      </if>
+      <if test="updateTime != null">
+        update_time,
+      </if>
+      <if test="validFlag != null">
+        valid_flag,
+      </if>
+      <if test="companyId != null">
+        company_id,
+      </if>
+    </trim>
+    <trim prefix="values (" suffix=")" suffixOverrides=",">
+      <if test="domainId != null">
+        #{domainId,jdbcType=VARCHAR},
+      </if>
+      <if test="domain != null">
+        #{domain,jdbcType=VARCHAR},
+      </if>
+      <if test="verifyType != null">
+        #{verifyType,jdbcType=VARCHAR},
+      </if>
+      <if test="verified != null">
+        #{verified,jdbcType=VARCHAR},
+      </if>
+      <if test="status != null">
+        #{status,jdbcType=VARCHAR},
+      </if>
+      <if test="used != null">
+        #{used,jdbcType=VARCHAR},
+      </if>
+      <if test="directoryId != null">
+        #{directoryId,jdbcType=VARCHAR},
+      </if>
+      <if test="createTime != null">
+        #{createTime,jdbcType=TIMESTAMP},
+      </if>
+      <if test="updateTime != null">
+        #{updateTime,jdbcType=TIMESTAMP},
+      </if>
+      <if test="validFlag != null">
+        #{validFlag,jdbcType=VARCHAR},
+      </if>
+      <if test="companyId != null">
+        #{companyId,jdbcType=VARCHAR},
+      </if>
+    </trim>
+  </insert>
+  <select id="countByExample" parameterType="cn.kdan.pdf.tech.core.model.DomainExample" resultType="java.lang.Long">
+    select count(*) from domain
+    <if test="_parameter != null">
+      <include refid="Example_Where_Clause" />
+    </if>
+  </select>
+  <update id="updateByExampleSelective" parameterType="map">
+    update domain
+    <set>
+      <if test="row.domainId != null">
+        domain_id = #{row.domainId,jdbcType=VARCHAR},
+      </if>
+      <if test="row.domain != null">
+        `domain` = #{row.domain,jdbcType=VARCHAR},
+      </if>
+      <if test="row.verifyType != null">
+        verify_type = #{row.verifyType,jdbcType=VARCHAR},
+      </if>
+      <if test="row.verified != null">
+        verified = #{row.verified,jdbcType=VARCHAR},
+      </if>
+      <if test="row.status != null">
+        `status` = #{row.status,jdbcType=VARCHAR},
+      </if>
+      <if test="row.used != null">
+        used = #{row.used,jdbcType=VARCHAR},
+      </if>
+      <if test="row.directoryId != null">
+        directory_id = #{row.directoryId,jdbcType=VARCHAR},
+      </if>
+      <if test="row.createTime != null">
+        create_time = #{row.createTime,jdbcType=TIMESTAMP},
+      </if>
+      <if test="row.updateTime != null">
+        update_time = #{row.updateTime,jdbcType=TIMESTAMP},
+      </if>
+      <if test="row.validFlag != null">
+        valid_flag = #{row.validFlag,jdbcType=VARCHAR},
+      </if>
+      <if test="row.companyId != null">
+        company_id = #{row.companyId,jdbcType=VARCHAR},
+      </if>
+    </set>
+    <if test="example != null">
+      <include refid="Update_By_Example_Where_Clause" />
+    </if>
+  </update>
+  <update id="updateByExample" parameterType="map">
+    update domain
+    set domain_id = #{row.domainId,jdbcType=VARCHAR},
+      `domain` = #{row.domain,jdbcType=VARCHAR},
+      verify_type = #{row.verifyType,jdbcType=VARCHAR},
+      verified = #{row.verified,jdbcType=VARCHAR},
+      `status` = #{row.status,jdbcType=VARCHAR},
+      used = #{row.used,jdbcType=VARCHAR},
+      directory_id = #{row.directoryId,jdbcType=VARCHAR},
+      create_time = #{row.createTime,jdbcType=TIMESTAMP},
+      update_time = #{row.updateTime,jdbcType=TIMESTAMP},
+      valid_flag = #{row.validFlag,jdbcType=VARCHAR},
+      company_id = #{row.companyId,jdbcType=VARCHAR}
+    <if test="example != null">
+      <include refid="Update_By_Example_Where_Clause" />
+    </if>
+  </update>
+  <update id="updateByPrimaryKeySelective" parameterType="cn.kdan.pdf.tech.core.model.Domain">
+    update domain
+    <set>
+      <if test="domain != null">
+        `domain` = #{domain,jdbcType=VARCHAR},
+      </if>
+      <if test="verifyType != null">
+        verify_type = #{verifyType,jdbcType=VARCHAR},
+      </if>
+      <if test="verified != null">
+        verified = #{verified,jdbcType=VARCHAR},
+      </if>
+      <if test="status != null">
+        `status` = #{status,jdbcType=VARCHAR},
+      </if>
+      <if test="used != null">
+        used = #{used,jdbcType=VARCHAR},
+      </if>
+      <if test="directoryId != null">
+        directory_id = #{directoryId,jdbcType=VARCHAR},
+      </if>
+      <if test="createTime != null">
+        create_time = #{createTime,jdbcType=TIMESTAMP},
+      </if>
+      <if test="updateTime != null">
+        update_time = #{updateTime,jdbcType=TIMESTAMP},
+      </if>
+      <if test="validFlag != null">
+        valid_flag = #{validFlag,jdbcType=VARCHAR},
+      </if>
+      <if test="companyId != null">
+        company_id = #{companyId,jdbcType=VARCHAR},
+      </if>
+    </set>
+    where domain_id = #{domainId,jdbcType=VARCHAR}
+  </update>
+  <update id="updateByPrimaryKey" parameterType="cn.kdan.pdf.tech.core.model.Domain">
+    update domain
+    set `domain` = #{domain,jdbcType=VARCHAR},
+      verify_type = #{verifyType,jdbcType=VARCHAR},
+      verified = #{verified,jdbcType=VARCHAR},
+      `status` = #{status,jdbcType=VARCHAR},
+      used = #{used,jdbcType=VARCHAR},
+      directory_id = #{directoryId,jdbcType=VARCHAR},
+      create_time = #{createTime,jdbcType=TIMESTAMP},
+      update_time = #{updateTime,jdbcType=TIMESTAMP},
+      valid_flag = #{validFlag,jdbcType=VARCHAR},
+      company_id = #{companyId,jdbcType=VARCHAR}
+    where domain_id = #{domainId,jdbcType=VARCHAR}
+  </update>
+  <select id="selectByExampleWithRowbounds" parameterType="cn.kdan.pdf.tech.core.model.DomainExample" resultMap="BaseResultMap">
+    select
+    <if test="distinct">
+      distinct
+    </if>
+    <include refid="Base_Column_List" />
+    from domain
+    <if test="_parameter != null">
+      <include refid="Example_Where_Clause" />
+    </if>
+    <if test="orderByClause != null">
+      order by ${orderByClause}
+    </if>
+  </select>
+</mapper>

+ 257 - 0
pdf-tech-core/src/main/resources/sqlmap/ScheduleSettingMapper.xml

@@ -0,0 +1,257 @@
+<?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="cn.kdan.pdf.tech.core.mapper.ScheduleSettingMapper">
+  <resultMap id="BaseResultMap" type="cn.kdan.pdf.tech.core.model.ScheduleSetting">
+    <id column="schedule_setting_id" jdbcType="VARCHAR" property="scheduleSettingId" />
+    <result column="type" jdbcType="VARCHAR" property="type" />
+    <result column="day" jdbcType="VARCHAR" property="day" />
+    <result column="month" jdbcType="VARCHAR" property="month" />
+    <result column="time" jdbcType="VARCHAR" property="time" />
+    <result column="timezone" jdbcType="VARCHAR" property="timezone" />
+    <result column="directory_id" jdbcType="VARCHAR" property="directoryId" />
+  </resultMap>
+  <sql id="Example_Where_Clause">
+    <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">
+    <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">
+    schedule_setting_id, `type`, `day`, `month`, `time`, timezone, directory_id
+  </sql>
+  <select id="selectByExample" parameterType="cn.kdan.pdf.tech.core.model.ScheduleSettingExample" resultMap="BaseResultMap">
+    select
+    <if test="distinct">
+      distinct
+    </if>
+    <include refid="Base_Column_List" />
+    from schedule_setting
+    <if test="_parameter != null">
+      <include refid="Example_Where_Clause" />
+    </if>
+    <if test="orderByClause != null">
+      order by ${orderByClause}
+    </if>
+  </select>
+  <select id="selectByPrimaryKey" parameterType="java.lang.String" resultMap="BaseResultMap">
+    select 
+    <include refid="Base_Column_List" />
+    from schedule_setting
+    where schedule_setting_id = #{scheduleSettingId,jdbcType=VARCHAR}
+  </select>
+  <delete id="deleteByPrimaryKey" parameterType="java.lang.String">
+    delete from schedule_setting
+    where schedule_setting_id = #{scheduleSettingId,jdbcType=VARCHAR}
+  </delete>
+  <delete id="deleteByExample" parameterType="cn.kdan.pdf.tech.core.model.ScheduleSettingExample">
+    delete from schedule_setting
+    <if test="_parameter != null">
+      <include refid="Example_Where_Clause" />
+    </if>
+  </delete>
+  <insert id="insert" parameterType="cn.kdan.pdf.tech.core.model.ScheduleSetting">
+    insert into schedule_setting (schedule_setting_id, `type`, `day`, 
+      `month`, `time`, timezone, 
+      directory_id)
+    values (#{scheduleSettingId,jdbcType=VARCHAR}, #{type,jdbcType=VARCHAR}, #{day,jdbcType=VARCHAR}, 
+      #{month,jdbcType=VARCHAR}, #{time,jdbcType=VARCHAR}, #{timezone,jdbcType=VARCHAR}, 
+      #{directoryId,jdbcType=VARCHAR})
+  </insert>
+  <insert id="insertSelective" parameterType="cn.kdan.pdf.tech.core.model.ScheduleSetting">
+    insert into schedule_setting
+    <trim prefix="(" suffix=")" suffixOverrides=",">
+      <if test="scheduleSettingId != null">
+        schedule_setting_id,
+      </if>
+      <if test="type != null">
+        `type`,
+      </if>
+      <if test="day != null">
+        `day`,
+      </if>
+      <if test="month != null">
+        `month`,
+      </if>
+      <if test="time != null">
+        `time`,
+      </if>
+      <if test="timezone != null">
+        timezone,
+      </if>
+      <if test="directoryId != null">
+        directory_id,
+      </if>
+    </trim>
+    <trim prefix="values (" suffix=")" suffixOverrides=",">
+      <if test="scheduleSettingId != null">
+        #{scheduleSettingId,jdbcType=VARCHAR},
+      </if>
+      <if test="type != null">
+        #{type,jdbcType=VARCHAR},
+      </if>
+      <if test="day != null">
+        #{day,jdbcType=VARCHAR},
+      </if>
+      <if test="month != null">
+        #{month,jdbcType=VARCHAR},
+      </if>
+      <if test="time != null">
+        #{time,jdbcType=VARCHAR},
+      </if>
+      <if test="timezone != null">
+        #{timezone,jdbcType=VARCHAR},
+      </if>
+      <if test="directoryId != null">
+        #{directoryId,jdbcType=VARCHAR},
+      </if>
+    </trim>
+  </insert>
+  <select id="countByExample" parameterType="cn.kdan.pdf.tech.core.model.ScheduleSettingExample" resultType="java.lang.Long">
+    select count(*) from schedule_setting
+    <if test="_parameter != null">
+      <include refid="Example_Where_Clause" />
+    </if>
+  </select>
+  <update id="updateByExampleSelective" parameterType="map">
+    update schedule_setting
+    <set>
+      <if test="row.scheduleSettingId != null">
+        schedule_setting_id = #{row.scheduleSettingId,jdbcType=VARCHAR},
+      </if>
+      <if test="row.type != null">
+        `type` = #{row.type,jdbcType=VARCHAR},
+      </if>
+      <if test="row.day != null">
+        `day` = #{row.day,jdbcType=VARCHAR},
+      </if>
+      <if test="row.month != null">
+        `month` = #{row.month,jdbcType=VARCHAR},
+      </if>
+      <if test="row.time != null">
+        `time` = #{row.time,jdbcType=VARCHAR},
+      </if>
+      <if test="row.timezone != null">
+        timezone = #{row.timezone,jdbcType=VARCHAR},
+      </if>
+      <if test="row.directoryId != null">
+        directory_id = #{row.directoryId,jdbcType=VARCHAR},
+      </if>
+    </set>
+    <if test="example != null">
+      <include refid="Update_By_Example_Where_Clause" />
+    </if>
+  </update>
+  <update id="updateByExample" parameterType="map">
+    update schedule_setting
+    set schedule_setting_id = #{row.scheduleSettingId,jdbcType=VARCHAR},
+      `type` = #{row.type,jdbcType=VARCHAR},
+      `day` = #{row.day,jdbcType=VARCHAR},
+      `month` = #{row.month,jdbcType=VARCHAR},
+      `time` = #{row.time,jdbcType=VARCHAR},
+      timezone = #{row.timezone,jdbcType=VARCHAR},
+      directory_id = #{row.directoryId,jdbcType=VARCHAR}
+    <if test="example != null">
+      <include refid="Update_By_Example_Where_Clause" />
+    </if>
+  </update>
+  <update id="updateByPrimaryKeySelective" parameterType="cn.kdan.pdf.tech.core.model.ScheduleSetting">
+    update schedule_setting
+    <set>
+      <if test="type != null">
+        `type` = #{type,jdbcType=VARCHAR},
+      </if>
+      <if test="day != null">
+        `day` = #{day,jdbcType=VARCHAR},
+      </if>
+      <if test="month != null">
+        `month` = #{month,jdbcType=VARCHAR},
+      </if>
+      <if test="time != null">
+        `time` = #{time,jdbcType=VARCHAR},
+      </if>
+      <if test="timezone != null">
+        timezone = #{timezone,jdbcType=VARCHAR},
+      </if>
+      <if test="directoryId != null">
+        directory_id = #{directoryId,jdbcType=VARCHAR},
+      </if>
+    </set>
+    where schedule_setting_id = #{scheduleSettingId,jdbcType=VARCHAR}
+  </update>
+  <update id="updateByPrimaryKey" parameterType="cn.kdan.pdf.tech.core.model.ScheduleSetting">
+    update schedule_setting
+    set `type` = #{type,jdbcType=VARCHAR},
+      `day` = #{day,jdbcType=VARCHAR},
+      `month` = #{month,jdbcType=VARCHAR},
+      `time` = #{time,jdbcType=VARCHAR},
+      timezone = #{timezone,jdbcType=VARCHAR},
+      directory_id = #{directoryId,jdbcType=VARCHAR}
+    where schedule_setting_id = #{scheduleSettingId,jdbcType=VARCHAR}
+  </update>
+  <select id="selectByExampleWithRowbounds" parameterType="cn.kdan.pdf.tech.core.model.ScheduleSettingExample" resultMap="BaseResultMap">
+    select
+    <if test="distinct">
+      distinct
+    </if>
+    <include refid="Base_Column_List" />
+    from schedule_setting
+    <if test="_parameter != null">
+      <include refid="Example_Where_Clause" />
+    </if>
+    <if test="orderByClause != null">
+      order by ${orderByClause}
+    </if>
+  </select>
+</mapper>