薛晓波 6 yıl önce
işleme
4fe485eb24
25 değiştirilmiş dosya ile 1200 ekleme ve 0 silme
  1. 15 0
      .gitignore
  2. 18 0
      pom.xml
  3. 35 0
      src/main/java/com/mooctest/crowd/domain/command/LoginCommand.java
  4. 35 0
      src/main/java/com/mooctest/crowd/domain/command/ModifyPasswordCommand.java
  5. 35 0
      src/main/java/com/mooctest/crowd/domain/command/RegisterCommand.java
  6. 92 0
      src/main/java/com/mooctest/crowd/domain/command/TestProjectCommand.java
  7. 83 0
      src/main/java/com/mooctest/crowd/domain/domainobject/Account.java
  8. 9 0
      src/main/java/com/mooctest/crowd/domain/domainobject/GeneralUser.java
  9. 45 0
      src/main/java/com/mooctest/crowd/domain/domainobject/Permission.java
  10. 26 0
      src/main/java/com/mooctest/crowd/domain/domainobject/Role.java
  11. 120 0
      src/main/java/com/mooctest/crowd/domain/domainobject/TestProject.java
  12. 118 0
      src/main/java/com/mooctest/crowd/domain/domainobject/User.java
  13. 8 0
      src/main/java/com/mooctest/crowd/domain/exception/AccountNotExistException.java
  14. 8 0
      src/main/java/com/mooctest/crowd/domain/exception/PasswordErrorException.java
  15. 8 0
      src/main/java/com/mooctest/crowd/domain/exception/TestProjectNotExistException.java
  16. 13 0
      src/main/java/com/mooctest/crowd/domain/factory/AccountFactory.java
  17. 13 0
      src/main/java/com/mooctest/crowd/domain/factory/TestProjectFactory.java
  18. 46 0
      src/main/java/com/mooctest/crowd/domain/repository/AccountUTRepo.java
  19. 22 0
      src/main/java/com/mooctest/crowd/domain/repository/IAccountRepo.java
  20. 25 0
      src/main/java/com/mooctest/crowd/domain/repository/ITestProjectRepo.java
  21. 88 0
      src/main/java/com/mooctest/crowd/domain/repository/TestProjectRepo.java
  22. 18 0
      src/main/java/com/mooctest/crowd/domain/service/RegisterService.java
  23. 105 0
      src/test/java/com/mooctest/crowd/domain/domainobject/AccountTest.java
  24. 169 0
      src/test/java/com/mooctest/crowd/domain/domainobject/GeneralUserTest.java
  25. 46 0
      src/test/java/com/mooctest/crowd/domain/service/RegisterServiceTest.java

+ 15 - 0
.gitignore

@@ -0,0 +1,15 @@
+tmp
+precompiled
+/conf/application.conf
+test-result
+.classpath
+*.launch
+*.classpath
+*.DS_Store
+**.iml
+**.ipr
+**.iws
+**.log
+/log/
+.idea/
+**target/

+ 18 - 0
pom.xml

@@ -0,0 +1,18 @@
+<?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>
+
+    <groupId>com.mooctest.crowd</groupId>
+    <artifactId>domain</artifactId>
+    <version>1.0-SNAPSHOT</version>
+
+    <dependencies>
+        <dependency>
+            <groupId>junit</groupId>
+            <artifactId>junit</artifactId>
+            <version>4.12</version>
+        </dependency>
+    </dependencies>
+</project>

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

@@ -0,0 +1,35 @@
+package com.mooctest.crowd.domain.command;
+
+/**
+ * @Author: xuexb
+ * @Date: 2019.7.5 14:24
+ */
+public class LoginCommand {
+    private String mobileNum;
+    private String password;
+    private String checkCode;
+
+    public void setMobileNum(String mobileNum) {
+        this.mobileNum = mobileNum;
+    }
+
+    public String getMobileNum() {
+        return mobileNum;
+    }
+
+    public void setPassword(String password) {
+        this.password = password;
+    }
+
+    public String getPassword() {
+        return password;
+    }
+
+    public void setCheckCode(String checkCode) {
+        this.checkCode = checkCode;
+    }
+
+    public String getCheckCode() {
+        return checkCode;
+    }
+}

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

