抽取common项目,放入微服务开发时需要使用的一些公共类
diff --git a/samples/common/pom.xml b/samples/common/pom.xml
new file mode 100644
index 0000000..864192d
--- /dev/null
+++ b/samples/common/pom.xml
@@ -0,0 +1,68 @@
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+  <modelVersion>4.0.0</modelVersion>
+
+  <parent>
+    <groupId>com.supwisdom.leaveschool</groupId>
+    <artifactId>samples-parent</artifactId>
+    <version>0.0.1-SNAPSHOT</version>
+  </parent>
+
+  <groupId>com.supwisdom.leaveschool</groupId>
+  <artifactId>sample-common</artifactId>
+  <packaging>jar</packaging>
+
+
+  <dependencies>
+
+    <dependency>
+      <groupId>com.supwisdom.infras</groupId>
+      <artifactId>infras-data-jpa</artifactId>
+    </dependency>
+
+    <dependency>
+      <groupId>commons-collections</groupId>
+      <artifactId>commons-collections</artifactId>
+    </dependency>
+
+    <!-- Test things -->
+    <dependency>
+      <groupId>org.testng</groupId>
+      <artifactId>testng</artifactId>
+      <scope>test</scope>
+    </dependency>
+
+    <dependency>
+      <groupId>org.springframework.boot</groupId>
+      <artifactId>spring-boot-starter-test</artifactId>
+      <scope>test</scope>
+    </dependency>
+
+  </dependencies>
+
+  <build>
+    <plugins>
+      <plugin>
+        <groupId>org.apache.maven.plugins</groupId>
+        <artifactId>maven-compiler-plugin</artifactId>
+      </plugin>
+      <plugin>
+        <groupId>org.apache.maven.plugins</groupId>
+        <artifactId>maven-failsafe-plugin</artifactId>
+      </plugin>
+      <plugin>
+        <groupId>org.apache.maven.plugins</groupId>
+        <artifactId>maven-javadoc-plugin</artifactId>
+      </plugin>
+      <plugin>
+        <groupId>org.apache.maven.plugins</groupId>
+        <artifactId>maven-release-plugin</artifactId>
+      </plugin>
+      <plugin>
+        <groupId>org.jacoco</groupId>
+        <artifactId>jacoco-maven-plugin</artifactId>
+      </plugin>
+    </plugins>
+  </build>
+
+</project>
diff --git a/samples/common/src/main/java/com/supwisdom/leaveschool/common/domain/ABaseDomain.java b/samples/common/src/main/java/com/supwisdom/leaveschool/common/domain/ABaseDomain.java
new file mode 100644
index 0000000..2c01d9a
--- /dev/null
+++ b/samples/common/src/main/java/com/supwisdom/leaveschool/common/domain/ABaseDomain.java
@@ -0,0 +1,138 @@
+package com.supwisdom.leaveschool.common.domain;
+
+import java.io.Serializable;
+import java.util.Date;
+
+import javax.persistence.Column;
+import javax.persistence.GeneratedValue;
+import javax.persistence.Id;
+import javax.persistence.MappedSuperclass;
+
+import org.hibernate.annotations.GenericGenerator;
+
+@MappedSuperclass
+public abstract class ABaseDomain implements Serializable {
+
+  /**
+   * 
+   */
+  private static final long serialVersionUID = 8023881887762314483L;
+
+  @Id
+  @GeneratedValue(generator = "uuidStrategy")
+  @GenericGenerator(name = "uuidStrategy", strategy = "uuid")
+  //@ApiModelProperty(value = "ID", required = false, example = "")
+  @Column(name = "ID")
+  private String id;
+
+  /**
+   * 获取主键
+   */
+  public String getId() {
+    return id;
+  }
+
+  /**
+   * 设置ID属性,主要用于人工指定键值
+   */
+  public void setId(String id) {
+    this.id = id;
+  }
+
+  //@ApiModelProperty(value = "CompanyID", required = true, example = "1")
+  @Column(name = "COMPANY_ID")
+  private String companyId = null;
+
+  //@ApiModelProperty(value = "是否删除", hidden = true, example = "false")
+  @Column(name = "DELETED")
+  private Boolean deleted = false;
+
+  //@ApiModelProperty(value = "创建人", hidden = true)
+  @Column(name = "ADD_ACCOUNT")
+  private String addAccount = null;
+
+  //@ApiModelProperty(value = "创建时间", hidden = true)
+  @Column(name = "ADD_TIME")
+  private Date addTime = null;
+
+  //@ApiModelProperty(value = "修改人", hidden = true)
+  @Column(name = "EDIT_ACCOUNT")
+  private String editAccount = null;
+
+  //@ApiModelProperty(value = "修改时间", hidden = true)
+  @Column(name = "EDIT_TIME")
+  private Date editTime = null;
+
+  //@ApiModelProperty(value = "删除人", hidden = true)
+  @Column(name = "DELETE_ACCOUNT")
+  private String deleteAccount = null;
+
+  //@ApiModelProperty(value = "删除时间", hidden = true)
+  @Column(name = "DELETE_TIME")
+  private Date deleteTime = null;
+
+  public String getCompanyId() {
+    return companyId;
+  }
+
+  public void setCompanyId(String companyId) {
+    this.companyId = companyId;
+  }
+
+  public Boolean isDeleted() {
+    return deleted;
+  }
+
+  public void setDeleted(Boolean deleted) {
+    this.deleted = deleted;
+  }
+
+  public String getAddAccount() {
+    return addAccount;
+  }
+
+  public void setAddAccount(String addAccount) {
+    this.addAccount = addAccount;
+  }
+
+  public Date getAddTime() {
+    return addTime;
+  }
+
+  public void setAddTime(Date addTime) {
+    this.addTime = addTime;
+  }
+
+  public String getEditAccount() {
+    return editAccount;
+  }
+
+  public void setEditAccount(String editAccount) {
+    this.editAccount = editAccount;
+  }
+
+  public Date getEditTime() {
+    return editTime;
+  }
+
+  public void setEditTime(Date editTime) {
+    this.editTime = editTime;
+  }
+
+  public String getDeleteAccount() {
+    return deleteAccount;
+  }
+
+  public void setDeleteAccount(String deleteAccount) {
+    this.deleteAccount = deleteAccount;
+  }
+
+  public Date getDeleteTime() {
+    return deleteTime;
+  }
+
+  public void setDeleteTime(Date deleteTime) {
+    this.deleteTime = deleteTime;
+  }
+
+}
diff --git a/samples/user/src/main/java/com/supwisdom/leaveschool/user/model/PagerRequestModel.java b/samples/common/src/main/java/com/supwisdom/leaveschool/common/model/PagerRequestModel.java
similarity index 93%
rename from samples/user/src/main/java/com/supwisdom/leaveschool/user/model/PagerRequestModel.java
rename to samples/common/src/main/java/com/supwisdom/leaveschool/common/model/PagerRequestModel.java
index c31ab0b..75309f1 100644
--- a/samples/user/src/main/java/com/supwisdom/leaveschool/user/model/PagerRequestModel.java
+++ b/samples/common/src/main/java/com/supwisdom/leaveschool/common/model/PagerRequestModel.java
@@ -1,4 +1,4 @@
-package com.supwisdom.leaveschool.user.model;
+package com.supwisdom.leaveschool.common.model;
 
 import java.io.Serializable;
 import java.util.Map;
