Jelajahi Sumber

Initial commit

郭超 3 tahun lalu
melakukan
74962c4d89
100 mengubah file dengan 4346 tambahan dan 0 penghapusan
  1. TEMPAT SAMPAH
      .DS_Store
  2. 8 0
      .idea/.gitignore
  3. 21 0
      .idea/compiler.xml
  4. 7 0
      .idea/encodings.xml
  5. 20 0
      .idea/jarRepositories.xml
  6. 12 0
      .idea/misc.xml
  7. 10 0
      .idea/runConfigurations.xml
  8. 6 0
      .idea/vcs.xml
  9. 193 0
      core/pom.xml
  10. 22 0
      core/src/main/java/com/mooctest/crowd/domain/Application.java
  11. 213 0
      core/src/main/java/com/mooctest/crowd/domain/IpAddress/AddressUtils.java
  12. 22 0
      core/src/main/java/com/mooctest/crowd/domain/IpAddress/Area.java
  13. 14 0
      core/src/main/java/com/mooctest/crowd/domain/command/AccountCommand.java
  14. 12 0
      core/src/main/java/com/mooctest/crowd/domain/command/CreateProjectCommand.java
  15. 25 0
      core/src/main/java/com/mooctest/crowd/domain/command/CrowdTestProjectCommand.java
  16. 20 0
      core/src/main/java/com/mooctest/crowd/domain/command/CrowdTestReportCommand.java
  17. 21 0
      core/src/main/java/com/mooctest/crowd/domain/command/CrowdTestTaskCommand.java
  18. 18 0
      core/src/main/java/com/mooctest/crowd/domain/command/LoginCommand.java
  19. 14 0
      core/src/main/java/com/mooctest/crowd/domain/command/ModifyPasswordCommand.java
  20. 9 0
      core/src/main/java/com/mooctest/crowd/domain/command/ProjectDetailsCommand.java
  21. 18 0
      core/src/main/java/com/mooctest/crowd/domain/command/RegisterCommand.java
  22. 19 0
      core/src/main/java/com/mooctest/crowd/domain/configuration/RoleConfiguration.java
  23. 570 0
      core/src/main/java/com/mooctest/crowd/domain/controller/CrowdTestProjectController.java
  24. 0 0
      core/src/main/java/com/mooctest/crowd/domain/controller/TestUserController.java
  25. 30 0
      core/src/main/java/com/mooctest/crowd/domain/dao/AgencyAbilityDao.java
  26. 39 0
      core/src/main/java/com/mooctest/crowd/domain/dao/AgencyResourceDao.java
  27. 28 0
      core/src/main/java/com/mooctest/crowd/domain/dao/ApplicationTypeDao.java
  28. 18 0
      core/src/main/java/com/mooctest/crowd/domain/dao/ApplicationTypeToTestTypeDao.java
  29. 20 0
      core/src/main/java/com/mooctest/crowd/domain/dao/BankCardDao.java
  30. 19 0
      core/src/main/java/com/mooctest/crowd/domain/dao/BankLogoDao.java
  31. 23 0
      core/src/main/java/com/mooctest/crowd/domain/dao/CompetitionDao.java
  32. 18 0
      core/src/main/java/com/mooctest/crowd/domain/dao/CompetitionsDao.java
  33. 16 0
      core/src/main/java/com/mooctest/crowd/domain/dao/ConfigurationDao.java
  34. 89 0
      core/src/main/java/com/mooctest/crowd/domain/dao/CrowdTestProjectDao.java
  35. 35 0
      core/src/main/java/com/mooctest/crowd/domain/dao/CrowdTestReportDao.java
  36. 79 0
      core/src/main/java/com/mooctest/crowd/domain/dao/CrowdTestTaskDao.java
  37. 24 0
      core/src/main/java/com/mooctest/crowd/domain/dao/EndPointDao.java
  38. 31 0
      core/src/main/java/com/mooctest/crowd/domain/dao/EnterpriseAuthenticationDao.java
  39. 37 0
      core/src/main/java/com/mooctest/crowd/domain/dao/EvaluationAgencyDao.java
  40. 17 0
      core/src/main/java/com/mooctest/crowd/domain/dao/ExpertDao.java
  41. 20 0
      core/src/main/java/com/mooctest/crowd/domain/dao/FieldDao.java
  42. 18 0
      core/src/main/java/com/mooctest/crowd/domain/dao/PartnerDao.java
  43. 21 0
      core/src/main/java/com/mooctest/crowd/domain/dao/PermissionDao.java
  44. 31 0
      core/src/main/java/com/mooctest/crowd/domain/dao/PersonalAuthenticationDao.java
  45. 15 0
      core/src/main/java/com/mooctest/crowd/domain/dao/ProvinceDao.java
  46. 19 0
      core/src/main/java/com/mooctest/crowd/domain/dao/PublicationsDao.java
  47. 23 0
      core/src/main/java/com/mooctest/crowd/domain/dao/QualificationDao.java
  48. 30 0
      core/src/main/java/com/mooctest/crowd/domain/dao/RegionalDao.java
  49. 33 0
      core/src/main/java/com/mooctest/crowd/domain/dao/RegionalManagerToRegionalDao.java
  50. 18 0
      core/src/main/java/com/mooctest/crowd/domain/dao/ResidentAgencyDao.java
  51. 30 0
      core/src/main/java/com/mooctest/crowd/domain/dao/ResourceDao.java
  52. 17 0
      core/src/main/java/com/mooctest/crowd/domain/dao/ResourceTokenDao.java
  53. 13 0
      core/src/main/java/com/mooctest/crowd/domain/dao/ResourceTypeDao.java
  54. 16 0
      core/src/main/java/com/mooctest/crowd/domain/dao/RoleDao.java
  55. 23 0
      core/src/main/java/com/mooctest/crowd/domain/dao/RoleToPermissionDao.java
  56. 18 0
      core/src/main/java/com/mooctest/crowd/domain/dao/SystemAdministratorToUserDao.java
  57. 33 0
      core/src/main/java/com/mooctest/crowd/domain/dao/TaskToUserDao.java
  58. 31 0
      core/src/main/java/com/mooctest/crowd/domain/dao/TechnicalArticlesDao.java
  59. 20 0
      core/src/main/java/com/mooctest/crowd/domain/dao/TestTypeDao.java
  60. 28 0
      core/src/main/java/com/mooctest/crowd/domain/dao/ToolDao.java
  61. 34 0
      core/src/main/java/com/mooctest/crowd/domain/dao/UserDao.java
  62. 31 0
      core/src/main/java/com/mooctest/crowd/domain/dao/UserTaskCountDao.java
  63. 26 0
      core/src/main/java/com/mooctest/crowd/domain/dao/UserToRoleDao.java
  64. 34 0
      core/src/main/java/com/mooctest/crowd/domain/dao/adapter/UpdateAdapter.java
  65. 64 0
      core/src/main/java/com/mooctest/crowd/domain/domainobject/Account.java
  66. 20 0
      core/src/main/java/com/mooctest/crowd/domain/domainobject/ApplicationType.java
  67. 16 0
      core/src/main/java/com/mooctest/crowd/domain/domainobject/ApplicationTypeToTestType.java
  68. 11 0
      core/src/main/java/com/mooctest/crowd/domain/domainobject/AuthenticationStatus.java
  69. 11 0
      core/src/main/java/com/mooctest/crowd/domain/domainobject/BankLogo.java
  70. 24 0
      core/src/main/java/com/mooctest/crowd/domain/domainobject/Competition.java
  71. 13 0
      core/src/main/java/com/mooctest/crowd/domain/domainobject/Configuration.java
  72. 718 0
      core/src/main/java/com/mooctest/crowd/domain/domainobject/CrowdTestProject.java
  73. 17 0
      core/src/main/java/com/mooctest/crowd/domain/domainobject/CrowdTestProjectStatus.java
  74. 52 0
      core/src/main/java/com/mooctest/crowd/domain/domainobject/CrowdTestReport.java
  75. 230 0
      core/src/main/java/com/mooctest/crowd/domain/domainobject/CrowdTestTask.java
  76. 10 0
      core/src/main/java/com/mooctest/crowd/domain/domainobject/CrowdTestTaskAcceptStatus.java
  77. 17 0
      core/src/main/java/com/mooctest/crowd/domain/domainobject/CrowdTestTaskStatus.java
  78. 10 0
      core/src/main/java/com/mooctest/crowd/domain/domainobject/DeletedStatus.java
  79. 29 0
      core/src/main/java/com/mooctest/crowd/domain/domainobject/DistributeType.java
  80. 16 0
      core/src/main/java/com/mooctest/crowd/domain/domainobject/EndPoint.java
  81. 103 0
      core/src/main/java/com/mooctest/crowd/domain/domainobject/EnterpriseAuthentication.java
  82. 127 0
      core/src/main/java/com/mooctest/crowd/domain/domainobject/EvaluationAgency.java
  83. 41 0
      core/src/main/java/com/mooctest/crowd/domain/domainobject/EvaluationAgencyAbility.java
  84. 49 0
      core/src/main/java/com/mooctest/crowd/domain/domainobject/EvaluationAgencyResource.java
  85. 16 0
      core/src/main/java/com/mooctest/crowd/domain/domainobject/Expert.java
  86. 15 0
      core/src/main/java/com/mooctest/crowd/domain/domainobject/Field.java
  87. 13 0
      core/src/main/java/com/mooctest/crowd/domain/domainobject/GeneralUser.java
  88. 14 0
      core/src/main/java/com/mooctest/crowd/domain/domainobject/Partner.java
  89. 19 0
      core/src/main/java/com/mooctest/crowd/domain/domainobject/Permission.java
  90. 109 0
      core/src/main/java/com/mooctest/crowd/domain/domainobject/PersonalAuthentication.java
  91. 16 0
      core/src/main/java/com/mooctest/crowd/domain/domainobject/ProjectDistributeType.java
  92. 21 0
      core/src/main/java/com/mooctest/crowd/domain/domainobject/Province.java
  93. 18 0
      core/src/main/java/com/mooctest/crowd/domain/domainobject/Publications.java
  94. 23 0
      core/src/main/java/com/mooctest/crowd/domain/domainobject/Regional.java
  95. 25 0
      core/src/main/java/com/mooctest/crowd/domain/domainobject/RegionalManager.java
  96. 21 0
      core/src/main/java/com/mooctest/crowd/domain/domainobject/RegionalManagerToRegional.java
  97. 28 0
      core/src/main/java/com/mooctest/crowd/domain/domainobject/ReportScopeType.java
  98. 14 0
      core/src/main/java/com/mooctest/crowd/domain/domainobject/ResidentAgency.java
  99. 28 0
      core/src/main/java/com/mooctest/crowd/domain/domainobject/Resource.java
  100. 9 0
      core/src/main/java/com/mooctest/crowd/domain/domainobject/ResourceStatus.java

TEMPAT SAMPAH
.DS_Store


+ 8 - 0
.idea/.gitignore

@@ -0,0 +1,8 @@
+# Default ignored files
+/shelf/
+/workspace.xml
+# Datasource local storage ignored files
+/dataSources/
+/dataSources.local.xml
+# Editor-based HTTP Client requests
+/httpRequests/

+ 21 - 0
.idea/compiler.xml

@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project version="4">
+  <component name="CompilerConfiguration">
+    <annotationProcessing>
+      <profile default="true" name="Default" enabled="true" />
+      <profile name="Maven default annotation processors profile" enabled="true">
+        <sourceOutputDir name="target/generated-sources/annotations" />
+        <sourceTestOutputDir name="target/generated-test-sources/test-annotations" />
+        <outputRelativeToContentRoot value="true" />
+        <module name="core" />
+        <module name="site" />
+      </profile>
+    </annotationProcessing>
+  </component>
+  <component name="JavacSettings">
+    <option name="ADDITIONAL_OPTIONS_OVERRIDE">
+      <module name="core" options="-parameters" />
+      <module name="site" options="-parameters" />
+    </option>
+  </component>
+</project>

+ 7 - 0
.idea/encodings.xml

@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project version="4">
+  <component name="Encoding">
+    <file url="file://$PROJECT_DIR$/core/src/main/java" charset="UTF-8" />
+    <file url="file://$PROJECT_DIR$/site/src/main/java" charset="UTF-8" />
+  </component>
+</project>

+ 20 - 0
.idea/jarRepositories.xml

@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project version="4">
+  <component name="RemoteRepositoriesConfiguration">
+    <remote-repository>
+      <option name="id" value="central" />
+      <option name="name" value="Central Repository" />
+      <option name="url" value="https://repo.maven.apache.org/maven2" />
+    </remote-repository>
+    <remote-repository>
+      <option name="id" value="central" />
+      <option name="name" value="Maven Central repository" />
+      <option name="url" value="https://repo1.maven.org/maven2" />
+    </remote-repository>
+    <remote-repository>
+      <option name="id" value="jboss.community" />
+      <option name="name" value="JBoss Community repository" />
+      <option name="url" value="https://repository.jboss.org/nexus/content/repositories/public/" />
+    </remote-repository>
+  </component>
+</project>

+ 12 - 0
.idea/misc.xml

@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project version="4">
+  <component name="ExternalStorageConfigurationManager" enabled="true" />
+  <component name="MavenProjectsManager">
+    <option name="originalFiles">
+      <list>
+        <option value="$PROJECT_DIR$/pom.xml" />
+      </list>
+    </option>
+  </component>
+  <component name="ProjectRootManager" version="2" languageLevel="JDK_11" project-jdk-name="1.8" project-jdk-type="JavaSDK" />
+</project>

+ 10 - 0
.idea/runConfigurations.xml

@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project version="4">
+  <component name="RunConfigurationProducerService">
+    <option name="ignoredProducers">
+      <set>
+        <option value="com.android.tools.idea.compose.preview.runconfiguration.ComposePreviewRunConfigurationProducer" />
+      </set>
+    </option>
+  </component>
+</project>

+ 6 - 0
.idea/vcs.xml

@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project version="4">
+  <component name="VcsDirectoryMappings">
+    <mapping directory="$PROJECT_DIR$" vcs="Git" />
+  </component>
+</project>

+ 193 - 0
core/pom.xml

@@ -0,0 +1,193 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<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.mooctest.crowd</groupId>
+        <artifactId>crowd</artifactId>
+        <version>1.0-SNAPSHOT</version>
+    </parent>
+    <groupId>com.mooctest.crowd</groupId>
+    <artifactId>core</artifactId>
+    <version>1.0-SNAPSHOT</version>
+
+    <dependencies>
+        <dependency>
+            <groupId>junit</groupId>
+            <artifactId>junit</artifactId>
+            <version>4.12</version>
+        </dependency>
+        <dependency>
+            <groupId>org.mockito</groupId>
+            <artifactId>mockito-all</artifactId>
+            <version>1.10.19</version>
+            <scope>test</scope>
+        </dependency>
+        <dependency>
+            <groupId>org.powermock</groupId>
+            <artifactId>powermock-module-junit4</artifactId>
+            <version>1.6.4</version>
+            <exclusions>
+                <exclusion>
+                    <artifactId>javassist</artifactId>
+                    <groupId>org.javassist</groupId>
+                </exclusion>
+                <exclusion>
+                    <artifactId>objenesis</artifactId>
+                    <groupId>org.objenesis</groupId>
+                </exclusion>
+            </exclusions>
+        </dependency>
+        <dependency>
+            <groupId>org.powermock</groupId>
+            <artifactId>powermock-api-mockito</artifactId>
+            <version>1.6.4</version>
+        </dependency>
+        <!--定位-->
+        <dependency>
+            <groupId>org.jsoup</groupId>
+            <artifactId>jsoup</artifactId>
+            <version>1.7.3</version>
+        </dependency>
+
+        <dependency>
+            <groupId>org.projectlombok</groupId>
+            <artifactId>lombok</artifactId>
+            <version>1.18.6</version>
+        </dependency>
+
+
+        <dependency>
+            <groupId>com.google.guava</groupId>
+            <artifactId>guava</artifactId>
+            <version>18.0</version>
+        </dependency>
+
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-starter-data-jpa</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-starter-web</artifactId>
+        </dependency>
+
+        <dependency>
+            <groupId>com.h2database</groupId>
+            <artifactId>h2</artifactId>
+            <scope>runtime</scope>
+        </dependency>
+        <dependency>
+            <groupId>mysql</groupId>
+            <artifactId>mysql-connector-java</artifactId>
+            <scope>runtime</scope>
+        </dependency>
+        <dependency>
+            <groupId>org.projectlombok</groupId>
+            <artifactId>lombok</artifactId>
+            <optional>true</optional>
+        </dependency>
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-starter-test</artifactId>
+            <scope>test</scope>
+        </dependency>
+
+        <dependency>
+            <groupId>org.hibernate.javax.persistence</groupId>
+            <artifactId>hibernate-jpa-2.1-api</artifactId>
+            <version>1.0.0.Final</version>
+        </dependency>
+
+        <dependency>
+            <groupId> org.springframework.boot </groupId>
+            <artifactId> spring-boot-configuration-processor</artifactId>
+            <optional> true </optional>
+        </dependency>
+
+        <dependency>
+            <groupId>com.google.code.gson</groupId>
+            <artifactId>gson</artifactId>
+            <version>2.8.5</version>
+        </dependency>
+
+        <dependency>
+            <groupId>com.alibaba</groupId>
+            <artifactId>druid-spring-boot-starter</artifactId>
+            <version>1.1.10</version>
+        </dependency>
+        <dependency>
+            <groupId>org.jetbrains</groupId>
+            <artifactId>annotations</artifactId>
+            <version>RELEASE</version>
+            <scope>compile</scope>
+        </dependency>
+
+        <!-- https://mvnrepository.com/artifact/cn.afterturn/easypoi-spring-boot-starter -->
+        <dependency>
+            <groupId>cn.afterturn</groupId>
+            <artifactId>easypoi-base</artifactId>
+            <version>3.0.3</version>
+            <exclusions>
+                <exclusion>
+                    <artifactId>guava</artifactId>
+                    <groupId>com.google.guava</groupId>
+                </exclusion>
+            </exclusions>
+        </dependency>
+        <dependency>
+            <groupId>cn.afterturn</groupId>
+            <artifactId>easypoi-web</artifactId>
+            <version>3.0.3</version>
+        </dependency>
+        <dependency>
+            <groupId>cn.afterturn</groupId>
+            <artifactId>easypoi-annotation</artifactId>
+            <version>3.0.3</version>
+        </dependency>
+
+        <dependency>
+            <groupId>redis.clients</groupId>
+            <artifactId>jedis</artifactId>
+            <version>2.9.0</version>
+        </dependency>
+
+        <dependency>
+            <groupId>commons-fileupload</groupId>
+            <artifactId>commons-fileupload</artifactId>
+            <version>1.4</version>
+        </dependency>
+
+      <dependency>
+        <groupId>com.alibaba</groupId>
+        <artifactId>fastjson</artifactId>
+        <version>1.2.58</version>
+    </dependency>
+        <dependency>
+            <groupId>com.alibaba</groupId>
+            <artifactId>fastjson</artifactId>
+            <version>1.2.58</version>
+        </dependency>
+
+
+    </dependencies>
+    <build>
+        <plugins>
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-compiler-plugin</artifactId>
+                <version>3.7.0</version>
+                <configuration>
+                    <source>1.8</source>
+                    <target>1.8</target>
+                </configuration>
+            </plugin>
+<!--            <plugin>-->
+<!--                <groupId>org.apache.maven.surefire</groupId>-->
+<!--                <artifactId>surefire-junit4</artifactId>-->
+<!--                <version>2.12.4</version>-->
+<!--            </plugin>-->
+        </plugins>
+    </build>
+</project>

+ 22 - 0
core/src/main/java/com/mooctest/crowd/domain/Application.java

@@ -0,0 +1,22 @@
+package com.mooctest.crowd.domain;
+
+import org.springframework.boot.SpringApplication;
+import org.springframework.boot.autoconfigure.SpringBootApplication;
+import org.springframework.boot.context.properties.EnableConfigurationProperties;
+import org.springframework.boot.web.servlet.ServletComponentScan;
+import org.springframework.cache.annotation.EnableCaching;
+import org.springframework.scheduling.annotation.EnableAsync;
+import org.springframework.scheduling.annotation.EnableScheduling;
+@SpringBootApplication
+@EnableConfigurationProperties
+@ServletComponentScan
+@EnableScheduling
+@EnableCaching
+@EnableAsync
+public class Application
+{
+    public static void main( String[] args )
+    {
+        SpringApplication.run(Application.class,args);
+    }
+}

+ 213 - 0
core/src/main/java/com/mooctest/crowd/domain/IpAddress/AddressUtils.java

@@ -0,0 +1,213 @@
+package com.mooctest.crowd.domain.IpAddress;
+
+import com.alibaba.fastjson.JSONObject;
+import lombok.extern.slf4j.Slf4j;
+import org.jsoup.Connection;
+import org.jsoup.Jsoup;
+
+
+import java.io.*;
+import java.net.HttpURLConnection;
+import java.net.URL;
+
+/**
+ *  根据IP地址获取本地定位 
+ */
+@Slf4j
+/**
+  * @author: xuxuan
+  * @date: 2020/7/10
+  * @description:
+  */
+public class AddressUtils {
+
+    /**
+     * 得到本机的外网ip,出现异常时返回空串"" 
+     * @return
+     */
+    public static String getPublicIP() {
+        String ip = "";
+
+        org.jsoup.nodes.Document doc = null;
+        Connection con = null;
+
+        con = Jsoup.connect("http://www.ip138.com/ip2city.asp").timeout(10000);
+
+        try {
+            doc = con.get();
+
+            // 获得包含本机ip的文本串:您的IP是:[xxx.xxx.xxx.xxx] 
+            org.jsoup.select.Elements els = doc.body().select("center");
+            for (org.jsoup.nodes.Element el : els) {
+                ip = el.text();
+            }
+
+            // 从文本串过滤出ip,用正则表达式将非数字和.替换成空串""  
+            ip = ip.replaceAll("[^0-9.]", "");
+        } catch (IOException e) {
+            e.printStackTrace();
+            return ip;
+        }
+        return ip;
+    }
+
+    /**
+     * @param urlStr
+     *            请求的地址
+     * @param content
+     *            请求的参数 格式为:name=xxx&pwd=xxx
+     * @param encoding
+     *            服务器端请求编码。如GBK,UTF-8等
+     * @return
+     */
+    private String getResult(String urlStr, String content, String encoding) {
+        URL url = null;
+        HttpURLConnection connection = null;
+        try {
+            url = new URL(urlStr);
+            connection = (HttpURLConnection) url.openConnection();// 新建连接实例
+            connection.setConnectTimeout(2000);// 设置连接超时时间,单位毫秒,如果运行时出现超时,可自行增大超时时间,如加到10000
+            connection.setReadTimeout(2000);// 设置读取数据超时时间,单位毫秒
+            connection.setDoOutput(true);// 是否打开输出流 true|false
+            connection.setDoInput(true);// 是否打开输入流true|false
+            connection.setRequestMethod("POST");// 提交方法POST|GET
+            connection.setUseCaches(false);// 是否缓存true|false
+            connection.connect();// 打开连接端口
+            DataOutputStream out = new DataOutputStream(connection
+                    .getOutputStream());// 打开输出流往对端服务器写数据
+            out.writeBytes(content);// 写数据
+            out.flush();// 刷新
+            out.close();// 关闭输出流
+            BufferedReader reader = new BufferedReader(new InputStreamReader(
+                    connection.getInputStream(), encoding));// 往对端写完数据对端服务器返回数据
+            // ,以BufferedReader流来读取
+            StringBuffer buffer = new StringBuffer();
+            String line = "";
+            while ((line = reader.readLine()) != null) {
+                buffer.append(line);
+            }
+            reader.close();
+            return buffer.toString();
+        } catch (IOException e) {
+            e.printStackTrace();
+        } finally {
+            if (connection != null) {
+                connection.disconnect();// 关闭连接
+            }
+        }
+        return null;
+    }
+
+    /**
+     * unicode 转换成 中文     *
+     * @param theString
+     * @return
+     */
+    public static String decodeUnicode(String theString) {
+        char aChar;
+        int len = theString.length();
+        StringBuffer outBuffer = new StringBuffer(len);
+        for (int x = 0; x < len;) {
+            aChar = theString.charAt(x++);
+            if (aChar == '\\') {
+                aChar = theString.charAt(x++);
+                if (aChar == 'u') {
+                    int value = 0;
+                    for (int i = 0; i < 4; i++) {
+                        aChar = theString.charAt(x++);
+                        switch (aChar) {
+                            case '0':
+                            case '1':
+                            case '2':
+                            case '3':
+                            case '4':
+                            case '5':
+                            case '6':
+                            case '7':
+                            case '8':
+                            case '9':
+                                value = (value << 4) + aChar - '0';
+                                break;
+                            case 'a':
+                            case 'b':
+                            case 'c':
+                            case 'd':
+                            case 'e':
+                            case 'f':
+                                value = (value << 4) + 10 + aChar - 'a';
+                                break;
+                            case 'A':
+                            case 'B':
+                            case 'C':
+                            case 'D':
+                            case 'E':
+                            case 'F':
+                                value = (value << 4) + 10 + aChar - 'A';
+                                break;
+                            default:
+                                throw new IllegalArgumentException(
+                                        "Malformed      encoding.");
+                        }
+                    }
+                    outBuffer.append((char) value);
+                } else {
+                    if (aChar == 't') {
+                        aChar = '\t';
+                    } else if (aChar == 'r') {
+                        aChar = '\r';
+                    } else if (aChar == 'n') {
+                        aChar = '\n';
+                    } else if (aChar == 'f') {
+                        aChar = '\f';
+                    }
+                    outBuffer.append(aChar);
+                }
+            } else {
+                outBuffer.append(aChar);
+            }
+        }
+        return outBuffer.toString();
+    }
+
+    /**
+     *
+     * @param content
+     *            请求的参数 格式为:name=xxx&pwd=xxx
+     * @param encodingString
+     *            服务器端请求编码。如GBK,UTF-8等
+     * @return
+     * @throws UnsupportedEncodingException
+     */
+    public Area getAddresses(String content, String encodingString)
+            throws UnsupportedEncodingException {
+        // 这里调用PC-Online的接口
+        String urlStr = "http://whois.pconline.com.cn/ipJson.jsp?ip="+content+"&json=true";
+        log.info("urlStr=========="+urlStr);
+        // 从http://whois.pconline.com.cn取得IP所在的省市区信息
+        String returnStr = this.getResult(urlStr, content, encodingString);
+        log.info("返回数据================="+returnStr);
+        JSONObject jsonObject = JSONObject.parseObject(returnStr);
+        String  address=jsonObject.getString("addr");
+        Area area=new Area(jsonObject.getString("pro"),jsonObject.getString("city"));
+        return area;
+    }
+
+    // 这里我们举的例子是获取所在地省份名称,也可以改变上边getAddress的返回值,获取具体的市县名
+    public static Area getProvinceName(String ip){
+        AddressUtils addressUtils = new AddressUtils();
+
+        Area area = null;
+        try {
+            area = addressUtils.getAddresses("ip="+ip, "GBK");
+        } catch (UnsupportedEncodingException e) {
+            e.printStackTrace();
+        }
+        return area;
+    }
+
+    //Main,输出省名
+    public static void main(String[] args) throws Exception {
+        Area address= getProvinceName("");
+        System.out.println(address);
+    }
+}