@@ -0,0 +1,35 @@
+package com.mooctest.crowd.domain.command;
+
+/**
+ * @author guochao
+ * @date 2019/7/5 19:13
+ */
+public class ModifyPasswordCommand {
+    private String mobileNum;
+    private String oldPassword;
+    private String newPassword;
+
+    public void setMobileNum(String mobileNum) {
+        this.mobileNum = mobileNum;
+    }
+
+    public String getMobileNum() {
+        return mobileNum;
+    }
+
+    public void setOldPassword(String oldPassword) {
+        this.oldPassword = oldPassword;
+    }
+
+    public String getOldPassword() {
+        return oldPassword;
+    }
+
+    public void setNewPassword(String newPassword) {
+        this.newPassword = newPassword;
+    }
+
+    public String getNewPassword() {
+        return newPassword;
+    }
+}

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

@@ -0,0 +1,35 @@
+package com.mooctest.crowd.domain.command;
+
+/**
+ * @Author: xuexb
+ * @Date: 2019.7.5 14:09
+ */
+public class RegisterCommand {
+    private String mobileNum;
+    private String checkCode;
+    private String password;
+
+    public void setMobileNum(String mobileNum) {
+        this.mobileNum = mobileNum;
+    }
+
+    public String getMobileNum() {
+        return mobileNum;
+    }
+
+    public void setCheckCode(String checkCode) {
+        this.checkCode = checkCode;
+    }
+
+    public String getCheckCode() {
+        return checkCode;
+    }
+
+    public void setPassword(String password) {
+        this.password = password;
+    }
+
+    public String getPassword() {
+        return password;
+    }
+}

+ 92 - 0
src/main/java/com/mooctest/crowd/domain/command/TestProjectCommand.java

@@ -0,0 +1,92 @@
+package com.mooctest.crowd.domain.command;
+
+import java.io.File;
+import java.util.Date;
+
+/**
+ * @author guochao
+ * @date 2019/7/6 18:50
+ */
+public class TestProjectCommand {
+    private Long id;
+    private String name;
+    private String description;
+    private Long ownerId;
+    private Long distributeId;
+    private File projectFile;
+    private File requirement;
+    private double quotedPrice;
+    private Date creatTime;
+
+    public Long getId() {
+        return id;
+    }
+
+    public void setId(Long id) {
+        this.id = id;
+    }
+
+    public void setName(String name) {
+        this.name = name;
+    }
+
+    public String getName() {
+        return name;
+    }
+
+    public void setDescription(String description) {
+        this.description = description;
+    }
+
+    public String getDescription() {
+        return description;
+    }
+
+    public Long getOwnerId() {
+        return ownerId;
+    }
+
+    public void setOwnerId(Long ownerId) {
+        this.ownerId = ownerId;
+    }
+
+    public Long getDistributeId() {
+        return distributeId;
+    }
+
+    public void setDistributeId(Long distributeId) {
+        this.distributeId = distributeId;
+    }
+
+    public File getProjectFile() {
+        return projectFile;
+    }
+
+    public void setProjectFile(File projectFile) {
+        this.projectFile = projectFile;
+    }
+
+    public File getRequirement() {
+        return requirement;
+    }
+
+    public void setRequirement(File requirement) {
+        this.requirement = requirement;
+    }
+
+    public double getQuotedPrice() {
+        return quotedPrice;
+    }
+
+    public void setQuotedPrice(double quotedPrice) {
+        this.quotedPrice = quotedPrice;
+    }
+
+    public Date getCreatTime() {
+        return creatTime;
+    }
+
+    public void setCreatTime(Date creatTime) {
+        this.creatTime = creatTime;
+    }
+}

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

