diff --git a/src/com/lxyer/bbs/base/BaseService.java b/src/com/lxyer/bbs/base/BaseService.java index befaa7a..f426283 100644 --- a/src/com/lxyer/bbs/base/BaseService.java +++ b/src/com/lxyer/bbs/base/BaseService.java @@ -1,7 +1,10 @@ package com.lxyer.bbs.base; +import com.lxyer.bbs.base.user.UserInfo; import org.redkale.service.Service; +import org.redkale.source.CacheSource; import org.redkale.source.DataSource; +import org.redkalex.cache.RedisCacheSource; import javax.annotation.Resource; import java.io.File; @@ -19,6 +22,12 @@ public class BaseService implements Service { @Resource(name = "art123") protected DataSource source; + @Resource(name = "redis") + protected RedisCacheSource sessions; + + @Resource(name = "userInfos") + protected CacheSource userInfos; + protected static final boolean winos = System.getProperty("os.name").contains("Window"); } diff --git a/src/com/lxyer/bbs/base/BaseServlet.java b/src/com/lxyer/bbs/base/BaseServlet.java index 32e7454..c134299 100644 --- a/src/com/lxyer/bbs/base/BaseServlet.java +++ b/src/com/lxyer/bbs/base/BaseServlet.java @@ -3,8 +3,12 @@ package com.lxyer.bbs.base; import com.jfinal.kit.Kv; import com.jfinal.template.Engine; import com.jfinal.template.Template; +import com.lxyer.bbs.base.kit.EJ; +import com.lxyer.bbs.base.kit.RetCodes; import com.lxyer.bbs.base.user.UserInfo; import com.lxyer.bbs.base.user.UserService; +import com.lxyer.bbs.comment.CommentService; +import com.lxyer.bbs.content.ContentService; import org.redkale.net.http.HttpContext; import org.redkale.net.http.HttpRequest; import org.redkale.net.http.HttpResponse; @@ -17,12 +21,20 @@ import javax.annotation.Resource; import java.io.File; import java.io.IOException; -import static com.lxyer.bbs.base.RetCodes.RET_USER_UNLOGIN; +import static com.lxyer.bbs.base.kit.RetCodes.RET_USER_UNLOGIN; /** * Created by Lxy at 2017/10/3 13:39. */ public class BaseServlet extends HttpServlet { + private HttpRequest request; + private HttpResponse response; + private static final Kv _kv = Kv.create(); + private static Engine engine; + protected String sessionid; + protected int currentId;//登录人id + + protected static final boolean winos = System.getProperty("os.name").contains("Window"); @Resource(name = "SERVER_ROOT") protected File webroot; @@ -35,11 +47,12 @@ public class BaseServlet extends HttpServlet { /*@Resource(name = "redis") protected RedisCacheSource cache;*/ - private HttpRequest request; - private HttpResponse response; - private static final Kv _kv = Kv.create(); - private static Engine engine; - protected String sessionid; + @Resource + protected ContentService contentService; + + @Resource + protected CommentService commentService; + @Override public void init(HttpContext context, AnyValue config) { @@ -56,6 +69,7 @@ public class BaseServlet extends HttpServlet { sessionid = request.getSessionid(false); if (sessionid != null) { request.setCurrentUser(userService.current(sessionid)); + currentId = userService.currentUserId(sessionid); _kv.set("mine", request.currentUser()); } @@ -171,8 +185,4 @@ public class BaseServlet extends HttpServlet { return node; } - protected int currentId(){ - UserInfo userInfo = request.currentUser(); - return userInfo == null ? 0 : userInfo.getUserId(); - } } diff --git a/src/com/lxyer/bbs/base/EnjoyRender.java b/src/com/lxyer/bbs/base/EnjoyRender.java index e898ff9..59a5f45 100644 --- a/src/com/lxyer/bbs/base/EnjoyRender.java +++ b/src/com/lxyer/bbs/base/EnjoyRender.java @@ -2,6 +2,7 @@ package com.lxyer.bbs.base; import com.jfinal.template.Engine; import com.jfinal.template.Template; +import com.lxyer.bbs.base.kit.EJ; import org.redkale.convert.Convert; import org.redkale.net.http.*; import org.redkale.util.AnyValue; diff --git a/src/com/lxyer/bbs/base/EJ.java b/src/com/lxyer/bbs/base/kit/EJ.java similarity index 97% rename from src/com/lxyer/bbs/base/EJ.java rename to src/com/lxyer/bbs/base/kit/EJ.java index 0a50051..312d28e 100644 --- a/src/com/lxyer/bbs/base/EJ.java +++ b/src/com/lxyer/bbs/base/kit/EJ.java @@ -1,4 +1,4 @@ -package com.lxyer.bbs.base; +package com.lxyer.bbs.base.kit; import org.redkale.net.http.RestService; diff --git a/src/com/lxyer/bbs/base/LxyKit.java b/src/com/lxyer/bbs/base/kit/LxyKit.java similarity index 98% rename from src/com/lxyer/bbs/base/LxyKit.java rename to src/com/lxyer/bbs/base/kit/LxyKit.java index 138cf60..ce75697 100644 --- a/src/com/lxyer/bbs/base/LxyKit.java +++ b/src/com/lxyer/bbs/base/kit/LxyKit.java @@ -1,4 +1,4 @@ -package com.lxyer.bbs.base; +package com.lxyer.bbs.base.kit; import java.text.SimpleDateFormat; import java.util.regex.Matcher; diff --git a/src/com/lxyer/bbs/base/RetCodes.java b/src/com/lxyer/bbs/base/kit/RetCodes.java similarity index 98% rename from src/com/lxyer/bbs/base/RetCodes.java rename to src/com/lxyer/bbs/base/kit/RetCodes.java index 969defc..8ba8ae6 100644 --- a/src/com/lxyer/bbs/base/RetCodes.java +++ b/src/com/lxyer/bbs/base/kit/RetCodes.java @@ -1,4 +1,4 @@ -package com.lxyer.bbs.base; +package com.lxyer.bbs.base.kit; import org.redkale.service.RetLabel; import org.redkale.service.RetResult; diff --git a/src/com/lxyer/bbs/base/user/UserService.java b/src/com/lxyer/bbs/base/user/UserService.java index 11cf962..7b35fad 100644 --- a/src/com/lxyer/bbs/base/user/UserService.java +++ b/src/com/lxyer/bbs/base/user/UserService.java @@ -1,8 +1,8 @@ package com.lxyer.bbs.base.user; import com.lxyer.bbs.base.BaseService; -import com.lxyer.bbs.base.LxyKit; -import com.lxyer.bbs.base.RetCodes; +import com.lxyer.bbs.base.kit.LxyKit; +import com.lxyer.bbs.base.kit.RetCodes; import org.redkale.net.http.RestMapping; import org.redkale.net.http.RestParam; import org.redkale.net.http.RestService; @@ -11,14 +11,12 @@ import org.redkale.service.RetResult; import org.redkale.source.*; import org.redkale.util.SelectColumn; import org.redkale.util.Sheet; -import org.redkalex.cache.RedisCacheSource; -import javax.annotation.Resource; import java.util.ArrayList; import java.util.Objects; import java.util.Random; -import static com.lxyer.bbs.base.RetCodes.*; +import static com.lxyer.bbs.base.kit.RetCodes.*; /** * Created by Lxy at 2017/10/3 14:02. @@ -26,12 +24,6 @@ import static com.lxyer.bbs.base.RetCodes.*; @RestService(automapping = true, comment = "用户服务") public class UserService extends BaseService { - @Resource(name = "redis") - protected RedisCacheSource sessions; - - @Resource - protected CacheSource userInfos; - @RestMapping(auth = false, comment = "登录校验") public RetResult login(@RestParam(name = "bean") LoginBean loginBean){ if (loginBean == null || loginBean.emptyUsername()) return RetCodes.retResult(RetCodes.RET_PARAMS_ILLEGAL, "参数错误"); @@ -47,7 +39,7 @@ public class UserService extends BaseService { //log(user, 0, "用户登录成功."); UserInfo userInfo = user.createUserInfo(); - this.sessions.setAsync(sessionExpireSeconds, loginBean.getSessionid(), userInfo.getUserId()); + sessions.setAsync(sessionExpireSeconds, loginBean.getSessionid(), userInfo.getUserId()); retResult.setRetcode(0); retResult.setResult(userInfo); retResult.setRetinfo("登录成功."); diff --git a/src/com/lxyer/bbs/comment/Comment.java b/src/com/lxyer/bbs/comment/Comment.java index a99a6a1..11f396a 100644 --- a/src/com/lxyer/bbs/comment/Comment.java +++ b/src/com/lxyer/bbs/comment/Comment.java @@ -1,6 +1,6 @@ package com.lxyer.bbs.comment; -import com.lxyer.bbs.base.LxyKit; +import com.lxyer.bbs.base.kit.LxyKit; import org.redkale.convert.json.JsonConvert; import javax.persistence.*; diff --git a/src/com/lxyer/bbs/comment/CommentService.java b/src/com/lxyer/bbs/comment/CommentService.java index 762f9fc..e4165fb 100644 --- a/src/com/lxyer/bbs/comment/CommentService.java +++ b/src/com/lxyer/bbs/comment/CommentService.java @@ -1,8 +1,8 @@ package com.lxyer.bbs.comment; import com.lxyer.bbs.base.BaseService; -import com.lxyer.bbs.base.LxyKit; -import com.lxyer.bbs.base.RetCodes; +import com.lxyer.bbs.base.kit.LxyKit; +import com.lxyer.bbs.base.kit.RetCodes; import com.lxyer.bbs.base.entity.ActLog; import com.lxyer.bbs.base.user.User; import com.lxyer.bbs.base.user.UserService; @@ -21,8 +21,8 @@ import java.util.ArrayList; import java.util.List; import java.util.Map; -import static com.lxyer.bbs.base.RetCodes.RET_COMMENT_CONTENT_ILLEGAL; -import static com.lxyer.bbs.base.RetCodes.RET_COMMENT_PARA_ILLEGAL; +import static com.lxyer.bbs.base.kit.RetCodes.RET_COMMENT_CONTENT_ILLEGAL; +import static com.lxyer.bbs.base.kit.RetCodes.RET_COMMENT_PARA_ILLEGAL; /** * Created by Lxy at 2017/11/29 10:00. diff --git a/src/com/lxyer/bbs/content/Content.java b/src/com/lxyer/bbs/content/Content.java index 4a8c130..099aef8 100644 --- a/src/com/lxyer/bbs/content/Content.java +++ b/src/com/lxyer/bbs/content/Content.java @@ -1,7 +1,7 @@ package com.lxyer.bbs.content; import com.jfinal.kit.Kv; -import com.lxyer.bbs.base.LxyKit; +import com.lxyer.bbs.base.kit.LxyKit; import org.redkale.convert.json.JsonConvert; import javax.persistence.*; diff --git a/src/com/lxyer/bbs/content/ContentService.java b/src/com/lxyer/bbs/content/ContentService.java index 301efce..7d47e5c 100644 --- a/src/com/lxyer/bbs/content/ContentService.java +++ b/src/com/lxyer/bbs/content/ContentService.java @@ -2,8 +2,8 @@ package com.lxyer.bbs.content; import com.jfinal.kit.Kv; import com.lxyer.bbs.base.BaseService; -import com.lxyer.bbs.base.LxyKit; -import com.lxyer.bbs.base.RetCodes; +import com.lxyer.bbs.base.kit.LxyKit; +import com.lxyer.bbs.base.kit.RetCodes; import com.lxyer.bbs.base.entity.ActLog; import com.lxyer.bbs.base.user.User; import com.lxyer.bbs.base.user.UserInfo; diff --git a/src/com/lxyer/bbs/servlet/ContentServlet.java b/src/com/lxyer/bbs/servlet/ContentServlet.java new file mode 100644 index 0000000..4308a06 --- /dev/null +++ b/src/com/lxyer/bbs/servlet/ContentServlet.java @@ -0,0 +1,108 @@ +package com.lxyer.bbs.servlet; + +import com.jfinal.kit.Kv; +import com.lxyer.bbs.base.BaseServlet; +import com.lxyer.bbs.base.user.User; +import com.lxyer.bbs.comment.CommentInfo; +import com.lxyer.bbs.content.ContentInfo; +import org.redkale.net.http.*; +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; + +/** + * 帖子相关 + * Created by liangxianyou at 2018/6/4 13:15. + */ +@WebServlet({"/jie" ,"/jie/*" + ,"/column","/column/*"}) +public class ContentServlet extends BaseServlet { + @HttpMapping(url = "/jie", auth = false, comment = "问答列表") + public void jie(HttpRequest request, HttpResponse response){ + String actived = getPara(0, "all"); + int curr = request.getIntParameter("curr", 1); + + //分页帖子列表 + Flipper flipper = new Flipper().offset((curr-1)*15).limit(15).sort("top DESC,createTime DESC"); + Sheet contents = contentService.contentQuery(flipper, actived, currentId); + + Kv kv = Kv.by("contents", contents).set("url", request.getRequestURI()) + .set("actived", actived).set("curr", curr); + finish("/jie/index.html", kv); + } + + @HttpMapping(url = "/jie/add", comment = "发表/编辑问答") + @HttpParam(name = "#", type = int.class, comment = "内容ID") + public void add(HttpRequest request, HttpResponse response){ + int contentid = getParaToInt(0); + + ContentInfo contentInfo = null; + if (contentid > 0){ + contentInfo = contentService.contentInfo(sessionid, contentid); + } + + finish("/jie/add.html", Kv.by("bean", contentInfo)); + } + + @HttpMapping(url = "/jie/detail", auth = false, comment = "问答详情") + public void detail(HttpRequest request, HttpResponse response){ + int contentid = getParaToInt(0); + + ContentInfo content = contentService.contentInfo(sessionid, contentid); + Sheet comments = commentService.commentQuery(request.getSessionid(false) ,contentid, new Flipper().limit(30)); + + //热帖 + //Flipper flipper2 = new Flipper().limit(8).sort("viewNum DESC"); + //Sheet hotView = contentService.contentQuery(flipper2, ""); + + //热议 + Flipper flipper3 = new Flipper().limit(8).sort("replyNum DESC"); + Sheet hotReply = contentService.contentQuery(flipper3, "", currentId); + + //更新 + CompletableFuture.supplyAsync(new Supplier() { + @Override + public String get() { + User user = request.currentUser(); + if (user == null || user.getUserId() > 10_0003) + contentService.incrViewNum(contentid); + return ""; + } + }); + + Kv kv = Kv.by("bean", content).set("comments", comments)/*.set("hotView", hotView)*/.set("hotReply", hotReply); + finish("/jie/detail.html", kv); + } + + @HttpMapping(url = "/column", auth = false, comment = "帖子栏目") + public void column(HttpRequest request, HttpResponse response){ + String para = getPara();//空,qz,fx,jy,gg,dt, + int solved = request.getIntParameter("solved", -1); + int wonderful = request.getIntParameter("wonderful", -1); + int curr = request.getIntParameter("curr", 1); + + Kv column = Kv.by("qz", 10).set("fx", 20).set("jy", 30).set("gg", 40).set("dt", 50);//栏目 + + Flipper flipper = new Flipper().offset((curr-1) * 20).limit(20).sort("top DESC,createTime DESC"); + //帖子列表 + FilterNode filterNode = FilterNode.create("status", NOTEQUAL, -1).and("type", column.getAs(para)); + if (solved > -1) filterNode.and("solved", solved); + if (wonderful > -1) filterNode.and("wonderful", wonderful); + + Sheet contents = contentService.contentQuery(flipper, setPrivate(filterNode)); + + //热议 + Flipper flipper3 = new Flipper().limit(8).sort("replyNum DESC"); + Sheet hotReply = contentService.contentQuery(flipper3, "", currentId); + + + Kv kv = Kv.by("contents", contents).set("hotReply", hotReply) + .set("solved", solved).set("wonderful", wonderful).set("column", para).set("curr", curr); + finish("/jie/index.html", kv); + } +} diff --git a/src/com/lxyer/bbs/servlet/FileServlet.java b/src/com/lxyer/bbs/servlet/FileServlet.java new file mode 100644 index 0000000..4ebfb7a --- /dev/null +++ b/src/com/lxyer/bbs/servlet/FileServlet.java @@ -0,0 +1,51 @@ +package com.lxyer.bbs.servlet; + +import com.lxyer.bbs.base.BaseServlet; +import org.redkale.net.http.*; + +import java.io.File; +import java.io.IOException; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +/** + * 文件相关 + * Created by liangxianyou at 2018/6/4 13:17. + */ +@WebServlet({"/upload","/upload/*"}) +public class FileServlet extends BaseServlet { + + private static final String dir = "/var/www/upload/redbbs/"; + private static final String view = "http://img.1216.top/redbbs/"; + private static final String format = "%1$tY%1$tm%1$td%1$tH%1$tM%1$tS"; + + @HttpMapping(url = "/upload/img", auth = false, comment = "图片上传") + public void uploadImg(HttpRequest request, HttpResponse response){ + try { + Map ret = new HashMap(); + ret.put("errno", 0); + List data = new ArrayList(); + + for (MultiPart part : request.multiParts()) { + String name = part.getName(); + String suffix = name.substring(name.lastIndexOf(".")); + String path = String.format(format, System.currentTimeMillis()) + suffix; + File destFile = new File((winos ? "D:/wk/_own/redbbs/root/tem/" : dir) + path); + destFile.getParentFile().mkdir(); + + part.save(destFile); + + data.add((winos ? "/tem/": view) + path); + } + ret.put("data", data); + + response.setContentType("application/json; charset=utf-8"); + response.finish(ret); + } catch (IOException e) { + e.printStackTrace(); + } + + } +} diff --git a/src/com/lxyer/bbs/servlet/IndexServlet.java b/src/com/lxyer/bbs/servlet/IndexServlet.java index 965d2f7..3f65f7f 100644 --- a/src/com/lxyer/bbs/servlet/IndexServlet.java +++ b/src/com/lxyer/bbs/servlet/IndexServlet.java @@ -2,55 +2,37 @@ package com.lxyer.bbs.servlet; import com.jfinal.kit.Kv; import com.lxyer.bbs.base.BaseServlet; -import com.lxyer.bbs.base.user.User; -import com.lxyer.bbs.base.user.UserBean; import com.lxyer.bbs.base.user.UserInfo; -import com.lxyer.bbs.comment.CommentInfo; -import com.lxyer.bbs.comment.CommentService; -import com.lxyer.bbs.content.ContentBean; import com.lxyer.bbs.content.ContentInfo; -import com.lxyer.bbs.content.ContentService; -import org.redkale.net.http.*; -import org.redkale.source.FilterExpress; +import org.redkale.net.http.HttpMapping; +import org.redkale.net.http.HttpRequest; +import org.redkale.net.http.HttpResponse; +import org.redkale.net.http.WebServlet; import org.redkale.source.FilterNode; import org.redkale.source.Flipper; import org.redkale.util.Sheet; -import javax.annotation.Resource; -import java.io.File; -import java.io.IOException; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; -import java.util.concurrent.CompletableFuture; -import java.util.function.Supplier; +import static org.redkale.source.FilterExpress.GREATERTHAN; +import static org.redkale.source.FilterExpress.NOTEQUAL; + /** * Created by Lxy at 2017/11/25 12:31. */ -@WebServlet({"/","/column","/column/*" - ,"/user", "/user/*" - ,"/jie" ,"/jie/*" - ,"/upload","/upload/*" +@WebServlet({"/" + /* ,"/article","/article/*" */ }) public class IndexServlet extends BaseServlet { - @Resource - private ContentService contentService; - - @Resource - private CommentService commentService; - @HttpMapping(url = "/", auth = false, comment = "社区首页") public void abc(HttpRequest request, HttpResponse response){ Flipper flipper = new Flipper().limit(30).sort("top DESC,createTime DESC"); //置顶贴 - FilterNode topNode = FilterNode.create("status", FilterExpress.NOTEQUAL, -1).and("top", FilterExpress.GREATERTHAN, 0); + FilterNode topNode = FilterNode.create("status", NOTEQUAL, -1).and("top", GREATERTHAN, 0); Sheet top = contentService.contentQuery(flipper, setPrivate(topNode)); //非置顶贴 - FilterNode untopNode = FilterNode.create("status", FilterExpress.NOTEQUAL, -1).and("top", 0); + FilterNode untopNode = FilterNode.create("status", NOTEQUAL, -1).and("top", 0); Sheet contents = contentService.contentQuery(flipper, setPrivate(untopNode)); //热帖 @@ -59,7 +41,7 @@ public class IndexServlet extends BaseServlet { //热议 Flipper flipper3 = new Flipper().limit(8).sort("replyNum DESC"); - Sheet hotReply = contentService.contentQuery(flipper3, "", currentId()); + Sheet hotReply = contentService.contentQuery(flipper3, "", currentId); //最新加入 Sheet lastReg = userService.lastReg(); @@ -71,215 +53,16 @@ public class IndexServlet extends BaseServlet { finish("index.html", kv); } - @HttpMapping(url = "/column", auth = false, comment = "社区首页") - public void column(HttpRequest request, HttpResponse response){ - String para = getPara();//空,qz,fx,jy,gg,dt, - int solved = request.getIntParameter("solved", -1); - int wonderful = request.getIntParameter("wonderful", -1); - int curr = request.getIntParameter("curr", 1); - - Kv column = Kv.by("qz", 10).set("fx", 20).set("jy", 30).set("gg", 40).set("dt", 50);//栏目 - - Flipper flipper = new Flipper().offset((curr-1) * 20).limit(20).sort("top DESC,createTime DESC"); - //帖子列表 - FilterNode filterNode = FilterNode.create("status", FilterExpress.NOTEQUAL, -1).and("type", column.getAs(para)); - if (solved > -1) filterNode.and("solved", solved); - if (wonderful > -1) filterNode.and("wonderful", wonderful); - - Sheet contents = contentService.contentQuery(flipper, setPrivate(filterNode)); - - //热议 - Flipper flipper3 = new Flipper().limit(8).sort("replyNum DESC"); - Sheet hotReply = contentService.contentQuery(flipper3, "", currentId()); - - - Kv kv = Kv.by("contents", contents).set("hotReply", hotReply) - .set("solved", solved).set("wonderful", wonderful).set("column", para).set("curr", curr); - finish("/jie/index.html", kv); - } - @HttpMapping(url = "/site", auth = false, comment = "网站首页") public void site(HttpRequest request, HttpResponse response){ finish("/site.html"); } - //====================================用户相关==================================== - - @HttpMapping(url = "/user/login", auth = false, comment = "前往登录页") - public void login(HttpRequest request, HttpResponse response){ - - finish("/user/login.html"); - } - @HttpMapping(url = "/user/reg", auth = false, comment = "前往登录页") - public void reg(HttpRequest request, HttpResponse response){ - /*List list = new ArrayList<>(); - list.add(Kv.by("k", 1).set("a", "1+1=?").set("q", 2)); - list.add(Kv.by("k", 2).set("a", "1*1=?").set("q", 1)); - list.add(Kv.by("k", 3).set("a", "3+2-5=?").set("q", 0)); - list.add(Kv.by("k", 4).set("a", "Math.abs(-3)=?").set("q", 3));*/ - - finish("/user/login.html"); - } - - @HttpMapping(url = "/user/set", auth = true, comment = "用户设置") - public void set(HttpRequest request, HttpResponse response){ - finish("/user/set.html"); - } - - - @HttpMapping(url = "/user", auth = false, comment = "用户首页") - public void user(HttpRequest request, HttpResponse response){ - String para = getPara(); - - //-------个人中心--------- - if ("user".equals(para) || "".equals(para)){ - UserInfo user = request.currentUser(); - if (user == null){ - finish("/user/login.html"); - return; - } - - //创建的帖子 - Flipper flipper = new Flipper().limit(8).sort("createTime DESC"); - ContentBean bean = new ContentBean(); - bean.setUserId(user.getUserId()); - Sheet contents = contentService.queryByBean(flipper, bean); - - //收藏的帖子 - Sheet collects = contentService.collectQuery(sessionid); - - Kv kv = Kv.by("contents", contents).set("collects", collects); - finish("/user/index.html", kv); - return; - } - - //-------用户主页------ - int userId = 0; - if ("nick".equals(para)){//通过@ 点击跳转 - String nickname = request.getParameter("nickname"); - UserBean userBean = new UserBean(); - userBean.setNickname(nickname); - Sheet users = userService.queryUser(new Flipper().limit(1), userBean); - if (users.getTotal() > 0){ - userId = users.stream().findFirst().orElse(null).getUserId(); - } - }else {//直接访问 - userId = getParaToInt(0); - } - - //用户信息 - UserInfo user = userService.findUserInfo(userId); - - //帖子 - Flipper flipper = new Flipper().limit(8).sort("createTime DESC"); - ContentBean bean = new ContentBean(); - bean.setUserId(userId); - Sheet contents = contentService.queryByBean(flipper, bean); - - //回复 - Sheet comments = commentService.queryByUserid(userId); - - Kv kv = Kv.by("contents", contents).set("user", user).set("comments", comments); - finish("/user/home.html", kv); - } - - //====================================帖子相关==================================== - - - @HttpMapping(url = "/jie", auth = false, comment = "问答列表") - public void jie(HttpRequest request, HttpResponse response){ - String actived = getPara(0, "all"); - int curr = request.getIntParameter("curr", 1); - - //分页帖子列表 - Flipper flipper = new Flipper().offset((curr-1)*15).limit(15).sort("top DESC,createTime DESC"); - Sheet contents = contentService.contentQuery(flipper, actived, currentId()); - - Kv kv = Kv.by("contents", contents).set("url", request.getRequestURI()) - .set("actived", actived).set("curr", curr); - finish("/jie/index.html", kv); - } - - @HttpMapping(url = "/jie/add", comment = "发表/编辑问答") - @HttpParam(name = "#", type = int.class, comment = "内容ID") - public void add(HttpRequest request, HttpResponse response){ - int contentid = getParaToInt(0); - - ContentInfo contentInfo = null; - if (contentid > 0){ - contentInfo = contentService.contentInfo(sessionid, contentid); - } - - finish("/jie/add.html", Kv.by("bean", contentInfo)); - } - - @HttpMapping(url = "/jie/detail", auth = false, comment = "问答详情") - public void detail(HttpRequest request, HttpResponse response){ - int contentid = getParaToInt(0); - - ContentInfo content = contentService.contentInfo(sessionid, contentid); - Sheet comments = commentService.commentQuery(request.getSessionid(false) ,contentid, new Flipper().limit(30)); - - //热帖 - //Flipper flipper2 = new Flipper().limit(8).sort("viewNum DESC"); - //Sheet hotView = contentService.contentQuery(flipper2, ""); - - //热议 - Flipper flipper3 = new Flipper().limit(8).sort("replyNum DESC"); - Sheet hotReply = contentService.contentQuery(flipper3, "", currentId()); - - //更新 - CompletableFuture.supplyAsync(new Supplier() { - @Override - public String get() { - User user = request.currentUser(); - if (user == null || user.getUserId() > 10_0003) - contentService.incrViewNum(contentid); - return ""; - } - }); - - Kv kv = Kv.by("bean", content).set("comments", comments)/*.set("hotView", hotView)*/.set("hotReply", hotReply); - finish("/jie/detail.html", kv); - } - - - //====================================帖子相关==================================== - - //====================================上传相关====================================、 - - private static final String dir = "/var/www/upload/redbbs/"; - private static final String view = "http://img.1216.top/redbbs/"; - private static final String format = "%1$tY%1$tm%1$td%1$tH%1$tM%1$tS"; - protected static final boolean winos = System.getProperty("os.name").contains("Window"); - @HttpMapping(url = "/upload/img", auth = false, comment = "图片上传") - public void uploadImg(HttpRequest request, HttpResponse response){ - try { - Map ret = new HashMap(); - ret.put("errno", 0); - List data = new ArrayList(); - - for (MultiPart part : request.multiParts()) { - String name = part.getName(); - String suffix = name.substring(name.lastIndexOf(".")); - String path = String.format(format, System.currentTimeMillis()) + suffix; - File destFile = new File((winos ? "D:/wk/_own/redbbs/root/tem/" : dir) + path); - destFile.getParentFile().mkdir(); - - part.save(destFile); - - data.add((winos ? "/tem/": view) + path); - } - ret.put("data", data); - - response.setContentType("application/json; charset=utf-8"); - response.finish(ret); - } catch (IOException e) { - e.printStackTrace(); - } - - } - + //====================================文章相关==================================== + /*@HttpMapping(url = "/article", auth = false, comment = "文章首页") + public void article(HttpRequest request, HttpResponse response){ + finish("/article/index.html"); + }*/ } diff --git a/src/com/lxyer/bbs/servlet/UserServlet.java b/src/com/lxyer/bbs/servlet/UserServlet.java new file mode 100644 index 0000000..cd1679e --- /dev/null +++ b/src/com/lxyer/bbs/servlet/UserServlet.java @@ -0,0 +1,103 @@ +package com.lxyer.bbs.servlet; + +import com.jfinal.kit.Kv; +import com.lxyer.bbs.base.BaseServlet; +import com.lxyer.bbs.base.user.User; +import com.lxyer.bbs.base.user.UserBean; +import com.lxyer.bbs.base.user.UserInfo; +import com.lxyer.bbs.comment.CommentInfo; +import com.lxyer.bbs.content.ContentBean; +import com.lxyer.bbs.content.ContentInfo; +import org.redkale.net.http.HttpMapping; +import org.redkale.net.http.HttpRequest; +import org.redkale.net.http.HttpResponse; +import org.redkale.net.http.WebServlet; +import org.redkale.source.Flipper; +import org.redkale.util.Sheet; + +/** + * 用户相关的servlet + * Created by liangxianyou at 2018/6/4 13:12. + */ +@WebServlet({"/user", "/user/*"}) +public class UserServlet extends BaseServlet { + + + @HttpMapping(url = "/user/login", auth = false, comment = "前往登录页") + public void login(HttpRequest request, HttpResponse response){ + + finish("/user/login.html"); + } + @HttpMapping(url = "/user/reg", auth = false, comment = "前往登录页") + public void reg(HttpRequest request, HttpResponse response){ + /*List list = new ArrayList<>(); + list.add(Kv.by("k", 1).set("a", "1+1=?").set("q", 2)); + list.add(Kv.by("k", 2).set("a", "1*1=?").set("q", 1)); + list.add(Kv.by("k", 3).set("a", "3+2-5=?").set("q", 0)); + list.add(Kv.by("k", 4).set("a", "Math.abs(-3)=?").set("q", 3));*/ + + finish("/user/login.html"); + } + + @HttpMapping(url = "/user/set", auth = true, comment = "用户设置") + public void set(HttpRequest request, HttpResponse response){ + finish("/user/set.html"); + } + + + @HttpMapping(url = "/user", auth = false, comment = "用户首页") + public void user(HttpRequest request, HttpResponse response){ + String para = getPara(); + + //-------个人中心--------- + if ("user".equals(para) || "".equals(para)){ + UserInfo user = request.currentUser(); + if (user == null){ + finish("/user/login.html"); + return; + } + + //创建的帖子 + Flipper flipper = new Flipper().limit(8).sort("createTime DESC"); + ContentBean bean = new ContentBean(); + bean.setUserId(user.getUserId()); + Sheet contents = contentService.queryByBean(flipper, bean); + + //收藏的帖子 + Sheet collects = contentService.collectQuery(sessionid); + + Kv kv = Kv.by("contents", contents).set("collects", collects); + finish("/user/index.html", kv); + return; + } + + //-------用户主页------ + int userId = 0; + if ("nick".equals(para)){//通过@ 点击跳转 + String nickname = request.getParameter("nickname"); + UserBean userBean = new UserBean(); + userBean.setNickname(nickname); + Sheet users = userService.queryUser(new Flipper().limit(1), userBean); + if (users.getTotal() > 0){ + userId = users.stream().findFirst().orElse(null).getUserId(); + } + }else {//直接访问 + userId = getParaToInt(0); + } + + //用户信息 + UserInfo user = userService.findUserInfo(userId); + + //帖子 + Flipper flipper = new Flipper().limit(8).sort("createTime DESC"); + ContentBean bean = new ContentBean(); + bean.setUserId(userId); + Sheet contents = contentService.queryByBean(flipper, bean); + + //回复 + Sheet comments = commentService.queryByUserid(userId); + + Kv kv = Kv.by("contents", contents).set("user", user).set("comments", comments); + finish("/user/home.html", kv); + } +}