This commit is contained in:
daihh
2022-11-09 15:20:55 +08:00
16 changed files with 363 additions and 20 deletions

View File

@@ -129,7 +129,26 @@ public class Article extends BaseEntity {
this.shares = shares;
this.favorites = favorites;
}
public Article(String id,String title,String coverurl,String summary,String sysCreateBy,String sysCreateAid,LocalDateTime sysCreateTime,
LocalDateTime publishTime,Integer views, Integer comments, Integer praises, Integer shares,
Integer favorites,String source,Boolean enabled,Boolean deleted){
this.setId(id);
this.setTitle(title);
this.summary=summary;
this.coverurl=coverurl;
this.publishTime=publishTime;
this.views = views;
this.comments = comments;
this.praises = praises;
this.shares = shares;
this.favorites = favorites;
super.setSysCreateBy(sysCreateBy);
super.setSysCreateAid(sysCreateAid);
super.setSysCreateTime(sysCreateTime);
this.source = source;
this.enabled = enabled;
super.setDeleted(deleted);
}
public Article(String id,String title,String summary,String coverurl,String author,String authorInfo,LocalDateTime publishTime) {
this.setId(id);

View File

@@ -23,6 +23,11 @@ public interface IArticleService {
* 首页二期第一张必须是带图的
* */
List<Article> articelList(Integer type);
/**
* 移动端首页 必须都是带图的
* */
List<Article> mobileList(Integer type);
/**
* 自定义条件查询

View File

@@ -90,6 +90,26 @@ public class ArticleServiceImpl implements IArticleService{
}
@Override
public List<Article> mobileList(Integer type) {
QueryBuilder builder = QueryBuilder.from(Article.class);
if(type==2){
builder.addOrder(OrderCondition.desc("views"));
}else{
builder.addOrder(OrderCondition.desc("sysCreateTime"));
}
builder.addFilter(FieldFilters.eq("status", Article.STATUS_PUBLISH));
builder.addFilter(FieldFilters.eq("enabled",true));
builder.addFilter(FieldFilters.eq("deleted",false));
builder.addFilter(FieldFilters.isNotNull("coverurl"));
builder.addFilter(FieldFilters.ge("coverurl", ""));
builder.setPageSize(4);
builder.addFields("new Article(id,coverUrl,title,views,comments,praises,shares,favorites)");
List<Article> list = dao.findList(builder.builder());
return list;
}
//当前先实现,后续优化
@Override
public PageList<Article> query(Integer pageIndex, Integer pageSize,List<IFieldFilter> filters, OrderCondition order) {
@@ -331,7 +351,10 @@ public class ArticleServiceImpl implements IArticleService{
@Override
public List<Article> ids(List<String> ids) {
List<Article> list = dao.findList(FieldFilters.in("id", ids));
QueryBuilder builder = QueryBuilder.from(Article.class);
builder.addFilter(FieldFilters.in("id", ids));
builder.addFields("new Article(id,title,coverurl,summary,sysCreateBy,sysCreateAid,sysCreateTime,publishTime,views,comments,praises,shares,favorites,source,enabled,deleted)");
List<Article> list = dao.findList(builder.builder());
return list;
}

View File

@@ -10,6 +10,7 @@ import javax.annotation.Resource;
import com.xboe.core.orm.FieldFilters;
import com.xboe.module.boecase.dao.CasesMajorTypeDao;
import com.xboe.module.boecase.dto.*;
import com.xboe.module.boecase.entity.CasesMajorType;
import com.xboe.module.dict.entity.DictItem;
import org.springframework.web.bind.annotation.GetMapping;
@@ -26,10 +27,6 @@ import com.xboe.core.api.ApiBaseController;
import com.xboe.core.cache.IXaskCache;
import com.xboe.core.cache.XaskCacheProvider;
import com.xboe.core.log.AutoLog;
import com.xboe.module.boecase.dto.CaseDto;
import com.xboe.module.boecase.dto.CaseRankingDto;
import com.xboe.module.boecase.dto.CaseVo;
import com.xboe.module.boecase.dto.UsernameDto;
import com.xboe.module.boecase.entity.Cases;
import com.xboe.module.boecase.service.ICasesService;
@@ -88,6 +85,15 @@ public class CasesApi extends ApiBaseController {
PageList<Cases> casesPageList = casesService.managerList(pager.getPageIndex(), pager.getPageSize(), caseVo);
return success(casesPageList);
}
/**
* 案例分页
* */
@PostMapping("/pagelist")
public JsonResponse<PageList<CasesFiledVo>> pageList(Pagination pager, CaseVo caseVo){
PageList<CasesFiledVo> pageList = casesService.queryList(pager.getPageIndex(), pager.getPageSize(), caseVo);
return success(pageList);
}
/**
* 设置置顶

View File

@@ -0,0 +1,19 @@
package com.xboe.module.boecase.dto;
import lombok.Data;
@Data
public class CasesFiledVo {
private String id;
private String companyId;
private String coverUrl;
private String title;
private String authorId;
private String authorName;
}

View File

@@ -262,4 +262,23 @@ public class Cases extends BaseEntity {
super.setId(id);
this.title=title;
}
public Cases(String id,String title,String summary,String coverUrl,String authorId,String authorName,LocalDateTime sysCreateTime,Integer breCommend,Integer views,Integer comments,Integer praises,Integer shares,Integer favorites,Boolean deleted
,String sysCreateBy,String sysCreateAid){
this.title=title;
super.setId(id);
this.authorId=authorId;
this.authorName=authorName;
super.setSysCreateTime(sysCreateTime);
super.setSysCreateAid(sysCreateAid);
super.setSysCreateBy(sysCreateBy);
this.summary=summary;
this.coverUrl=coverUrl;
this.breCommend=breCommend;
this.views=views;
this.comments=comments;
this.praises=praises;
this.shares=shares;
this.favorites=favorites;
super.setDeleted(deleted);
}
}

View File

@@ -3,10 +3,7 @@ package com.xboe.module.boecase.service;
import java.util.List;
import com.xboe.common.PageList;
import com.xboe.module.boecase.dto.CaseDto;
import com.xboe.module.boecase.dto.CaseRankingDto;
import com.xboe.module.boecase.dto.CaseVo;
import com.xboe.module.boecase.dto.UsernameDto;
import com.xboe.module.boecase.dto.*;
import com.xboe.module.boecase.entity.Cases;
import com.xboe.module.dict.entity.DictItem;
import com.xboe.school.vo.CasesVo;
@@ -21,6 +18,12 @@ public interface ICasesService{
* 案例管理列表搜索
* */
PageList<Cases> managerList(int pageIndex,int pageSize,CaseVo caseVo);
/**
* 案例分页
* */
PageList<CasesFiledVo> queryList(int pageIndex,int pageSize,CaseVo caseVo);
/**
* 设置置顶
* */

View File

@@ -9,8 +9,7 @@ import javax.transaction.Transactional;
import com.xboe.common.utils.IDGenerator;
import com.xboe.module.boecase.dao.CasesMajorTypeDao;
import com.xboe.module.boecase.dto.CaseRankingDto;
import com.xboe.module.boecase.dto.CaseVo;
import com.xboe.module.boecase.dto.*;
import com.xboe.module.boecase.entity.CasesMajorType;
import com.xboe.module.dict.dao.SysDictionaryDao;
import com.xboe.module.dict.entity.DictItem;
@@ -29,8 +28,6 @@ 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.dto.CaseDto;
import com.xboe.module.boecase.dto.UsernameDto;
import com.xboe.module.boecase.entity.Cases;
import com.xboe.module.boecase.service.ICasesService;
@@ -170,6 +167,54 @@ public class CasesServiceImpl implements ICasesService {
PageList<Cases> page = casesDao.findPage(query.builder());
return page;
}
@Override
public PageList<CasesFiledVo> queryList(int pageIndex, int pageSize, CaseVo caseVo) {
PageList<CasesFiledVo> pageList = new PageList<>();
pageList.setList(new ArrayList<CasesFiledVo>());
QueryBuilder query=QueryBuilder.from(Cases.class);
query.addFilter(FieldFilters.eq("deleted",false));
if(StringUtils.isNotBlank(caseVo.getKeyWord())){
query.addFilter(FieldFilters.like("title", LikeMatchMode.ANYWHERE, caseVo.getKeyWord()));
}
if(caseVo.getIsTop()!=null) {
query.addFilter(FieldFilters.eq("isTop",caseVo.getIsTop()));
}
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.addOrder(order);
query.setPageIndex(pageIndex);
query.setPageSize(pageSize);
query.addFields("id","title","coverUrl","authorId","authorName","companyId");
try {
PageList<Object[]> pageFields = casesDao.findPageFields(query.builder());
for (Object[] o:pageFields.getList()) {
CasesFiledVo casesFiledVo = new CasesFiledVo();
casesFiledVo.setId((String) o[0]);
casesFiledVo.setTitle((String) o[1]);
casesFiledVo.setCoverUrl((String) o[2]);
casesFiledVo.setAuthorId((String) o[3]);
casesFiledVo.setAuthorName((String) o[4]);
casesFiledVo.setCompanyId((String) o[5]);
pageList.getList().add(casesFiledVo);
}
pageList.setPageSize(pageSize);
pageList.setCount(pageFields.getCount());
} catch (Exception e) {
e.printStackTrace();
}
return pageList;
}
/**
* 设置置顶
* */
@@ -407,7 +452,10 @@ public class CasesServiceImpl implements ICasesService {
@Override
public List<Cases> ids(List<String> ids) {
List<Cases> cases = casesDao.findList(FieldFilters.in("id", ids));
QueryBuilder builder = QueryBuilder.from(Cases.class);
builder.addFilter(FieldFilters.in("id", ids));
builder.addFields("new Cases(id,title,summary,coverUrl,authorId,authorName,sysCreateTime,breCommend,views,comments,praises,shares,favorites,deleted,sysCreateBy,sysCreateAid)");
List<Cases> cases = casesDao.findList(builder.builder());
return cases;
}

View File

@@ -68,7 +68,28 @@ public class Course extends BaseEntity {
this.publishTime=publishTime;
this.isTop=isTop;
}
public Course(String id,Integer type,String name,String coverImg, Float score,Integer studys,Integer comments,Integer shares,Integer praises,Integer favorites
,String forUsers,String value,String summary,LocalDateTime publishTime,Boolean isTop,String sysType1,String sysType2,String sysType3) {
this.setId(id);
this.setType(type);
this.setName(name);
this.setCoverImg(coverImg);
this.setScore(score);
this.setComments(comments);
this.setStudys(studys);
this.setShares(shares);
this.setPraises(praises);
this.setFavorites(praises);
this.forUsers=forUsers;
this.value=value;
this.summary=summary;
this.publishTime=publishTime;
this.isTop=isTop;
this.sysType1=sysType1;
this.sysType2=sysType2;
this.sysType3=sysType3;
}
@Column(name = "kid")
private String kid;
@@ -323,6 +344,12 @@ public class Course extends BaseEntity {
*/
@Transient
private Integer auditForward;
@Transient
private String teacherId;
@Transient
private String teacher;
public Course(String id,String name,String summary,String coverImg,String sysCreateAid,String sysCreateBy,Integer type,LocalDateTime publishTime){
super.setId(id);

View File

@@ -115,6 +115,12 @@ public interface ICourseService {
*/
List<Course> findSimpleList(int pageIndex,String currentAid,CourseQueryDto dto);
/**
* 移动端首页
* */
List<Course> mobileList(int num,String aid,CourseQueryDto dto);
/**
* 添加课程

View File

@@ -375,6 +375,51 @@ public class CourseServiceImpl implements ICourseService {
return rs;
}
@Override
public List<Course> mobileList(int num, String aid,CourseQueryDto dto) {
List<IFieldFilter> filters = createFilters(dto);
//自动添加过滤已删除
filters.add(FieldFilters.eq("deleted",false));
filters.add(FieldFilters.eq("enabled",true));
//返回的结果
QueryBuilder query=QueryBuilder.from(Course.class).addFilters(filters);
if(dto.getTopOrder()!=null) {
if(dto.getTopOrder()){
query.addOrder(OrderCondition.desc("isTop"));
query.addOrder(OrderCondition.desc("topTime"));
}
}
OrderCondition oc=null;
if(StringUtils.isNotBlank(dto.getOrderField())) {
if(dto.getOrderAsc()==null || dto.getOrderAsc()) {
oc=OrderCondition.asc(dto.getOrderField());
}else {
oc=OrderCondition.desc(dto.getOrderField());
}
}else {
//oc=OrderCondition.desc("id");
//默认按发布时间排序
oc=OrderCondition.desc("publishTime");
}
query.addOrder(oc);
List<Course> courses = this.userHobbyList(aid, dto.getOrderField(), dto.getOrderAsc());
if(courses!=null && !courses.isEmpty()){
num=num-courses.size();
//重复的不包括
List<String> courseIds = courses.stream().map(Course::getId).collect(Collectors.toList());
query.addFilter(FieldFilters.notIn("id",courseIds));
}
query.setPageSize(num);
query.addFields("new Course(id,type,name,coverImg,score,studys,comments,shares,praises,favorites,forUsers,value,summary,publishTime,isTop,sysType1,sysType2,sysType3)");
List<Course> courseList = courseDao.findList(query.builder());
return courseList;
}
@Override
public void save(Course course) {
course.setComments(0);

View File

@@ -38,6 +38,12 @@ public class ExamTestApi extends ApiBaseController {
PageList<ExamTest> examTestPageList = examTestService.pageList(pager.getPageIndex(), pager.getPageSize(), keyWord, examTest);
return success(examTestPageList);
}
@PostMapping("/pagelist")
public JsonResponse<PageList<ExamTest>> pagelist(Pagination pager, String keyWord, ExamTest examTest){
PageList<ExamTest> examTestPageList = examTestService.pageList(pager.getPageIndex(), pager.getPageSize(), keyWord, examTest);
return success(examTestPageList);
}
/**
* 新建考试

View File

@@ -7,10 +7,7 @@ import java.util.stream.Collectors;
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 org.springframework.web.bind.annotation.*;
import com.xboe.common.PageList;
import com.xboe.common.Pagination;
@@ -212,5 +209,58 @@ public class PortalIndexApi extends ApiBaseController{
}
/**
* 移动端首页课程列表
* 返回内容分类
* */
@PostMapping("/mobile-courseindex")
public JsonResponse<List<Course>> mobileCourseIndex(Integer num,CourseQueryDto dto){
if(num==null){
num=5;
}
dto.setPublish(true);
dto.setYearFilter(true);
String aid = this.getCurrent().getAccountId();
List<Course> courses = courseService.mobileList(num, aid, dto);
//提取教师信息
List<String> ids=new ArrayList<String>();
for(Course c :courses) {
ids.add(c.getId());
}
List<CourseTeacher> teachers = courseService.findTeachersByCourseIds(ids);
//注意对于多个教师的情况,这里只是设置第一个教师
for(Course c :courses) {
for(CourseTeacher ct : teachers) {
if(ct.getCourseId().equals(c.getId())) {
c.setTeacherId(ct.getTeacherId());
c.setTeacher(ct.getTeacherName());
}
}
}
return success(courses);
}
/**
* 移动端首页文章列表
* */
@GetMapping("/mobile-article")
public JsonResponse<List<Article>> mobileArticle(Integer type){
if(type==null || type==0){
return badRequest("参数异常");
}
try {
List<Article> articles = articleService.mobileList(type);
return success(articles);
} catch (Exception e) {
return error("查询失败",e.getMessage());
}
}
}

View File

@@ -2,6 +2,7 @@ package com.xboe.system.user.api;
import java.time.LocalDateTime;
import java.util.List;
import java.util.Map;
import javax.annotation.Resource;
@@ -123,5 +124,38 @@ public class MessageApi extends ApiBaseController {
}
}
/**
* 移动端
* 消息页面,按用户分组返回
*
* */
@GetMapping("/mess-group")
public JsonResponse<Map<String,Object>> messGroup(){
String aid = this.getCurrent().getAccountId();
if(StringUtil.isBlank(aid)){
return badRequest("参数异常");
}
Map<String, Object> map = service.messGroup(aid);
return success(map);
}
/**
* 移动端
* 按用户删除消息
* */
@GetMapping("/remove")
public JsonResponse<Boolean> remove(String aid){
if(StringUtil.isBlank(aid)){
return badRequest("参数异常");
}
try {
service.remove(aid);
return success(true);
} catch (Exception e) {
return error("参数异常",e.getMessage());
}
}
}

View File

@@ -1,6 +1,7 @@
package com.xboe.system.user.service;
import java.util.List;
import java.util.Map;
import com.xboe.common.PageList;
import com.xboe.system.user.entity.Message;
@@ -39,5 +40,15 @@ public interface IMessageService {
* */
void updateIsRead(List<String> ids);
/**
* 移动端针对用户消息列表
* */
Map<String,Object> messGroup(String aid);
/**
* 根据用户移除消息
* */
void remove(String aid);
}

View File

@@ -1,6 +1,8 @@
package com.xboe.system.user.service.impl;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import javax.annotation.Resource;
@@ -76,4 +78,24 @@ public class MessageServiceImpl implements IMessageService {
.builder());
}
@Override
public Map<String, Object> messGroup(String aid) {
Map<String, Object> map = new HashMap<>();
QueryBuilder builder = QueryBuilder.from(Message.class);
builder.addFilter(FieldFilters.eq("acceptId",aid));
builder.addGroupBy("acceptId");
List<Message> list = dao.findList(builder.builder());
map.put("mess",list);
//在查出未读消息数
String sql="select count(1) from boe_message where is_read=false and acceptId=?1";
int count = dao.sqlCount(sql, aid);
map.put("count",count);
return map;
}
@Override
public void remove(String aid) {
dao.deleteByFilter(FieldFilters.eq("acceptId",aid));
}
}