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

This commit is contained in:
dongruihua
2022-10-31 19:36:56 +08:00
50 changed files with 1747 additions and 80 deletions

View File

@@ -229,7 +229,7 @@ public class Cases extends BaseEntity {
public Cases() {
}
public Cases(String id,String title,String summary,String coverUrl,String authorId,String authorName,LocalDateTime sysCreateTime,Integer breCommend){
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){
this.title=title;
super.setId(id);
this.authorId=authorId;
@@ -238,6 +238,11 @@ public class Cases extends BaseEntity {
this.summary=summary;
this.coverUrl=coverUrl;
this.breCommend=breCommend;
this.views=views;
this.comments=comments;
this.praises=praises;
this.shares=shares;
this.favorites=favorites;
}
public Cases(String id,String title){

View File

@@ -324,7 +324,7 @@ public class Course extends BaseEntity {
@Transient
private Integer auditForward;
public Course(String id,String name,String summary,String coverImg,String sysCreateAid,String sysCreateBy,Integer type,LocalDateTime publishTime){
public Course(String id,String name,String summary,String coverImg,String sysCreateAid,String sysCreateBy,Integer type,LocalDateTime publishTime,Integer views,Integer comments,Integer praises,Integer shares,Integer favorites){
super.setId(id);
this.name=name;
this.summary=summary;
@@ -333,6 +333,11 @@ public class Course extends BaseEntity {
super.setSysCreateBy(sysCreateBy);
this.type=type;
this.publishTime=publishTime;
this.views=views;
this.comments=comments;
this.praises=praises;
this.shares=shares;
this.favorites=favorites;
}
}

View File

@@ -9,7 +9,6 @@ import java.util.Map;
import javax.annotation.Resource;
import com.xboe.common.utils.StringUtil;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@@ -20,6 +19,8 @@ import com.xboe.account.service.IAccountService;
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.event.IEventDataSender;
import com.xboe.core.orm.FieldFilters;
import com.xboe.core.orm.IFieldFilter;
import com.xboe.core.orm.LikeMatchMode;
@@ -48,7 +49,6 @@ import com.xboe.module.course.service.CourseToCourseFullText;
import com.xboe.module.course.service.ICourseFullTextSearch;
import com.xboe.module.course.service.ICourseService;
import com.xboe.module.interaction.service.ICourseGradeService;
import com.xboe.stat.IEventDataSender;
import com.xboe.system.authority.service.IResDataManagerService;
import com.xboe.system.logs.dao.SysLogAuditDao;
@@ -103,7 +103,7 @@ public class CourseServiceImpl implements ICourseService {
@Autowired(required = false)
private ICourseFullTextSearch fullTextSearch;
@Autowired
@Autowired(required = false)
private IEventDataSender eventSender;
/**
@@ -370,7 +370,11 @@ public class CourseServiceImpl implements ICourseService {
courseDao.updateFieldById(id,"name","已删除"+name);
//同时添加发布事件,这里的创建人需要修改为教师
Course c=courseDao.get(id);
eventSender.send("删除课程","PublishCourse", "删除课程【"+c.getName()+"", c.getId(), "1", c.getName(), c.getSysCreateAid(), c.getSysCreateBy(),"");
if(eventSender!=null) {
eventSender.send("删除课程","PublishCourse", "删除课程【"+c.getName()+"", c.getId(), "1", c.getName(), c.getSysCreateAid(), c.getSysCreateBy(),"");
}else {
log.error("未配置事件消息发送的实现");
}
//删除
if(c.getFullTextId()!=null) {
try {
@@ -733,8 +737,11 @@ public class CourseServiceImpl implements ICourseService {
this.fullTextPublish(c);
}
//同时添加发布事件,这里的创建人需要修改为教师
eventSender.send("发布课程","PublishCourse", "发布课程【"+c.getName()+"", c.getId(), "1", c.getName(), c.getSysCreateAid(), c.getSysCreateBy(),"");
if(eventSender!=null) {
eventSender.send("发布课程","PublishCourse", "发布课程【"+c.getName()+"", c.getId(), "1", c.getName(), c.getSysCreateAid(), c.getSysCreateBy(),"");
}else {
log.error("未配置事件消息发送的实现");
}
}
}

View File

@@ -4,8 +4,11 @@ import java.time.ZoneId;
import java.util.*;
import java.util.stream.Collectors;
import com.xboe.common.utils.StringUtil;
import com.xboe.core.CurrentUser;
import com.xboe.module.interaction.dto.*;
import com.xboe.module.qa.entity.Question;
import com.xboe.module.qa.service.IQuestionService;
import com.xboe.school.study.service.IStudyCourseService;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
@@ -43,6 +46,9 @@ public class FavoritesApi extends ApiBaseController {
@Autowired
IStudyCourseService studyCourseService;
@Autowired
IQuestionService questionService;
/**
* 此处的查询需要再讨论一下,因为有不同的内容,前端呈现的也不一样
*
@@ -104,6 +110,26 @@ public class FavoritesApi extends ApiBaseController {
return success(articlePage);
}
/**
* 我收藏的问答
* */
@PostMapping("/favorite-answer")
public JsonResponse<PageList<FavoritesAnswerDto>> findAnswerPage(Pagination pager,String keyword,Boolean isBest){
String aid = this.getCurrent().getAccountId();
PageList<FavoritesAnswerDto> answerPage = service.findAnswerPage(pager.getPageIndex(), pager.getPageSize(), keyword, isBest, aid);
List<String> qids = answerPage.getList().stream().map(FavoritesAnswerDto::getQid).collect(Collectors.toList());
//查出问题标题
List<Question> questions = questionService.title(qids);
for (FavoritesAnswerDto f:answerPage.getList()) {
for (Question q:questions) {
if(f.getQid().equals(q.getId())){
f.setQtitle(q.getTitle());
}
}
}
return success(answerPage);
}
/**
@@ -222,6 +248,7 @@ public class FavoritesApi extends ApiBaseController {
public JsonResponse<PageList<FavoriteTotalDto>> queryAll(Pagination pager,String keyword){
String aid = this.getCurrent().getAccountId();
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);
@@ -235,6 +262,24 @@ public class FavoritesApi extends ApiBaseController {
}
}
List<String> qids = favoriteTotalDtoPageList.getList().stream().filter(favoriteTotalDto -> favoriteTotalDto.getType() == 5).
map(FavoriteTotalDto::getQid).collect(Collectors.toList());
List<Question> questions = questionService.title(qids);
if(!questions.isEmpty()) {
for (FavoriteTotalDto f : favoriteTotalDtoPageList.getList()) {
if(StringUtils.isNotBlank(f.getQid())) {
for (Question q : questions) {
if(StringUtil.isNotBlank(q.getId())) {
if (f.getQid().equals(q.getId())) {
f.setTitle(q.getTitle());
}
}
}
}
}
}
return success(favoriteTotalDtoPageList);
}

View File

@@ -86,6 +86,11 @@ public class FavoriteTotalDto {
* */
private Float progress;
/**
* qid
* */
private String qid;
public FavoriteTotalDto() {
}
@@ -94,4 +99,6 @@ public class FavoriteTotalDto {
this.favoritesTime=favoritesTime;
this.type=type;
}
}

View File

@@ -0,0 +1,81 @@
package com.xboe.module.interaction.dto;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;
import java.time.LocalDateTime;
@Data
public class FavoritesAnswerDto {
/**
* 问题标题
* */
private String qtitle;
/**
* 问题id
* */
private String qid;
/**
* 答案内容
* */
private String content;
private Integer praises;
private Integer shares;
private Integer favorites;
/**
* 收藏时间
* */
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private LocalDateTime favoeiteTime;
/**
* 收藏id
* */
private String favoriteId;
/**
* 收藏人id
* */
private String favorSysCreateId;
/**
* 答案作者id
* */
private String sysCreateAid;
/**
* 答案作者id
* */
private String sysCreateBy;
/**
* 图片
* */
private String images;
private Integer objType;
/**
* 答案id
* */
private String answerId;
}

View File

@@ -25,7 +25,7 @@ public interface IFavoritesService {
PageList<FavoriteDto> findCoursePage(int pageIndex, int pageSize, Favorites favorite,Integer type,String keyword,String aid);
/**
* 查询收藏的问
* 查询收藏的问
* @param pageIndex
* @param pageSize
* @param favorite
@@ -33,6 +33,13 @@ public interface IFavoritesService {
* @return
*/
PageList<FavoriteQaDto> findQaPage(int pageIndex, int pageSize, Favorites favorite,Boolean isResolve,String keyword,String aid);
/**
* 查询收藏的回答
* */
PageList<FavoritesAnswerDto> findAnswerPage(int pageIndex,int pageSize,String keyWord,Boolean isBest,String aid);
/**
* 查询收藏的案例
// * */

View File

@@ -12,6 +12,9 @@ import java.util.Set;
import javax.annotation.Resource;
import javax.transaction.Transactional;
import com.xboe.module.interaction.dto.*;
import com.xboe.module.qa.dao.AnswerDao;
import com.xboe.module.qa.entity.Answer;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.cache.annotation.CacheEvict;
@@ -33,11 +36,6 @@ import com.xboe.module.boecase.entity.Cases;
import com.xboe.module.course.dao.CourseDao;
import com.xboe.module.course.entity.Course;
import com.xboe.module.interaction.dao.FavoritesDao;
import com.xboe.module.interaction.dto.FavoriteArticleDto;
import com.xboe.module.interaction.dto.FavoriteCaseDto;
import com.xboe.module.interaction.dto.FavoriteDto;
import com.xboe.module.interaction.dto.FavoriteQaDto;
import com.xboe.module.interaction.dto.FavoriteTotalDto;
import com.xboe.module.interaction.entity.Favorites;
import com.xboe.module.interaction.service.IFavoritesService;
import com.xboe.module.qa.dao.QuestionDao;
@@ -70,6 +68,9 @@ public class FavoritesServiceImpl implements IFavoritesService{
@Resource
CasesDao casesDao;
@Autowired
AnswerDao answerDao;
@Override
@Caching(evict = {@CacheEvict(value = CacheName.FAVOR, key = "'" + CacheName.KEY_FAVOR + "'+#favorite.objType+#favorite.objId+#favorite.sysCreateAid")})
@@ -137,9 +138,12 @@ public class FavoritesServiceImpl implements IFavoritesService{
//案例id集合
Set<String> caseList = new HashSet<>();
// Map<String,FavoriteTotalDto> map = new HashMap<>();
//笔记id集合
Set<String> noteList = new HashSet<>();
//回答id集合
Set<String> answerList = new HashSet<>();
for (Favorites f: page.getList()) {
FavoriteTotalDto favoriteTotalDto = new FavoriteTotalDto();
favoriteTotalDto.setFavoritesTime(f.getSysCreateTime());
@@ -164,6 +168,9 @@ public class FavoritesServiceImpl implements IFavoritesService{
if(f.getObjType()==6){
noteList.add(f.getObjId());
}
if(f.getObjType()==5){
answerList.add(f.getObjId());
}
}
@@ -177,7 +184,7 @@ public class FavoritesServiceImpl implements IFavoritesService{
if(!courseList.isEmpty()) {
QueryBuilder from = QueryBuilder.from(Course.class);
from.addFilter(FieldFilters.in("id",courseList));
from.addFields("new Course(id,name,summary,coverImg,sysCreateAid,sysCreateBy,type,publishTime)");
from.addFields("new Course(id,name,summary,coverImg,sysCreateAid,sysCreateBy,type,publishTime,views,comments,praises,shares,favorites)");
List<Course> courses = courseDao.findList(from.builder());
if(!courses.isEmpty()){
for (Course c : courses) {
@@ -191,6 +198,11 @@ public class FavoritesServiceImpl implements IFavoritesService{
favoriteTotalDto.setAuthorName(c.getSysCreateBy());
favoriteTotalDto.setContentType(c.getType());
favoriteTotalDto.setPublishTime(c.getPublishTime());
favoriteTotalDto.setViews(c.getViews());
favoriteTotalDto.setComments(c.getComments());
favoriteTotalDto.setPraises(c.getPraises());
favoriteTotalDto.setShares(c.getShares());
favoriteTotalDto.setFavorites(c.getFavorites());
}
}
}
@@ -212,6 +224,12 @@ public class FavoritesServiceImpl implements IFavoritesService{
favoriteTotalDto.setAuthorId(a.getSysCreateAid());
favoriteTotalDto.setAuthorName(a.getSysCreateBy());
favoriteTotalDto.setPublishTime(a.getSysCreateTime());
favoriteTotalDto.setViews(a.getViews());
favoriteTotalDto.setComments(a.getComments());
favoriteTotalDto.setPraises(a.getPraises());
favoriteTotalDto.setShares(a.getShares());
favoriteTotalDto.setFavorites(a.getFavorites());
}
}
}
@@ -220,7 +238,7 @@ public class FavoritesServiceImpl implements IFavoritesService{
if(!qaList.isEmpty()) {
QueryBuilder from = QueryBuilder.from(Question.class);
from.addFilter(FieldFilters.in("id",qaList));
from.addFields("new Question(id,title,content,images,sysCreateAid,sysCreateBy,sysCreateTime,bestId,bestAnswer,isResolve)");
from.addFields("new Question(id,title,content,images,sysCreateAid,sysCreateBy,sysCreateTime,bestId,bestAnswer,isResolve,views,answers,praises,shares,favorites)");
List<Question> questions = questionDao.findList(from.builder());
if(!questions.isEmpty()) {
for (Question q : questions) {
@@ -235,6 +253,11 @@ public class FavoritesServiceImpl implements IFavoritesService{
favoriteTotalDto.setBestId(q.getBestId());
favoriteTotalDto.setBestAnswer(q.getBestAnswer());
favoriteTotalDto.setIsResolve(q.getIsResolve());
favoriteTotalDto.setViews(q.getViews());
favoriteTotalDto.setComments(q.getAnswers());
favoriteTotalDto.setPraises(q.getPraises());
favoriteTotalDto.setShares(q.getShares());
favoriteTotalDto.setFavorites(q.getFavorites());
}
}
}
@@ -243,7 +266,7 @@ public class FavoritesServiceImpl implements IFavoritesService{
if(!caseList.isEmpty()) {
QueryBuilder from = QueryBuilder.from(Cases.class);
from.addFilter(FieldFilters.in("id", caseList));
from.addFields("new Cases(id,title,summary,coverUrl,authorId,authorName,sysCreateTime,breCommend)");
from.addFields("new Cases(id,title,summary,coverUrl,authorId,authorName,sysCreateTime,breCommend,views,comments,praises,shares,favorites)");
List<Cases> cases = courseDao.findList(from.builder());
if(!cases.isEmpty()) {
for (Cases c : cases) {
@@ -256,6 +279,11 @@ public class FavoritesServiceImpl implements IFavoritesService{
favoriteTotalDto.setAuthorName(c.getAuthorName());
favoriteTotalDto.setPublishTime(c.getSysCreateTime());
favoriteTotalDto.setBreCommend(c.getBreCommend());
favoriteTotalDto.setViews(c.getViews());
favoriteTotalDto.setComments(c.getComments());
favoriteTotalDto.setPraises(c.getPraises());
favoriteTotalDto.setShares(c.getShares());
favoriteTotalDto.setFavorites(c.getFavorites());
}
}
}
@@ -271,7 +299,7 @@ public class FavoritesServiceImpl implements IFavoritesService{
ids.append(",");
}
ids.deleteCharAt(ids.length()-1);
String sql="select id,course_name,content,sys_create_aid,sys_create_by,sys_create_time from boe_note_info where id in("+ids+")";
String sql="select id,course_name,content,sys_create_aid,sys_create_by,sys_create_time,praises,favorites,comments from boe_note_info where id in("+ids+")";
List<Object[]> list1 = dao.sqlFindList(sql);
for (Object[] o:list1){
for (FavoriteTotalDto favoriteTotalDto : list.getList()) {
@@ -280,14 +308,49 @@ public class FavoritesServiceImpl implements IFavoritesService{
favoriteTotalDto.setContent((String) o[2]);
favoriteTotalDto.setAuthorId((String) o[3]);
favoriteTotalDto.setAuthorName((String) o[4]);
Timestamp time = (Timestamp)o[5];
favoriteTotalDto.setPublishTime(time.toLocalDateTime());
favoriteTotalDto.setPraises((Integer)o[6]);
favoriteTotalDto.setFavorites((Integer) o[7]);
favoriteTotalDto.setComments((Integer) o[8]);
}
}
}
}
if(!answerList.isEmpty()){
QueryBuilder from = QueryBuilder.from(Answer.class);
from.addFilter(FieldFilters.in("id", answerList));
from.addFields("id","content","images","praises","shares","favorites","sysCreateAid","sysCreateBy","qid","sysCreateTime");
try {
List<Object[]> listFields = articleDao.findListFields(from.builder());
for (Object[] o:listFields) {
for (FavoriteTotalDto favoriteTotalDto : list.getList()) {
if(o[0].equals(favoriteTotalDto.getId())) {
favoriteTotalDto.setContent((String) o[1]);
favoriteTotalDto.setImage((String) o[2]);
favoriteTotalDto.setPraises((Integer) o[3]);
favoriteTotalDto.setShares((Integer) o[4]);
favoriteTotalDto.setFavorites((Integer) o[5]);
favoriteTotalDto.setAuthorId((String) o[6]);
favoriteTotalDto.setAuthorName((String) o[7]);
favoriteTotalDto.setQid((String) o[8]);
favoriteTotalDto.setPublishTime((LocalDateTime) o[9]);
}
}
}
} catch (Exception e) {
e.printStackTrace();
}
}
list.setCount(page.getCount());
list.setPageSize(pageSize);
return list;
@@ -501,6 +564,53 @@ public class FavoritesServiceImpl implements IFavoritesService{
// return result;
}
@Override
public PageList<FavoritesAnswerDto> findAnswerPage(int pageIndex, int pageSize, String keyWord, Boolean isBest, String aid) {
PageList<FavoritesAnswerDto> pageList = new PageList<>();
pageList.setList(new ArrayList<FavoritesAnswerDto>());
pageList.setPageSize(pageSize);
String from =Favorites.class.getSimpleName()+" f,"+ Answer.class.getSimpleName()+" a";
QueryBuilder builder=QueryBuilder.from(from);
builder.setPageIndex(pageIndex);
builder.setPageSize(pageSize);
builder.addOrder(OrderCondition.desc("f.id"));
builder.addFilter(FieldFilters.eqField("f.objId","a.id"));
builder.addFilter(FieldFilters.eq("f.objType",BoedxResourceType.Answer.value()));
builder.addFilter(FieldFilters.eq("f.sysCreateAid",aid));
if(StringUtils.isNotBlank(keyWord)){
builder.addFilter(FieldFilters.like("a.content",keyWord));
}
builder.addFields("f.id","f.sysCreateTime","f.sysCreateAid,f.objType","a.id","a.content","a.praises","a.shares","a.favorites","a.sysCreateAid","a.qid","a.sysCreateBy","a.images");
PageList<Object[]> pageFields=null;
try {
pageFields=dao.findPageFields(builder.builder());
pageList.setPageSize(pageSize);
pageList.setCount(pageFields.getCount());
for (Object[] o:pageFields.getList()) {
FavoritesAnswerDto favoritesAnswerDto = new FavoritesAnswerDto();
favoritesAnswerDto.setFavoriteId((String) o[0]);
favoritesAnswerDto.setFavoeiteTime((LocalDateTime) o[1]);
favoritesAnswerDto.setFavorSysCreateId((String) o[2]);
favoritesAnswerDto.setObjType((Integer) o[3]);
favoritesAnswerDto.setAnswerId((String) o[4]);
favoritesAnswerDto.setContent((String) o[5]);
favoritesAnswerDto.setPraises((Integer) o[6]);
favoritesAnswerDto.setShares((Integer) o[7]);
favoritesAnswerDto.setFavorites((Integer) o[8]);
favoritesAnswerDto.setSysCreateAid((String) o[9]);
favoritesAnswerDto.setQid((String) o[10]);
favoritesAnswerDto.setSysCreateBy((String) o[11]);
favoritesAnswerDto.setImages((String) o[12]);
pageList.getList().add(favoritesAnswerDto);
}
} catch (Exception e) {
log.error("收藏回答关联错误",e);
}
return pageList;
}
/**
* 查询我收藏的案例
* */

View File

@@ -128,7 +128,7 @@ public class Question extends BaseEntity {
this.answers=answers;
}
public Question(String id,String title, String content, String images,String sysCreateAid,String sysCreateBy,LocalDateTime sysCreateTime, String bestId, String bestAnswer,Boolean isResolve) {
public Question(String id,String title, String content, String images,String sysCreateAid,String sysCreateBy,LocalDateTime sysCreateTime, String bestId, String bestAnswer,Boolean isResolve,Integer views,Integer answers,Integer praises,Integer shares,Integer favorites) {
this.title = title;
this.content = content;
this.images = images;
@@ -139,6 +139,11 @@ public class Question extends BaseEntity {
super.setSysCreateAid(sysCreateAid);
super.setSysCreateBy(sysCreateBy);
super.setSysCreateTime(sysCreateTime);
this.views=views;
this.answers=answers;
this.praises=praises;
this.shares=shares;
this.favorites=favorites;
}
public Question(String id,String title){

View File

@@ -97,5 +97,10 @@ public interface IQuestionService {
* */
List<Question> indexQaAnswers(Integer num);
/**
* 查询该回答的问答标题
* */
List<Question> title(List<String> aid);
}

View File

@@ -482,5 +482,16 @@ public class QuestionServiceImpl implements IQuestionService {
return list;
}
@Override
public List<Question> title(List<String> qid) {
QueryBuilder builder = QueryBuilder.from(Question.class);
builder.addFilter(FieldFilters.in("id",qid));
builder.addFields("new Question(id,title)");
List<Question> list = questionDao.findList(builder.builder());
return list;
}
}

View File

@@ -30,7 +30,6 @@ import com.xboe.module.course.entity.CourseTeacher;
import com.xboe.module.course.service.ICourseContentService;
import com.xboe.module.course.service.ICourseSectionService;
import com.xboe.module.course.service.ICourseService;
import com.xboe.module.course.service.ICourseTeacherService;
import com.xboe.module.teacher.entity.Teacher;
import com.xboe.module.teacher.service.ITeacherService;
import com.xboe.school.study.dto.StudyContentDto;
@@ -70,9 +69,6 @@ public class StudyCourseApi extends ApiBaseController{
@Autowired
private ICourseSectionService sectionService;
@Autowired
private ICourseTeacherService courseTeacherService;
@Autowired
private ITeacherService teacherService;
@@ -136,26 +132,27 @@ public class StudyCourseApi extends ApiBaseController{
* @return
*/
@RequestMapping(value="/studyIndex",method = {RequestMethod.GET,RequestMethod.POST})
public JsonResponse<Map<String,Object>> loadDetail(String id,Boolean addView,Boolean crowd){
if(StringUtils.isBlank(id)){
public JsonResponse<Map<String,Object>> loadDetail(String cid,Boolean addView,Boolean crowd){
if(StringUtils.isBlank(cid)){
return error("无课程信息");
}
String aid=getCurrent().getAccountId();
CurrentUser cuser=getCurrent();
String aid=cuser.getAccountId();
//StudyCourse sc=service.findByCourseIdAndAid(id, aid);
Map<String,Object> rs=new HashMap<String,Object>();
Course course=courseService.getAddView(id);
Course course=courseService.getAddView(cid);
if(course==null || course.getDeleted()){
return badRequest("课程不存在或已被删除");
}
rs.put("course",course);
List<CourseCrowd> courseCrowdList = courseService.findCrowdByCourseId(id);
List<CourseCrowd> courseCrowdList = courseService.findCrowdByCourseId(cid);
if(crowd!=null && crowd) {
rs.put("crowds",courseCrowdList);
}
List<CourseContent> cclist=contentService.getByCourseId(id);
List<CourseSection> sectionlist=sectionService.getByCourseId(id);
List<CourseTeacher> teachers=courseService.findTeachersByCourseId(id);
List<CourseContent> cclist=contentService.getByCourseId(cid);
List<CourseSection> sectionlist=sectionService.getByCourseId(cid);
List<CourseTeacher> teachers=courseService.findTeachersByCourseId(cid);
//获取教师的介绍信息,因为一门课程 的教师不会太多,所以这里简单直接遍历查询,后续再优化
for(CourseTeacher ct : teachers) {
@@ -172,13 +169,33 @@ public class StudyCourseApi extends ApiBaseController{
rs.put("teachers",teachers);
//检查是否已报名
StudySignup ss = signupService.getByCidAndAid(id, aid);
if(ss!=null && ss.getStatus()!=null && ss.getStatus()==9) {
rs.put("signup",true);
}else {
rs.put("signup",false);
StudyCourse sc=service.findByCourseIdAndAid(cid, aid);
if(sc==null) {
//未报名,这里直接报名
StudySignup signup=new StudySignup();
signup.setCourseId(cid);
signup.setCourseName(course.getName());
signup.setCourseType(course.getType());
signup.setSignInfo("自主报名");
signup.setAuditInfo("系统自动审核");
signup.setAuditUser("");
signup.setAuditType(1);
signup.setSignTime(LocalDateTime.now());
signup.setSignType(1);
signup.setStatus(9);
signup.setAid(cuser.getAccountId());
signup.setName(cuser.getName());
signup.setSignTime(LocalDateTime.now());
sc=service.autoSignup(signup);
}
rs.put("signup",true);
rs.put("studyId", sc.getId());//学习id
rs.put("progress", sc.getProgress());
//查询上次学习的是什么资源。查询用户的学习情况
List<StudyCourseItem> items=studyService.findByStudyId(sc.getId());
rs.put("contentStudys",items);//学习的内容
return success(rs);
}

View File

@@ -7,11 +7,20 @@ import com.xboe.school.study.dto.StudyCourseQuery;
import com.xboe.school.study.dto.StudyCouseDto;
import com.xboe.school.study.entity.StudyCourse;
import com.xboe.school.study.entity.StudyCourseItem;
import com.xboe.school.study.entity.StudySignup;
import org.springframework.web.bind.annotation.RequestBody;
import java.util.List;
public interface IStudyCourseService {
/**
* 课程自动报名,返回学习的课程
* @param signup
* @return
*/
StudyCourse autoSignup(StudySignup signup);
/**
* 检查是否有相应的课程学习记录

View File

@@ -38,6 +38,7 @@ import com.xboe.school.study.dto.StudyCourseNameDto;
import com.xboe.school.study.dto.StudyCourseQuery;
import com.xboe.school.study.entity.StudyCourse;
import com.xboe.school.study.entity.StudyCourseItem;
import com.xboe.school.study.entity.StudySignup;
import com.xboe.school.study.service.IStudyCourseService;
import lombok.extern.slf4j.Slf4j;
@@ -47,6 +48,9 @@ import lombok.extern.slf4j.Slf4j;
@Transactional
public class StudyCourseServiceImpl implements IStudyCourseService{
@Autowired
StudySignupDao signupDao;
@Autowired
StudyCourseDao studyCourseDao;
@@ -512,4 +516,42 @@ public class StudyCourseServiceImpl implements IStudyCourseService{
}
}
@Override
public StudyCourse autoSignup(StudySignup signup) {
signup.setSignType(StudySignup.SIGNTYPE_SELF);
if(signup.getStatus()==null) {
//如果未指定状态,就设置审核通过
signup.setStatus(StudySignup.STATUS_PASS);
signup.setAuditType(StudySignup.AUDITTYPE_AUTO);
signup.setAuditInfo("系统自动审核");
signup.setAuditUser("");
}
signupDao.save(signup);
//添加到课程学习
LocalDateTime now=LocalDateTime.now();
StudyCourse sc=new StudyCourse();
sc.setAddTime(LocalDateTime.now());
sc.setAid(signup.getAid());
sc.setAname(signup.getName());
sc.setCourseId(signup.getCourseId());
sc.setCourseName(signup.getCourseName());
sc.setCourseType(signup.getCourseType());//课程类型没有带过来
sc.setFinishTime(null);
sc.setLastScore(0f);
sc.setProgress(0f);
sc.setSource(signup.getAuditType());//来源方式,和报名类型一致
sc.setStatus(StudyCourse.STATUS_NOSTUDY);
sc.setStatusTime(now);
sc.setTotalDuration(0);
sc.setLastTime(sc.getAddTime());
studyCourseDao.save(sc);
signup.setStudyId(sc.getId());
//更新课程学习人数
courseDao.updateMultiFieldById(signup.getCourseId(),UpdateBuilder.create("studys", "studys+1",FieldUpdateType.EXPRESSION));
return sc;
}
}

View File

@@ -1,24 +1,25 @@
package com.xboe.stat.impl;
package com.xboe.stat;
import java.util.HashMap;
import java.util.Map;
import javax.servlet.http.HttpServletRequest;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.xboe.core.SysConstant;
import com.xboe.core.api.TokenProxy;
import com.xboe.core.event.IEventDataSender;
import com.xboe.core.utils.OkHttpUtil;
import com.xboe.standard.BaseConstant;
import com.xboe.stat.IEventDataSender;
import lombok.extern.slf4j.Slf4j;
/**
* 事件数据发送
* 事件数据发送实现如果是云环境只需要修改此类的实现就可以了
* @author seastar
*
*/
@@ -35,8 +36,18 @@ public class EventDataSender implements IEventDataSender{
@Override
public void send(String title, String eventKey, String content, String objId, String objType, String objInfo,
String aid, String aname,String author) {
String statBaseUrl=SysConstant.getConfigValue("xboe.stat.base.url");
if(StringUtils.isBlank(statBaseUrl)) {
log.error("发送事件失败:未配置【xboe.stat.base.url】的值");
return;
}
String urlPre="/xboe/m/stat/event/send";
//案例同步不需要token
if(eventKey.equals("SyncCase")) {
urlPre ="/inner/stat/event/send";
}
String url = SysConstant.getConfigValue("xboe.stat.base.url") + "/xboe/m/stat/event/send";
final String url = statBaseUrl + urlPre;
Map<String, String> params = new HashMap<>();
params.put("title", title);
params.put("source", "all");

View File

@@ -1,18 +0,0 @@
package com.xboe.stat;
public interface IEventDataSender {
/**
* 发送事件消息
* @param title 事件标题
* @param eventKey 事件key
* @param content 事件内容
* @param objId 关联对象id
* @param objType 关联对象类型
* @param objInfo 关联对象信息
* @param aid 操作人
* @param aname 操作人姓名
*/
void send(String title,String eventKey,String content,String objId,String objType,String objInfo,String aid,String aname,String author);
}

View File

@@ -1,7 +1,5 @@
package com.xboe.system.logs.service.impl;
import java.time.LocalDateTime;
import javax.annotation.Resource;
import javax.transaction.Transactional;
@@ -9,16 +7,19 @@ import org.springframework.stereotype.Service;
import com.xboe.common.OrderCondition;
import com.xboe.common.PageList;
import com.xboe.core.log.IAutoLogSave;
import com.xboe.system.logs.dao.SysLogActionDao;
import com.xboe.system.logs.entity.SysLogAction;
import com.xboe.system.logs.service.ISysLogActionService;
import com.xboe.system.logs.vo.SysLogActionVo;
//@Slf4j
/**
* 去掉 IAutoLogSave 接口的实现,采用统日志处理,如果需要记录,那就是加上实现的单独的日志保存
* @author seastar
*
*/
@Service
@Transactional
public class SysLogActionServiceImpl implements ISysLogActionService,IAutoLogSave{
public class SysLogActionServiceImpl implements ISysLogActionService{
@Resource
SysLogActionDao dao;
@@ -50,18 +51,18 @@ public class SysLogActionServiceImpl implements ISysLogActionService,IAutoLogSav
dao.setDeleted(id);
}
@Override
public void save(String module, String actName, String actContent, String aid, String name) {
SysLogAction log=new SysLogAction();
log.setModule(module);
log.setActName(actName);
log.setActTime(LocalDateTime.now());
log.setActContent(actContent);
log.setAid(aid);
log.setName(name);
dao.save(log);
}
// @Override
// public void save(String module, String actName, String actContent, String aid, String name) {
//
// SysLogAction log=new SysLogAction();
// log.setModule(module);
// log.setActName(actName);
// log.setActTime(LocalDateTime.now());
// log.setActContent(actContent);
// log.setAid(aid);
// log.setName(name);
// dao.save(log);
//
// }
}

View File

@@ -86,6 +86,37 @@ public class UserApi extends ApiBaseController {
return success(page);
}
/**
* 用户主页信息
* @param aid
* @return
*/
@RequestMapping(value="/home",method = {RequestMethod.POST,RequestMethod.GET})
public JsonResponse<Map<String,Object>> home(String aid) {
if(StringUtils.isBlank(aid)) {
aid=getCurrent().getAccountId();
}
if(StringUtils.isBlank(aid)) {
return badRequest("无查询参数");
}
Map<String,Object> map=new HashMap<String,Object>();
//map.put("aid", aid);
try {
User u = userService.get(aid);
if(u!=null) {
map.put("showHome",u.getShowHome()==null ? true: u.getShowHome());
}else {
return badRequest("用户不存在");
}
return success(map);
}catch(Exception e) {
log.error("查询用户错误",e);
return error("查询用户失败",e.getMessage());
}
}
@RequestMapping(value="/find",method = {RequestMethod.POST,RequestMethod.GET})
public JsonResponse<List<User>> findByNameOrCode(String word) {
if(StringUtils.isBlank(word)) {
@@ -147,7 +178,10 @@ public class UserApi extends ApiBaseController {
user.setDynamic(u.getDynamic());
if (StringUtils.isNotBlank(user.getDepartId())) {
Organization org = organizationService.get(user.getDepartId());
user.setDepartName(org.getName());
if(org!=null) {
user.setDepartName(org.getName());
}
}
}
return success(user);

View File

@@ -334,6 +334,8 @@ public class UserServiceImpl implements IUserService {
}
@Override
@Caching(evict = {@CacheEvict(value = CacheName.NAME_USER, key = "'" + CacheName.KEY_USER + "'+#id"),
@CacheEvict(value = CacheName.NAME_USER, key = "'" + CacheName.KEY_USER_FILED + "'+#id")})
public void updateShowHome(String id, Boolean showHome) {
dao.updateFieldById(id,"showHome",showHome);
}