+ 22 - 0
core/src/main/java/com/mooctest/crowd/domain/IpAddress/Area.java

@@ -0,0 +1,22 @@
+package com.mooctest.crowd.domain.IpAddress;
+
+import lombok.Data;
+
+/**
+ * @author:xx
+ * @date:2020/7/10
+ * @description:
+ */
+
+@Data
+public class Area {
+
+    private String pro;//省
+    private String city;
+
+    public Area(String pro, String city) {
+        this.pro = pro;
+        this.city = city;
+    }
+
+}

+ 14 - 0
core/src/main/java/com/mooctest/crowd/domain/command/AccountCommand.java

@@ -0,0 +1,14 @@
+package com.mooctest.crowd.domain.command;
+
+import lombok.Data;
+
+/**
+ * @Author: xuexb
+ * @Date: 2019.7.5 14:24
+ */
+@Data
+public class AccountCommand {
+    private Long id;
+    private String mobileNum;
+    private String password;
+}

+ 12 - 0
core/src/main/java/com/mooctest/crowd/domain/command/CreateProjectCommand.java

@@ -0,0 +1,12 @@
+package com.mooctest.crowd.domain.command;
+
+import lombok.Data;
+
+/**
+ * @author: Diors.Po
+ * @Email: 171256175@qq.com
+ * @date 2019-07-25 14:37
+ */
+@Data
+public class CreateProjectCommand {
+}

+ 25 - 0
core/src/main/java/com/mooctest/crowd/domain/command/CrowdTestProjectCommand.java

@@ -0,0 +1,25 @@
+package com.mooctest.crowd.domain.command;
+
+import lombok.Data;
+
+import java.sql.Timestamp;
+
+/**
+ * @author guochao
+ * @date 2019/7/6 18:50
+ */
+@Data
+public class CrowdTestProjectCommand {
+    private Long id;
+    private String name;
+    private Long userId;
+    private Long regionalManagerId;
+    private Long distributeId;
+    private String description;
+    private String projectFile;
+    private String requirementFile;
+    private Double quotedPrice;
+    private Double fixedPrice;
+    private String status;
+    private Timestamp creatTime;
+}

+ 20 - 0
core/src/main/java/com/mooctest/crowd/domain/command/CrowdTestReportCommand.java

@@ -0,0 +1,20 @@
+package com.mooctest.crowd.domain.command;
+
+import lombok.Data;
+
+/**
+ * @author guochao
+ * @date 2019/7/11 14:16
+ */
+@Data
+public class CrowdTestReportCommand {
+
+    private Long id;
+    private Long crowdTestProjectId;
+    private Long crowdTestTaskId;
+    private String type;
+    private String description;
+    private String content;
+    private String status;
+
+}

+ 21 - 0
core/src/main/java/com/mooctest/crowd/domain/command/CrowdTestTaskCommand.java

@@ -0,0 +1,21 @@
+package com.mooctest.crowd.domain.command;
+
+import lombok.Data;
+
+/**
+ * @author guochao
+ * @date 2019/7/11 14:14
+ */
+@Data
+public class CrowdTestTaskCommand {
+    private Long id;
+    private String name;
+    private Long crowdTestProjectId;
+    private Long evaluationAgencyId;
+    private String type;
+    private String resource; // 可见性 0-定向 2-广场
+    private String description;
+    private String requirementFile;
+    private Double price;
+    private String status;
+}

+ 18 - 0
core/src/main/java/com/mooctest/crowd/domain/command/LoginCommand.java

@@ -0,0 +1,18 @@
+package com.mooctest.crowd.domain.command;
+
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+/**
+ * @Author: xuexb
+ * @Date: 2019.7.5 14:24
+ */
+@Data
+@NoArgsConstructor
+@AllArgsConstructor
+public class LoginCommand {
+    private String mobileNum;
+    private String password;
+    private String checkCode;
+}

+ 14 - 0
core/src/main/java/com/mooctest/crowd/domain/command/ModifyPasswordCommand.java

@@ -0,0 +1,14 @@
+package com.mooctest.crowd.domain.command;
+
+import lombok.Data;
+
+/**
+ * @author guochao
+ * @date 2019/7/5 19:13
+ */
+@Data
+public class ModifyPasswordCommand {
+    private String mobileNum;
+    private String oldPassword;
+    private String newPassword;
+}

+ 9 - 0
core/src/main/java/com/mooctest/crowd/domain/command/ProjectDetailsCommand.java

@@ -0,0 +1,9 @@
+package com.mooctest.crowd.domain.command;
+
+/**
+ * @author: Diors.Po
+ * @Email: 171256175@qq.com
+ * @date 2019-07-25 14:42
+ */
+public class ProjectDetailsCommand {
+}

+ 18 - 0
core/src/main/java/com/mooctest/crowd/domain/command/RegisterCommand.java

@@ -0,0 +1,18 @@
+package com.mooctest.crowd.domain.command;
+
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+/**
+ * @Author: xuexb
+ * @Date: 2019.7.5 14:09
+ */
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+public class RegisterCommand {
+    private String mobileNum;
+    private String checkCode;
+    private String password;
+}

+ 19 - 0
core/src/main/java/com/mooctest/crowd/domain/configuration/RoleConfiguration.java

@@ -0,0 +1,19 @@
+package com.mooctest.crowd.domain.configuration;
+
+import lombok.Data;
+import org.springframework.boot.context.properties.ConfigurationProperties;
+import org.springframework.stereotype.Component;
+
+/**
+ * Created by guochao on 2019/8/12.
+ */
+@Data
+@Component
+@ConfigurationProperties(prefix = "role-list")
+public class RoleConfiguration {
+    private Long generalUser;
+    private Long evaluationAgency;
+    private Long regionalManager;
+    private Long systemAdministrator;
+    private Long enterpriseUser;
+}

+ 570 - 0
core/src/main/java/com/mooctest/crowd/domain/controller/CrowdTestProjectController.java

