Merge branch 'preview' of codeup.aliyun.com:6265f483e4166464dc2f9c14/boeu/baseservers into release

# Conflicts:
#	servers/boe-server-all/src/main/resources/application-pre.properties
This commit is contained in:
dongruihua
2022-10-23 20:11:46 +08:00
15 changed files with 113 additions and 39 deletions

View File

@@ -282,11 +282,20 @@ public class CourseElasticsearchImpl implements ICourseFullTextSearch{
} }
//增加companyId过滤 //增加companyId过滤
if(StringUtils.isNotBlank(params.getCompanyId())) { if(StringUtils.isNotBlank(params.getCompanyId())) {
boolQuery.filter(QueryBuilders.termQuery("companyId", params.getCompanyId())); BoolQueryBuilder companyFilter= QueryBuilders.boolQuery();
companyFilter.should(QueryBuilders.termQuery("source",2));//新系统的数据
BoolQueryBuilder old= QueryBuilders.boolQuery();
old.must(QueryBuilders.termQuery("source",1));//必须是老系统的数据
old.must(QueryBuilders.termQuery("companyId",params.getCompanyId()));//必须是老系统的数据
companyFilter.should(old);
companyFilter.minimumShouldMatch(1);
boolQuery.filter(companyFilter);
} }
//加上Source判断是为了应对后台查询后台查询时不需要权限但是需要指定数据来源 //加上Source判断是为了应对后台查询后台查询时不需要权限但是需要指定数据来源
if(params.getSource()==null || params.getSource()==0 ) { if(params.getSource()==null || params.getSource()==0 ) {
//受众权限条件,必须是有受众的课程并且受众条件不为空 //受众权限条件,必须是有受众的课程并且受众条件不为空
if(params.getAudiences()!=null && params.getAudiences().length>0) { if(params.getAudiences()!=null && params.getAudiences().length>0) {

View File

@@ -279,7 +279,7 @@ public class ArticleServiceImpl implements IArticleService{
usernameDto.setShares((Integer) o[6]); usernameDto.setShares((Integer) o[6]);
usernameDto.setComments((Integer) o[7]); usernameDto.setComments((Integer) o[7]);
usernameDto.setViews((Integer) o[8]); usernameDto.setViews((Integer) o[8]);
usernameDto.setSysCreateAid((String) o[9]); usernameDto.setSysCreateAid(o[9].toString());
usernameDtos.add(usernameDto); usernameDtos.add(usernameDto);
} }

View File

@@ -134,6 +134,8 @@ public class CourseFullTextApi extends ApiBaseController{
paras.setSysType2(dto.getSysType2());//专业分类二级 paras.setSysType2(dto.getSysType2());//专业分类二级
paras.setSysType3(dto.getSysType3());//专业分类三级 paras.setSysType3(dto.getSysType3());//专业分类三级
paras.setDevice(dto.getDevice()); paras.setDevice(dto.getDevice());
//用户的companyId
paras.setCompanyId(dto.getCompanyId());
//paras.setAudience(dto.getAudiences()); //paras.setAudience(dto.getAudiences());
if(StringUtils.isNotBlank(dto.getAudiences())) { if(StringUtils.isNotBlank(dto.getAudiences())) {
paras.setAudiences(dto.getAudiences().split(",")); paras.setAudiences(dto.getAudiences().split(","));

View File

@@ -60,6 +60,9 @@ public class CourseQueryDto {
/**排序顺序*/ /**排序顺序*/
private Boolean orderAsc; private Boolean orderAsc;
/**companyId 主要是老系统的权限*/
private String companyId;
/** /**
* 置顶 * 置顶
*/ */

View File

@@ -6,6 +6,7 @@ import java.util.stream.Collectors;
import com.xboe.core.CurrentUser; import com.xboe.core.CurrentUser;
import com.xboe.module.interaction.dto.*; import com.xboe.module.interaction.dto.*;
import com.xboe.school.study.service.IStudyCourseService;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
@@ -39,6 +40,9 @@ public class FavoritesApi extends ApiBaseController {
@Autowired @Autowired
ICourseTeacherService ctService; ICourseTeacherService ctService;
@Autowired
IStudyCourseService studyCourseService;
/** /**
* 此处的查询需要再讨论一下,因为有不同的内容,前端呈现的也不一样 * 此处的查询需要再讨论一下,因为有不同的内容,前端呈现的也不一样
* *
@@ -112,12 +116,12 @@ public class FavoritesApi extends ApiBaseController {
public JsonResponse<PageList<FavoriteDto>> findCoursePage(Pagination pager, Favorites favorites, Integer type, String keyword) { public JsonResponse<PageList<FavoriteDto>> findCoursePage(Pagination pager, Favorites favorites, Integer type, String keyword) {
String aid = this.getCurrent().getAccountId(); String aid = this.getCurrent().getAccountId();
PageList<FavoriteDto> coursePage = service.findCoursePage(pager.getPageIndex(), pager.getPageSize(), favorites, type, keyword,aid); PageList<FavoriteDto> coursePage = service.findCoursePage(pager.getPageIndex(), pager.getPageSize(), favorites, type, keyword,aid);
Set<String> cids = new HashSet<String>(); // Set<String> cids = new HashSet<String>();
for(FavoriteDto dto : coursePage.getList()) { // for(FavoriteDto dto : coursePage.getList()) {
if(!cids.contains(dto.getObjId())) { // if(!cids.contains(dto.getObjId())) {
cids.add(dto.getObjId()); // cids.add(dto.getObjId());
} // }
} // }
// if(cids.size()>0) { // if(cids.size()>0) {
//// List<CourseTeacherDto> teachers = ctService.queryTeacher(cids); //// List<CourseTeacherDto> teachers = ctService.queryTeacher(cids);
//// for(FavoriteDto fdto : coursePage.getList()){ //// for(FavoriteDto fdto : coursePage.getList()){
@@ -128,6 +132,18 @@ public class FavoritesApi extends ApiBaseController {
//// } //// }
//// } //// }
// } // }
List<String> courseIds = coursePage.getList().stream().map(FavoriteDto::getObjId).collect(Collectors.toList());
List<Object[]> progress = studyCourseService.progress(aid, courseIds);
if(!coursePage.getList().isEmpty() && !progress.isEmpty()) {
for (FavoriteDto dto : coursePage.getList()) {
for (Object[] o : progress) {
if (dto.getObjId().equals(o[0])) {
dto.setProgress((Float) o[1]);
}
}
}
}
return success(coursePage); return success(coursePage);
} }
@@ -206,6 +222,20 @@ public class FavoritesApi extends ApiBaseController {
public JsonResponse<PageList<FavoriteTotalDto>> queryAll(Pagination pager,String keyword){ public JsonResponse<PageList<FavoriteTotalDto>> queryAll(Pagination pager,String keyword){
String aid = this.getCurrent().getAccountId(); String aid = this.getCurrent().getAccountId();
PageList<FavoriteTotalDto> favoriteTotalDtoPageList = service.queryAll(pager.getPageIndex(), pager.getPageSize(), aid, keyword); PageList<FavoriteTotalDto> favoriteTotalDtoPageList = service.queryAll(pager.getPageIndex(), pager.getPageSize(), aid, keyword);
List<String> courseIds = favoriteTotalDtoPageList.getList().stream().filter(favoriteTotalDto -> favoriteTotalDto.getType() == 1).
map(FavoriteTotalDto::getId).collect(Collectors.toList());
List<Object[]> progress = studyCourseService.progress(aid, courseIds);
if(!favoriteTotalDtoPageList.getList().isEmpty() && !progress.isEmpty()) {
for (FavoriteTotalDto dto : favoriteTotalDtoPageList.getList()) {
for (Object[] o : progress) {
if (dto.getId().equals(o[0])) {
dto.setProgress((Float) o[1]);
}
}
}
}
return success(favoriteTotalDtoPageList); return success(favoriteTotalDtoPageList);
} }

View File

@@ -65,5 +65,10 @@ public class FavoriteDto {
/**针对于问题是否已解决*/ /**针对于问题是否已解决*/
private Boolean isResolve; private Boolean isResolve;
/**
* 学习进度
* */
private Float progress;
} }

View File

@@ -81,6 +81,11 @@ public class FavoriteTotalDto {
* */ * */
private Integer breCommend; private Integer breCommend;
/**
* 学习进度
* */
private Float progress;
public FavoriteTotalDto() { public FavoriteTotalDto() {
} }

View File

@@ -91,6 +91,7 @@ public class PortalConsoleApi extends ApiBaseController{
map.put("aid",account.getId()); map.put("aid",account.getId());
map.put("sysId",user.getSysId()); map.put("sysId",user.getSysId());
map.put("companyId",user.getCompanyId());
map.put("name",user.getName()); map.put("name",user.getName());
map.put("sex",user.getGender()); map.put("sex",user.getGender());
map.put("userNo",user.getUserNo()); map.put("userNo",user.getUserNo());

View File

@@ -1,12 +1,20 @@
package com.xboe.school.api; package com.xboe.school.api;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.HashMap;
import java.util.List; import java.util.List;
import java.util.Map;
import javax.annotation.Resource;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;
import com.xboe.common.PageList; import com.xboe.common.PageList;
import com.xboe.common.Pagination; import com.xboe.common.Pagination;
import com.xboe.core.JsonResponse;
import com.xboe.core.api.ApiBaseController;
import com.xboe.module.article.entity.Article; import com.xboe.module.article.entity.Article;
import com.xboe.module.article.service.IArticleService; import com.xboe.module.article.service.IArticleService;
import com.xboe.module.boecase.service.ICasesService; import com.xboe.module.boecase.service.ICasesService;
@@ -17,30 +25,9 @@ import com.xboe.module.course.service.ICourseService;
import com.xboe.module.qa.entity.Question; import com.xboe.module.qa.entity.Question;
import com.xboe.module.qa.service.IQuestionService; import com.xboe.module.qa.service.IQuestionService;
import com.xboe.school.vo.CasesVo; import com.xboe.school.vo.CasesVo;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;
import com.xboe.account.entity.Account;
import com.xboe.account.service.IAccountService;
import com.xboe.common.utils.StringUtil;
import com.xboe.core.CurrentUser;
import com.xboe.core.IAuthorizationToken;
import com.xboe.core.JsonResponse;
import com.xboe.core.api.ApiBaseController;
import com.xboe.module.teacher.entity.Teacher;
import com.xboe.module.teacher.service.ITeacherService;
import com.xboe.system.organization.entity.Organization;
import com.xboe.system.organization.service.IOrganizationService;
import com.xboe.system.user.entity.User;
import com.xboe.system.user.service.IUserService;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import javax.annotation.Resource;
/** /**
* 门户首页接口 * 门户首页接口
* *

View File

@@ -74,4 +74,9 @@ public interface IStudyCourseService {
* */ * */
List<StudyCourse> followids(StudyCourseQuery studyCourseQuery); List<StudyCourse> followids(StudyCourseQuery studyCourseQuery);
/**
* 查询课程最新学习记录的进度
* */
List<Object[]> progress(String aid,List<String> courseIds);
} }

View File

@@ -266,8 +266,8 @@ public class StudyCourseServiceImpl implements IStudyCourseService{
// List<StudyCouseDto> studyCouseDtos = new ArrayList<>(); // List<StudyCouseDto> studyCouseDtos = new ArrayList<>();
QueryBuilder builder = QueryBuilder.from(StudyCourse.class.getSimpleName()+" sc,"+ Course.class.getSimpleName()+" c"); QueryBuilder builder = QueryBuilder.from(StudyCourse.class.getSimpleName()+" sc,"+ Course.class.getSimpleName()+" c");
builder.addFilter(FieldFilters.eqField("sc.courseId","c.id")); builder.addFilter(FieldFilters.eqField("sc.courseId","c.id"));
builder.addFilter(FieldFilters.eq("c.enabled",true)); // builder.addFilter(FieldFilters.eq("c.enabled",true));
builder.addFilter(FieldFilters.eq("c.deleted",false)); // builder.addFilter(FieldFilters.eq("c.deleted",false));
builder.addFilter(FieldFilters.eq("sc.aid",studyCourseQuery.getAid())); builder.addFilter(FieldFilters.eq("sc.aid",studyCourseQuery.getAid()));
builder.addFilter(FieldFilters.in("sc.courseId",studyCourseQuery.getIds())); builder.addFilter(FieldFilters.in("sc.courseId",studyCourseQuery.getIds()));
builder.addOrder(OrderCondition.desc("sc.lastTime")); builder.addOrder(OrderCondition.desc("sc.lastTime"));
@@ -297,8 +297,8 @@ public class StudyCourseServiceImpl implements IStudyCourseService{
public List<StudyCourse> followids(StudyCourseQuery studyCourseQuery) { public List<StudyCourse> followids(StudyCourseQuery studyCourseQuery) {
QueryBuilder builder = QueryBuilder.from(StudyCourse.class.getSimpleName()+" sc,"+ Course.class.getSimpleName()+" c"); QueryBuilder builder = QueryBuilder.from(StudyCourse.class.getSimpleName()+" sc,"+ Course.class.getSimpleName()+" c");
builder.addFilter(FieldFilters.eqField("sc.courseId","c.id")); builder.addFilter(FieldFilters.eqField("sc.courseId","c.id"));
builder.addFilter(FieldFilters.eq("c.enabled",true)); // builder.addFilter(FieldFilters.eq("c.enabled",true));
builder.addFilter(FieldFilters.eq("c.deleted",false)); // builder.addFilter(FieldFilters.eq("c.deleted",false));
builder.addFilter(FieldFilters.in("sc.aid",studyCourseQuery.getAids())); builder.addFilter(FieldFilters.in("sc.aid",studyCourseQuery.getAids()));
builder.addFilter(FieldFilters.in("sc.courseId",studyCourseQuery.getIds())); builder.addFilter(FieldFilters.in("sc.courseId",studyCourseQuery.getIds()));
builder.addOrder(OrderCondition.desc("sc.lastTime")); builder.addOrder(OrderCondition.desc("sc.lastTime"));
@@ -307,6 +307,25 @@ public class StudyCourseServiceImpl implements IStudyCourseService{
return list; return list;
} }
@Override
public List<Object[]> progress(String aid, List<String> courseIds) {
List<Object> floats = new ArrayList<>();
QueryBuilder builder = QueryBuilder.from(StudyCourse.class);
builder.addFilter(FieldFilters.eq("aid",aid));
builder.addFilter(FieldFilters.in("courseId",courseIds));
builder.addOrder(OrderCondition.desc("lastTime"));
// builder.setPageSize(1);
// builder.addGroupBy("aid");
builder.addFields("courseId","progress");
try {
List<Object[]> listFields = studyCourseDao.findListFields(builder.builder());
return listFields;
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
@Override @Override
public StudyCourse has(String courseId, String aid) { public StudyCourse has(String courseId, String aid) {
List<StudyCourse> list=studyCourseDao.findList(1,OrderCondition.desc("id"),FieldFilters.eq("courseId", courseId),FieldFilters.eq("aid", aid)); List<StudyCourse> list=studyCourseDao.findList(1,OrderCondition.desc("id"),FieldFilters.eq("courseId", courseId),FieldFilters.eq("aid", aid));

View File

@@ -35,6 +35,9 @@ xboe.externalinterface.url.system=http://127.0.0.1:9091
## 新增加的教师的内部调用接口 ## 新增加的教师的内部调用接口
xboe.old.base.url=https://u.boe.com xboe.old.base.url=https://u.boe.com
## 用户统计接口的api地址
xboe.stat.base.url=http://127.0.0.1:9080
#加密盐 #加密盐
#jasypt.encryptor.password=jasypt #jasypt.encryptor.password=jasypt
jasypt.encryptor.algorithm=PBEWithMD5AndDES jasypt.encryptor.algorithm=PBEWithMD5AndDES

View File

@@ -72,6 +72,9 @@ xboe.externalinterface.url.system=http://localhost:9091
## 新增加的教师的内部调用接口 ## 新增加的教师的内部调用接口
xboe.old.base.url=https://u.boe.com xboe.old.base.url=https://u.boe.com
## 用户统计接口的api地址
xboe.stat.base.url=http://127.0.0.1:9080
#加密盐 #加密盐
#jasypt.encryptor.password=jasypt #jasypt.encryptor.password=jasypt
jasypt.encryptor.algorithm=PBEWithMD5AndDES jasypt.encryptor.algorithm=PBEWithMD5AndDES

View File

@@ -47,6 +47,9 @@ xboe.externalinterface.url.system=http://127.0.0.1:9091
## 新增加的教师的内部调用接口 ## 新增加的教师的内部调用接口
xboe.old.base.url=https://u-pre.boe.com xboe.old.base.url=https://u-pre.boe.com
## 用户统计接口的api地址
xboe.stat.base.url=http://127.0.0.1:9080
#加密盐 #加密盐
#jasypt.encryptor.password=jasypt #jasypt.encryptor.password=jasypt
jasypt.encryptor.algorithm=PBEWithMD5AndDES jasypt.encryptor.algorithm=PBEWithMD5AndDES

View File

@@ -28,5 +28,4 @@ public class BoeServerAllApplication {
file.deleteOnExit(); file.deleteOnExit();
} }
} }