Commit 210a9bae by aye

代码提交

parent 86794995
...@@ -3,6 +3,7 @@ package com.jty.wsxt.application.service; ...@@ -3,6 +3,7 @@ package com.jty.wsxt.application.service;
import com.jty.wsxt.domain.model.paper.Paper; import com.jty.wsxt.domain.model.paper.Paper;
import com.jty.wsxt.interfaces.dto.PaperDto; import com.jty.wsxt.interfaces.dto.PaperDto;
import com.jty.wsxt.interfaces.dto.PaperSearchDto; import com.jty.wsxt.interfaces.dto.PaperSearchDto;
import com.jty.wsxt.interfaces.dto.PaperSearchForCreatorDto;
import org.springframework.data.domain.Page; import org.springframework.data.domain.Page;
/** /**
...@@ -18,6 +19,11 @@ public interface PaperService { ...@@ -18,6 +19,11 @@ public interface PaperService {
*/ */
void addPaper(PaperSearchDto paperSearchDto); void addPaper(PaperSearchDto paperSearchDto);
/**
*获取试卷列表
* @param paperSearchDto paperSearchDto
* @return page
*/
Page<Paper> findPagePaper(PaperSearchDto paperSearchDto); Page<Paper> findPagePaper(PaperSearchDto paperSearchDto);
/** /**
...@@ -25,4 +31,18 @@ public interface PaperService { ...@@ -25,4 +31,18 @@ public interface PaperService {
* @param paperId paperId * @param paperId paperId
*/ */
void deletePaper(Integer paperId); void deletePaper(Integer paperId);
/**
*获取个人上传试卷
* @param paperSearchDto paperSearchDto
* @return page
*/
Page<Paper> findPagePaperByCreatorId(PaperSearchForCreatorDto paperSearchDto);
/**
* 根据id获取试卷详情
* @param id id
* @return paper
*/
Paper findPaperDetailById(Integer id);
} }
...@@ -5,16 +5,21 @@ import com.jty.wsxt.domain.DomainRegistry; ...@@ -5,16 +5,21 @@ import com.jty.wsxt.domain.DomainRegistry;
import com.jty.wsxt.domain.model.paper.Paper; import com.jty.wsxt.domain.model.paper.Paper;
import com.jty.wsxt.infrastructure.support.BusinessException; import com.jty.wsxt.infrastructure.support.BusinessException;
import com.jty.wsxt.infrastructure.support.ResultCode; import com.jty.wsxt.infrastructure.support.ResultCode;
import com.jty.wsxt.interfaces.dto.PaperDto;
import com.jty.wsxt.interfaces.dto.PaperSearchDto; import com.jty.wsxt.interfaces.dto.PaperSearchDto;
import org.apache.commons.lang3.StringUtils; import com.jty.wsxt.interfaces.dto.PaperSearchForCreatorDto;
import org.hibernate.query.criteria.internal.OrderImpl;
import org.springframework.beans.BeanUtils; import org.springframework.beans.BeanUtils;
import org.springframework.data.domain.Example; import org.springframework.data.domain.Example;
import org.springframework.data.domain.ExampleMatcher; import org.springframework.data.domain.ExampleMatcher;
import org.springframework.data.domain.Page; import org.springframework.data.domain.Page;
import org.springframework.data.jpa.domain.Specification;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSON;
import javax.persistence.criteria.*;
import java.util.ArrayList;
import java.util.List;
/** /**
* PaperServiceImpl * PaperServiceImpl
* *
...@@ -51,7 +56,43 @@ public class PaperServiceImpl implements PaperService { ...@@ -51,7 +56,43 @@ public class PaperServiceImpl implements PaperService {
@Override @Override
public void deletePaper(Integer paperId) { public void deletePaper(Integer paperId) {
Paper paper = DomainRegistry.paperRepository().findById(paperId).orElseThrow(()->new BusinessException(ResultCode.RESULT_DATA_NONE)); Paper paper = this.findPaperDetailById(paperId);
paper.delete(); paper.delete();
} }
@Override
public Page<Paper> findPagePaperByCreatorId(PaperSearchForCreatorDto paperSearchDto) {
return DomainRegistry.paperRepository().findAll(PaperDsl.getNrscTeachersWhereClause(paperSearchDto),paperSearchDto.getPageable());
}
@Override
public Paper findPaperDetailById(Integer id) {
return DomainRegistry.paperRepository().findById(id).orElseThrow(()->new BusinessException(ResultCode.RESULT_DATA_NONE));
}
} }
class PaperDsl {
public static Specification<Paper> getNrscTeachersWhereClause(PaperSearchForCreatorDto searchDto) {
return new Specification<Paper>() {
@Override
public Predicate toPredicate(Root<Paper> root, CriteriaQuery<?> query,
CriteriaBuilder cb) {
List<Predicate> predicate = new ArrayList<>();
predicate.add(cb.equal(root.get("creatorId"), searchDto.getCreatorId()));
if(searchDto.getUploadingStartTime() != null) {
predicate.add(cb.greaterThanOrEqualTo(root.get("createTime"), searchDto.getUploadingStartTime()));
}
if(searchDto.getUploadingEndTime() != null) {
predicate.add(cb.lessThanOrEqualTo(root.get("createTime"), searchDto.getUploadingEndTime()));
}
List<Order> orders = new ArrayList<>();
orders.add(new OrderImpl(root.get("feedbackTime")));
orders.add(new OrderImpl(root.get("id")));
Predicate[] pre = new Predicate[predicate.size()];
return query.distinct(true).where(predicate.toArray(pre)).orderBy(orders).getRestriction();
}
};
}
}
\ No newline at end of file
...@@ -6,13 +6,11 @@ import com.jty.wsxt.domain.model.paper.Paper; ...@@ -6,13 +6,11 @@ import com.jty.wsxt.domain.model.paper.Paper;
import com.jty.wsxt.infrastructure.support.Result; import com.jty.wsxt.infrastructure.support.Result;
import com.jty.wsxt.interfaces.dto.PaperDto; import com.jty.wsxt.interfaces.dto.PaperDto;
import com.jty.wsxt.interfaces.dto.PaperSearchDto; import com.jty.wsxt.interfaces.dto.PaperSearchDto;
import com.jty.wsxt.interfaces.dto.PaperSearchForCreatorDto;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.Page; import org.springframework.data.domain.Page;
import org.springframework.data.domain.PageImpl; import org.springframework.data.domain.PageImpl;
import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.*;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RestController;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
...@@ -33,7 +31,7 @@ public class PaperController { ...@@ -33,7 +31,7 @@ public class PaperController {
this.userFeign = userFeign; this.userFeign = userFeign;
} }
@PostMapping @PostMapping("/paper")
public Result addPaper(@RequestBody PaperSearchDto paperSearchDto){ public Result addPaper(@RequestBody PaperSearchDto paperSearchDto){
paperSearchDto.setCreatorId(userFeign.getLoginId()); paperSearchDto.setCreatorId(userFeign.getLoginId());
paperSearchDto.setCreatorName(userFeign.getLoginName()); paperSearchDto.setCreatorName(userFeign.getLoginName());
...@@ -44,10 +42,33 @@ public class PaperController { ...@@ -44,10 +42,33 @@ public class PaperController {
@GetMapping("/papers") @GetMapping("/papers")
public Result getPapers(PaperSearchDto paperSearchDto){ public Result getPapers(PaperSearchDto paperSearchDto){
Page<Paper> paperPage = ApplicationRegistry.paperService().findPagePaper(paperSearchDto); Page<Paper> paperPage = ApplicationRegistry.paperService().findPagePaper(paperSearchDto);
List<PaperDto> paperDtos = new ArrayList<>(); return this.getPaperDtoPage(paperPage);
}
@GetMapping("/papers/creator")
public Result getPapersByCreatorId(PaperSearchForCreatorDto paperSearchDto){
Page<Paper> paperPage = ApplicationRegistry.paperService().findPagePaperByCreatorId(paperSearchDto);
return this.getPaperDtoPage(paperPage);
}
@GetMapping("/paper/{paperId}")
public Result getPaperDetail(@PathVariable Integer paperId){
Paper paper = ApplicationRegistry.paperService().findPaperDetailById(paperId);
return Result.success(paper.cashToPaperDto());
}
@DeleteMapping("/paper/{paperId}")
public Result deletePaper(@PathVariable Integer paperId){
ApplicationRegistry.paperService().deletePaper(paperId);
return Result.success();
}
private Result getPaperDtoPage(Page<Paper> paperPage){
List<PaperDto> paperDtoList = new ArrayList<>();
if(paperPage.getTotalElements() != 0){ if(paperPage.getTotalElements() != 0){
paperPage.getContent().forEach(paper -> paperDtos.add(paper.cashToPaperDto())); paperPage.getContent().forEach(paper -> paperDtoList.add(paper.cashToPaperDto()));
} }
return Result.success(new PageImpl<>(paperDtos,paperPage.getPageable(),paperPage.getTotalElements())); return Result.success(new PageImpl<>(paperDtoList,paperPage.getPageable(),paperPage.getTotalElements()));
} }
} }
package com.jty.wsxt.interfaces.dto;
import lombok.Data;
import java.time.LocalDateTime;
/**
* PaperSearchForCreatorDto
*
* @author Manjiajie
* @since 2019-6-22 09:03:36
*/
@Data
public class PaperSearchForCreatorDto extends SuperDto {
private Integer creatorId;
private LocalDateTime uploadingStartTime;
private LocalDateTime uploadingEndTime;
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment