mirror of
https://codeup.aliyun.com/67762337eccfc218f6110e0e/per-boe/java-servers.git
synced 2025-12-11 20:06:51 +08:00
Merge branch 'master' of https://codeup.aliyun.com/648097ddb583fece2f059e59/boe/java-servers
This commit is contained in:
@@ -17,6 +17,7 @@ import com.xboe.module.dict.entity.DictItem;
|
|||||||
import com.xboe.module.excel.ExportsExcelSenderUtil;
|
import com.xboe.module.excel.ExportsExcelSenderUtil;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import org.apache.commons.lang3.StringUtils;
|
import org.apache.commons.lang3.StringUtils;
|
||||||
|
import org.springframework.validation.annotation.Validated;
|
||||||
import org.springframework.web.bind.annotation.*;
|
import org.springframework.web.bind.annotation.*;
|
||||||
|
|
||||||
import javax.annotation.Resource;
|
import javax.annotation.Resource;
|
||||||
@@ -104,7 +105,7 @@ public class CasesApi extends ApiBaseController {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@PostMapping("/queryListV2")
|
@PostMapping("/queryListV2")
|
||||||
public JsonResponse<PageList<Cases>> queryCaseBreV2(@RequestBody CasePageVo req){
|
public JsonResponse<PageList<Cases>> queryCaseBreV2(@Validated CasePageVo req){
|
||||||
String type = req.getType();
|
String type = req.getType();
|
||||||
PageList<Cases> views = null;
|
PageList<Cases> views = null;
|
||||||
if (type.equals("recommend")) {
|
if (type.equals("recommend")) {
|
||||||
|
|||||||
@@ -0,0 +1,16 @@
|
|||||||
|
package com.xboe.module.boecase.dao;
|
||||||
|
|
||||||
|
import com.xboe.module.boecase.entity.CasesMajorType;
|
||||||
|
import org.springframework.data.jpa.repository.JpaRepository;
|
||||||
|
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
|
||||||
|
import org.springframework.data.jpa.repository.Query;
|
||||||
|
import org.springframework.stereotype.Repository;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
@Repository
|
||||||
|
public interface CasesMajorTypeRepoDao extends JpaRepository<CasesMajorType, String>, JpaSpecificationExecutor<CasesMajorType> {
|
||||||
|
|
||||||
|
@Query(nativeQuery = true, value = "select * from boe_cases_major_type as c where major_id in (:marjorIds) group by c.case_id")
|
||||||
|
List<CasesMajorType> findCasesBy(List<String> marjorIds);
|
||||||
|
}
|
||||||
@@ -41,7 +41,7 @@ public class CasePageVo extends PageDto {
|
|||||||
|
|
||||||
private String authorName;
|
private String authorName;
|
||||||
|
|
||||||
private List<String> years;
|
private List<Object> years;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 已经返回给前端的案例需要过滤掉
|
* 已经返回给前端的案例需要过滤掉
|
||||||
|
|||||||
@@ -5,6 +5,6 @@ import lombok.Data;
|
|||||||
@Data
|
@Data
|
||||||
public class PageDto {
|
public class PageDto {
|
||||||
|
|
||||||
private int pageIndex = 1;
|
private Integer pageIndex = 1;
|
||||||
private int pageSize = 10;
|
private Integer pageSize = 10;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,5 +1,8 @@
|
|||||||
package com.xboe.module.boecase.service.impl;
|
package com.xboe.module.boecase.service.impl;
|
||||||
|
|
||||||
|
import cn.hutool.core.collection.CollUtil;
|
||||||
|
import cn.hutool.core.text.split.SplitIter;
|
||||||
|
import cn.hutool.core.util.StrUtil;
|
||||||
import com.xboe.common.OrderCondition;
|
import com.xboe.common.OrderCondition;
|
||||||
import com.xboe.common.PageList;
|
import com.xboe.common.PageList;
|
||||||
import com.xboe.common.utils.IDGenerator;
|
import com.xboe.common.utils.IDGenerator;
|
||||||
@@ -7,6 +10,7 @@ import com.xboe.common.utils.StringUtil;
|
|||||||
import com.xboe.core.orm.*;
|
import com.xboe.core.orm.*;
|
||||||
import com.xboe.module.boecase.dao.CasesDao;
|
import com.xboe.module.boecase.dao.CasesDao;
|
||||||
import com.xboe.module.boecase.dao.CasesMajorTypeDao;
|
import com.xboe.module.boecase.dao.CasesMajorTypeDao;
|
||||||
|
import com.xboe.module.boecase.dao.CasesMajorTypeRepoDao;
|
||||||
import com.xboe.module.boecase.dao.CasesRecordDao;
|
import com.xboe.module.boecase.dao.CasesRecordDao;
|
||||||
import com.xboe.module.boecase.dto.*;
|
import com.xboe.module.boecase.dto.*;
|
||||||
import com.xboe.module.boecase.entity.Cases;
|
import com.xboe.module.boecase.entity.Cases;
|
||||||
@@ -14,6 +18,7 @@ import com.xboe.module.boecase.entity.CasesMajorType;
|
|||||||
import com.xboe.module.boecase.service.ICasesService;
|
import com.xboe.module.boecase.service.ICasesService;
|
||||||
import com.xboe.module.dict.dao.SysDictionaryDao;
|
import com.xboe.module.dict.dao.SysDictionaryDao;
|
||||||
import com.xboe.module.dict.entity.DictItem;
|
import com.xboe.module.dict.entity.DictItem;
|
||||||
|
import com.xboe.orm.CustomFieldInFilter;
|
||||||
import com.xboe.school.vo.CasesVo;
|
import com.xboe.school.vo.CasesVo;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import org.apache.commons.lang3.StringUtils;
|
import org.apache.commons.lang3.StringUtils;
|
||||||
@@ -22,11 +27,15 @@ import org.springframework.data.domain.PageRequest;
|
|||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
import javax.annotation.Resource;
|
import javax.annotation.Resource;
|
||||||
|
import javax.persistence.EntityManager;
|
||||||
|
import javax.persistence.PersistenceContext;
|
||||||
import javax.transaction.Transactional;
|
import javax.transaction.Transactional;
|
||||||
import java.time.LocalDateTime;
|
import java.time.LocalDateTime;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
import java.util.Objects;
|
||||||
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
@Slf4j
|
@Slf4j
|
||||||
@Service
|
@Service
|
||||||
@@ -45,6 +54,12 @@ public class CasesServiceImpl implements ICasesService {
|
|||||||
@Resource
|
@Resource
|
||||||
private CasesRecordDao casesRecordDao;
|
private CasesRecordDao casesRecordDao;
|
||||||
|
|
||||||
|
@Resource
|
||||||
|
private CasesMajorTypeRepoDao casesMajorTypeRepoDao;
|
||||||
|
|
||||||
|
@PersistenceContext
|
||||||
|
private EntityManager entityManager;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 案例分页查询,用于门户的查询
|
* 案例分页查询,用于门户的查询
|
||||||
*/
|
*/
|
||||||
@@ -84,11 +99,7 @@ public class CasesServiceImpl implements ICasesService {
|
|||||||
filters.add(FieldFilters.isNotNull("filePath"));
|
filters.add(FieldFilters.isNotNull("filePath"));
|
||||||
filters.add(FieldFilters.ne("filePath", ""));
|
filters.add(FieldFilters.ne("filePath", ""));
|
||||||
|
|
||||||
// if(StringUtil.isNotBlank(caseVo.getMajorType())){
|
|
||||||
// filters.add(FieldFilters.eq("majorType",caseVo.getMajorType()));
|
|
||||||
// }
|
|
||||||
if (StringUtil.isNotBlank(caseVo.getMajorType())) {
|
if (StringUtil.isNotBlank(caseVo.getMajorType())) {
|
||||||
|
|
||||||
QueryBuilder from = QueryBuilder.from(CasesMajorType.class);
|
QueryBuilder from = QueryBuilder.from(CasesMajorType.class);
|
||||||
//前端直接字符串拼接传,后端转化数组
|
//前端直接字符串拼接传,后端转化数组
|
||||||
if (caseVo.getMajorType().contains(",")) {
|
if (caseVo.getMajorType().contains(",")) {
|
||||||
@@ -165,13 +176,87 @@ public class CasesServiceImpl implements ICasesService {
|
|||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
public PageList<Cases> queryPageCasesV2(CasePageVo caseVo) {
|
public PageList<Cases> queryPageCasesV2(CasePageVo caseVo) {
|
||||||
PageRequest pageRequest = PageRequest.of(caseVo.getPageIndex(), caseVo.getPageSize());
|
|
||||||
Page<Cases> cases = casesRecordDao.queryList(pageRequest, caseVo);
|
String keyword = caseVo.getKeyWord();
|
||||||
PageList<Cases> pageList = new PageList<>();
|
QueryBuilder query=QueryBuilder.from(Cases.class);
|
||||||
pageList.setCount((int) cases.getTotalElements());
|
PageList<Cases> page=null;
|
||||||
pageList.setPageSize(cases.getSize());
|
List<IFieldFilter> filters = new ArrayList<>();
|
||||||
pageList.setList(cases.getContent());
|
filters.add(FieldFilters.eq("deleted",false));
|
||||||
return pageList;
|
List<IFieldFilter> likes=new ArrayList<IFieldFilter>();
|
||||||
|
likes.add(FieldFilters.like("title", LikeMatchMode.ANYWHERE, caseVo.getKeyWord()));
|
||||||
|
likes.add(FieldFilters.like("authorName", LikeMatchMode.ANYWHERE, caseVo.getKeyWord()));
|
||||||
|
likes.add(FieldFilters.like("keyword1", LikeMatchMode.ANYWHERE, caseVo.getKeyWord()));
|
||||||
|
likes.add(FieldFilters.like("keyword2", LikeMatchMode.ANYWHERE, caseVo.getKeyWord()));
|
||||||
|
likes.add(FieldFilters.like("keyword3", LikeMatchMode.ANYWHERE, caseVo.getKeyWord()));
|
||||||
|
likes.add(FieldFilters.like("keyword4", LikeMatchMode.ANYWHERE, caseVo.getKeyWord()));
|
||||||
|
likes.add(FieldFilters.like("keyword5", LikeMatchMode.ANYWHERE, caseVo.getKeyWord()));
|
||||||
|
List<Long> notInIds = caseVo.getNotInIds();
|
||||||
|
if (CollUtil.isNotEmpty(notInIds)) {
|
||||||
|
filters.add(FieldFilters.notIn("id", notInIds));
|
||||||
|
}
|
||||||
|
|
||||||
|
if(StringUtil.isNotBlank(caseVo.getKeyWord())) {
|
||||||
|
filters.add(FieldFilters.or(likes));
|
||||||
|
}
|
||||||
|
|
||||||
|
//创建时间过滤
|
||||||
|
List<Object> years = caseVo.getYears();
|
||||||
|
if (CollUtil.isNotEmpty(years)) {
|
||||||
|
filters.add(new CustomFieldInFilter("YEAR(sysCreateTime)","sysCreateTime",years));
|
||||||
|
}
|
||||||
|
|
||||||
|
//增加只是查询有附件的
|
||||||
|
filters.add(FieldFilters.isNotNull("filePath"));
|
||||||
|
filters.add(FieldFilters.ne("filePath",""));
|
||||||
|
|
||||||
|
String majorType = caseVo.getMajorType();
|
||||||
|
if(StringUtil.isNotBlank(majorType)){
|
||||||
|
List<CasesMajorType> casesTypes = casesMajorTypeRepoDao.findCasesBy(StrUtil.split(majorType, ","));
|
||||||
|
if(CollUtil.isNotEmpty(casesTypes)){
|
||||||
|
List<String> caseIds = casesTypes.stream().map(CasesMajorType::getCaseId).collect(Collectors.toList());
|
||||||
|
query.addFilter(FieldFilters.in("id",caseIds));
|
||||||
|
}else {
|
||||||
|
return page;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if(StringUtils.isNotBlank(caseVo.getCaseType())){
|
||||||
|
filters.add(FieldFilters.eq("caseType",caseVo.getCaseType()));
|
||||||
|
}
|
||||||
|
if(caseVo.getBreCommend()!=null){
|
||||||
|
if(!caseVo.getBreCommend()){
|
||||||
|
filters.add(FieldFilters.eq("breCommend",0));
|
||||||
|
}else {
|
||||||
|
filters.add(FieldFilters.eq("breCommend", 1));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if(caseVo.getIsTop()!=null && caseVo.getIsTop()) {
|
||||||
|
query.addOrder(OrderCondition.desc("isTop"));
|
||||||
|
query.addOrder(OrderCondition.desc("topTime"));
|
||||||
|
}
|
||||||
|
//如果选择的是优秀案例,那么这里就按优秀案例的试试排序
|
||||||
|
if(caseVo.getExcellent()!=null){
|
||||||
|
filters.add(FieldFilters.eq("excellent",caseVo.getExcellent()));
|
||||||
|
}
|
||||||
|
OrderCondition order=null;
|
||||||
|
if(StringUtils.isNotBlank(caseVo.getOrderField())) {
|
||||||
|
if(caseVo.getOrderAsc()==null || caseVo.getOrderAsc()) {
|
||||||
|
order=OrderCondition.asc(caseVo.getOrderField());
|
||||||
|
}else {
|
||||||
|
order=OrderCondition.desc(caseVo.getOrderField());
|
||||||
|
}
|
||||||
|
}else {
|
||||||
|
order=OrderCondition.desc("sysCreateTime");
|
||||||
|
}
|
||||||
|
|
||||||
|
query.addFilters(filters);
|
||||||
|
query.addOrder(order);
|
||||||
|
query.addOrder(OrderCondition.rand());
|
||||||
|
query.setPageIndex(caseVo.getPageIndex());
|
||||||
|
query.setPageSize(caseVo.getPageSize());
|
||||||
|
page = casesDao.findPage(query.builder());
|
||||||
|
|
||||||
|
return page;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|||||||
@@ -0,0 +1,26 @@
|
|||||||
|
package com.xboe.orm;
|
||||||
|
|
||||||
|
import com.xboe.common.beans.KeyValue;
|
||||||
|
import com.xboe.core.orm.impl.FieldInFilter;
|
||||||
|
|
||||||
|
import java.util.Collection;
|
||||||
|
|
||||||
|
public class CustomFieldInFilter extends FieldInFilter {
|
||||||
|
|
||||||
|
private String param;
|
||||||
|
|
||||||
|
public CustomFieldInFilter(String name,String param, Collection<Object> values) {
|
||||||
|
super(name, values);
|
||||||
|
this.param = param;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String getNamed(String name, int order) {
|
||||||
|
return super.getNamed(param, order);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String getNamed(String pre, String name, int order) {
|
||||||
|
return super.getNamed(pre, param, order);
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -1,7 +1,7 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
<configuration debug="false" scan="false">
|
<configuration debug="false" scan="false">
|
||||||
<springProperty scop="context" name="spring.application.name" source="spring.application.name" defaultValue=""/>
|
<springProperty scop="context" name="spring.application.name" source="spring.application.name" defaultValue=""/>
|
||||||
<property name="log.path" value="/app/logs/${spring.application.name}"/>
|
<property name="log.path" value="~/app/logs/${spring.application.name}"/>
|
||||||
<!-- 彩色日志格式 -->
|
<!-- 彩色日志格式 -->
|
||||||
<property name="CONSOLE_LOG_PATTERN"
|
<property name="CONSOLE_LOG_PATTERN"
|
||||||
value="${CONSOLE_LOG_PATTERN:-%clr(%d{yyyy-MM-dd HH:mm:ss.SSS}){faint} %clr(${LOG_LEVEL_PATTERN:-%5p}) %clr(${PID:- }){magenta} %clr(---){faint} %clr([%15.15t]){faint} %clr(%-40.40logger{39}){cyan} %clr(:){faint} %m%n${LOG_EXCEPTION_CONVERSION_WORD:-%wEx}}"/>
|
value="${CONSOLE_LOG_PATTERN:-%clr(%d{yyyy-MM-dd HH:mm:ss.SSS}){faint} %clr(${LOG_LEVEL_PATTERN:-%5p}) %clr(${PID:- }){magenta} %clr(---){faint} %clr([%15.15t]){faint} %clr(%-40.40logger{39}){cyan} %clr(:){faint} %m%n${LOG_EXCEPTION_CONVERSION_WORD:-%wEx}}"/>
|
||||||
|
|||||||
@@ -0,0 +1,28 @@
|
|||||||
|
package com.xboe.module.boecase.dao;
|
||||||
|
|
||||||
|
import com.xboe.module.boecase.entity.CasesMajorType;
|
||||||
|
import org.junit.jupiter.api.Test;
|
||||||
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
|
import org.springframework.boot.test.context.SpringBootTest;
|
||||||
|
import org.springframework.test.context.ActiveProfiles;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
import static org.junit.jupiter.api.Assertions.*;
|
||||||
|
|
||||||
|
@SpringBootTest
|
||||||
|
@ActiveProfiles("dev")
|
||||||
|
class CasesMajorTypeRepoDaoTest {
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private CasesMajorTypeRepoDao casesMajorTypeRepoDao;
|
||||||
|
|
||||||
|
@Test
|
||||||
|
void findCasesBy() {
|
||||||
|
ArrayList<String> params = new ArrayList<>();
|
||||||
|
params.add("27737267694995149");
|
||||||
|
List<CasesMajorType> majorTypes = casesMajorTypeRepoDao.findCasesBy(params);
|
||||||
|
System.out.println(majorTypes);
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,21 @@
|
|||||||
|
package com.xboe.module.boecase.dao;
|
||||||
|
|
||||||
|
import com.xboe.module.boecase.dto.CasePageVo;
|
||||||
|
import com.xboe.module.boecase.entity.Cases;
|
||||||
|
import org.junit.jupiter.api.Test;
|
||||||
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
|
import org.springframework.boot.test.context.SpringBootTest;
|
||||||
|
import org.springframework.data.domain.Page;
|
||||||
|
import org.springframework.data.domain.PageRequest;
|
||||||
|
import org.springframework.test.context.ActiveProfiles;
|
||||||
|
|
||||||
|
import static org.junit.jupiter.api.Assertions.*;
|
||||||
|
|
||||||
|
@SpringBootTest
|
||||||
|
@ActiveProfiles("dev")
|
||||||
|
class CasesRecordDaoTest {
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private CasesRecordDao casesRecordDao;
|
||||||
|
|
||||||
|
}
|
||||||
@@ -0,0 +1,32 @@
|
|||||||
|
package com.xboe.module.boecase.service.impl;
|
||||||
|
|
||||||
|
import cn.hutool.core.collection.ListUtil;
|
||||||
|
import com.xboe.common.PageList;
|
||||||
|
import com.xboe.module.boecase.dto.CasePageVo;
|
||||||
|
import com.xboe.module.boecase.entity.Cases;
|
||||||
|
import com.xboe.module.boecase.service.ICasesService;
|
||||||
|
import org.junit.jupiter.api.Test;
|
||||||
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
|
import org.springframework.boot.test.context.SpringBootTest;
|
||||||
|
import org.springframework.test.context.ActiveProfiles;
|
||||||
|
|
||||||
|
import static org.junit.jupiter.api.Assertions.*;
|
||||||
|
|
||||||
|
@SpringBootTest
|
||||||
|
@ActiveProfiles("dev")
|
||||||
|
class CasesServiceImplTest {
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private ICasesService casesService;
|
||||||
|
|
||||||
|
@Test
|
||||||
|
void queryPageCasesV2() {
|
||||||
|
CasePageVo pageVo = new CasePageVo();
|
||||||
|
// pageVo.setYears(ListUtil.toList(2023));
|
||||||
|
pageVo.setPageIndex(1);
|
||||||
|
pageVo.setPageSize(10);
|
||||||
|
pageVo.setExcellent(Boolean.TRUE);
|
||||||
|
PageList<Cases> casesV2 = casesService.queryPageCasesV2(pageVo);
|
||||||
|
System.out.println(casesV2);
|
||||||
|
}
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user