|
@@ -0,0 +1,94 @@
|
|
|
+package com.mooctest.crowd.site.service.impl;
|
|
|
+
|
|
|
+import com.mooctest.crowd.site.constants.CommonConstant;
|
|
|
+import com.mooctest.crowd.site.data.ColumnFilter;
|
|
|
+import com.mooctest.crowd.site.data.dto.ProjectAndTaskDTO;
|
|
|
+import com.mooctest.crowd.site.data.enums.ColumnFilterType;
|
|
|
+import com.mooctest.crowd.site.data.response.ResponseVO;
|
|
|
+import com.mooctest.crowd.site.data.response.ServerCode;
|
|
|
+import com.mooctest.crowd.site.data.vo.CrowdTaskVO;
|
|
|
+import com.mooctest.crowd.site.data.vo.CrowdTestProjectVO;
|
|
|
+import com.mooctest.crowd.site.data.vo.SearchConditionVO;
|
|
|
+import com.mooctest.crowd.site.service.CrowdProjectService;
|
|
|
+import com.mooctest.crowd.site.service.CrowdTaskService;
|
|
|
+import com.mooctest.crowd.site.service.CrowdTestSquareService;
|
|
|
+import com.mooctest.crowd.site.util.DataUtils;
|
|
|
+import org.springframework.beans.factory.annotation.Autowired;
|
|
|
+import org.springframework.data.domain.Page;
|
|
|
+import org.springframework.data.domain.PageRequest;
|
|
|
+import org.springframework.data.domain.Pageable;
|
|
|
+import org.springframework.data.domain.Sort;
|
|
|
+import org.springframework.stereotype.Service;
|
|
|
+
|
|
|
+import java.util.ArrayList;
|
|
|
+import java.util.HashMap;
|
|
|
+import java.util.List;
|
|
|
+import java.util.Map;
|
|
|
+
|
|
|
+/**
|
|
|
+ * @author:xx
|
|
|
+ * @date:2020/7/6
|
|
|
+ * @description:众测广场服务
|
|
|
+ */
|
|
|
+
|
|
|
+@Service
|
|
|
+public class CrowdTestSquareServiceImpl implements CrowdTestSquareService {
|
|
|
+ @Autowired
|
|
|
+ private CrowdProjectService crowdProjectService;
|
|
|
+ @Autowired
|
|
|
+ private CrowdTaskService crowdTaskService;
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public ResponseVO findByNameLike(SearchConditionVO searchConditionVO) {
|
|
|
+ Map<String, String> extraCondition = searchConditionVO.getColumnFilters() == null ? new HashMap<>() : this.getExtraCondition(searchConditionVO);
|
|
|
+ Pageable pageable = this.getPageable(searchConditionVO);
|
|
|
+ String keyword = searchConditionVO.getKeyword();
|
|
|
+ ProjectAndTaskDTO projectAndTaskDTO = new ProjectAndTaskDTO();
|
|
|
+ List<CrowdTestProjectVO> list = crowdProjectService.findByNameLike(keyword);
|
|
|
+ List<CrowdTaskVO> taskVOList = crowdTaskService.findByNameLike(keyword);
|
|
|
+ projectAndTaskDTO.setCrowdTaskVOList(taskVOList);
|
|
|
+ projectAndTaskDTO.setProjectVOList(list);
|
|
|
+ List projectAndTaskDTOList = new ArrayList<>();
|
|
|
+ projectAndTaskDTOList.addAll(list);
|
|
|
+ projectAndTaskDTOList.addAll(taskVOList);
|
|
|
+ Page<ProjectAndTaskDTO> projectAndTaskDTOPage = DataUtils.listToPage(projectAndTaskDTOList, pageable);
|
|
|
+ Page<CrowdTestProjectVO> projectVOPage = DataUtils.listToPage(list, pageable);
|
|
|
+ Page<CrowdTaskVO> crowdTaskVOPage = DataUtils.listToPage(taskVOList, pageable);
|
|
|
+ if (searchConditionVO.getColumnFilters().get(0).getType().equals("project")) {
|
|
|
+ return new ResponseVO<>(ServerCode.SUCCESS, projectVOPage);
|
|
|
+ } else if (searchConditionVO.getColumnFilters().get(0).getType().equals("task")) {
|
|
|
+ return new ResponseVO(ServerCode.SUCCESS, crowdTaskVOPage);
|
|
|
+ }
|
|
|
+ return new ResponseVO<>(ServerCode.SUCCESS, projectAndTaskDTOPage);
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ Pageable getPageable(SearchConditionVO searchConditionVO) {
|
|
|
+ int activePage = searchConditionVO.getActivePage() == 0 ? 1 : searchConditionVO.getActivePage();
|
|
|
+ Sort sort = new Sort(Sort.Direction.DESC, "id");
|
|
|
+ if (searchConditionVO.getColumnFilters() != null) {
|
|
|
+ for (ColumnFilter columnFilter : searchConditionVO.getColumnFilters()) {
|
|
|
+ if (ColumnFilterType.SORT.getName().equals(columnFilter.getType()) && columnFilter.getValue() != null) {
|
|
|
+ sort = new Sort(Sort.Direction.fromString(columnFilter.getValue()), columnFilter.getField());
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return new PageRequest(activePage - 1, CommonConstant.SQUARE_ROWS_ON_PAGE, sort);
|
|
|
+ }
|
|
|
+
|
|
|
+ Map<String, String> getExtraCondition(SearchConditionVO searchConditionVO) {
|
|
|
+ Map<String, String> result = searchConditionVO.getExtraCondition();
|
|
|
+ if (result == null) {
|
|
|
+ result = new HashMap<>();
|
|
|
+ }
|
|
|
+ for (ColumnFilter columnFilter : searchConditionVO.getColumnFilters()) {
|
|
|
+ if (ColumnFilterType.ENUM.getName().equals(columnFilter.getType())
|
|
|
+ && columnFilter.getValue() != null && !columnFilter.getValue().equals("all")) {
|
|
|
+ result.put(columnFilter.getField(), columnFilter.getValue());
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return result;
|
|
|
+ }
|
|
|
+}
|
|
|
+
|