diff --git a/samples/user/src/main/java/com/supwisdom/leaveschool/user/model/PagerResponseModel.java b/samples/common/src/main/java/com/supwisdom/leaveschool/common/model/PagerResponseModel.java
similarity index 96%
rename from samples/user/src/main/java/com/supwisdom/leaveschool/user/model/PagerResponseModel.java
rename to samples/common/src/main/java/com/supwisdom/leaveschool/common/model/PagerResponseModel.java
index 3cab2b7..1b7bd7b 100644
--- a/samples/user/src/main/java/com/supwisdom/leaveschool/user/model/PagerResponseModel.java
+++ b/samples/common/src/main/java/com/supwisdom/leaveschool/common/model/PagerResponseModel.java
@@ -1,4 +1,4 @@
-package com.supwisdom.leaveschool.user.model;
+package com.supwisdom.leaveschool.common.model;
 
 import java.io.Serializable;
 import java.util.Collection;
diff --git a/samples/common/src/main/java/com/supwisdom/leaveschool/common/repository/ABaseJpaRepositoryImpl.java b/samples/common/src/main/java/com/supwisdom/leaveschool/common/repository/ABaseJpaRepositoryImpl.java
new file mode 100644
index 0000000..a245196
--- /dev/null
+++ b/samples/common/src/main/java/com/supwisdom/leaveschool/common/repository/ABaseJpaRepositoryImpl.java
@@ -0,0 +1,84 @@
+package com.supwisdom.leaveschool.common.repository;
+
+import java.util.Calendar;
+import java.util.Map;
+import java.util.Optional;
+
+import javax.persistence.EntityManager;
+import javax.transaction.Transactional;
+
+import org.springframework.data.domain.Page;
+import org.springframework.data.domain.PageRequest;
+import org.springframework.data.jpa.repository.support.JpaEntityInformation;
+import org.springframework.data.jpa.repository.support.SimpleJpaRepository;
+import org.springframework.data.repository.NoRepositoryBean;
+
+import com.supwisdom.leaveschool.common.domain.ABaseDomain;
+
+@Transactional
+@NoRepositoryBean
+public class ABaseJpaRepositoryImpl<T extends ABaseDomain> extends SimpleJpaRepository<T, String> implements BaseJpaRepository<T> {
+
+  @SuppressWarnings("unused")
+  private final EntityManager em;
+
+  public ABaseJpaRepositoryImpl(Class<T> domainClass, EntityManager em) {
+    super(domainClass, em);
+    this.em = em;
+  }
+
+  public ABaseJpaRepositoryImpl(JpaEntityInformation<T, String> information, EntityManager em) {
+    super(information, em);
+    this.em = em;
+  }
+  
+  public Page<T> selectPageList(int pageIndex, int pageSize, Map<String, Object> mapBean) {
+
+    PageRequest pageRequest = PageRequest.of(pageIndex, pageSize);
+
+    Page<T> page = this.findAll(pageRequest);
+
+    return page;
+  }
+
+  public T selectById(String id) {
+
+    try {
+      Optional<T> entity = this.findById(id);
+
+      return entity.get();
+    } catch (RuntimeException e) {
+      System.out.println("RuntimeException:" + e.getMessage());
+    } catch (Exception e) {
+      System.out.println("Exception:" + e.getMessage());
+    }
+
+    return null;
+  }
+
+  public T insert(T entity) {
+
+    if (entity.getCompanyId() == null || entity.getCompanyId().isEmpty()) {
+      entity.setCompanyId("1");
+    }
+
+    entity.setDeleted(false);
+    //entity.setAddAccount(AuthUtil.getRemoteUser()); // FIXME: setAddAccount
+    entity.setAddTime(Calendar.getInstance().getTime());
+
+    T e = this.save(entity);
+
+    return e;
+  }
+
+  public T update(T entity) {
+
+    //entity.setEditAccount(AuthUtil.getRemoteUser()); // FIXME: setEditAccount
+    entity.setEditTime(Calendar.getInstance().getTime());
+
+    T e = this.save(entity);
+
+    return e;
+  }
+
+}
diff --git a/samples/common/src/main/java/com/supwisdom/leaveschool/common/repository/BaseJpaRepository.java b/samples/common/src/main/java/com/supwisdom/leaveschool/common/repository/BaseJpaRepository.java
new file mode 100644
index 0000000..e1e0531
--- /dev/null
+++ b/samples/common/src/main/java/com/supwisdom/leaveschool/common/repository/BaseJpaRepository.java
@@ -0,0 +1,66 @@
+package com.supwisdom.leaveschool.common.repository;
+
+import java.util.Calendar;
+import java.util.Map;
+import java.util.Optional;
+
+import org.springframework.data.domain.Page;
+import org.springframework.data.domain.PageRequest;
+import org.springframework.data.jpa.repository.JpaRepository;
+import org.springframework.data.repository.NoRepositoryBean;
+
+import com.supwisdom.leaveschool.common.domain.ABaseDomain;
+
+@NoRepositoryBean
+public interface BaseJpaRepository<T extends ABaseDomain> extends JpaRepository<T, String> {
+  
+  public default Page<T> selectPageList(int pageIndex, int pageSize, Map<String, Object> mapBean) {
+
+    PageRequest pageRequest = PageRequest.of(pageIndex, pageSize);
+
+    Page<T> page = this.findAll(pageRequest);
+
+    return page;
+  }
+  
+  public default T selectById(String id) {
+
+    try {
+      Optional<T> entity = this.findById(id);
+
+      return entity.get();
+    } catch (RuntimeException e) {
+      System.out.println("RuntimeException:" + e.getMessage());
+    } catch (Exception e) {
+      System.out.println("Exception:" + e.getMessage());
+    }
+
+    return null;
+  }
+  
+  public default T insert(T entity) {
+
+    if (entity.getCompanyId() == null || entity.getCompanyId().isEmpty()) {
+      entity.setCompanyId("1");
+    }
+
+    entity.setDeleted(false);
+    //entity.setAddAccount(AuthUtil.getRemoteUser()); // FIXME: setAddAccount
+    entity.setAddTime(Calendar.getInstance().getTime());
+
+    T e = this.save(entity);
+
+    return e;
+  }
+  
+  public default T update(T entity) {
+
+    //entity.setEditAccount(AuthUtil.getRemoteUser()); // FIXME: setEditAccount
+    entity.setEditTime(Calendar.getInstance().getTime());
+
+    T e = this.save(entity);
+
+    return e;
+  }
+
+}
diff --git a/samples/user/src/main/java/com/supwisdom/leaveschool/user/util/DomainUtils.java b/samples/common/src/main/java/com/supwisdom/leaveschool/common/util/DomainUtils.java
similarity index 98%
rename from samples/user/src/main/java/com/supwisdom/leaveschool/user/util/DomainUtils.java
rename to samples/common/src/main/java/com/supwisdom/leaveschool/common/util/DomainUtils.java
index 48e9047..f02d7e5 100644
--- a/samples/user/src/main/java/com/supwisdom/leaveschool/user/util/DomainUtils.java
+++ b/samples/common/src/main/java/com/supwisdom/leaveschool/common/util/DomainUtils.java
@@ -1,4 +1,4 @@
-package com.supwisdom.leaveschool.user.util;
+package com.supwisdom.leaveschool.common.util;
 
 import java.lang.reflect.Field;
 import java.util.Date;