@@ -0,0 +1,83 @@
+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 java.util.ArrayList;
+import java.util.List;
+
+/**
+ * @Author: xuexb
+ * @Date: 2019.7.5 14:04
+ */
+
+public class Account {
+
+    private String mobileNum;
+    private String password;
+//    private List<Permission> permission;
+//    private List<Role> roles;
+
+    public boolean login(LoginCommand cmd) throws PasswordErrorException {
+
+        if (this.getPassword().equals(cmd.getPassword())) {
+            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(new Long(10001));
+        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(new Long(10001));
+        role.setName("GeneralUser");
+        roles.add(role);
+        return roles;
+    }
+
+    public String getMobileNum() {
+        return mobileNum;
+    }
+
+    public void setMobileNum(String mobileNum) {
+        this.mobileNum = mobileNum;
+    }
+
+    public String getPassword() {
+        return password;
+    }
+
+    public void setPassword(String password) {
+        this.password = password;
+    }
+
+//    public void setPermission(Permission permission) {
+//        this.permission = permission;
+//    }
+//
+//    public Permission getPermission() {
+//        return permission;
+//    }
+}

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

@@ -0,0 +1,9 @@
+package com.mooctest.crowd.domain.domainobject;
+
+/**
+ * @author guochao
+ * @date 2019/7/6 18:16
+ */
+public class GeneralUser extends User{
+
+}

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

@@ -0,0 +1,45 @@
+package com.mooctest.crowd.domain.domainobject;
+
+/**
+ * @author guochao
+ * @date 2019/7/5 22:51
+ */
+public class Permission {
+
+    private Long id;
+    private String name;
+    private String resource;
+    private String operation;
+
+    public void setId(Long id) {
+        this.id = id;
+    }
+
+    public Long getId() {
+        return id;
+    }
+
+    public void setName(String name) {
+        this.name = name;
+    }
+
+    public String getName() {
+        return name;
+    }
+
+    public void setResource(String resource) {
+        this.resource = resource;
+    }
+
+    public String getResource() {
+        return resource;
+    }
+
+    public void setOperation(String operation) {
+        this.operation = operation;
+    }
+
+    public String getOperation() {
+        return operation;
+    }
+}

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

@@ -0,0 +1,26 @@
+package com.mooctest.crowd.domain.domainobject;
+
+/**
+ * @author guochao
+ * @date 2019/7/6 17:54
+ */
+public class Role {
+    private Long id;
+    private String name;
+
+    public void setId(Long id) {
+        this.id = id;
+    }
+
+    public Long getId() {
+        return id;
+    }
+
+    public void setName(String name) {
+        this.name = name;
+    }
+
+    public String getName() {
+        return name;
+    }
+}

+ 120 - 0
src/main/java/com/mooctest/crowd/domain/domainobject/TestProject.java

@@ -0,0 +1,120 @@
+package com.mooctest.crowd.domain.domainobject;
+
+import java.io.File;
+import java.util.Date;
+
+/**
+ * @author guochao
+ * @date 2019/7/6 18:27
+ */
+public class TestProject {
+
+    private Long id;
+    private String name;
+    private Long ownerId;
+    private Long managerId;
+    private Long distributeId;
+    private String description;
+    private File projectFile;
+    private File requirement;
+    private double quotedPrice;
+    private double fixedPrice;
+    private String state;
+    private Date creatTime;
+
+    public Long getId() {
+        return id;
+    }
+
+    public void setId(Long id) {
+        this.id = id;
+    }
+
+    public String getName() {
+        return name;
+    }
+
+    public void setName(String name) {
+        this.name = name;
+    }
+
+    public Long getOwnerId() {
+        return ownerId;
+    }
+
+    public void setOwnerId(Long ownerId) {
+        this.ownerId = ownerId;
+    }
+
+    public Long getManagerId() {
+        return managerId;
+    }
+
+    public void setManagerId(Long managerId) {
+        this.managerId = managerId;
+    }
+
+    public Long getDistributeId() {
+        return distributeId;
+    }
+
+    public void setDistributeId(Long distributeId) {
+        this.distributeId = distributeId;
+    }
+
+    public String getDescription() {
+        return description;
+    }
+
+    public void setDescription(String description) {
+        this.description = description;
+    }
+
+    public File getProjectFile() {
+        return projectFile;
+    }
+
+    public void setProjectFile(File projectFile) {
+        this.projectFile = projectFile;
+    }
+
+    public File getRequirement() {
+        return requirement;
+    }
+
+    public void setRequirement(File requirement) {
+        this.requirement = requirement;
+    }
+
+    public double getQuotedPrice() {
+        return quotedPrice;
+    }
+
+    public void setQuotedPrice(double quotedPrice) {
+        this.quotedPrice = quotedPrice;
+    }
+
+    public double getFixedPrice() {
+        return fixedPrice;
+    }
+
+    public void setFixedPrice(double fixedPrice) {
+        this.fixedPrice = fixedPrice;
+    }
+
+    public String getState() {
+        return state;
+    }
+
+    public void setState(String state) {
+        this.state = state;
+    }
+
+    public Date getCreatTime() {
+        return creatTime;
+    }
+
+    public void setCreatTime(Date creatTime) {
+        this.creatTime = creatTime;
+    }
+}

+ 118 - 0
src/main/java/com/mooctest/crowd/domain/domainobject/User.java

@@ -0,0 +1,118 @@
+package com.mooctest.crowd.domain.domainobject;
+
+import java.sql.Timestamp;
+
+/**
+ * @author guochao
+ * @date 2019/7/6 18:17
+ */
+public class User {
+    private Long id;
+    private String name;
+    private String userName;
+    private String password;
+    private String gender;
+    private String mobile;
+    private String province;
+    private String city;
+    private String photoUrl;
+    private String isAvailabile;
+    private String isDeleted;
+    private Timestamp createTime;
+
+    public Long getId() {
+        return id;
+    }
+
+    public void setId(Long id) {
+        this.id = id;
+    }
+
+    public String getName() {
+        return name;
+    }
+
+    public void setName(String name) {
+        this.name = name;
+    }
+
+    public String getUserName() {
+        return userName;
+    }
+
+    public void setUserName(String userName) {
+        this.userName = userName;
+    }
+
+    public String getPassword() {
+        return password;
+    }
+
+    public void setPassword(String password) {
+        this.password = password;
+    }
+
+    public String getGender() {
+        return gender;
+    }
+
+    public void setGender(String gender) {
+        this.gender = gender;
+    }
+
+    public String getMobile() {
+        return mobile;
+    }
+
+    public void setMobile(String mobile) {
+        this.mobile = mobile;
+    }
+
+    public String getProvince() {
+        return province;
+    }
+
+    public void setProvince(String province) {
+        this.province = province;
+    }
+
+    public String getCity() {
+        return city;
+    }
+
+    public void setCity(String city) {
+        this.city = city;
+    }
+
+    public String getPhotoUrl() {
+        return photoUrl;
+    }
+
+    public void setPhotoUrl(String photoUrl) {
+        this.photoUrl = photoUrl;
+    }
+
+    public String getIsAvailabile() {
+        return isAvailabile;
+    }
+
+    public void setIsAvailabile(String isAvailabile) {
+        this.isAvailabile = isAvailabile;
+    }
+
+    public String getIsDeleted() {
+        return isDeleted;
+    }
+
+    public void setIsDeleted(String isDeleted) {
+        this.isDeleted = isDeleted;
+    }
+
+    public Timestamp getCreateTime() {
+        return createTime;
+    }
+
+    public void setCreateTime(Timestamp createTime) {
+        this.createTime = createTime;
+    }
+}

+ 8 - 0
src/main/java/com/mooctest/crowd/domain/exception/AccountNotExistException.java

@@ -0,0 +1,8 @@
+package com.mooctest.crowd.domain.exception;
+
+/**
+ * @Author: xuexb
+ * @Date: 2019.7.5 14:36
+ */
+public class AccountNotExistException extends Exception {
+}

+ 8 - 0
src/main/java/com/mooctest/crowd/domain/exception/PasswordErrorException.java

@@ -0,0 +1,8 @@
+package com.mooctest.crowd.domain.exception;
+
+/**
+ * @Author: xuexb
+ * @Date: 2019.7.5 14:47
+ */
+public class PasswordErrorException extends Throwable {
+}

+ 8 - 0
src/main/java/com/mooctest/crowd/domain/exception/TestProjectNotExistException.java

@@ -0,0 +1,8 @@
+package com.mooctest.crowd.domain.exception;
+
+/**
+ * @author guochao
+ * @date 2019/7/6 22:10
+ */
+public class TestProjectNotExistException extends Throwable {
+}

+ 13 - 0
src/main/java/com/mooctest/crowd/domain/factory/AccountFactory.java

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

+ 13 - 0
src/main/java/com/mooctest/crowd/domain/factory/TestProjectFactory.java

@@ -0,0 +1,13 @@
+package com.mooctest.crowd.domain.factory;
+
+import com.mooctest.crowd.domain.domainobject.TestProject;
+
+/**
+ * @author guochao
+ * @date 2019/7/6 21:43
+ */
+public class TestProjectFactory {
+    public static TestProject createTestProject() {
+        return new TestProject();
+    }
+}

+ 46 - 0
src/main/java/com/mooctest/crowd/domain/repository/AccountUTRepo.java

@@ -0,0 +1,46 @@
+package com.mooctest.crowd.domain.repository;
+
+import com.mooctest.crowd.domain.domainobject.Account;
+import com.mooctest.crowd.domain.exception.AccountNotExistException;
+
+import java.util.List;
+
+/**
+ * @Author: xuexb
+ * @Date: 2019.7.5 14:28
+ */
+public class AccountUTRepo implements IAccountRepo {
+    public Account getByMobileNum(String mobileNum) throws AccountNotExistException {
+        if (mobileNum.equals("EXIST_ACCOUNT")) {
+            Account account = new Account();
+            account.setMobileNum("EXIST_ACCOUNT");
+            account.setPassword("PASSWORD");
+            return account;
+        }
+        throw new AccountNotExistException();
+    }
+
+    public Account getByID(String id) {
+        return null;
+    }
+
+    public List<Account> getByIDList(String[] ids) {
+        return null;
+    }
+
+    public void addAccount(Account account) {
+
+    }
+
+    public void addAccounts(List<Account> accounts) {
+
+    }
+
+    public void removeAccount(Account account) {
+
+    }
+
+    public void updateAccount(Account account) {
+
+    }
+}

+ 22 - 0
src/main/java/com/mooctest/crowd/domain/repository/IAccountRepo.java

@@ -0,0 +1,22 @@
+package com.mooctest.crowd.domain.repository;
+
+import com.mooctest.crowd.domain.domainobject.Account;
+import com.mooctest.crowd.domain.exception.AccountNotExistException;
+
+import java.util.List;
+
+/**
+ * @Author: xuexb
+ * @Date: 2019.7.5 14:58
+ */
+public interface IAccountRepo {
+    Account getByMobileNum(String mobileNum) throws AccountNotExistException;
+    Account getByID(String id);
+    List<Account> getByIDList(String[] ids);
+
+    void addAccount(Account account);
+    void addAccounts(List<Account> accounts);
+
+    void removeAccount(Account account);
+    void updateAccount(Account account);
+}

+ 25 - 0
src/main/java/com/mooctest/crowd/domain/repository/ITestProjectRepo.java

@@ -0,0 +1,25 @@
+package com.mooctest.crowd.domain.repository;
+
+import com.mooctest.crowd.domain.command.TestProjectCommand;
+import com.mooctest.crowd.domain.domainobject.TestProject;
+import com.mooctest.crowd.domain.exception.TestProjectNotExistException;
+
+import java.util.List;
+
+/**
+ * @author guochao
+ * @date 2019/7/6 19:10
+ */
+public interface ITestProjectRepo {
+    TestProject getByID(Long id) throws TestProjectNotExistException;
+
+    List<TestProject> getByIDList(String[] ids);
+
+    TestProject addTestProject(TestProjectCommand cmd);
+
+    void addTestProjects(List<TestProject> testProjects);
+
+    boolean removeTestProject(TestProject testProject) throws TestProjectNotExistException;
+
+    boolean updateTestProject(TestProject testProject) throws TestProjectNotExistException;
+}

+ 88 - 0
src/main/java/com/mooctest/crowd/domain/repository/TestProjectRepo.java

@@ -0,0 +1,88 @@
+package com.mooctest.crowd.domain.repository;
+
+import com.mooctest.crowd.domain.command.TestProjectCommand;
+import com.mooctest.crowd.domain.domainobject.TestProject;
+import com.mooctest.crowd.domain.exception.TestProjectNotExistException;
+import com.mooctest.crowd.domain.factory.TestProjectFactory;
+
+import java.io.File;
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.List;
+
+/**
+ * @author guochao
+ * @date 2019/7/6 19:09
+ */
+public class TestProjectRepo implements ITestProjectRepo{
+
+    public TestProject getByID(Long id) throws TestProjectNotExistException {
+        if(id.equals(new Long(10001))){
+            TestProject testProject = new TestProject();
+            testProject.setId(id);
+            testProject.setName("PROJECT_ONE");
+            testProject.setDescription("DESCRIPTION");
+            testProject.setProjectFile(new File("PROJECTFILE.TXT"));
+            testProject.setRequirement(new File("REQUIREMENT.TXT"));
+            testProject.setQuotedPrice(200.00);
+            testProject.setCreatTime(new Date());
+            return testProject;
+        }
+        throw new TestProjectNotExistException();
+    }
+
+    public List<TestProject> getByIDList(String[] ids) {
+        return null;
+    }
+
+    public TestProject addTestProject(TestProjectCommand cmd) {
+        TestProject testProject = TestProjectFactory.createTestProject();
+        testProject.setId(new Long(10001));
+        testProject.setName(cmd.getName());
+        testProject.setDescription(cmd.getDescription());
+        testProject.setProjectFile(cmd.getProjectFile());
+        testProject.setRequirement(cmd.getRequirement());
+        testProject.setCreatTime(cmd.getCreatTime());
+        testProject.setQuotedPrice(cmd.getQuotedPrice());
+        return testProject;
+    }
+
+    public void addTestProjects(List<TestProject> testProjects) {
+
+    }
+
+    public boolean removeTestProject(TestProject testProject) throws TestProjectNotExistException {
+        if(testProject.getId().equals(new Long(10001))){
+            return true;
+        }
+        throw new TestProjectNotExistException();
+    }
+
+    public boolean updateTestProject(TestProject testProject) throws TestProjectNotExistException {
+        TestProject oldTestProject = new TestProject();
+        oldTestProject.setId(new Long(10001));
+        if(oldTestProject.getId().equals(testProject.getId())){
+            oldTestProject = testProject;
+            return true;
+        }
+        throw new TestProjectNotExistException();
+    }
+    public boolean updateTestProjectList(List<TestProject> testProjects) throws TestProjectNotExistException {
+        List<TestProject> oldTestProjects = new ArrayList<TestProject>();
+//        TestProject testProject1 = new TestProject();
+//        testProject1.setId(new Long(10001));
+//        TestProject testProject2 = new TestProject();
+//        testProject2.setId(new Long(10002));
+//        oldTestProjects.add(testProject1);
+//        oldTestProjects.add(testProject2);
+        for (TestProject testProject : testProjects){
+            if (testProject.getId().equals(new Long(10001)) || testProject.getId().equals(new Long(10002))){
+                oldTestProjects.add(testProject);
+            }else{
+                throw new TestProjectNotExistException();
+            }
+        }
+        return true;
+
+    }
+}

+ 18 - 0
src/main/java/com/mooctest/crowd/domain/service/RegisterService.java

@@ -0,0 +1,18 @@
+package com.mooctest.crowd.domain.service;
+
+import com.mooctest.crowd.domain.command.RegisterCommand;
+import com.mooctest.crowd.domain.domainobject.Account;
+import com.mooctest.crowd.domain.factory.AccountFactory;
+
+/**
+ * @Author: xuexb
+ * @Date: 2019.7.5 14:05
+ */
+public class RegisterService {
+
+    public static Account register(RegisterCommand cmd) {
+        Account account = AccountFactory.createAccount();
+        account.setMobileNum(cmd.getMobileNum());
+        return account;
+    }
+}

+ 105 - 0
src/test/java/com/mooctest/crowd/domain/domainobject/AccountTest.java

@@ -0,0 +1,105 @@
+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.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 {
+
+    @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");
+        AccountUTRepo accountUTRepo = new AccountUTRepo();
+        Account account = accountUTRepo.getByMobileNum(modifyPasswordCommand.getMobileNum());
+//        Account account1 = this.getSuccessAccount();
+        // action
+        boolean result = account.modifyPassword(modifyPasswordCommand);
+        // assert
+        assertTrue(result);
+    }
+
+    @Test
+    public void should_return_permissions_when_account_login_success() throws AccountNotExistException {
+        // arrange
+//        LoginCommand loginCommand = this.getSuccessLoginCommand();
+        Account account = this.getSuccessAccount();
+        // action
+        List<Permission> permissions = account.distributePermission();
+        // assert
+        assertEquals(permissions.get(0).getId(),new Long(10001));
+    }
+
+    @Test
+    public void should_return_roles_when_account_login_success() throws AccountNotExistException {
+        // arrange
+//        LoginCommand loginCommand = this.getSuccessLoginCommand();
+        Account account = this.getSuccessAccount();
+        // action
+        List<Role> roles = account.distributeRole();
+        // assert
+        assertEquals(roles.get(0).getId(),new Long(10001));
+    }
+
+    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());
+    }
+}

