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));
}