@@ -0,0 +1,570 @@
+package com.mooctest.crowd.domain.controller;
+
+import com.mooctest.crowd.domain.repository.CrowdTestProjectRepo;
+import com.mooctest.crowd.domain.repository.UserRepo;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ * @author guochao
+ * @date 2019-07-27 15:46
+ */
+
+@RestController
+@RequestMapping("/project/")
+public class CrowdTestProjectController {
+
+
+
+//    @RequestMapping(value = "findById/{crowdTestProjectId}", method = RequestMethod.GET)
+//    public String getCrowdTestProjectById(@PathVariable("crowdTestProjectId") Long crowdTestProjectId){
+//        CrowdTestProject crowdTestProject = crowdTestProjectRepo.getByID(crowdTestProjectId);
+//        return crowdTestProject.toString();
+//    }
+//
+//    @RequestMapping(value = "findByProjectCode/{crowdTestProjectCode}", method = RequestMethod.GET)
+//    public String getCrowdTestProjectByProjectCode(@PathVariable("crowdTestProjectCode") String crowdTestProjectCode){
+//        CrowdTestProject crowdTestProject = crowdTestProjectRepo.getByProjectCode(crowdTestProjectCode);
+//        return crowdTestProject.toString();
+//    }
+//
+//    @RequestMapping(value = "findByUserId/{userId}", method = RequestMethod.GET)
+//    public String getAllCrowdTestProjectByUserId(@PathVariable("userId") Long userId){
+//        List<CrowdTestProject> allCrowdTestProject = crowdTestProjectRepo.getCrowdListByUserId(userId);
+//        return allCrowdTestProject.toString();
+//    }
+//
+//    @RequestMapping(value = "findByRMId/{regionalManagerId}", method = RequestMethod.GET)
+//    public String getAllCrowdTestProjectByRMId(@PathVariable("regionalManagerId") Long regionalManagerId){
+//        List<CrowdTestProject> allCrowdTestProject = crowdTestProjectRepo.getCrowdListByRegionalManagerId(regionalManagerId);
+//        return allCrowdTestProject.toString();
+//    }
+//
+//    @RequestMapping(value = "findAll", method = RequestMethod.GET)
+//    public String getAllCrowdTestProject(){
+//        List<CrowdTestProject> allCrowdTestProject = crowdTestProjectRepo.getAllCrowdTestProject();
+//        return allCrowdTestProject.toString();
+//    }
+//
+//    /**
+//     * 删除项目(普通用户)
+//     * @param crowdTestProjectCode
+//     * @return
+//     */
+//    @RequestMapping(value = "deleteProject/{userId}/{crowdTestProjectCode}", method = RequestMethod.GET)
+//    public String deleteCrowdTestProjectByProjectCode(@PathVariable("crowdTestProjectCode") String crowdTestProjectCode,@PathVariable("userId") Long userId) {
+//
+//        User user = userRepo.getByID(userId);
+//        CrowdTestProject crowdTestProject = crowdTestProjectRepo.getByProjectCode(crowdTestProjectCode);
+//        CrowdTestProject crowdTestProjectResult = crowdTestProject.removeCrowdTestProject(user);
+//        crowdTestProjectRepo.saveCrowdTestProject(crowdTestProjectResult);
+//        return "success";
+//    }
+//
+//    /**
+//     * 删除任务(区域管理员)
+//     * @param crowdTestProjectCode
+//     * @param crowdTestTaskCode
+//     * @return
+//     */
+//    @RequestMapping(value = "deleteTask/{userId}/{crowdTestProjectCode}/{crowdTestTaskCode}", method = RequestMethod.GET)
+//    public String deleteCrowdTestTask(@PathVariable("crowdTestProjectCode") String crowdTestProjectCode,
+//                                      @PathVariable("crowdTestTaskCode") String crowdTestTaskCode,
+//                                      @PathVariable("userId") Long userId) {
+//        User user = userRepo.getByID(userId);
+//        CrowdTestProject crowdTestProject = crowdTestProjectRepo.getByProjectCode(crowdTestProjectCode);
+//        CrowdTestProject crowdTestProjectResult = crowdTestProject.removeCrowdTestTask(crowdTestTaskCode,user);
+//        crowdTestProjectRepo.saveCrowdTestProject(crowdTestProjectResult);
+//        return crowdTestProjectRepo.getByProjectCode(crowdTestProjectResult.getCode()).toString();
+//    }
+//
+//    /**
+//     * 删除任务报告(测评机构)
+//     * @param crowdTestProjectCode
+//     * @param crowdTestTaskCode
+//     * @param crowdTestReportCode
+//     * @return
+//     */
+//    @RequestMapping(value = "deleteReport/{userId}/{crowdTestProjectCode}/{crowdTestTaskCode}/{crowdTestReportCode}", method = RequestMethod.GET)
+//    public String deleteCrowdTestReport(@PathVariable("crowdTestProjectCode") String crowdTestProjectCode,
+//                                        @PathVariable("crowdTestTaskCode") String crowdTestTaskCode,
+//                                        @PathVariable("crowdTestReportCode") String crowdTestReportCode,
+//                                        @PathVariable("userId") Long userId) {
+//        User user = userRepo.getByID(userId);
+//        CrowdTestProject crowdTestProject = crowdTestProjectRepo.getByProjectCode(crowdTestProjectCode);
+//        CrowdTestProject crowdTestProjectResult = crowdTestProject.removeCrowdTestReport(crowdTestTaskCode,crowdTestReportCode,user);
+//        crowdTestProjectRepo.saveCrowdTestProject(crowdTestProjectResult);
+//        return crowdTestProjectRepo.getByProjectCode(crowdTestProjectResult.getCode()).toString();
+//    }
+//
+//    /**
+//     * 删除项目报告(区域管理员)
+//     * @param crowdTestProjectCode
+//     * @return
+//     */
+//    @RequestMapping(value = "deleteProjectReport/{userId}/{crowdTestProjectCode}/{crowdTestProjectReportCode}", method = RequestMethod.GET)
+//    public String deleteCrowdTestReport(@PathVariable("userId") Long userId,
+//                                        @PathVariable("crowdTestProjectCode") String crowdTestProjectCode,
+//                                        @PathVariable("crowdTestProjectReportCode") String crowdTestProjectReportCode) {
+//        User user = userRepo.getByID(userId);
+//        CrowdTestProject crowdTestProject = crowdTestProjectRepo.getByProjectCode(crowdTestProjectCode);
+//        CrowdTestProject crowdTestProjectResult = crowdTestProject.removeCrowdTestProjectReport(crowdTestProjectReportCode,user);
+//        crowdTestProjectRepo.saveCrowdTestProject(crowdTestProjectResult);
+//        return crowdTestProjectRepo.getByProjectCode(crowdTestProjectResult.getCode()).toString();
+//    }
+//
+//
+//    @RequestMapping(value = "deleteListByProjectCode/{crowdTestProjectCode1}/{crowdTestProjectCode2}", method = RequestMethod.GET)
+//    public void deleteCrowdTestProjectByProjectCode(@PathVariable("crowdTestProjectCode1") String crowdTestProjectCode1,
+//                                                    @PathVariable("crowdTestProjectCode2") String crowdTestProjectCode2) {
+//        CrowdTestProject crowdTestProject1 = crowdTestProjectRepo.getByProjectCode(crowdTestProjectCode1);
+//        CrowdTestProject crowdTestProject2 = crowdTestProjectRepo.getByProjectCode(crowdTestProjectCode2);
+//        List<CrowdTestProject> crowdTestProjectList = new ArrayList<>();
+//        crowdTestProjectList.add(crowdTestProject1);
+//        crowdTestProjectList.add(crowdTestProject2);
+//        crowdTestProjectRepo.removeCrowdTestProjectList(crowdTestProjectList);
+//    }
+//
+//
+//    /**
+//     * 对项目聚合根的操作
+//     */
+//
+//    @RequestMapping(value = "modifyProject/{crowdTestProjectCode}/{linkMan}", method = RequestMethod.GET)
+//    public void modifyCrowdTestProject(@PathVariable("crowdTestProjectCode") String crowdTestProjectCode,@PathVariable("linkMan") String linkMan){
+//        CrowdTestProject crowdTestProjectModify;
+//
+//        CrowdTestProject crowdTestProject = crowdTestProjectRepo.getByProjectCode(crowdTestProjectCode);
+//        Gson gson = new Gson();
+//        crowdTestProjectModify = gson.fromJson(gson.toJson(crowdTestProject), CrowdTestProject.class);
+//        crowdTestProjectModify.setLinkMan(linkMan);
+//        CrowdTestProject updateCrowdTestProject = crowdTestProject.updateCrowdTestProject(crowdTestProjectModify);
+//        crowdTestProjectRepo.saveCrowdTestProject(updateCrowdTestProject);
+//    }
+//
+//
+//    @RequestMapping(value = "modifyTask/{crowdTestProjectCode}/{crowdTestTaskCode}/{taskName}", method = RequestMethod.GET)
+//    public void modifyCrowdTestTask(@PathVariable("crowdTestProjectCode") String crowdTestProjectCode, @PathVariable("crowdTestTaskCode") String crowdTestTaskCode,
+//                                      @PathVariable("taskName") String taskName){
+//        CrowdTestTask crowdTestTaskModify = new CrowdTestTask();
+//        CrowdTestProject crowdTestProject = crowdTestProjectRepo.getByProjectCode(crowdTestProjectCode);
+//        List<CrowdTestTask> crowdTestTaskList = crowdTestProject.getCrowdTestTaskList();
+//        for(CrowdTestTask crowdTestTaskSelect : crowdTestTaskList){
+//            if(crowdTestTaskCode.equals(crowdTestTaskSelect.getCode())){
+//                // 使用Gson序列化进行深拷贝
+//                Gson gson = new Gson();
+//                crowdTestTaskModify = gson.fromJson(gson.toJson(crowdTestTaskSelect), CrowdTestTask.class);
+//            }
+//        }
+//        crowdTestTaskModify.setName(taskName);
+//        CrowdTestProject updateCrowdTestProject = crowdTestProject.updateCrowdTestTask(crowdTestTaskCode, crowdTestTaskModify);
+//        crowdTestProjectRepo.saveCrowdTestProject(updateCrowdTestProject);
+//    }
+//
+////    @RequestMapping(value = "modifyReport/{crowdTestProjectCode}/{crowdTestTaskCode}/{crowdTestReportCode}/{reportName}", method = RequestMethod.GET)
+////    public void modifyCrowdTestReport(@PathVariable("crowdTestProjectCode") String crowdTestProjectCode, @PathVariable("crowdTestTaskCode") String crowdTestTaskCode,
+////                                      @PathVariable("crowdTestReportCode") String crowdTestReportCode, @PathVariable("reportName") String reportName){
+////        CrowdTestReport crowdTestReportModify = new CrowdTestReport();
+////        CrowdTestProject crowdTestProject = crowdTestProjectRepo.getByProjectCode(crowdTestProjectCode);
+////        for(CrowdTestTask crowdTestTask : crowdTestProject.getCrowdTestTaskList()){
+////            if(crowdTestTaskCode.equals(crowdTestTask.getCode())){
+////                for(CrowdTestReport crowdTestReport : crowdTestTask.getCrowdTestReportList()){
+////                    if(crowdTestReportCode.equals(crowdTestReport.getCode())){
+////                        Gson gson = new Gson();
+////                        crowdTestReportModify = gson.fromJson(gson.toJson(crowdTestReport), CrowdTestReport.class);
+////                    }
+////                }
+////            }
+////        }
+////        crowdTestReportModify.setName(reportName);
+////        CrowdTestProject updateCrowdTestProject = crowdTestProject.updateCrowdTestReport(crowdTestTaskCode, crowdTestReportCode, crowdTestReportModify);
+////        crowdTestProjectRepo.saveCrowdTestProject(updateCrowdTestProject);
+////    }
+//
+//    /*普通用户DO*/
+//    /**
+//     * 新建项目(普通用户)
+//     * @param userId
+//     * @param projectName
+//     * @return
+//     */
+//    @RequestMapping(value = "createProject/{userId}/{projectName}", method = RequestMethod.GET)
+//    public String createCrowdTestProject(@PathVariable("userId") Long userId,@PathVariable("projectName") String projectName){
+//        //数据准备
+//        CrowdTestProject crowdTestProject = new CrowdTestProject();
+//        crowdTestProject.setCode("PRO"+System.currentTimeMillis());
+//        crowdTestProject.setName(projectName);
+//        crowdTestProject.setProjectDistributionTypeId(1L);
+//        crowdTestProject.setLinkMan("郭超");
+//        crowdTestProject.setApplicationType("IOS");
+//        crowdTestProject.setType("安卓测试");
+//        crowdTestProject.setDescription("测试内容");
+//        crowdTestProject.setLinkManMobile("13657094936");
+//        crowdTestProject.setQuotedPrice(200.00);
+//        crowdTestProject.setDeadTime(new Timestamp(getNextDay(new Date(System.currentTimeMillis()),1).getTime()));
+//
+//        User user = userRepo.getByID(userId);
+//        crowdTestProject.setUserId(user.getId());
+//        crowdTestProject.setDistributionProvince(user.getProvince());
+//        crowdTestProject.setDistributionCity(user.getCity());
+//
+//        CrowdTestProject crowdTestProjectResult = crowdTestProject.createCrowdTestProject(user);
+//        crowdTestProjectRepo.saveCrowdTestProject(crowdTestProjectResult);
+//        return crowdTestProjectRepo.getByProjectCode(crowdTestProjectResult.getCode()).toString();
+//    }
+//
+//    /**
+//     * 发布项目(普通用户)
+//     * @param userId
+//     * @param crowdTestProjectCode
+//     * @return
+//     */
+//    @RequestMapping(value = "releaseProject/{userId}/{crowdTestProjectCode}", method = RequestMethod.GET)
+//    public String releaseCrowdTestProject(@PathVariable("userId") Long userId,@PathVariable("crowdTestProjectCode") String crowdTestProjectCode){
+//        CrowdTestProject crowdTestProject = crowdTestProjectRepo.getByProjectCode(crowdTestProjectCode);
+//        User user = userRepo.getByID(userId);
+//        CrowdTestProject  crowdTestProjectResult = crowdTestProject.releaseCrowdTestProject(user);
+//        crowdTestProjectRepo.saveCrowdTestProject(crowdTestProjectResult);
+//        return crowdTestProjectRepo.getByProjectCode(crowdTestProjectResult.getCode()).toString();
+//    }
+//
+//
+//    /**
+//     * 对区域管理员的操作
+//     */
+//
+//
+//    /**
+//     * 接收项目(区域管理员)
+//     * @param userForRegionalManagerId
+//     * @param crowdTestProjectCode
+//     * @return
+//     */
+//    @RequestMapping(value = "receiveProject/{userForRegionalManagerId}/{crowdTestProjectCode}", method = RequestMethod.GET)
+//    public String receiveTaskByProjectCode(@PathVariable("userForRegionalManagerId") Long userForRegionalManagerId, @PathVariable("crowdTestProjectCode") String crowdTestProjectCode) {
+//        CrowdTestProject crowdTestProject = crowdTestProjectRepo.getByProjectCode(crowdTestProjectCode);
+//
+//        User userForRegionalManager = userRepo.getByID(userForRegionalManagerId);
+////        RegionalManager regionalManager = userForRegionalManager.getRegionalManager();
+////        CrowdTestProject crowdTestProjectResult = regionalManager.receiveProject(crowdTestProject);
+//
+//        CrowdTestProject crowdTestProjectResult = crowdTestProject.receiveProject(userForRegionalManager);
+//        crowdTestProjectResult.setRegionalManagerId(userForRegionalManagerId);
+//        crowdTestProjectRepo.saveCrowdTestProject(crowdTestProject);
+//        return crowdTestProjectResult.toString();
+//    }
+//
+//
+//    /**
+//     * 项目中新建任务(区域管理员拆分项目)
+//     * @param crowdTestProjectCode
+//     * @param taskName
+//     * @return
+//     */
+//    @RequestMapping(value = "createTask/{regionalManagerId}/{crowdTestProjectCode}/{taskName}", method = RequestMethod.GET)
+//    public String createCrowdTestTask(@PathVariable("regionalManagerId") Long regionalManagerId,@PathVariable("crowdTestProjectCode") String crowdTestProjectCode,@PathVariable("taskName") String taskName){
+//        //数据准备
+//        CrowdTestTask crowdTestTask = new CrowdTestTask();
+//        crowdTestTask.setCode(crowdTestProjectCode+"_TASK"+System.currentTimeMillis());
+//        crowdTestTask.setName(taskName);
+//        crowdTestTask.setCrowdTestProjectCode(crowdTestProjectCode);
+//        crowdTestTask.setType("接口测试");
+//        crowdTestTask.setDescription("测试任务");
+//        crowdTestTask.setDistributionType(0L);
+//        crowdTestTask.setQuotedPrice(200.00);
+//        crowdTestTask.setDeadTime(new Timestamp(getNextDay(new Date(System.currentTimeMillis()),1).getTime()));
+//        crowdTestTask.setCreateTime(new Timestamp(System.currentTimeMillis()));
+//
+//        //具体操作
+//        CrowdTestProject crowdTestProject = crowdTestProjectRepo.getByProjectCode(crowdTestProjectCode);
+//
+//        User userForRegionalManager = userRepo.getByID(regionalManagerId);
+////        RegionalManager regionalManager = userForRegionalManager.getRegionalManager();
+////        CrowdTestProject crowdTestProjectResult = regionalManager.createCrowdTestTask(crowdTestProject, crowdTestTask);
+//        CrowdTestProject crowdTestProjectResult = crowdTestProject.createCrowdTestTask(crowdTestTask, userForRegionalManager);
+//        crowdTestTask.setDistributionProvince(crowdTestProject.getDistributionProvince());
+//        crowdTestTask.setDistributionCity(crowdTestProject.getDistributionCity());
+//        crowdTestProjectRepo.saveCrowdTestProject(crowdTestProjectResult);
+//        return crowdTestProjectRepo.getByProjectCode(crowdTestProjectResult.getCode()).toString();
+//    }
+//
+//    /**
+//     * 发布任务(区域管理员)
+//     * @param crowdTestProjectCode
+//     * @return
+//     */
+//    @RequestMapping(value = "releaseTask/{regionalManagerId}/{crowdTestProjectCode}/{crowdTestTaskCode}", method = RequestMethod.GET)
+//    public String releaseCrowdTestTask(@PathVariable("regionalManagerId") Long regionalManagerId,@PathVariable("crowdTestProjectCode") String crowdTestProjectCode,
+//                                       @PathVariable("crowdTestTaskCode") String crowdTestTaskCode){
+//        CrowdTestProject crowdTestProject = crowdTestProjectRepo.getByProjectCode(crowdTestProjectCode);
+//        User user = userRepo.getByID(regionalManagerId);
+//        CrowdTestProject crowdTestProjectResult = crowdTestProject.releaseCrowdTestTask(crowdTestTaskCode, user);
+//        crowdTestProjectRepo.saveCrowdTestProject(crowdTestProjectResult);
+//        return crowdTestProjectRepo.getByProjectCode(crowdTestProjectResult.getCode()).toString();
+//    }
+//
+//    /**
+//     * 对测评机构的操作
+//     */
+//
+//    /**
+//     * 接收任务(测评机构)
+//     * @param userForEvaluationAgencyId
+//     * @param crowdTestProjectCode
+//     * @param crowdTestTaskCode
+//     * @return
+//     */
+//    @RequestMapping(value = "receiveTask/{userForEvaluationAgencyId}/{crowdTestProjectCode}/{crowdTestTaskCode}", method = RequestMethod.GET)
+//    public String receiveTaskByProjectCode(@PathVariable("userForEvaluationAgencyId") Long userForEvaluationAgencyId, @PathVariable("crowdTestProjectCode") String crowdTestProjectCode,
+//                                                    @PathVariable("crowdTestTaskCode") String crowdTestTaskCode) {
+//        CrowdTestProject crowdTestProject = crowdTestProjectRepo.getByProjectCode(crowdTestProjectCode);
+//
+//        User userForEvaluationAgency = userRepo.getByID(userForEvaluationAgencyId);
+////        CrowdTestProject crowdTestProjectResult = userForEvaluationAgency.receiveTask(crowdTestProject, crowdTestTaskCode);
+//
+//        CrowdTestProject crowdTestProjectResult = crowdTestProject.receiveTask(crowdTestTaskCode, userForEvaluationAgency);
+//
+//        crowdTestProjectRepo.saveCrowdTestProject(crowdTestProjectResult);
+//        return crowdTestProjectRepo.getByProjectCode(crowdTestProjectResult.getCode()).toString();
+//    }
+//
+//    /**
+//     * 项目的任务中新建报告(测评机构)
+//     * @param crowdTestProjectCode
+//     * @param reportName
+//     * @return
+//     */
+//    @RequestMapping(value = "createReport/{userForEvaluationAgencyId}/{crowdTestProjectCode}/{crowdTestTaskCode}/{reportName}", method = RequestMethod.GET)
+//    public String createCrowdTestReport(@PathVariable("crowdTestProjectCode") String crowdTestProjectCode,@PathVariable("userForEvaluationAgencyId") Long userForEvaluationAgencyId,
+//                                        @PathVariable("reportName") String reportName, @PathVariable("crowdTestTaskCode") String crowdTestTaskCode){
+//
+//
+//        //report数据准备
+//        CrowdTestReport crowdTestReport = new CrowdTestReport();
+//        crowdTestReport.setCode(crowdTestTaskCode+"_REP"+System.currentTimeMillis());
+//        crowdTestReport.setName(reportName);
+//        crowdTestReport.setCreateTime(new Timestamp(System.currentTimeMillis()));
+//
+//        CrowdTestProject crowdTestProject = crowdTestProjectRepo.getByProjectCode(crowdTestProjectCode);
+//        User userForEvaluationAgency = userRepo.getByID(userForEvaluationAgencyId);
+////        CrowdTestProject crowdTestProjectResult = userForEvaluationAgency.createCrowdTestReport(crowdTestProject, crowdTestTaskCode, crowdTestReport);
+//        CrowdTestProject crowdTestProjectResult = crowdTestProject.createCrowdTestReport(crowdTestTaskCode, crowdTestReport, userForEvaluationAgency);
+//
+//        crowdTestProjectRepo.saveCrowdTestProject(crowdTestProjectResult);
+//        return crowdTestProjectRepo.getByProjectCode(crowdTestProjectResult.getCode()).toString();
+//    }
+//
+//    /**
+//     * 提交任务(测评机构)
+//     * @param crowdTestProjectCode
+//     * @param userForEvaluationAgencyId
+//     * @param crowdTestTaskCode
+//     * @return
+//     */
+//    @RequestMapping(value = "commitTask/{userForEvaluationAgencyId}/{crowdTestProjectCode}/{crowdTestTaskCode}", method = RequestMethod.GET)
+//    public String commitCrowdTestReport(@PathVariable("crowdTestProjectCode") String crowdTestProjectCode,@PathVariable("userForEvaluationAgencyId") Long userForEvaluationAgencyId,
+//                                        @PathVariable("crowdTestTaskCode") String crowdTestTaskCode){
+//
+//        CrowdTestProject crowdTestProject = crowdTestProjectRepo.getByProjectCode(crowdTestProjectCode);
+//        User userForEvaluationAgency = userRepo.getByID(userForEvaluationAgencyId);
+////        CrowdTestProject crowdTestProjectResult = userForEvaluationAgency.commitCrowdTestTask(crowdTestProject, crowdTestTaskCode);
+//
+//        CrowdTestProject crowdTestProjectResult = crowdTestProject.commitCrowdTestTask(crowdTestTaskCode, userForEvaluationAgency);
+//
+//        crowdTestProjectRepo.saveCrowdTestProject(crowdTestProjectResult);
+//        return crowdTestProjectRepo.getByProjectCode(crowdTestProjectResult.getCode()).toString();
+//    }
+//
+//    /**
+//     * 区域管理员的操作
+//     */
+//
+//
+//    /**
+//     * 确认结束任务(区域管理员)
+//     * @param crowdTestProjectCode
+//     * @return
+//     */
+//    @RequestMapping(value = "finishTask/{regionalManagerId}/{crowdTestProjectCode}/{crowdTestTaskCode}", method = RequestMethod.GET)
+//    public String commitCrowdTestTask(@PathVariable("regionalManagerId") Long regionalManagerId,@PathVariable("crowdTestProjectCode") String crowdTestProjectCode,
+//                                      @PathVariable("crowdTestTaskCode") String crowdTestTaskCode){
+//        CrowdTestProject crowdTestProject = crowdTestProjectRepo.getByProjectCode(crowdTestProjectCode);
+//        User user = userRepo.getByID(regionalManagerId);
+//        CrowdTestProject crowdTestProjectResult = crowdTestProject.finishCrowdTestTask(crowdTestTaskCode,user);
+//        crowdTestProjectRepo.saveCrowdTestProject(crowdTestProjectResult);
+//        return crowdTestProjectRepo.getByProjectCode(crowdTestProjectResult.getCode()).toString();
+//    }
+//
+//    /**
+//     * 创建项目报告(区域管理员)
+//     * @param crowdTestProjectCode
+//     * @return
+//     */
+//    @RequestMapping(value = "createProjectReport/{regionalManagerId}/{crowdTestProjectCode}/{projectReportName}", method = RequestMethod.GET)
+//    public String createCrowdTestReport(@PathVariable("crowdTestProjectCode") String crowdTestProjectCode,
+//                                        @PathVariable("regionalManagerId") Long regionalManagerId,
+//                                        @PathVariable("projectReportName") String projectReportName){
+//
+//        CrowdTestProject crowdTestProject = crowdTestProjectRepo.getByProjectCode(crowdTestProjectCode);
+//
+//        //report数据准备
+//        CrowdTestReport crowdTestReport = new CrowdTestReport();
+//        crowdTestReport.setCode(crowdTestProjectCode+"_REP"+System.currentTimeMillis());
+//        crowdTestReport.setName(projectReportName);
+//        crowdTestReport.setDependencyCode(crowdTestProjectCode);
+//        crowdTestReport.setCreateTime(new Timestamp(System.currentTimeMillis()));
+//
+//        User userForRegionalManager = userRepo.getByID(regionalManagerId);
+////        RegionalManager regionalManager = userForRegionalManager.getRegionalManager();
+////        CrowdTestProject crowdTestProjectResult = regionalManager.createCrowdTestProjectReport(crowdTestProject, crowdTestReport);
+//
+//        CrowdTestProject crowdTestProjectResult = crowdTestProject.createCrowdTestProjectReport(crowdTestReport, userForRegionalManager);
+//        crowdTestProjectRepo.saveCrowdTestProject(crowdTestProjectResult);
+//        return crowdTestProjectRepo.getByProjectCode(crowdTestProjectResult.getCode()).toString();
+//    }
+//
+//    /**
+//     * 提交项目(区域管理员)
+//     * @param crowdTestProjectCode
+//     * @return
+//     */
+//    @RequestMapping(value = "commitProject/{regionalManagerId}/{crowdTestProjectCode}", method = RequestMethod.GET)
+//    public String commitProject(@PathVariable("regionalManagerId") Long regionalManagerId,@PathVariable("crowdTestProjectCode") String crowdTestProjectCode){
+//        CrowdTestProject crowdTestProject = crowdTestProjectRepo.getByProjectCode(crowdTestProjectCode);
+//        User userForRegionalManager = userRepo.getByID(regionalManagerId);
+////        RegionalManager regionalManager = userForRegionalManager.getRegionalManager();
+////        CrowdTestProject crowdTestProjectResult = regionalManager.commitCrowdTestProject(crowdTestProject);
+//        CrowdTestProject crowdTestProjectResult = crowdTestProject.commitCrowdTestProject(userForRegionalManager);
+//        crowdTestProjectRepo.saveCrowdTestProject(crowdTestProjectResult);
+//        return crowdTestProjectRepo.getByProjectCode(crowdTestProjectResult.getCode()).toString();
+//    }
+//
+//    /**
+//     * 对普通用户的操作
+//     */
+//
+//    /**
+//     * 结束项目(普通用户)
+//     * @param crowdTestProjectCode
+//     * @return
+//     */
+//    @RequestMapping(value = "finishProject/{userId}/{crowdTestProjectCode}", method = RequestMethod.GET)
+//    public String finishProject(@PathVariable("userId") Long userId,@PathVariable("crowdTestProjectCode") String crowdTestProjectCode){
+//        CrowdTestProject crowdTestProject = crowdTestProjectRepo.getByProjectCode(crowdTestProjectCode);
+//        User user = userRepo.getByID(userId);
+////        CrowdTestProject crowdTestProjectResult = user.finishCrowdTestProject(crowdTestProject);
+//        CrowdTestProject crowdTestProjectResult = crowdTestProject.finishCrowdTestProject(user);
+//        crowdTestProjectRepo.saveCrowdTestProject(crowdTestProjectResult);
+//        return crowdTestProjectRepo.getByProjectCode(crowdTestProjectResult.getCode()).toString();
+//    }
+//
+//
+//    @RequestMapping(value = "getNum", method = RequestMethod.GET)
+//    public String getNum(){
+//        return "项目数:" + crowdTestProjectRepo.getAllProjectNum() + " 任务数:" + crowdTestProjectRepo.getAllTaskNum() + " 报告数:" + crowdTestProjectRepo.getAllReportNum() ;
+//    }
+//
+//    /**
+//     * 计算指定时间的后几天
+//     */
+//    private Date getNextDay(Date date, int day){
+//        //计算相关的时间间隔
+//        long addTime = 24*3600*1000;
+//        addTime *= day;
+//        //把时间间隔转换为毫秒数
+//        Date nextDate=new Date(date.getTime() + addTime);
+//        return nextDate;
+//    }
+//
+//    /**
+//     * 计算指定时间的前几天
+//     */
+//    private Date getBeforeDay(Date date, int day){
+//        //计算相关的时间间隔
+//        long subTime = 24*3600*1000;
+//        subTime *= day;
+//        //把时间间隔转换为毫秒数
+//        Date beforeDate=new Date(date.getTime() - subTime);
+//        return beforeDate;
+//    }
+//
+//    /**
+//     * 大陆手机号码11位数,匹配格式:前三位固定格式+后8位任意数
+//     * 此方法中前三位格式有:
+//     * 13+任意数
+//     * 15+除4的任意数
+//     * 18+除1和4的任意数
+//     * 17+除9的任意数
+//     * 147
+//     */
+//    private boolean isChinaPhoneLegal(String str) throws PatternSyntaxException {
+//        String regExp = "^((13[0-9])|(15[^4])|(18[0,2,3,5-9])|(17[0-8])|(147))\\d{8}$";
+//        Pattern p = Pattern.compile(regExp);
+//        Matcher m = p.matcher(str);
+//        return m.matches();
+//    }
+//
+//    /**
+//     * 香港手机号码8位数,5|6|8|9开头+7位任意数
+//     */
+//    private boolean isHKPhoneLegal(String str)throws PatternSyntaxException {
+//        String regExp = "^(5|6|8|9)\\d{7}$";
+//        Pattern p = Pattern.compile(regExp);
+//        Matcher m = p.matcher(str);
+//        return m.matches();
+//    }
+//
+//    /**
+//     * 座机号
+//     */
+//    private boolean isTel(String str)throws PatternSyntaxException {
+//        String regExp = "^0[1-9](\\d{1,2}\\-?)\\d{7,8}";
+//        Pattern p = Pattern.compile(regExp);
+//        Matcher m = p.matcher(str);
+//        return m.matches();
+//    }
+//
+//    /**
+//     * 判断手机号或者座机是正确
+//     * @param phone
+//     * @return
+//     */
+//    private boolean isRightPhone(String phone){
+//        if(phone.startsWith("0")){
+//            if(!isTel(phone)){
+//                return false;
+//            }
+//        }else{
+//            if(!(isChinaPhoneLegal(phone) || isHKPhoneLegal(phone))){
+//                return false;
+//            }
+//        }
+//        return true;
+//    }
+//
+//    /**
+//     * 匹配平台类型 0,1,2 任意  ^[0-2](([,][0-2])?([,][0-2])?)$
+//     */
+//    private boolean isApplicationType(String str)throws PatternSyntaxException {
+//        String regExp = "^[0-2](([,][0-2])?([,][0-2])?)$";
+//        Pattern p = Pattern.compile(regExp);
+//        Matcher m = p.matcher(str);
+//        return m.matches();
+//    }
+//
+//    /**
+//     * 匹配项目类型 0,1,2,3,4,5,6 任意  ^[0-6](([,][0-6])?([,][0-6])?([,][0-6])?([,][0-6])?([,][0-6])?([,][0-6])?)$
+//     */
+//    private boolean isType(String str)throws PatternSyntaxException {
+//        String regExp = "^[0-6](([,][0-6])?([,][0-6])?([,][0-6])?([,][0-6])?([,][0-6])?([,][0-6])?)$";
+//        Pattern p = Pattern.compile(regExp);
+//        Matcher m = p.matcher(str);
+//        return m.matches();
+//    }
+//
+//    @RequestMapping(value = "getAllNum", method = RequestMethod.GET)
+//    public String getAllUserNum(){
+//        return "用户数:" + userRepo.getAllUserNum() + " 测评机构数:" + userRepo.getAllAgencyNum() + " 测试资源数量:" + userRepo.getAllResourceNum() ;
+//    }
+}

File diff ditekan karena terlalu besar
+ 0 - 0
core/src/main/java/com/mooctest/crowd/domain/controller/TestUserController.java


+ 30 - 0
core/src/main/java/com/mooctest/crowd/domain/dao/AgencyAbilityDao.java

@@ -0,0 +1,30 @@
+package com.mooctest.crowd.domain.dao;
+
+import com.mooctest.crowd.domain.model.EvaluationAgencyAbilityPO;
+import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
+import org.springframework.data.repository.PagingAndSortingRepository;
+
+import javax.transaction.Transactional;
+import java.util.List;
+import java.util.Optional;
+
+@Transactional
+public interface AgencyAbilityDao extends PagingAndSortingRepository<EvaluationAgencyAbilityPO, Long>, JpaSpecificationExecutor<EvaluationAgencyAbilityPO> {
+
+    Optional<EvaluationAgencyAbilityPO> findById(Long Id);
+
+    List<EvaluationAgencyAbilityPO> findByEvaluationAgencyIdAndIsDeleted(Long evaluationAgencyId, int isNotDeleted);
+
+    List<EvaluationAgencyAbilityPO> findAll();
+
+    //    void deleteAll(List<EvaluationAgencyAbilityPO> evaluationAgencyAbilityPOList);
+
+    @Override
+    void deleteAll(Iterable<? extends EvaluationAgencyAbilityPO> iterable);
+
+    EvaluationAgencyAbilityPO save(EvaluationAgencyAbilityPO evaluationAgencyPO);
+
+//    List<EvaluationAgencyAbilityPO> saveAll(List<EvaluationAgencyAbilityPO> evaluationAgencyAbilityPOList);
+
+
+}

+ 39 - 0
core/src/main/java/com/mooctest/crowd/domain/dao/AgencyResourceDao.java

@@ -0,0 +1,39 @@
+package com.mooctest.crowd.domain.dao;
+
+import com.mooctest.crowd.domain.model.EvaluationAgencyResourcePO;
+import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
+import org.springframework.data.jpa.repository.Query;
+import org.springframework.data.repository.PagingAndSortingRepository;
+
+import javax.transaction.Transactional;
+import java.util.List;
+import java.util.Optional;
+
+@Transactional
+public interface AgencyResourceDao extends PagingAndSortingRepository<EvaluationAgencyResourcePO, Long>, JpaSpecificationExecutor<EvaluationAgencyResourcePO> {
+
+    Optional<EvaluationAgencyResourcePO> findById(Long Id);
+
+    List<EvaluationAgencyResourcePO> findByEvaluationAgencyIdAndIsDeleted(Long evaluationAgencyId, int isNotDeleted);
+
+//    List<EvaluationAgencyResourcePO> findByCountGreaterThanEqual(int professionalsFreeCount);
+
+    List<EvaluationAgencyResourcePO> findAll();
+
+    @Query(value = "SELECT SUM(p.totalNum) FROM EvaluationAgencyResourcePO p WHERE p.type = ?1")
+    Long getTotalResourceByType(String type);
+
+//    @Query(value = "SELECT SUM(p.totalNum) FROM EvaluationAgencyResourcePO p WHERE p.type = '服务器资源'")
+//    Long getTotalServerResource();
+//
+//    @Query(value = "SELECT SUM(p.totalNum) FROM EvaluationAgencyResourcePO p WHERE p.type = '服务器资源'")
+//    Long getTotalServerResource();
+
+    EvaluationAgencyResourcePO save(EvaluationAgencyResourcePO evaluationAgencyPO);
+
+//    List<EvaluationAgencyResourcePO> saveAll(List<EvaluationAgencyResourcePO> evaluationAgencyResourcePOList);
+
+    @Override
+    void deleteAll(Iterable<? extends EvaluationAgencyResourcePO> iterable);
+
+}

+ 28 - 0
core/src/main/java/com/mooctest/crowd/domain/dao/ApplicationTypeDao.java

@@ -0,0 +1,28 @@
+package com.mooctest.crowd.domain.dao;
+
+import com.mooctest.crowd.domain.model.ApplicationTypePO;
+import org.springframework.data.domain.Page;
+import org.springframework.data.domain.Pageable;
+import org.springframework.data.jpa.domain.Specification;
+import org.springframework.data.jpa.repository.JpaRepository;
+import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
+import org.springframework.data.repository.CrudRepository;
+import org.springframework.data.repository.PagingAndSortingRepository;
+
+import javax.transaction.Transactional;
+import java.util.List;
+import java.util.Optional;
+
+@Transactional
+public interface ApplicationTypeDao extends CrudRepository<ApplicationTypePO, Long>,PagingAndSortingRepository<ApplicationTypePO, Long>, JpaRepository<ApplicationTypePO, Long>,JpaSpecificationExecutor<ApplicationTypePO> {
+
+    Optional<ApplicationTypePO> findByCode(String code);
+
+    Optional<ApplicationTypePO> findByName(String name);
+
+    Optional<ApplicationTypePO> findById(Long id);
+
+    List<ApplicationTypePO> findAll();
+
+    Page<ApplicationTypePO> findAll(Specification<ApplicationTypePO> spec , Pageable pageable);
+}

+ 18 - 0
core/src/main/java/com/mooctest/crowd/domain/dao/ApplicationTypeToTestTypeDao.java

@@ -0,0 +1,18 @@
+package com.mooctest.crowd.domain.dao;
+
+import com.mooctest.crowd.domain.model.ApplicationTypeToTestTypePO;
+import org.springframework.data.repository.CrudRepository;
+
+import javax.transaction.Transactional;
+import java.util.List;
+import java.util.Optional;
+
+@Transactional
+public interface ApplicationTypeToTestTypeDao extends CrudRepository<ApplicationTypeToTestTypePO, Long>{
+
+    Optional<ApplicationTypeToTestTypePO> findById(Long id);
+
+    List<ApplicationTypeToTestTypePO> findByApplicationTypeCode(String applicationTypeCode);
+
+    List<ApplicationTypeToTestTypePO> findAll();
+}

+ 20 - 0
core/src/main/java/com/mooctest/crowd/domain/dao/BankCardDao.java

@@ -0,0 +1,20 @@
+package com.mooctest.crowd.domain.dao;
+
+import com.mooctest.crowd.domain.model.BankCardPO;
+import org.springframework.data.jpa.repository.JpaRepository;
+import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
+import org.springframework.data.repository.CrudRepository;
+import org.springframework.data.repository.PagingAndSortingRepository;
+
+import javax.transaction.Transactional;
+import java.util.List;
+import java.util.Optional;
+
+
+@Transactional
+public interface BankCardDao extends PagingAndSortingRepository<BankCardPO, Long> ,CrudRepository<BankCardPO, Long>, JpaRepository<BankCardPO, Long> ,JpaSpecificationExecutor<BankCardPO>{
+
+    Optional<BankCardPO> findById(Long id);
+
+    List<BankCardPO> findByUserIdAndIsDeleted(Long userId, int isDeleted);
+}

+ 19 - 0
core/src/main/java/com/mooctest/crowd/domain/dao/BankLogoDao.java

@@ -0,0 +1,19 @@
+package com.mooctest.crowd.domain.dao;
+
+import com.mooctest.crowd.domain.model.BankLogoPO;
+import org.springframework.data.jpa.repository.Query;
+import org.springframework.data.repository.CrudRepository;
+
+import javax.transaction.Transactional;
+import java.util.List;
+import java.util.Optional;
+
+@Transactional
+public interface BankLogoDao extends CrudRepository<BankLogoPO, Long>{
+
+    Optional<BankLogoPO> findByCode(String code);
+
+    List<BankLogoPO> findAll();
+
+    Optional<BankLogoPO> findByName(String name);
+}

