Browse Source

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

Feature v2.0

See merge request crowd-2019/crowd-test-service-backend!167
郭超 4 years ago
parent
commit
105ede55d4

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

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

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

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

+ 23 - 0
core/src/main/java/com/mooctest/crowd/domain/model/ConfigurationPO.java

@@ -0,0 +1,23 @@
+package com.mooctest.crowd.domain.model;
+
+import lombok.Data;
+
+import javax.persistence.*;
+
+/**
+ * @author guochao
+ */
+@Data
+@Entity(name = "configuration")
+public class ConfigurationPO {
+    @Id
+    @Column(name = "CF_ID")
+    @GeneratedValue(strategy = GenerationType.IDENTITY)
+    private Long id;
+
+    @Column(name = "CF_NAME")
+    private String name;
+
+    @Column(name = "CF_VALUE")
+    private String value;
+}

+ 12 - 2
core/src/main/java/com/mooctest/crowd/domain/repository/CommonRepo.java

@@ -63,6 +63,9 @@ public class CommonRepo {
     @Autowired
     private CrowdTestProjectDao crowdTestProjectDao;
 
+    @Autowired
+    private ConfigurationDao configurationDao;
+
     public List<TestType> getAllTestType() {
         return testTypeDao.findAll().stream().map(testTypePO -> Converter.convert(TestType.class, testTypePO)).collect(Collectors.toList());
     }
@@ -207,7 +210,7 @@ public class CommonRepo {
     public List<CrowdTestProject> getProjectList(Pageable pageable, String code, String keyword) {
         Specifications<CrowdTestProjectPO> where = Specifications.where(getCode(code, keyword));
         //添加排序
-        Sort sort = new Sort(Sort.Direction.ASC,"status");
+        Sort sort = new Sort(Sort.Direction.ASC, "status");
         return crowdTestProjectDao.findAll(where, sort).stream().map(crowdTestProjectPO -> Converter.convert(CrowdTestProject.class, crowdTestProjectPO)).collect(Collectors.toList());
     }
 
@@ -237,7 +240,7 @@ public class CommonRepo {
                     predicatesList.add(codePredicate);
                 }
                 if (keyword != null && keyword != "") {
-                    Predicate namePredicate = cb.like(root.get("name"), '%'+StringUtils.trim(keyword)+'%');
+                    Predicate namePredicate = cb.like(root.get("name"), '%' + StringUtils.trim(keyword) + '%');
                     predicatesList.add(namePredicate);
                 }
                 //最终将查询条件拼好然后return
@@ -269,9 +272,16 @@ public class CommonRepo {
         return applicationTypePO.get().getName();
     }
 
+    public Map<String, String> getConfigurationListMap() {
+        return configurationDao.findAll().stream()
+                .collect(Collectors.toMap(configurationPO -> configurationPO.getName(), configurationPO -> configurationPO.getValue()));
+    }
+
+
     public Map<String, String> getApplicationCodeNameMap() {
         return applicationTypeDao.findAll().stream()
                 .collect(Collectors.toMap(applicationTypePO -> applicationTypePO.getCode(), applicationTypePO -> applicationTypePO.getName()));
+
     }
 
     public String getFieldCodeByFieldName(String name) {

+ 3 - 0
core/src/main/java/com/mooctest/crowd/domain/repository/IToolRepo.java

@@ -4,9 +4,12 @@ import com.mooctest.crowd.domain.domainobject.Tool;
 import org.springframework.data.domain.Page;
 import org.springframework.data.domain.Pageable;
 
+import java.util.List;
+
 
 public interface IToolRepo {
 
     Page<Tool> getAllTool(Pageable pageable, String keyword);
 
+    List<Tool> getAllTools();
 }

+ 7 - 0
core/src/main/java/com/mooctest/crowd/domain/repository/ToolRepo.java

@@ -18,6 +18,8 @@ import javax.persistence.criteria.CriteriaBuilder;
 import javax.persistence.criteria.CriteriaQuery;
 import javax.persistence.criteria.Predicate;
 import javax.persistence.criteria.Root;
+import java.util.List;
+import java.util.stream.Collectors;
 
 @Slf4j
 @Component
@@ -28,6 +30,11 @@ public class ToolRepo implements IToolRepo{
     private ToolDao toolDao;
 
     @Override
+    public List<Tool> getAllTools() {
+        return toolDao.findAll().stream().map(toolPO -> Converter.convert(Tool.class, toolPO)).collect(Collectors.toList());
+    }
+
+    @Override
     public Page<Tool> getAllTool(Pageable pageable, String keyword) {
         Specifications<ToolPO> where =  Specifications.where(getToolByIsNotDeleted(keyword));
         return toolDao.findAll(where, pageable).map(ToolPO->Converter.convert(Tool.class, ToolPO));

+ 0 - 42
core/src/main/resources/application.yml

@@ -1,42 +0,0 @@
-spring:
-  cache:
-    guava:
-      spec: expireAfterWrite=30s
-  datasource:
-#    type: com.alibaba.druid.pool.DruidDataSource
-#    druid:
-#      initial-size: 5
-#      max-active: 20
-    driver-class-name: com.mysql.jdbc.Driver
-    url: jdbc:mysql://101.37.175.111:3306/crowd-test-service?useSSL=false&useUnicode=yes&characterEncoding=UTF-8
-    username: mooctest
-    password: secr3t!
-    initialPoolSize: 5
-      # Keep the connection alive if idle for a long time (needed in production)
-    testWhileIdle: true
-    validationQuery: SELECT 1
-
-    minPoolSize: 5
-    maxPoolSize: 1000
-  # Show or not log for each sql query
-  jpa:
-    show-sql: true
-  # Hibernate ddl auto (create, create-drop, update)
-  hibernate:
-    ddl-auto: validate
-    #hbm2ddl.auto: update
-    # Naming strategy
-    naming-strategy: org.hibernate.cfg.ImprovedNamingStrategy
-  # The SQL dialect makes Hibernate generate better SQL for the chosen database
-  properties.hibernate.dialect: org.hibernate.dialect.MySQL5Dialect
-
-role-list:
-  general-user: 1
-  evaluation-agency: 2
-  regional-manager: 3
-  system-administrator: 4
-  enterprise-user: 5
-
-
-#swagger:
-#  enable: true

BIN
http:/mooctest-crowd-service.oss-cn-hangzhou.aliyuncs.comImage/14_79a50557-7d9b-4591-b7e6-0897a720446b_1609832754760.png


File diff suppressed because it is too large
+ 0 - 0
site/src/main/java/com/mooctest/crowd/site/controller/CommonController.java


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

@@ -20,6 +20,7 @@ public class IndexInfoDTO implements Serializable {
     private List<FieldVO> fieldList;
     private List<CompetitionVO> competitionList;
     private List<ResourceVO> resourceList;
+    private List<ToolVO> toolList;
     private List<EvaluationAgencyVO> residentAgencyList;
     private List<PartnerVO> partnerList;
 }

+ 20 - 0
site/src/main/java/com/mooctest/crowd/site/data/vo/ConfigurationVO.java

@@ -0,0 +1,20 @@
+package com.mooctest.crowd.site.data.vo;
+
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.io.Serializable;
+import java.util.Map;
+
+/**
+ * @author guochao
+ */
+@Data
+@NoArgsConstructor
+@AllArgsConstructor
+public class ConfigurationVO implements Serializable{
+    private Map<String, String> configurationList;
+
+
+}

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

@@ -7,10 +7,7 @@ import com.mooctest.crowd.domain.domainobject.*;
 import com.mooctest.crowd.domain.exception.*;
 import com.mooctest.crowd.domain.factory.CrowdTestProjectFactory;
 import com.mooctest.crowd.domain.model.*;
-import com.mooctest.crowd.domain.repository.CommonRepo;
-import com.mooctest.crowd.domain.repository.CrowdTestProjectRepo;
-import com.mooctest.crowd.domain.repository.EvaluationAgencyRepo;
-import com.mooctest.crowd.domain.repository.UserRepo;
+import com.mooctest.crowd.domain.repository.*;
 import com.mooctest.crowd.domain.util.Converter;
 import com.mooctest.crowd.site.command.ApplyEnterpriseAuthCommand;
 import com.mooctest.crowd.site.command.ApplyPersonalAuthCommand;
@@ -30,6 +27,7 @@ import org.codehaus.jettison.json.JSONException;
 import org.jetbrains.annotations.NotNull;
 import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
 import org.springframework.data.domain.PageRequest;
 import org.springframework.data.domain.Pageable;
 import org.springframework.stereotype.Component;
@@ -61,6 +59,9 @@ public class WebMediatorImpl implements ViewMediator {
     private CommonRepo commonRepo;
 
     @Autowired
+    private ToolRepo toolRepo;
+
+    @Autowired
     private CrowdTestTaskDao taskDao;
 
     @Autowired
@@ -129,6 +130,13 @@ public class WebMediatorImpl implements ViewMediator {
     @Autowired
     private EndPointDao endPointDao;
 
+
+    @Value("${file.save.path}")
+    private String fileSaveRootPath;
+
+    @Value("${feature.client.oss}")
+    private Boolean usingOss;
+
     @Override
     public List<CrowdTestProjectVO> crowdTestProjects() {
         List<CrowdTestProjectVO> authingList = new ArrayList<>();
@@ -463,7 +471,7 @@ public class WebMediatorImpl implements ViewMediator {
 //            userRanks = userRank;
 //        }
 
-        // 获取资源和工具
+        // 获取资源
         List<Resource> resourceList = commonRepo.getAllResource();
         List<ResourceVO> resourceVOS = new ArrayList<>();
         List<ResourceVO> resourceVOList = resourceList.stream().map(resource -> {
@@ -478,23 +486,46 @@ public class WebMediatorImpl implements ViewMediator {
             resourceVOS = resourceVOList;
         }
 
+        // 获取工具
+        List<Tool> toolList = toolRepo.getAllTools();
+        List<ToolVO> toolVOS = new ArrayList<>();
+        List<ToolVO> toolVOList = toolList.stream().map(tool -> new ToolVO(tool)).collect(Collectors.toList());
+        if (toolVOList.size() > 12) {
+            for (int i = 0; i < 12; i++) {
+                toolVOS.add(toolVOList.get(i));
+            }
+        } else {
+            toolVOS = toolVOList;
+        }
+
         indexInfoDTO.setApplicationTypeRank(applicationTypeRanks);
         indexInfoDTO.setAgencyRank(agencyRanks);
         indexInfoDTO.setUserRank(userRanks);
         indexInfoDTO.setResourceList(resourceVOS);
-
+        indexInfoDTO.setToolList(toolVOS);
         return indexInfoDTO;
     }
 
     @NotNull
     public List<ApplicationTypeVO> getApplicationTypeRankVOS(Pageable pageable) {
         //获取热门众测
-        return 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());
+        if(usingOss){
+            return 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());
+        }else{
+            return projectDao.findTotalCountOfApplicationType(pageable).stream().map(rankInfos -> {
+                ApplicationType applicationType = commonRepo.getApplicationTypeByAppCode(rankInfos.getCode());
+                ApplicationTypeVO applicationTypeVO = new ApplicationTypeVO(applicationType);
+                applicationTypeVO.setCount(rankInfos.getCount());
+                applicationTypeVO.setImage(fileSaveRootPath + applicationType.getImage());
+                return applicationTypeVO;
+            }).filter(Objects::nonNull).collect(Collectors.toList());
+        }
+
     }
 
     @Override

+ 2 - 0
site/src/main/java/com/mooctest/crowd/site/service/CommonService.java

@@ -56,4 +56,6 @@ public interface CommonService {
     List<HashMap<String, Long>> getStatisticsCount();
 
     List<Map.Entry<String, Long>> getAgencyProjectCount();
+
+    ConfigurationVO getConfigurationListMap();
 }

+ 5 - 0
site/src/main/java/com/mooctest/crowd/site/service/impl/CommonServiceImpl.java

@@ -318,6 +318,11 @@ public class CommonServiceImpl implements CommonService {
         return resultList.stream().filter(result -> !result.getValue().equals(0L)).collect(Collectors.toList());
     }
 
+    @Override
+    public ConfigurationVO getConfigurationListMap() {
+        return new ConfigurationVO(commonRepo.getConfigurationListMap());
+    }
+
     Pageable getPageable(SearchConditionVO searchConditionVO) {
         int activePage = searchConditionVO.getActivePage() == 0 ? 1 : searchConditionVO.getActivePage();
         Sort sort = new Sort(Sort.Direction.DESC, "id");

+ 102 - 12
site/src/main/resources/application.yml

@@ -40,22 +40,77 @@ green:
 
 ---
 spring:
-  profiles: private
+  profiles: private-cloud
   datasource:
-    url: jdbc:mysql://101.37.175.111:3306/crowd-test-service-private?useSSL=false&useUnicode=yes&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai
-    username: mooctest
-    password: secr3t!
+    url: jdbc:mysql://mysql:3306/crowd-test-service?useSSL=false&useUnicode=yes&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai
+    username: root
+    password: Customs2019
   redis:
-    host: 59.42.10.53
-    pool: 6379
-    password: '#2019@callforttest@!'
+    host: redis
+    port: 6379
+    password:
     jedis:
       pool:
         max-active: 8
         max-idle: 8
         max-wait: -1
         min-idle: 0
-    database: 6
+    database: 0
+
+#  redis:
+#    host: redis
+#    password:
+#    pool:
+#      max-active: 8
+#      max-idle: 8
+#      max-wait: -1
+#      min-idle: 0
+#    port: 6379
+
+feature:
+  client:
+    oss: false
+
+file:
+  save:
+    path: /var/www/
+
+user:
+  service:
+    baseUrl: http://crowd_user:8081
+#    baseUrl: http://59.42.10.53:8081
+
+website:
+  domain: 127.0.0.1
+
+---
+spring:
+  profiles: private-cloud-localhost
+  datasource:
+    url: jdbc:mysql://127.0.0.1:3306/crowd-test-service?useSSL=false&useUnicode=yes&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai
+    username: root
+    password: Customs2019
+  redis:
+    host: 127.0.0.1
+    port: 6379
+    password:
+    jedis:
+      pool:
+        max-active: 8
+        max-idle: 8
+        max-wait: -1
+        min-idle: 0
+    database: 0
+
+#  redis:
+#    host: 127.0.0.1
+#    password:
+#    pool:
+#      max-active: 8
+#      max-idle: 8
+#      max-wait: -1
+#      min-idle: 0
+#    port: 6379
 
 feature:
   client:
@@ -71,7 +126,7 @@ user:
 #    baseUrl: http://59.42.10.53:8081
 
 website:
-  domain: mooctest.net
+  domain: 127.0.0.1
 
 ---
 spring:
@@ -96,9 +151,13 @@ feature:
   client:
     oss: true
 
+file:
+  save:
+    path: http://mooctest-crowd-service.oss-cn-hangzhou.aliyuncs.com/
+
 user:
   service:
-#    baseUrl: http://127.0.0.1:8081
+    #    baseUrl: http://127.0.0.1:8081
     baseUrl: http://59.42.10.53:8081
 
 website:
@@ -164,7 +223,7 @@ website:
 
 ---
 spring:
-  profiles: online
+  profiles: pre-online
   datasource:
     url: jdbc:mysql://10.18.18.50:3306/crowd-test-service?useSSL=false&useUnicode=yes&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai
     username: root
@@ -189,4 +248,35 @@ user:
   service:
     baseUrl: http://user.cofortest.com
 website:
-  domain: cofortest.com
+  domain: cofortest.com
+
+---
+spring:
+  profiles: online
+  datasource:
+    url: jdbc:mysql://8.134.32.27:3306/crowd-test-service?useSSL=false&useUnicode=yes&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai
+    username: root
+    password: callfortest_crowd
+  redis:
+    host: 8.134.32.27
+    pool: 6379
+    password: '#2019@callforttest@!'
+    jedis:
+      pool:
+        max-active: 8
+        max-idle: 8
+        max-wait: -1
+        min-idle: 0
+    database: 0
+
+feature:
+  client:
+    oss: true
+
+user:
+  service:
+    baseUrl: http://8.134.32.27:8081
+#    baseUrl: http://user.cofortest.com
+website:
+  domain: 8.134.32.27
+#  domain: cofortest.com

+ 39 - 39
site/src/test/java/com/mooctest/crowd/site/SiteApplicationTests.java

@@ -1,39 +1,39 @@
-package com.mooctest.crowd.site;
-
-import com.mooctest.crowd.domain.dao.CrowdTestProjectDao;
-import com.mooctest.crowd.domain.model.CrowdTestProjectPO;
-import com.mooctest.crowd.site.service.AgencyService;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.boot.test.context.SpringBootTest;
-import org.springframework.test.context.junit4.SpringRunner;
-
-import java.util.Optional;
-
-@RunWith(SpringRunner.class)
-@SpringBootTest
-public class SiteApplicationTests {
-    @Autowired
-    private CrowdTestProjectDao  crowdTestProjectDao;
-
-    @Test
-    public  void test(){
-        Optional<CrowdTestProjectPO> crowdTestProjectPO=crowdTestProjectDao.findById(223l);
-         CrowdTestProjectPO crowdTestProjectPO1=crowdTestProjectPO.get();
-         crowdTestProjectPO1.setStatus(5);
-         crowdTestProjectDao.save(crowdTestProjectPO1);
-
-
-
-
-
-    }
-
-
-
-
-
-
-
-}
+//package com.mooctest.crowd.site;
+//
+//import com.mooctest.crowd.domain.dao.CrowdTestProjectDao;
+//import com.mooctest.crowd.domain.model.CrowdTestProjectPO;
+//import com.mooctest.crowd.site.service.AgencyService;
+//import org.junit.Test;
+//import org.junit.runner.RunWith;
+//import org.springframework.beans.factory.annotation.Autowired;
+//import org.springframework.boot.test.context.SpringBootTest;
+//import org.springframework.test.context.junit4.SpringRunner;
+//
+//import java.util.Optional;
+//
+//@RunWith(SpringRunner.class)
+//@SpringBootTest
+//public class SiteApplicationTests {
+//    @Autowired
+//    private CrowdTestProjectDao  crowdTestProjectDao;
+//
+//    @Test
+//    public  void test(){
+//        Optional<CrowdTestProjectPO> crowdTestProjectPO=crowdTestProjectDao.findById(223l);
+//         CrowdTestProjectPO crowdTestProjectPO1=crowdTestProjectPO.get();
+//         crowdTestProjectPO1.setStatus(5);
+//         crowdTestProjectDao.save(crowdTestProjectPO1);
+//
+//
+//
+//
+//
+//    }
+//
+//
+//
+//
+//
+//
+//
+//}

+ 7 - 0
tool4deploy-privatecloud/Dockerfile

@@ -0,0 +1,7 @@
+FROM java:8
+EXPOSE 8080
+ENV TZ=Asia/Shanghai
+RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone
+ADD site-0.0.1-SNAPSHOT.jar /root
+WORKDIR /root
+ENTRYPOINT ["java", "-jar", "-Djava.security.egd=file:/dev/./urandom", "site-0.0.1-SNAPSHOT.jar"]

BIN
tool4deploy-privatecloud/site-0.0.1-SNAPSHOT.jar


Some files were not shown because too many files changed in this diff