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 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 imgs = cache.get(CACHE_MSG_IMGS + msgId, List.class); // // List files = cache.get(CACHE_MSG_FILES + msgId, List.class); List 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 updateComment(String msgId, boolean isUpdate) { // List comments = cache.get(CACHE_MSG_COMMENTS + msgId, List.class); List 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 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); } }