+ 23 - 0
core/src/main/java/com/mooctest/crowd/domain/dao/CompetitionDao.java

@@ -0,0 +1,23 @@
+package com.mooctest.crowd.domain.dao;
+
+import com.mooctest.crowd.domain.model.CompetitionPO;
+import org.springframework.data.domain.Pageable;
+import org.springframework.data.repository.CrudRepository;
+
+import javax.transaction.Transactional;
+import java.util.List;
+import java.util.Optional;
+
+@Transactional
+public interface CompetitionDao extends CrudRepository<CompetitionPO, Long>{
+
+    Optional<CompetitionPO> findByIdAndIsDeleted(Long id, int isNotDeleted);
+
+    List<CompetitionPO> findAll();
+
+    List<CompetitionPO> findAll(Pageable pageable);
+
+
+//    @Query(value = "SELECT new com.mooctest.crowd.domain.domainobject.Competition(c.id,c.name,c.linkUrl,c.startTime,c.isDeleted) FROM CompetitionPO c where c.isDeleted=0 ORDER BY c.startTime DESC")
+//    List<Competition> findTop3(Pageable pageable);
+}

+ 18 - 0
core/src/main/java/com/mooctest/crowd/domain/dao/CompetitionsDao.java

@@ -0,0 +1,18 @@
+package com.mooctest.crowd.domain.dao;
+
+import com.mooctest.crowd.domain.model.CompetitionPO;
+import org.springframework.data.domain.Page;
+import org.springframework.data.domain.Pageable;
+import org.springframework.data.jpa.domain.Specification;
+import org.springframework.data.jpa.repository.JpaRepository;
+import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
+import org.springframework.data.repository.CrudRepository;
+import org.springframework.data.repository.PagingAndSortingRepository;
+
+import javax.transaction.Transactional;
+
+@Transactional
+public interface CompetitionsDao extends CrudRepository<CompetitionPO, Long>,PagingAndSortingRepository<CompetitionPO, Long>, JpaRepository<CompetitionPO, Long>,JpaSpecificationExecutor<CompetitionPO> {
+
+    Page<CompetitionPO> findAll(Specification<CompetitionPO> spec , Pageable pageable);
+}

+ 16 - 0
core/src/main/java/com/mooctest/crowd/domain/dao/ConfigurationDao.java

@@ -0,0 +1,16 @@
+package com.mooctest.crowd.domain.dao;
+
+import com.mooctest.crowd.domain.model.ConfigurationPO;
+import org.springframework.data.jpa.repository.JpaRepository;
+import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
+import org.springframework.data.repository.CrudRepository;
+import org.springframework.data.repository.PagingAndSortingRepository;
+
+import javax.transaction.Transactional;
+import java.util.List;
+
+@Transactional
+public interface ConfigurationDao extends CrudRepository<ConfigurationPO, Long>, PagingAndSortingRepository<ConfigurationPO, Long>, JpaRepository<ConfigurationPO, Long>, JpaSpecificationExecutor<ConfigurationPO> {
+
+    List<ConfigurationPO> findAll();
+}

+ 89 - 0
core/src/main/java/com/mooctest/crowd/domain/dao/CrowdTestProjectDao.java

@@ -0,0 +1,89 @@
+package com.mooctest.crowd.domain.dao;
+
+import com.mooctest.crowd.domain.model.CrowdTestProjectPO;
+import com.mooctest.crowd.domain.model.RankInfo;
+import com.mooctest.crowd.domain.model.RankInfos;
+import org.springframework.data.domain.Pageable;
+import org.springframework.data.jpa.repository.JpaRepository;
+import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
+import org.springframework.data.jpa.repository.Modifying;
+import org.springframework.data.jpa.repository.Query;
+import org.springframework.data.repository.CrudRepository;
+import org.springframework.data.repository.PagingAndSortingRepository;
+import org.springframework.data.repository.query.Param;
+
+import javax.transaction.Transactional;
+import java.util.List;
+
+/**
+ * @author guochao
+ * @date 2019-07-27 15:07
+ */
+
+@Transactional
+public interface CrowdTestProjectDao extends CrudRepository<CrowdTestProjectPO, Long>, JpaRepository<CrowdTestProjectPO, Long>, PagingAndSortingRepository<CrowdTestProjectPO, Long>, JpaSpecificationExecutor<CrowdTestProjectPO> {
+    //    @Override
+//    Optional<CrowdTestProjectPO> findById(Long id);
+
+    List<CrowdTestProjectPO> findByNameLikeAndIsDeleted(String name, int isDeleted);
+
+    @Query(value = "SELECT * FROM crowd_test_project where CTP_IS_DELETED = 0 ORDER BY CTP_CREATE_TIME DESC", nativeQuery = true)
+    List<CrowdTestProjectPO> findMoreHotProjects();
+
+
+    @Query(value = "SELECT * FROM crowd_test_project p WHERE CTP_STATUS = 1 and CTP_PDT_ID = 2 and CTP_IS_DELETED = 0 ORDER BY CTP_CREATE_TIME DESC", nativeQuery = true)
+    List<CrowdTestProjectPO> findAll();
+
+    //这个指定了查询条数 适用于众测广场首页 这样性能会高一点。
+    @Query(value = "SELECT * FROM crowd_test_project p WHERE CTP_STATUS =1 and CTP_PDT_ID = 2 and CTP_IS_DELETED = 0 ORDER BY CTP_CREATE_TIME DESC LIMIT 6; ", nativeQuery = true)
+    List<CrowdTestProjectPO> findindexProject();
+
+
+    @Query(value = "SELECT * FROM crowd_test_project p WHERE CTP_STATUS !=4 and CTP_STATUS !=5 and CTP_IS_DELETED = 0 ORDER BY CTP_JOIN_COUNT DESC ,CTP_STATUS ASC, CTP_CREATE_TIME DESC; ", nativeQuery = true)
+    List<CrowdTestProjectPO> findAllHotProject();
+
+    //这个指定了查询条数 适用于众测广场首页 这样性能会高一点对应热门项目
+    @Query(value = "SELECT * FROM crowd_test_project p WHERE CTP_STATUS !=4 and CTP_STATUS !=5 and CTP_IS_DELETED = 0 ORDER BY CTP_JOIN_COUNT DESC ,CTP_CREATE_TIME LIMIT 6; ", nativeQuery = true)
+    List<CrowdTestProjectPO> findall();
+
+    CrowdTestProjectPO findByIdAndIsDeleted(Long id, int isDeleted);
+
+    CrowdTestProjectPO findByCodeAndIsDeleted(String code, int isDeleted);
+
+    @Query(value = "select * from crowd_test_project where CTP_U_ID = ?1 and CTP_IS_DELETED = ?2 and (CTP_RM_ID <> ?1 or CTP_RM_ID is NULL);", nativeQuery = true)
+    List<CrowdTestProjectPO> findByUserIdAndIsDeletedAndNotMyAccept(Long userId,int isDeleted);
+
+    List<CrowdTestProjectPO> findByUserIdAndIsDeleted(Long userId, int isDeleted);
+
+    List<CrowdTestProjectPO> findAllByIsDeleted(int isDeleted);
+
+    List<CrowdTestProjectPO> findByRegionalManagerIdAndIsDeleted(Long regionalManagerId, int isDeleted);
+
+    List<CrowdTestProjectPO> findAllByStatusLessThanAndProjectDistributionTypeIdAndIsDeletedAndUserIdIsNot(Integer status, Long distribution, int isDeleted, Long userId);
+
+    List<CrowdTestProjectPO> findByStatusLessThanAndProjectDistributionTypeIdAndIsDeletedAndUserIdIsNot(Integer status, Long distributionType, int isDeleted, Long userId);
+
+    @Query(value = "SELECT new com.mooctest.crowd.domain.model.RankInfo(SUM(p.quotedPrice), p.userId) FROM CrowdTestProjectPO p where p.status>1 GROUP BY p.userId ORDER BY SUM(p.quotedPrice) DESC")
+    List<RankInfo> findTotalPriceOfUser(Pageable pageable);
+
+    @Query(value = "SELECT new com.mooctest.crowd.domain.model.RankInfos(COUNT(p.fieldType),0L ,p.fieldType) FROM CrowdTestProjectPO p where p.status=4 GROUP BY p.fieldType ORDER BY COUNT(p.fieldType) DESC")
+    List<RankInfos> findTotalCountOfField(Pageable pageable);
+
+
+    @Query(value = "SELECT new com.mooctest.crowd.domain.model.RankInfos(COUNT(p.applicationType),0L ,p.applicationType) FROM CrowdTestProjectPO p where p.status>1 GROUP BY p.applicationType ORDER BY COUNT(p.applicationType) DESC")
+    List<RankInfos> findTotalCountOfApplicationType(Pageable pageable);
+
+    @Override
+    void delete(CrowdTestProjectPO crowdTestProjectPO);
+
+    @Override
+    void deleteAll(Iterable<? extends CrowdTestProjectPO> iterable);
+
+    @Override
+    <S extends CrowdTestProjectPO> S save(S s);
+
+
+    @Modifying
+    @Query(nativeQuery = true,value="update crowd_test_project set CTP_STATUS= ?1 where CTP_CODE=?2")
+    void updateStatusByCode(@Param("status") int status, @Param("code") String code);
+}

+ 35 - 0
core/src/main/java/com/mooctest/crowd/domain/dao/CrowdTestReportDao.java

@@ -0,0 +1,35 @@
+package com.mooctest.crowd.domain.dao;
+
+import com.mooctest.crowd.domain.model.CrowdTestReportPO;
+import org.springframework.data.repository.CrudRepository;
+
+import javax.transaction.Transactional;
+import java.util.List;
+
+/**
+ * @author guochao
+ * @date 2019-07-27 15:07
+ */
+
+@Transactional
+public interface CrowdTestReportDao extends CrudRepository<CrowdTestReportPO, Long> {
+
+    CrowdTestReportPO findByIdAndIsDeleted(Long id, int isDeleted);
+
+    CrowdTestReportPO findByCodeAndIsDeleted(String code, int isDeleted);
+
+    List<CrowdTestReportPO> findByDependencyCodeAndIsDeleted(String dependencyCode, int isDeleted);
+
+    List<CrowdTestReportPO> findByDependencyCodeAndUserIdAndScopeAndIsDeleted(String dependencyCode, long userId, int scope,int isDeleted);
+
+    List<CrowdTestReportPO> findAllByIsDeleted(int isDeleted);
+
+    @Override
+    void delete(CrowdTestReportPO crowdTestProjectPO);
+
+    @Override
+    void deleteAll(Iterable<? extends CrowdTestReportPO> iterable);
+
+    @Override
+    <S extends CrowdTestReportPO> S save(S s);
+}

+ 79 - 0
core/src/main/java/com/mooctest/crowd/domain/dao/CrowdTestTaskDao.java

@@ -0,0 +1,79 @@
+package com.mooctest.crowd.domain.dao;
+
+import com.mooctest.crowd.domain.model.CrowdTestTaskPO;
+import org.springframework.data.domain.Page;
+import org.springframework.data.domain.Pageable;
+import org.springframework.data.jpa.domain.Specification;
+import org.springframework.data.jpa.repository.JpaRepository;
+import org.springframework.data.jpa.repository.Modifying;
+import org.springframework.data.jpa.repository.Query;
+import org.springframework.data.repository.CrudRepository;
+import org.springframework.data.repository.PagingAndSortingRepository;
+import org.springframework.data.repository.query.Param;
+
+import javax.transaction.Transactional;
+import java.util.List;
+
+/**
+ * @author guochao
+ * @date 2019-07-27 15:07
+ */
+
+@Transactional
+public interface CrowdTestTaskDao extends CrudRepository<CrowdTestTaskPO, Long>, JpaRepository<CrowdTestTaskPO, Long>, PagingAndSortingRepository<CrowdTestTaskPO, Long> {
+
+
+    @Query(value = "select CTT_ID,CTT_CODE,CTT_NAME,CTT_CTP_CODE,CTT_EA_ID," +
+            "CTT_TYPE,CTT_DISTRIBUTION_TYPE,CTT_DISTRIBUTION_PROVINCE,CTT_DISTRIBUTION_CITY," +
+            "CTT_REQUIREMENT_FILE,CTT_DESCRIPTION,CTT_QUOTED_PRICE,CTT_FIXED_PRICE," +
+            "CTT_STATUS,CTT_FULL_STATUS,CTT_DEAD_LINE,CTT_IS_DELETED,CTT_PARTICIPANT_COUNT,CTT_ACCEPTED_COUNT,CTT_PARTICIPANT_HAS_COMMITTED_COUNT,CTT_CREATE_TIME,CTT_END_TIME FROM  crowd_test_task t where CTT_STATUS=1 or CTT_STATUS=2  and CTT_IS_DELETED = 0 ORDER BY CTT_CREATE_TIME DESC", nativeQuery = true)
+    List<CrowdTestTaskPO> findAll();
+
+    @Query(value = "select * FROM crowd_test_task WHERE (CTT_STATUS =1 or (CTT_STATUS =2 and CTT_FULL_STATUS = 0)) and CTT_DISTRIBUTION_TYPE = 2 and CTT_IS_DELETED = 0  ORDER BY CTT_CREATE_TIME DESC LIMIT 6 ", nativeQuery = true)
+    List<CrowdTestTaskPO> findindexTask();
+
+
+    @Query(value = "select * FROM crowd_test_task WHERE (CTT_STATUS =1 or (CTT_STATUS =2 and CTT_FULL_STATUS = 0)) and CTT_DISTRIBUTION_TYPE = 2 and CTT_IS_DELETED = 0 ORDER BY CTT_CREATE_TIME DESC", nativeQuery = true)
+    List<CrowdTestTaskPO> findCanAcceptTask();
+
+    //热门任务
+    @Query(value = "select * FROM  crowd_test_task WHERE CTT_STATUS !=4 and CTT_STATUS !=5 and CTT_IS_DELETED = 0  ORDER BY CTT_ACCEPTED_COUNT DESC,CTT_CREATE_TIME DESC LIMIT 6", nativeQuery = true)
+    List<CrowdTestTaskPO> findMoreHotTasks();
+
+    //热门任务
+    @Query(value = "select * FROM  crowd_test_task WHERE CTT_STATUS !=4 and CTT_STATUS !=5 and CTT_IS_DELETED = 0  ORDER BY CTT_ACCEPTED_COUNT DESC, CTT_STATUS ASC ,CTT_CREATE_TIME DESC", nativeQuery = true)
+    List<CrowdTestTaskPO> findMoreHotTasksList();
+
+    List<CrowdTestTaskPO> findByNameLike(String name);
+
+    Page<CrowdTestTaskPO> findAll(Specification specification, Pageable pageable);
+
+    CrowdTestTaskPO findByIdAndIsDeleted(Long id, int isDeleted);
+
+    CrowdTestTaskPO findByCodeAndIsDeleted(String code, int isDeleted);
+
+    List<CrowdTestTaskPO> findByCrowdTestProjectCodeAndIsDeleted(String crowdTestProjectCode, int isDeleted);
+
+    List<CrowdTestTaskPO> findByEvaluationAgencyIdAndIsDeleted(Long evaluationAgencyId, int isDeleted);
+
+    List<CrowdTestTaskPO> findAllByIsDeleted(int isDeleted);
+
+//    @Query(value = "SELECT new com.mooctest.crowd.domain.model.RankInfo(SUM(p.quotedPrice), p.evaluationAgencyId) FROM CrowdTestTaskPO p where p.evaluationAgencyId is not null and p.status>1 GROUP BY p.evaluationAgencyId ORDER BY SUM(p.quotedPrice) DESC")
+//    List<RankInfo> findTotalPriceOfAgency(Pageable pageable);
+
+    @Query(nativeQuery = true, value = "select * from crowd_test_task where CTT_STATUS=1 and CTT_DISTRIBUTION_TYPE=2 and CTT_IS_DELETED = 0  order by CTT_QUOTED_PRICE DESC LIMIT 4")
+    List<CrowdTestTaskPO> findHotTask();
+
+    @Override
+    void delete(CrowdTestTaskPO crowdTestProjectPO);
+
+    @Override
+    void deleteAll(Iterable<? extends CrowdTestTaskPO> iterable);
+
+    @Override
+    <S extends CrowdTestTaskPO> S save(S s);
+
+    @Modifying
+    @Query(nativeQuery = true, value = "update crowd_test_task set CTT_STATUS= ?1 where CTT_CODE=?2")
+    void updateStatusById(@Param("status") int status, @Param("code") String code);
+}

+ 24 - 0
core/src/main/java/com/mooctest/crowd/domain/dao/EndPointDao.java

@@ -0,0 +1,24 @@
+package com.mooctest.crowd.domain.dao;
+
+import com.mooctest.crowd.domain.model.EndPointPO;
+import org.springframework.data.jpa.repository.JpaRepository;
+import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
+import org.springframework.data.jpa.repository.Modifying;
+import org.springframework.data.jpa.repository.Query;
+import org.springframework.data.repository.CrudRepository;
+import org.springframework.data.repository.PagingAndSortingRepository;
+import org.springframework.data.repository.query.Param;
+
+import javax.transaction.Transactional;
+import java.util.Optional;
+
+
+@Transactional
+public interface EndPointDao extends PagingAndSortingRepository<EndPointPO, Long> ,CrudRepository<EndPointPO, Long>, JpaRepository<EndPointPO, Long> ,JpaSpecificationExecutor<EndPointPO>{
+    Optional<EndPointPO> findByTaskCode(String code);
+
+    @Modifying
+    @Query(nativeQuery = true,value="delete from end_point where EP_T_CODE=?")
+    void deleteEndPoint(@Param("taskCode") String code);
+
+}

+ 31 - 0
core/src/main/java/com/mooctest/crowd/domain/dao/EnterpriseAuthenticationDao.java

@@ -0,0 +1,31 @@
+package com.mooctest.crowd.domain.dao;
+
+import com.mooctest.crowd.domain.domainobject.EnterpriseAuthentication;
+import com.mooctest.crowd.domain.model.EnterpriseAuthenticationPO;
+import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
+import org.springframework.data.repository.PagingAndSortingRepository;
+
+import javax.transaction.Transactional;
+import java.util.List;
+import java.util.Optional;
+
+@Transactional
+public interface EnterpriseAuthenticationDao extends PagingAndSortingRepository<EnterpriseAuthenticationPO, Long>, JpaSpecificationExecutor<EnterpriseAuthenticationPO> {
+
+    Optional<EnterpriseAuthenticationPO> findByIdAndIsDeleted(Long Id, int deletedStatus);
+
+    Optional<EnterpriseAuthenticationPO> findById(Long Id);
+
+    EnterpriseAuthenticationPO findByUserId(Long userId);
+
+    List<EnterpriseAuthenticationPO> findByIsAuthentication(Integer isAuthentication);
+
+    List<EnterpriseAuthenticationPO> findByIsAuthenticationIsNot(Integer isAuthentication);
+
+    EnterpriseAuthenticationPO findByUserIdAndIsDeleted(Long Id, int deletedStatus);
+
+    List<EnterpriseAuthenticationPO> findAll();
+
+    EnterpriseAuthenticationPO save(EnterpriseAuthenticationPO enterpriseAuthenticationPO);
+
+}

+ 37 - 0
core/src/main/java/com/mooctest/crowd/domain/dao/EvaluationAgencyDao.java

@@ -0,0 +1,37 @@
+package com.mooctest.crowd.domain.dao;
+
+import com.mooctest.crowd.domain.model.EvaluationAgencyPO;
+import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
+import org.springframework.data.repository.PagingAndSortingRepository;
+
+import javax.transaction.Transactional;
+import java.util.List;
+import java.util.Optional;
+
+@Transactional
+public interface EvaluationAgencyDao extends PagingAndSortingRepository<EvaluationAgencyPO, Long>, JpaSpecificationExecutor<EvaluationAgencyPO> {
+
+    Optional<EvaluationAgencyPO> findById(Long Id);
+
+    EvaluationAgencyPO findByUserId(Long userId);
+
+    EvaluationAgencyPO findByUserIdAndIsDeleted(Long userId, int deletedStatus);
+
+    List<EvaluationAgencyPO> findByIsAuthentication(int isAuthentication);
+
+    List<EvaluationAgencyPO> findByIsAuthenticationIsNot(int isAuthentication);
+
+    @Override
+    Iterable<EvaluationAgencyPO> findAllById(Iterable<Long> iterable);
+
+    @Override
+    Iterable<EvaluationAgencyPO> findAll();
+
+    @Override
+    void delete(EvaluationAgencyPO evaluationAgencyPO);
+
+    void deleteAll(Iterable<? extends EvaluationAgencyPO> iterable);
+
+    EvaluationAgencyPO save(EvaluationAgencyPO evaluationAgencyPO);
+
+}

+ 17 - 0
core/src/main/java/com/mooctest/crowd/domain/dao/ExpertDao.java

@@ -0,0 +1,17 @@
+package com.mooctest.crowd.domain.dao;
+
+import com.mooctest.crowd.domain.model.ExpertPO;
+import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
+import org.springframework.data.repository.CrudRepository;
+
+import javax.transaction.Transactional;
+import java.util.List;
+import java.util.Optional;
+
+@Transactional
+public interface ExpertDao extends CrudRepository<ExpertPO, Long>, JpaSpecificationExecutor<ExpertPO> {
+
+    Optional<ExpertPO> findById(Long id);
+
+    List<ExpertPO> findAll();
+}

+ 20 - 0
core/src/main/java/com/mooctest/crowd/domain/dao/FieldDao.java

@@ -0,0 +1,20 @@
+package com.mooctest.crowd.domain.dao;
+
+import com.mooctest.crowd.domain.model.FieldPO;
+import org.springframework.data.repository.CrudRepository;
+
+import javax.transaction.Transactional;
+import java.util.List;
+import java.util.Optional;
+
+@Transactional
+public interface FieldDao extends CrudRepository<FieldPO, Long>{
+
+    Optional<FieldPO> findByCode(String code);
+
+    Optional<FieldPO> findByName(String name);
+
+    Optional<FieldPO> findById(Long id);
+
+    List<FieldPO> findAll();
+}

+ 18 - 0
core/src/main/java/com/mooctest/crowd/domain/dao/PartnerDao.java

@@ -0,0 +1,18 @@
+package com.mooctest.crowd.domain.dao;
+
+import com.mooctest.crowd.domain.model.PartnerPO;
+import org.springframework.data.repository.CrudRepository;
+
+import javax.transaction.Transactional;
+import java.util.List;
+import java.util.Optional;
+
+@Transactional
+public interface PartnerDao extends CrudRepository<PartnerPO, Long>{
+
+    Optional<PartnerPO> findByName(String name);
+
+    Optional<PartnerPO> findById(Long id);
+
+    List<PartnerPO> findAll();
+}

+ 21 - 0
core/src/main/java/com/mooctest/crowd/domain/dao/PermissionDao.java

@@ -0,0 +1,21 @@
+package com.mooctest.crowd.domain.dao;
+
+import com.mooctest.crowd.domain.model.PermissionPO;
+import org.springframework.data.repository.CrudRepository;
+
+import javax.transaction.Transactional;
+import java.util.Optional;
+
+@Transactional
+public interface PermissionDao extends CrudRepository<PermissionPO, Long>{
+
+    PermissionPO findByName(String name);
+
+    Optional<PermissionPO> findById(Long id);
+
+    @Override
+    Iterable<PermissionPO> findAllById(Iterable<Long> iterable);
+
+    @Override
+    <S extends PermissionPO> S save(S s);
+}

+ 31 - 0
core/src/main/java/com/mooctest/crowd/domain/dao/PersonalAuthenticationDao.java

@@ -0,0 +1,31 @@
+package com.mooctest.crowd.domain.dao;
+
+import com.mooctest.crowd.domain.domainobject.PersonalAuthentication;
+import com.mooctest.crowd.domain.model.PersonalAuthenticationPO;
+import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
+import org.springframework.data.repository.PagingAndSortingRepository;
+
+import javax.transaction.Transactional;
+import java.util.List;
+import java.util.Optional;
+
+@Transactional
+public interface PersonalAuthenticationDao extends PagingAndSortingRepository<PersonalAuthenticationPO, Long>, JpaSpecificationExecutor<PersonalAuthenticationPO> {
+
+    Optional<PersonalAuthenticationPO> findById(Long Id);
+
+    Optional<PersonalAuthenticationPO> findByIdAndIsDeleted(Long Id, int deletedStatus);
+
+    PersonalAuthenticationPO findByUserId(Long userId);
+
+    PersonalAuthenticationPO findByUserIdAndIsDeleted(Long userId, int deletedStatus);
+
+    List<PersonalAuthenticationPO> findByIsAuthentication(Integer isAuthentication);
+
+    List<PersonalAuthenticationPO> findByIsAuthenticationIsNot(Integer isAuthentication);
+
+    List<PersonalAuthenticationPO> findAll();
+
+    PersonalAuthenticationPO save(PersonalAuthenticationPO personalAuthenticationPO);
+
+}

