mirror of
https://codeup.aliyun.com/67762337eccfc218f6110e0e/per-boe/java-servers.git
synced 2025-12-14 05:16:49 +08:00
提交推荐查询
This commit is contained in:
@@ -0,0 +1,37 @@
|
||||
package com.xboe.module.boecase.dao;
|
||||
|
||||
import com.xboe.module.boecase.dto.CasePageVo;
|
||||
import com.xboe.module.boecase.entity.Cases;
|
||||
import org.springframework.data.domain.Page;
|
||||
import org.springframework.data.domain.Pageable;
|
||||
import org.springframework.data.jpa.repository.JpaRepository;
|
||||
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
|
||||
import org.springframework.data.jpa.repository.Query;
|
||||
import org.springframework.data.repository.query.Param;
|
||||
import org.springframework.stereotype.Repository;
|
||||
|
||||
/**
|
||||
* @author : civism
|
||||
* @version 1.0
|
||||
* @date 2023/6/20 18:55
|
||||
*/
|
||||
@Repository
|
||||
public interface CasesRecordDao extends JpaRepository<Cases, String>, JpaSpecificationExecutor<Cases> {
|
||||
|
||||
@Query(nativeQuery = true, value = "select b.* from boe_cases_recommend_push_record a LEFT JOIN boe_cases b on. a.case_id = b.id and b.deleted=false " +
|
||||
" where a.deleted=false and a.push_user_id= :#{#condition.userId}" +
|
||||
" and if(:#{#condition.keyWord} is not null,b.title like CONCAT('%',:#{#condition.keyWord},'%')" +
|
||||
" or b.author_name like CONCAT('%',:#{#condition.keyWord},'%')" +
|
||||
" or b.keyword1 like CONCAT('%',:#{#condition.keyWord},'%')" +
|
||||
" or b.keyword2 like CONCAT('%',:#{#condition.keyWord},'%')" +
|
||||
" or b.keyword3 like CONCAT('%',:#{#condition.keyWord},'%')" +
|
||||
" or b.keyword4 like CONCAT('%',:#{#condition.keyWord},'%')" +
|
||||
" or b.keyword5 like CONCAT('%',:#{#condition.keyWord},'%'),1=1)" +
|
||||
" and if(:#{#condition.years} is not null ,YEAR(b.sys_create_time) in (:#{#condition.years}),1=1 )" +
|
||||
" and if(:#{#condition.majorType} is nto null ,b.major_type = :#{#condition.majorType},1=1) " +
|
||||
" and if(:#{#condition.org1} is not null,b.org_domain_parent in (:#{#condition.org1}),1=1)" +
|
||||
" and if(:#{#condition.org2} is not null,b.org_domain_parent2 in (:#{#condition.org2}),1=1)" +
|
||||
" and if(:#{#condition.org3} is not null,b.org_domain_parent3 in (:#{#condition.org3}),1=1)" +
|
||||
" group by b.id order by a.sys_create_time DESC")
|
||||
Page<Cases> queryList(Pageable pageable, @Param("condition") CasePageVo casePage);
|
||||
}
|
||||
@@ -1,8 +1,11 @@
|
||||
package com.xboe.module.boecase.dto;
|
||||
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
import lombok.Data;
|
||||
import org.apache.commons.collections4.CollectionUtils;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
@Data
|
||||
public class CasePageVo extends PageDto {
|
||||
@@ -51,4 +54,31 @@ public class CasePageVo extends PageDto {
|
||||
*/
|
||||
private String type;
|
||||
|
||||
/**
|
||||
* 人员id
|
||||
*/
|
||||
private String userId;
|
||||
|
||||
|
||||
public List<String> getOrg1() {
|
||||
if (CollectionUtils.isNotEmpty(this.orgDomainDtos)) {
|
||||
return orgDomainDtos.stream().map(OrgDomainDto::getOrgDomainParent).filter(StrUtil::isNotBlank).collect(Collectors.toList());
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
public List<String> getOrg2() {
|
||||
if (CollectionUtils.isNotEmpty(this.orgDomainDtos)) {
|
||||
return orgDomainDtos.stream().map(OrgDomainDto::getOrgDomainParent2).filter(StrUtil::isNotBlank).collect(Collectors.toList());
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
public List<String> getOrg3() {
|
||||
if (CollectionUtils.isNotEmpty(this.orgDomainDtos)) {
|
||||
return orgDomainDtos.stream().map(OrgDomainDto::getOrgDomainParent3).filter(StrUtil::isNotBlank).collect(Collectors.toList());
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -1,37 +1,35 @@
|
||||
package com.xboe.module.boecase.service.impl;
|
||||
|
||||
import java.time.LocalDateTime;
|
||||
import java.util.*;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
import javax.transaction.Transactional;
|
||||
|
||||
import cn.hutool.core.collection.CollUtil;
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
import com.xboe.common.OrderCondition;
|
||||
import com.xboe.common.PageList;
|
||||
import com.xboe.common.utils.IDGenerator;
|
||||
import com.xboe.common.utils.StringUtil;
|
||||
import com.xboe.core.orm.*;
|
||||
import com.xboe.module.boecase.dao.CasesDao;
|
||||
import com.xboe.module.boecase.dao.CasesMajorTypeDao;
|
||||
import com.xboe.module.boecase.dao.CasesRecordDao;
|
||||
import com.xboe.module.boecase.dto.*;
|
||||
import com.xboe.module.boecase.entity.Cases;
|
||||
import com.xboe.module.boecase.entity.CasesMajorType;
|
||||
import com.xboe.module.boecase.service.ICasesService;
|
||||
import com.xboe.module.dict.dao.SysDictionaryDao;
|
||||
import com.xboe.module.dict.entity.DictItem;
|
||||
import com.xboe.school.vo.CasesVo;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.springframework.data.domain.Page;
|
||||
import org.springframework.data.domain.PageRequest;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import com.xboe.common.OrderCondition;
|
||||
import com.xboe.common.PageList;
|
||||
import com.xboe.common.utils.StringUtil;
|
||||
import com.xboe.core.orm.FieldFilters;
|
||||
import com.xboe.core.orm.FieldUpdateType;
|
||||
import com.xboe.core.orm.IFieldFilter;
|
||||
import com.xboe.core.orm.LikeMatchMode;
|
||||
import com.xboe.core.orm.QueryBuilder;
|
||||
import com.xboe.core.orm.UpdateBuilder;
|
||||
import com.xboe.module.boecase.dao.CasesDao;
|
||||
import com.xboe.module.boecase.entity.Cases;
|
||||
import com.xboe.module.boecase.service.ICasesService;
|
||||
import javax.annotation.Resource;
|
||||
import javax.transaction.Transactional;
|
||||
import java.time.LocalDateTime;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
import java.util.Objects;
|
||||
|
||||
@Slf4j
|
||||
@Service
|
||||
@@ -47,9 +45,12 @@ public class CasesServiceImpl implements ICasesService {
|
||||
@Resource
|
||||
CasesMajorTypeDao casesMajorTypeDao;
|
||||
|
||||
@Resource
|
||||
private CasesRecordDao casesRecordDao;
|
||||
|
||||
/**
|
||||
* 案例分页查询,用于门户的查询
|
||||
* */
|
||||
*/
|
||||
@Override
|
||||
public PageList<Cases> queryPageCases(int pageIndex, int pageSize, CaseVo caseVo) {
|
||||
QueryBuilder query = QueryBuilder.from(Cases.class);
|
||||
@@ -82,7 +83,6 @@ public class CasesServiceImpl implements ICasesService {
|
||||
}
|
||||
|
||||
|
||||
|
||||
//增加只是查询有附件的
|
||||
filters.add(FieldFilters.isNotNull("filePath"));
|
||||
filters.add(FieldFilters.ne("filePath", ""));
|
||||
@@ -165,156 +165,23 @@ public class CasesServiceImpl implements ICasesService {
|
||||
|
||||
/**
|
||||
* 案例分页查询,用于门户的查询 v2
|
||||
* */
|
||||
*/
|
||||
@Override
|
||||
public PageList<Cases> queryPageCasesV2(CasePageVo caseVo) {
|
||||
QueryBuilder query=QueryBuilder.from(Cases.class);
|
||||
PageList<Cases> page=null;
|
||||
List<IFieldFilter> filters = new ArrayList<>();
|
||||
filters.add(FieldFilters.eq("deleted",false));
|
||||
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<OrgDomainDto> orgDomainDtos = caseVo.getOrgDomainDtos();
|
||||
IFieldFilter orgDomain = null;
|
||||
if(CollUtil.isNotEmpty(orgDomainDtos)){
|
||||
for (int i = 0; i < orgDomainDtos.size(); i++) {
|
||||
OrgDomainDto domainDto = orgDomainDtos.get(i);
|
||||
String orgDomainParent = domainDto.getOrgDomainParent();
|
||||
String orgDomainParent2 = domainDto.getOrgDomainParent2();
|
||||
String orgDomainParent3 = domainDto.getOrgDomainParent3();
|
||||
List<IFieldFilter> fieldFilters = new ArrayList<>();
|
||||
IFieldFilter itemFilter = null;
|
||||
if (StrUtil.isNotBlank(orgDomainParent)) {
|
||||
itemFilter = FieldFilters.eq("orgDomainParent",orgDomainParent);
|
||||
}
|
||||
if (StrUtil.isNotBlank(orgDomainParent2)) {
|
||||
IFieldFilter orgDomainParentFilter = FieldFilters.eq("orgDomainParent2", orgDomainParent2);
|
||||
if (Objects.nonNull(itemFilter)) {
|
||||
itemFilter = FieldFilters.and(itemFilter, orgDomainParentFilter);
|
||||
} else {
|
||||
itemFilter = orgDomainParentFilter;
|
||||
}
|
||||
}
|
||||
if (StrUtil.isNotBlank(orgDomainParent3)) {
|
||||
IFieldFilter orgDomainParent3Filter = FieldFilters.eq("orgDomainParent3", orgDomainParent3);
|
||||
if (Objects.nonNull(itemFilter)) {
|
||||
itemFilter = FieldFilters.and(itemFilter, orgDomainParent3Filter);
|
||||
} else {
|
||||
itemFilter = orgDomainParent3Filter;
|
||||
}
|
||||
}
|
||||
if (i==0) {
|
||||
orgDomain = itemFilter;
|
||||
} else {
|
||||
orgDomain = FieldFilters.or(orgDomain, itemFilter);
|
||||
}
|
||||
}
|
||||
}
|
||||
if (Objects.nonNull(orgDomain)) {
|
||||
filters.add(orgDomain);
|
||||
}
|
||||
//创建时间过滤
|
||||
List<String> years = caseVo.getYears();
|
||||
if (CollUtil.isNotEmpty(years)) {
|
||||
FieldFilters.in("YEAR(sysCreateTime)",years);
|
||||
}
|
||||
|
||||
//增加只是查询有附件的
|
||||
filters.add(FieldFilters.isNotNull("filePath"));
|
||||
filters.add(FieldFilters.ne("filePath",""));
|
||||
|
||||
if(StringUtil.isNotBlank(caseVo.getMajorType())){
|
||||
|
||||
QueryBuilder from = QueryBuilder.from(CasesMajorType.class);
|
||||
//前端直接字符串拼接传,后端转化数组
|
||||
if(caseVo.getMajorType().contains(",")){
|
||||
String[] split = caseVo.getMajorType().split(",");
|
||||
List<String> strings = Arrays.asList(split);
|
||||
from.addFilter(FieldFilters.in("majorId",strings));
|
||||
}else{
|
||||
from.addFilter(FieldFilters.eq("majorId",caseVo.getMajorType()));
|
||||
}
|
||||
from.addGroupBy("caseId");
|
||||
from.addFields("id","caseId");
|
||||
// List<CasesMajorType> list = casesMajorTypeDao.findList(from.builder());
|
||||
List<Object[]> listFields=null;
|
||||
try {
|
||||
listFields = casesMajorTypeDao.findListFields(from.builder());
|
||||
} catch (Exception e) {
|
||||
log.error("查询失败",e);
|
||||
}
|
||||
List<String> list1 = new ArrayList<>();
|
||||
if(listFields!=null && !listFields.isEmpty()){
|
||||
for (Object[] obj:listFields) {
|
||||
list1.add((String) obj[1]);
|
||||
}
|
||||
}
|
||||
if(list1!=null &&!list1.isEmpty()){
|
||||
query.addFilter(FieldFilters.in("id",list1));
|
||||
}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 && caseVo.getExcellent()){
|
||||
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;
|
||||
PageRequest pageRequest = PageRequest.of(caseVo.getPageIndex(), caseVo.getPageSize());
|
||||
Page<Cases> cases = casesRecordDao.queryList(pageRequest, caseVo);
|
||||
PageList<Cases> pageList = new PageList<>();
|
||||
pageList.setCount((int) cases.getTotalElements());
|
||||
pageList.setPageSize(cases.getSize());
|
||||
pageList.setList(cases.getContent());
|
||||
return pageList;
|
||||
}
|
||||
|
||||
@Override
|
||||
public PageList<Cases> queryRecommendPageCasesV2(CasePageVo caseVo) {
|
||||
|
||||
String hql = "SELECT c.* FROM CasesRecommendPushRecord as rp INNER JOIN Cases as c ON rp.caseId = c.id WHERE 1 = 1";
|
||||
String hql = "select b.* from boe_cases_recommend_push_record a LEFT JOIN boe_cases b on. a.case_id = b.id\n" +
|
||||
"where a.push_user_id=1 GROUP BY b.id ORDER BY a.sys_create_time DESC";
|
||||
|
||||
QueryBuilder query = QueryBuilder.from(Cases.class);
|
||||
PageList<Cases> page = null;
|
||||
@@ -448,7 +315,6 @@ public class CasesServiceImpl implements ICasesService {
|
||||
} else {
|
||||
order = OrderCondition.desc("sysCreateTime");
|
||||
}
|
||||
|
||||
query.addFilters(filters);
|
||||
query.addOrder(order);
|
||||
query.addOrder(OrderCondition.rand());
|
||||
@@ -460,7 +326,8 @@ public class CasesServiceImpl implements ICasesService {
|
||||
}
|
||||
|
||||
/**
|
||||
* 案例分页查询,是否置顶*/
|
||||
* 案例分页查询,是否置顶
|
||||
*/
|
||||
@Override
|
||||
public PageList<Cases> managerList(int pageIndex, int pageSize, CaseVo caseVo) {
|
||||
QueryBuilder query = QueryBuilder.from(Cases.class);
|
||||
@@ -633,7 +500,7 @@ public class CasesServiceImpl implements ICasesService {
|
||||
|
||||
/**
|
||||
* 设置置顶
|
||||
* */
|
||||
*/
|
||||
@Override
|
||||
public void updateTop(String id, Integer isTop) {
|
||||
if (isTop == 0) {
|
||||
@@ -642,14 +509,18 @@ public class CasesServiceImpl implements ICasesService {
|
||||
casesDao.updateMultiFieldById(id, UpdateBuilder.create("isTop", true), UpdateBuilder.create("topTime", LocalDateTime.now()));
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
*删除案例 */
|
||||
* 删除案例
|
||||
*/
|
||||
@Override
|
||||
public void delete(String id) {
|
||||
casesDao.setDeleted(id);
|
||||
}
|
||||
|
||||
/**
|
||||
* 案例详情*/
|
||||
* 案例详情
|
||||
*/
|
||||
@Override
|
||||
public Cases selectById(String id, boolean addView) {
|
||||
Cases cases = casesDao.get(id);
|
||||
@@ -666,8 +537,10 @@ public class CasesServiceImpl implements ICasesService {
|
||||
}
|
||||
return cases;
|
||||
}
|
||||
|
||||
/**
|
||||
* 作者排行榜*/
|
||||
* 作者排行榜
|
||||
*/
|
||||
@Override
|
||||
public List<UsernameDto> usernameList(Integer pageSize) {
|
||||
QueryBuilder builder = QueryBuilder.from(Cases.class);
|
||||
@@ -691,9 +564,10 @@ public class CasesServiceImpl implements ICasesService {
|
||||
|
||||
return list;
|
||||
}
|
||||
|
||||
/**
|
||||
* 首页案例
|
||||
* */
|
||||
*/
|
||||
@Override
|
||||
public List<CaseDto> caseRandom(Integer pageSize, String orderField, Boolean orderAsc) {
|
||||
|
||||
@@ -946,5 +820,4 @@ public class CasesServiceImpl implements ICasesService {
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user