Преглед изворни кода

Merge branch 'feature-V2.0' into 'Dev'

Feature v2.0

See merge request crowd-2019/crowd-test-service-backend!84
郭超 пре 5 година
родитељ
комит
3d19c97862
56 измењених фајлова са 603 додато и 281 уклоњено
  1. 2 7
      core/src/main/java/com/mooctest/crowd/domain/IpAddress/AddressUtils.java
  2. 5 7
      core/src/main/java/com/mooctest/crowd/domain/IpAddress/Area.java
  3. 6 0
      core/src/main/java/com/mooctest/crowd/domain/dao/BankLogoDao.java
  4. 1 0
      core/src/main/java/com/mooctest/crowd/domain/dao/UserDao.java
  5. 20 0
      core/src/main/java/com/mooctest/crowd/domain/dao/UserTaskCountDao.java
  6. 1 0
      core/src/main/java/com/mooctest/crowd/domain/domainobject/ApplicationType.java
  7. 6 17
      core/src/main/java/com/mooctest/crowd/domain/domainobject/EnterpriseAuthentication.java
  8. 1 1
      core/src/main/java/com/mooctest/crowd/domain/domainobject/Expert.java
  9. 1 0
      core/src/main/java/com/mooctest/crowd/domain/domainobject/Field.java
  10. 1 1
      core/src/main/java/com/mooctest/crowd/domain/domainobject/ResourceStatus.java
  11. 1 0
      core/src/main/java/com/mooctest/crowd/domain/domainobject/TestType.java
  12. 25 0
      core/src/main/java/com/mooctest/crowd/domain/domainobject/UserTaskCount.java
  13. 3 0
      core/src/main/java/com/mooctest/crowd/domain/model/ApplicationTypePO.java
  14. 19 14
      core/src/main/java/com/mooctest/crowd/domain/model/EnterpriseAuthenticationPO.java
  15. 3 0
      core/src/main/java/com/mooctest/crowd/domain/model/ExpertPO.java
  16. 3 0
      core/src/main/java/com/mooctest/crowd/domain/model/FieldPO.java
  17. 6 2
      core/src/main/java/com/mooctest/crowd/domain/model/PersonalAuthenticationPO.java
  18. 3 0
      core/src/main/java/com/mooctest/crowd/domain/model/TestTypePO.java
  19. 27 0
      core/src/main/java/com/mooctest/crowd/domain/model/UserTaskCountPO.java
  20. 2 0
      core/src/main/java/com/mooctest/crowd/domain/repository/IUserRepo.java
  21. 35 2
      core/src/main/java/com/mooctest/crowd/domain/repository/UserRepo.java
  22. 0 1
      site/src/main/java/com/mooctest/crowd/site/command/ApplyAgencyAuthCommand.java
  23. 15 9
      site/src/main/java/com/mooctest/crowd/site/command/ApplyEnterpriseAuthCommand.java
  24. 16 0
      site/src/main/java/com/mooctest/crowd/site/command/TestCommand.java
  25. 2 0
      site/src/main/java/com/mooctest/crowd/site/constants/CommonConstant.java
  26. 0 0
      site/src/main/java/com/mooctest/crowd/site/controller/CommonController.java
  27. 2 7
      site/src/main/java/com/mooctest/crowd/site/controller/CrowTestSquareController.java
  28. 10 0
      site/src/main/java/com/mooctest/crowd/site/controller/PersonalDataController.java
  29. 1 1
      site/src/main/java/com/mooctest/crowd/site/controller/TechnicalArticlesController.java
  30. 15 16
      site/src/main/java/com/mooctest/crowd/site/controller/UserController.java
  31. 2 0
      site/src/main/java/com/mooctest/crowd/site/data/dto/BankCardDTO.java
  32. 1 1
      site/src/main/java/com/mooctest/crowd/site/data/dto/MyCrowdDTO.java
  33. 0 1
      site/src/main/java/com/mooctest/crowd/site/data/dto/QualificationDTO.java
  34. 7 5
      site/src/main/java/com/mooctest/crowd/site/data/enums/RoleType.java
  35. 4 2
      site/src/main/java/com/mooctest/crowd/site/data/vo/ApplicationTypeVO.java
  36. 0 1
      site/src/main/java/com/mooctest/crowd/site/data/vo/BankCardVO.java
  37. 1 7
      site/src/main/java/com/mooctest/crowd/site/data/vo/BankLogoVO.java
  38. 0 22
      site/src/main/java/com/mooctest/crowd/site/data/vo/CrowdTaskDataVO.java
  39. 2 0
      site/src/main/java/com/mooctest/crowd/site/data/vo/ExpertVO.java
  40. 2 0
      site/src/main/java/com/mooctest/crowd/site/data/vo/FieldVO.java
  41. 2 0
      site/src/main/java/com/mooctest/crowd/site/data/vo/TestTypeVO.java
  42. 19 0
      site/src/main/java/com/mooctest/crowd/site/data/vo/UserTaskCountVO.java
  43. 0 2
      site/src/main/java/com/mooctest/crowd/site/data/vo/UserVO.java
  44. 19 13
      site/src/main/java/com/mooctest/crowd/site/mediator/ViewMediator.java
  45. 225 105
      site/src/main/java/com/mooctest/crowd/site/mediator/impl/WebMediatorImpl.java
  46. 3 1
      site/src/main/java/com/mooctest/crowd/site/service/CommonService.java
  47. 4 0
      site/src/main/java/com/mooctest/crowd/site/service/PersonalDataService.java
  48. 18 21
      site/src/main/java/com/mooctest/crowd/site/service/impl/AgencyServiceImpl.java
  49. 7 2
      site/src/main/java/com/mooctest/crowd/site/service/impl/CommonServiceImpl.java
  50. 31 0
      site/src/main/java/com/mooctest/crowd/site/service/impl/CrowdProjectServiceImpl.java
  51. 1 1
      site/src/main/java/com/mooctest/crowd/site/service/impl/CrowdTestSquareServiceImpl.java
  52. 10 0
      site/src/main/java/com/mooctest/crowd/site/service/impl/PersonalDataServiceImpl.java
  53. 11 11
      site/src/main/java/com/mooctest/crowd/site/service/impl/ThemeSchedulerServiceImpl.java
  54. 0 0
      site/src/main/java/com/mooctest/crowd/site/service/impl/UserServiceImpl.java
  55. 1 0
      site/src/main/java/com/mooctest/crowd/site/util/DataUtils.java
  56. 1 1
      site/src/main/resources/application.yml

+ 2 - 7
core/src/main/java/com/mooctest/crowd/domain/IpAddress/AddressUtils.java

@@ -188,13 +188,8 @@ public class AddressUtils {
         log.info("返回数据================="+returnStr);
         JSONObject jsonObject = JSONObject.parseObject(returnStr);
         String  address=jsonObject.getString("addr");
-        Area  area=new Area(jsonObject.getString("pro"),jsonObject.getString("city"));
-        return  area;
-
-
-
-
-
+        Area area=new Area(jsonObject.getString("pro"),jsonObject.getString("city"));
+        return area;
     }
 
     // 这里我们举的例子是获取所在地省份名称,也可以改变上边getAddress的返回值,获取具体的市县名

+ 5 - 7
core/src/main/java/com/mooctest/crowd/domain/IpAddress/Area.java

