Forráskód Böngészése

增加工具展示接口

guo00guo 4 éve
szülő
commit
e806870487

+ 28 - 0
core/src/main/java/com/mooctest/crowd/domain/dao/ToolDao.java

@@ -0,0 +1,28 @@
+package com.mooctest.crowd.domain.dao;
+
+import com.mooctest.crowd.domain.model.ToolPO;
+import org.springframework.data.domain.Page;
+import org.springframework.data.domain.Pageable;
+import org.springframework.data.jpa.domain.Specification;
+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;
+import java.util.Optional;
+
+@Transactional
+public interface ToolDao extends CrudRepository<ToolPO, Long>, JpaSpecificationExecutor<ToolPO>,PagingAndSortingRepository<ToolPO, Long>,JpaRepository<ToolPO, Long> {
+
+    Optional<ToolPO> findByCodeAndIsDeleted(String code, int isDeleted);
+
+    Optional<ToolPO> findByIdAndIsDeleted(Long id, int isDeleted);
+
+    List<ToolPO> findAll();
+
+    Page<ToolPO> findAll(Specification<ToolPO> spec, Pageable pageable);
+
+    List<ToolPO> findByNameLikeAndIsDeleted(String name, int isDeleted);
+}

+ 22 - 0
core/src/main/java/com/mooctest/crowd/domain/domainobject/Tool.java

@@ -0,0 +1,22 @@
+package com.mooctest.crowd.domain.domainobject;
+
+import lombok.Data;
+
+import java.sql.Timestamp;
+
+/**
+ * @author guochao
+ * @date 2020/11/16 10:54
+ */
+
+@Data
+public class Tool {
+    private Long id;
+    private String code;
+    private String name;
+    private String description;
+    private String photoUrl;
+    private String owner;
+    private Timestamp linkUrl;
+    private int isDeleted;
+}

+ 40 - 0
core/src/main/java/com/mooctest/crowd/domain/model/ToolPO.java

@@ -0,0 +1,40 @@
+package com.mooctest.crowd.domain.model;
+
+import lombok.Data;
+
+import javax.persistence.*;
+import java.sql.Timestamp;
+
+/**
+ * @author guochao
+ * @date 2020/11/16 10:54
+ */
+@Data
+@Entity(name = "tool")
+public class ToolPO {
+    @Id
+    @Column(name = "T_ID")
+    @GeneratedValue(strategy = GenerationType.IDENTITY)
+    private Long id;
+
+    @Column(name = "T_CODE")
+    private String code;
+
+    @Column(name = "T_NAME")
+    private String name;
+
+    @Column(name = "T_DESCRIPTION")
+    private String description;
+
+    @Column(name = "T_PHOTO_URL")
+    private String photoUrl;
+
+    @Column(name = "T_OWNER")
+    private String owner;
+
+    @Column(name = "T_LINK_URL")
+    private Timestamp linkUrl;
+
+    @Column(name = "T_IS_DELETED")
+    private int isDeleted;
+}

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

@@ -0,0 +1,12 @@
+package com.mooctest.crowd.domain.repository;
+
+import com.mooctest.crowd.domain.domainobject.Tool;
+import org.springframework.data.domain.Page;
+import org.springframework.data.domain.Pageable;
+
+
+public interface IToolRepo {
+
+    Page<Tool> getAllTool(Pageable pageable, String keyword);
+
+}

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

@@ -0,0 +1,51 @@
+package com.mooctest.crowd.domain.repository;
+
+import com.mooctest.crowd.domain.dao.ToolDao;
+import com.mooctest.crowd.domain.domainobject.DeletedStatus;
+import com.mooctest.crowd.domain.domainobject.Tool;
+import com.mooctest.crowd.domain.model.ToolPO;
+import com.mooctest.crowd.domain.util.Converter;
+import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.data.domain.Page;
+import org.springframework.data.domain.Pageable;
+import org.springframework.data.jpa.domain.Specification;
+import org.springframework.data.jpa.domain.Specifications;
+import org.springframework.stereotype.Component;
+
+import javax.persistence.criteria.CriteriaBuilder;
+import javax.persistence.criteria.CriteriaQuery;
+import javax.persistence.criteria.Predicate;
+import javax.persistence.criteria.Root;
+
+@Slf4j
+@Component
+public class ToolRepo implements IToolRepo{
+
+
+    @Autowired
+    private ToolDao toolDao;
+
+    @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));
+    }
+
+    private Specification<ToolPO> getToolByIsNotDeleted(String keyword) {
+        return new Specification<ToolPO>() {
+            @Override
+            public Predicate toPredicate(Root<ToolPO> a, CriteriaQuery<?> q, CriteriaBuilder cb) {
+                Predicate predicate = cb.conjunction();
+                if(keyword != null) {
+                    Predicate title=cb.like(a.get("name"), "%" + StringUtils.trim(keyword) + "%");
+                    Predicate description=cb.like(a.get("description"), "%" + StringUtils.trim(keyword) + "%");
+                    predicate.getExpressions().add(cb.or(title,description));
+                }
+                predicate.getExpressions().add(cb.equal(a.get("isDeleted"), DeletedStatus.isNotDeleted));
+                return predicate;
+            }
+        };
+    }
+}

A különbségek nem kerülnek megjelenítésre, a fájl túl nagy
+ 0 - 0
site/src/main/java/com/mooctest/crowd/site/controller/CommonController.java


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

