diff --git a/README.md b/README.md index 46c67c5..95b9456 100644 --- a/README.md +++ b/README.md @@ -1,8 +1,18 @@ -# redbbs - - 2018-06-17更新 - 社区升级 - 1、表字段统一小写, - 2、表模块划分 - 3、表状态等字段统一smallint +# redbbs + + 2018-07-01更新 + 1、优化帖子阅读计数,让帖子阅读数更准确 + 2、更新最新redkale-plugins.jar,加入redis验权 + + 2018-06-30更新 + 1、修改servlet层中BaseServlet中共享request的重大bug + 2、将servlet中页面统一使用HttpScope进行渲染 + 3、优化帖子阅读计数,让帖子阅读数更准确 + 4、更新最新redkale-plugins.jar,加入redis验权 + + 2018-06-17更新 + 社区升级 + 1、表字段统一小写, + 2、表模块划分 + 3、表状态等字段统一smallint 4、部分字段值重新定义 \ No newline at end of file diff --git a/conf/application.xml b/conf/application.xml index 52fabe7..6bc4073 100644 --- a/conf/application.xml +++ b/conf/application.xml @@ -6,11 +6,11 @@ - + - + diff --git a/lib/redkale-plugins.jar b/lib/redkale-plugins.jar index 49cf84f..cab2817 100644 Binary files a/lib/redkale-plugins.jar and b/lib/redkale-plugins.jar differ diff --git a/libs/redbbs.jar b/libs/redbbs.jar index 9cf2839..2af1b6d 100644 Binary files a/libs/redbbs.jar and b/libs/redbbs.jar differ diff --git a/src/com/lxyer/bbs/base/BaseServlet.java b/src/com/lxyer/bbs/base/BaseServlet.java index 09913f8..a379c88 100644 --- a/src/com/lxyer/bbs/base/BaseServlet.java +++ b/src/com/lxyer/bbs/base/BaseServlet.java @@ -75,6 +75,12 @@ public class BaseServlet extends HttpServlet { visLog.set("userid", userid); visLog.set("uri", request.getRequestURI()); + Kv headers = Kv.create(); + request.getHeaders().forEach((k,v)->{ + headers.set(k, request.getHeader(k)); + }); + visLog.set("headers", headers); + Kv para = Kv.create(); for (String key : request.getParameterNames()){ para.set(key, request.getParameter(key)); diff --git a/src/com/lxyer/bbs/base/TaskQueue.java b/src/com/lxyer/bbs/base/TaskQueue.java index 98dcafa..228f713 100644 --- a/src/com/lxyer/bbs/base/TaskQueue.java +++ b/src/com/lxyer/bbs/base/TaskQueue.java @@ -1,20 +1,30 @@ package com.lxyer.bbs.base; +import com.lxyer.bbs.content.Content; +import com.lxyer.bbs.content.ContentService; import com.mongodb.MongoClient; import com.mongodb.client.MongoCollection; import com.mongodb.client.MongoDatabase; import org.bson.Document; +import org.bson.conversions.Bson; +import org.redkale.source.ColumnValue; import org.redkale.util.AnyValue; import javax.annotation.Resource; import java.util.Map; +import java.util.concurrent.CompletableFuture; import java.util.concurrent.LinkedBlockingQueue; +import static com.mongodb.client.model.Filters.*; + /** * Created by liangxianyou at 2018/6/20 22:54. */ public class TaskQueue extends BaseService implements Runnable { + @Resource + private ContentService contentService; + @Resource(name = "property.mongo.host") private String mongoHost; @Resource(name = "property.mongo.database") @@ -49,15 +59,44 @@ public class TaskQueue extends BaseService implements Runnable public void run() { try { while (true){ - Map take = (Map) take(); + Map logData = (Map) take(); - take.put("ftime", String.format("%1$tY%1$tm%1$td%1$tH%1$tM%1$tS", take.get("time"))); - visLog.insertOne(new Document(take)); + logData.put("ftime", String.format("%1$tY%1$tm%1$td%1$tH%1$tM%1$tS", logData.get("time"))); + visLog.insertOne(new Document(logData)); - //在这里处理日志数据[访问量] + //在这里处理日志数据 + String uri = logData.get("uri")+""; + + //[访问量] + if (uri.startsWith("/jie/detail/")){ + updateViewNumAsync(logData); + } } } catch (InterruptedException e) { e.printStackTrace(); } } + + /** + * 帖子阅读数处理 + * @param logData + */ + private void updateViewNumAsync(Map logData) { + CompletableFuture.runAsync(()->{ + Bson filter = and( + eq("uri", logData.get("uri"))//帖子 + ,eq("ip", logData.get("ip"))//IP + ,or( + eq("userid", logData.get("userid"))//登录人 + ,eq("userid", 0)//未登录userid=0 + ) + ); + long count = visLog.count(filter); + if (count <= 1){ + String uri = logData.get("uri") + ""; + int contentid = Integer.parseInt(uri.replace("/jie/detail/", "")); + source.updateColumn(Content.class, contentid, ColumnValue.inc("viewnum", 1)); + } + }); + } } diff --git a/src/com/lxyer/bbs/servlet/ContentServlet.java b/src/com/lxyer/bbs/servlet/ContentServlet.java index 307986d..d8ae9b3 100644 --- a/src/com/lxyer/bbs/servlet/ContentServlet.java +++ b/src/com/lxyer/bbs/servlet/ContentServlet.java @@ -2,7 +2,6 @@ package com.lxyer.bbs.servlet; import com.jfinal.kit.Kv; import com.lxyer.bbs.base.BaseServlet; -import com.lxyer.bbs.base.user.UserRecord; import com.lxyer.bbs.comment.CommentInfo; import com.lxyer.bbs.content.ContentInfo; import org.redkale.net.http.*; @@ -10,9 +9,6 @@ import org.redkale.source.FilterNode; import org.redkale.source.Flipper; import org.redkale.util.Sheet; -import java.util.concurrent.CompletableFuture; -import java.util.function.Supplier; - import static org.redkale.source.FilterExpress.NOTEQUAL; /** @@ -67,17 +63,6 @@ public class ContentServlet extends BaseServlet { Flipper flipper3 = new Flipper().limit(8).sort("replynum DESC"); Sheet hotReply = contentService.contentQuery(flipper3, "", sessionid); - //更新 - CompletableFuture.supplyAsync(new Supplier() { - @Override - public String get() { - UserRecord user = request.currentUser(); - if (user == null || user.getRoleid() != 0) - contentService.incrViewNum(contentid); - return ""; - } - }); - Kv kv = Kv.by("bean", content).set("comments", comments)/*.set("hotView", hotView)*/.set("hotReply", hotReply); response.finish(HttpScope.refer("/jie/detail.html").attr(kv)); }