@@ -11,14 +11,12 @@ import lombok.Data;
 @Data
 public class Area {
 
-    private  String pro;//省
-    private  String city;
+    private String pro;//省
+    private String city;
 
-
-
-    public  Area(String pro,String city){
-        this.pro=pro;
-        this.city=city;
+    public Area(String pro, String city) {
+        this.pro = pro;
+        this.city = city;
     }
 
 }

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

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

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

@@ -6,6 +6,7 @@ import org.springframework.data.repository.CrudRepository;
 import org.springframework.data.repository.PagingAndSortingRepository;
 
 import javax.transaction.Transactional;
+import java.util.List;
 import java.util.Optional;
 
 @Transactional

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

@@ -0,0 +1,20 @@
+package com.mooctest.crowd.domain.dao;
+
+import com.mooctest.crowd.domain.model.UserTaskCountPO;
+import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
+import org.springframework.data.repository.CrudRepository;
+
+import javax.transaction.Transactional;
+import java.util.List;
+import java.util.Optional;
+
+@Transactional
+public interface UserTaskCountDao extends CrudRepository<UserTaskCountPO, Long>, JpaSpecificationExecutor<UserTaskCountPO> {
+
+    Optional<UserTaskCountPO> findByUserId(Long userId);
+
+    List<UserTaskCountPO> findByType(Long type);
+
+    Optional<UserTaskCountPO> findById(Long id);
+
+}

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

@@ -15,5 +15,6 @@ public class ApplicationType {
     private String name;
     private String image;
     private List<TestType> testTypeList;
+    private String introduction;
     private Long count;
 }

+ 6 - 17
core/src/main/java/com/mooctest/crowd/domain/domainobject/EnterpriseAuthentication.java

@@ -13,6 +13,8 @@ import java.sql.Timestamp;
  */
 @Data
 public class EnterpriseAuthentication {
+    private  String isDaOrEa;//是研发机构还是评测机构
+    private  String   enterpriseName;
     private Long id;
     private Long userId;
     private String IDCardNum;//身份证号码
@@ -20,8 +22,9 @@ public class EnterpriseAuthentication {
     private String businessLicensePhoto;
     private String unifiedSocialCreditCode;
     private String sex;//2.0新加性别
-    private String IDcardPositivePhoto;//身份证正面照
-    private String IDCardBackPhoto;//身份证反面照
+    private String idCardPositivePhoto;//身份证正面照
+    private String idCardBackPhoto;//身份证反面照
+    private String address;
     private int isDeleted;
     private int isAuthentication;
     private String explain;
@@ -29,21 +32,7 @@ public class EnterpriseAuthentication {
     private Timestamp checkTime;
     private Timestamp IDCardDeadTime;//身份证过期时间
 
-    @Override
-    public String toString() {
-        return "CompanyAuth{" +
-                "id=" + id +
-                ", userId=" + userId +
-                ", legalPersonName='" + legalPersonName + '\'' +
-                ", businessLicensePhoto='" + businessLicensePhoto + '\'' +
-                ", unifiedSocialCreditCode='" + unifiedSocialCreditCode + '\'' +
-                ", isDeleted=" + isDeleted +
-                ", isAuthentication=" + isAuthentication +
-                ", explain=" + explain +
-                ", applyTime='" + applyTime + '\'' +
-                ", checkTime='" + checkTime + '\'' +
-                '}';
-    }
+
 
     public EnterpriseAuthentication getByPo(EnterpriseAuthenticationPO enterpriseAuthenticationPO) {
         this.applyTime = enterpriseAuthenticationPO.getApplyTime();

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

@@ -12,5 +12,5 @@ public class Expert {
     private String name;
     private String photo;
     private String introduction;
-
+    private String title;
 }

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

@@ -11,4 +11,5 @@ public class Field {
     private Long id;
     private String code;
     private String name;
+    private String introduction;
 }

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

@@ -5,5 +5,5 @@ public class ResourceStatus {
     public static final int R_FREE = 0;  //空闲
     public static final int R_OCCUPY = 1; //占用
     public static final int R_USABLE = 2; //可用
-    public static final int R_FAULT = 4; //故障
+    public static final int R_FAULT = 3; //故障
 }

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

@@ -11,4 +11,5 @@ public class TestType {
     private Long id;
     private String code;
     private String name;
+    private String introduction;
 }

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

@@ -0,0 +1,25 @@
+package com.mooctest.crowd.domain.domainobject;
+
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+/**
+ * @author guochao
+ * @date 2019/7/6 17:54
+ */
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+public class UserTaskCount {
+    private Long id;
+    private Long userId;
+    private Long count;
+    private Long type;
+
+    public UserTaskCount(Long userId, Long count, Long type) {
+        this.userId = userId;
+        this.count = count;
+        this.type = type;
+    }
+}

+ 3 - 0
core/src/main/java/com/mooctest/crowd/domain/model/ApplicationTypePO.java

@@ -25,6 +25,9 @@ public class ApplicationTypePO {
     @Column(name = "AT_IMAGE")
     private String image;
 
+    @Column(name="AT_INTRODUCTION")
+    private String introduction;
+
     @Column(name="AT_COUNT")
     private Long count;
 }

+ 19 - 14
core/src/main/java/com/mooctest/crowd/domain/model/EnterpriseAuthenticationPO.java

@@ -11,49 +11,54 @@ import java.sql.Timestamp;
  */
 @Data
 @Entity
-@Table(name = "enterprise_authentication")
+@Table(name = "develop_authentication")
 public class EnterpriseAuthenticationPO {
 
     @Id
-    @Column(name = "EA_ID")
+    @Column(name = "DA_ID")
     @GeneratedValue(strategy = GenerationType.IDENTITY)
     private Long id;
 
-    @Column(name = "EA_USER_ID")
+    @Column(name = "DA_USER_ID")
     private Long userId;
 
-    @Column(name = "EA_ENTERPRISE_NAME")
+    @Column(name = "DA_NAME")
     private String enterpriseName;
 
-    @Column(name = "EA_LEGAL_PERSON_NAME")
+    @Column(name = "DA_LEGAL_PERSON_NAME")
     private String legalPersonName;
 
-    @Column(name = "EA_BUSINESS_LICENSE_PHOTO")
+    @Column(name = "DA_BUSINESS_LICENSE_PHOTO")
     private String businessLicensePhoto;
 
-    @Column(name = "EA_UNIFIED_SOCIAL_CREDIT_CODE")
+    @Column(name = "DA_UNIFIED_SOCIAL_CREDIT_CODE")
     private String unifiedSocialCreditCode;
 
-    @Column(name = "EA_BANK_ACCOUNT")
+    @Column(name = "DA_BANK_ACCOUNT")
     private String bankAccount;
 
-    @Column(name = "EA_ADDRESS")
+    @Column(name = "DA_ADDRESS")
     private String address;
 
-    @Column(name = "EA_IS_DELETED")
+    @Column(name = "DA_IS_DELETED")
     private int isDeleted;
 
-    @Column(name = "EA_IS_AUTHENTICATION")
+    @Column(name = "DA_IS_AUTHENTICATION")
     private int isAuthentication;
 
-    @Column(name = "EA_NOT_PASS_EXPLAIN")
+    @Column(name = "DA_NOT_PASS_EXPLAIN")
     private String explain;
 
-    @Column(name = "EA_CHECK_TIME")
+    @Column(name = "DA_CHECK_TIME")
     private Timestamp checkTime;
 
-    @Column(name = "EA_APPLY_TIME")
+    @Column(name = "DA_APPLY_TIME")
     private Timestamp applyTime;
 
 
+    @Column(name = "DA_ID_CARD_BACK_PHOTO")
+    private String idCardBackPhoto;
+    @Column(name = "DA_ID_CARD_POS_PHOTO")
+    private String idCardPositivePhoto;
+
 }

+ 3 - 0
core/src/main/java/com/mooctest/crowd/domain/model/ExpertPO.java

@@ -22,6 +22,9 @@ public class ExpertPO {
     @Column(name = "E_PHOTO")
     private String photo;
 
+    @Column(name = "E_TITLE")
+    private String title;
+
     @Column(name = "E_INTRODUCTION")
     private String introduction;
     

+ 3 - 0
core/src/main/java/com/mooctest/crowd/domain/model/FieldPO.java

@@ -21,4 +21,7 @@ public class FieldPO {
 
     @Column(name = "F_NAME")
     private String name;
+
+    @Column(name = "F_INTRODUCTION")
+    private String introduction;
 }

+ 6 - 2
core/src/main/java/com/mooctest/crowd/domain/model/PersonalAuthenticationPO.java

@@ -53,16 +53,20 @@ public class PersonalAuthenticationPO {
     private Timestamp checkTime;
 
     @Column(name = "PA_ID_CARD_POS_PHOTO")
-    private String  idCardPositivePhoto;//身份证正面照片
+    private String  IDCardPositivePhoto;//身份证正面照片
 
 
     @Column(name = "PA_ID_CARD_BACK_PHOTO")
-    private String  idCardBackPhoto;//身份证正面照片
+    private String  IDCardBackPhoto;//身份证正面照片
 
 
     @Column(name = "PA_EXPIRE_TIME")
     private Timestamp  IDCardDeadTime;
 
 
+    @Column(name = "PA_Sex")
+    private  String  sex;
+
+
 
 }

+ 3 - 0
core/src/main/java/com/mooctest/crowd/domain/model/TestTypePO.java

@@ -21,4 +21,7 @@ public class TestTypePO {
 
     @Column(name = "TT_NAME")
     private String name;
+
+    @Column(name = "TT_INTRODUCTION")
+    private String introduction;
 }

+ 27 - 0
core/src/main/java/com/mooctest/crowd/domain/model/UserTaskCountPO.java

@@ -0,0 +1,27 @@
+package com.mooctest.crowd.domain.model;
+
+import lombok.Data;
+
+import javax.persistence.*;
+
+/**
+ * @author guochao
+ * @date 2019/7/6 17:54
+ */
+@Data
+@Entity(name = "user_task_count")
+public class UserTaskCountPO {
+    @Id
+    @Column(name = "UTC_ID")
+    @GeneratedValue(strategy = GenerationType.IDENTITY)
+    private Long id;
+
+    @Column(name = "UTC_USER_ID")
+    private Long userId;
+
+    @Column(name = "UTC_COUNT")
+    private Long count;
+
+    @Column(name = "UTC_TYPE")
+    private Long type;
+}

+ 2 - 0
core/src/main/java/com/mooctest/crowd/domain/repository/IUserRepo.java

@@ -18,6 +18,8 @@ public interface IUserRepo {
 
     User getByID(Long id) throws UserNotExistException, RoleNotFoundException;
 
+    User getByIDJustInfo(Long userId) throws UserNotExistException, RoleNotFoundException;
+
     List<User> getByIdList(List<Long> ids) throws RoleNotFoundException;
 
     List<User> getAllUser() throws RoleNotFoundException;

+ 35 - 2
core/src/main/java/com/mooctest/crowd/domain/repository/UserRepo.java

@@ -12,6 +12,7 @@ import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Component;
 
+import javax.security.auth.login.Configuration;
 import java.sql.Timestamp;
 import java.util.ArrayList;
 import java.util.List;
@@ -24,6 +25,8 @@ import java.util.Optional;
 
 @Component
 public class UserRepo implements IUserRepo {
+    @Autowired
+    private  EvaluationAgencyDao agencyDao;
 
     @Autowired
     private UserDao userDao;
@@ -78,6 +81,16 @@ public class UserRepo implements IUserRepo {
     }
 
     @Override
+    public User getByIDJustInfo(Long userId) throws UserNotExistException, RoleNotFoundException {
+        Optional<UserPO> userPOOptional = userDao.findById(userId);
+        if (!userPOOptional.isPresent()) {
+            throw new UserNotExistException("用户不存在");
+        }else{
+            return Converter.convert(User.class, userPOOptional.get());
+        }
+    }
+
+    @Override
     public User getByMobileNum(String mobileNum) throws UserNotExistException, RoleNotFoundException {
         UserPO userPO = userDao.findByMobile(mobileNum);
         if (userPO == null) {
@@ -262,14 +275,34 @@ public class UserRepo implements IUserRepo {
 
         /*实名认证保存个人信息*/
         if(user.getPersonalAuthentication() != null){
-            personalAuthenticationDao.save(Converter.convert(PersonalAuthenticationPO.class, user.getPersonalAuthentication()));
+            System.out.println("认证消息为==========="+user.getPersonalAuthentication());
+            PersonalAuthenticationPO authenticationPO = Converter.convert(PersonalAuthenticationPO.class, user.getPersonalAuthentication());
+            System.out.println("认证消息为PO==========="+authenticationPO);
+            personalAuthenticationDao.save(authenticationPO);
         }
 
         /*企业认证保存企业信息*/
         if(user.getEnterpriseAuthentication() != null){
-            enterpriseAuthenticationDao.save(Converter.convert(EnterpriseAuthenticationPO.class, user.getEnterpriseAuthentication()));
+            if(user.getEnterpriseAuthentication().getIsDaOrEa().equals("研发机构")){
+                System.out.println("认证消息为==========="+user.getPersonalAuthentication());
+                EnterpriseAuthenticationPO authenticationPO = Converter.convert(EnterpriseAuthenticationPO.class, user.getEnterpriseAuthentication());
+                System.out.println("认证消息为PO==========="+authenticationPO);
+            enterpriseAuthenticationDao.save(authenticationPO);
         }
 
+
+            else if(user.getEnterpriseAuthentication().getIsDaOrEa().equals("评测机构")){
+                EvaluationAgencyPO evaluationAgencyPO=new EvaluationAgencyPO();
+                 evaluationAgencyPO.setUserId(user.getId());
+                 evaluationAgencyPO.setAddress(user.getEnterpriseAuthentication().getAddress());
+                 evaluationAgencyPO.setEvaluationAgencyName(user.getEnterpriseAuthentication().getEnterpriseName());
+                 evaluationAgencyPO.setUpdateTime(new Timestamp(System.currentTimeMillis()));
+                agencyDao.save(evaluationAgencyPO);
+            }
+
+
+            }
+
         return getByID(userPO.getId());
     }
 

+ 0 - 1
site/src/main/java/com/mooctest/crowd/site/command/ApplyAgencyAuthCommand.java

@@ -5,7 +5,6 @@ import com.mooctest.crowd.domain.domainobject.EvaluationAgencyAbility;
 import com.mooctest.crowd.domain.factory.UserFactory;
 import lombok.Data;
 import org.springframework.beans.BeanUtils;
-
 import javax.validation.constraints.NotNull;
 import java.util.List;
 import java.util.stream.Collectors;

+ 15 - 9
site/src/main/java/com/mooctest/crowd/site/command/ApplyEnterpriseAuthCommand.java

@@ -1,7 +1,9 @@
 package com.mooctest.crowd.site.command;
 
 import com.mooctest.crowd.domain.domainobject.EnterpriseAuthentication;
+import lombok.AllArgsConstructor;
 import lombok.Data;
+import lombok.NoArgsConstructor;
 import org.springframework.beans.BeanUtils;
 
 import javax.validation.constraints.NotNull;
@@ -13,30 +15,34 @@ import java.sql.Timestamp;
  * @date 2019-08-28 01:20
  */
 @Data
+@AllArgsConstructor
+@NoArgsConstructor
 public class ApplyEnterpriseAuthCommand {
 
+    @NotNull(message = "请选择认证研发机构或者评测机构")
+    private String isDaOrEa;
     @NotNull(message = "企业法人姓名不可为空")
     private String legalPersonName;
     @NotNull(message = "请上传营业执照")
     private String businessLicensePhoto;
     @NotNull(message = "身份证号不可为空")
-    private String IDCardNum;
+    private String idCardNum;
     @NotNull(message = "地址不可为空")
     private String address;
     @NotNull(message = "请选择性别")
-    private String sex;//2.0新加性别
-//    @NotNull(message = "请上传身份证正面照")
-    private String IDCardPositivePhoto;//身份证正面照
-//    @NotNull(message = "请上传身份证反面照")
-    private String IDCardBackPhoto;//身份证反面照
-//    @NotNull(message = "请正确填写身份证过期时间")
-    private Timestamp IDCardDeadTime;
-
+    private String sex;
+    @NotNull(message = "请上传身份证正面照")
+    private String idCardPositivePhoto;//身份证正面照
+    @NotNull(message = "请上传身份证反面照")
+    private String idCardBackPhoto;//身份证反面照
+    @NotNull(message = "请正确填写身份证过期时间")
+    private Timestamp idCardDeadTime;
 
     public EnterpriseAuthentication toEnterpriseAuth() {
         EnterpriseAuthentication enterpriseAuthentication = new EnterpriseAuthentication();
         BeanUtils.copyProperties(this, enterpriseAuthentication);
         enterpriseAuthentication.setApplyTime(new Timestamp(System.currentTimeMillis()));
+        System.out.println(enterpriseAuthentication + "哈哈哈哈哈哈");
         return enterpriseAuthentication;
     }
 }

+ 16 - 0
site/src/main/java/com/mooctest/crowd/site/command/TestCommand.java

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

+ 2 - 0
site/src/main/java/com/mooctest/crowd/site/constants/CommonConstant.java

@@ -12,6 +12,8 @@ public class CommonConstant {
 
     public static final Integer SQUARE_ROWS_ON_PAGE = 9;
 
+    public static final Integer SQUARE_ROWS_ON_PAGE_MODIFY = 12;
+
     public static final Integer TECHNOLOGY_ROWS_ON_PAGE = 5;
 
     public static final Integer TEST = 3;

Разлика између датотеке није приказан због своје велике величине
+ 0 - 0
site/src/main/java/com/mooctest/crowd/site/controller/CommonController.java


+ 2 - 7
site/src/main/java/com/mooctest/crowd/site/controller/CrowTestSquareController.java

@@ -1,7 +1,6 @@
 package com.mooctest.crowd.site.controller;
 
 import com.mooctest.crowd.site.data.dto.CrowdTestSquareIndexDTO;
-import com.mooctest.crowd.site.data.dto.ProjectAndTaskDTO;
 import com.mooctest.crowd.site.data.response.ResponseVO;
 import com.mooctest.crowd.site.data.response.ServerCode;
 import com.mooctest.crowd.site.data.vo.CrowdTaskVO;
@@ -17,11 +16,7 @@ import org.springframework.data.domain.Page;
 import org.springframework.data.domain.Pageable;
 import org.springframework.web.bind.annotation.*;
 
-import java.util.ArrayList;
-import java.util.HashMap;
 import java.util.List;
-import java.util.Map;
-import java.util.concurrent.atomic.AtomicInteger;
 
 
 /**
@@ -76,7 +71,7 @@ public class CrowTestSquareController extends BaseSearchController {
      * @return
      */
 
-    @GetMapping("hotProject/list/more")
+    @PostMapping("/hotProject/list/more")
     public ResponseVO findMoreHotProjects(@RequestBody SearchConditionVO searchConditionVO) {
         Pageable pageable = this.getPageable(searchConditionVO);
         List<CrowdTestProjectVO> crowdTestProjectVOList = crowdProjectService.findAllMoreHotProjects();
@@ -91,7 +86,7 @@ public class CrowTestSquareController extends BaseSearchController {
      * @return
      */
 
-    @GetMapping("hotTasks/list/more")
+    @PostMapping("/hotTasks/list/more")
     public ResponseVO findMoreHotTasks(@RequestBody SearchConditionVO searchConditionVO) {
         Pageable pageable = this.getPageable(searchConditionVO);
         List<CrowdTaskVO> crowdTestProjectVOList = crowdTaskService.findMoreHotTasks();

+ 10 - 0
site/src/main/java/com/mooctest/crowd/site/controller/PersonalDataController.java

@@ -38,6 +38,11 @@ public class PersonalDataController {
         return  personalDataService.addQualification(userId,qualificationVO);
     }
 
+    @RequestMapping(value = "/displayone/{id:\\d+}", method = RequestMethod.GET)
+    public QualificationDTO displayOneQualification(@PathVariable("id") long id){
+        return  personalDataService.getOne(id);
+    }
+
     @RequestMapping(value = "/updatequalification/{id:\\d+}/{userId:\\d+}", method = RequestMethod.PUT)
     public QualificationDTO updateQualification(@PathVariable("id") long id, @PathVariable("userId") long userId,@RequestBody QualificationVO qualificationVO){
         return  personalDataService.updateQualification(id,userId,qualificationVO);
@@ -62,4 +67,9 @@ public class PersonalDataController {
     public BankCardDTO deleteBankCard(@PathVariable("id") long id, @PathVariable("userId") long userId){
         return  personalDataService.deleteBankCard(id,userId);
     }
+
+    @RequestMapping(value = "/banktype", method = RequestMethod.GET)
+    public BankCardDTO displayBankType(){
+        return  personalDataService.getBankType();
+    }
 }

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

@@ -70,7 +70,7 @@ public class TechnicalArticlesController extends BaseSearchController{
         return  technical.updateRanking(id);
     }
 
-    @RequestMapping(value = "/morearticles", method = RequestMethod.POST)
+    @RequestMapping(value = "/more", method = RequestMethod.POST)
     public ResponseVO<TechnicalArticlesDTO> moreArticles(@RequestBody SearchConditionVO searchConditionVO){
         Map<String, String> extraCondition = searchConditionVO.getColumnFilters()==null? new HashMap<>() :super.getExtraCondition(searchConditionVO);
         Pageable pageable = this.getMore(searchConditionVO);

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

@@ -155,7 +155,6 @@ public class UserController extends BaseController {
     }
 
 
-
     /**
      * 修改个人认证信息
      *
@@ -238,14 +237,15 @@ public class UserController extends BaseController {
      * @return
      */
     @LoginRequired
-    @RequestMapping(value = "/user/{userId}/enterpriseAuth", method = RequestMethod.POST)
-    public EnterpriseAuthVO applyEnterpriseAuth(@PathVariable("userId") Long userId,
-                                                @Validated @RequestBody ApplyEnterpriseAuthCommand command,
-                                                BindingResult result, HttpSession session) {
-        if (!userId.equals(Long.parseLong((String) session.getAttribute("userId"))))
-            throw new UnauthorizedException("没有权限对他人账号进行操作!");
-        if (result.hasErrors())
-            throw new BaseException(result.getFieldError().getDefaultMessage());
+    @PostMapping(value = "/user/{userId}/enterpriseAuth")
+    public EnterpriseAuthVO test(@PathVariable("userId") Long userId,
+                                 @Validated @RequestBody ApplyEnterpriseAuthCommand command,
+                                 BindingResult result, HttpSession session){
+//        if (!userId.equals(Long.parseLong((String) session.getAttribute("userId"))))
+//            throw new UnauthorizedException("没有权限对他人账号进行操作!");
+//        if (result.hasErrors())
+//            throw new BaseException(result.getFieldError().getDefaultMessage());
+        System.out.println(command);
         return userService.applyEnterpriseAuth(userId, command);
     }
 
@@ -308,17 +308,16 @@ public class UserController extends BaseController {
 
     /**
      * 用户所在地
+     *
      * @param request
      * @return
      */
-    @RequestMapping(value = "index/address",method = RequestMethod.GET)
+    @RequestMapping(value = "index/address", method = RequestMethod.GET)
     public Area getAddressByIp(HttpServletRequest request) throws UnsupportedEncodingException {
-         String ip=DataUtils.getClientIp(request);
-         LOG.info("ip地址是========"+ip);
-          Area   area= AddressUtils.getProvinceName(ip);
-         return  area;
-
-
+        String ip = DataUtils.getClientIp(request);
+        LOG.info("ip地址是========" + ip);
+        Area area = AddressUtils.getProvinceName(ip);
+        return area;
     }
 
 }

+ 2 - 0
site/src/main/java/com/mooctest/crowd/site/data/dto/BankCardDTO.java

@@ -1,6 +1,7 @@
 package com.mooctest.crowd.site.data.dto;
 
 import com.mooctest.crowd.site.data.vo.BankCardVO;
+import com.mooctest.crowd.site.data.vo.BankLogoVO;
 import lombok.Data;
 
 import java.util.List;
@@ -9,4 +10,5 @@ import java.util.List;
 public class BankCardDTO {
     private BankCardVO bankCardVO;
     private List<BankCardVO> bankCardVOList;
+    private List<BankLogoVO>  bankLogoVOList;
 }

+ 1 - 1
site/src/main/java/com/mooctest/crowd/site/data/dto/MyCrowdDTO.java

@@ -20,8 +20,8 @@ public class MyCrowdDTO implements Serializable {
     private List<CrowdProjectVO> myProjects;
     private List<CrowdProjectVO> handlingProjects;
     private List<CrowdProjectVO> acceptableProjects;
+    private List<CrowdProjectVO> finishedProjects;
     private Long myProjectNoticeCount;
     private Long processProjectNoticeCount;
     private Long acceptableProjectNoticeCount;
-
 }

+ 0 - 1
site/src/main/java/com/mooctest/crowd/site/data/dto/QualificationDTO.java

@@ -9,5 +9,4 @@ import java.util.List;
 public class QualificationDTO {
     private QualificationVO qualificationVO;
     private List<QualificationVO> qualificationVOList;
-
 }

+ 7 - 5
site/src/main/java/com/mooctest/crowd/site/data/enums/RoleType.java

@@ -1,7 +1,6 @@
 package com.mooctest.crowd.site.data.enums;
 
 import lombok.AllArgsConstructor;
-import lombok.Data;
 import lombok.NoArgsConstructor;
 
 /**
@@ -13,11 +12,14 @@ import lombok.NoArgsConstructor;
 @NoArgsConstructor
 public enum RoleType {
 
-    GENERAL_USER(1L, "generalUser"),
-    AGENCY(2L, "evaluationAgency"),
+    GENERAL_USER(1L, "generalUser"),        // 注册后的普通用户
+    AGENCY(2L, "evaluationAgency"),         // 注册为测评机构
     REGIONAL_MANAGER(3L, "RegionalManager"),
-    SYSTEM_ADMIN(4L, "SystemAdministrator"),
-    ENTERPRISE_USER(5L, "enterpriseUser");
+    SYSTEM_ADMIN(4L, "RegionalManager"),
+    ENTERPRISE_USER(5L, "enterpriseUser"),
+    EVALUATION_USER(6L, "evaluationUser"),  // 注册为测评用户
+    PARTY_USER(7L, "partyUser"),            // 注册为发包用户
+    PARTY_AGENCY(8L, "partyAgency");        // 注册为发包机构
 
     private Long id;
     private String name;

+ 4 - 2
site/src/main/java/com/mooctest/crowd/site/data/vo/ApplicationTypeVO.java

@@ -20,12 +20,14 @@ public class ApplicationTypeVO implements Serializable {
     private String name;
     private Long count;
     private String image;
+    private String introduction;
     private List<TestTypeVO> testTypeList;
 
-    public ApplicationTypeVO(ApplicationType applicationType){
+    public ApplicationTypeVO(ApplicationType applicationType) {
         code = applicationType.getCode();
         name = applicationType.getName();
         image = applicationType.getImage();
-        count=applicationType.getCount();
+        count = applicationType.getCount();
+        introduction = applicationType.getIntroduction();
     }
 }

+ 0 - 1
site/src/main/java/com/mooctest/crowd/site/data/vo/BankCardVO.java

@@ -14,5 +14,4 @@ public class BankCardVO {
     private String code;
     private Long userId;
     private String logoUrl;
-
 }

+ 1 - 7
site/src/main/java/com/mooctest/crowd/site/data/vo/BankLogoVO.java

@@ -4,16 +4,10 @@ import com.mooctest.crowd.domain.domainobject.BankLogo;
 import lombok.Data;
 
 
-
 @Data
 public class BankLogoVO {
+    private Long id;
     private String name;
     private  String logoUrl;
     private String code;
-
-    public BankLogoVO(BankLogo bankLogo){
-        code = bankLogo.getCode();
-        name = bankLogo.getName();
-        logoUrl=bankLogo.getLogoUrl();
-    }
 }

+ 0 - 22
site/src/main/java/com/mooctest/crowd/site/data/vo/CrowdTaskDataVO.java

@@ -1,22 +0,0 @@
-package com.mooctest.crowd.site.data.vo;
-
-import lombok.AllArgsConstructor;
-import lombok.Data;
-import lombok.NoArgsConstructor;
-
-import java.io.Serializable;
-import java.util.ArrayList;
-import java.util.List;
-
-/**
- * @Author: xuexb
- * @Date: 2019.7.15 20:36
- */
-@Data
-@NoArgsConstructor
-@AllArgsConstructor
-public class CrowdTaskDataVO implements Serializable{
-    private String code;
-    private String title;
-    private List<TaskToUserVO> taskToUserVOS = new ArrayList<>();
-}

+ 2 - 0
site/src/main/java/com/mooctest/crowd/site/data/vo/ExpertVO.java

@@ -13,11 +13,13 @@ public class ExpertVO {
     private String name;
     private String photo;
     private String introduction;
+    private String title;
 
     public ExpertVO(Expert expert){
         id = expert.getId();
         name = expert.getName();
         photo = expert.getPhoto();
         introduction = expert.getIntroduction();
+        title = expert.getTitle();
     }
 }

+ 2 - 0
site/src/main/java/com/mooctest/crowd/site/data/vo/FieldVO.java

@@ -17,9 +17,11 @@ import java.io.Serializable;
 public class FieldVO implements Serializable {
     private String code;
     private String name;
+    private String introduction;
 
     public FieldVO(Field field){
         code = field.getCode();
         name = field.getName();
+        introduction = field.getIntroduction();
     }
 }

+ 2 - 0
site/src/main/java/com/mooctest/crowd/site/data/vo/TestTypeVO.java

@@ -17,9 +17,11 @@ import java.io.Serializable;
 public class TestTypeVO implements Serializable {
     private String code;
     private String name;
+    private String introduction;
 
     public TestTypeVO(TestType testType){
         code = testType.getCode();
         name = testType.getName();
+        introduction = testType.getIntroduction();
     }
 }

+ 19 - 0
site/src/main/java/com/mooctest/crowd/site/data/vo/UserTaskCountVO.java

@@ -0,0 +1,19 @@
+package com.mooctest.crowd.site.data.vo;
+
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+/**
+ * @author guochao
+ * @date 2019/7/6 17:54
+ */
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+public class UserTaskCountVO {
+    private Long id;
+    private Long userId;
+    private Long count;
+    private Long type;
+}

+ 0 - 2
site/src/main/java/com/mooctest/crowd/site/data/vo/UserVO.java

@@ -28,9 +28,7 @@ public class UserVO implements Serializable {
     private String email;
     private String mobile;
     private String password;
-    @JsonIgnore
     private String province;
-    @JsonIgnore
     private String city;
     private String photoUrl;
     private Double allProjectPrice;

+ 19 - 13
site/src/main/java/com/mooctest/crowd/site/mediator/ViewMediator.java

@@ -23,11 +23,12 @@ public interface ViewMediator {
     List<UserVO> renderMoreUser(Pageable pageable);
 
 
-
     List<CrowdTaskVO> findMoreHotTasks();
+
     List<CrowdTestProjectVO> findMoreHotProjects();
 
     EnterpriseAuthVO getEnterpriseAuthByUserId(Long userId);
+
     PersonalAuthVO getByUserId(Long userId);
 
     UserDTO loginByMobileAndPwd(LoginCommand cmd) throws PasswordErrorException, AccountNotExistException, BadRequestException;
@@ -36,6 +37,8 @@ public interface ViewMediator {
 
     IndexDTO renderIndex();
 
+    IndexInfoDTO renderIndexInfosCache();
+
     IndexInfoDTO renderIndexInfos();
 
     MyCrowdDTO renderMyCrowd(Long userId);
@@ -63,14 +66,14 @@ public interface ViewMediator {
     List<BaseAuthVO> renderAuthedList();
 
     // 项目模糊查询
-    List<CrowdTestProjectVO>     findByNameLike(String name);
+    List<CrowdTestProjectVO> findByNameLike(String name);
 
     //任务模糊查询
-    List<CrowdTaskVO>  findTaskByNameLike(String name);
+    List<CrowdTaskVO> findTaskByNameLike(String name);
 
-    List<CrowdTestProjectVO>   crowdTestProjects();
+    List<CrowdTestProjectVO> crowdTestProjects();
 
-    List<CrowdTaskVO>    crowdTaskVos();
+    List<CrowdTaskVO> crowdTaskVos();
 
     UserDTO getInformation(long userId);
 
@@ -78,24 +81,27 @@ public interface ViewMediator {
 
     QualificationDTO getQualification(long userId);
 
-    QualificationDTO addQualification(long userId,QualificationVO qualificationVO);
+    QualificationDTO addQualification(long userId, QualificationVO qualificationVO);
 
-    QualificationDTO updateQualification(long id,long userId,QualificationVO qualificationVO);
+    QualificationDTO updateQualification(long id, long userId, QualificationVO qualificationVO);
 
-    QualificationDTO deleteQualification(long id,long userId);
+    QualificationDTO deleteQualification(long id, long userId);
 
     BankCardDTO getBankCard(long userId);
 
-    BankCardDTO addBankCard(long userId,BankCardVO bankCardVO) throws JSONException;
+    BankCardDTO addBankCard(long userId, BankCardVO bankCardVO) throws JSONException;
 
-    BankCardDTO deleteBankCard(long id,long userId);
+    BankCardDTO deleteBankCard(long id, long userId);
 
-    TechnicalArticlesDTO  updateRanking(long id);
+    TechnicalArticlesDTO updateRanking(long id);
 
-    List<ResourceVO>  getResource();
+    List<ResourceVO> getResource();
 
     ResourceVO getResourceDetailed(String code);
 
-    List<ResourceVO>  getSearchResource(String name);
+    List<ResourceVO> getSearchResource(String name);
+
+    QualificationDTO getOne(long id);
 
+    BankCardDTO getBankType();
 }

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

@@ -58,6 +58,9 @@ public class WebMediatorImpl implements ViewMediator {
     private CrowdTestTaskDao taskDao;
 
     @Autowired
+    private UserTaskCountDao userTaskCountDao;
+
+    @Autowired
     private UserDao userDao;
 
     @Autowired
@@ -114,17 +117,27 @@ public class WebMediatorImpl implements ViewMediator {
     @Override
     public List<UserVO> renderMoreUser(Pageable pageable) {
         //获取众测人员排名
-        String agencyName = agencyDao.findById(Long.parseLong(agencyId)).get().getEvaluationAgencyName();
-        List<UserVO> userVOS = taskToUserDao.findTotalCountOfUser().stream().map(rankInfo -> {
-            EvaluationAgencyPO agency = agencyDao.findByUserId(rankInfo.getEntityId());
-            if (agency != null && agency.getEvaluationAgencyName().equals(agencyName)) {
-                User user = userRepo.getByID(agency.getUserId());
-                UserVO userVO = new UserVO(user);
-                userVO.setTaskCount(rankInfo.getCount());
-                return userVO;
-            }
-            return null;
-        }).filter(Objects::nonNull).collect(Collectors.toList());
+//        String agencyName = agencyDao.findById(Long.parseLong(agencyId)).get().getEvaluationAgencyName();
+//        List<UserVO> userVOS = taskToUserDao.findTotalCountOfUser().stream().map(rankInfo -> {
+//            EvaluationAgencyPO agency = agencyDao.findByUserId(rankInfo.getEntityId());
+//            if (agency != null && agency.getEvaluationAgencyName().equals(agencyName)) {
+//                User user = userRepo.getByID(agency.getUserId());
+//                UserVO userVO = new UserVO(user);
+//                userVO.setTaskCount(rankInfo.getCount());
+//                return userVO;
+//            }
+//            return null;
+//        }).filter(Objects::nonNull).collect(Collectors.toList());
+
+
+        List<UserVO> userVOS = userTaskCountDao.findByType(RoleType.EVALUATION_USER.getId())
+                .stream().sorted(Comparator.comparing(UserTaskCountPO::getCount)).collect(Collectors.toList())
+                .stream().map(userTaskCountPO -> {
+                    User user = userRepo.getByIDJustInfo(userTaskCountPO.getUserId());
+                    UserVO userVO = new UserVO(user);
+                    userVO.setTaskCount(userTaskCountPO.getCount());
+                    return userVO;
+                }).collect(Collectors.toList());
         return userVOS;
     }
 
@@ -190,70 +203,9 @@ public class WebMediatorImpl implements ViewMediator {
     }
 
     @Override
-    public IndexInfoDTO renderIndexInfos() {
+    public IndexInfoDTO renderIndexInfosCache() {
         IndexInfoDTO indexInfoDTO = new IndexInfoDTO();
-        Pageable pageable = PageRequest.of(0, 3);
         int top = 3;
-        //获取热门众测
-        List<ApplicationTypeVO> applicationTypeRank = projectDao.findTotalCountOfApplicationType(pageable).stream().map(rankInfos -> {
-            ApplicationType applicationType = commonRepo.getApplicationTypeByAppCode(rankInfos.getCode());
-            ApplicationTypeVO applicationTypeVO = new ApplicationTypeVO(applicationType);
-            applicationTypeVO.setCount(rankInfos.getCount());
-            return applicationTypeVO;
-        }).filter(Objects::nonNull).collect(Collectors.toList());
-        List<ApplicationTypeVO> applicationTypeRanks = new ArrayList<>();
-        if (applicationTypeRanks.size() > top) {
-            for (int i = 0; i < top; i++) {
-                applicationTypeRanks.add(applicationTypeRank.get(i));
-            }
-        } else {
-            applicationTypeRanks = applicationTypeRank;
-        }
-
-        //获取机构排名
-        String agencyName = agencyDao.findById(Long.parseLong(agencyId)).get().getEvaluationAgencyName();
-        List<EvaluationAgencyVO> agencyRank = taskToUserDao.findTotalCountOfUser().stream().map(rankInfo -> {
-            EvaluationAgencyPO agency = agencyDao.findByUserId(rankInfo.getEntityId());
-            if (agency != null && !agency.getEvaluationAgencyName().equals(agencyName)) {
-                EvaluationAgencyVO agencyVO = new EvaluationAgencyVO();
-                agencyVO.setEvaluationAgencyName(agency.getEvaluationAgencyName());
-                agencyVO.setAgencyPhoto(agency.getAgencyPhoto());
-                agencyVO.setTaskCount(rankInfo.getCount());
-                agencyVO.setId(agency.getId());
-                agencyVO.setUserId(agency.getUserId());
-                return agencyVO;
-            }
-            return null;
-        }).filter(Objects::nonNull).collect(Collectors.toList());
-        List<EvaluationAgencyVO> agencyRanks = new ArrayList<>();
-        if (agencyRank.size() > top) {
-            for (int i = 0; i < top; i++) {
-                agencyRanks.add(agencyRank.get(i));
-            }
-        } else {
-            agencyRanks = agencyRank;
-        }
-
-        //获取众测人员排名
-        List<UserVO> userRank = taskToUserDao.findTotalCountOfUser().stream().map(rankInfo -> {
-            EvaluationAgencyPO agency = agencyDao.findByUserId(rankInfo.getEntityId());
-            if (agency != null && agency.getEvaluationAgencyName().equals(agencyName)) {
-                User user = userRepo.getByID(agency.getUserId());
-                UserVO userVO = new UserVO(user);
-                userVO.setTaskCount(rankInfo.getCount());
-                return userVO;
-            }
-            return null;
-        }).filter(Objects::nonNull).collect(Collectors.toList());
-        List<UserVO> userRanks = new ArrayList<>();
-        if (userRank.size() > top) {
-            for (int i = 0; i < top; i++) {
-                userRanks.add(userRank.get(i));
-            }
-        } else {
-            userRanks = userRank;
-        }
-
         // 获取大赛信息
         List<Competition> competitionList = commonRepo.getAllCompetition();
         List<Competition> competitionLists = new ArrayList<>();
@@ -278,17 +230,18 @@ public class WebMediatorImpl implements ViewMediator {
         }).collect(Collectors.toList());
 
         // 获取应用类型
-        List<ApplicationType> allApplicationType = commonRepo.getAllApplicationType();
-        List<ApplicationTypeVO> applicationTypeVOS = allApplicationType.stream().map(applicationType -> {
-            ApplicationTypeVO applicationTypeVO = new ApplicationTypeVO(applicationType);
-            List<TestType> testTypeList = commonRepo.getTestTypeListByAppCode(applicationType.getCode());
-            List<TestTypeVO> typeVOS = testTypeList.stream().map(testType -> {
-                TestTypeVO testTypeVO = new TestTypeVO(testType);
-                return testTypeVO;
-            }).collect(Collectors.toList());
-            applicationTypeVO.setTestTypeList(typeVOS);
-            return applicationTypeVO;
-        }).collect(Collectors.toList());
+        List<ApplicationTypeVO> applicationTypeVOS = commonRepo.getAllApplicationType().stream().map(ApplicationTypeVO::new).collect(Collectors.toList());
+//        List<ApplicationType> allApplicationType = commonRepo.getAllApplicationType();
+//        List<ApplicationTypeVO> applicationTypeVOS = allApplicationType.stream().map(applicationType -> {
+//            ApplicationTypeVO applicationTypeVO = new ApplicationTypeVO(applicationType);
+//            List<TestType> testTypeList = commonRepo.getTestTypeListByAppCode(applicationType.getCode());
+//            List<TestTypeVO> typeVOS = testTypeList.stream().map(testType -> {
+//                TestTypeVO testTypeVO = new TestTypeVO(testType);
+//                return testTypeVO;
+//            }).collect(Collectors.toList());
+//            applicationTypeVO.setTestTypeList(typeVOS);
+//            return applicationTypeVO;
+//        }).collect(Collectors.toList());
 
         // 获取领域划分
         List<Field> fieldList = commonRepo.getAllFieldType();
@@ -297,21 +250,7 @@ public class WebMediatorImpl implements ViewMediator {
             return fieldVO;
         }).collect(Collectors.toList());
 
-        // 获取资源和工具
-        List<Resource> resourceList = commonRepo.getAllResource();
-        List<ResourceVO> resourceVOS = resourceList.stream().map(resource -> {
-            ResourceVO resourceVO = new ResourceVO(resource);
-            return resourceVO;
-        }).collect(Collectors.toList());
-
         // 获取入驻品牌机构
-        List<Partner> partnerList = commonRepo.getAllPartner();
-        List<PartnerVO> partnerVOS = partnerList.stream().map(partner -> {
-            PartnerVO partnerVO = new PartnerVO(partner);
-            return partnerVO;
-        }).collect(Collectors.toList());
-
-        // 获取合作机构
         List<ResidentAgency> allResidentAgency = commonRepo.getAllResidentAgency();
         List<EvaluationAgencyVO> agencyVOS = allResidentAgency.stream().map(residentAgency -> {
             EvaluationAgency agency = evaluationAgencyRepo.findAgencyById(residentAgency.getAgencyId());
@@ -319,16 +258,123 @@ public class WebMediatorImpl implements ViewMediator {
             return evalutionAgencyVO;
         }).collect(Collectors.toList());
 
-        indexInfoDTO.setApplicationTypeRank(applicationTypeRanks);
-        indexInfoDTO.setAgencyRank(agencyRanks);
-        indexInfoDTO.setUserRank(userRanks);
+        // 获取合作机构
+//        List<Partner> partnerList = commonRepo.getAllPartner();
+//        List<PartnerVO> partnerVOS = partnerList.stream().map(partner -> {
+//            PartnerVO partnerVO = new PartnerVO(partner);
+//            return partnerVO;
+//        }).collect(Collectors.toList());
+
         indexInfoDTO.setTestTypeList(testTypeVOS);
         indexInfoDTO.setApplicationTypeList(applicationTypeVOS);
         indexInfoDTO.setFieldList(fieldVOS);
         indexInfoDTO.setCompetitionList(competitionVOS);
-        indexInfoDTO.setResourceList(resourceVOS);
         indexInfoDTO.setResidentAgencyList(agencyVOS);
-        indexInfoDTO.setPartnerList(partnerVOS);
+//        indexInfoDTO.setPartnerList(partnerVOS);
+        return indexInfoDTO;
+    }
+
+    @Override
+    public IndexInfoDTO renderIndexInfos() {
+        IndexInfoDTO indexInfoDTO = new IndexInfoDTO();
+        Pageable pageable = PageRequest.of(0, 3);
+        int top = 3;
+        //获取热门众测
+        List<ApplicationTypeVO> applicationTypeRank = projectDao.findTotalCountOfApplicationType(pageable).stream().map(rankInfos -> {
+            ApplicationType applicationType = commonRepo.getApplicationTypeByAppCode(rankInfos.getCode());
+            ApplicationTypeVO applicationTypeVO = new ApplicationTypeVO(applicationType);
+            applicationTypeVO.setCount(rankInfos.getCount());
+            return applicationTypeVO;
+        }).filter(Objects::nonNull).collect(Collectors.toList());
+        List<ApplicationTypeVO> applicationTypeRanks = new ArrayList<>();
+        if (applicationTypeRanks.size() > top) {
+            for (int i = 0; i < top; i++) {
+                applicationTypeRanks.add(applicationTypeRank.get(i));
+            }
+        } else {
+            applicationTypeRanks = applicationTypeRank;
+        }
+
+        //获取机构排名
+//        String agencyName = agencyDao.findById(Long.parseLong(agencyId)).get().getEvaluationAgencyName();
+//        List<EvaluationAgencyVO> agencyRank = taskToUserDao.findTotalCountOfUser().stream().map(rankInfo -> {
+//            EvaluationAgencyPO agency = agencyDao.findByUserId(rankInfo.getEntityId());
+//            if (agency != null && !agency.getEvaluationAgencyName().equals(agencyName)) {
+//                EvaluationAgencyVO agencyVO = new EvaluationAgencyVO();
+//                agencyVO.setEvaluationAgencyName(agency.getEvaluationAgencyName());
+//                agencyVO.setAgencyPhoto(agency.getAgencyPhoto());
+//                agencyVO.setTaskCount(rankInfo.getCount());
+//                agencyVO.setId(agency.getId());
+//                agencyVO.setUserId(agency.getUserId());
+//                return agencyVO;
+//            }
+//            return null;
+//        }).filter(Objects::nonNull).collect(Collectors.toList());
+
+        List<EvaluationAgencyVO> agencyRanks = userTaskCountDao.findByType(RoleType.AGENCY.getId())
+                .stream().sorted(Comparator.comparing(UserTaskCountPO::getCount)).limit(top).collect(Collectors.toList())
+                .stream().map(userTaskCountPO -> {
+                    EvaluationAgencyPO agency = agencyDao.findByUserId(userTaskCountPO.getUserId());
+                    EvaluationAgencyVO agencyVO = new EvaluationAgencyVO();
+                    agencyVO.setAgencyPhoto(agency.getAgencyPhoto());
+                    agencyVO.setTaskCount(userTaskCountPO.getCount());
+                    agencyVO.setId(agency.getId());
+                    agencyVO.setUserId(agency.getUserId());
+                    agencyVO.setEvaluationAgencyName(agency.getEvaluationAgencyName());
+                    return agencyVO;
+                }).collect(Collectors.toList());
+
+//        List<EvaluationAgencyVO> agencyRanks = new ArrayList<>();
+//        if (agencyRank.size() > top) {
+//            for (int i = 0; i < top; i++) {
+//                agencyRanks.add(agencyRank.get(i));
+//            }
+//        } else {
+//            agencyRanks = agencyRank;
+//        }
+
+        //获取众测人员排名
+//        List<UserVO> userRank = taskToUserDao.findTotalCountOfUser().stream().map(rankInfo -> {
+//            EvaluationAgencyPO agency = agencyDao.findByUserId(rankInfo.getEntityId());
+//            if (agency != null && agency.getEvaluationAgencyName().equals(agencyName)) {
+//                User user = userRepo.getByID(agency.getUserId());
+//                UserVO userVO = new UserVO(user);
+//                userVO.setTaskCount(rankInfo.getCount());
+//                return userVO;
+//            }
+//            return null;
+//        }).filter(Objects::nonNull).collect(Collectors.toList());
+
+        List<UserVO> userRanks = userTaskCountDao.findByType(RoleType.EVALUATION_USER.getId())
+                .stream().sorted(Comparator.comparing(UserTaskCountPO::getCount)).limit(top).collect(Collectors.toList())
+                .stream().map(userTaskCountPO -> {
+            User user = userRepo.getByIDJustInfo(userTaskCountPO.getUserId());
+            UserVO userVO = new UserVO(user);
+            userVO.setTaskCount(userTaskCountPO.getCount());
+            return userVO;
+        }).collect(Collectors.toList());
+
+//        List<UserVO> userRanks = new ArrayList<>();
+//        if (userRank.size() > top) {
+//            for (int i = 0; i < top; i++) {
+//                userRanks.add(userRank.get(i));
+//            }
+//        } else {
+//            userRanks = userRank;
+//        }
+
+        // 获取资源和工具
+        List<Resource> resourceList = commonRepo.getAllResource();
+        List<ResourceVO> resourceVOS = resourceList.stream().map(resource -> {
+            ResourceVO resourceVO = new ResourceVO(resource);
+            return resourceVO;
+        }).collect(Collectors.toList());
+
+        indexInfoDTO.setApplicationTypeRank(applicationTypeRanks);
+        indexInfoDTO.setAgencyRank(agencyRanks);
+        indexInfoDTO.setUserRank(userRanks);
+        indexInfoDTO.setResourceList(resourceVOS);
+
         return indexInfoDTO;
     }
 
@@ -921,6 +967,13 @@ public class WebMediatorImpl implements ViewMediator {
         authingList.addAll(projectDao.findAll().stream().map(crowdTestProjectPO -> {
             CrowdTestProject crowdTestProject = new CrowdTestProject();
             BeanUtils.copyProperties(crowdTestProjectPO, crowdTestProject);
+            // 应用类型值的转换
+            Optional<ApplicationTypePO> applicationTypePO = applicationTypeDao.findByCode(crowdTestProject.getApplicationType());
+            if (applicationTypePO.isPresent()) {
+                crowdTestProject.setApplicationType(applicationTypePO.get().getName());
+            } else {
+                throw new HttpBadRequestException("请选择应用类型");
+            }
             return new CrowdTestProjectVO(crowdTestProject);
 
         }).collect(Collectors.toList()));
@@ -1003,6 +1056,12 @@ public class WebMediatorImpl implements ViewMediator {
     @Override
     public QualificationDTO addQualification(long userId, QualificationVO qualificationVO) {
         QualificationPO qualificationPO = new QualificationPO();
+        List<QualificationPO>  qualificationPOList=qualificationDao.findByUserIdAndIsDeleted(userId, DeletedStatus.isNotDeleted);
+        for(int i=0;i<qualificationPOList.size();i++){
+            if(qualificationVO.getName().equals(qualificationPOList.get(i).getName())){
+                throw new HttpBadRequestException("资质已存在");
+            }
+        }
         qualificationPO.setName(qualificationVO.getName());
         qualificationPO.setNumber(qualificationVO.getNumber());
         qualificationPO.setLicensingAuthority(qualificationVO.getLicensingAuthority());
@@ -1041,7 +1100,18 @@ public class WebMediatorImpl implements ViewMediator {
             BankCardVO bankCardVO = new BankCardVO();
             bankCardVO.setId(bankCardPO.getId());
             bankCardVO.setUser(bankCardPO.getUser());
-            bankCardVO.setNumber(bankCardPO.getNumber());
+            int length=bankCardPO.getNumber().length();
+            int afterLength = 4;
+            String replaceSymbol = "*";
+            StringBuffer sb = new StringBuffer();
+            for (int i = 0; i < length; i++) {
+                if (i >= (length - afterLength)) {
+                            sb.append(bankCardPO.getNumber().charAt(i));
+                } else {
+                            sb.append(replaceSymbol);
+                        }
+                bankCardVO.setNumber(sb.toString());
+            }
             Optional<BankLogoPO> bankLogo = bankLogoDao.findByCode(bankCardPO.getCode());
             bankCardVO.setLogoUrl(bankLogo.get().getLogoUrl());
             bankCardVO.setName(bankLogo.get().getName());
@@ -1065,6 +1135,16 @@ public class WebMediatorImpl implements ViewMediator {
             throw new HttpBadRequestException("请输入正确的卡号");
         }
         String bank = String.valueOf(json.get("bank"));
+        Optional<BankLogoPO> bankLogoPO=bankLogoDao.findByName(bankCardVO.getName());
+        if(!bank.equals(bankLogoPO.get().getName())){
+            throw new HttpBadRequestException("请输入与选定银行一致的账号");
+        }
+        List<BankCardPO> bankCardPOList=bankCardDao.findByUserIdAndIsDeleted(userId, DeletedStatus.isNotDeleted);
+        for(int i=0;i<bankCardPOList.size();i++){
+            if(bankCardVO.getNumber().equals(bankCardPOList.get(i).getNumber())){
+                throw new HttpBadRequestException("银行卡已存在");
+            }
+        }
         bankCardPO.setUser(bankCardVO.getUser());
         bankCardPO.setNumber(bankCardVO.getNumber());
         bankCardPO.setCode(bank);
@@ -1130,7 +1210,15 @@ public class WebMediatorImpl implements ViewMediator {
         resourceVO.setUnitWork(resourcePO.get().getUnitWork());
         resourceVO.setStandard(resourcePO.get().getStandard());
         resourceVO.setUnit(resourcePO.get().getUnit());
-        resourceVO.setState(resourcePO.get().getState());
+        if(resourcePO.get().getState()==0){
+            resourceVO.setState(ResourceStatus.R_FREE);
+        }else if(resourcePO.get().getState()==1){
+            resourceVO.setState(ResourceStatus.R_OCCUPY);
+        }else if(resourcePO.get().getState()==2){
+            resourceVO.setState(ResourceStatus.R_USABLE);
+        }else {
+            resourceVO.setState(ResourceStatus.R_FAULT);
+        }
         resourceVO.setStartTime(resourcePO.get().getStartTime());
         resourceVO.setPersonnel(resourcePO.get().getPersonnel());
         resourceVO.setRemarks(resourcePO.get().getRemarks());
@@ -1163,6 +1251,38 @@ public class WebMediatorImpl implements ViewMediator {
         return results;
     }
 
+    @Override
+    public QualificationDTO getOne(long id) {
+        QualificationDTO qualificationDTO = new QualificationDTO();
+        Optional<QualificationPO> qualificationPO = qualificationDao.findById(id);
+        QualificationVO qualificationVO = new QualificationVO();
+        qualificationVO.setId(qualificationPO.get().getId());
+        qualificationVO.setName(qualificationPO.get().getName());
+        qualificationVO.setNumber(qualificationPO.get().getNumber());
+        qualificationVO.setLicensingAuthority(qualificationPO.get().getLicensingAuthority());
+        qualificationVO.setTime(qualificationPO.get().getTime());
+        qualificationVO.setIsPublic(qualificationPO.get().getIsPublic());
+        qualificationDTO.setQualificationVO(qualificationVO);
+        return qualificationDTO;
+}
+
+    @Override
+    public BankCardDTO getBankType() {
+        BankCardDTO bankCardDTO = new BankCardDTO();
+        List<BankLogoVO> bankLogoVOList = new ArrayList<>();
+        bankLogoDao.findAll().forEach(bankLogoPO -> {
+            BankLogoVO bankLogoVO = new BankLogoVO();
+            bankLogoVO.setId(bankLogoPO.getId());
+            bankLogoVO.setName(bankLogoPO.getName());
+            bankLogoVO.setLogoUrl(bankLogoPO.getLogoUrl());
+            bankLogoVO.setCode(bankLogoPO.getCode());
+            bankLogoVOList.add(bankLogoVO);
+        });
+        List<BankLogoVO> results = bankLogoVOList.stream().distinct().collect(Collectors.toList());
+        bankCardDTO.setBankLogoVOList(results);
+        return bankCardDTO;
+    }
+
     private ProjectOperationControl initProjectPermission(CrowdTestProject project, User user) {
         ProjectOperationControl operationControl = new ProjectOperationControl();
         if (user == null)

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

@@ -22,7 +22,9 @@ public interface CommonService {
 
     UserDataDTO getPersonCrowdData(Long userId);
 
-    IndexInfoDTO getIndexInfos(Long userId);
+    IndexInfoDTO getIndexInfosCache(Long userId);
+
+    IndexInfoDTO getIndexInfosNoCache();
 
     IndexPageDTO getIndexPageInfo(Pageable pageable, Map<String, String> extraCondition, String keyword, int deletedStatus);
 

+ 4 - 0
site/src/main/java/com/mooctest/crowd/site/service/PersonalDataService.java

@@ -27,4 +27,8 @@ public interface PersonalDataService {
     BankCardDTO addBankCard(long userId,BankCardVO bankCardVO) throws JSONException;
 
     BankCardDTO deleteBankCard(long id,long userId);
+
+    QualificationDTO getOne(long id);
+
+    BankCardDTO getBankType();
 }

+ 18 - 21
site/src/main/java/com/mooctest/crowd/site/service/impl/AgencyServiceImpl.java

@@ -3,6 +3,7 @@ package com.mooctest.crowd.site.service.impl;
 import com.mooctest.crowd.domain.dao.EvaluationAgencyDao;
 import com.mooctest.crowd.domain.dao.TaskToUserDao;
 import com.mooctest.crowd.domain.dao.UserDao;
+import com.mooctest.crowd.domain.dao.UserTaskCountDao;
 import com.mooctest.crowd.domain.domainobject.*;
 import com.mooctest.crowd.domain.exception.BaseException;
 import com.mooctest.crowd.domain.exception.EvaluationAgencyNotExistException;
@@ -10,7 +11,7 @@ import com.mooctest.crowd.domain.exception.HttpBadRequestException;
 import com.mooctest.crowd.domain.exception.UserNotExistException;
 import com.mooctest.crowd.domain.model.EvaluationAgencyPO;
 import com.mooctest.crowd.domain.model.RankCountInfo;
-import com.mooctest.crowd.domain.model.UserPO;
+import com.mooctest.crowd.domain.model.UserTaskCountPO;
 import com.mooctest.crowd.domain.repository.EvaluationAgencyRepo;
 import com.mooctest.crowd.domain.repository.UserRepo;
 import com.mooctest.crowd.site.anticorruption.UserAntiCorruption;
@@ -19,6 +20,7 @@ import com.mooctest.crowd.site.command.AgencyResourceCommand;
 import com.mooctest.crowd.site.command.ApplyAgencyAuthCommand;
 import com.mooctest.crowd.site.command.GenerateAgencyCommand;
 import com.mooctest.crowd.site.data.dto.UserDTO;
+import com.mooctest.crowd.site.data.enums.RoleType;
 import com.mooctest.crowd.site.data.vo.AgencyVO;
 import com.mooctest.crowd.site.data.vo.EvaluationAgencyVO;
 import com.mooctest.crowd.site.data.vo.UserVO;
@@ -61,6 +63,8 @@ public class AgencyServiceImpl implements AgencyService {
     private TaskToUserDao taskToUserDao;
     @Autowired
     private EvaluationAgencyDao agencyDao;
+    @Autowired
+    private UserTaskCountDao userTaskCountDao;
 
     @Value("${agency}")
     private String agencyId;
@@ -89,26 +93,19 @@ public class AgencyServiceImpl implements AgencyService {
 
     @Override
     public List<EvaluationAgencyVO> findMoreAgencyVO(String keyword) {
-        List<EvaluationAgencyVO> list = new ArrayList<EvaluationAgencyVO>();//机构列表
-        List<RankCountInfo> rankInfos = taskToUserDao.findTotalCountOfUser();//用户接包信息
-        String agencyName = agencyDao.findById(Long.parseLong(agencyId)).get().getEvaluationAgencyName();
-        for (int i = 0; i < rankInfos.size(); i++) {
-            Optional<UserPO> user = userDao.findById(rankInfos.get(i).getEntityId());
-            EvaluationAgencyPO evaluationAgencyPO = agencyDao.findByUserId(rankInfos.get(i).getEntityId());
-            if (evaluationAgencyPO != null && !evaluationAgencyPO.getEvaluationAgencyName().equals(agencyName)) {
-                if(keyword != null && keyword != ""){
-                    if(!evaluationAgencyPO.getEvaluationAgencyName().contains(keyword)){
-                        continue;
-                    }
-                }
-                EvaluationAgency evaluationAgency = new EvaluationAgency(evaluationAgencyPO);
-                EvaluationAgencyVO evalutionAgencyVO = new EvaluationAgencyVO(evaluationAgency);
-                evalutionAgencyVO.setTaskCount(rankInfos.get(i).getCount());
-                evalutionAgencyVO.setAddress(evaluationAgency.getAddress());
-//                evalutionAgencyVO.setAddress((user.get().getProvince() + user.get().getCity()).replaceAll("null", ""));
-                list.add(evalutionAgencyVO);
-            }
-        }
+        List<EvaluationAgencyVO> list = userTaskCountDao.findByType(RoleType.AGENCY.getId())
+                .stream().sorted(Comparator.comparing(UserTaskCountPO::getCount)).collect(Collectors.toList())
+                .stream().map(userTaskCountPO -> {
+                    EvaluationAgencyPO agency = agencyDao.findByUserId(userTaskCountPO.getUserId());
+                    EvaluationAgencyVO agencyVO = new EvaluationAgencyVO();
+                    agencyVO.setAgencyPhoto(agency.getAgencyPhoto());
+                    agencyVO.setTaskCount(userTaskCountPO.getCount());
+                    agencyVO.setId(agency.getId());
+                    agencyVO.setUserId(agency.getUserId());
+                    agencyVO.setEvaluationAgencyName(agency.getEvaluationAgencyName());
+                    agencyVO.setAddress(agency.getAddress());
+                    return agencyVO;
+                }).collect(Collectors.toList());
         return list.stream().sorted(Comparator.comparing(EvaluationAgencyVO::getTaskCount).reversed()).collect(Collectors.toList());
     }
 

+ 7 - 2
site/src/main/java/com/mooctest/crowd/site/service/impl/CommonServiceImpl.java

@@ -54,7 +54,6 @@ public class CommonServiceImpl implements CommonService {
 
     @Override
     public List<UserVO> getMoreUser(Pageable pageable) {
-
         return  viewMediator.renderMoreUser(pageable);
     }
 
@@ -75,7 +74,13 @@ public class CommonServiceImpl implements CommonService {
 
     @Override
     @Cacheable(value = "userCache",key = "#userId")
-    public IndexInfoDTO getIndexInfos(Long userId){
+    public IndexInfoDTO getIndexInfosCache(Long userId){
+        IndexInfoDTO indexInfoDTO = viewMediator.renderIndexInfosCache();
+        return indexInfoDTO;
+    }
+
+    @Override
+    public IndexInfoDTO getIndexInfosNoCache(){
         IndexInfoDTO indexInfoDTO = viewMediator.renderIndexInfos();
         return indexInfoDTO;
     }

+ 31 - 0
site/src/main/java/com/mooctest/crowd/site/service/impl/CrowdProjectServiceImpl.java

@@ -4,17 +4,21 @@ import com.google.common.collect.Lists;
 import com.mooctest.crowd.domain.dao.ApplicationTypeDao;
 import com.mooctest.crowd.domain.dao.FieldDao;
 import com.mooctest.crowd.domain.dao.TestTypeDao;
+import com.mooctest.crowd.domain.dao.UserTaskCountDao;
 import com.mooctest.crowd.domain.domainobject.*;
 import com.mooctest.crowd.domain.exception.BadRequestException;
 import com.mooctest.crowd.domain.exception.BaseException;
 import com.mooctest.crowd.domain.exception.Excel2ProjectException;
 import com.mooctest.crowd.domain.factory.CrowdTestProjectFactory;
+import com.mooctest.crowd.domain.model.UserTaskCountPO;
 import com.mooctest.crowd.domain.repository.CrowdTestProjectRepo;
 import com.mooctest.crowd.domain.repository.UserRepo;
+import com.mooctest.crowd.domain.util.Converter;
 import com.mooctest.crowd.site.command.CrowdTestProjectCommand;
 import com.mooctest.crowd.site.command.GenerateProjectCommand;
 import com.mooctest.crowd.site.data.dto.ProjectDetailsDTO;
 import com.mooctest.crowd.site.data.enums.ProjectType;
+import com.mooctest.crowd.site.data.enums.RoleType;
 import com.mooctest.crowd.site.data.vo.CrowdProjectVO;
 import com.mooctest.crowd.site.data.vo.CrowdTestProjectVO;
 import com.mooctest.crowd.site.data.vo.RegionalManagerVO;
@@ -37,6 +41,7 @@ import java.sql.Timestamp;
 import java.util.ArrayList;
 import java.util.Comparator;
 import java.util.List;
+import java.util.Optional;
 import java.util.regex.Matcher;
 import java.util.regex.Pattern;
 import java.util.regex.PatternSyntaxException;
@@ -71,6 +76,9 @@ public class CrowdProjectServiceImpl implements CrowdProjectService {
 
     @Autowired
     private FieldDao fieldDao;
+    
+    @Autowired
+    private UserTaskCountDao userTaskCountDao;
 
     @Autowired
     private ThemeSchedulerService themeSchedulerService;
@@ -310,6 +318,28 @@ public class CrowdProjectServiceImpl implements CrowdProjectService {
     @Override
     public ProjectDetailsDTO confirmFinished(String projectCode, Long userId) {
         CrowdTestProject project = projectRepo.getByProjectCode(projectCode);
+
+        // 更新项目下测评机构或者测试人员的接包次数
+        project.getCrowdTestTaskList().stream().map(crowdTestTask -> {
+            List<TaskToUser> acceptedUserList = crowdTestTask.getAcceptedUserList();
+            acceptedUserList.stream().map(taskToUser -> {
+                User user = userRepo.getByID(taskToUser.getUserId());
+                // 对用户判断认证类型 测评机构为1 测试人员为2
+
+                Optional<UserTaskCountPO> userTaskCountPOOptional = userTaskCountDao.findByUserId(user.getId());
+                if(!userTaskCountPOOptional.isPresent()){
+                    UserTaskCount userTaskCount = new UserTaskCount(user.getId(), 1L, RoleType.EVALUATION_USER.getId());
+                    userTaskCountDao.save(Converter.convert(UserTaskCountPO.class, userTaskCount));
+                }else{
+                    UserTaskCountPO userTaskCountPO = userTaskCountPOOptional.get();
+                    userTaskCountPO.setCount(userTaskCountPO.getCount()+1);
+                    userTaskCountDao.save(userTaskCountPO);
+                }
+                return null;
+            });
+            return null;
+        }).collect(Collectors.toList());
+
         project.finishCrowdTestProject(userRepo.getByID(userId));
         projectRepo.saveCrowdTestProject(project);
         return getProjectDetails(projectCode, userId);
@@ -362,6 +392,7 @@ public class CrowdProjectServiceImpl implements CrowdProjectService {
 
     @Override
     public List<CrowdTestProject> getByProject() {
+
         return projectRepo.getByProject();
     }
 

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

@@ -74,7 +74,7 @@ public class CrowdTestSquareServiceImpl implements CrowdTestSquareService {
                 }
             }
         }
-        return new PageRequest(activePage - 1, CommonConstant.SQUARE_ROWS_ON_PAGE, sort);
+        return new PageRequest(activePage - 1, CommonConstant.SQUARE_ROWS_ON_PAGE_MODIFY, sort);
     }
 
     Map<String, String> getExtraCondition(SearchConditionVO searchConditionVO) {

+ 10 - 0
site/src/main/java/com/mooctest/crowd/site/service/impl/PersonalDataServiceImpl.java

@@ -62,4 +62,14 @@ public class PersonalDataServiceImpl implements PersonalDataService {
     public BankCardDTO deleteBankCard(long id, long userId) {
         return viewMediator.deleteBankCard(id,userId);
     }
+
+    @Override
+    public QualificationDTO getOne(long id) {
+        return viewMediator.getOne(id);
+    }
+
+    @Override
+    public BankCardDTO getBankType() {
+        return viewMediator.getBankType();
+    }
 }

+ 11 - 11
site/src/main/java/com/mooctest/crowd/site/service/impl/ThemeSchedulerServiceImpl.java

@@ -43,24 +43,24 @@ public class ThemeSchedulerServiceImpl implements ThemeSchedulerService {
         return false;
     }
 
-    public String generateNextCronExp(CrowdTestProject themeDetail) {
+    public String generateNextCronExp(CrowdTestProject crowdTestProject) {
         String cronExp = null;
         String dateFormat="ss mm HH dd MM EE";
         SimpleDateFormat sdf = new SimpleDateFormat(dateFormat, Locale.US);
         Date now = new Date();
-        if(now.before(themeDetail.getCreateTime())) {
-            cronExp = sdf.format(themeDetail.getCreateTime());
-        } else if(now.before(themeDetail.getDeadTime())){
-            cronExp = sdf.format(themeDetail.getDeadTime());
+        if(now.before(crowdTestProject.getCreateTime())) {
+            cronExp = sdf.format(crowdTestProject.getCreateTime());
+        } else if(now.before(crowdTestProject.getDeadTime())){
+            cronExp = sdf.format(crowdTestProject.getDeadTime());
         }
         return cronExp;
     }
     @Override
-    public boolean cancelThemeScheduler(CrowdTestProject themeDetail) {
-        if(this.map.containsKey(themeDetail)) {
-            ThemeScheduler themeDetailScheduler = map.get(themeDetail);
+    public boolean cancelThemeScheduler(CrowdTestProject crowdTestProject) {
+        if(this.map.containsKey(crowdTestProject)) {
+            ThemeScheduler themeDetailScheduler = map.get(crowdTestProject);
             themeDetailScheduler.stopCron();
-            map.remove(themeDetail);
+            map.remove(crowdTestProject);
             return true;
         }
         return false;
@@ -98,12 +98,12 @@ public class ThemeSchedulerServiceImpl implements ThemeSchedulerService {
 
             public MyRunnable() {}
 
-            public MyRunnable (CrowdTestProject themeDetail) {
+            public MyRunnable (CrowdTestProject crowdTestProject) {
                 this.crowdTestProject = crowdTestProject;
             }
-
             @Override
             public void run() {
+                System.out.println("ThemeScheduler " + this.crowdTestProject.getName() + " updateStatus," + new Date());
                 Integer result = themeStatusService.updateStatus(this.crowdTestProject);
                 map.remove(crowdTestProject);
                 if(result.equals(CrowdTestProject.HAS_CREATED) || result.equals(CrowdTestProject.HAS_RELEASED)) {

Разлика између датотеке није приказан због своје велике величине
+ 0 - 0
site/src/main/java/com/mooctest/crowd/site/service/impl/UserServiceImpl.java


+ 1 - 0
site/src/main/java/com/mooctest/crowd/site/util/DataUtils.java

@@ -73,6 +73,7 @@ public class DataUtils {
         String ipAddress = null;
         try {
             ipAddress = request.getHeader("x-forwarded-for");
+            System.out.println("ipAddress " + ipAddress);
             if (ipAddress == null || ipAddress.length() == 0 || "unknown".equalsIgnoreCase(ipAddress)) {
                 ipAddress = request.getHeader("Proxy-Client-IP");
             }

+ 1 - 1
site/src/main/resources/application.yml

@@ -56,7 +56,7 @@ oss:
 
 cache:
   expire:
-    duration: 72000
+    duration: 120
 
 agency: 7
 

Неке датотеке нису приказане због велике количине промена