diff --git a/samples/user/src/main/java/com/supwisdom/leaveschool/user/util/ReflectUtils.java b/samples/common/src/main/java/com/supwisdom/leaveschool/common/util/ReflectUtils.java
similarity index 98%
rename from samples/user/src/main/java/com/supwisdom/leaveschool/user/util/ReflectUtils.java
rename to samples/common/src/main/java/com/supwisdom/leaveschool/common/util/ReflectUtils.java
index 3bec43d..53cb150 100644
--- a/samples/user/src/main/java/com/supwisdom/leaveschool/user/util/ReflectUtils.java
+++ b/samples/common/src/main/java/com/supwisdom/leaveschool/common/util/ReflectUtils.java
@@ -1,4 +1,4 @@
-package com.supwisdom.leaveschool.user.util;
+package com.supwisdom.leaveschool.common.util;
 
 import java.lang.reflect.Field;
 import java.lang.reflect.Method;
diff --git a/samples/user/src/main/java/com/supwisdom/leaveschool/user/util/Test.java b/samples/common/src/main/java/com/supwisdom/leaveschool/common/util/Test.java
similarity index 92%
rename from samples/user/src/main/java/com/supwisdom/leaveschool/user/util/Test.java
rename to samples/common/src/main/java/com/supwisdom/leaveschool/common/util/Test.java
index ea7dced..a82d78c 100644
--- a/samples/user/src/main/java/com/supwisdom/leaveschool/user/util/Test.java
+++ b/samples/common/src/main/java/com/supwisdom/leaveschool/common/util/Test.java
@@ -1,10 +1,10 @@
-package com.supwisdom.leaveschool.user.util;
+package com.supwisdom.leaveschool.common.util;
 
 import java.util.Date;
 
 import javax.persistence.Column;
 