+ 169 - 0
src/test/java/com/mooctest/crowd/domain/domainobject/GeneralUserTest.java

@@ -0,0 +1,169 @@
+package com.mooctest.crowd.domain.domainobject;
+
+import com.mooctest.crowd.domain.command.TestProjectCommand;
+import com.mooctest.crowd.domain.exception.TestProjectNotExistException;
+import com.mooctest.crowd.domain.repository.TestProjectRepo;
+import org.junit.Test;
+
+import java.io.File;
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.List;
+
+import static org.junit.Assert.*;
+
+/**
+ * @author guochao
+ * @date 2019/7/6 18:17
+ */
+public class GeneralUserTest {
+
+    @Test
+    public void should_return_success_when_create_test_project_success(){
+        // arrange
+        TestProjectCommand testProjectCommand = new TestProjectCommand();
+        testProjectCommand.setName("PROJECT_ONE");
+        testProjectCommand.setDescription("DESCRIPTION");
+        testProjectCommand.setProjectFile(new File("PROJECTFILE.TXT"));
+        testProjectCommand.setRequirement(new File("REQUIREMENT.TXT"));
+        testProjectCommand.setQuotedPrice(200.00);
+        testProjectCommand.setCreatTime(new Date());
+        TestProjectRepo testProjectRepo = new TestProjectRepo();
+
+        // action
+        TestProject testProject = testProjectRepo.addTestProject(testProjectCommand);
+
+        // assert
+        assertNotNull(testProject);
+        assertEquals(testProject.getName(),testProjectCommand.getName());
+    }
+
+    @Test
+    public void should_return_test_project_when_test_project_exist() throws TestProjectNotExistException {
+        // arrange
+        TestProjectCommand testProjectCommand = new TestProjectCommand();
+        testProjectCommand.setId(new Long(10001));
+        TestProjectRepo testProjectRepo = new TestProjectRepo();
+        // action
+        TestProject testProject = testProjectRepo.getByID(testProjectCommand.getId());
+
+        // assert
+        assertNotNull(testProject);
+    }
+
+    @Test(expected = TestProjectNotExistException.class)
+    public void should_throw_when_test_project_not_exist() throws TestProjectNotExistException {
+        // arrange
+        TestProjectCommand testProjectCommand = new TestProjectCommand();
+        testProjectCommand.setId(new Long(10002));
+        TestProjectRepo testProjectRepo = new TestProjectRepo();
+        // action
+        TestProject testProject = testProjectRepo.getByID(testProjectCommand.getId());
+    }
+
+    @Test
+    public void should_return_true_when_remove_test_project_success() throws TestProjectNotExistException {
+        // arrange
+        TestProject testProject = createTestProject();
+        TestProjectRepo testProjectRepo = new TestProjectRepo();
+
+        // action
+        boolean result = testProjectRepo.removeTestProject(testProject);
+
+        // assert
+        assertTrue(result);
+    }
+
+    @Test(expected = TestProjectNotExistException.class)
+    public void should_throw_when_remove_not_exist_test_project() throws TestProjectNotExistException {
+        // arrange
+        TestProject testProject = new TestProject();
+        testProject.setId(new Long(10002));
+        TestProjectRepo testProjectRepo = new TestProjectRepo();
+
+        // action
+        boolean result = testProjectRepo.removeTestProject(testProject);
+    }
+
+    @Test
+    public void should_return_true_when_update_test_project_success() throws TestProjectNotExistException {
+        // arrange
+        TestProject testProject = createTestProject();
+        TestProjectRepo testProjectRepo = new TestProjectRepo();
+
+        // action
+        boolean result = testProjectRepo.updateTestProject(testProject);
+
+        // assert
+        assertTrue(result);
+    }
+
+    @Test(expected = TestProjectNotExistException.class)
+    public void should_throw_when_update_test_project_not_exist() throws TestProjectNotExistException {
+        // arrange
+        TestProject testProject = new TestProject();
+        testProject.setId(new Long(10002));
+        TestProjectRepo testProjectRepo = new TestProjectRepo();
+
+        // action
+        testProjectRepo.updateTestProject(testProject);
+    }
+
+    @Test
+    public void should_return_ture_when_update_test_project_list_success() throws TestProjectNotExistException {
+        // arrange
+        List<TestProject> testProjects = new ArrayList<TestProject>();
+        TestProject testProject1 = createTestProject();
+        testProjects.add(testProject1);
+        TestProject testProject = new TestProject();
+        testProject.setId(new Long(10002));
+        testProject.setName("PROJECT_TWO");
+        testProject.setDescription("DESCRIPTION");
+        testProject.setProjectFile(new File("PROJECTFILE.TXT"));
+        testProject.setRequirement(new File("REQUIREMENT.TXT"));
+        testProject.setQuotedPrice(200.00);
+        testProject.setCreatTime(new Date());
+        testProjects.add(testProject);
+        TestProjectRepo testProjectRepo = new TestProjectRepo();
+
+        // action
+        boolean result = testProjectRepo.updateTestProjectList(testProjects);
+
+        // assert
+        assertTrue(result);
+    }
+
+    @Test(expected = TestProjectNotExistException.class)
+    public void should_throw_when_update_test_project_list_not_exist() throws TestProjectNotExistException {
+        // arrange
+        List<TestProject> testProjects = new ArrayList<TestProject>();
+        TestProject testProject1 = createTestProject();
+        testProjects.add(testProject1);
+        TestProject testProject = new TestProject();
+        testProject.setId(new Long(10003));
+        testProject.setName("PROJECT_TWO");
+        testProject.setDescription("DESCRIPTION");
+        testProject.setProjectFile(new File("PROJECTFILE.TXT"));
+        testProject.setRequirement(new File("REQUIREMENT.TXT"));
+        testProject.setQuotedPrice(200.00);
+        testProject.setCreatTime(new Date());
+        testProjects.add(testProject);
+        TestProjectRepo testProjectRepo = new TestProjectRepo();
+
+        // action
+        boolean result = testProjectRepo.updateTestProjectList(testProjects);
+    }
+
+    private TestProject createTestProject(){
+        TestProject testProject = new TestProject();
+        testProject.setId(new Long(10001));
+        testProject.setName("PROJECT_ONE");
+        testProject.setDescription("DESCRIPTION");
+        testProject.setProjectFile(new File("PROJECTFILE.TXT"));
+        testProject.setRequirement(new File("REQUIREMENT.TXT"));
+        testProject.setQuotedPrice(200.00);
+        testProject.setCreatTime(new Date());
+        return testProject;
+    }
+
+}

