Bläddra i källkod

fix : overwrite findByStemLike

XuShengTao 6 år sedan
förälder
incheckning
db08b7cfb6

+ 18 - 1
src/main/java/com/seec/bok/back/controller/QuestionController.java

@@ -6,9 +6,14 @@ import com.seec.bok.back.repository.QuestionRepository;
 import com.seec.bok.back.repository.TQRepository;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Qualifier;
+import org.springframework.data.domain.Page;
+import org.springframework.data.domain.Pageable;
 import org.springframework.data.rest.webmvc.PersistentEntityResourceAssembler;
 import org.springframework.data.rest.webmvc.RepositoryRestController;
 import org.springframework.data.rest.webmvc.support.RepositoryEntityLinks;
+
+import org.springframework.data.web.PagedResourcesAssembler;
+import org.springframework.hateoas.server.RepresentationModelAssembler;
 import org.springframework.http.HttpStatus;
 import org.springframework.http.ResponseEntity;
 import org.springframework.web.bind.annotation.*;
@@ -22,7 +27,19 @@ import org.springframework.web.bind.annotation.*;
  * @Description //TODO
  **/
 @RepositoryRestController
-@RequestMapping("/question")
+@RequestMapping("/api/question")
 public class QuestionController {
+    @Autowired
+    @Qualifier("QuestionRepository") // inject Spring implementation here
+    private QuestionRepository questionRepository;
+    @Autowired
+    private PagedResourcesAssembler pagedAssembler;
+    @Autowired
+    private RepositoryEntityLinks entityLinks;
+    @RequestMapping(value = "/search/findByStemLike",method= RequestMethod.GET, produces = "application/hal+json")
+    public @ResponseBody ResponseEntity<?> findByStem(String content,Pageable pageable) {
+        final Page<Question> like = questionRepository.findByStemLike(content, pageable);
+        return new ResponseEntity(pagedAssembler.toModel(like), HttpStatus.OK);
+    }
 
 }

+ 4 - 1
src/main/java/com/seec/bok/back/repository/QuestionRepository.java

@@ -4,6 +4,7 @@ import com.seec.bok.back.entity.ChoiceQuestion;
 import com.seec.bok.back.entity.Question;
 import org.springframework.data.domain.Page;
 import org.springframework.data.domain.Pageable;
+import org.springframework.data.elasticsearch.annotations.Query;
 import org.springframework.data.elasticsearch.repository.ElasticsearchRepository;
 import org.springframework.data.repository.query.Param;
 import org.springframework.data.rest.core.annotation.RepositoryRestResource;
@@ -12,12 +13,14 @@ import org.springframework.stereotype.Repository;
 import java.util.Collection;
 import java.util.Optional;
 
-@RepositoryRestResource(path = "question")
+
 @Repository("QuestionRepository")
+@RepositoryRestResource(path = "question")
 public interface QuestionRepository extends ElasticsearchRepository<Question,String> {
     @Override
     Page<Question> findAll(Pageable pageable);
     Page<Question> findByIdIn(@Param("id")Collection<String> id, Pageable pageable);
+    @Query("{\"multi_match\": {\"query\": \"?0\", \"fields\": [\"stem\", \"analysis\"], \"fuzziness\": \"AUTO\"}}")
     Page<Question> findByStemLike(String content,Pageable pageable);
     @Override
     void deleteById(String integer);

+ 4 - 0
src/main/java/com/seec/bok/back/repository/QuestionRepositoryImp.java

@@ -8,11 +8,13 @@ import org.springframework.data.domain.Page;
 import org.springframework.data.domain.Pageable;
 import org.springframework.data.domain.Sort;
 import org.springframework.data.elasticsearch.core.query.SearchQuery;
+import org.springframework.data.rest.core.annotation.RepositoryRestResource;
 import org.springframework.stereotype.Repository;
 
 import java.util.Collection;
 import java.util.Optional;
 @Repository("QuestionRepositoryImp")
+
 public class QuestionRepositoryImp implements QuestionRepository{
     @Autowired
     @Qualifier("QuestionRepository") // inject Spring implementation here
@@ -30,6 +32,8 @@ public class QuestionRepositoryImp implements QuestionRepository{
 
     @Override
     public Page<Question> findByStemLike(String content, Pageable pageable) {
+        System.out.println(content);
+        System.out.println(pageable);
         return questionRepository.findByStemLike(content, pageable);
     }
 

Filskillnaden har hållts tillbaka eftersom den är för stor
+ 1 - 0
src/test/java/com/seec/bok/QuestionTests.java


+ 9 - 0
src/test/java/com/seec/bok/util/Request.java

@@ -36,6 +36,15 @@ public class Request {
     Map<String,Object> urlVariables;
 
     Object resDemo;
+
+    public String getRequestJson() throws JsonProcessingException {
+        return mapper.writeValueAsString(request);
+    }
+
+    public String getResDemoJson() throws JsonProcessingException {
+        return mapper.writeValueAsString(resDemo);
+    }
+
     public Request(@NotNull HttpMethod requestMethod, @NotNull String path) {
         this.requestMethod = requestMethod;
         this.url = "http://localhost:" + PORT +path;

Vissa filer visades inte eftersom för många filer har ändrats