+ 15 - 0
core/src/main/java/com/mooctest/crowd/domain/dao/ProvinceDao.java

@@ -0,0 +1,15 @@
+package com.mooctest.crowd.domain.dao;
+
+import com.mooctest.crowd.domain.model.ProvincePO;
+import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
+import org.springframework.data.repository.PagingAndSortingRepository;
+
+import javax.transaction.Transactional;
+import java.util.List;
+
+
+@Transactional
+public interface ProvinceDao extends PagingAndSortingRepository<ProvincePO, Long>, JpaSpecificationExecutor<ProvincePO> {
+
+    List<ProvincePO> findAll();
+}

+ 19 - 0
core/src/main/java/com/mooctest/crowd/domain/dao/PublicationsDao.java

@@ -0,0 +1,19 @@
+package com.mooctest.crowd.domain.dao;
+
+import com.mooctest.crowd.domain.model.PublicationsPO;
+import org.springframework.data.domain.Page;
+import org.springframework.data.domain.Pageable;
+import org.springframework.data.jpa.domain.Specification;
+import org.springframework.data.jpa.repository.JpaRepository;
+import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
+import org.springframework.data.repository.CrudRepository;
+import org.springframework.data.repository.PagingAndSortingRepository;
+import javax.transaction.Transactional;
+
+
+
+@Transactional
+public interface PublicationsDao extends PagingAndSortingRepository<PublicationsPO, Long> ,CrudRepository<PublicationsPO, Long>, JpaRepository<PublicationsPO, Long> ,JpaSpecificationExecutor<PublicationsPO>{
+
+    Page<PublicationsPO> findAll(Specification<PublicationsPO> spec, Pageable pageable);
+}

+ 23 - 0
core/src/main/java/com/mooctest/crowd/domain/dao/QualificationDao.java

@@ -0,0 +1,23 @@
+package com.mooctest.crowd.domain.dao;
+
+import com.mooctest.crowd.domain.model.QualificationPO;
+import org.springframework.data.jpa.repository.JpaRepository;
+import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
+import org.springframework.data.repository.CrudRepository;
+import org.springframework.data.repository.PagingAndSortingRepository;
+
+import javax.transaction.Transactional;
+import java.util.List;
+import java.util.Optional;
+
+
+@Transactional
+public interface QualificationDao extends PagingAndSortingRepository<QualificationPO, Long> ,CrudRepository<QualificationPO, Long>, JpaRepository<QualificationPO, Long> ,JpaSpecificationExecutor<QualificationPO>{
+
+    List<QualificationPO> findByUserId(Long userId);
+
+    Optional<QualificationPO> findById(Long id);
+
+    List<QualificationPO> findByUserIdAndIsDeleted(Long userId, int isDeleted);
+
+}

+ 30 - 0
core/src/main/java/com/mooctest/crowd/domain/dao/RegionalDao.java

@@ -0,0 +1,30 @@
+package com.mooctest.crowd.domain.dao;
+
+import com.mooctest.crowd.domain.model.RegionalPO;
+import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
+import org.springframework.data.repository.PagingAndSortingRepository;
+
+import javax.transaction.Transactional;
+import java.util.Optional;
+
+@Transactional
+public interface RegionalDao extends PagingAndSortingRepository<RegionalPO, Long>, JpaSpecificationExecutor<RegionalPO> {
+
+    Optional<RegionalPO> findById(Long Id);
+
+//    RegionalPO findByProvince(String province);
+
+    @Override
+    Iterable<RegionalPO> findAllById(Iterable<Long> iterable);
+
+    @Override
+    Iterable<RegionalPO> findAll();
+
+    @Override
+    void delete(RegionalPO regionalPO);
+
+    void deleteAll(Iterable<? extends RegionalPO> iterable);
+
+    RegionalPO save(RegionalPO regionalPO);
+
+}

+ 33 - 0
core/src/main/java/com/mooctest/crowd/domain/dao/RegionalManagerToRegionalDao.java

@@ -0,0 +1,33 @@
+package com.mooctest.crowd.domain.dao;
+
+import com.mooctest.crowd.domain.model.RegionalManagerToRegionalPO;
+import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
+import org.springframework.data.repository.PagingAndSortingRepository;
+
+import javax.transaction.Transactional;
+import java.util.List;
+import java.util.Optional;
+
+@Transactional
+public interface RegionalManagerToRegionalDao extends PagingAndSortingRepository<RegionalManagerToRegionalPO, Long>, JpaSpecificationExecutor<RegionalManagerToRegionalPO> {
+
+    Optional<RegionalManagerToRegionalPO> findById(Long Id);
+
+    List<RegionalManagerToRegionalPO> findByUserId(Long userId);
+
+    List<RegionalManagerToRegionalPO> findByUserIdAndIsDeleted(Long userId, int deletedStatus);
+
+    @Override
+    Iterable<RegionalManagerToRegionalPO> findAllById(Iterable<Long> iterable);
+
+    @Override
+    Iterable<RegionalManagerToRegionalPO> findAll();
+
+    @Override
+    void delete(RegionalManagerToRegionalPO regionalManagerToRegionalPO);
+
+    void deleteAll(Iterable<? extends RegionalManagerToRegionalPO> iterable);
+
+    //RegionalManagerToRegionalPO save(RegionalManagerToRegionalPO regionalManagerToRegionalPO);
+
+}

+ 18 - 0
core/src/main/java/com/mooctest/crowd/domain/dao/ResidentAgencyDao.java

@@ -0,0 +1,18 @@
+package com.mooctest.crowd.domain.dao;
+
+import com.mooctest.crowd.domain.model.ResidentAgencyPO;
+import org.springframework.data.repository.CrudRepository;
+
+import javax.transaction.Transactional;
+import java.util.List;
+import java.util.Optional;
+
+@Transactional
+public interface ResidentAgencyDao extends CrudRepository<ResidentAgencyPO, Long>{
+
+    Optional<ResidentAgencyPO> findByAgencyId(Long agencyId);
+
+    Optional<ResidentAgencyPO> findById(Long id);
+
+    List<ResidentAgencyPO> findAll();
+}

+ 30 - 0
core/src/main/java/com/mooctest/crowd/domain/dao/ResourceDao.java

@@ -0,0 +1,30 @@
+package com.mooctest.crowd.domain.dao;
+
+import com.mooctest.crowd.domain.model.CompetitionPO;
+import com.mooctest.crowd.domain.model.ResourcePO;
+import org.springframework.data.domain.Page;
+import org.springframework.data.domain.Pageable;
+import org.springframework.data.jpa.domain.Specification;
+import org.springframework.data.jpa.repository.JpaRepository;
+import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
+import org.springframework.data.jpa.repository.Query;
+import org.springframework.data.repository.CrudRepository;
+import org.springframework.data.repository.PagingAndSortingRepository;
+
+import javax.transaction.Transactional;
+import java.util.List;
+import java.util.Optional;
+
+@Transactional
+public interface ResourceDao extends CrudRepository<ResourcePO, Long>, JpaSpecificationExecutor<ResourcePO>,PagingAndSortingRepository<ResourcePO, Long>,JpaRepository<ResourcePO, Long> {
+
+    Optional<ResourcePO> findByCode(String code);
+
+    Optional<ResourcePO> findById(Long id);
+
+    List<ResourcePO> findAll();
+
+    Page<ResourcePO> findAll(Specification<ResourcePO> spec , Pageable pageable);
+
+    List<ResourcePO> findByNameLike(String name);
+}

+ 17 - 0
core/src/main/java/com/mooctest/crowd/domain/dao/ResourceTokenDao.java

@@ -0,0 +1,17 @@
+package com.mooctest.crowd.domain.dao;
+
+import com.mooctest.crowd.domain.model.EndPointPO;
+import com.mooctest.crowd.domain.model.ResourceTokenPO;
+import org.springframework.data.jpa.repository.JpaRepository;
+import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
+import org.springframework.data.repository.CrudRepository;
+import org.springframework.data.repository.PagingAndSortingRepository;
+
+import javax.transaction.Transactional;
+import java.util.Optional;
+
+
+@Transactional
+public interface ResourceTokenDao extends PagingAndSortingRepository<ResourceTokenPO, Long> ,CrudRepository<ResourceTokenPO, Long>, JpaRepository<ResourceTokenPO, Long> ,JpaSpecificationExecutor<EndPointPO>{
+    Optional<ResourceTokenPO> findByProjectCodeAndTaskCodeAndUserId(String projectCode, String taskCode, Long userId);
+}

+ 13 - 0
core/src/main/java/com/mooctest/crowd/domain/dao/ResourceTypeDao.java

@@ -0,0 +1,13 @@
+package com.mooctest.crowd.domain.dao;
+
+import com.mooctest.crowd.domain.model.ResourceTypePO;
+import org.springframework.data.repository.CrudRepository;
+
+
+import javax.transaction.Transactional;
+import java.util.Optional;
+
+@Transactional
+public interface ResourceTypeDao extends CrudRepository<ResourceTypePO, Long>{
+    Optional<ResourceTypePO> findByCode(String code);
+}

+ 16 - 0
core/src/main/java/com/mooctest/crowd/domain/dao/RoleDao.java

@@ -0,0 +1,16 @@
+package com.mooctest.crowd.domain.dao;
+
+import com.mooctest.crowd.domain.model.RolePO;
+import org.springframework.data.repository.CrudRepository;
+
+import javax.transaction.Transactional;
+import java.util.Optional;
+
+@Transactional
+public interface RoleDao extends CrudRepository<RolePO, Long>{
+
+    RolePO findByName(String name);
+
+    Optional<RolePO> findById(Long id);
+
+}

+ 23 - 0
core/src/main/java/com/mooctest/crowd/domain/dao/RoleToPermissionDao.java

@@ -0,0 +1,23 @@
+package com.mooctest.crowd.domain.dao;
+
+
+import com.mooctest.crowd.domain.model.RoleToPermissionPO;
+import org.springframework.data.repository.CrudRepository;
+
+import javax.transaction.Transactional;
+import java.util.List;
+import java.util.Optional;
+
+@Transactional
+public interface RoleToPermissionDao extends CrudRepository<RoleToPermissionPO,Long> {
+
+    @Override
+    Optional<RoleToPermissionPO> findById(Long id);
+
+    List<RoleToPermissionPO> findAllByRoleId(Long roleId);
+
+    List<RoleToPermissionPO> findAllByPermissionId(Long permissionId);
+
+    @Override
+    <S extends RoleToPermissionPO> S save(S s);
+}

+ 18 - 0
core/src/main/java/com/mooctest/crowd/domain/dao/SystemAdministratorToUserDao.java

@@ -0,0 +1,18 @@
+package com.mooctest.crowd.domain.dao;
+
+import com.mooctest.crowd.domain.model.SystemAdministratorToUserPO;
+import org.springframework.data.repository.CrudRepository;
+
+/**
+ * @author guochao
+ * @date 2019-08-24 09:42
+ */
+public interface SystemAdministratorToUserDao extends CrudRepository<SystemAdministratorToUserPO, Long> {
+
+    SystemAdministratorToUserPO findByIdAndIsDeleted(Long Long, int isNotDeleted);
+
+    SystemAdministratorToUserPO findByUserIdAndIsDeleted(Long id, int isNotDeleted);
+
+    @Override
+    <S extends SystemAdministratorToUserPO> S save(S s);
+}

+ 33 - 0
core/src/main/java/com/mooctest/crowd/domain/dao/TaskToUserDao.java

@@ -0,0 +1,33 @@
+package com.mooctest.crowd.domain.dao;
+
+import com.mooctest.crowd.domain.model.RankCountInfo;
+import com.mooctest.crowd.domain.model.RankInfo;
+import com.mooctest.crowd.domain.model.TaskToUserPO;
+import org.springframework.data.domain.Pageable;
+import org.springframework.data.jpa.repository.Query;
+import org.springframework.data.repository.CrudRepository;
+
+import javax.transaction.Transactional;
+import java.util.List;
+import java.util.Optional;
+
+@Transactional
+public interface TaskToUserDao extends CrudRepository<TaskToUserPO,Long> {
+
+    @Override
+    Optional<TaskToUserPO> findById(Long id);
+
+    List<TaskToUserPO> findByUserId(Long userId);
+
+    List<TaskToUserPO> findByTaskCode(String taskCode);
+
+    List<TaskToUserPO> findByTaskCodeAndHasReport(String taskCode, int hasReport);
+
+    TaskToUserPO save(TaskToUserPO taskToUserPO);
+
+    @Query(value = "SELECT new com.mooctest.crowd.domain.model.RankInfo(SUM(t.quotedPrice), t.userId) FROM TaskToUserPO t where t.userId is not null GROUP BY t.userId ORDER BY SUM(t.quotedPrice) DESC")
+    List<RankInfo> findTotalPriceOfAgency(Pageable pageable);
+
+    @Query(value = "SELECT new com.mooctest.crowd.domain.model.RankCountInfo(SUM(t.isCommitted), t.userId) FROM TaskToUserPO t where t.userId is not null and t.isCommitted=1 GROUP BY t.userId ORDER BY SUM(t.isCommitted) DESC")
+    List<RankCountInfo> findTotalCountOfUser();
+}

+ 31 - 0
core/src/main/java/com/mooctest/crowd/domain/dao/TechnicalArticlesDao.java

@@ -0,0 +1,31 @@
+package com.mooctest.crowd.domain.dao;
+
+import com.mooctest.crowd.domain.model.TechnicalArticlesPO;
+import org.springframework.data.domain.Page;
+import org.springframework.data.domain.Pageable;
+import org.springframework.data.jpa.domain.Specification;
+import org.springframework.data.jpa.repository.JpaRepository;
+import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
+import org.springframework.data.jpa.repository.Modifying;
+import org.springframework.data.jpa.repository.Query;
+import org.springframework.data.repository.CrudRepository;
+import org.springframework.data.repository.PagingAndSortingRepository;
+import org.springframework.data.repository.query.Param;
+
+
+
+
+
+import javax.transaction.Transactional;
+
+
+
+@Transactional
+public interface TechnicalArticlesDao extends PagingAndSortingRepository<TechnicalArticlesPO, Long> ,CrudRepository<TechnicalArticlesPO, Long>, JpaRepository<TechnicalArticlesPO, Long> ,JpaSpecificationExecutor<TechnicalArticlesPO>{
+
+    Page<TechnicalArticlesPO> findAll(Specification<TechnicalArticlesPO> spec , Pageable pageable);
+
+    @Modifying
+    @Query(nativeQuery = true,value="update  technical_articles set TA_READING=TA_READING+1 where TA_ID=?")
+    int updateReading(@Param("id") long id);
+}

+ 20 - 0
core/src/main/java/com/mooctest/crowd/domain/dao/TestTypeDao.java

@@ -0,0 +1,20 @@
+package com.mooctest.crowd.domain.dao;
+
+import com.mooctest.crowd.domain.model.TestTypePO;
+import org.springframework.data.repository.CrudRepository;
+
+import javax.transaction.Transactional;
+import java.util.List;
+import java.util.Optional;
+
+@Transactional
+public interface TestTypeDao extends CrudRepository<TestTypePO, Long>{
+
+    Optional<TestTypePO> findByCode(String code);
+
+    Optional<TestTypePO> findByName(String name);
+    
+    Optional<TestTypePO> findById(Long id);
+
+    List<TestTypePO> findAll();
+}

+ 28 - 0
core/src/main/java/com/mooctest/crowd/domain/dao/ToolDao.java

@@ -0,0 +1,28 @@
+package com.mooctest.crowd.domain.dao;
+
+import com.mooctest.crowd.domain.model.ToolPO;
+import org.springframework.data.domain.Page;
+import org.springframework.data.domain.Pageable;
+import org.springframework.data.jpa.domain.Specification;
+import org.springframework.data.jpa.repository.JpaRepository;
+import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
+import org.springframework.data.repository.CrudRepository;
+import org.springframework.data.repository.PagingAndSortingRepository;
+
+import javax.transaction.Transactional;
+import java.util.List;
+import java.util.Optional;
+
+@Transactional
+public interface ToolDao extends CrudRepository<ToolPO, Long>, JpaSpecificationExecutor<ToolPO>,PagingAndSortingRepository<ToolPO, Long>,JpaRepository<ToolPO, Long> {
+
+    Optional<ToolPO> findByCodeAndIsDeleted(String code, int isDeleted);
+
+    Optional<ToolPO> findByIdAndIsDeleted(Long id, int isDeleted);
+
+    List<ToolPO> findAll();
+
+    Page<ToolPO> findAll(Specification<ToolPO> spec, Pageable pageable);
+
+    List<ToolPO> findByNameLikeAndIsDeleted(String name, int isDeleted);
+}

+ 34 - 0
core/src/main/java/com/mooctest/crowd/domain/dao/UserDao.java

@@ -0,0 +1,34 @@
+package com.mooctest.crowd.domain.dao;
+
+import com.mooctest.crowd.domain.model.UserPO;
+import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
+import org.springframework.data.repository.CrudRepository;
+import org.springframework.data.repository.PagingAndSortingRepository;
+
+import javax.transaction.Transactional;
+import java.util.List;
+import java.util.Optional;
+
+@Transactional
+public interface UserDao extends PagingAndSortingRepository<UserPO, Long>, JpaSpecificationExecutor<UserPO> ,CrudRepository<UserPO, Long> {
+
+    UserPO findByMobile(String mobile);
+
+    Optional<UserPO> findById(Long userId);
+
+    @Override
+    Iterable<UserPO> findAllById(Iterable<Long> iterable);
+
+    @Override
+    Iterable<UserPO> findAll();
+
+    @Override
+    void delete(UserPO userPO);
+
+    void deleteAll(Iterable<? extends UserPO> iterable);
+
+    UserPO save(UserPO userPo);
+
+    @Override
+    long count();
+}

+ 31 - 0
core/src/main/java/com/mooctest/crowd/domain/dao/UserTaskCountDao.java

@@ -0,0 +1,31 @@
+package com.mooctest.crowd.domain.dao;
+
+import com.mooctest.crowd.domain.model.UserTaskCountPO;
+import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
+import org.springframework.data.jpa.repository.Modifying;
+import org.springframework.data.jpa.repository.Query;
+import org.springframework.data.repository.CrudRepository;
+import org.springframework.data.repository.query.Param;
+
+import javax.transaction.Transactional;
+import java.util.List;
+import java.util.Optional;
+
+@Transactional
+public interface UserTaskCountDao extends CrudRepository<UserTaskCountPO, Long>, JpaSpecificationExecutor<UserTaskCountPO> {
+
+    Optional<UserTaskCountPO> findByUserId(Long userId);
+
+    List<UserTaskCountPO> findByType(Long type);
+
+    Optional<UserTaskCountPO> findById(Long id);
+
+    List<UserTaskCountPO> findAll();
+
+    @Modifying
+    @Query(nativeQuery = true,value="UPDATE user_task_count SET UTC_COUNT=?1 WHERE UTC_USER_ID=?2")
+    void updateCount(@Param("userId") long userId,@Param("count") long count);
+
+    @Override
+    <S extends UserTaskCountPO> S save(S s);
+}

+ 26 - 0
core/src/main/java/com/mooctest/crowd/domain/dao/UserToRoleDao.java

@@ -0,0 +1,26 @@
+package com.mooctest.crowd.domain.dao;
+
+import com.mooctest.crowd.domain.model.UserToRolePO;
+import org.springframework.data.jpa.repository.Query;
+import org.springframework.data.repository.CrudRepository;
+import org.springframework.data.repository.query.Param;
+
+import javax.transaction.Transactional;
+import java.util.List;
+import java.util.Optional;
+
+@Transactional
+public interface UserToRoleDao extends CrudRepository<UserToRolePO,Long> {
+
+    @Override
+    Optional<UserToRolePO> findById(Long id);
+
+    List<UserToRolePO> findByUserId(Long userId);
+
+    List<UserToRolePO> findByRoleId(Long roleId);
+
+    UserToRolePO save(UserToRolePO userToRolePO);
+
+    @Query(value="SELECT user_to_role.UTR_R_ID from user_to_role WHERE user_to_role.UTR_U_ID=?",nativeQuery = true)
+    List<Long> findRoleId(@Param("userId") Long userId);
+}

+ 34 - 0
core/src/main/java/com/mooctest/crowd/domain/dao/adapter/UpdateAdapter.java

@@ -0,0 +1,34 @@
+package com.mooctest.crowd.domain.dao.adapter;
+
+import com.google.common.collect.Lists;
+import org.springframework.data.repository.CrudRepository;
+
+import java.util.List;
+import java.util.Optional;
+
+/**
+ * @author: Diors.Po
+ * @Email: 171256175@qq.com
+ * @date 2020-01-03 21:16
+ */
+public interface UpdateAdapter<T, ID> extends CrudRepository<T, ID> {
+
+    default T findOne(ID id){
+        return findById(id).orElse(null);
+    }
+
+    @Override
+    Optional<T> findById(ID id);
+
+    default List<T> findAll(List<ID> ids){
+        return Lists.newArrayList(findAllById(ids));
+    }
+
+    default List<T> save(List<T> ts){
+        return Lists.newArrayList(saveAll(ts));
+    }
+
+    default void delete(List<T> ts){
+        deleteAll(ts);
+    }
+}

+ 64 - 0
core/src/main/java/com/mooctest/crowd/domain/domainobject/Account.java

@@ -0,0 +1,64 @@
+package com.mooctest.crowd.domain.domainobject;
+
+import com.mooctest.crowd.domain.command.ModifyPasswordCommand;
+import com.mooctest.crowd.domain.exception.PasswordErrorException;
+import lombok.Data;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * @Author: xuexb
+ * @Date: 2019.7.5 14:04
+ */
+@Data
+public class Account {
+
+    private Long id;
+    private String mobileNum;
+    private String password;
+//    private List<Permission> permission;
+//    private List<Role> roles;
+
+    public boolean login(String mobileNum,String password) throws PasswordErrorException {
+
+        if (this.getPassword().equals(password)) {
+            return true;
+        }
+        else {
+            throw new PasswordErrorException();
+        }
+    }
+
+    public boolean modifyPassword(ModifyPasswordCommand cmd) throws PasswordErrorException {
+
+        if(this.getPassword().equals(cmd.getOldPassword())){
+            this.setPassword(cmd.getNewPassword());
+            return true;
+        }else {
+            throw new PasswordErrorException();
+        }
+    }
+
+    public List<Permission> distributePermission(){
+        List<Permission> permissions = new ArrayList<Permission>();
+        Permission permission = new Permission();
+        permission.setId(1L);
+        permission.setName("PERMISSION_ONE");
+        permission.setResource("RESOURCE_ONE");
+        permission.setOperation("OPERATION_ONE");
+        permissions.add(permission);
+        return permissions;
+    }
+
+    public List<Role> distributeRole() {
+        List<Role> roles = new ArrayList<Role>();
+        Role role = new Role();
+        role.setId(1L);
+        role.setName("GeneralUser");
+        roles.add(role);
+        return roles;
+    }
+
+
+}

+ 20 - 0
core/src/main/java/com/mooctest/crowd/domain/domainobject/ApplicationType.java

@@ -0,0 +1,20 @@
+package com.mooctest.crowd.domain.domainobject;
+
+import lombok.Data;
+
+import java.util.List;
+
+/**
+ * @author guochao
+ * @date 2019/7/6 17:54
+ */
+@Data
+public class ApplicationType {
+    private Long id;
+    private String code;
+    private String name;
+    private String image;
+    private List<TestType> testTypeList;
+    private String introduction;
+    private Long count;
+}

+ 16 - 0
core/src/main/java/com/mooctest/crowd/domain/domainobject/ApplicationTypeToTestType.java

@@ -0,0 +1,16 @@
+package com.mooctest.crowd.domain.domainobject;
+
+import lombok.Data;
+
+import javax.persistence.*;
+
+/**
+ * @author guochao
+ * @date 2019/7/6 17:54
+ */
+@Data
+public class ApplicationTypeToTestType {
+    private Long id;
+    private String applicationTypeCode;
+    private String testTypeCode;
+}

+ 11 - 0
core/src/main/java/com/mooctest/crowd/domain/domainobject/AuthenticationStatus.java

@@ -0,0 +1,11 @@
+package com.mooctest.crowd.domain.domainobject;
+
+/**
+ * @author guochao
+ * @date 2019/7/9 14:21
+ */
+public class AuthenticationStatus {
+    public static final int isNotAuthenticated = -1; //未通过认证
+    public static final int isAuthenIng = 0;         //审核中
+    public static final int isAuthenticated = 1;     //已认证
+}

