Browse Source

Merge branch 'feature-domain-implement' into 'master'

拆分模块

See merge request crowd-2019/crowd-test-service-backend!9
薛晓波 6 years ago
parent
commit
21c90325ca
48 changed files with 888 additions and 431 deletions
  1. 18 0
      core/pom.xml
  2. 13 0
      core/src/main/java/com/mooctest/crowd/domain/Application.java
  3. 6 5
      core/src/main/java/com/mooctest/crowd/domain/command/CrowdTestProjectCommand.java
  4. 3 3
      core/src/main/java/com/mooctest/crowd/domain/command/CrowdTestReportCommand.java
  5. 4 6
      core/src/main/java/com/mooctest/crowd/domain/command/CrowdTestTaskCommand.java
  6. 0 6
      core/src/main/java/com/mooctest/crowd/domain/command/LoginCommand.java
  7. 0 11
      core/src/main/java/com/mooctest/crowd/domain/command/RegisterCommand.java
  8. 21 0
      core/src/main/java/com/mooctest/crowd/domain/dao/UserDao.java
  9. 2 12
      core/src/main/java/com/mooctest/crowd/domain/domainobject/Account.java
  10. 12 13
      core/src/main/java/com/mooctest/crowd/domain/domainobject/CrowdTestProject.java
  11. 7 7
      core/src/main/java/com/mooctest/crowd/domain/domainobject/CrowdTestReport.java
  12. 6 7
      core/src/main/java/com/mooctest/crowd/domain/domainobject/CrowdTestTask.java
  13. 7 5
      core/src/main/java/com/mooctest/crowd/domain/domainobject/EvaluationAgency.java
  14. 1 1
      core/src/main/java/com/mooctest/crowd/domain/domainobject/GeneralUser.java
  15. 3 1
      core/src/main/java/com/mooctest/crowd/domain/domainobject/Permission.java
  16. 16 0
      core/src/main/java/com/mooctest/crowd/domain/domainobject/ProjectDistributeType.java
  17. 3 0
      core/src/main/java/com/mooctest/crowd/domain/domainobject/Role.java
  18. 2 2
      core/src/main/java/com/mooctest/crowd/domain/domainobject/User.java
  19. 46 8
      core/src/main/java/com/mooctest/crowd/domain/domainservice/RegisterDService.java
  20. 12 0
      core/src/main/java/com/mooctest/crowd/domain/exception/HttpBadRequestException.java
  21. 5 1
      core/src/main/java/com/mooctest/crowd/domain/factory/AccountFactory.java
  22. 52 0
      core/src/main/java/com/mooctest/crowd/domain/model/CrowdTestProject.java
  23. 36 0
      core/src/main/java/com/mooctest/crowd/domain/model/CrowdTestReport.java
  24. 45 0
      core/src/main/java/com/mooctest/crowd/domain/model/CrowdTestTask.java
  25. 16 0
      core/src/main/java/com/mooctest/crowd/domain/model/DistributeType.java
  26. 21 0
      core/src/main/java/com/mooctest/crowd/domain/model/EvaluationAgency.java
  27. 13 0
      core/src/main/java/com/mooctest/crowd/domain/model/GeneralUser.java
  28. 16 0
      core/src/main/java/com/mooctest/crowd/domain/model/Permission.java
  29. 14 0
      core/src/main/java/com/mooctest/crowd/domain/model/RegionalManager.java
  30. 13 0
      core/src/main/java/com/mooctest/crowd/domain/model/Role.java
  31. 56 0
      core/src/main/java/com/mooctest/crowd/domain/model/User.java
  32. 30 12
      core/src/main/java/com/mooctest/crowd/domain/repository/AccountUTRepo.java
  33. 9 14
      core/src/main/java/com/mooctest/crowd/domain/repository/CrowdTestProjectRepo.java
  34. 6 2
      core/src/main/java/com/mooctest/crowd/domain/repository/IAccountRepo.java
  35. 26 0
      core/src/resources/application.yaml
  36. 219 218
      core/src/test/java/com/mooctest/crowd/domain/domainobject/AccountTest.java
  37. 27 27
      core/src/test/java/com/mooctest/crowd/domain/domainobject/EvaluationAgencyTest.java
  38. 20 24
      core/src/test/java/com/mooctest/crowd/domain/domainobject/GeneralUserTest.java
  39. 14 14
      core/src/test/java/com/mooctest/crowd/domain/domainobject/RegionalManagerTest.java
  40. 1 1
      core/src/test/java/com/mooctest/crowd/domain/domainobject/SystemAdministratorTest.java
  41. 44 21
      core/src/test/java/com/mooctest/crowd/domain/domainservice/RegisterDServiceTest.java
  42. 14 0
      site/pom.xml
  43. 1 1
      site/src/main/java/com/mooctest/crowd/site/controller/UserController.java
  44. 1 1
      site/src/main/java/com/mooctest/crowd/site/mediator/Mediator.java
  45. 2 2
      site/src/main/java/com/mooctest/crowd/site/mediator/impl/WebMediatorImpl.java
  46. 1 1
      site/src/main/java/com/mooctest/crowd/site/service/UserService.java
  47. 1 1
      site/src/main/java/com/mooctest/crowd/site/service/impl/UserServiceImpl.java
  48. 3 4
      site/src/test/java/com/mooctest/crowd/site/mediator/impl/WebMediatorImplTest.java

+ 18 - 0
core/pom.xml

@@ -64,6 +64,24 @@
             <artifactId>spring-boot-starter</artifactId>
             <version>2.1.6.RELEASE</version>
         </dependency>
+        <dependency>
+            <groupId>javax.persistence</groupId>
+            <artifactId>javax.persistence-api</artifactId>
+            <version>2.2</version>
+            <scope>compile</scope>
+        </dependency>
+        <dependency>
+            <groupId>javax.transaction</groupId>
+            <artifactId>javax.transaction-api</artifactId>
+            <version>1.3</version>
+            <scope>compile</scope>
+        </dependency>
+        <dependency>
+            <groupId>org.springframework.data</groupId>
+            <artifactId>spring-data-commons</artifactId>
+            <version>2.1.9.RELEASE</version>
+            <scope>compile</scope>
+        </dependency>
 
     </dependencies>
     <build>

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

@@ -0,0 +1,13 @@
+package com.mooctest.crowd.domain;
+
+import org.springframework.boot.SpringApplication;
+import org.springframework.boot.autoconfigure.SpringBootApplication;
+
+@SpringBootApplication
+public class Application
+{
+    public static void main( String[] args )
+    {
+        SpringApplication.run(Application.class,args);
+    }
+}

+ 6 - 5
core/src/main/java/com/mooctest/crowd/domain/command/CrowdTestProjectCommand.java

@@ -2,7 +2,7 @@ package com.mooctest.crowd.domain.command;
 
 import lombok.Data;
 