@@ -30,6 +30,11 @@ public class TechnicalArticlesController extends BaseSearchController{
     @Autowired
     private TechnicalArticlesService technical;
 
+    /**
+     * 众测技术相关搜索
+     * @param searchConditionVO
+     * @return
+     */
     @RequestMapping(value = "/articles", method = RequestMethod.POST)
     public ResponseVO<TechnicalArticlesDTO> technicalArticles(@RequestBody SearchConditionVO searchConditionVO){
         Map<String, String> extraCondition = searchConditionVO.getColumnFilters()==null? new HashMap<>() :super.getExtraCondition(searchConditionVO);
@@ -45,8 +50,15 @@ public class TechnicalArticlesController extends BaseSearchController{
 
     Pageable getPageable(SearchConditionVO searchConditionVO){
         int activePage = searchConditionVO.getActivePage() == 0?1:searchConditionVO.getActivePage();
-        Sort sort = new Sort(Sort.Direction.DESC,"publicTime");
-        return new PageRequest(activePage-1, CommonConstant.TECHNOLOGY_ROWS_ON_PAGE, sort);
+        // 是文章和专著,根据publicTime排序,每页5条
+        if(searchConditionVO.getSortType() == null || searchConditionVO.getSortType() == ""){
+            Sort sort = new Sort(Sort.Direction.DESC,"publicTime");
+            return new PageRequest(activePage-1, CommonConstant.TECHNOLOGY_ROWS_ON_PAGE, sort);
+        }else{// 是工具,根据id排序,每页10条
+            Sort sort = new Sort(Sort.Direction.DESC,searchConditionVO.getSortType());
+            return new PageRequest(activePage-1, CommonConstant.HOT_CROWD_ROWS_ON_PAGE, sort);
+        }
+
     }
 
     Pageable getRanking(){

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

@@ -2,6 +2,7 @@ package com.mooctest.crowd.site.data.dto;
 
 import com.mooctest.crowd.site.data.vo.PublicationsVO;
 import com.mooctest.crowd.site.data.vo.TechnicalArticlesVO;
+import com.mooctest.crowd.site.data.vo.ToolVO;
 import lombok.Data;
 import org.springframework.data.domain.Page;
 
@@ -9,5 +10,6 @@ import org.springframework.data.domain.Page;
 public class TechnicalArticlesDTO {
     Page<TechnicalArticlesVO>  technicalArticlesPage;
     Page<PublicationsVO>  publicationsPage;
+    Page<ToolVO> toolVOPage;
     int count;
 }

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

@@ -18,4 +18,5 @@ public class SearchConditionVO {
     private Integer totalPage;
     private List<ColumnFilter> columnFilters;
     private Map<String,String> extraCondition;
+    private String sortType;
 }

+ 36 - 0
site/src/main/java/com/mooctest/crowd/site/data/vo/ToolVO.java

@@ -0,0 +1,36 @@
+package com.mooctest.crowd.site.data.vo;
+
+import com.mooctest.crowd.domain.domainobject.Tool;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.sql.Timestamp;
+
+/**
+ * @author guochao
+ * @date 2020/11/16 10:54
+ */
+
+@Data
+@NoArgsConstructor
+@AllArgsConstructor
+public class ToolVO {
+    private String code;
+    private String name;
+    private String description;
+    private String photoUrl;
+    private String owner;
+    private Timestamp linkUrl;
+    private int isDeleted;
+
+    public ToolVO(Tool tool){
+        this.code = tool.getCode();
+        this.name = tool.getName();
+        this.photoUrl=tool.getPhotoUrl();
+        this.description=tool.getDescription();
+        this.owner=tool.getOwner();
+        this.linkUrl=tool.getLinkUrl();
+        this.isDeleted=tool.getIsDeleted();
+    }
+}

+ 7 - 0
site/src/main/java/com/mooctest/crowd/site/service/impl/TechnicalArticlesServiceImpl.java

@@ -3,9 +3,11 @@ package com.mooctest.crowd.site.service.impl;
 
 import com.mooctest.crowd.domain.repository.PublicationsRepo;
 import com.mooctest.crowd.domain.repository.TechnicalArticlesRepo;
+import com.mooctest.crowd.domain.repository.ToolRepo;
 import com.mooctest.crowd.site.data.dto.TechnicalArticlesDTO;
 import com.mooctest.crowd.site.data.vo.PublicationsVO;
 import com.mooctest.crowd.site.data.vo.TechnicalArticlesVO;
+import com.mooctest.crowd.site.data.vo.ToolVO;
 import com.mooctest.crowd.site.mediator.ViewMediator;
 import com.mooctest.crowd.site.service.TechnicalArticlesService;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -29,6 +31,9 @@ public class TechnicalArticlesServiceImpl implements TechnicalArticlesService{
     @Autowired
     private PublicationsRepo publicationsRepo;
 
+    @Autowired
+    private ToolRepo toolRepo;
+
     @Override
     public TechnicalArticlesDTO getArticles(Pageable pageable,String keyword,Map<String, String> extraCondition) {
         TechnicalArticlesDTO  technicalArticlesDTO= new  TechnicalArticlesDTO();
@@ -38,6 +43,8 @@ public class TechnicalArticlesServiceImpl implements TechnicalArticlesService{
                 technicalArticlesDTO.setTechnicalArticlesPage(technicalArticlesRepo.getTechnicalArticles(pageable, keyword).map(technicalArticles -> new TechnicalArticlesVO(technicalArticles)));
             }else if(value.equals("1")){
                 technicalArticlesDTO.setPublicationsPage(publicationsRepo.getPublications(pageable, keyword).map(publications -> new PublicationsVO(publications)));
+            }else if(value.equals("2")){
+                technicalArticlesDTO.setToolVOPage(toolRepo.getAllTool(pageable, keyword).map(tool -> new ToolVO(tool)));
             }
         }
         return technicalArticlesDTO;

Nem az összes módosított fájl került megjelenítésre, mert túl sok fájl változott