+ 11 - 0
core/src/main/java/com/mooctest/crowd/domain/domainobject/BankLogo.java

@@ -0,0 +1,11 @@
+package com.mooctest.crowd.domain.domainobject;
+
+import lombok.Data;
+
+@Data
+public class BankLogo {
+    private Long id;
+    private  String logoUrl;
+    private String name;
+    private String code;
+}

+ 24 - 0
core/src/main/java/com/mooctest/crowd/domain/domainobject/Competition.java

@@ -0,0 +1,24 @@
+package com.mooctest.crowd.domain.domainobject;
+
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.sql.Timestamp;
+
+/**
+ * @author guochao
+ * @date 2019/7/6 17:54
+ */
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+public class Competition {
+    private Long id;
+    private String name;
+    private String linkUrl;
+    private Timestamp startTime;
+    private String unit;
+    private String image;
+    private int isDeleted;
+}

+ 13 - 0
core/src/main/java/com/mooctest/crowd/domain/domainobject/Configuration.java

@@ -0,0 +1,13 @@
+package com.mooctest.crowd.domain.domainobject;
+
+import lombok.Data;
+
+/**
+ * @author guochao
+ */
+@Data
+public class Configuration {
+    private Long id;
+    private String name;
+    private String value;
+}

+ 718 - 0
core/src/main/java/com/mooctest/crowd/domain/domainobject/CrowdTestProject.java

@@ -0,0 +1,718 @@
+package com.mooctest.crowd.domain.domainobject;
+
+import com.google.gson.Gson;
+import com.mooctest.crowd.domain.exception.*;
+import com.mooctest.crowd.domain.model.CrowdTestProjectPO;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.sql.Timestamp;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Optional;
+
+/**
+ * @author guochao
+ * @date 2019/7/6 18:27
+ */
+@Data
+@NoArgsConstructor
+@AllArgsConstructor
+public class CrowdTestProject {
+    public static final int HAS_REJECTED = -1; //项目被拒
+    public static final int HAS_CREATED = 0;  //创建项目
+    public static final int HAS_RELEASED = 1; //发布项目
+    public static final int HAS_RECEIVED = 2; //接收项目
+    public static final int HAS_COMMITED = 3; //提交项目
+    public static final int HAS_FINISHED = 4; //结束项目
+    public static final int HAS_TIME_OUT = 5; //时间截止
+    private Long id;
+    private String name;
+    private String code;
+    private Long userId;
+    private Long regionalManagerId;
+    private Long projectDistributionTypeId;
+    private String fieldType;
+    private String applicationType;
+    private String type;
+    private String linkMan;
+    private String linkManMobile;
+    private String description;
+    private String projectFile;
+    private String requirementFile;
+    private String distributionProvince;
+    private String distributionCity;
+    private String valuationStandard;
+    private Double quotedPrice;
+    private Double fixedPrice;
+    private Double restPrice;
+    private String entrustUnit;
+    private int status;
+    private Timestamp deadTime;
+    private Timestamp endTime;
+    private int isDeleted;
+    private int joinCount;
+    private Timestamp createTime;
+    private List<CrowdTestTask> crowdTestTaskList;
+    private CrowdTestReport crowdTestReportForProject;
+
+//    public CrowdTestProject wrapperCrowdTestProjectPO(CrowdTestProjectPO crowdTestProjectPO){
+//        CrowdTestProject crowdTestProject = Converter.convert(CrowdTestProject.class, crowdTestProjectPO);
+//        return crowdTestProject;
+//    }
+
+    public CrowdTestProject(CrowdTestProjectPO crowdTestProjectPO){
+        this.code = crowdTestProjectPO.getCode();
+        this.name = crowdTestProjectPO.getName();
+    }
+
+    /**
+     * 更新项目信息
+     *
+     * @param crowdTestProjectModify
+     * @return
+     */
+    public CrowdTestProject updateCrowdTestProject(CrowdTestProject crowdTestProjectModify) {
+        Gson gson = new Gson();
+        return gson.fromJson(gson.toJson(crowdTestProjectModify), CrowdTestProject.class);
+    }
+
+    /**
+     * 更新项目中的指定任务信息
+     * @param crowdTestTaskCode
+     * @param crowdTestTaskModify
+     * @return
+     */
+//    public CrowdTestProject updateCrowdTestTask(String crowdTestTaskCode, CrowdTestTask crowdTestTaskModify){
+//        List<CrowdTestTask> crowdTestTaskListNew = new ArrayList<>();
+//        List<CrowdTestTask> crowdTestTaskList = this.getCrowdTestTaskList();
+//        for(CrowdTestTask crowdTestTaskSelect : crowdTestTaskList){
+//            List<CrowdTestReport> crowdTestReportList = crowdTestTaskSelect.getCrowdTestReportList();
+//            if(crowdTestTaskCode.equals(crowdTestTaskSelect.getCode())){
+//                Gson gson = new Gson();
+//                crowdTestTaskSelect = gson.fromJson(gson.toJson(crowdTestTaskModify), CrowdTestTask.class);
+//            }
+//            crowdTestTaskSelect.setCrowdTestReportList(crowdTestReportList);
+//            crowdTestTaskListNew.add(crowdTestTaskSelect);
+//        }
+//        this.setCrowdTestTaskList(crowdTestTaskListNew);
+//        return this;
+//    }
+
+    /**
+     * 更新项目中任务的指定报告信息
+     * @param crowdTestTaskCode
+     * @param crowdTestReportCode
+     * @param crowdTestReportModify
+     * @return
+     */
+//    public CrowdTestProject updateCrowdTestReport( String crowdTestTaskCode, String crowdTestReportCode, CrowdTestReport crowdTestReportModify) {
+//        List<CrowdTestTask> crowdTestTaskListNew = new ArrayList<>();
+//        List<CrowdTestTask> crowdTestTaskList = this.getCrowdTestTaskList();
+//        for(CrowdTestTask crowdTestTaskSelect : crowdTestTaskList){
+//            List<CrowdTestReport> crowdTestReportListNew = new ArrayList<>();
+//            if(crowdTestTaskCode.equals(crowdTestTaskSelect.getCode())){
+//                List<CrowdTestReport> crowdTestReportList = crowdTestTaskSelect.getCrowdTestReportList();
+//                for(CrowdTestReport crowdTestReportSelect : crowdTestReportList){
+//                    if(crowdTestReportCode.equals(crowdTestReportSelect.getCode())){
+//                        Gson gson = new Gson();
+//                        crowdTestReportSelect = gson.fromJson(gson.toJson(crowdTestReportModify), CrowdTestReport.class);
+//                    }
+//                    crowdTestReportListNew.add(crowdTestReportSelect);
+//                }
+//            }
+//            crowdTestTaskSelect.setCrowdTestReportList(crowdTestReportListNew);
+//            crowdTestTaskListNew.add(crowdTestTaskSelect);
+//        }
+//        this.setCrowdTestTaskList(crowdTestTaskListNew);
+//        return this;
+//    }
+
+    /**
+     * 逻辑删除项目(项目发布者)
+     * @return
+     */
+//    public CrowdTestProject removeCrowdTestProject(User user) {
+//        //判断用户是否认证
+//        if(user.getPersonalAuthentication() == null && user.getEnterpriseAuthentication() == null && user.getRegionalManager() == null && user.getEvaluationAgency() == null){
+//            throw new CrowdTestProjectException("当前用户未进行认证,无权限对项目操作");
+//        }
+//        //判断用户是否为项目发起者
+//        if(!this.getUserId().equals(user.getId())){
+//            throw new CrowdTestProjectException("当前用户无权限发布此项目");
+//        }
+//
+//        this.getCrowdTestTaskList()
+//                .stream().forEach(crowdTestTask -> crowdTestTask.removeCrowdTestTask());
+//        this.getCrowdTestTaskList()
+//                .stream().forEach(crowdTestTask -> crowdTestTask.getCrowdTestReportList().stream().forEach(crowdTestReport -> crowdTestReport.removeCrowdTestReport()));
+//
+//        CrowdTestReport crowdTestReportForProject = this.getCrowdTestReportForProject();
+//        if(crowdTestReportForProject != null){
+//            crowdTestReportForProject.removeCrowdTestReport();
+//        }
+//        this.setIsDeleted(DeletedStatus.isDeleted);
+//        return this;
+//    }
+
+    /**
+     * 逻辑删除任务(区域管理员)
+     * @param crowdTestTaskCode
+     * @return
+     */
+//    public CrowdTestProject removeCrowdTestTask(String crowdTestTaskCode, User user) {
+//        //判断是否为区域管理员
+//        RegionalManager regionalManager = user.getRegionalManager();
+//        if(regionalManager == null){
+//            throw new UserNotExistException("当前用户不是区域管理员,没有权限对任务进行操作");
+//        }
+//
+//        //判断是否是当前项目的区域管理员
+//        if(!this.getRegionalManagerId().equals(user.getId())){
+//            throw new CrowdTestTaskException("当前用户没有权限删除此测试任务!");
+//        }
+//
+//        Optional<CrowdTestTask> task = this.getCrowdTestTaskList()
+//                .stream().filter(crowdTestTask -> crowdTestTask.getCode().equals(crowdTestTaskCode)).findFirst();
+//        if(!task.isPresent()){
+//            throw new CrowdTestTaskException("当前项目下没有此测试任务!");
+//        }else{
+//            task.get().removeCrowdTestTask();
+//            task.get().getCrowdTestReportList().stream().forEach(crowdTestReport -> crowdTestReport.removeCrowdTestReport());
+//        }
+//        return this;
+//    }
+
+    /**
+     * 逻辑删除报告(测评机构)
+     * @param crowdTestTaskCode
+     * @param crowdTestReportCode
+     * @return
+     */
+//    public CrowdTestProject removeCrowdTestReport(String crowdTestTaskCode, String crowdTestReportCode, User user) {
+//
+//        //判断是否为测评机构
+//        EvaluationAgency evaluationAgency = user.getEvaluationAgency();
+//        if(evaluationAgency == null){
+//            throw new UserNotExistException("当前用户不是测评机构,没有权限操作测试报告");
+//        }
+//
+//        Optional<CrowdTestTask> task = this.getCrowdTestTaskList()
+//                .stream().filter(crowdTestTask -> crowdTestTask.getCode().equals(crowdTestTaskCode)).findFirst();
+//        if(!task.isPresent()){
+//            throw new CrowdTestTaskException("当前项目下没有此测试任务!");
+//        }else{
+//            //判断是否是当前任务的测评机构
+//            if(!task.get().getEvaluationAgencyId().equals(user.getId())){
+//                throw new CrowdTestTaskException("当前用户没有权限删除此任务的测试报告!");
+//            }else{
+//                Optional<CrowdTestReport> report = task.get().getCrowdTestReportList()
+//                        .stream().filter(crowdTestReport -> crowdTestReport.getCode().equals(crowdTestReportCode)).findFirst();
+//                if(!report.isPresent()){
+//                    throw new CrowdTestReportException("当前任务下没有此测试报告!");
+//                }else{
+//                    report.get().removeCrowdTestReport();
+//                }
+//            }
+//        }
+//        return this;
+//    }
+
+
+    /**
+     * 删除项目报告(区域管理员)
+     *
+     * @return
+     */
+//    public CrowdTestProject removeCrowdTestProjectReport(String crowdTestProjectReportCode,User user) {
+//        //判断是否为区域管理员
+//        RegionalManager regionalManager = user.getRegionalManager();
+//        if(regionalManager == null){
+//            throw new UserNotExistException("当前用户不是区域管理员,没有权限对项目进行操作");
+//        }
+//
+//        //判断是否是当前项目的区域管理员
+//        if(!this.getRegionalManagerId().equals(user.getId())){
+//            throw new CrowdTestTaskException("当前用户没有权限删除此测试任务!");
+//        }
+//
+//        CrowdTestReport crowdTestReportForProject = this.getCrowdTestReportForProject();
+//        if(crowdTestReportForProject == null){
+//            throw new CrowdTestProjectException("当前项目下没有项目报告!");
+//        }else if(!crowdTestProjectReportCode.equals(crowdTestReportForProject.getCode())){
+//            throw new CrowdTestProjectException("当前项目下没有此项目报告!");
+//        }else{
+//            crowdTestReportForProject.setIsDeleted(DeletedStatus.isDeleted);
+//        }
+//        return this;
+//    }
+    public void addTask(CrowdTestTask task) {
+        if (!(this.getStatus() >= CrowdTestProjectStatus.HAS_RECEIVED || this.getStatus() <= CrowdTestTaskStatus.HAS_COMMITED))
+            throw new BaseException("当前阶段不允许创建新任务");
+        if (this.getRestPrice() < task.getQuotedPrice()) {
+            throw new BaseException("任务的报价不能超过项目的剩余价格,项目的剩余价格为:" + this.getRestPrice());
+        }
+        if (this.getDeadTime().getTime() < task.getDeadTime().getTime()) {
+            throw new BaseException("任务截止时间不能超过项目的截止时间,项目的截止时间为:" + this.getDeadTime());
+        }
+        if (task.getDeadTime().getTime() < System.currentTimeMillis()) {
+            throw new BaseException("任务截止时间不能小于当前时间");
+        }
+        this.setRestPrice(this.getRestPrice() - task.getQuotedPrice());
+        this.getCrowdTestTaskList().add(task);
+    }
+
+    public void removeTask(CrowdTestTask task) {
+        this.setRestPrice(this.getRestPrice() + task.getQuotedPrice());
+        this.getCrowdTestTaskList().remove(task);
+    }
+
+    public CrowdTestTask getTask(String taskCode) {
+        Optional<CrowdTestTask> testTask = this.getCrowdTestTaskList().stream().filter(crowdTestTask -> crowdTestTask.getCode().equals(taskCode)).findFirst();
+        if (!testTask.isPresent())
+            throw new CrowdTestTaskNotExistException();
+        return testTask.get();
+    }
+
+    public CrowdTestReport getTaskReport(String taskCode, String reportCode) {
+        List<TaskToUser> acceptedUserList = getTask(taskCode).getAcceptedUserList();
+        boolean flag = false;
+        for (TaskToUser taskToUser : acceptedUserList) {
+            Optional<CrowdTestReport> report = taskToUser.getCrowdTestReportList().stream().filter(crowdTestReport -> crowdTestReport.getCode().equals(reportCode)
+                    && crowdTestReport.getUserId().equals(userId)).findFirst();
+            if (report.isPresent()) {
+                return report.get();
+            }
+        }
+        if (!flag) {
+            throw new CrowdTestReportNotExistException();
+        }
+        return null;
+    }
+
+    /**
+     * 创建测试项目(普通用户)
+     *
+     * @return
+     */
+    public CrowdTestProject createCrowdTestProject(User user) {
+//        //判断用户是否认证
+//        if(user.getPersonalAuthentication() == null && user.getEnterpriseAuthentication() == null && user.getRegionalManager() == null && user.getEvaluationAgency() == null){
+//            throw new CrowdTestProjectException("当前用户未进行认证,无权限对项目操作");
+//        }
+        //增加设置项目code ---------需要补上
+//        String projectCode = GenerateFlowCodeUtil.generateFlowCode("PROJ");
+//        this.setCode(projectCode);
+
+        this.setStatus(CrowdTestProjectStatus.HAS_CREATED);
+        this.setCreateTime(new Timestamp(System.currentTimeMillis()));
+        return this;
+    }
+
+    /**
+     * 发布项目(普通用户)
+     *
+     * @return
+     */
+    public CrowdTestProject releaseCrowdTestProject(User user) {
+        //判断用户是否认证
+        if (user.getPersonalAuthentication() == null && user.getEnterpriseAuthentication() == null && user.getRegionalManager() == null && user.getEvaluationAgency() == null) {
+            throw new CrowdTestProjectException("当前用户未进行认证,无权限对项目操作");
+        }
+        //判断用户是否为项目发起者
+        if (!this.getUserId().equals(user.getId())) {
+            throw new CrowdTestProjectException("当前用户无权限发布此项目");
+        }
+
+        //判断项目状态
+        if (this.status != (CrowdTestProjectStatus.HAS_RELEASED - 1)) {
+            throw new CrowdTestProjectException("当前项目状态不能被发布,当前状态为:" + this.getStatus());
+        } else {
+            this.setStatus(CrowdTestProjectStatus.HAS_RELEASED);
+        }
+        return this;
+    }
+
+    /**
+     * 接收项目(区域管理员)
+     *
+     * @return
+     */
+    public CrowdTestProject receiveProject(User user) {
+        //判断是否为区域管理员
+        RegionalManager regionalManager = user.getRegionalManager();
+        if (regionalManager == null) {
+            throw new UserNotExistException("当前用户不是区域管理员,没有权限接收项目");
+        }
+
+        //判断项目状态
+        if (this.getStatus() != CrowdTestProjectStatus.HAS_RELEASED) {
+            throw new CrowdTestProjectException("项目不能被接收,项目已被接收");
+        } else {
+            //项目是定向发布
+            if (this.getProjectDistributionTypeId() == 0) {
+                if (!this.getRegionalManagerId().equals(user.getId())) {
+                    throw new CrowdTestProjectException("当前用户没有权限接收此定向发布的项目!");
+                } else {
+                    this.setStatus(CrowdTestProjectStatus.HAS_RECEIVED);
+                }
+            }
+            //项目是区域发布
+            else if (this.getProjectDistributionTypeId() == 1) {
+                List<RegionalManagerToRegional> regionalList = regionalManager.getRegionalList();
+                boolean isValidCity = false;
+                //判断管理员管辖的区域是否符合要求
+                for (RegionalManagerToRegional regional : regionalList) {
+                    //判断市是否相同
+                    if (this.getDistributionCity().equals(regional.getCity())) {
+                        isValidCity = true;
+                    }
+                    //如果市区是"*",则判断省份是否相同
+                    if (regional.getCity().equals("*")) {
+                        if (this.getDistributionProvince().equals(regional.getProvince())) {
+                            isValidCity = true;
+                        }
+                    }
+                }
+
+                if (!isValidCity) {
+                    throw new CrowdTestProjectException("项目发布的区域不符合当前区域管理员所管辖的区域!");
+                } else {
+                    this.setRegionalManagerId(user.getId());
+                    this.setStatus(CrowdTestProjectStatus.HAS_RECEIVED);
+                }
+            }
+            //项目是广场发布
+            else {
+                this.setRegionalManagerId(user.getId());
+                this.setStatus(CrowdTestProjectStatus.HAS_RECEIVED);
+            }
+        }
+        return this;
+    }
+
+    /**
+     * 创建测试任务(区域管理员)
+     *
+     * @param crowdTestTask
+     * @return
+     */
+    public CrowdTestProject createCrowdTestTask(CrowdTestTask crowdTestTask, User user) {
+        //判断是否为区域管理员
+        RegionalManager regionalManager = user.getRegionalManager();
+        if (regionalManager == null) {
+            throw new UserNotExistException("当前用户不是区域管理员,没有权限创建测试任务");
+        }
+
+        //判断是否是当前项目的区域管理员
+        if (!this.getRegionalManagerId().equals(user.getId())) {
+            throw new CrowdTestTaskException("当前用户没有权限为此项目创建测试任务!");
+        } else {
+            //判断项目状态
+            if (this.getStatus() != (CrowdTestProjectStatus.HAS_COMMITED - 1)) {
+                throw new CrowdTestProjectException("当前项目状态不能创建任务,项目状态为: " + this.getStatus());
+            } else {
+                List<CrowdTestTask> crowdTestTaskList = this.getCrowdTestTaskList();
+//            //增加设置任务code -------需要加上
+//            String taskCode = GenerateFlowCodeUtil.generateFlowCode("TASK-"+ command.getType());
+//            crowdTestTask.setCode(taskCode);
+
+                crowdTestTask.setStatus(CrowdTestTaskStatus.HAS_CREATED);
+                //添加测试任务
+                crowdTestTaskList.add(crowdTestTask);
+                this.setCrowdTestTaskList(crowdTestTaskList);
+            }
+        }
+        return this;
+    }
+
+    /**
+     * 发布任务(区域管理员)
+     *
+     * @param crowdTestTaskCode
+     * @return
+     */
+    public CrowdTestProject releaseCrowdTestTask(String crowdTestTaskCode, User user) {
+        //判断是否为区域管理员
+        RegionalManager regionalManager = user.getRegionalManager();
+        if (regionalManager == null) {
+            throw new UserNotExistException("当前用户不是区域管理员,没有权限发布测试任务");
+        }
+
+        //判断是否是当前项目的区域管理员
+        if (!this.regionalManagerId.equals(user.getId())) {
+            throw new CrowdTestProjectException("当前用户没有权限发布的当前项目下的任务!");
+        } else {
+            List<CrowdTestTask> crowdTestTaskList = this.getCrowdTestTaskList();
+            List<CrowdTestTask> crowdTestTaskListResult = new ArrayList<>();
+            //发布任务时修改任务状态
+            for (CrowdTestTask crowdTestTask : crowdTestTaskList) {
+                if (crowdTestTaskCode.equals(crowdTestTask.getCode())) {
+                    if (crowdTestTask.getStatus() != (CrowdTestTaskStatus.HAS_RELEASED - 1)) {
+                        throw new CrowdTestTaskException("当前任务不能被发布,当前任务状态为:" + crowdTestTask.getStatus());
+                    } else {
+                        crowdTestTask.setStatus(CrowdTestTaskStatus.HAS_RELEASED);
+                    }
+                }
+                crowdTestTaskListResult.add(crowdTestTask);
+            }
+            this.setCrowdTestTaskList(crowdTestTaskListResult);
+            return this;
+        }
+    }
+
+    /**
+     * 接收任务(测评机构)
+     *
+     * @return
+     */
+    public CrowdTestProject receiveTask(String crowdTestTaskCode, User user) {
+        //判断是否为测评机构
+        EvaluationAgency evaluationAgency = user.getEvaluationAgency();
+        if (evaluationAgency == null) {
+            throw new UnauthorizedException("当前用户不是测评机构,没有权限接收任务");
+        }
+        Optional<CrowdTestTask> taskOp = this.getCrowdTestTaskList().stream().filter(task -> task.getCode().equals(crowdTestTaskCode)).findFirst();
+        //任务是否不存在
+        if (!taskOp.isPresent())
+            throw new CrowdTestTaskNotExistException();
+        CrowdTestTask task = taskOp.get();
+        //任务当前状态
+        if (task.getStatus() != CrowdTestTaskStatus.HAS_RELEASED)
+            throw new CrowdTestTaskException("任务当前状态不能被接收,当前状态为:" + task.getStatus());
+        //定向发布类型
+        if (task.getDistributionType() == 0) {
+            if (!task.getEvaluationAgencyId().equals(user.getId()))
+                throw new CrowdTestTaskException("当前用户没有权限接收此定向发布的任务!");
+        }
+        task.setEvaluationAgencyId(user.getId());
+        task.setStatus(CrowdTestTaskStatus.HAS_RECEIVED);
+        return this;
+    }
+
+
+    /**
+     * 创建测试报告(测评机构)
+     * @param crowdTestTaskCode
+     * @param crowdTestReport
+     * @return
+     */
+//    public CrowdTestProject createCrowdTestReport(String crowdTestTaskCode, CrowdTestReport crowdTestReport, User user) {
+//        //判断是否为测评机构
+//        EvaluationAgency evaluationAgency = user.getEvaluationAgency();
+//        if(evaluationAgency == null){
+//            throw new UserNotExistException("当前用户不是测评机构,没有权限创建测试报告");
+//        }
+//        List<CrowdTestTask> crowdTestTaskList = this.getCrowdTestTaskList();
+//        List<CrowdTestTask> crowdTestTaskListResult = new ArrayList<>();
+//        for(CrowdTestTask crowdTestTask : crowdTestTaskList){
+//            if(crowdTestTask.getCode().equals(crowdTestTaskCode)){
+//                //判断是否是当前任务的测评机构
+//                if(!crowdTestTask.getEvaluationAgencyId().equals(user.getId())){
+//                    throw new CrowdTestTaskException("当前用户没有权限创建任务测试报告!");
+//                }else{
+//                    if(crowdTestTask.getStatus() != (CrowdTestTaskStatus.HAS_COMMITED-1)){
+//                        throw new CrowdTestTaskException("当前任务无法创建测试报告,任务状态为:"+crowdTestTask.getStatus());
+//                    }else{
+//                        //设置报告code ----------需要添加
+////                        String reportCode = GenerateFlowCodeUtil.generateFlowCode("REPORT");
+////                        crowdTestReport.setCode(reportCode);
+//
+//                        crowdTestReport.setScope(1);
+//                        crowdTestReport.setDependencyCode(crowdTestTaskCode);
+//                        List<CrowdTestReport> crowdTestReportList = crowdTestTask.getCrowdTestReportList();
+//                        crowdTestReportList.add(crowdTestReport);
+//                        crowdTestTask.setCrowdTestReportList(crowdTestReportList);
+//                        crowdTestTaskListResult.add(crowdTestTask);
+//                    }
+//                }
+//            }
+//        }
+//        this.setCrowdTestTaskList(crowdTestTaskListResult);
+//        return this;
+//    }
+//
+//    /**
+//     * 提交测试任务(测评机构)
+//     * @param crowdTestTaskCode
+//     * @return
+//     */
+//    public CrowdTestProject commitCrowdTestTask(String crowdTestTaskCode, User user) {
+//        //判断是否为测评机构
+//        EvaluationAgency evaluationAgency = user.getEvaluationAgency();
+//        if(evaluationAgency == null){
+//            throw new UserNotExistException("当前用户不是测评机构,没有权限提交测试任务");
+//        }
+//
+//        List<CrowdTestTask> crowdTestTaskList = this.getCrowdTestTaskList();
+//        List<CrowdTestTask> crowdTestTaskListResult = new ArrayList<>();
+//        for(CrowdTestTask crowdTestTask : crowdTestTaskList){
+//            if(crowdTestTask.getCode().equals(crowdTestTaskCode)){
+//                //判断是否是当前任务的测评机构
+//                if(!crowdTestTask.getEvaluationAgencyId().equals(user.getId())){
+//                    throw new CrowdTestTaskException("当前用户没有权限提交任务!");
+//                }else{
+//                    if(crowdTestTask.getCrowdTestReportList().size() == 0){
+//                        throw new CrowdTestTaskException("当前任务中没有报告,不能提交此任务");
+//                    }
+//                    if(crowdTestTask.getStatus() != (CrowdTestTaskStatus.HAS_COMMITED-1)){
+//                        throw new CrowdTestTaskException("当前任务无法提交,任务状态为:"+crowdTestTask.getStatus());
+//                    }else{
+//                        crowdTestTask.setStatus(CrowdTestTaskStatus.HAS_COMMITED);
+//                    }
+//                }
+//            }
+//            crowdTestTaskListResult.add(crowdTestTask);
+//        }
+//        this.setCrowdTestTaskList(crowdTestTaskListResult);
+//        return this;
+//    }
+
+    /**
+     * 结束任务(区域管理员)
+     *
+     * @return
+     */
+    public CrowdTestProject finishCrowdTestTask(String crowdTestTaskCode, User user) {
+        //判断是否为区域管理员
+        RegionalManager regionalManager = user.getRegionalManager();
+        if (regionalManager == null) {
+            throw new UserNotExistException("当前用户不是区域管理员,没有权限结束测试任务");
+        }
+
+        //判断是否是当前项目的区域管理员
+        if (!this.regionalManagerId.equals(user.getId())) {
+            throw new CrowdTestProjectException("当前用户没有权限结束当前项目下的任务!");
+        }
+
+        //项目状态判断
+        if (this.getStatus() != (CrowdTestProjectStatus.HAS_COMMITED - 1)) {
+            throw new CrowdTestProjectException("当前项目状态不可结束任务!");
+        } else {
+            List<CrowdTestTask> crowdTestTaskList = this.getCrowdTestTaskList();
+            List<CrowdTestTask> crowdTestTaskListResult = new ArrayList<>();
+
+            for (CrowdTestTask crowdTestTask : crowdTestTaskList) {
+                if (crowdTestTaskCode.equals(crowdTestTask.getCode())) {
+                    if (crowdTestTask.getStatus() != (CrowdTestTaskStatus.HAS_FINISHED - 1)) {
+                        throw new CrowdTestTaskException("当前任务不能被结束,任务状态为:" + crowdTestTask.getStatus());
+                    } else {
+                        //结束任务时修改任务状态为"已结束"
+                        crowdTestTask.setStatus(CrowdTestTaskStatus.HAS_FINISHED);
+                        crowdTestTask.setEndTime(new Timestamp(System.currentTimeMillis()));
+                    }
+                }
+                crowdTestTaskListResult.add(crowdTestTask);
+            }
+
+            this.setCrowdTestTaskList(crowdTestTaskListResult);
+        }
+
+
+        return this;
+    }
+
+    /**
+     * 创建项目报告(区域管理员)
+     *
+     * @param crowdTestReport
+     * @return
+     */
+    public CrowdTestProject createCrowdTestProjectReport(CrowdTestReport crowdTestReport, User user) {
+        //判断是否为区域管理员
+        RegionalManager regionalManager = user.getRegionalManager();
+        if (regionalManager == null) {
+            throw new UserNotExistException("当前用户不是区域管理员,没有权限创建项目报告");
+        }
+
+        //判断是否是当前项目的区域管理员
+        if (!this.regionalManagerId.equals(user.getId())) {
+            throw new CrowdTestProjectException("当前用户没有权限创建项目报告!");
+        }
+        //项目状态判断
+        if (this.getStatus() != (CrowdTestProjectStatus.HAS_COMMITED - 1)) {
+            throw new CrowdTestProjectException("当前项目状态不可创建项目报告!状态为:" + this.getStatus());
+        } else {
+            crowdTestReport.setScope(0);
+            crowdTestReport.setDependencyCode(this.getCode());
+            this.setCrowdTestReportForProject(crowdTestReport);
+            return this;
+        }
+    }
+
+    /**
+     * 提交项目(区域管理员)
+     *
+     * @return
+     */
+    public CrowdTestProject commitCrowdTestProject(User user) {
+        //判断是否为区域管理员
+        RegionalManager regionalManager = user.getRegionalManager();
+        if (regionalManager == null) {
+            throw new UserNotExistException("当前用户不是区域管理员,没有权限提交项目");
+        }
+
+        //判断是否是当前项目的区域管理员
+        if (!this.regionalManagerId.equals(user.getId())) {
+            throw new CrowdTestProjectException("当前用户没有权限操作此项目!");
+        }
+
+        //项目状态判断
+        if (this.getStatus() != CrowdTestProjectStatus.HAS_RECEIVED) {
+            throw new CrowdTestProjectException("当前项目状态不可提交项目!状态为:" + this.getStatus());
+        }
+
+        //判断项目下是否有任务
+        if (this.getCrowdTestTaskList() == null || this.getCrowdTestTaskList().size() < 1) {
+            throw new CrowdTestProjectException("还未创建任务,项目不能被提交");
+        } else {
+            //结束项目时查看是否已结束任务
+            if (this.getCrowdTestTaskList().stream().filter(task -> task.getStatus() != CrowdTestTaskStatus.HAS_REJECTED)
+                    .filter(task -> task.getStatus() != CrowdTestTaskStatus.HAS_TIME_OUT)
+                    .anyMatch(task -> task.getStatus() != CrowdTestTaskStatus.HAS_FINISHED)) {
+                throw new CrowdTestTaskException("存在未结束的任务,项目不能被提交");
+            }
+        }
+        //判断项目下是否有项目报告
+        if (this.getCrowdTestReportForProject() == null) {
+            throw new CrowdTestProjectException("还未创建项目报告,项目不能被提交");
+        }
+        this.setStatus(CrowdTestProjectStatus.HAS_COMMITED);
+        return this;
+    }
+
+    /**
+     * 结束项目(项目发起者)
+     *
+     * @return
+     */
+    public CrowdTestProject finishCrowdTestProject(User user) {
+        //判断用户是否认证
+//        if(user.getPersonalAuthentication() == null && user.getEnterpriseAuthentication() == null && user.getRegionalManager() == null && user.getEvaluationAgency() == null){
+//            throw new CrowdTestProjectException("当前用户未进行认证,无权限对项目操作");
+//        }
+        //判断是否为项目发起者
+        if (!this.getUserId().equals(user.getId())) {
+            throw new CrowdTestProjectException("当前用户没有权限结束项目!");
+        }
+
+        if (this.getStatus() != CrowdTestProjectStatus.HAS_COMMITED) {
+            throw new CrowdTestProjectException("项目不能确认结束,当前状态为:" + this.getStatus());
+        } else {
+            this.setStatus(CrowdTestProjectStatus.HAS_FINISHED);
+            this.setEndTime(new Timestamp(System.currentTimeMillis()));
+        }
+        return this;
+    }
+
+    public void reject(Long userId) {
+        if (this.getProjectDistributionTypeId() != 0
+                || this.getStatus() != CrowdTestProjectStatus.HAS_RELEASED
+                || !this.getRegionalManagerId().equals(userId)) {
+            throw new CrowdTestProjectException("非法的操作");
+        }
+        this.setStatus(CrowdTestProjectStatus.HAS_REJECTED);
+    }
+
+}