-import com.supwisdom.infras.data.jpa.domain.ABaseDomain;
+import com.supwisdom.leaveschool.common.domain.ABaseDomain;
 
 public class Test extends ABaseDomain {
 
diff --git a/samples/user/src/main/java/com/supwisdom/leaveschool/user/util/Test2.java b/samples/common/src/main/java/com/supwisdom/leaveschool/common/util/Test2.java
similarity index 92%
rename from samples/user/src/main/java/com/supwisdom/leaveschool/user/util/Test2.java
rename to samples/common/src/main/java/com/supwisdom/leaveschool/common/util/Test2.java
index 67917d8..c093d0f 100644
--- a/samples/user/src/main/java/com/supwisdom/leaveschool/user/util/Test2.java
+++ b/samples/common/src/main/java/com/supwisdom/leaveschool/common/util/Test2.java
@@ -1,10 +1,10 @@
-package com.supwisdom.leaveschool.user.util;
+package com.supwisdom.leaveschool.common.util;
 
 import java.util.Date;
 
 import javax.persistence.Column;
 
-import com.supwisdom.infras.data.jpa.domain.ABaseDomain;
+import com.supwisdom.leaveschool.common.domain.ABaseDomain;
 
 public class Test2 extends ABaseDomain {
 
diff --git a/samples/pom.xml b/samples/pom.xml
index 8a6c81a..d046338 100644
--- a/samples/pom.xml
+++ b/samples/pom.xml
@@ -48,6 +48,12 @@
       </dependency>
 
       <dependency>
+        <groupId>com.supwisdom.leaveschool</groupId>
+        <artifactId>sample-common</artifactId>
+        <version>${project.version}</version>
+      </dependency>
+
+      <dependency>
         <groupId>commons-collections</groupId>
         <artifactId>commons-collections</artifactId>
         <version>3.2.2</version>
@@ -68,6 +74,8 @@
     <module>bar</module>
     <module>security</module>
 
+    <module>common</module>
+
     <module>auth</module>
     <module>user</module>
     <module>gateway</module>
diff --git a/samples/user/pom.xml b/samples/user/pom.xml
index e7d6492..e6c0032 100644
--- a/samples/user/pom.xml
+++ b/samples/user/pom.xml
@@ -15,6 +15,11 @@
   <dependencies>
 
     <dependency>
+      <groupId>com.supwisdom.leaveschool</groupId>
+      <artifactId>sample-common</artifactId>
+    </dependency>
+
+    <dependency>
       <groupId>org.springframework.boot</groupId>
       <artifactId>spring-boot-starter</artifactId>
     </dependency>
@@ -29,11 +34,6 @@
       <groupId>org.springframework.boot</groupId>
       <artifactId>spring-boot-starter-web</artifactId>
     </dependency>
-
-    <dependency>
-      <groupId>commons-collections</groupId>
-      <artifactId>commons-collections</artifactId>
-    </dependency>
     
 
     <dependency>
@@ -64,11 +64,6 @@
      -->
 
     <dependency>
-      <groupId>com.supwisdom.infras</groupId>
-      <artifactId>infras-data-jpa</artifactId>
-    </dependency>
-
-    <dependency>
       <groupId>mysql</groupId>
       <artifactId>mysql-connector-java</artifactId>
     </dependency>
diff --git a/samples/user/src/main/java/com/supwisdom/leaveschool/user/controller/api/admin/Api1AdminUserController.java b/samples/user/src/main/java/com/supwisdom/leaveschool/user/controller/api/admin/Api1AdminUserController.java
index 36ab166..a635ad9 100644
--- a/samples/user/src/main/java/com/supwisdom/leaveschool/user/controller/api/admin/Api1AdminUserController.java
+++ b/samples/user/src/main/java/com/supwisdom/leaveschool/user/controller/api/admin/Api1AdminUserController.java
@@ -19,11 +19,11 @@
 import org.springframework.web.bind.annotation.ResponseStatus;
 import org.springframework.web.bind.annotation.RestController;
 
+import com.supwisdom.leaveschool.common.model.PagerRequestModel;
+import com.supwisdom.leaveschool.common.model.PagerResponseModel;
+import com.supwisdom.leaveschool.common.util.DomainUtils;
 import com.supwisdom.leaveschool.user.domain.User;
-import com.supwisdom.leaveschool.user.model.PagerRequestModel;
-import com.supwisdom.leaveschool.user.model.PagerResponseModel;
 import com.supwisdom.leaveschool.user.repository.UserRepository;
-import com.supwisdom.leaveschool.user.util.DomainUtils;
 
 @RestController
 @RequestMapping("/api/v1/admin/users")
diff --git a/samples/user/src/main/java/com/supwisdom/leaveschool/user/domain/User.java b/samples/user/src/main/java/com/supwisdom/leaveschool/user/domain/User.java
index 8af51c9..9a2c0d5 100644
--- a/samples/user/src/main/java/com/supwisdom/leaveschool/user/domain/User.java
+++ b/samples/user/src/main/java/com/supwisdom/leaveschool/user/domain/User.java
@@ -4,7 +4,7 @@
 import javax.persistence.Entity;
 import javax.persistence.Table;
 
-import com.supwisdom.infras.data.jpa.domain.ABaseDomain;
+import com.supwisdom.leaveschool.common.domain.ABaseDomain;
 
 @Entity
 @Table(name = "TB_U_USER")
diff --git a/samples/user/src/main/java/com/supwisdom/leaveschool/user/repository/UserRepository.java b/samples/user/src/main/java/com/supwisdom/leaveschool/user/repository/UserRepository.java
index 097b648..ff1fd0b 100644
--- a/samples/user/src/main/java/com/supwisdom/leaveschool/user/repository/UserRepository.java
+++ b/samples/user/src/main/java/com/supwisdom/leaveschool/user/repository/UserRepository.java
@@ -1,8 +1,6 @@
 package com.supwisdom.leaveschool.user.repository;
 
-import java.util.Calendar;
 import java.util.Map;
-import java.util.Optional;
 
 import org.springframework.data.domain.Example;
 import org.springframework.data.domain.ExampleMatcher;
@@ -10,7 +8,7 @@
 import org.springframework.data.domain.PageRequest;
 import org.springframework.stereotype.Repository;
 
-import com.supwisdom.infras.data.jpa.repository.BaseJpaRepository;
+import com.supwisdom.leaveschool.common.repository.BaseJpaRepository;
 import com.supwisdom.leaveschool.user.domain.User;
 
 @Repository
@@ -37,6 +35,7 @@
     return page;
   }
   
+  /*
   public default User selectById(String id) {
     
     try {
@@ -76,6 +75,6 @@
     
     return e;
   }
-
+  */
 
 }