-import java.io.File;
+import java.sql.Timestamp;
 
 /**
  * @author guochao
@@ -12,13 +12,14 @@ import java.io.File;
 public class CrowdTestProjectCommand {
     private Long id;
     private String name;
-    private Long ownerId;
-    private Long managerId;
+    private Long userId;
+    private Long regionalManagerId;
     private Long distributeId;
     private String description;
-    private File projectFile;
-    private File requirement;
+    private String projectFile;
+    private String requirementFile;
     private double quotedPrice;
     private double fixedPrice;
     private String status;
+    private Timestamp creatTime;
 }

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

@@ -10,9 +10,9 @@ import lombok.Data;
 public class CrowdTestReportCommand {
 
     private Long id;
-    private Long projectId;
-    private Long taskId;
-    private int type;
+    private Long crowdTestProjectId;
+    private Long crowdTestTaskId;
+    private String type;
     private String description;
     private String content;
     private String status;

+ 4 - 6
core/src/main/java/com/mooctest/crowd/domain/command/CrowdTestTaskCommand.java

@@ -2,8 +2,6 @@ package com.mooctest.crowd.domain.command;
 
 import lombok.Data;
 
-import java.io.File;
-
 /**
  * @author guochao
  * @date 2019/7/11 14:14
@@ -12,11 +10,11 @@ import java.io.File;
 public class CrowdTestTaskCommand {
     private Long id;
     private String name;
-    private Long projectId;
+    private Long crowdTestProjectId;
     private Long evaluationAgencyId;
-    private int type;
+    private String type;
     private String description;
-    private File requirementFile;
-    public Double price;
+    private String requirementFile;
+    private Double price;
     private String status;
 }

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

@@ -4,9 +4,6 @@ import lombok.AllArgsConstructor;
 import lombok.Data;
 import lombok.NoArgsConstructor;
 
-import javax.validation.constraints.NotNull;
-import javax.validation.constraints.Pattern;
-
 /**
  * @Author: xuexb
  * @Date: 2019.7.5 14:24
@@ -15,10 +12,7 @@ import javax.validation.constraints.Pattern;
 @NoArgsConstructor
 @AllArgsConstructor
 public class LoginCommand {
-    @NotNull(message = "Mobile number must not be null")
-    @Pattern(regexp = "^[0-9]{11}$", message = "Mobile number is illegal")
     private String mobileNum;
-
     private String password;
     private String checkCode;
 }

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

@@ -3,10 +3,6 @@ package com.mooctest.crowd.domain.command;
 import lombok.AllArgsConstructor;
 import lombok.Data;
 import lombok.NoArgsConstructor;
-import org.hibernate.validator.constraints.Length;
-
-import javax.validation.constraints.NotNull;
-import javax.validation.constraints.Pattern;
 
 /**
  * @Author: xuexb
@@ -16,14 +12,7 @@ import javax.validation.constraints.Pattern;
 @AllArgsConstructor
 @NoArgsConstructor
 public class RegisterCommand {
-    @NotNull(message = "Mobile number must not be null")
-    @Pattern(regexp = "^[0-9]{11}$", message = "Mobile number is illegal")
     private String mobileNum;
-
-    @NotNull(message = "Checkcode must not be null")
     private String checkCode;
-
-    @NotNull(message = "Password must not be null")
-    @Length(min = 6, max = 16, message = "The length of password must between 6~16")
     private String password;
 }

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

@@ -0,0 +1,21 @@
+package com.mooctest.crowd.domain.dao;
+
+import com.mooctest.crowd.domain.model.User;
+import org.springframework.data.repository.CrudRepository;
+
+import javax.transaction.Transactional;
+
+@Transactional
+public interface UserDao extends CrudRepository<User,Long> {
+
+//    @Query("SELECT u FROM User u WHERE u.U_MOBILE = :mobile")
+//    User findByMobile(@Param("mobile") String mobile);
+
+    User findByMobile(String mobile);
+
+    @Override
+    long count();
+
+    @Override
+    User save(User user);
+}

+ 2 - 12
core/src/main/java/com/mooctest/crowd/domain/domainobject/Account.java

@@ -1,6 +1,5 @@
 package com.mooctest.crowd.domain.domainobject;
 
-import com.mooctest.crowd.domain.command.LoginCommand;
 import com.mooctest.crowd.domain.command.ModifyPasswordCommand;
 import com.mooctest.crowd.domain.exception.PasswordErrorException;
 import lombok.Data;
@@ -21,9 +20,9 @@ public class Account {
 //    private List<Permission> permission;
 //    private List<Role> roles;
 
-    public boolean login(LoginCommand cmd) throws PasswordErrorException {
+    public boolean login(String mobileNum,String password) throws PasswordErrorException {
 
-        if (this.getPassword().equals(cmd.getPassword())) {
+        if (this.getPassword().equals(password)) {
             return true;
         }
         else {
@@ -62,13 +61,4 @@ public class Account {
     }
 
 
-    public boolean login(String mobileNum, String password) throws PasswordErrorException {
-
-        if (this.getPassword().equals(password)){
-            return true;
-        }
-        else {
-            throw new PasswordErrorException();
-        }
-    }
 }

+ 12 - 13
core/src/main/java/com/mooctest/crowd/domain/domainobject/CrowdTestProject.java

@@ -7,8 +7,7 @@ import com.mooctest.crowd.domain.exception.CrowdTestTaskNotExistException;
 import com.mooctest.crowd.domain.repository.CrowdTestProjectRepo;
 import lombok.Data;
 
-import java.io.File;
-import java.util.Date;
+import java.sql.Timestamp;
 import java.util.List;
 
 /**
@@ -20,16 +19,16 @@ public class CrowdTestProject {
 
     private Long id;
     private String name;
-    private Long ownerId;
-    private Long managerId;
-    private DistributeType distributeType;
+    private Long userId;
+    private Long regionalManagerId;
+    private ProjectDistributeType projectDistributeType;
     private String description;
-    private File projectFile;
-    private File requirement;
+    private String projectFile;
+    private String requirementFile;
     private double quotedPrice;
     private double fixedPrice;
     private String status;
-    private Date creatTime;
+    private Timestamp creatTime;
     private List<CrowdTestTask> crowdTestTaskList;
 
     @Override
@@ -37,12 +36,12 @@ public class CrowdTestProject {
         return "CrowdTestProject{" +
                 "id=" + id +
                 ", name='" + name + '\'' +
-                ", ownerId=" + ownerId +
-                ", managerId=" + managerId +
-                ", distributeType=" + distributeType +
+                ", userId=" + userId +
+                ", regionalManagerId=" + regionalManagerId +
+                ", projectDistributeType=" + projectDistributeType +
                 ", description='" + description + '\'' +
                 ", projectFile=" + projectFile +
-                ", requirement=" + requirement +
+                ", requirementFile=" + requirementFile +
                 ", quotedPrice=" + quotedPrice +
                 ", fixedPrice=" + fixedPrice +
                 ", status='" + status + '\'' +
@@ -70,7 +69,7 @@ public class CrowdTestProject {
         return crowdTestProject;
     }
 
-    // ************* task
+    /** Task */
 
     public boolean updateCrowdTestTaskStatus(Long projectId, Long taskId, String status) throws CrowdTestProjectNotExistException, CrowdTestTaskNotExistException, CrowdTestTaskNoPriceException {
         CrowdTestProjectRepo crowdTestProjectRepo = new CrowdTestProjectRepo();

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

@@ -2,7 +2,7 @@ package com.mooctest.crowd.domain.domainobject;
 
 import lombok.Data;
 
-import java.util.Date;
+import java.sql.Timestamp;
 
 /**
  * @author guochao
@@ -12,20 +12,20 @@ import java.util.Date;
 public class CrowdTestReport {
 
     private Long id;
-    private Long projectId;
-    private Long taskId;
-    private int type;
+    private Long crowdTestProjectId;
+    private Long crowdTestTaskId;
+    private String type;
     private String description;
     private String content;
     private String status;
-    private Date creatTime;
+    private Timestamp creatTime;
 
     @Override
     public String toString() {
         return "CrowdTestReport{" +
                 "id=" + id +
-                ", projectId=" + projectId +
-                ", taskId=" + taskId +
+                ", crowdTestProjectId=" + crowdTestProjectId +
+                ", crowdTestTaskId=" + crowdTestTaskId +
                 ", type=" + type +
                 ", description='" + description + '\'' +
                 ", content='" + content + '\'' +

+ 6 - 7
core/src/main/java/com/mooctest/crowd/domain/domainobject/CrowdTestTask.java

@@ -4,8 +4,7 @@ import com.mooctest.crowd.domain.exception.CrowdTestReportNotExistException;
 import com.mooctest.crowd.domain.exception.CrowdTestTaskNotExistException;
 import lombok.Data;
 
-import java.io.File;
-import java.util.Date;
+import java.sql.Timestamp;
 import java.util.List;
 
 /**
@@ -16,14 +15,14 @@ import java.util.List;
 public class CrowdTestTask {
     private Long id;
     private String name;
-    private Long projectId;
+    private Long crowdTestProjectId;
     private Long evaluationAgencyId;
-    private int type;
+    private String type;
     private String description;
-    private File requirementFile;
+    private String requirementFile;
     private Double price;
     private String status;
-    private Date creatTime;
+    private Timestamp creatTime;
     private List<CrowdTestReport> crowdTestReportList;
 
 
@@ -32,7 +31,7 @@ public class CrowdTestTask {
         return "CrowdTestTask{" +
                 "id=" + id +
                 ", name='" + name + '\'' +
-                ", projectId=" + projectId +
+                ", crowdTestProjectId=" + crowdTestProjectId +
                 ", evaluationAgencyId=" + evaluationAgencyId +
                 ", type=" + type +
                 ", description='" + description + '\'' +

+ 7 - 5
core/src/main/java/com/mooctest/crowd/domain/domainobject/EvaluationAgency.java

@@ -6,22 +6,24 @@ import com.mooctest.crowd.domain.exception.CrowdTestTaskNotExistException;
 import com.mooctest.crowd.domain.repository.CrowdTestProjectRepo;
 import lombok.Data;
 
-import java.util.Date;
+import java.sql.Timestamp;
 
 /**
  * @author guochao
  * @date 2019/7/12 1:32
  */
 @Data
-public class EvaluationAgency extends User{
+public class EvaluationAgency extends User {
     private Long id;
     private Long userId;
+    private String evaluationAgencyName;
     private String bankAccount;
     private String address;
     private String abilities;
-    private String resource;
-    private Date updateTime;
-    private Date expireTime;
+    private String resources;
+    private String agencyPhoto;
+    private Timestamp updateTime;
+    private Timestamp expireTime;
 
     @Override
     public Long getId() {

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

@@ -7,7 +7,7 @@ import lombok.Data;
  * @date 2019/7/6 18:16
  */
 @Data
-public class GeneralUser extends User{
+public class GeneralUser extends User {
     private Long id;
     private Long userId;
 }

+ 3 - 1
core/src/main/java/com/mooctest/crowd/domain/domainobject/Permission.java

@@ -2,15 +2,17 @@ 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 {
-
     private Long id;
     private String name;
     private String resource;
     private String operation;
+    private Timestamp createTime;
 }

+ 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;
+}

+ 3 - 0
core/src/main/java/com/mooctest/crowd/domain/domainobject/Role.java

@@ -2,6 +2,8 @@ package com.mooctest.crowd.domain.domainobject;
 
 import lombok.Data;
 
+import java.sql.Timestamp;
+
 /**
  * @author guochao
  * @date 2019/7/6 17:54
@@ -10,4 +12,5 @@ import lombok.Data;
 public class Role {
     private Long id;
     private String name;
+    private Timestamp createTime;
 }

+ 2 - 2
core/src/main/java/com/mooctest/crowd/domain/domainobject/User.java

@@ -2,7 +2,7 @@ package com.mooctest.crowd.domain.domainobject;
 
 import lombok.Data;
 
-import java.util.Date;
+import java.sql.Timestamp;
 
 /**
  * @author guochao
@@ -21,5 +21,5 @@ public class User {
     private String photoUrl;
     private String isAvailable;
     private String isDeleted;
-    private Date createTime;
+    private Timestamp createTime;
 }

+ 46 - 8
core/src/main/java/com/mooctest/crowd/domain/domainservice/RegisterDService.java

@@ -1,22 +1,60 @@
 package com.mooctest.crowd.domain.domainservice;
 
-import com.mooctest.crowd.domain.command.RegisterCommand;
 import com.mooctest.crowd.domain.domainobject.Account;
-import com.mooctest.crowd.domain.factory.AccountFactory;
+import com.mooctest.crowd.domain.exception.AccountNotExistException;
+import com.mooctest.crowd.domain.exception.HttpBadRequestException;
+import com.mooctest.crowd.domain.repository.AccountUTRepo;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.text.SimpleDateFormat;
+import java.util.Date;
 
 /**
  * @Author: xuexb
  * @Date: 2019.7.5 14:05
  */
+@Service
 public class RegisterDService {
 
-    public static Account register(RegisterCommand cmd) {
-        Account account = AccountFactory.createAccount();
-        account.setMobileNum(cmd.getMobileNum());
-        return account;
-    }
+    @Autowired
+    private AccountUTRepo accountUTRepo;
+
+    private Logger LOG = LoggerFactory.getLogger(getClass());
 
-    public static Account register(String mobileNum, String password) {
+    public Account register(String mobileNum, String password) throws AccountNotExistException {
+//        Account account = null;
+//        try {
+//            account = accountUTRepo.getByMobileNum(cmd.getMobileNum());
+//        } catch (AccountNotExistException e) {
+//            System.out.println("no user ");
+//            Account addAccount = AccountFactory.createAccount();
+//            addAccount.setMobileNum(cmd.getMobileNum());
+//            addAccount.setPassword(cmd.getPassword());
+//            account = accountUTRepo.addAccount(addAccount);
+//            e.printStackTrace();
+//        }
+        if(accountUTRepo.getByMobileNum(mobileNum) == null){
+            System.out.println("no user ");
+//            Account addAccount = AccountFactory.createAccount();
+//            addAccount.setMobileNum(cmd.getMobileNum());
+//            addAccount.setPassword(cmd.getPassword());
+//            return accountUTRepo.addAccount(addAccount);
+        }else{
+            String reason = "注册用户已存在";
+            createLogForRegister(mobileNum, reason);
+            System.out.println("注册用户已存在");
+            throw new HttpBadRequestException("user already exists");
+        }
         return null;
     }
+
+    private void createLogForRegister(String mobileNum, String reason) {
+        Date date = new Date();
+        SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+        LOG.error("用户{}注册失败,失败时间:{},失败原因:{}",new Object[]{mobileNum,df.format(date), reason});
+    }
+
 }

+ 12 - 0
core/src/main/java/com/mooctest/crowd/domain/exception/HttpBadRequestException.java

@@ -0,0 +1,12 @@
+package com.mooctest.crowd.domain.exception;
+
+import org.springframework.http.HttpStatus;
+import org.springframework.web.bind.annotation.ResponseStatus;
+
+@ResponseStatus(code = HttpStatus.BAD_REQUEST)
+public class HttpBadRequestException extends RuntimeException {
+
+    public HttpBadRequestException(String message) {
+        super(message);
+    }
+}

+ 5 - 1
core/src/main/java/com/mooctest/crowd/domain/factory/AccountFactory.java

@@ -1,13 +1,17 @@
 package com.mooctest.crowd.domain.factory;
 
 import com.mooctest.crowd.domain.domainobject.Account;
+import org.springframework.beans.factory.annotation.Autowired;
 
 /**
  * @Author: xuexb
  * @Date: 2019.7.5 15:19
  */
 public class AccountFactory {
+
+    @Autowired
+    private static Account account;
     public static Account createAccount() {
-        return new Account();
+        return account;
     }
 }

+ 52 - 0
core/src/main/java/com/mooctest/crowd/domain/model/CrowdTestProject.java

@@ -0,0 +1,52 @@
+package com.mooctest.crowd.domain.model;
+
+import lombok.Data;
+
+import javax.persistence.Entity;
+import javax.persistence.GeneratedValue;
+import javax.persistence.Id;
+import javax.persistence.Table;
+import java.io.File;
+import java.sql.Timestamp;
+
+/**
+ * @author guochao
+ * @date 2019/7/6 18:27
+ */
+@Data
+@Entity
+@Table(name = "crowd_test_project")
+public class CrowdTestProject {
+
+    @Id
+    @GeneratedValue
+    private Long id;
+    private String name;
+    private Long ownerId;
+    private Long managerId;
+    private Long distributionId;
+    private String description;
+    private File projectFile;
+    private File requirement;
+    private double quotedPrice;
+    private double fixedPrice;
+    private String status;
+    private Timestamp creatTime;
+    @Override
+    public String toString() {
+        return "CrowdTestProject{" +
+                "id=" + id +
+                ", name='" + name + '\'' +
+                ", ownerId=" + ownerId +
+                ", managerId=" + managerId +
+                ", distributionId=" + distributionId +
+                ", description='" + description + '\'' +
+                ", projectFile=" + projectFile +
+                ", requirement=" + requirement +
+                ", quotedPrice=" + quotedPrice +
+                ", fixedPrice=" + fixedPrice +
+                ", status='" + status + '\'' +
+                ", creatTime=" + creatTime +
+                '}';
+    }
+}

+ 36 - 0
core/src/main/java/com/mooctest/crowd/domain/model/CrowdTestReport.java

@@ -0,0 +1,36 @@
+package com.mooctest.crowd.domain.model;
+
+import lombok.Data;
+
+import java.sql.Timestamp;
+
+/**
+ * @author guochao
+ * @date 2019/7/11 14:16
+ */
+@Data
+public class CrowdTestReport {
+
+    private Long id;
+    private Long projectId;
+    private Long taskId;
+    private int type;
+    private String description;
+    private String content;
+    private String status;
+    private Timestamp creatTime;
+
+    @Override
+    public String toString() {
+        return "CrowdTestReport{" +
+                "id=" + id +
+                ", projectId=" + projectId +
+                ", taskId=" + taskId +
+                ", type=" + type +
+                ", description='" + description + '\'' +
+                ", content='" + content + '\'' +
+                ", status='" + status + '\'' +
+                ", creatTime=" + creatTime +
+                '}';
+    }
+}

+ 45 - 0
core/src/main/java/com/mooctest/crowd/domain/model/CrowdTestTask.java

@@ -0,0 +1,45 @@
+package com.mooctest.crowd.domain.model;
+
+import lombok.Data;
+
+import java.io.File;
+import java.sql.Timestamp;
+import java.util.List;
+
+/**
+ * @author guochao
+ * @date 2019/7/11 14:14
+ */
+@Data
+public class CrowdTestTask {
+    private Long id;
+    private String name;
+    private Long projectId;
+    private Long evaluationAgencyId;
+    private int type;
+    private String description;
+    private File requirementFile;
+    private Double price;
+    private String status;
+    private Timestamp creatTime;
+    private List<CrowdTestReport> crowdTestReportList;
+
+
+    @Override
+    public String toString() {
+        return "CrowdTestTask{" +
+                "id=" + id +
+                ", name='" + name + '\'' +
+                ", projectId=" + projectId +
+                ", evaluationAgencyId=" + evaluationAgencyId +
+                ", type=" + type +
+                ", description='" + description + '\'' +
+                ", requirementFile=" + requirementFile +
+                ", price=" + price +
+                ", status='" + status + '\'' +
+                ", creatTime=" + creatTime +
+                ", crowdTestReportList=" + crowdTestReportList +
+                '}';
+    }
+
+}

+ 16 - 0
core/src/main/java/com/mooctest/crowd/domain/model/DistributeType.java

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

+ 21 - 0
core/src/main/java/com/mooctest/crowd/domain/model/EvaluationAgency.java

@@ -0,0 +1,21 @@
+package com.mooctest.crowd.domain.model;
+
+import lombok.Data;
+
+import java.sql.Timestamp;
+
+/**
+ * @author guochao
+ * @date 2019/7/12 1:32
+ */
+@Data
+public class EvaluationAgency extends User {
+    private Long id;
+    private Long userId;
+    private String bankAccount;
+    private String address;
+    private String abilities;
+    private String resource;
+    private Timestamp updateTime;
+    private Timestamp expireTime;
+}

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

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

+ 16 - 0
core/src/main/java/com/mooctest/crowd/domain/model/Permission.java

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

+ 14 - 0
core/src/main/java/com/mooctest/crowd/domain/model/RegionalManager.java

@@ -0,0 +1,14 @@
+package com.mooctest.crowd.domain.model;
+
+import lombok.Data;
+
+/**
+ * @author guochao
+ * @date 2019/7/9 14:16
+ */
+@Data
+public class RegionalManager extends User {
+    private Long id;
+    private Long userId;
+    private String regional;
+}

+ 13 - 0
core/src/main/java/com/mooctest/crowd/domain/model/Role.java

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

+ 56 - 0
core/src/main/java/com/mooctest/crowd/domain/model/User.java

@@ -0,0 +1,56 @@
+package com.mooctest.crowd.domain.model;
+
+import lombok.Data;
+
+import javax.persistence.*;
+import java.sql.Timestamp;
+
+/**
+ * @author guochao
+ * @date 2019/7/6 18:17
+ */
+@Data
+@Table(name = "user")
+@Entity
+public class User {
+
+    @Id
+    @GeneratedValue
+    private Long id;
+
+    @Column(name = "U_NAME")
+    private String name;
+
+    @Column(name = "U_USERNAME")
+    private String userName;
+
+    @Column(name = "U_PASSWORD")
+    private String password;
+
+    @Column(name = "U_MOBILE")
+    private String mobile;
+
+    @Column(name = "U_GENDER")
+    private String gender;
+
+    @Column(name = "U_EMAIL")
+    private String email;
+
+    @Column(name = "U_PROVINCE")
+    private String province;
+
+    @Column(name = "U_CITY")
+    private String city;
+
+    @Column(name = "U_PHOTO_URL")
+    private String photoUrl;
+
+    @Column(name = "U_IS_AVAILABILE")
+    private String isAvailable;
+
+    @Column(name = "U_IS_DELETED")
+    private String isDeleted;
+
+    @Column(name = "U_CREATE_TIME")
+    private Timestamp createTime;
+}

+ 30 - 12
core/src/main/java/com/mooctest/crowd/domain/repository/AccountUTRepo.java

@@ -1,8 +1,12 @@
 package com.mooctest.crowd.domain.repository;
 
+import com.mooctest.crowd.domain.dao.UserDao;
 import com.mooctest.crowd.domain.domainobject.Account;
 import com.mooctest.crowd.domain.exception.AccountNotExistException;
-import org.springframework.stereotype.Component;
+import com.mooctest.crowd.domain.factory.AccountFactory;
+import com.mooctest.crowd.domain.model.User;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
 
 import java.util.ArrayList;
 import java.util.List;
@@ -11,14 +15,26 @@ import java.util.List;
  * @Author: xuexb
  * @Date: 2019.7.5 14:28
  */
-@Component
+
+@Service
 public class AccountUTRepo implements IAccountRepo {
+
+    @Autowired
+    private UserDao userDao;
+
+    @Autowired
+    private User user;
+
     @Override
     public Account getByMobileNum(String mobileNum) throws AccountNotExistException {
-        if ("EXIST_ACCOUNT".equals(mobileNum)) {
-            Account account = new Account();
-            account.setMobileNum("EXIST_ACCOUNT");
-            account.setPassword("PASSWORD");
+
+        System.out.println("mobileNum "  + mobileNum);
+        User user = userDao.findByMobile(mobileNum);
+        System.out.println("user "  + user);
+        if (user != null) {
+            Account account = AccountFactory.createAccount();
+            account.setMobileNum(user.getMobile());
+            account.setPassword(user.getPassword());
             return account;
         }
         throw new AccountNotExistException();
@@ -48,12 +64,14 @@ public class AccountUTRepo implements IAccountRepo {
     }
 
     @Override
-    public boolean addAccount(Account account) throws AccountNotExistException {
-        Account newAccount = this.getByMobileNum(account.getMobileNum());
-        if(newAccount != null){
-            return false;
-        }
-        throw new AccountNotExistException();
+    public Account addAccount(Account account){
+        user.setMobile(account.getMobileNum());
+        user.setPassword(account.getPassword());
+        User saveUser = userDao.save(user);
+        Account returnAccount = AccountFactory.createAccount();
+        returnAccount.setMobileNum(saveUser.getMobile());
+        returnAccount.setPassword(saveUser.getPassword());
+        return returnAccount;
     }
 
     @Override

+ 9 - 14
core/src/main/java/com/mooctest/crowd/domain/repository/CrowdTestProjectRepo.java

@@ -4,11 +4,8 @@ import com.mooctest.crowd.domain.domainobject.*;
 import com.mooctest.crowd.domain.exception.CrowdTestProjectNotExistException;
 import com.mooctest.crowd.domain.factory.CrowdTestProjectFactory;
 import lombok.extern.slf4j.Slf4j;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
 import org.springframework.stereotype.Component;
 
-import java.io.File;
 import java.text.SimpleDateFormat;
 import java.util.ArrayList;
 import java.util.Date;
@@ -27,10 +24,9 @@ public class CrowdTestProjectRepo implements ICrowdTestProjectRepo {
             CrowdTestProject crowdTestProject = CrowdTestProjectFactory.createCrowdTestProject();
             crowdTestProject.setName("PROJECT_ONE");
             crowdTestProject.setDescription("DESCRIPTION");
-            crowdTestProject.setProjectFile(new File("PROJECTFILE.TXT"));
-            crowdTestProject.setRequirement(new File("REQUIREMENT.TXT"));
+            crowdTestProject.setProjectFile("PROJECTFILE.TXT");
+            crowdTestProject.setRequirementFile("REQUIREMENT.TXT");
             crowdTestProject.setQuotedPrice(200.00);
-            crowdTestProject.setCreatTime(new Date());
             return crowdTestProject;
         }else {
             return null;
@@ -44,20 +40,19 @@ public class CrowdTestProjectRepo implements ICrowdTestProjectRepo {
             CrowdTestProject crowdTestProject = CrowdTestProjectFactory.createCrowdTestProject();
             crowdTestProject.setId(id);
             crowdTestProject.setName("PROJECT_ONE");
-            DistributeType distributeType = new DistributeType();
-            distributeType.setId(123L);
-            crowdTestProject.setDistributeType(distributeType);
+            ProjectDistributeType projectDistributeType = new ProjectDistributeType();
+            projectDistributeType.setId(123L);
+            crowdTestProject.setProjectDistributeType(projectDistributeType);
             crowdTestProject.setDescription("DESCRIPTION");
-            crowdTestProject.setProjectFile(new File("PROJECTFILE.TXT"));
-            crowdTestProject.setRequirement(new File("REQUIREMENT.TXT"));
+            crowdTestProject.setProjectFile("PROJECTFILE.TXT");
+            crowdTestProject.setRequirementFile("REQUIREMENT.TXT");
             crowdTestProject.setQuotedPrice(200.00);
-            crowdTestProject.setCreatTime(new Date());
 
             // report
             List<CrowdTestReport> crowdTestReportList = new ArrayList<CrowdTestReport>();
             CrowdTestReport crowdTestReport = new CrowdTestReport();
             crowdTestReport.setId(1001L);
-            crowdTestReport.setTaskId(101L);
+            crowdTestReport.setCrowdTestTaskId(101L);
             crowdTestReport.setStatus(CrowdTestReportStatus.CREATED);
             crowdTestReportList.add(crowdTestReport);
 
@@ -65,7 +60,7 @@ public class CrowdTestProjectRepo implements ICrowdTestProjectRepo {
             List<CrowdTestTask> crowdTestTaskList = new ArrayList<CrowdTestTask>();
             CrowdTestTask crowdTestTask = new CrowdTestTask();
             crowdTestTask.setId(101L);
-            crowdTestTask.setProjectId(1L);
+            crowdTestTask.setCrowdTestProjectId(1L);
             crowdTestTask.setPrice(100.00);
             crowdTestTask.setCrowdTestReportList(crowdTestReportList);
             crowdTestTaskList.add(crowdTestTask);

+ 6 - 2
core/src/main/java/com/mooctest/crowd/domain/repository/IAccountRepo.java

@@ -9,13 +9,17 @@ import java.util.List;
  * @Author: xuexb
  * @Date: 2019.7.5 14:58
  */
-public interface IAccountRepo {
+public interface IAccountRepo{
+
     Account getByMobileNum(String mobileNum) throws AccountNotExistException;
+
     Account getByID(Long id) throws AccountNotExistException;
+
     List<Account> getByIDList(Long[] ids) throws AccountNotExistException;
 
-    boolean addAccount(Account account) throws AccountNotExistException;
+    Account addAccount(Account account) throws AccountNotExistException;
 
     boolean removeAccount(Account account) throws AccountNotExistException;
+
     Account updateAccount(Account account) throws AccountNotExistException;
 }

+ 26 - 0
core/src/resources/application.yaml

@@ -0,0 +1,26 @@
+spring:
+  cache:
+    guava:
+      spec: expireAfterWrite=30s
+  datasource:
+    driver-class-name: com.mysql.jdbc.Driver
+    url: jdbc:mysql://101.37.175.111:3306/crowd-test-service?useSSL=false&useUnicode=yes&characterEncoding=UTF-8
+    username: mooctest
+    password: secr3t!
+    # Keep the connection alive if idle for a long time (needed in production)
+    testWhileIdle: true
+    validationQuery: SELECT 1
+  # Show or not log for each sql query
+  jpa:
+    show-sql: true
+  # Hibernate ddl auto (create, create-drop, update)
+  hibernate:
+    ddl-auto: validate
+    #hbm2ddl.auto: update
+    # Naming strategy
+    naming-strategy: org.hibernate.cfg.ImprovedNamingStrategy
+  # The SQL dialect makes Hibernate generate better SQL for the chosen database
+  properties.hibernate.dialect: org.hibernate.dialect.MySQL5Dialect
+
+#swagger:
+#  enable: true

+ 219 - 218
core/src/test/java/com/mooctest/crowd/domain/domainobject/AccountTest.java

@@ -1,218 +1,219 @@
-package com.mooctest.crowd.domain.domainobject;
-
-import com.mooctest.crowd.domain.command.AccountCommand;
-import com.mooctest.crowd.domain.command.LoginCommand;
-import com.mooctest.crowd.domain.command.ModifyPasswordCommand;
-import com.mooctest.crowd.domain.exception.AccountNotExistException;
-import com.mooctest.crowd.domain.exception.PasswordErrorException;
-import com.mooctest.crowd.domain.repository.AccountUTRepo;
-import com.mooctest.crowd.domain.repository.IAccountRepo;
-import org.junit.Test;
-
-import java.util.List;
-
-import static org.junit.Assert.*;
-
-/**
- * @Author: xuexb
- * @Date: 2019.7.5 14:25
- */
-public class AccountTest {
-
-    private AccountUTRepo accountUTRepo = new AccountUTRepo();
-    
-    @Test
-    public void should_return_true_when_login_success() throws AccountNotExistException, PasswordErrorException {
-        // arrange
-        LoginCommand loginCommand = this.getSuccessLoginCommand();
-        Account account = this.getSuccessAccount();
-        // action
-        boolean success = account.login(loginCommand);
-        // assert
-        assertTrue(success);
-    }
-
-    @Test(expected = AccountNotExistException.class)
-    public void should_throw_when_account_not_exist() throws AccountNotExistException {
-        // arrange
-        LoginCommand loginCommand = new LoginCommand();
-        loginCommand.setMobileNum("NOT_EXIST");
-        IAccountRepo IAccountRepo = new AccountUTRepo();
-        Account account = IAccountRepo.getByMobileNum(loginCommand.getMobileNum());
-    }
-
-    @Test(expected = PasswordErrorException.class)
-    public void should_throw_exception_when_password_error() throws PasswordErrorException, AccountNotExistException {
-        // arrange
-        LoginCommand loginCommand = new LoginCommand();
-        loginCommand.setMobileNum("EXIST_ACCOUNT");
-        loginCommand.setPassword("ERROR_PASSWORD");
-        IAccountRepo IAccountRepo = new AccountUTRepo();
-        Account account = IAccountRepo.getByMobileNum(loginCommand.getMobileNum());
-        // assert
-        account.login(loginCommand);
-    }
-
-    @Test
-    public void should_update_password_when_modify_password() throws AccountNotExistException, PasswordErrorException {
-        // arrange
-        ModifyPasswordCommand modifyPasswordCommand = new ModifyPasswordCommand();
-        modifyPasswordCommand.setMobileNum("EXIST_ACCOUNT");
-        modifyPasswordCommand.setOldPassword("PASSWORD");
-        modifyPasswordCommand.setNewPassword("654321");
-        
-        Account account = accountUTRepo.getByMobileNum(modifyPasswordCommand.getMobileNum());
-        // action
-        boolean result = account.modifyPassword(modifyPasswordCommand);
-        // assert
-        assertTrue(result);
-    }
-
-    @Test
-    public void should_return_permissions_when_account_login_success() throws AccountNotExistException {
-        // arrange
-        Account account = this.getSuccessAccount();
-        // action
-        List<Permission> permissions = account.distributePermission();
-        // assert
-        assertEquals(permissions.get(0).getId(), new Long(1));
-    }
-
-    @Test
-    public void should_return_roles_when_account_login_success() throws AccountNotExistException {
-        // arrange
-        Account account = this.getSuccessAccount();
-        // action
-        List<Role> roles = account.distributeRole();
-        // assert
-        assertEquals(roles.get(0).getId(), new Long(1));
-    }
-
-    @Test
-    public void should_return_account_when_view_by_account_id() throws AccountNotExistException {
-        // arrange
-        AccountCommand accountCommand = new AccountCommand();
-        accountCommand.setId(123L);
-        
-        // action
-        Account accountUTRepoByID = accountUTRepo.getByID(accountCommand.getId());
-        // assert
-        assertEquals(accountUTRepoByID.getId(), accountCommand.getId());
-    }
-
-    @Test(expected = AccountNotExistException.class)
-    public void should_throw_when_view_account_not_exist_by_account_id() throws AccountNotExistException {
-        // arrange
-        AccountCommand accountCommand = new AccountCommand();
-        accountCommand.setId(111L);
-        // action
-        accountUTRepo.getByID(accountCommand.getId());
-    }
-
-    @Test
-    public void should_return_account_list_when_view_by_account_ids() throws AccountNotExistException {
-        // arrange
-        Long[] ids = {123L};
-        // action
-        List<Account> accountList = accountUTRepo.getByIDList(ids);
-        // assert
-        assertEquals(accountList.get(0).getId(), ids[0]);
-    }
-
-    @Test(expected = AccountNotExistException.class)
-    public void should_throw_when_view_not_exist_account_by_account_ids() throws AccountNotExistException {
-        // arrange
-        Long[] ids = {123L,111L};
-        
-        // action
-        accountUTRepo.getByIDList(ids);
-    }
-
-    @Test
-    public void should_return_false_when_add_exist_account() throws AccountNotExistException {
-        // arrange
-        Account account = this.createCorrectAccount();
-        // action
-        boolean result = accountUTRepo.addAccount(account);
-        // assert
-        assertFalse(result);
-    }
-
-    @Test(expected = AccountNotExistException.class)
-    public void should_throw_when_add_account_success() throws AccountNotExistException {
-        // arrange
-        Account account = this.createDiscorrectAccount();
-        // action
-        accountUTRepo.addAccount(account);
-    }
-    @Test
-    public void should_return_true_when_remove_account_success() throws AccountNotExistException {
-        // arrange
-        Account account = this.createCorrectAccount();
-        // action
-        boolean result = accountUTRepo.removeAccount(account);
-        // assert
-        assertTrue(result);
-    }
-
-    @Test(expected = AccountNotExistException.class)
-    public void should_throw_when_remove_not_exist_account() throws AccountNotExistException {
-        // arrange
-        Account account = this.createDiscorrectAccount();
-        // action
-        accountUTRepo.removeAccount(account);
-    }
-
-    @Test
-    public void should_return_true_when_update_account_success() throws AccountNotExistException {
-        // arrange
-        Account account = this.createCorrectAccount();
-        account.setPassword("UPDATE_PASSWORD");
-        // action
-        Account updateAccount = accountUTRepo.updateAccount(account);
-        // assert
-        assertEquals(updateAccount.getPassword(),account.getPassword());
-    }
-
-    @Test(expected = AccountNotExistException.class)
-    public void should_throw_when_update_not_exist_account() throws AccountNotExistException {
-        // arrange
-        Account account = this.createDiscorrectAccount();
-        // action
-        accountUTRepo.updateAccount(account);
-    }
-
-    private LoginCommand getSuccessLoginCommand() {
-        LoginCommand loginCommand = new LoginCommand();
-        loginCommand.setMobileNum("EXIST_ACCOUNT");
-        loginCommand.setPassword("PASSWORD");
-        loginCommand.setCheckCode("123456");
-        return loginCommand;
-    }
-
-    private Account getSuccessAccount() throws AccountNotExistException {
-        LoginCommand loginCommand = getSuccessLoginCommand();
-        IAccountRepo IAccountRepo = new AccountUTRepo();
-        return IAccountRepo.getByMobileNum(loginCommand.getMobileNum());
-    }
-    
-    private Account createCorrectAccount(){
-        AccountCommand accountCommand = new AccountCommand();
-        accountCommand.setMobileNum("EXIST_ACCOUNT");
-        accountCommand.setPassword("PASSWORD");
-        Account account = new Account();
-        account.setMobileNum(accountCommand.getMobileNum());
-        account.setPassword(accountCommand.getPassword());
-        return account;
-    }
-
-    private Account createDiscorrectAccount(){
-        AccountCommand accountCommand = new AccountCommand();
-        accountCommand.setMobileNum("NOT_EXIST_ACCOUNT");
-        accountCommand.setPassword("PASSWORD");
-        Account account = new Account();
-        account.setMobileNum(accountCommand.getMobileNum());
-        account.setPassword(accountCommand.getPassword());
-        return account;
-    }
-}
+//package com.mooctest.crowd.domain.domainobject;
+//
+//import com.mooctest.crowd.domain.command.AccountCommand;
+//import com.mooctest.crowd.domain.command.LoginCommand;
+//import com.mooctest.crowd.domain.command.ModifyPasswordCommand;
+//import com.mooctest.crowd.domain.exception.AccountNotExistException;
+//import com.mooctest.crowd.domain.exception.PasswordErrorException;
+//import com.mooctest.crowd.domain.repository.AccountUTRepo;
+//import com.mooctest.crowd.domain.repository.IAccountRepo;
+//import org.junit.Test;
+//
+//import java.util.List;
+//
+//import static org.junit.Assert.assertEquals;
+//import static org.junit.Assert.assertTrue;
+//
+///**
+// * @Author: xuexb
+// * @Date: 2019.7.5 14:25
+// */
+//public class AccountTest {
+//
+//    private AccountUTRepo accountUTRepo = new AccountUTRepo();
+//
+//    @Test
+//    public void should_return_true_when_login_success() throws AccountNotExistException, PasswordErrorException {
+//        // arrange
+//        LoginCommand loginCommand = this.getSuccessLoginCommand();
+//        Account account = this.getSuccessAccount();
+//        // action
+//        boolean success = account.login(loginCommand);
+//        // assert
+//        assertTrue(success);
+//    }
+//
+//    @Test(expected = AccountNotExistException.class)
+//    public void should_throw_when_account_not_exist() throws AccountNotExistException {
+//        // arrange
+//        LoginCommand loginCommand = new LoginCommand();
+//        loginCommand.setMobileNum("NOT_EXIST");
+//        IAccountRepo IAccountRepo = new AccountUTRepo();
+//        Account account = IAccountRepo.getByMobileNum(loginCommand.getMobileNum());
+//    }
+//
+//    @Test(expected = PasswordErrorException.class)
+//    public void should_throw_exception_when_password_error() throws PasswordErrorException, AccountNotExistException {
+//        // arrange
+//        LoginCommand loginCommand = new LoginCommand();
+//        loginCommand.setMobileNum("EXIST_ACCOUNT");
+//        loginCommand.setPassword("ERROR_PASSWORD");
+//        IAccountRepo IAccountRepo = new AccountUTRepo();
+//        Account account = IAccountRepo.getByMobileNum(loginCommand.getMobileNum());
+//        // assert
+//        account.login(loginCommand);
+//    }
+//
+//    @Test
+//    public void should_update_password_when_modify_password() throws AccountNotExistException, PasswordErrorException {
+//        // arrange
+//        ModifyPasswordCommand modifyPasswordCommand = new ModifyPasswordCommand();
+//        modifyPasswordCommand.setMobileNum("EXIST_ACCOUNT");
+//        modifyPasswordCommand.setOldPassword("PASSWORD");
+//        modifyPasswordCommand.setNewPassword("654321");
+//
+//        Account account = accountUTRepo.getByMobileNum(modifyPasswordCommand.getMobileNum());
+//        // action
+//        boolean result = account.modifyPassword(modifyPasswordCommand);
+//        // assert
+//        assertTrue(result);
+//    }
+//
+//    @Test
+//    public void should_return_permissions_when_account_login_success() throws AccountNotExistException {
+//        // arrange
+//        Account account = this.getSuccessAccount();
+//        // action
+//        List<Permission> permissions = account.distributePermission();
+//        // assert
+//        assertEquals(permissions.get(0).getId(), new Long(1));
+//    }
+//
+//    @Test
+//    public void should_return_roles_when_account_login_success() throws AccountNotExistException {
+//        // arrange
+//        Account account = this.getSuccessAccount();
+//        // action
+//        List<Role> roles = account.distributeRole();
+//        // assert
+//        assertEquals(roles.get(0).getId(), new Long(1));
+//    }
+//
+//    @Test
+//    public void should_return_account_when_view_by_account_id() throws AccountNotExistException {
+//        // arrange
+//        AccountCommand accountCommand = new AccountCommand();
+//        accountCommand.setId(123L);
+//
+//        // action
+//        Account accountUTRepoByID = accountUTRepo.getByID(accountCommand.getId());
+//        // assert
+//        assertEquals(accountUTRepoByID.getId(), accountCommand.getId());
+//    }
+//
+//    @Test(expected = AccountNotExistException.class)
+//    public void should_throw_when_view_account_not_exist_by_account_id() throws AccountNotExistException {
+//        // arrange
+//        AccountCommand accountCommand = new AccountCommand();
+//        accountCommand.setId(111L);
+//        // action
+//        accountUTRepo.getByID(accountCommand.getId());
+//    }
+//
+//    @Test
+//    public void should_return_account_list_when_view_by_account_ids() throws AccountNotExistException {
+//        // arrange
+//        Long[] ids = {123L};
+//        // action
+//        List<Account> accountList = accountUTRepo.getByIDList(ids);
+//        // assert
+//        assertEquals(accountList.get(0).getId(), ids[0]);
+//    }
+//
+//    @Test(expected = AccountNotExistException.class)
+//    public void should_throw_when_view_not_exist_account_by_account_ids() throws AccountNotExistException {
+//        // arrange
+//        Long[] ids = {123L,111L};
+//
+//        // action
+//        accountUTRepo.getByIDList(ids);
+//    }
+//
+//    @Test
+//    public void should_return_false_when_add_exist_account(){
+//        // arrange
+//        Account account = this.createCorrectAccount();
+//        // action
+//        Account resultAccount = accountUTRepo.addAccount(account);
+//        // assert
+//        assertEquals(resultAccount.getMobileNum(),account.getMobileNum());
+//    }
+//
+////    @Test(expected = AccountNotExistException.class)
+////    public void should_throw_when_add_account_success() throws AccountNotExistException {
+////        // arrange
+////        Account account = this.createDiscorrectAccount();
+////        // action
+////        accountUTRepo.addAccount(account);
+////    }
+//    @Test
+//    public void should_return_true_when_remove_account_success() throws AccountNotExistException {
+//        // arrange
+//        Account account = this.createCorrectAccount();
+//        // action
+//        boolean result = accountUTRepo.removeAccount(account);
+//        // assert
+//        assertTrue(result);
+//    }
+//
+//    @Test(expected = AccountNotExistException.class)
+//    public void should_throw_when_remove_not_exist_account() throws AccountNotExistException {
+//        // arrange
+//        Account account = this.createDiscorrectAccount();
+//        // action
+//        accountUTRepo.removeAccount(account);
+//    }
+//
+//    @Test
+//    public void should_return_true_when_update_account_success() throws AccountNotExistException {
+//        // arrange
+//        Account account = this.createCorrectAccount();
+//        account.setPassword("UPDATE_PASSWORD");
+//        // action
+//        Account updateAccount = accountUTRepo.updateAccount(account);
+//        // assert
+//        assertEquals(updateAccount.getPassword(),account.getPassword());
+//    }
+//
+//    @Test(expected = AccountNotExistException.class)
+//    public void should_throw_when_update_not_exist_account() throws AccountNotExistException {
+//        // arrange
+//        Account account = this.createDiscorrectAccount();
+//        // action
+//        accountUTRepo.updateAccount(account);
+//    }
+//
+//    private LoginCommand getSuccessLoginCommand() {
+//        LoginCommand loginCommand = new LoginCommand();
+//        loginCommand.setMobileNum("EXIST_ACCOUNT");
+//        loginCommand.setPassword("PASSWORD");
+//        loginCommand.setCheckCode("123456");
+//        return loginCommand;
+//    }
+//
+//    private Account getSuccessAccount() throws AccountNotExistException {
+//        LoginCommand loginCommand = getSuccessLoginCommand();
+//        IAccountRepo IAccountRepo = new AccountUTRepo();
+//        return IAccountRepo.getByMobileNum(loginCommand.getMobileNum());
+//    }
+//
+//    private Account createCorrectAccount(){
+//        AccountCommand accountCommand = new AccountCommand();
+//        accountCommand.setMobileNum("EXIST_ACCOUNT");
+//        accountCommand.setPassword("PASSWORD");
+//        Account account = new Account();
+//        account.setMobileNum(accountCommand.getMobileNum());
+//        account.setPassword(accountCommand.getPassword());
+//        return account;
+//    }
+//
+//    private Account createDiscorrectAccount(){
+//        AccountCommand accountCommand = new AccountCommand();
+//        accountCommand.setMobileNum("NOT_EXIST_ACCOUNT");
+//        accountCommand.setPassword("PASSWORD");
+//        Account account = new Account();
+//        account.setMobileNum(accountCommand.getMobileNum());
+//        account.setPassword(accountCommand.getPassword());
+//        return account;
+//    }
+//}

+ 27 - 27
core/src/test/java/com/mooctest/crowd/domain/domainobject/EvaluationAgencyTest.java

@@ -28,8 +28,8 @@ public class EvaluationAgencyTest {
         // arrange
         evaluationAgency.setId(4444L);
         crowdTestTaskCommand.setId(101L);
-        crowdTestTaskCommand.setProjectId(1L);
-        Long projectId = crowdTestTaskCommand.getProjectId();
+        crowdTestTaskCommand.setCrowdTestProjectId(1L);
+        Long projectId = crowdTestTaskCommand.getCrowdTestProjectId();
         Long taskId = crowdTestTaskCommand.getId();
         Long evaluationAgencyId = evaluationAgency.getId();
         // action
@@ -42,8 +42,8 @@ public class EvaluationAgencyTest {
     public void should_return_true_when_view_crowd_test_task_success() throws CrowdTestProjectNotExistException, CrowdTestTaskNotExistException {
         // arrange
         crowdTestTaskCommand.setId(101L);
-        crowdTestTaskCommand.setProjectId(1L);
-        Long projectId = crowdTestTaskCommand.getProjectId();
+        crowdTestTaskCommand.setCrowdTestProjectId(1L);
+        Long projectId = crowdTestTaskCommand.getCrowdTestProjectId();
         Long taskId = crowdTestTaskCommand.getId();
         CrowdTestProject crowdTestProject = crowdTestProjectRepo.getByID(projectId);
         // action
@@ -56,8 +56,8 @@ public class EvaluationAgencyTest {
     public void should_throw_when_view_crowd_test_task_not_exist() throws CrowdTestProjectNotExistException, CrowdTestTaskNotExistException {
         // arrange
         crowdTestTaskCommand.setId(102L);
-        crowdTestTaskCommand.setProjectId(1L);
-        Long projectId = crowdTestTaskCommand.getProjectId();
+        crowdTestTaskCommand.setCrowdTestProjectId(1L);
+        Long projectId = crowdTestTaskCommand.getCrowdTestProjectId();
         Long taskId = crowdTestTaskCommand.getId();
         CrowdTestProject crowdTestProject = crowdTestProjectRepo.getByID(projectId);
         // action
@@ -68,10 +68,10 @@ public class EvaluationAgencyTest {
     public void should_modify_status_when_commit_crowd_test_report_success() throws CrowdTestTaskNoPriceException, CrowdTestReportNotExistException, CrowdTestProjectNotExistException, CrowdTestTaskNotExistException {
         // arrange
         crowdTestReportCommand.setId(1001L);
-        crowdTestReportCommand.setTaskId(101L);
-        crowdTestReportCommand.setProjectId(1L);
-        Long projectId = crowdTestReportCommand.getProjectId();
-        Long taskId = crowdTestReportCommand.getTaskId();
+        crowdTestReportCommand.setCrowdTestTaskId(101L);
+        crowdTestTaskCommand.setCrowdTestProjectId(1L);
+        Long projectId = crowdTestTaskCommand.getCrowdTestProjectId();
+        Long taskId = crowdTestReportCommand.getCrowdTestTaskId();
         Long reportId = crowdTestReportCommand.getId();
         // action
         CrowdTestProject newCrowdTestProject = crowdTestProject.updateCrowdTestReportStatus(projectId, taskId, reportId, CrowdTestReportStatus.COMMITED);
@@ -85,10 +85,10 @@ public class EvaluationAgencyTest {
     public void should_throw_when_commit_crowd_test_report_not_exist() throws CrowdTestTaskNoPriceException, CrowdTestReportNotExistException, CrowdTestProjectNotExistException, CrowdTestTaskNotExistException {
         // arrange
         crowdTestReportCommand.setId(1002L);
-        crowdTestReportCommand.setTaskId(101L);
-        crowdTestReportCommand.setProjectId(1L);
-        Long projectId = crowdTestReportCommand.getProjectId();
-        Long taskId = crowdTestReportCommand.getTaskId();
+        crowdTestReportCommand.setCrowdTestTaskId(101L);
+        crowdTestTaskCommand.setCrowdTestProjectId(1L);
+        Long projectId = crowdTestTaskCommand.getCrowdTestProjectId();
+        Long taskId = crowdTestReportCommand.getCrowdTestTaskId();
         Long reportId = crowdTestReportCommand.getId();
         // action
         crowdTestProject.updateCrowdTestReportStatus(projectId, taskId, reportId, CrowdTestReportStatus.COMMITED);
@@ -97,9 +97,9 @@ public class EvaluationAgencyTest {
     @Test
     public void should_modify_crowd_test_task_status_commited_when_commit_crowd_test_task() throws CrowdTestProjectNotExistException, CrowdTestTaskNotExistException, CrowdTestTaskNoPriceException, CrowdTestReportNotExistException {
         // arrange
-        crowdTestTaskCommand.setProjectId(1L);
+        crowdTestTaskCommand.setCrowdTestProjectId(1L);
         crowdTestTaskCommand.setId(101L);
-        Long projectId = crowdTestTaskCommand.getProjectId();
+        Long projectId = crowdTestTaskCommand.getCrowdTestProjectId();
         Long taskId = crowdTestTaskCommand.getId();
         CrowdTestProject newCrowdTestProject = crowdTestProject.updateCrowdTestReportStatus(projectId, taskId, 1001L, CrowdTestReportStatus.COMMITED);
         // action
@@ -111,9 +111,9 @@ public class EvaluationAgencyTest {
     @Test
     public void should_throw_when_commit_crowd_test_task_has_no_commit_crowd_test_report() throws CrowdTestProjectNotExistException, CrowdTestTaskNotExistException, CrowdTestTaskNoPriceException, CrowdTestReportNotExistException {
         // arrange
-        crowdTestTaskCommand.setProjectId(1L);
+        crowdTestTaskCommand.setCrowdTestProjectId(1L);
         crowdTestTaskCommand.setId(101L);
-        Long projectId = crowdTestTaskCommand.getProjectId();
+        Long projectId = crowdTestTaskCommand.getCrowdTestProjectId();
         Long taskId = crowdTestTaskCommand.getId();
         CrowdTestProjectRepo crowdTestProjectRepo = new CrowdTestProjectRepo();
         CrowdTestProject crowdTestProject = crowdTestProjectRepo.getByID(projectId);
@@ -127,10 +127,10 @@ public class EvaluationAgencyTest {
     public void should_return_true_when_view_crowd_test_project_success() throws CrowdTestProjectNotExistException, CrowdTestTaskNotExistException, CrowdTestTaskNoPriceException, CrowdTestReportNotExistException {
         // arrange
         crowdTestReportCommand.setId(1001L);
-        crowdTestReportCommand.setTaskId(101L);
-        crowdTestReportCommand.setProjectId(1L);
-        Long projectId = crowdTestReportCommand.getProjectId();
-        Long taskId = crowdTestReportCommand.getTaskId();
+        crowdTestReportCommand.setCrowdTestTaskId(101L);
+        crowdTestReportCommand.setCrowdTestProjectId(1L);
+        Long projectId = crowdTestReportCommand.getCrowdTestProjectId();
+        Long taskId = crowdTestReportCommand.getCrowdTestTaskId();
         Long reportId = crowdTestReportCommand.getId();
         // action
         CrowdTestReport crowdTestReport = crowdTestProject.getCrowdTestReportByProjectId(projectId, taskId, reportId);
@@ -141,14 +141,14 @@ public class EvaluationAgencyTest {
     @Test
     public void should_return_true_when_view_crowd_test_project_list_success() throws CrowdTestProjectNotExistException, CrowdTestTaskNotExistException, CrowdTestTaskNoPriceException, CrowdTestReportNotExistException {
         // arrange
-        crowdTestReportCommand.setProjectId(1L);
-        crowdTestReportCommand.setTaskId(101L);
-        Long projectId = crowdTestReportCommand.getProjectId();
-        Long taskId = crowdTestReportCommand.getTaskId();
+        crowdTestReportCommand.setCrowdTestProjectId(1L);
+        crowdTestReportCommand.setCrowdTestTaskId(101L);
+        Long projectId = crowdTestReportCommand.getCrowdTestProjectId();
+        Long taskId = crowdTestReportCommand.getCrowdTestTaskId();
         // action
         List<CrowdTestReport> crowdTestReportList = crowdTestProject.getCrowdTestReportListByProjectId(projectId, taskId);
         // assert
 
-        assertEquals(crowdTestReportList.get(0).getTaskId(), taskId);
+        assertEquals(crowdTestReportList.get(0).getCrowdTestTaskId(), taskId);
     }
 }

+ 20 - 24
core/src/test/java/com/mooctest/crowd/domain/domainobject/GeneralUserTest.java

@@ -7,12 +7,11 @@ import org.junit.Test;
 import org.junit.runner.RunWith;
 import org.mockito.runners.MockitoJUnitRunner;
 
-import java.io.File;
 import java.util.ArrayList;
-import java.util.Date;
 import java.util.List;
 
-import static org.junit.Assert.*;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertTrue;
 
 /**
  * @author guochao
@@ -53,18 +52,18 @@ public class GeneralUserTest {
         crowdTestProjectCommand.setDescription("DESCRIPTION");
         crowdTestProjectCommand.setDistributeId(123L);
         crowdTestProjectCommand.setStatus(CrowdTestProjectStatus.CREATED);
-        crowdTestProjectCommand.setProjectFile(new File("PROJECTFILE.TXT"));
-        crowdTestProjectCommand.setRequirement(new File("REQUIREMENT.TXT"));
+        crowdTestProjectCommand.setProjectFile("PROJECTFILE.TXT");
+        crowdTestProjectCommand.setRequirementFile("REQUIREMENT.TXT");
         crowdTestProjectCommand.setQuotedPrice(200.00);
 
         CrowdTestProject crowdTestProject2 = new CrowdTestProject();
         crowdTestProject2.setName(crowdTestProjectCommand.getName());
-        DistributeType distributeType = new DistributeType();
-        distributeType.setId(crowdTestProjectCommand.getDistributeId());
-        crowdTestProject2.setDistributeType(distributeType);
+        ProjectDistributeType projectDistributeType = new ProjectDistributeType();
+        projectDistributeType.setId(crowdTestProjectCommand.getDistributeId());
+        crowdTestProject2.setProjectDistributeType(projectDistributeType);
         crowdTestProject2.setDescription(crowdTestProjectCommand.getDescription());
         crowdTestProject2.setProjectFile(crowdTestProjectCommand.getProjectFile());
-        crowdTestProject2.setRequirement(crowdTestProjectCommand.getRequirement());
+        crowdTestProject2.setRequirementFile(crowdTestProjectCommand.getRequirementFile());
         crowdTestProject2.setQuotedPrice(crowdTestProjectCommand.getQuotedPrice());
         crowdTestProject2.setStatus(crowdTestProjectCommand.getStatus());
         CrowdTestProjectRepo testProjectRepo = new CrowdTestProjectRepo();
@@ -164,13 +163,12 @@ public class GeneralUserTest {
         crowdTestProject.setId(2L);
         crowdTestProject.setName("PROJECT_TWO");
         crowdTestProject.setDescription("DESCRIPTION");
-        DistributeType distributeType = new DistributeType();
-        distributeType.setId(123L);
-        crowdTestProject.setDistributeType(distributeType);
-        crowdTestProject.setProjectFile(new File("PROJECTFILE.TXT"));
-        crowdTestProject.setRequirement(new File("REQUIREMENT.TXT"));
+        ProjectDistributeType projectDistributeType = new ProjectDistributeType();
+        projectDistributeType.setId(123L);
+        crowdTestProject.setProjectDistributeType(projectDistributeType);
+        crowdTestProject.setProjectFile("PROJECTFILE.TXT");
+        crowdTestProject.setRequirementFile("REQUIREMENT.TXT");
         crowdTestProject.setQuotedPrice(200.00);
-        crowdTestProject.setCreatTime(new Date());
         crowdTestProject.setStatus(CrowdTestProjectStatus.CREATED);
         crowdTestProjects.add(crowdTestProject);
         CrowdTestProjectRepo testProjectRepo = new CrowdTestProjectRepo();
@@ -192,10 +190,9 @@ public class GeneralUserTest {
         crowdTestProject.setId(3L);
         crowdTestProject.setName("PROJECT_TWO");
         crowdTestProject.setDescription("DESCRIPTION");
-        crowdTestProject.setProjectFile(new File("PROJECTFILE.TXT"));
-        crowdTestProject.setRequirement(new File("REQUIREMENT.TXT"));
+        crowdTestProject.setProjectFile("PROJECTFILE.TXT");
+        crowdTestProject.setRequirementFile("REQUIREMENT.TXT");
         crowdTestProject.setQuotedPrice(200.00);
-        crowdTestProject.setCreatTime(new Date());
         crowdTestProjects.add(crowdTestProject);
         CrowdTestProjectRepo testProjectRepo = new CrowdTestProjectRepo();
 
@@ -219,14 +216,13 @@ public class GeneralUserTest {
         crowdTestProject.setId(1L);
         crowdTestProject.setName("PROJECT_ONE");
         crowdTestProject.setDescription("DESCRIPTION");
-        DistributeType distributeType = new DistributeType();
-        distributeType.setId(123L);
-        crowdTestProject.setDistributeType(distributeType);
-        crowdTestProject.setProjectFile(new File("PROJECTFILE.TXT"));
-        crowdTestProject.setRequirement(new File("REQUIREMENT.TXT"));
+        ProjectDistributeType projectDistributeType = new ProjectDistributeType();
+        projectDistributeType.setId(123L);
+        crowdTestProject.setProjectDistributeType(projectDistributeType);
+        crowdTestProject.setProjectFile("PROJECTFILE.TXT");
+        crowdTestProject.setRequirementFile("REQUIREMENT.TXT");
         crowdTestProject.setQuotedPrice(200.00);
         crowdTestProject.setStatus(CrowdTestProjectStatus.CREATED);
-        crowdTestProject.setCreatTime(new Date());
         return crowdTestProject;
     }
 }

+ 14 - 14
core/src/test/java/com/mooctest/crowd/domain/domainobject/RegionalManagerTest.java

@@ -78,9 +78,9 @@ public class RegionalManagerTest {
     public void should_return_true_when_make_a_price_for_crowd_test_project_success() throws CrowdTestProjectNotExistException, CrowdTestTaskNotExistException {
         // arrange
         crowdTestTaskCommand.setId(101L);
-        crowdTestTaskCommand.setProjectId(1L);
+        crowdTestTaskCommand.setCrowdTestProjectId(1L);
         crowdTestTaskCommand.setPrice(100.00);
-        Long projectId = crowdTestTaskCommand.getProjectId();
+        Long projectId = crowdTestTaskCommand.getCrowdTestProjectId();
         Long id = crowdTestTaskCommand.getId();
         Double price = crowdTestTaskCommand.getPrice();
         // action
@@ -99,9 +99,9 @@ public class RegionalManagerTest {
     public void should_throw_when_make_a_price_for_crowd_test_project_not_exist() throws CrowdTestProjectNotExistException, CrowdTestTaskNotExistException {
         // arrange
         crowdTestTaskCommand.setId(101L);
-        crowdTestTaskCommand.setProjectId(2L);
+        crowdTestTaskCommand.setCrowdTestProjectId(2L);
         crowdTestTaskCommand.setPrice(100.00);
-        Long projectId = crowdTestTaskCommand.getProjectId();
+        Long projectId = crowdTestTaskCommand.getCrowdTestProjectId();
         Long id = crowdTestTaskCommand.getId();
         Double price = crowdTestTaskCommand.getPrice();
         // action
@@ -112,9 +112,9 @@ public class RegionalManagerTest {
     public void should_throw_when_make_a_price_for_crowd_test_task_not_exist() throws CrowdTestProjectNotExistException, CrowdTestTaskNotExistException {
         // arrange
         crowdTestTaskCommand.setId(103L);
-        crowdTestTaskCommand.setProjectId(1L);
+        crowdTestTaskCommand.setCrowdTestProjectId(1L);
         crowdTestTaskCommand.setPrice(100.00);
-        Long projectId = crowdTestTaskCommand.getProjectId();
+        Long projectId = crowdTestTaskCommand.getCrowdTestProjectId();
         Long id = crowdTestTaskCommand.getId();
         Double price = crowdTestTaskCommand.getPrice();
         // action
@@ -125,9 +125,9 @@ public class RegionalManagerTest {
     public void should_return_true_when_distribute_crowd_test_task_to_evaluation_agency_success() throws CrowdTestProjectNotExistException, CrowdTestTaskNotExistException, CrowdTestTaskNoPriceException {
         // arrange
         crowdTestTaskCommand.setId(101L);
-        crowdTestTaskCommand.setProjectId(1L);
+        crowdTestTaskCommand.setCrowdTestProjectId(1L);
         crowdTestTaskCommand.setStatus(CrowdTestTaskStatus.RELEASED);
-        Long projectId = crowdTestTaskCommand.getProjectId();
+        Long projectId = crowdTestTaskCommand.getCrowdTestProjectId();
         Long taskId = crowdTestTaskCommand.getId();
         String status = crowdTestProjectCommand.getStatus();
         // action
@@ -141,9 +141,9 @@ public class RegionalManagerTest {
     public void should_throw_when_distribute_crowd_test_task_crowd_test_project_not_exist() throws CrowdTestProjectNotExistException, CrowdTestTaskNotExistException, CrowdTestTaskNoPriceException {
         // arrange
         crowdTestTaskCommand.setId(101L);
-        crowdTestTaskCommand.setProjectId(2L);
+        crowdTestTaskCommand.setCrowdTestProjectId(2L);
         crowdTestTaskCommand.setStatus(CrowdTestTaskStatus.RELEASED);
-        Long projectId = crowdTestTaskCommand.getProjectId();
+        Long projectId = crowdTestTaskCommand.getCrowdTestProjectId();
         Long taskId = crowdTestTaskCommand.getId();
         String status = crowdTestProjectCommand.getStatus();
         // action
@@ -154,9 +154,9 @@ public class RegionalManagerTest {
     public void should_throw_when_distribute_crowd_test_task_crowd_test_task_not_exist() throws CrowdTestProjectNotExistException, CrowdTestTaskNotExistException, CrowdTestTaskNoPriceException {
         // arrange
         crowdTestTaskCommand.setId(103L);
-        crowdTestTaskCommand.setProjectId(1L);
+        crowdTestTaskCommand.setCrowdTestProjectId(1L);
         crowdTestTaskCommand.setStatus(CrowdTestTaskStatus.RELEASED);
-        Long projectId = crowdTestTaskCommand.getProjectId();
+        Long projectId = crowdTestTaskCommand.getCrowdTestProjectId();
         Long taskId = crowdTestTaskCommand.getId();
         String status = crowdTestProjectCommand.getStatus();
         // action
@@ -167,9 +167,9 @@ public class RegionalManagerTest {
     public void should_throw_when_distribute_crowd_test_task_price_not_exist() throws CrowdTestProjectNotExistException, CrowdTestTaskNotExistException, CrowdTestTaskNoPriceException {
         // arrange
         crowdTestTaskCommand.setId(101L);
-        crowdTestTaskCommand.setProjectId(1L);
+        crowdTestTaskCommand.setCrowdTestProjectId(1L);
         crowdTestTaskCommand.setStatus(CrowdTestTaskStatus.RELEASED);
-        Long projectId = crowdTestTaskCommand.getProjectId();
+        Long projectId = crowdTestTaskCommand.getCrowdTestProjectId();
         Long taskId = crowdTestTaskCommand.getId();
         String status = crowdTestProjectCommand.getStatus();
         // action

+ 1 - 1
core/src/test/java/com/mooctest/crowd/domain/domainobject/SystemAdministratorTest.java

@@ -5,7 +5,7 @@ import com.mooctest.crowd.domain.exception.CrowdTestProjectNotExistException;
 import com.mooctest.crowd.domain.repository.CrowdTestProjectRepo;
 import org.junit.Test;
 
-import static org.junit.Assert.*;
+import static org.junit.Assert.assertEquals;
 
 /**
  * @author guochao

+ 44 - 21
core/src/test/java/com/mooctest/crowd/domain/domainservice/RegisterDServiceTest.java

@@ -2,45 +2,68 @@ package com.mooctest.crowd.domain.domainservice;
 
 import com.mooctest.crowd.domain.command.RegisterCommand;
 import com.mooctest.crowd.domain.domainobject.Account;
+import com.mooctest.crowd.domain.exception.AccountNotExistException;
+import com.mooctest.crowd.domain.exception.HttpBadRequestException;
+import com.mooctest.crowd.domain.repository.AccountUTRepo;
+import org.junit.Before;
+import org.junit.Rule;
+import org.junit.rules.ExpectedException;
+import org.mockito.InjectMocks;
+import org.mockito.Mock;
+import org.mockito.MockitoAnnotations;
 
-import static org.junit.Assert.*;
+import static org.junit.Assert.assertNull;
+import static org.mockito.Mockito.when;
 
 /**
  * @Author: xuexb
  * @Date: 2019.7.5 14:09
  */
 public class RegisterDServiceTest {
+    @InjectMocks
+    private RegisterDService registerDService = new RegisterDService();
 
-    @org.junit.Test
-    public void should_register_success_when_user_register_by_mobile_num() {
-        // arrange
-        RegisterCommand registerCommand = new RegisterCommand();
-        registerCommand.setMobileNum("18652040322");
+    @Mock
+    private AccountUTRepo accountUTRepo;
+
+    private Account account = new Account();
+
+    private RegisterCommand registerCommand = new RegisterCommand();
+
+    @Rule
+    public ExpectedException thrown = ExpectedException.none();
+
+    @Before
+    public void setUp() throws AccountNotExistException {
+        MockitoAnnotations.initMocks(this);
+
+        registerCommand.setMobileNum("13657094936");
         registerCommand.setCheckCode("XXXX");
         registerCommand.setPassword("12341324");
 
-        // action
-        Account newAccount = RegisterDService.register(registerCommand);
-
-        // assert
-        assertNotNull(newAccount);
-        assertEquals(registerCommand.getMobileNum(), newAccount.getMobileNum());
+        account.setMobileNum("18652040322");
+        account.setPassword("12341324");
 
     }
+
+
     @org.junit.Test
-    public void should_thow_exception_when_mobile_num_exist() {
-        // arrange
-        RegisterCommand registerCommand = new RegisterCommand();
-        registerCommand.setMobileNum("18652040322");
-        registerCommand.setCheckCode("XXXX");
-        registerCommand.setPassword("12341324");
+    public void should_register_success_when_user_register_by_mobile_num() throws AccountNotExistException {
 
         // action
-        Account newAccount = RegisterDService.register(registerCommand);
+        when(accountUTRepo.getByMobileNum("13657094936")).thenReturn(null);
+        Account newAccount = registerDService.register(registerCommand.getMobileNum(),registerCommand.getPassword());
 
         // assert
-        assertNotNull(newAccount);
-        assertEquals(registerCommand.getMobileNum(), newAccount.getMobileNum());
+        assertNull(newAccount);
 
     }
+    @org.junit.Test
+    public void should_thow_exception_when_mobile_num_exist() throws AccountNotExistException {
+
+        when(accountUTRepo.getByMobileNum("18652040322")).thenReturn(account);
+        thrown.expect(HttpBadRequestException.class);
+        registerCommand.setMobileNum("18652040322");
+        registerDService.register(registerCommand.getMobileNum(),registerCommand.getPassword());
+    }
 }

+ 14 - 0
site/pom.xml

@@ -63,6 +63,20 @@
 			<artifactId>core</artifactId>
 			<version>1.0-SNAPSHOT</version>
 		</dependency>
+
+		<dependency>
+			<groupId>junit</groupId>
+			<artifactId>junit</artifactId>
+			<version>4.12</version>
+		</dependency>
+
+
+		
+		<dependency>
+			<groupId>org.hibernate.javax.persistence</groupId>
+			<artifactId>hibernate-jpa-2.1-api</artifactId>
+			<version>1.0.0.Final</version>
+		</dependency>
 	</dependencies>
 
 	<build>

+ 1 - 1
site/src/main/java/com/mooctest/crowd/site/controller/UserController.java

@@ -27,7 +27,7 @@ public class UserController {
     private UserService userService;
 
     @RequestMapping(value = "/account", method = RequestMethod.POST)
-    public ResponseMessage<UserDTO> register(@Validated RegisterCommand registerCommand, BindingResult result) throws BadRequestException {
+    public ResponseMessage<UserDTO> register(@Validated RegisterCommand registerCommand, BindingResult result) throws BadRequestException, AccountNotExistException {
         if (result.hasErrors())
             throw new BadRequestException(result.getFieldError().getDefaultMessage());
         return new ResponseMessage<>(ResponseConstant.OK, "注册成功", userService.register(registerCommand));

+ 1 - 1
site/src/main/java/com/mooctest/crowd/site/mediator/Mediator.java

@@ -14,7 +14,7 @@ public interface Mediator {
 
     UserDTO loginByMobileAndPwd(LoginCommand cmd) throws PasswordErrorException, AccountNotExistException, BadRequestException;
 
-    UserDTO register(RegisterCommand registerCommand);
+    UserDTO register(RegisterCommand registerCommand) throws AccountNotExistException;
 
     IndexDTO renderIndex();
 

+ 2 - 2
site/src/main/java/com/mooctest/crowd/site/mediator/impl/WebMediatorImpl.java

@@ -32,8 +32,8 @@ public class WebMediatorImpl implements Mediator {
     }
 
     @Override
-    public UserDTO register(RegisterCommand registerCommand) {
-        Account account = RegisterDService.register(registerCommand.getMobileNum(), registerCommand.getPassword());
+    public UserDTO register(RegisterCommand registerCommand) throws AccountNotExistException {
+        Account account = new RegisterDService().register(registerCommand.getMobileNum(), registerCommand.getPassword());
         UserVO userVO = new UserVO(account);
         return new UserDTO(userVO);
     }

+ 1 - 1
site/src/main/java/com/mooctest/crowd/site/service/UserService.java

@@ -1 +1 @@
-package com.mooctest.crowd.site.service;

import com.mooctest.crowd.site.command.LoginCommand;
import com.mooctest.crowd.site.command.RegisterCommand;
import com.mooctest.crowd.site.data.dto.UserDTO;
import com.mooctest.crowd.domain.exception.AccountNotExistException;
import com.mooctest.crowd.domain.exception.BadRequestException;
import com.mooctest.crowd.domain.exception.PasswordErrorException;
import org.springframework.stereotype.Service;

/**
 * @Author: xuexb
 * @Date: 2019.7.22 16:52
 */
public interface UserService {
    UserDTO register(RegisterCommand registerCommand);

    UserDTO loginByMobileAndPwd(LoginCommand loginCommand) throws PasswordErrorException, AccountNotExistException, BadRequestException;
}
+package com.mooctest.crowd.site.service;

import com.mooctest.crowd.site.command.LoginCommand;
import com.mooctest.crowd.site.command.RegisterCommand;
import com.mooctest.crowd.site.data.dto.UserDTO;
import com.mooctest.crowd.domain.exception.AccountNotExistException;
import com.mooctest.crowd.domain.exception.BadRequestException;
import com.mooctest.crowd.domain.exception.PasswordErrorException;
import org.springframework.stereotype.Service;

/**
 * @Author: xuexb
 * @Date: 2019.7.22 16:52
 */
public interface UserService {
    UserDTO register(RegisterCommand registerCommand) throws AccountNotExistException;

    UserDTO loginByMobileAndPwd(LoginCommand loginCommand) throws PasswordErrorException, AccountNotExistException, BadRequestException;
}

+ 1 - 1
site/src/main/java/com/mooctest/crowd/site/service/impl/UserServiceImpl.java

@@ -1 +1 @@
-package com.mooctest.crowd.site.service.impl;

import com.mooctest.crowd.site.command.LoginCommand;
import com.mooctest.crowd.site.command.RegisterCommand;
import com.mooctest.crowd.site.data.dto.UserDTO;

import com.mooctest.crowd.domain.exception.AccountNotExistException;
import com.mooctest.crowd.domain.exception.BadRequestException;
import com.mooctest.crowd.domain.exception.PasswordErrorException;
import com.mooctest.crowd.site.mediator.Mediator;
import com.mooctest.crowd.site.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.stereotype.Service;

/**
 * @Author: xuexb
 * @Date: 2019.7.22 16:53
 */
@Service
public class UserServiceImpl implements UserService {

    @Autowired
    @Qualifier("WebMediator")
    private Mediator mediator;

    @Override
    public UserDTO register(RegisterCommand registerCommand) {
        return mediator.register(registerCommand);
    }

    @Override
    public UserDTO loginByMobileAndPwd(LoginCommand loginCommand) throws PasswordErrorException, AccountNotExistException, BadRequestException {
        return mediator.loginByMobileAndPwd(loginCommand);
    }
}
+package com.mooctest.crowd.site.service.impl;

import com.mooctest.crowd.site.command.LoginCommand;
import com.mooctest.crowd.site.command.RegisterCommand;
import com.mooctest.crowd.site.data.dto.UserDTO;

import com.mooctest.crowd.domain.exception.AccountNotExistException;
import com.mooctest.crowd.domain.exception.BadRequestException;
import com.mooctest.crowd.domain.exception.PasswordErrorException;
import com.mooctest.crowd.site.mediator.Mediator;
import com.mooctest.crowd.site.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.stereotype.Service;

/**
 * @Author: xuexb
 * @Date: 2019.7.22 16:53
 */
@Service
public class UserServiceImpl implements UserService {

    @Autowired
    @Qualifier("WebMediator")
    private Mediator mediator;

    @Override
    public UserDTO register(RegisterCommand registerCommand) throws AccountNotExistException {
        return mediator.register(registerCommand);
    }

    @Override
    public UserDTO loginByMobileAndPwd(LoginCommand loginCommand) throws PasswordErrorException, AccountNotExistException, BadRequestException {
        return mediator.loginByMobileAndPwd(loginCommand);
    }
}

+ 3 - 4
site/src/test/java/com/mooctest/crowd/site/mediator/impl/WebMediatorImplTest.java

@@ -1,14 +1,13 @@
 package com.mooctest.crowd.site.mediator.impl;
 
+import com.mooctest.crowd.domain.domainobject.Account;
+import com.mooctest.crowd.domain.factory.AccountFactory;
 import com.mooctest.crowd.site.command.AccountCommand;
 import com.mooctest.crowd.site.command.CrowdTestProjectCommand;
 import com.mooctest.crowd.site.command.CrowdTestReportCommand;
 import com.mooctest.crowd.site.command.CrowdTestTaskCommand;
 import com.mooctest.crowd.site.data.dto.*;
-import com.mooctest.crowd.domain.domainobject.Account;
-import com.mooctest.crowd.domain.factory.AccountFactory;
 import com.mooctest.crowd.site.mediator.Mediator;
-import com.mooctest.crowd.site.mediator.impl.WebMediatorImpl;
 import org.junit.Before;
 import org.junit.Test;
 import org.junit.runner.RunWith;
@@ -118,4 +117,4 @@ public class WebMediatorImplTest {
         //assert
         assertNotNull(userDTO);
     }
-}
+}