+ 17 - 0
core/src/main/java/com/mooctest/crowd/domain/domainobject/CrowdTestProjectStatus.java

@@ -0,0 +1,17 @@
+package com.mooctest.crowd.domain.domainobject;
+
+/**
+ * @author guochao
+ * @date 2019/7/9 14:21
+ */
+public class CrowdTestProjectStatus {
+    public static final int HAS_REJECTED = -1; //项目被拒
+    public static final int HAS_CREATED = 0;  //创建项目
+    public static final int HAS_RELEASED = 1; //发布项目
+    public static final int HAS_RECEIVED = 2; //接收项目
+//    public static final int HAS_SPLITED = 3;  //拆分项目
+//    public static final int HAS_REPORTED = 4; //生成项目报告
+    public static final int HAS_COMMITED = 3; //提交项目
+    public static final int HAS_FINISHED = 4; //结束项目
+    public static final int HAS_TIME_OUT = 5; //时间截止
+}

+ 52 - 0
core/src/main/java/com/mooctest/crowd/domain/domainobject/CrowdTestReport.java

@@ -0,0 +1,52 @@
+package com.mooctest.crowd.domain.domainobject;
+
+import lombok.Data;
+
+import java.sql.Timestamp;
+
+/**
+ * @author guochao
+ * @date 2019/7/11 14:16
+ */
+@Data
+public class CrowdTestReport {
+
+    private Long id;
+    private String name;
+    private String code;
+    private Long userId;
+    private String dependencyCode; //所依赖的项目或者任务
+    private String type;
+    private int scope;
+    private String testObject;
+    private String description;
+    private String content;
+    private String file;
+    private String conclusion;
+    private int isDeleted;
+    private Timestamp createTime;
+    private boolean Updated;//是否能被修改
+
+    @Override
+    public String toString() {
+        return "CrowdTestReport{" +
+                "id=" + id +
+                ", name='" + name + '\'' +
+                ", code='" + code + '\'' +
+                ", dependencyCode='" + dependencyCode + '\'' +
+                ", type='" + type + '\'' +
+                ", scope='" + scope + '\'' +
+                ", testObject='" + testObject + '\'' +
+                ", description='" + description + '\'' +
+                ", content='" + content + '\'' +
+                ", file='" + file + '\'' +
+                ", conclusion='" + conclusion + '\'' +
+                ", isDeleted='" + isDeleted + '\'' +
+                ", createTime=" + createTime +
+                '}';
+    }
+
+    public void removeCrowdTestReport() {
+        this.isDeleted = DeletedStatus.isDeleted;
+    }
+}

+ 230 - 0
core/src/main/java/com/mooctest/crowd/domain/domainobject/CrowdTestTask.java

@@ -0,0 +1,230 @@
+package com.mooctest.crowd.domain.domainobject;
+
+import com.mooctest.crowd.domain.exception.CrowdTestTaskException;
+import lombok.Data;
+
+import java.sql.Timestamp;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Optional;
+import java.util.stream.Collectors;
+
+/**
+ * @author guochao
+ * @date 2019/7/11 14:14
+ */
+@Data
+public class CrowdTestTask {
+    public static final int HAS_REJECTED = -1;  //定向发布被拒
+    public static final int HAS_CREATED = 0;    //创建任务
+    public static final int HAS_RELEASED = 1;   //发布任务
+    public static final int HAS_RECEIVED = 2;   //接受任务
+    public static final int HAS_COMMITED = 3;   //区域管理员提交任务
+    public static final int HAS_FINISHED = 4;   //结束任务
+    public static final int HAS_TIME_OUT = 5; //时间截止
+    private Long id;
+    private String name;
+    private String code;
+    private String crowdTestProjectCode;
+    private Long evaluationAgencyId;
+    private String type;
+    private String description;
+    private String requirementFile;
+    private Long distributionType;
+    private String distributionProvince;
+    private String distributionCity;
+    private Double quotedPrice;
+    private Double fixedPrice;
+    private int status;
+    private int fullStatus;
+    private Timestamp deadTime;
+    private Timestamp endTime;
+    private int isDeleted;
+    private Timestamp createTime;
+    private int participantCount;
+    private int acceptedCount;
+    private int participantHasCommittedCount;
+    private List<TaskToUser> acceptedUserList = new ArrayList<>();
+    private EndPoint endPoint;
+//    private List<CrowdTestReport> crowdTestReportList = new ArrayList<>();
+
+    @Override
+    public String toString() {
+        return "CrowdTestTask{" +
+                "id=" + id +
+                ", name='" + name + '\'' +
+                ", code='" + code + '\'' +
+                ", crowdTestProjectCode='" + crowdTestProjectCode + '\'' +
+                ", evaluationAgencyId=" + evaluationAgencyId +
+                ", type='" + type + '\'' +
+                ", description='" + description + '\'' +
+                ", requirementFile='" + requirementFile + '\'' +
+                ", distributionType=" + distributionType +
+                ", distributionProvince='" + distributionProvince + '\'' +
+                ", distributionCity='" + distributionCity + '\'' +
+                ", quotedPrice=" + quotedPrice +
+                ", fixedPrice=" + fixedPrice +
+                ", status=" + status +
+                ", deadTime=" + deadTime +
+                ", endTime=" + endTime +
+                ", isDeleted=" + isDeleted +
+                ", createTime=" + createTime +
+                ", participantCount=" + participantCount +
+                ", acceptedCount=" + acceptedCount +
+                ", acceptedUserList=" + acceptedUserList +
+                '}';
+    }
+
+    //    public CrowdTestReport getCrowdTestReportByReportId(CrowdTestTask crowdTestTask, Long reportId) throws CrowdTestTaskNotExistException, CrowdTestReportNotExistException {
+//        List<CrowdTestReport> crowdTestReportList = crowdTestTask.getCrowdTestReportList();
+//        for (CrowdTestReport crowdTestReport : crowdTestReportList) {
+//            if (crowdTestReport.getId().equals(reportId)) {
+//                return crowdTestReport;
+//            }
+//        }
+//        throw new CrowdTestReportNotExistException();
+//    }
+
+    /**
+     * 接收任务(测评机构)
+     *
+     * @return
+     */
+    public void receive(User user) {
+        //任务当前状态
+        if (this.getStatus() == CrowdTestTaskStatus.HAS_RECEIVED) {
+            if (this.getFullStatus() == CrowdTestTaskAcceptStatus.HAS_FULL)
+                throw new CrowdTestTaskException("当前任务满员!:");
+        } else if (this.getStatus() != CrowdTestTaskStatus.HAS_RELEASED && this.getStatus() != CrowdTestTaskStatus.HAS_REJECTED)
+            throw new CrowdTestTaskException("任务当前状态不能被接收,当前状态为:" + this.getStatus());
+        //定向发布类型
+//        if (this.getDistributionType() == 0) {
+//            if (!this.getEvaluationAgencyId().equals(user.getId()))
+//                throw new CrowdTestTaskException("当前用户没有权限接收此定向发布的任务!");
+//        }
+//        this.setEvaluationAgencyId(user.getId());
+
+        // 判断人数是否满员
+        if (this.getAcceptedCount() >= this.getParticipantCount()) {
+            throw new CrowdTestTaskException("当前任务已经满员!");
+        }
+        // 新增接收者信息
+
+//        TaskToUser taskToUser = null;
+//        if(this.getDistributionType().equals(DistributeType.DIRECT.getId())){
+//            // 定向发布类型
+//            taskToUser = new TaskToUser(this.code, user.getId(), new Timestamp(System.currentTimeMillis()));
+//        }else if(this.getDistributionType().equals(DistributeType.SQUARE.getId())){
+//            // 广场发布类型
+//        }
+        if (this.getDistributionType() == DistributeType.DIRECT.getId()) {
+            this.getAcceptedUserList().stream().map(taskToUser -> {
+                taskToUser.setIsAccepted(1);
+                taskToUser.setAcceptTime(new Timestamp(System.currentTimeMillis()));
+                return taskToUser;
+            }).collect(Collectors.toList());
+        } else {
+            TaskToUser taskToUser = new TaskToUser();
+            taskToUser.setValue(this.code, user.getId(), this.quotedPrice, 0, this.getDistributionType(), 1, new Timestamp(System.currentTimeMillis()));
+            this.getAcceptedUserList().add(taskToUser);
+        }
+        this.setAcceptedUserList(acceptedUserList);
+        this.setAcceptedCount(this.acceptedCount + 1);
+        if (this.getAcceptedCount() == this.getParticipantCount()) {
+            this.setFullStatus(CrowdTestTaskAcceptStatus.HAS_FULL);
+        } else {
+            this.setFullStatus(CrowdTestTaskAcceptStatus.NOT_FULL);
+        }
+        this.setStatus(CrowdTestTaskStatus.HAS_RECEIVED);
+    }
+
+
+    public void reject(Long userId) {
+        if (this.getDistributionType() != 0 || this.getStatus() != CrowdTestTaskStatus.HAS_RELEASED || !this.getEvaluationAgencyId().equals(userId)) {
+            throw new CrowdTestTaskException("非法操作!");
+        }
+        this.setStatus(CrowdTestTaskStatus.HAS_REJECTED);
+    }
+
+
+    public void removeCrowdTestTask() {
+        this.isDeleted = DeletedStatus.isDeleted;
+    }
+
+    public void commitByRegionalManager() {
+        if (this.getStatus() != CrowdTestTaskStatus.HAS_RECEIVED || this.getParticipantHasCommittedCount() < this.getAcceptedCount()) {
+            throw new CrowdTestTaskException("当前状态不能提交任务");
+        }
+        this.setStatus(CrowdTestTaskStatus.HAS_COMMITED);
+        this.setEndTime(new Timestamp(System.currentTimeMillis()));
+    }
+
+    public void commitByAgency(String taskCode, Long userId) {
+        if (this.getStatus() != CrowdTestTaskStatus.HAS_RECEIVED) {
+            throw new CrowdTestTaskException("当前状态不能提交任务");
+        }
+
+        Optional<TaskToUser> taskToUserOptional = this.getAcceptedUserList().stream().filter(taskToUser -> taskToUser.getTaskCode().equals(taskCode)
+                && taskToUser.getUserId().equals(userId) && taskToUser.getDistributionType().equals(this.distributionType)).findFirst();
+        if (!taskToUserOptional.isPresent()) {
+            throw new CrowdTestTaskException("当前用户无权对此任务进行操作");
+        } else {
+            TaskToUser taskToUser = taskToUserOptional.get();
+            if (taskToUser.getIsAccepted() == 0) {
+                throw new CrowdTestTaskException("当前用户未接受此任务");
+            } else if (taskToUser.getHasReport() == 0) {
+                throw new CrowdTestTaskException("当前用户未提交报告");
+            } else {
+                taskToUser.setIsCommitted(1);
+                taskToUser.setCommitTaskTime(new Timestamp(System.currentTimeMillis()));
+            }
+        }
+        this.setParticipantHasCommittedCount(this.getParticipantHasCommittedCount() + 1);
+        if (this.getParticipantCount() == this.getParticipantHasCommittedCount()) {
+            this.setStatus(CrowdTestTaskStatus.HAS_COMMITED);
+        }
+    }
+
+    public void confirmFinish() {
+        // 具有配置项,管理员可以结束任务
+        if(this.getEndPoint() != null){
+            this.setStatus(CrowdTestTaskStatus.HAS_FINISHED);
+            this.setEndTime(new Timestamp(System.currentTimeMillis()));
+        } else if ((this.getParticipantHasCommittedCount() == this.getAcceptedCount() && this.getStatus() == CrowdTestTaskStatus.HAS_RECEIVED) || (this.getParticipantHasCommittedCount() == this.getParticipantCount() && this.getStatus() == CrowdTestTaskStatus.HAS_COMMITED)) {
+            this.setStatus(CrowdTestTaskStatus.HAS_FINISHED);
+            this.setEndTime(new Timestamp(System.currentTimeMillis()));
+        } else {
+            throw new CrowdTestTaskException("评测机构未提请结束任务,无法确认结束!");
+        }
+
+    }
+
+    public void addToken(String token) {
+        // 具有配置项,管理员可以配置token
+        EndPoint endPoint = this.getEndPoint();
+        if(endPoint != null){
+            endPoint.setToken(token);
+            this.setEndPoint(endPoint);
+        }
+    }
+
+    public void create(String taskCode) {
+        this.setCode(taskCode);
+        this.setStatus(CrowdTestTaskStatus.HAS_RELEASED);
+        this.directTask();
+    }
+
+    public void update() {
+        this.directTask();
+    }
+
+    private void directTask(){
+        if (this.getDistributionType() == DistributeType.DIRECT.getId()) {
+            this.setParticipantCount(1);
+            TaskToUser taskToUser = new TaskToUser();
+            taskToUser.setValue(this.code, this.getEvaluationAgencyId(), this.quotedPrice, 0, this.getDistributionType(), 0, null);
+            this.getAcceptedUserList().add(taskToUser);
+            this.setAcceptedUserList(acceptedUserList);
+        }
+    }
+}

+ 10 - 0
core/src/main/java/com/mooctest/crowd/domain/domainobject/CrowdTestTaskAcceptStatus.java

@@ -0,0 +1,10 @@
+package com.mooctest.crowd.domain.domainobject;
+
+/**
+ * @author guochao
+ * @date 2019/7/9 14:21
+ */
+public class CrowdTestTaskAcceptStatus {
+    public static final int NOT_FULL = 0;    //未满员状态
+    public static final int HAS_FULL = 1;   //满员状态
+}

+ 17 - 0
core/src/main/java/com/mooctest/crowd/domain/domainobject/CrowdTestTaskStatus.java

@@ -0,0 +1,17 @@
+package com.mooctest.crowd.domain.domainobject;
+
+/**
+ * @author guochao
+ * @date 2019/7/9 14:21
+ */
+public class CrowdTestTaskStatus {
+    public static final int HAS_REJECTED = -1;  //定向发布被拒
+    public static final int HAS_CREATED = 0;    //创建任务
+    public static final int HAS_RELEASED = 1;   //发布任务
+    public static final int HAS_RECEIVED = 2;   //接受任务
+    //    public static final int HAS_REPORTED = 3; //存在任务报告
+    public static final int HAS_COMMITED = 3;   //区域管理员提交任务
+    //    public static final int HAS_COMMITED_MANAGER = 4;   //区域管理员提交任务
+    public static final int HAS_FINISHED = 4;   //结束任务
+    public static final int HAS_TIME_OUT = 5; //时间截止
+}

+ 10 - 0
core/src/main/java/com/mooctest/crowd/domain/domainobject/DeletedStatus.java

@@ -0,0 +1,10 @@
+package com.mooctest.crowd.domain.domainobject;
+
+/**
+ * @author guochao
+ * @date 2019/7/9 14:21
+ */
+public class DeletedStatus {
+    public static final int isNotDeleted = 0; //未删除
+    public static final int isDeleted = 1;    //已删除
+}

+ 29 - 0
core/src/main/java/com/mooctest/crowd/domain/domainobject/DistributeType.java

@@ -0,0 +1,29 @@
+package com.mooctest.crowd.domain.domainobject;
+
+import lombok.AllArgsConstructor;
+import lombok.NoArgsConstructor;
+
+/**
+ * @author guochao
+ * @date 2019/7/15 20:47
+ */
+
+@AllArgsConstructor
+@NoArgsConstructor
+public enum DistributeType {
+
+    SQUARE(2L, "square"),
+    DIRECT(0L, "direct"),
+    AREA(1L, "area");
+
+    private Long id;
+    private String name;
+
+    public Long getId() {
+        return id;
+    }
+
+    public String getName() {
+        return name;
+    }
+}

+ 16 - 0
core/src/main/java/com/mooctest/crowd/domain/domainobject/EndPoint.java

@@ -0,0 +1,16 @@
+package com.mooctest.crowd.domain.domainobject;
+
+import lombok.Data;
+
+@Data
+public class EndPoint {
+    private Long id;
+    private String projectCode;
+    private String taskCode;
+    private String caseId;
+    private String examId;
+    private String serverCode;
+    private String url;
+    private String token;
+    private int isShowed;
+}

+ 103 - 0
core/src/main/java/com/mooctest/crowd/domain/domainobject/EnterpriseAuthentication.java

