package com.qxueyou.scc.school.service.impl;
|
|
import java.math.BigInteger;
|
import java.util.Date;
|
import java.util.List;
|
|
import org.apache.commons.lang3.StringUtils;
|
//import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.stereotype.Service;
|
|
import com.alibaba.fastjson.JSONArray;
|
import com.qxueyou.scc.base.model.FileMeta;
|
import com.qxueyou.scc.base.model.Pager;
|
import com.qxueyou.scc.base.model.Result;
|
//import com.qxueyou.scc.base.service.ICacheService;
|
import com.qxueyou.scc.base.service.impl.CommonAppService;
|
import com.qxueyou.scc.base.util.ClientUtils;
|
import com.qxueyou.scc.base.util.CollectionUtils;
|
import com.qxueyou.scc.base.util.TraceUtils;
|
import com.qxueyou.scc.operation.comment.mode.Comment;
|
import com.qxueyou.scc.operation.comment.mode.CommentPraise;
|
//import com.qxueyou.scc.comment.service.ICommentService;
|
import com.qxueyou.scc.school.model.SchClassCircle;
|
import com.qxueyou.scc.school.model.SchClassCircleMsg;
|
import com.qxueyou.scc.school.model.SchFile;
|
import com.qxueyou.scc.school.model.SchImg;
|
import com.qxueyou.scc.school.service.IClassCircleService;
|
import com.qxueyou.scc.user.model.User;
|
|
/**
|
* 课程、视频、讲义记录传播轨迹service
|
*
|
* @author lihanqi
|
*
|
*/
|
@Service
|
public class ClassCircleService extends CommonAppService implements IClassCircleService {
|
|
// //共用评论模块
|
// @Autowired
|
// ICommentService commentService;
|
//
|
// //缓存
|
// @Autowired
|
// ICacheService cache;
|
|
// 缓存
|
@SuppressWarnings("unused")
|
private static final String CACHE_MSG_IMGS = "CACHE_MSG_IMGS_";
|
@SuppressWarnings("unused")
|
private static final String CACHE_MSG_FILES = "CACHE_MSG_FILES_";
|
@SuppressWarnings("unused")
|
private static final String CACHE_MSG_COMMENTS = "CACHE_MSG_COMMENTS_";
|
|
@SuppressWarnings("unused")
|
private static final int ONE_DAY = 60 * 60 * 24;
|
|
/**
|
* 获取朋友圈
|
*
|
* @param pager
|
* @return
|
*/
|
public Result doGetMsgList(Pager pager) {
|
String userId = ClientUtils.getUserId();
|
SchClassCircle objSchClassCircle = this.getSchClassCircle(userId);
|
if (objSchClassCircle == null) {
|
this.addSchClassCircle(userId);
|
}
|
|
List<SchClassCircleMsg> lstSchClassCircleMsg = this.findList(
|
"from SchClassCircleMsg where deleteFlag is false and classId = ? order by createTime desc", pager,
|
CollectionUtils.newList(ClientUtils.getClassId()), SchClassCircleMsg.class);
|
|
if (lstSchClassCircleMsg != null && !lstSchClassCircleMsg.isEmpty()) {
|
// 缓存中获取评论
|
for (SchClassCircleMsg objSchClassCircleMsg : lstSchClassCircleMsg) {
|
objSchClassCircleMsg = this.packageMsg(objSchClassCircleMsg);
|
User user = this.read(User.class, objSchClassCircleMsg.getUserId());
|
objSchClassCircleMsg.setName(user.getName());
|
objSchClassCircleMsg.setImgPath(user.getImgPath());
|
objSchClassCircleMsg
|
.setMyLike(this.findCount("from CommentPraise where commentId = ? and commentterId = ?",
|
CollectionUtils.newList(objSchClassCircleMsg.getMsgId(), userId)) > 0 ? true : false);
|
}
|
}
|
|
return new Result(true, "", lstSchClassCircleMsg);
|
}
|
|
/**
|
* 获取消息的评论图片和文件
|
*
|
* @param objSchClassCircleMsg
|
* @return
|
*/
|
@SuppressWarnings("unused")
|
public SchClassCircleMsg packageMsg(SchClassCircleMsg objSchClassCircleMsg) {
|
String msgId = objSchClassCircleMsg.getMsgId();
|
// List<SchImg> imgs = cache.get(CACHE_MSG_IMGS + msgId, List.class);
|
//
|
// List<SchFile> files = cache.get(CACHE_MSG_FILES + msgId, List.class);
|
|
List<Comment> comments = this.updateComment(msgId, false);
|
|
// if(imgs == null || imgs.isEmpty()){
|
// imgs = this.find("from SchImg where deleteFlag is false and objectId = ?
|
// order by orderNo asc, createTime asc", CollectionUtils.newList(msgId),
|
// SchImg.class);
|
//
|
// cache.set(CACHE_MSG_IMGS + msgId, ONE_DAY, imgs);
|
// }
|
//
|
// if(files == null || files.isEmpty()){
|
// files = this.find("from SchFile where deleteFlag is false and objectId = ?
|
// order by orderNo asc, createTime asc", CollectionUtils.newList(msgId),
|
// SchFile.class);
|
//
|
// cache.set(CACHE_MSG_FILES + msgId, ONE_DAY, files);
|
// }
|
//
|
// objSchClassCircleMsg.setImgs(imgs);
|
// objSchClassCircleMsg.setFiles(files);
|
// objSchClassCircleMsg.setComments(comments);
|
|
return objSchClassCircleMsg;
|
}
|
|
/**
|
* 获取评论
|
*
|
* @param msgId
|
* @return
|
*/
|
private List<Comment> updateComment(String msgId, boolean isUpdate) {
|
// List<Comment> comments = cache.get(CACHE_MSG_COMMENTS + msgId, List.class);
|
List<Comment> comments = null;
|
|
if (comments == null || comments.isEmpty() || isUpdate) {
|
comments = this.find(
|
"from Comment where deleteFlag is false and commentObjectId = ? order by createTime asc",
|
CollectionUtils.newList(msgId), Comment.class);
|
|
// cache.set(CACHE_MSG_COMMENTS + msgId, ONE_DAY, comments);
|
}
|
|
return comments;
|
}
|
|
/**
|
* 获取朋友圈
|
*
|
* @return
|
*/
|
private SchClassCircle getSchClassCircle(String userId) {
|
return this.findUnique("from SchClassCircle where deleteFlag is false and userId = ?",
|
CollectionUtils.newList(userId), SchClassCircle.class);
|
}
|
|
/**
|
* 初始化朋友圈
|
*
|
* @param userId
|
* @return
|
*/
|
public String addSchClassCircle(String userId) {
|
SchClassCircle objSchClassCircle = new SchClassCircle();
|
objSchClassCircle.setUserId(userId);
|
objSchClassCircle.setEnable(true);
|
|
TraceUtils.setCreateTrace(objSchClassCircle);
|
|
this.save(objSchClassCircle);
|
|
return objSchClassCircle.getClassCircleId();
|
}
|
|
/**
|
* 发朋友圈
|
*
|
* @param userId
|
* @return
|
*/
|
public Result addMsg(SchClassCircleMsg classCircleMsg) {
|
|
classCircleMsg.setUserId(ClientUtils.getUserId());
|
classCircleMsg.setClassId(ClientUtils.getClassId());
|
classCircleMsg.setOrgId(ClientUtils.getOrgId());
|
classCircleMsg.setCommentCount(0);
|
classCircleMsg.setLikeCount(0);
|
classCircleMsg.setMyLike(false);
|
classCircleMsg.setDeleteFlag(false);
|
|
TraceUtils.setCreateTrace(classCircleMsg);
|
|
this.save(classCircleMsg);
|
|
// 添加图片
|
if (StringUtils.isNoneBlank(classCircleMsg.getImgsJson())) {
|
this.addFile(classCircleMsg.getImgsJson(), classCircleMsg.getMsgId(), "class_circle_img");
|
}
|
|
// 添加文件
|
if (StringUtils.isNoneBlank(classCircleMsg.getFilesJson())) {
|
this.addFile(classCircleMsg.getFilesJson(), classCircleMsg.getMsgId(), "class_circle_file");
|
}
|
|
return new Result(true, "", classCircleMsg);
|
}
|
|
/**
|
* 点赞
|
*
|
* @param msgId
|
* @return
|
*/
|
public Result doLike(String msgId) {
|
|
CommentPraise praiseObj = new CommentPraise();
|
praiseObj.setCommentId(msgId);
|
praiseObj.setPraise(true);
|
praiseObj.setCommentterId(ClientUtils.getUserId());
|
praiseObj.setCommentter(ClientUtils.getUserName());
|
praiseObj.setPraiseTime(new Date(System.currentTimeMillis()));
|
praiseObj.setDeleteFlag(false);
|
|
TraceUtils.setCreateTrace(praiseObj);
|
|
this.save(praiseObj);
|
|
this.bulkUpdate("update SchClassCircleMsg set likeCount = likeCount +1 where msgId = ?",
|
new Object[] { msgId });
|
|
Integer likeCount = this.findUnique("select likeCount from SchClassCircleMsg where msgId = ?",
|
CollectionUtils.newList(msgId), Integer.class);
|
return new Result(true, "", likeCount);
|
}
|
|
/**
|
* 评论
|
*
|
* @param msgId
|
* @param content
|
* @param parentCommentId
|
* @return
|
*/
|
public Result addComment(String msgId, String content, String parentCommentId) {
|
|
// 评论表
|
Comment comment = new Comment();
|
comment.setCommentterId(ClientUtils.getUserId());
|
comment.setCommentter(ClientUtils.getUserName());
|
comment.setCommentterHeadimg(ClientUtils.getUserImg());
|
comment.setContent(content);
|
comment.setCommentCount(BigInteger.ZERO);
|
comment.setCommentPraiseCount(BigInteger.ZERO);
|
comment.setCommentObjectId(msgId);
|
comment.setCommentTime(new Date(System.currentTimeMillis()));
|
comment.setCommentParentId(parentCommentId);
|
comment.setClassId(ClientUtils.getClassId());
|
TraceUtils.setCreateTrace(comment);
|
|
if (StringUtils.isNotEmpty(parentCommentId)) {
|
Comment parentComment = this.read(Comment.class, parentCommentId);
|
|
comment.setCommentedName(parentComment.getCommentter());
|
comment.setCommentedId(parentComment.getCommentterId());
|
}
|
|
this.save(comment);
|
|
this.bulkUpdate("update SchClassCircleMsg set commentCount = commentCount +1 where msgId = ?",
|
new Object[] { msgId });
|
|
this.updateComment(msgId, true);
|
|
return new Result(true, "", comment);
|
}
|
|
/**
|
* 删除评论
|
*
|
* @param msgId
|
* @param commentId
|
* @return
|
*/
|
public Result deleteComment(String msgId, String commentId) {
|
|
this.bulkUpdate("update Comment set deleteFlag = 1 where commentId = ? ", new Object[] { commentId });
|
this.bulkUpdate("update SchClassCircleMsg set commentCount = commentCount - 1 where msgId = ?",
|
new Object[] { msgId });
|
|
this.updateComment(msgId, true);
|
|
return new Result(true);
|
}
|
|
/**
|
* 点赞
|
*
|
* @param msgId
|
* @return
|
*/
|
public Result deleteLike(String msgId) {
|
|
this.bulkUpdate("update CommentPraise set deleteFlag = 1 where commentId = ? and commentterId = ?",
|
new Object[] { msgId, ClientUtils.getUserId() });
|
this.bulkUpdate("update SchClassCircleMsg set likeCount = likeCount - 1 where msgId = ?",
|
new Object[] { msgId });
|
|
return new Result(true);
|
}
|
|
/**
|
* 删除文件
|
*
|
* @param filesJson
|
* @param fileType
|
* @return
|
*/
|
public Result deleteFile(String fileId, String fileType) {
|
if ("class_circle_img".equals(fileType)) {
|
this.bulkUpdate("update SchImg set deleteFlag = true where imgId = ?", new Object[] { fileId });
|
} else {
|
this.bulkUpdate("update SchFile set deleteFlag = true where fileId = ?", new Object[] { fileId });
|
}
|
|
return new Result(true);
|
}
|
|
/**
|
* 新增文件
|
*
|
* @param filesJson
|
* @param fileType
|
* @return
|
*/
|
public Result addFile(String filesJson, String msgId, String fileType) {
|
|
List<FileMeta> files = JSONArray.parseArray(filesJson, FileMeta.class);
|
|
SchImg img = null;
|
SchFile file = null;
|
int i = 0;
|
for (FileMeta fileMeta : files) {
|
if ("class_circle_file".equals(fileType)) {
|
file = new SchFile();
|
file.setDeleteFlag(false);
|
file.setObjectId(msgId);
|
file.setFileType(fileMeta.getFileType());
|
file.setObjectType("SCH_CLASS_CIRCLE");
|
file.setSize(fileMeta.getFileSize());
|
file.setFileName(fileMeta.getFileName());
|
file.setOrderNo(i);
|
TraceUtils.setCreateTrace(file);
|
|
i++;
|
this.save(file);
|
} else {
|
img = new SchImg();
|
img.setDeleteFlag(false);
|
img.setObjectId(msgId);
|
img.setImgType(fileMeta.getFileType());
|
img.setObjectType("SCH_CLASS_CIRCLE");
|
img.setSize(fileMeta.getFileSize());
|
img.setOrderNo(i);
|
TraceUtils.setCreateTrace(img);
|
|
i++;
|
this.save(img);
|
}
|
}
|
return new Result(true);
|
}
|
}
|