1、栏目页用户昵称点击跳转失败,栏目下帖子a标签中加入title属性

2、修改本周热贴,查询一周内访问量最多的帖子
This commit is contained in:
2018-07-03 22:10:43 +08:00
parent 624f4ec220
commit ed7ef7e507
15 changed files with 118 additions and 31 deletions

View File

@@ -26,6 +26,9 @@ public class BaseService implements Service {
@Resource(name = "redis")
protected RedisCacheSource<Integer> sessions;
@Resource(name = "cacheSource")
protected CacheSource cacheSource;
@Resource(name = "userInfos")
protected CacheSource<UserInfo> userInfos;
@@ -39,7 +42,12 @@ public class BaseService implements Service {
@RestMapping(ignore = true)
public int currentUserId(String sessionid){
if (sessionid == null) return 0;
Object userid = sessions.getAndRefresh(sessionid, sessionExpireSeconds);
Object userid = null;
try {
userid = sessions.getAndRefresh(sessionid, sessionExpireSeconds);
}catch (Exception e){
e.printStackTrace();
}
return userid == null ? 0 : (Integer)userid;
}
}

View File

@@ -1,21 +1,36 @@
package com.lxyer.bbs.base;
import com.lxyer.bbs.base.user.UserInfo;
import com.lxyer.bbs.base.user.UserService;
import com.lxyer.bbs.content.Content;
import com.lxyer.bbs.content.ContentInfo;
import com.lxyer.bbs.content.ContentService;
import com.mongodb.Block;
import com.mongodb.MongoClient;
import com.mongodb.client.AggregateIterable;
import com.mongodb.client.MongoCollection;
import com.mongodb.client.MongoDatabase;
import com.mongodb.client.model.Accumulators;
import com.mongodb.client.model.Aggregates;
import org.bson.Document;
import org.bson.conversions.Bson;
import org.redkale.source.ColumnValue;
import org.redkale.source.FilterExpress;
import org.redkale.source.FilterNode;
import org.redkale.source.Flipper;
import org.redkale.util.AnyValue;
import org.redkale.util.Sheet;
import javax.annotation.Resource;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.List;
import java.util.Map;
import java.util.concurrent.CompletableFuture;
import java.util.concurrent.LinkedBlockingQueue;
import static com.mongodb.client.model.Filters.*;
import static java.util.Arrays.asList;
/**
* Created by liangxianyou at 2018/6/20 22:54.
@@ -24,6 +39,8 @@ public class TaskQueue<T extends Object> extends BaseService implements Runnable
@Resource
private ContentService contentService;
@Resource
private UserService userService;
@Resource(name = "property.mongo.host")
private String mongoHost;
@@ -99,4 +116,54 @@ public class TaskQueue<T extends Object> extends BaseService implements Runnable
}
});
}
public Sheet<ContentInfo> hotView(String sessionid){
int limit = 8;
String cacheKey = "hotView";
Object ids = cacheSource.get(cacheKey);
if (ids == null){
Calendar cal = Calendar.getInstance();
cal.set(Calendar.DAY_OF_MONTH, -7);
//查询一周某热帖记录
Bson filter = and(ne("userid", 100001)
,regex("uri", "/jie/detail/*")
,ne("ip", "")
,gt("time", cal.getTimeInMillis())
);
List<Bson> list = asList(
Aggregates.match(filter)
,Aggregates.group("$uri", Accumulators.sum("count", 1))
,Aggregates.sort(new Document("count", -1))
,Aggregates.limit(8)
);
AggregateIterable<Document> documents = visLog.aggregate(list, Document.class);
List<Integer> _ids = new ArrayList<>(limit);
documents.forEach((Block<? super Document>) x->{
String uri = x.getString("_id");
_ids.add(Integer.parseInt(uri.replace("/jie/detail/", "")));
});
cacheSource.set(30 * 60, cacheKey, ids = _ids);
}
int[] contentids = new int[limit];
for (int i = 0; i < ((List<Integer>) ids).size(); i++) {
contentids[i] = ((List<Integer>) ids).get(i);
}
Flipper flipper = new Flipper().limit(limit);
FilterNode node = FilterNode.create("contentid", FilterExpress.IN, contentids);
//权限过滤
UserInfo userInfo = userService.current(sessionid);
if (userInfo == null){
node.and("status", FilterExpress.NOTEQUAL, 30);
}else if (!userService.isAdmin(userInfo.getUserid())){
node.and(FilterNode.create("status", FilterExpress.NOTEQUAL, 30).or(FilterNode.create("status", 30).and("userid", userInfo.getUserid())));
}
return contentService.contentQuery(flipper, node);
}
}

View File

@@ -50,8 +50,13 @@ public class UserService extends BaseService {
public UserInfo current(String sessionid){
if (sessionid == null) return null;
Object userid = sessions.getAndRefresh(sessionid, sessionExpireSeconds);
sessions.getAndRefresh(sessionid, sessionExpireSeconds);
Object userid = null;
try {
userid = sessions.getAndRefresh(sessionid, sessionExpireSeconds);
sessions.getAndRefresh(sessionid, sessionExpireSeconds);
}catch (Exception e){
e.printStackTrace();
}
return userid == null ? null : findUserInfo((Integer) userid);
}

View File

@@ -60,10 +60,12 @@ public class ContentServlet extends BaseServlet {
//Sheet<ContentInfo> hotView = contentService.contentQuery(flipper2, "");
//热议
Flipper flipper3 = new Flipper().limit(8).sort("replynum DESC");
Sheet<ContentInfo> hotReply = contentService.contentQuery(flipper3, "", sessionid);
/*Flipper flipper3 = new Flipper().limit(8).sort("replynum DESC");
Sheet<ContentInfo> hotReply = contentService.contentQuery(flipper3, "", sessionid);*/
Kv kv = Kv.by("bean", content).set("comments", comments)/*.set("hotView", hotView)*/.set("hotReply", hotReply);
Sheet<ContentInfo> hotView = logQueue.hotView(sessionid);
Kv kv = Kv.by("bean", content).set("comments", comments).set("hotView", hotView)/*.set("hotReply", hotReply)*/;
response.finish(HttpScope.refer("/jie/detail.html").attr(kv));
}
@@ -87,11 +89,12 @@ public class ContentServlet extends BaseServlet {
Sheet<ContentInfo> contents = contentService.contentQuery(flipper, setPrivate(request,filterNode));
//热议
Flipper flipper3 = new Flipper().limit(8).sort("replynum DESC");
Sheet<ContentInfo> hotReply = contentService.contentQuery(flipper3, "", sessionid);
/*Flipper flipper3 = new Flipper().limit(8).sort("replynum DESC");
Sheet<ContentInfo> hotReply = contentService.contentQuery(flipper3, "", sessionid);*/
Sheet<ContentInfo> hotView = logQueue.hotView(sessionid);
Kv kv = Kv.by("contents", contents).set("hotReply", hotReply)
Kv kv = Kv.by("contents", contents).set("hotView", hotView)
.set("solved", solved).set("wonderful", wonderful)
.set("column", para).set("curr", curr);
response.finish(HttpScope.refer("/jie/index.html").attr(kv));

View File

@@ -41,8 +41,10 @@ public class IndexServlet extends BaseServlet {
Sheet<ContentInfo> hotView = contentService.contentQuery(flipper2, "");*/
//热议
Flipper flipper3 = new Flipper().limit(8).sort("replynum DESC");
Sheet<ContentInfo> hotReply = contentService.contentQuery(flipper3, "", sessionid);
/*Flipper flipper3 = new Flipper().limit(8).sort("replynum DESC");
Sheet<ContentInfo> hotReply = contentService.contentQuery(flipper3, "", sessionid);*/
Sheet<ContentInfo> hotView = logQueue.hotView(sessionid);
//最新加入
Sheet<UserInfo> lastReg = userService.lastReg();
@@ -50,7 +52,7 @@ public class IndexServlet extends BaseServlet {
//用户统计
Number userCount = userService.userCount();
Kv kv = Kv.by("top", top).set("contents", contents).set("hotReply", hotReply).set("lastReg", lastReg).set("userCount", userCount);
Kv kv = Kv.by("top", top).set("contents", contents).set("hotView", hotView).set("lastReg", lastReg).set("userCount", userCount);
response.finish(HttpScope.refer("index.html").attr(kv));
}