@@ -0,0 +1,103 @@
+package com.mooctest.crowd.domain.domainobject;
+
+import com.mooctest.crowd.domain.exception.BaseException;
+import com.mooctest.crowd.domain.model.EnterpriseAuthenticationPO;
+import lombok.Data;
+import org.springframework.beans.BeanUtils;
+
+import java.sql.Date;
+import java.sql.Timestamp;
+
+/**
+ * @author guochao
+ * @date 2019-08-19 15:47
+ */
+@Data
+public class EnterpriseAuthentication {
+    private String isDaOrEa;//是研发机构还是评测机构
+    private String enterpriseName;
+    private Long id;
+    private Long userId;
+    private String idCardNum;//身份证号码
+    private String legalPersonName;
+    private String businessLicensePhoto;
+    private String unifiedSocialCreditCode;
+    private String gender;//2.0新加性别
+    private String idCardPositivePhoto;//身份证正面照
+    private String idCardBackPhoto;//身份证反面照
+    private String address;
+    private int isDeleted;
+    private int isAuthentication;
+    private String explain;
+    private Timestamp applyTime;
+    private Timestamp checkTime;
+    private Date idCardDeadTime;//身份证过期时间
+    private String type;
+
+
+    public EnterpriseAuthentication getByPo(EnterpriseAuthenticationPO enterpriseAuthenticationPO) {
+        this.applyTime = enterpriseAuthenticationPO.getApplyTime();
+        this.businessLicensePhoto = enterpriseAuthenticationPO.getBusinessLicensePhoto();
+        this.legalPersonName = enterpriseAuthenticationPO.getLegalPersonName();
+        BeanUtils.copyProperties(enterpriseAuthenticationPO, this);
+        return this;
+    }
+
+
+    public EnterpriseAuthentication applyAuthentication(Long userId) {
+        this.setUserId(userId);
+        this.setIsAuthentication(AuthenticationStatus.isAuthenIng);
+        this.setIsDeleted(DeletedStatus.isNotDeleted);
+        this.setApplyTime(new Timestamp(System.currentTimeMillis()));
+        this.setCheckTime(null);
+        this.setExplain("");
+        return this;
+    }
+
+    public EnterpriseAuthentication passAuthentication() {
+        if (this.getIsAuthentication() == AuthenticationStatus.isNotAuthenticated) {
+            throw new BaseException("当前是未通过认证状态,不可通过认证,需对认证信息进行修改后再提交认证申请");
+        } else if (this.getIsAuthentication() == AuthenticationStatus.isAuthenticated) {
+            throw new BaseException("当前已通过认证,不可再次进行认证");
+        } else {
+            this.setIsAuthentication(AuthenticationStatus.isAuthenticated);
+            this.setCheckTime(new Timestamp(System.currentTimeMillis()));
+            this.setExplain("");
+            return this;
+        }
+    }
+
+    public EnterpriseAuthentication rejectAuthentication(String explain) {
+        if (this.getIsDeleted() == DeletedStatus.isDeleted) {
+            throw new BaseException("当前认证信息已被删除,不可做认证状态改变操作");
+        } else {
+            if (this.getIsAuthentication() == AuthenticationStatus.isNotAuthenticated) {
+                throw new BaseException("当前已是未通过认证状态,不可再次拒绝认证");
+            } else if (this.getIsAuthentication() == AuthenticationStatus.isAuthenticated) {
+                throw new BaseException("当前已通过认证,不可拒绝认证");
+            } else {
+                this.setIsAuthentication(AuthenticationStatus.isNotAuthenticated);
+                this.setExplain(explain);
+                this.setCheckTime(new Timestamp(System.currentTimeMillis()));
+                return this;
+            }
+        }
+    }
+
+    public EnterpriseAuthentication updateAuthInfo(EnterpriseAuthentication modifyAuth) {
+        modifyAuth.userId = this.userId;
+        modifyAuth.id = this.id;
+        BeanUtils.copyProperties(modifyAuth, this);
+        this.setIsAuthentication(AuthenticationStatus.isAuthenIng);
+        this.setIsDeleted(DeletedStatus.isNotDeleted);
+        this.setApplyTime(new Timestamp(System.currentTimeMillis()));
+        this.setCheckTime(null);
+        this.setExplain("");
+        return this;
+    }
+
+    public EnterpriseAuthentication deleteAuth() {
+        this.isDeleted = DeletedStatus.isDeleted;
+        return this;
+    }
+}

+ 127 - 0
core/src/main/java/com/mooctest/crowd/domain/domainobject/EvaluationAgency.java

@@ -0,0 +1,127 @@
+package com.mooctest.crowd.domain.domainobject;
+
+import com.mooctest.crowd.domain.exception.BaseException;
+import com.mooctest.crowd.domain.model.EvaluationAgencyPO;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+import org.springframework.beans.BeanUtils;
+
+import java.sql.Date;
+import java.sql.Timestamp;
+import java.util.List;
+
+/**
+ * @author guochao
+ * @date 2019/7/12 1:32
+ */
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+public class EvaluationAgency {
+
+    private String evaluationAgencyName;
+    private String businessLicensePhoto;
+    private String address;
+    private String agencyPhoto;
+    private String legalPersonName;
+    private String IdCardNum;
+    private String gender;
+    private String idCardPositivePhoto;//身份证正面照
+    private String idCardBackPhoto;//身份证反面照
+    private Date idCardDeadTime;
+
+    private Long id;
+    private Long userId;
+    private List<EvaluationAgencyAbility> evaluationAgencyAbilityList;
+    private List<EvaluationAgencyResource> evaluationAgencyResourceList;
+    private int isAuthentication;
+    private String explain;
+    private int isDeleted;
+    private Timestamp updateTime;
+    private Timestamp expireTime;
+    private Timestamp checkTime;
+    private Timestamp applyTime;
+    private String type;
+
+
+//    public EvaluationAgency(EvaluationAgencyPO evaluationAgencyPO) {
+//        BeanUtils.copyProperties(evaluationAgencyPO, this,"evaluationAgencyResourceList", "evaluationAgencyAbilityList");
+//    }
+
+    public EvaluationAgency(EvaluationAgencyPO evaluationAgencyPO) {
+        id = evaluationAgencyPO.getId();
+        agencyPhoto = evaluationAgencyPO.getAgencyPhoto();
+        evaluationAgencyName = evaluationAgencyPO.getEvaluationAgencyName();
+        userId = evaluationAgencyPO.getUserId();
+        address = evaluationAgencyPO.getAddress();
+        updateTime = evaluationAgencyPO.getUpdateTime();
+        expireTime = evaluationAgencyPO.getExpireTime();
+        checkTime = evaluationAgencyPO.getCheckTime();
+        applyTime = evaluationAgencyPO.getApplyTime();
+        BeanUtils.copyProperties(evaluationAgencyPO, this);
+
+    }
+
+    public EvaluationAgency applyAuthentication(Long userId) {
+        this.setUserId(userId);
+        this.setIsAuthentication(AuthenticationStatus.isAuthenIng);
+        this.setIsDeleted(DeletedStatus.isNotDeleted);
+        this.setApplyTime(new Timestamp(System.currentTimeMillis()));
+        this.setCheckTime(null);
+        this.setExplain("");
+        return this;
+    }
+
+    public EvaluationAgency passAuthentication() {
+        if (this.getIsAuthentication() == AuthenticationStatus.isNotAuthenticated) {
+            throw new BaseException("当前是未通过认证状态,不可通过认证,需对认证信息进行修改后再提交认证申请");
+        } else if (this.getIsAuthentication() == AuthenticationStatus.isAuthenticated) {
+            throw new BaseException("当前已通过认证,不可再次进行认证");
+        } else {
+            this.setIsAuthentication(AuthenticationStatus.isAuthenticated);
+            this.setCheckTime(new Timestamp(System.currentTimeMillis()));
+            this.setExplain("");
+            return this;
+        }
+
+    }
+
+    public EvaluationAgency rejectAuthentication(String explain) {
+        if (this.getIsDeleted() == DeletedStatus.isDeleted) {
+            throw new BaseException("当前认证信息已被删除,不可做认证状态改变操作");
+        } else {
+            if (this.getIsAuthentication() == AuthenticationStatus.isNotAuthenticated) {
+                throw new BaseException("当前已是未通过认证状态,不可再次拒绝认证");
+            } else if (this.getIsAuthentication() == AuthenticationStatus.isAuthenticated) {
+                throw new BaseException("当前已通过认证,不可拒绝认证");
+            } else {
+                this.setIsAuthentication(AuthenticationStatus.isNotAuthenticated);
+                this.setExplain(explain);
+                this.setCheckTime(new Timestamp(System.currentTimeMillis()));
+                return this;
+            }
+        }
+    }
+
+    public EvaluationAgency updateAuthInfo(EvaluationAgency modifyAuth) {
+        modifyAuth.userId = this.userId;
+        modifyAuth.id = this.id;
+        BeanUtils.copyProperties(modifyAuth, this);
+        this.setIsAuthentication(AuthenticationStatus.isAuthenIng);
+        this.setIsDeleted(DeletedStatus.isNotDeleted);
+        this.setIsAuthentication(AuthenticationStatus.isAuthenIng);
+        this.setApplyTime(new Timestamp(System.currentTimeMillis()));
+        this.setCheckTime(null);
+        this.setExplain("");
+        return this;
+    }
+
+    public EvaluationAgency deleteAuth() {
+        this.isDeleted = DeletedStatus.isDeleted;
+        //删除资源和能力
+        this.getEvaluationAgencyResourceList().stream().forEach(evaluationAgencyResource -> evaluationAgencyResource.deleteResource());
+        this.getEvaluationAgencyAbilityList().stream().forEach(evaluationAgencyAbility -> evaluationAgencyAbility.deleteAbility());
+        return this;
+    }
+}

+ 41 - 0
core/src/main/java/com/mooctest/crowd/domain/domainobject/EvaluationAgencyAbility.java

@@ -0,0 +1,41 @@
+package com.mooctest.crowd.domain.domainobject;
+
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.sql.Timestamp;
+
+/**
+ * @author guochao
+ * @date 2019/8/12 14:16
+ */
+@Data
+@NoArgsConstructor
+public class EvaluationAgencyAbility {
+
+    private Long id;
+    private Long evaluationAgencyId;
+    private String abilityName;
+    private int isDeleted;
+    private Timestamp createTime;
+
+    public EvaluationAgencyAbility(String abilityName){
+        this.abilityName = abilityName;
+    }
+
+    @Override
+    public String toString() {
+        return "EvaluationAgencyAbility{" +
+                "id=" + id +
+                ", evaluationAgencyId=" + evaluationAgencyId +
+                ", abilityName='" + abilityName + '\'' +
+                ", isDeleted=" + isDeleted +
+                ", createTime=" + createTime +
+                '}';
+    }
+
+    public EvaluationAgencyAbility deleteAbility(){
+        this.isDeleted = DeletedStatus.isDeleted;
+        return this;
+    }
+}

+ 49 - 0
core/src/main/java/com/mooctest/crowd/domain/domainobject/EvaluationAgencyResource.java

@@ -0,0 +1,49 @@
+package com.mooctest.crowd.domain.domainobject;
+
+import lombok.Data;
+
+import java.sql.Timestamp;
+
+/**
+ * @author guochao
+ * @date 2019/8/12 14:16
+ */
+@Data
+public class EvaluationAgencyResource {
+
+    private Long id;
+    private Long evaluationAgencyId;
+    private String type;
+    private String name;
+    private int totalNum;
+    private int availableNum;
+    private int isDeleted;
+    private Timestamp createTime;
+
+    @Override
+    public String toString() {
+        return "EvaluationAgencyResource{" +
+                "id=" + id +
+                ", evaluationAgencyId=" + evaluationAgencyId +
+                ", type='" + type + '\'' +
+                ", name='" + name + '\'' +
+                ", totalNum=" + totalNum +
+                ", availableNum=" + availableNum +
+                ", isDeleted=" + isDeleted +
+                ", createTime=" + createTime +
+                '}';
+    }
+
+    public EvaluationAgencyResource updateEvaluationAgencyResource(String[] resource){
+        this.type = resource[0];
+        this.name = resource[1];
+        this.totalNum = Integer.valueOf(resource[2]);
+        this.availableNum = Integer.valueOf(resource[3]);
+        return this;
+    }
+
+    public EvaluationAgencyResource deleteResource(){
+        this.isDeleted = DeletedStatus.isDeleted;
+        return this;
+    }
+}

+ 16 - 0
core/src/main/java/com/mooctest/crowd/domain/domainobject/Expert.java

@@ -0,0 +1,16 @@
+package com.mooctest.crowd.domain.domainobject;
+
+import lombok.Data;
+
+/**
+ * @author guochao
+ * @date 2019/7/6 17:54
+ */
+@Data
+public class Expert {
+    private Long id;
+    private String name;
+    private String photo;
+    private String introduction;
+    private String title;
+}

+ 15 - 0
core/src/main/java/com/mooctest/crowd/domain/domainobject/Field.java

@@ -0,0 +1,15 @@
+package com.mooctest.crowd.domain.domainobject;
+
+import lombok.Data;
+
+/**
+ * @author guochao
+ * @date 2019/7/6 17:54
+ */
+@Data
+public class Field {
+    private Long id;
+    private String code;
+    private String name;
+    private String introduction;
+}

+ 13 - 0
core/src/main/java/com/mooctest/crowd/domain/domainobject/GeneralUser.java

@@ -0,0 +1,13 @@
+package com.mooctest.crowd.domain.domainobject;
+
+import lombok.Data;
+
+/**
+ * @author guochao
+ * @date 2019/7/6 18:16
+ */
+@Data
+public class GeneralUser extends User {
+    private Long id;
+    private Long userId;
+}

+ 14 - 0
core/src/main/java/com/mooctest/crowd/domain/domainobject/Partner.java

@@ -0,0 +1,14 @@
+package com.mooctest.crowd.domain.domainobject;
+
+import lombok.Data;
+
+/**
+ * @author guochao
+ * @date 2019/7/6 17:54
+ */
+@Data
+public class Partner {
+    private Long id;
+    private String name;
+    private String imageUrl;
+}

+ 19 - 0
core/src/main/java/com/mooctest/crowd/domain/domainobject/Permission.java

@@ -0,0 +1,19 @@
+package com.mooctest.crowd.domain.domainobject;
+
+import lombok.Data;
+
+import java.sql.Timestamp;
+
+/**
+ * @author guochao
+ * @date 2019/7/5 22:51
+ */
+@Data
+public class Permission {
+
+    Long id;
+    private String name;
+    private String resource;
+    private String operation;
+    private Timestamp createTime;
+}

+ 109 - 0
core/src/main/java/com/mooctest/crowd/domain/domainobject/PersonalAuthentication.java

@@ -0,0 +1,109 @@
+package com.mooctest.crowd.domain.domainobject;
+
+import com.mooctest.crowd.domain.exception.BaseException;
+import com.mooctest.crowd.domain.model.PersonalAuthenticationPO;
+import lombok.Data;
+import org.springframework.beans.BeanUtils;
+
+import java.sql.Date;
+import java.sql.Timestamp;
+
+/**
+ * @author guochao
+ * @date 2019-08-19 15:47
+ */
+@Data
+public class PersonalAuthentication {
+    private Long id;
+    private Long userId;
+    private String realName;
+    private String idCard;
+    private String idCardPhoto;
+    private String idCardPositivePhoto;//身份证正面照片
+    private String idCardBackPhoto;//身份证反面照片
+    private String gender;
+    private String address;
+    private int isDeleted;
+    private int isAuthentication;
+    private String explain;
+    private Timestamp applyTime;
+    private Timestamp checkTime;
+    private Date idCardDeadTime;//身份证过期时间
+    private String type;
+
+    /**
+     * 转换类型
+     *
+     * @param authenticationPO
+     * @return
+     */
+    public PersonalAuthentication getByPo(PersonalAuthenticationPO authenticationPO) {
+        BeanUtils.copyProperties(authenticationPO, this);
+        return this;
+//        this.realName = authenticationPO.getRealName();
+//        this.address = authenticationPO.getAddress();
+//        this.applyTime = authenticationPO.getApplyTime();
+//        this.idCard = authenticationPO.getidCard();
+//        this.idCardBackPhoto = authenticationPO.getidCardPhoto();
+//        this.type = authenticationPO.getType();
+
+    }
+
+    public PersonalAuthentication applyAuthentication(Long userId) {
+        this.setUserId(userId);
+        this.setIsAuthentication(AuthenticationStatus.isAuthenIng);
+        this.setIsDeleted(DeletedStatus.isNotDeleted);
+        this.setApplyTime(new Timestamp(System.currentTimeMillis()));
+        this.setCheckTime(null);
+        this.setExplain("");
+        return this;
+    }
+
+    public PersonalAuthentication passAuthentication() {
+        if (this.getIsAuthentication() == AuthenticationStatus.isNotAuthenticated) {
+            throw new BaseException("当前是未通过认证状态,不可通过认证,需对认证信息进行修改后再提交认证申请");
+        } else if (this.getIsAuthentication() == AuthenticationStatus.isAuthenticated) {
+            throw new BaseException("当前已通过认证,请勿重复操作");
+        } else {
+            this.setIsAuthentication(AuthenticationStatus.isAuthenticated);
+            this.setCheckTime(new Timestamp(System.currentTimeMillis()));
+            this.setExplain("");
+            return this;
+        }
+
+    }
+
+    public PersonalAuthentication rejectAuthentication(String explain) {
+        if (this.getIsDeleted() == DeletedStatus.isDeleted) {
+            throw new BaseException("当前认证信息已被删除,不可做认证状态改变操作");
+        } else {
+            if (this.getIsAuthentication() == AuthenticationStatus.isNotAuthenticated) {
+                throw new BaseException("当前已是未通过认证状态,不可再次拒绝认证");
+            } else if (this.getIsAuthentication() == AuthenticationStatus.isAuthenticated) {
+                throw new BaseException("当前已通过认证,不可拒绝认证");
+            } else {
+                this.setIsAuthentication(AuthenticationStatus.isNotAuthenticated);
+                this.setExplain(explain);
+                this.setCheckTime(new Timestamp(System.currentTimeMillis()));
+                return this;
+            }
+        }
+    }
+
+    public PersonalAuthentication updateAuthInfo(PersonalAuthentication modifyAuth) {
+        modifyAuth.userId = this.userId;
+        modifyAuth.id = this.id;
+        BeanUtils.copyProperties(modifyAuth, this);
+        this.setIsAuthentication(AuthenticationStatus.isAuthenIng);
+        this.setIsDeleted(DeletedStatus.isNotDeleted);
+        this.setApplyTime(new Timestamp(System.currentTimeMillis()));
+        this.setCheckTime(null);
+        this.setExplain("");
+        return this;
+    }
+
+    public PersonalAuthentication deleteAuth() {
+        this.isDeleted = DeletedStatus.isDeleted;
+        return this;
+    }
+}

+ 16 - 0
core/src/main/java/com/mooctest/crowd/domain/domainobject/ProjectDistributeType.java

@@ -0,0 +1,16 @@
+package com.mooctest.crowd.domain.domainobject;
+
+import lombok.Data;
+
+import java.sql.Timestamp;
+
+/**
+ * @author guochao
+ * @date 2019/7/15 20:47
+ */
+@Data
+public class ProjectDistributeType {
+    private Long id;
+    private String name;
+    private Timestamp createTime;
+}

+ 21 - 0
core/src/main/java/com/mooctest/crowd/domain/domainobject/Province.java

@@ -0,0 +1,21 @@
+package com.mooctest.crowd.domain.domainobject;
+
+import lombok.Data;
+
+/**
+ * @author guochao
+ * @date 2019-07-30 10:31
+ */
+@Data
+public class Province {
+    private Long code;
+    private String name;
+
+    @Override
+    public String toString() {
+        return "Province{" +
+                "code=" + code +
+                ", name='" + name + '\'' +
+                '}';
+    }
+}

+ 18 - 0
core/src/main/java/com/mooctest/crowd/domain/domainobject/Publications.java

@@ -0,0 +1,18 @@
+package com.mooctest.crowd.domain.domainobject;
+
+import lombok.Data;
+
+import java.sql.Timestamp;
+
+@Data
+public class Publications {
+    private Long id;
+    private String title;
+    private String publicTime;
+    private String  conferenceJournal;
+    private String authorList;
+    private String longTitle;
+    private String author;
+    private Timestamp uploadedDate;
+    private String chineseBrief;
+}

+ 23 - 0
core/src/main/java/com/mooctest/crowd/domain/domainobject/Regional.java

@@ -0,0 +1,23 @@
+package com.mooctest.crowd.domain.domainobject;
+
+import lombok.Data;
+
+/**
+ * @author guochao
+ * @date 2019-07-30 10:31
+ */
+@Data
+public class Regional {
+    private Long id;
+    private Long provinceCode;
+    private String name;
+
+    @Override
+    public String toString() {
+        return "Regional{" +
+                "id=" + id +
+                ", provinceCode=" + provinceCode +
+                ", name='" + name + '\'' +
+                '}';
+    }
+}

+ 25 - 0
core/src/main/java/com/mooctest/crowd/domain/domainobject/RegionalManager.java

@@ -0,0 +1,25 @@
+package com.mooctest.crowd.domain.domainobject;
+
+import lombok.Data;
+
+import java.util.List;
+
+/**
+ * @author guochao
+ * @date 2019/7/9 14:16
+ */
+@Data
+public class RegionalManager {
+    private Long id;
+    private Long userId;
+    private List<RegionalManagerToRegional> regionalList;
+
+    @Override
+    public String toString() {
+        return "RegionalManager{" +
+                "id=" + id +
+                ", userId=" + userId +
+                ", regionalList=" + regionalList +
+                '}';
+    }
+}

+ 21 - 0
core/src/main/java/com/mooctest/crowd/domain/domainobject/RegionalManagerToRegional.java

@@ -0,0 +1,21 @@
+package com.mooctest.crowd.domain.domainobject;
+
+import lombok.Data;
+
+/**
+ * @author guochao
+ * @date 2019/7/9 14:16
+ */
+@Data
+public class RegionalManagerToRegional {
+    private String province;
+    private String city;
+
+    @Override
+    public String toString() {
+        return "Regional{" +
+                "province='" + province + '\'' +
+                ", city='" + city + '\'' +
+                '}';
+    }
+}

+ 28 - 0
core/src/main/java/com/mooctest/crowd/domain/domainobject/ReportScopeType.java

@@ -0,0 +1,28 @@
+package com.mooctest.crowd.domain.domainobject;
+
+import lombok.AllArgsConstructor;
+import lombok.NoArgsConstructor;
+
+/**
+ * @author: Diors.Po
+ * @Email: 171256175@qq.com
+ * @date 2019-08-28 01:53
+ */
+@AllArgsConstructor
+@NoArgsConstructor
+public enum ReportScopeType {
+
+    PROJECT_SCOPE(0, "projectScope"),
+    TASK_SCOPE(1, "taskScope");
+
+    private int id;
+    private String name;
+
+    public int getId() {
+        return id;
+    }
+
+    public String getName() {
+        return name;
+    }
+}

+ 14 - 0
core/src/main/java/com/mooctest/crowd/domain/domainobject/ResidentAgency.java

@@ -0,0 +1,14 @@
+package com.mooctest.crowd.domain.domainobject;
+
+import lombok.Data;
+
+/**
+ * @author guochao
+ * @date 2019/7/6 17:54
+ */
+@Data
+public class ResidentAgency {
+    private Long id;
+    private Long agencyId;
+    private Long userId;
+}

+ 28 - 0
core/src/main/java/com/mooctest/crowd/domain/domainobject/Resource.java

@@ -0,0 +1,28 @@
+package com.mooctest.crowd.domain.domainobject;
+
+import lombok.Data;
+
+import java.sql.Timestamp;
+
+/**
+ * @author guochao
+ * @date 2019/7/6 17:54
+ */
+@Data
+public class Resource {
+    private Long id;
+    private String code;
+    private String name;
+    private String type;
+    private int quantity;
+    private String photoUrl;
+    private String description;
+    private String scene;
+    private String unitWork;
+    private String standard;
+    private String unit;
+    private int state;
+    private Timestamp startTime;
+    private String personnel;
+    private String remarks;
+}

+ 9 - 0
core/src/main/java/com/mooctest/crowd/domain/domainobject/ResourceStatus.java

@@ -0,0 +1,9 @@
+package com.mooctest.crowd.domain.domainobject;
+
+
+public class ResourceStatus {
+    public static final int R_FREE = 0;  //空闲
+    public static final int R_OCCUPY = 1; //占用
+    public static final int R_USABLE = 2; //可用
+    public static final int R_FAULT = 3; //故障
+}

Beberapa file tidak ditampilkan karena terlalu banyak file yang berubah dalam diff ini