+ 46 - 0
src/test/java/com/mooctest/crowd/domain/service/RegisterServiceTest.java

@@ -0,0 +1,46 @@
+package com.mooctest.crowd.domain.service;
+
+import com.mooctest.crowd.domain.command.RegisterCommand;
+import com.mooctest.crowd.domain.domainobject.Account;
+
+import static org.junit.Assert.*;
+
+/**
+ * @Author: xuexb
+ * @Date: 2019.7.5 14:09
+ */
+public class RegisterServiceTest {
+
+    @org.junit.Test
+    public void should_register_success_when_user_register_by_mobile_num() {
+        // arrange
+        RegisterCommand registerCommand = new RegisterCommand();
+        registerCommand.setMobileNum("18652040322");
+        registerCommand.setCheckCode("XXXX");
+        registerCommand.setPassword("12341324");
+
+        // action
+        Account newAccount = RegisterService.register(registerCommand);
+
+        // assert
+        assertNotNull(newAccount);
+        assertEquals(registerCommand.getMobileNum(), newAccount.getMobileNum());
+
+    }
+    @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");
+
+        // action
+        Account newAccount = RegisterService.register(registerCommand);
+
+        // assert
+        assertNotNull(newAccount);
+        assertEquals(registerCommand.getMobileNum(), newAccount.getMobileNum());
+
+    }
+}