帖子功能加入[发布/更新/评论/置顶/加精/删除]
This commit is contained in:
parent
f2cc75b5bd
commit
cb3a29991e
@ -6,12 +6,15 @@ import java.util.Map;
|
|||||||
/**
|
/**
|
||||||
* Created by Lxyer lxy208@126.com at 2016/8/4 0:13.
|
* Created by Lxyer lxy208@126.com at 2016/8/4 0:13.
|
||||||
*/
|
*/
|
||||||
public class JsonBean {
|
public class JBean {
|
||||||
public int code;//全局状态码: -1失败,1成功,2未登录
|
public int code;//全局状态码: -1失败,1成功,2未登录
|
||||||
public String msg;
|
public String msg;
|
||||||
public Object obj;
|
public Object obj;
|
||||||
|
|
||||||
public JsonBean(int code){
|
public static final JBean success = new JBean(1, "操作成功");
|
||||||
|
public static final JBean error = new JBean(-1, "操作失败");
|
||||||
|
|
||||||
|
public JBean(int code){
|
||||||
this.code = code;
|
this.code = code;
|
||||||
if (code == 1)
|
if (code == 1)
|
||||||
this.msg = "操作成功";
|
this.msg = "操作成功";
|
||||||
@ -21,11 +24,11 @@ public class JsonBean {
|
|||||||
this.msg = "未登录,请前往登录";
|
this.msg = "未登录,请前往登录";
|
||||||
}
|
}
|
||||||
|
|
||||||
public JsonBean(int code, String msg){
|
public JBean(int code, String msg){
|
||||||
this.code = code;
|
this.code = code;
|
||||||
this.msg = msg;
|
this.msg = msg;
|
||||||
}
|
}
|
||||||
public JsonBean(int code, String msg, Object obj){
|
public JBean(int code, String msg, Object obj){
|
||||||
this.code = code;
|
this.code = code;
|
||||||
this.msg = msg;
|
this.msg = msg;
|
||||||
this.obj = obj;
|
this.obj = obj;
|
||||||
@ -35,7 +38,7 @@ public class JsonBean {
|
|||||||
return msg;
|
return msg;
|
||||||
}
|
}
|
||||||
|
|
||||||
public JsonBean setMsg(String msg) {
|
public JBean setMsg(String msg) {
|
||||||
this.msg = msg;
|
this.msg = msg;
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
@ -44,7 +47,7 @@ public class JsonBean {
|
|||||||
return code;
|
return code;
|
||||||
}
|
}
|
||||||
|
|
||||||
public JsonBean setCode(int code) {
|
public JBean setCode(int code) {
|
||||||
this.code = code;
|
this.code = code;
|
||||||
if (code == 1)
|
if (code == 1)
|
||||||
this.msg = "操作成功";
|
this.msg = "操作成功";
|
||||||
@ -53,12 +56,12 @@ public class JsonBean {
|
|||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
public JsonBean setCode(int code, String msg) {
|
public JBean setCode(int code, String msg) {
|
||||||
this.code = code;
|
this.code = code;
|
||||||
this.msg = msg;
|
this.msg = msg;
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
public JsonBean setCode(int code, String msg, Object obj) {
|
public JBean setCode(int code, String msg, Object obj) {
|
||||||
this.code = code;
|
this.code = code;
|
||||||
this.msg = msg;
|
this.msg = msg;
|
||||||
this.obj = obj;
|
this.obj = obj;
|
||||||
@ -69,11 +72,11 @@ public class JsonBean {
|
|||||||
return obj;
|
return obj;
|
||||||
}
|
}
|
||||||
|
|
||||||
public JsonBean setObj(Object obj) {
|
public JBean setObj(Object obj) {
|
||||||
this.obj = obj;
|
this.obj = obj;
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
public <K, V> JsonBean set(Object k, Object v){
|
public <K, V> JBean set(Object k, Object v){
|
||||||
if (!(obj instanceof Map)){
|
if (!(obj instanceof Map)){
|
||||||
obj = new HashMap();
|
obj = new HashMap();
|
||||||
}
|
}
|
||||||
@ -86,35 +89,29 @@ public class JsonBean {
|
|||||||
下面的是一些快速创建JsonBean的方式,
|
下面的是一些快速创建JsonBean的方式,
|
||||||
使用中可以使用new ,同时也可以直接使用
|
使用中可以使用new ,同时也可以直接使用
|
||||||
*/
|
*/
|
||||||
public static JsonBean success(){
|
public static JBean success(Object obj){
|
||||||
return new JsonBean(1, "操作成功");
|
return new JBean(1, "操作成功",obj);
|
||||||
}
|
}
|
||||||
public static JsonBean success(Object obj){
|
public static JBean success(int code, String msg){
|
||||||
return new JsonBean(1, "操作成功",obj);
|
return new JBean(1, msg);
|
||||||
}
|
}
|
||||||
public static JsonBean success(int code, String msg){
|
public static JBean success(int code, String msg, Object obj){
|
||||||
return new JsonBean(1, msg);
|
return new JBean(1, msg, obj);
|
||||||
}
|
|
||||||
public static JsonBean success(int code, String msg, Object obj){
|
|
||||||
return new JsonBean(1, msg, obj);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public static JsonBean error(){
|
public static JBean error(int code, String msg){
|
||||||
return new JsonBean(-1, "操作失败");
|
return new JBean(code, msg);
|
||||||
}
|
}
|
||||||
public static JsonBean error(int code, String msg){
|
public static JBean error(int code, String msg, Object obj){
|
||||||
return new JsonBean(code, msg);
|
return new JBean(code, msg, obj);
|
||||||
}
|
}
|
||||||
public static JsonBean error(int code, String msg, Object obj){
|
public static JBean error(String msg){
|
||||||
return new JsonBean(code, msg, obj);
|
return new JBean(-1, msg);
|
||||||
}
|
|
||||||
public static JsonBean error(String msg){
|
|
||||||
return new JsonBean(-1, msg);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String toString() {
|
public String toString() {
|
||||||
return "JsonBean{" +
|
return "JBean{" +
|
||||||
"code=" + code +
|
"code=" + code +
|
||||||
", msg='" + msg + '\'' +
|
", msg='" + msg + '\'' +
|
||||||
", obj=" + obj +
|
", obj=" + obj +
|
@ -3,6 +3,7 @@ package com.lxyer.config.interceptor;
|
|||||||
import com.jfinal.aop.Interceptor;
|
import com.jfinal.aop.Interceptor;
|
||||||
import com.jfinal.aop.Invocation;
|
import com.jfinal.aop.Invocation;
|
||||||
import com.jfinal.core.Controller;
|
import com.jfinal.core.Controller;
|
||||||
|
import com.lxyer.config.JBean;
|
||||||
import com.lxyer.model.User;
|
import com.lxyer.model.User;
|
||||||
|
|
||||||
import javax.servlet.http.HttpServletRequest;
|
import javax.servlet.http.HttpServletRequest;
|
||||||
@ -22,7 +23,8 @@ public class LoginInterceptor implements Interceptor {
|
|||||||
User user = controller.getSessionAttr("user");
|
User user = controller.getSessionAttr("user");
|
||||||
if (user == null){
|
if (user == null){
|
||||||
if ("XMLHttpRequest".equals(request.getHeader("X-Requested-With"))){
|
if ("XMLHttpRequest".equals(request.getHeader("X-Requested-With"))){
|
||||||
|
controller.renderJson(new JBean(-1,"请登录后再尝试"));
|
||||||
|
return;
|
||||||
}else {
|
}else {
|
||||||
controller.redirect("/user/login");
|
controller.redirect("/user/login");
|
||||||
}
|
}
|
||||||
|
@ -1,6 +1,7 @@
|
|||||||
package com.lxyer.config.route;
|
package com.lxyer.config.route;
|
||||||
|
|
||||||
import com.jfinal.config.Routes;
|
import com.jfinal.config.Routes;
|
||||||
|
import com.lxyer.controller.CommentController;
|
||||||
import com.lxyer.controller.HomeController;
|
import com.lxyer.controller.HomeController;
|
||||||
import com.lxyer.controller.JieController;
|
import com.lxyer.controller.JieController;
|
||||||
import com.lxyer.controller.UserController;
|
import com.lxyer.controller.UserController;
|
||||||
@ -16,5 +17,6 @@ public class SiteRoute extends Routes {
|
|||||||
add("/", HomeController.class);
|
add("/", HomeController.class);
|
||||||
add("/user", UserController.class);
|
add("/user", UserController.class);
|
||||||
add("/jie", JieController.class);
|
add("/jie", JieController.class);
|
||||||
|
add("/comment", CommentController.class);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
58
src/main/java/com/lxyer/controller/CommentController.java
Normal file
58
src/main/java/com/lxyer/controller/CommentController.java
Normal file
@ -0,0 +1,58 @@
|
|||||||
|
package com.lxyer.controller;
|
||||||
|
|
||||||
|
import com.jfinal.aop.Before;
|
||||||
|
import com.jfinal.kit.Kv;
|
||||||
|
import com.jfinal.plugin.activerecord.Page;
|
||||||
|
import com.lxyer.config.JBean;
|
||||||
|
import com.lxyer.config.interceptor.LoginInterceptor;
|
||||||
|
import com.lxyer.model.Comment;
|
||||||
|
import com.lxyer.service.CommentService;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Created by JUECHENG at 2018/1/8 23:07.
|
||||||
|
*/
|
||||||
|
public class CommentController extends IController {
|
||||||
|
|
||||||
|
CommentService service = CommentService.me;
|
||||||
|
/**
|
||||||
|
* 评论列表
|
||||||
|
*/
|
||||||
|
public void list(){
|
||||||
|
Kv kv = getParams("contentId");
|
||||||
|
Page<Comment> page = Comment.dao.findPage(getPn(), getPs(), kv);
|
||||||
|
|
||||||
|
renderJBean(page);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 评论详情
|
||||||
|
*/
|
||||||
|
public void info(){
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 评论保存
|
||||||
|
*/
|
||||||
|
@Before(LoginInterceptor.class)
|
||||||
|
public void save(){
|
||||||
|
Comment comment = getModel(Comment.class);
|
||||||
|
|
||||||
|
service.save(comment, getUserId());
|
||||||
|
renderJBean(JBean.success);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* todo:更新状态
|
||||||
|
*/
|
||||||
|
public void update_status(){
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* todo:评论点赞
|
||||||
|
*/
|
||||||
|
public void support(){
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
@ -2,7 +2,6 @@ package com.lxyer.controller;
|
|||||||
|
|
||||||
import com.jfinal.kit.Kv;
|
import com.jfinal.kit.Kv;
|
||||||
import com.jfinal.plugin.activerecord.Page;
|
import com.jfinal.plugin.activerecord.Page;
|
||||||
import com.jfinal.plugin.activerecord.Record;
|
|
||||||
import com.lxyer.model.Content;
|
import com.lxyer.model.Content;
|
||||||
import com.lxyer.model.User;
|
import com.lxyer.model.User;
|
||||||
|
|
||||||
|
@ -6,6 +6,7 @@ import com.jfinal.plugin.activerecord.*;
|
|||||||
import com.jfinal.plugin.redis.Cache;
|
import com.jfinal.plugin.redis.Cache;
|
||||||
import com.jfinal.plugin.redis.Redis;
|
import com.jfinal.plugin.redis.Redis;
|
||||||
import com.lxyer.config.E;
|
import com.lxyer.config.E;
|
||||||
|
import com.lxyer.config.JBean;
|
||||||
import com.lxyer.model.User;
|
import com.lxyer.model.User;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
@ -51,6 +52,10 @@ public class IController extends Controller {
|
|||||||
return kv;
|
return kv;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void renderJBean(Object obj){
|
||||||
|
renderJson(new JBean(1, null, obj));
|
||||||
|
}
|
||||||
|
|
||||||
public int getPn(){
|
public int getPn(){
|
||||||
return getParaToInt("pn", 1);
|
return getParaToInt("pn", 1);
|
||||||
}
|
}
|
||||||
@ -121,4 +126,11 @@ public class IController extends Controller {
|
|||||||
return str;
|
return str;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* todo:文件上传
|
||||||
|
*/
|
||||||
|
public void upFile(){
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -1,9 +1,12 @@
|
|||||||
package com.lxyer.controller;
|
package com.lxyer.controller;
|
||||||
|
|
||||||
import com.jfinal.aop.Before;
|
import com.jfinal.aop.Before;
|
||||||
|
import com.jfinal.aop.Clear;
|
||||||
import com.jfinal.kit.Kv;
|
import com.jfinal.kit.Kv;
|
||||||
import com.lxyer.config.JsonBean;
|
import com.jfinal.plugin.activerecord.Page;
|
||||||
|
import com.lxyer.config.JBean;
|
||||||
import com.lxyer.config.interceptor.LoginInterceptor;
|
import com.lxyer.config.interceptor.LoginInterceptor;
|
||||||
|
import com.lxyer.model.Comment;
|
||||||
import com.lxyer.model.Content;
|
import com.lxyer.model.Content;
|
||||||
import com.lxyer.service.ContentService;
|
import com.lxyer.service.ContentService;
|
||||||
|
|
||||||
@ -12,35 +15,39 @@ import java.util.List;
|
|||||||
/**
|
/**
|
||||||
* Created by JUECHENG at 2018/1/7 16:48.
|
* Created by JUECHENG at 2018/1/7 16:48.
|
||||||
*/
|
*/
|
||||||
|
@Before(LoginInterceptor.class)
|
||||||
public class JieController extends IController{
|
public class JieController extends IController{
|
||||||
|
|
||||||
private ContentService contentService = ContentService.me;
|
private ContentService service = ContentService.me;
|
||||||
private int userId;
|
private int userId;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 帖子详情
|
* 帖子详情
|
||||||
*/
|
*/
|
||||||
|
@Clear(LoginInterceptor.class)
|
||||||
public void index(){
|
public void index(){
|
||||||
int contentId = getParaToInt(0);
|
int contentId = getParaToInt(0);
|
||||||
|
|
||||||
//ContentInfo content = contentService.contentInfo(sessionid, contentid);
|
|
||||||
//Sheet<CommentInfo> comments = commentService.commentQuery(request.getSessionid(false) ,contentid, new Flipper().limit(30));
|
|
||||||
|
|
||||||
Content content = Content.dao.findFirst(Kv.by("contentId", contentId));
|
Content content = Content.dao.findFirst(Kv.by("contentId", contentId));
|
||||||
|
|
||||||
|
//评论
|
||||||
|
Page<Comment> comments = Comment.dao.findPage(getPn(), getPs(), Kv.by("contentId", contentId));
|
||||||
|
|
||||||
//热议
|
//热议
|
||||||
List<Content> hotReply = Content.dao.findPage(1, 8, Kv.by("order", "replyNum DESC")).getList();
|
List<Content> hotReply = Content.dao.findPage(1, 8, Kv.by("order", "replyNum DESC")).getList();
|
||||||
|
|
||||||
setAttr("bean", content);
|
setAttr("bean", content);
|
||||||
|
setAttr("comments", comments);
|
||||||
setAttr("hotReply", hotReply);
|
setAttr("hotReply", hotReply);
|
||||||
|
|
||||||
|
//todo: 访问量+1
|
||||||
|
|
||||||
render("detail.html");
|
render("detail.html");
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 添加/修改帖子
|
* 添加/修改帖子
|
||||||
*/
|
*/
|
||||||
@Before(LoginInterceptor.class)
|
|
||||||
public void add(){
|
public void add(){
|
||||||
setAttr("bean", Content.dao.findById(getParaToInt()));
|
setAttr("bean", Content.dao.findById(getParaToInt()));
|
||||||
|
|
||||||
@ -50,13 +57,62 @@ public class JieController extends IController{
|
|||||||
/**
|
/**
|
||||||
* 帖子保存
|
* 帖子保存
|
||||||
*/
|
*/
|
||||||
@Before(LoginInterceptor.class)
|
|
||||||
public void save() {
|
public void save() {
|
||||||
Content content = getModel(Content.class);
|
Content content = getModel(Content.class);
|
||||||
|
|
||||||
contentService.save(content, getUserId());
|
service.save(content, getUserId());
|
||||||
|
|
||||||
renderJson(JsonBean.success());
|
renderJson(JBean.success);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 帖子删除
|
||||||
|
*/
|
||||||
|
public void del(){
|
||||||
|
JBean bean = new JBean(1);
|
||||||
|
try {
|
||||||
|
service.del(getParaToInt("contentId"), getUserId());
|
||||||
|
} catch (Exception e) {
|
||||||
|
bean.setCode(-1, e.getMessage());
|
||||||
|
}
|
||||||
|
|
||||||
|
renderJson(bean);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 帖子收藏
|
||||||
|
*/
|
||||||
|
public void collect(){
|
||||||
|
JBean bean = new JBean(1);
|
||||||
|
|
||||||
|
Integer contentId = getParaToInt("contentId");
|
||||||
|
Integer status = getParaToInt("ok", 1);
|
||||||
|
try {
|
||||||
|
service.collect(contentId, getUserId(), status);
|
||||||
|
|
||||||
|
} catch (Exception e) {
|
||||||
|
bean.setCode(-1, e.getMessage());
|
||||||
|
}
|
||||||
|
|
||||||
|
renderJson(bean);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 帖子加精/置顶
|
||||||
|
*/
|
||||||
|
public void set(){
|
||||||
|
JBean bean = new JBean(1);
|
||||||
|
|
||||||
|
Integer contentId = getParaToInt("id");
|
||||||
|
String field = getPara("field");
|
||||||
|
Integer v = getParaToInt("v");
|
||||||
|
|
||||||
|
try {
|
||||||
|
service.upField(contentId, field, v, getUserId());
|
||||||
|
} catch (Exception e) {
|
||||||
|
bean.setCode(-1, e.getMessage());
|
||||||
|
}
|
||||||
|
|
||||||
|
renderJson(bean);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
package com.lxyer.controller;
|
package com.lxyer.controller;
|
||||||
|
|
||||||
import com.lxyer.config.JsonBean;
|
import com.lxyer.config.JBean;
|
||||||
import com.lxyer.model.User;
|
import com.lxyer.model.User;
|
||||||
import com.lxyer.service.UserService;
|
import com.lxyer.service.UserService;
|
||||||
|
|
||||||
@ -15,7 +15,7 @@ public class UserController extends IController {
|
|||||||
* 注册
|
* 注册
|
||||||
*/
|
*/
|
||||||
public void create(){
|
public void create(){
|
||||||
JsonBean bean = new JsonBean(1);
|
JBean bean = new JBean(1);
|
||||||
String email = getPara("email");
|
String email = getPara("email");
|
||||||
String pwd = getPara("pwd");
|
String pwd = getPara("pwd");
|
||||||
String nickname = getPara("nickname");
|
String nickname = getPara("nickname");
|
||||||
@ -39,10 +39,10 @@ public class UserController extends IController {
|
|||||||
return;
|
return;
|
||||||
}else if ("out".equals(para)){
|
}else if ("out".equals(para)){
|
||||||
removeSessionAttr("user");
|
removeSessionAttr("user");
|
||||||
renderJson(JsonBean.success());
|
renderJson(JBean.success);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
JsonBean bean = new JsonBean(1);
|
JBean bean = new JBean(1);
|
||||||
String username = getPara("username");
|
String username = getPara("username");
|
||||||
String pwd = getPara("pwd");
|
String pwd = getPara("pwd");
|
||||||
|
|
||||||
@ -73,7 +73,7 @@ public class UserController extends IController {
|
|||||||
* 修改密码
|
* 修改密码
|
||||||
*/
|
*/
|
||||||
public void repwd(){
|
public void repwd(){
|
||||||
JsonBean bean = new JsonBean(1);
|
JBean bean = new JBean(1);
|
||||||
String pwd = getPara("pwd");
|
String pwd = getPara("pwd");
|
||||||
|
|
||||||
try {
|
try {
|
||||||
|
@ -7,5 +7,15 @@ import com.lxyer.model.base.BaseActLog;
|
|||||||
*/
|
*/
|
||||||
@SuppressWarnings("serial")
|
@SuppressWarnings("serial")
|
||||||
public class ActLog extends BaseActLog<ActLog> {
|
public class ActLog extends BaseActLog<ActLog> {
|
||||||
|
public static ActLog dao = new ActLog().dao();
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String sqlSpace() {
|
||||||
|
return "actLog";
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public ActLog getDao() {
|
||||||
|
return dao;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -7,5 +7,15 @@ import com.lxyer.model.base.BaseComment;
|
|||||||
*/
|
*/
|
||||||
@SuppressWarnings("serial")
|
@SuppressWarnings("serial")
|
||||||
public class Comment extends BaseComment<Comment> {
|
public class Comment extends BaseComment<Comment> {
|
||||||
|
public static final Comment dao = new Comment().dao();
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String sqlSpace() {
|
||||||
|
return "comment";
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Comment getDao() {
|
||||||
|
return dao;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,5 +1,7 @@
|
|||||||
package com.lxyer.model;
|
package com.lxyer.model;
|
||||||
|
|
||||||
|
import com.jfinal.kit.Kv;
|
||||||
|
import com.jfinal.plugin.activerecord.Db;
|
||||||
import com.lxyer.model.base.BaseContent;
|
import com.lxyer.model.base.BaseContent;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -18,4 +20,8 @@ public class Content extends BaseContent<Content> {
|
|||||||
public Content getDao() {
|
public Content getDao() {
|
||||||
return dao;
|
return dao;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static void upReplyNum(int contentId){
|
||||||
|
Db.update(Db.getSqlPara("content.upReplyNum", Kv.by("contentId", contentId)));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -7,7 +7,7 @@ import com.jfinal.plugin.activerecord.IBean;
|
|||||||
* Generated by JFinal, do not modify this file.
|
* Generated by JFinal, do not modify this file.
|
||||||
*/
|
*/
|
||||||
@SuppressWarnings("serial")
|
@SuppressWarnings("serial")
|
||||||
public abstract class BaseActLog<M extends BaseActLog<M>> extends Model<M> implements IBean {
|
public abstract class BaseActLog<M extends BaseActLog<M>> extends Model<M> implements IBean,IModel<M> {
|
||||||
|
|
||||||
public void setLogid(java.lang.Integer logid) {
|
public void setLogid(java.lang.Integer logid) {
|
||||||
set("logid", logid);
|
set("logid", logid);
|
||||||
|
@ -7,7 +7,7 @@ import com.jfinal.plugin.activerecord.IBean;
|
|||||||
* Generated by JFinal, do not modify this file.
|
* Generated by JFinal, do not modify this file.
|
||||||
*/
|
*/
|
||||||
@SuppressWarnings("serial")
|
@SuppressWarnings("serial")
|
||||||
public abstract class BaseComment<M extends BaseComment<M>> extends Model<M> implements IBean {
|
public abstract class BaseComment<M extends BaseComment<M>> extends Model<M> implements IBean,IModel<M> {
|
||||||
|
|
||||||
public void setCommentId(java.lang.Integer commentId) {
|
public void setCommentId(java.lang.Integer commentId) {
|
||||||
set("commentId", commentId);
|
set("commentId", commentId);
|
||||||
|
25
src/main/java/com/lxyer/service/CommentService.java
Normal file
25
src/main/java/com/lxyer/service/CommentService.java
Normal file
@ -0,0 +1,25 @@
|
|||||||
|
package com.lxyer.service;
|
||||||
|
|
||||||
|
import com.lxyer.model.Comment;
|
||||||
|
import com.lxyer.model.Content;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Created by JUECHENG at 2018/1/9 11:59.
|
||||||
|
*/
|
||||||
|
public class CommentService {
|
||||||
|
public static final CommentService me = new CommentService();
|
||||||
|
|
||||||
|
|
||||||
|
public void save(Comment comment, Integer userId) {
|
||||||
|
if (comment.getCommentId() == null){
|
||||||
|
comment.setUserId(userId);
|
||||||
|
comment.setCreateTime(System.currentTimeMillis());
|
||||||
|
comment.save();
|
||||||
|
}else {
|
||||||
|
comment.update();
|
||||||
|
}
|
||||||
|
|
||||||
|
//更新评论数
|
||||||
|
Content.upReplyNum(comment.getContentId());
|
||||||
|
}
|
||||||
|
}
|
@ -1,12 +1,21 @@
|
|||||||
package com.lxyer.service;
|
package com.lxyer.service;
|
||||||
|
|
||||||
import com.lxyer.model.Content; /**
|
import com.jfinal.kit.Kv;
|
||||||
|
import com.lxyer.model.ActLog;
|
||||||
|
import com.lxyer.model.Content;
|
||||||
|
|
||||||
|
/**
|
||||||
* Created by JUECHENG at 2018/1/7 16:49.
|
* Created by JUECHENG at 2018/1/7 16:49.
|
||||||
*/
|
*/
|
||||||
public class ContentService {
|
public class ContentService {
|
||||||
|
|
||||||
public static final ContentService me = new ContentService();
|
public static final ContentService me = new ContentService();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 帖子保存
|
||||||
|
* @param content
|
||||||
|
* @param userId
|
||||||
|
*/
|
||||||
public void save(Content content, int userId) {
|
public void save(Content content, int userId) {
|
||||||
if (content.getContentId() == null) {
|
if (content.getContentId() == null) {
|
||||||
content.setCreateTime(System.currentTimeMillis());
|
content.setCreateTime(System.currentTimeMillis());
|
||||||
@ -16,4 +25,76 @@ public class ContentService {
|
|||||||
content.update();
|
content.update();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 删除帖子
|
||||||
|
* @param contentId
|
||||||
|
* @param userId
|
||||||
|
* @throws Exception
|
||||||
|
*/
|
||||||
|
public void del(Integer contentId, Integer userId) throws Exception {
|
||||||
|
Content content = Content.dao.findById(contentId);
|
||||||
|
|
||||||
|
if (content == null || content.getStatus() == -1) return;
|
||||||
|
|
||||||
|
//安全校验
|
||||||
|
if (userId != 10_0001 && content.getUserId() != userId)
|
||||||
|
throw new Exception("操作失败:无权操作");
|
||||||
|
|
||||||
|
content.setStatus(-1);
|
||||||
|
content.update();
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 帖子收藏
|
||||||
|
* @param contentId
|
||||||
|
* @param userId
|
||||||
|
* @param status
|
||||||
|
* @throws Exception
|
||||||
|
*/
|
||||||
|
public void collect(Integer contentId, Integer userId, int status) throws Exception {
|
||||||
|
Content content = Content.dao.findById(contentId);
|
||||||
|
if (content == null)
|
||||||
|
throw new Exception("操作失败,未查询到相关内容");
|
||||||
|
|
||||||
|
Kv kv = Kv.by("tid", contentId).set("userId", userId).set("cate", 2);//cate:2收藏
|
||||||
|
ActLog actLog = ActLog.dao.findFirst(kv);
|
||||||
|
|
||||||
|
if (actLog == null){
|
||||||
|
actLog = new ActLog();
|
||||||
|
actLog.setCate(2);
|
||||||
|
actLog.setTid(contentId);
|
||||||
|
actLog.setUserId(userId);
|
||||||
|
actLog.setCreateTime(System.currentTimeMillis());
|
||||||
|
actLog.save();
|
||||||
|
}else if (actLog.getStatus() != status){
|
||||||
|
actLog.setStatus(status == 1 ? 1 : -1);
|
||||||
|
actLog.setCreateTime(System.currentTimeMillis());
|
||||||
|
actLog.update();
|
||||||
|
}
|
||||||
|
|
||||||
|
//更新收藏数
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 帖子置顶/加精
|
||||||
|
* @param contentId
|
||||||
|
* @param field
|
||||||
|
* @param v
|
||||||
|
* @param userId
|
||||||
|
* @throws Exception
|
||||||
|
*/
|
||||||
|
public void upField(Integer contentId, String field, Integer v, int userId) throws Exception {
|
||||||
|
Content content = Content.dao.findById(contentId);
|
||||||
|
|
||||||
|
if (content == null)
|
||||||
|
throw new Exception("操作失败,未查询到相关内容");
|
||||||
|
|
||||||
|
if ("top".equals(field) && userId != 10_0001)
|
||||||
|
throw new Exception("操作失败:无权限进行此操作");
|
||||||
|
|
||||||
|
content.set(field, v);
|
||||||
|
content.update();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
21
src/main/resources/sql/actlog.sql
Normal file
21
src/main/resources/sql/actlog.sql
Normal file
@ -0,0 +1,21 @@
|
|||||||
|
### 帖子操作日志 para:[logid, cate, tid, userId, status]
|
||||||
|
#sql("actLog.list")
|
||||||
|
SELECT al.*
|
||||||
|
FROM `comment` al
|
||||||
|
WHERE al.status!=-1
|
||||||
|
#if(logid)
|
||||||
|
AND al.`logid`=#(logid)
|
||||||
|
#end
|
||||||
|
#if(cate)
|
||||||
|
AND al.`cate`=#(cate)
|
||||||
|
#end
|
||||||
|
#if(tid)
|
||||||
|
AND al.`tid`=#(tid)
|
||||||
|
#end
|
||||||
|
#if(userId)
|
||||||
|
AND al.`userId`=#(userId)
|
||||||
|
#end
|
||||||
|
#if(status)
|
||||||
|
AND al.`status`=#(status)
|
||||||
|
#end
|
||||||
|
#end
|
26
src/main/resources/sql/comment.sql
Normal file
26
src/main/resources/sql/comment.sql
Normal file
@ -0,0 +1,26 @@
|
|||||||
|
### 帖子评论 para:[commentId, userId, pid, cate, contentId, status]
|
||||||
|
#sql("comment.list")
|
||||||
|
SELECT c.*
|
||||||
|
,u.nickname,u.avatar
|
||||||
|
FROM `comment` c
|
||||||
|
LEFT JOIN user u ON c.userId=u.userId
|
||||||
|
WHERE c.status!=-1
|
||||||
|
#if(commentId)
|
||||||
|
AND c.`commentId`=#(commentId)
|
||||||
|
#end
|
||||||
|
#if(userId)
|
||||||
|
AND c.`userId`=#(userId)
|
||||||
|
#end
|
||||||
|
#if(pid)
|
||||||
|
AND c.`pid`=#(pid)
|
||||||
|
#end
|
||||||
|
#if(cate)
|
||||||
|
AND c.`cate`=#(cate)
|
||||||
|
#end
|
||||||
|
#if(contentId)
|
||||||
|
AND c.`contentId`=#(contentId)
|
||||||
|
#end
|
||||||
|
#if(status)
|
||||||
|
AND c.`status`=#(status)
|
||||||
|
#end
|
||||||
|
#end
|
@ -18,4 +18,13 @@
|
|||||||
AND c.top = 0
|
AND c.top = 0
|
||||||
ORDER BY createTime DESC
|
ORDER BY createTime DESC
|
||||||
#end
|
#end
|
||||||
|
#end
|
||||||
|
|
||||||
|
### 更新评论数 para:[contentId]
|
||||||
|
#sql("content.upReplyNum")
|
||||||
|
UPDATE content c SET c.replyNum=
|
||||||
|
(SELECT COUNT(*) FROM comment WHERE contentId=c.contentId AND status=1)
|
||||||
|
#if(contentId)
|
||||||
|
WHERE c.contentId=#(contentId)
|
||||||
|
#end
|
||||||
#end
|
#end
|
@ -79,7 +79,7 @@
|
|||||||
</fieldset>
|
</fieldset>
|
||||||
|
|
||||||
<ul class="jieda" id="jieda">
|
<ul class="jieda" id="jieda">
|
||||||
#for(x : comments.rows??)
|
#for(x : comments.list??)
|
||||||
<li data-id="#(x.commentId)" class="jieda-daan">
|
<li data-id="#(x.commentId)" class="jieda-daan">
|
||||||
<a name="item-1111111111"></a>
|
<a name="item-1111111111"></a>
|
||||||
<div class="detail-about detail-about-reply">
|
<div class="detail-about detail-about-reply">
|
||||||
@ -89,8 +89,8 @@
|
|||||||
<div class="fly-detail-user">
|
<div class="fly-detail-user">
|
||||||
<a href="" class="fly-link">
|
<a href="" class="fly-link">
|
||||||
<cite>#(x.nickname)</cite>
|
<cite>#(x.nickname)</cite>
|
||||||
<i class="iconfont icon-renzheng" title="认证信息:XXX"></i>
|
<!--<i class="iconfont icon-renzheng" title="认证信息:XXX"></i>
|
||||||
<i class="layui-badge fly-badge-vip">VIP3</i>
|
<i class="layui-badge fly-badge-vip">VIP3</i>-->
|
||||||
</a>
|
</a>
|
||||||
#if(x.userId == bean.userId??)
|
#if(x.userId == bean.userId??)
|
||||||
<span>(楼主)</span>
|
<span>(楼主)</span>
|
||||||
@ -102,7 +102,7 @@
|
|||||||
-->
|
-->
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="detail-hits"><span>#(x.createTime??)</span></div>
|
<div class="detail-hits"><span>#@dateFmt(x.createTime)</span></div>
|
||||||
#if(1>2)
|
#if(1>2)
|
||||||
<i class="iconfont icon-caina" title="最佳答案"></i>
|
<i class="iconfont icon-caina" title="最佳答案"></i>
|
||||||
#end
|
#end
|
||||||
|
@ -75,12 +75,10 @@ layui.define(['fly','laypage'], function(exports){
|
|||||||
gather.jieAdmin = {
|
gather.jieAdmin = {
|
||||||
//删求解
|
//删求解
|
||||||
del: function(div){
|
del: function(div){
|
||||||
layer.confirm('确认删除该求解么?', function(index){
|
layer.confirm('确认删除该帖子吗?', function(index){
|
||||||
layer.close(index);
|
layer.close(index);
|
||||||
fly.json('/content/set', {
|
fly.json('/jie/del', {
|
||||||
id: div.data('id')
|
contentId: div.data('id')
|
||||||
,v: -1
|
|
||||||
,field:"status"
|
|
||||||
}, function(res){
|
}, function(res){
|
||||||
location.href= "/";
|
location.href= "/";
|
||||||
});
|
});
|
||||||
@ -90,7 +88,7 @@ layui.define(['fly','laypage'], function(exports){
|
|||||||
//设置置顶、状态
|
//设置置顶、状态
|
||||||
,set: function(div){
|
,set: function(div){
|
||||||
var othis = $(this);
|
var othis = $(this);
|
||||||
fly.json('/content/set', {
|
fly.json('/jie/set', {
|
||||||
id: div.data('id')
|
id: div.data('id')
|
||||||
,v: othis.attr('v')
|
,v: othis.attr('v')
|
||||||
,field: othis.attr('field')
|
,field: othis.attr('field')
|
||||||
@ -102,7 +100,7 @@ layui.define(['fly','laypage'], function(exports){
|
|||||||
//收藏
|
//收藏
|
||||||
,collect: function(div){
|
,collect: function(div){
|
||||||
var othis = $(this), type = othis.data('type');
|
var othis = $(this), type = othis.data('type');
|
||||||
fly.json('/content/collect', {
|
fly.json('/jie/collect', {
|
||||||
contentId: div.data('id')
|
contentId: div.data('id')
|
||||||
,ok: type === 'add'? 1:-1
|
,ok: type === 'add'? 1:-1
|
||||||
}, function(res){
|
}, function(res){
|
||||||
@ -139,7 +137,7 @@ layui.define(['fly','laypage'], function(exports){
|
|||||||
gather.jiedaActive = {
|
gather.jiedaActive = {
|
||||||
zan: function(li){ //赞
|
zan: function(li){ //赞
|
||||||
var othis = $(this), ok = othis.hasClass('zanok');
|
var othis = $(this), ok = othis.hasClass('zanok');
|
||||||
fly.json('/os/comment/support', {
|
fly.json('/comment/support', {
|
||||||
commentId: li.data('id')
|
commentId: li.data('id')
|
||||||
,ok: ok?-1:1
|
,ok: ok?-1:1
|
||||||
}, function(res){
|
}, function(res){
|
||||||
@ -243,13 +241,10 @@ layui.define(['fly','laypage'], function(exports){
|
|||||||
form.on('submit(jie-reply)', function(data){
|
form.on('submit(jie-reply)', function(data){
|
||||||
var bean = {};
|
var bean = {};
|
||||||
["contentId","pid", "content"].forEach(function (value) {
|
["contentId","pid", "content"].forEach(function (value) {
|
||||||
bean[value] = data.field[value];
|
bean["comment."+value] = data.field[value];
|
||||||
});
|
});
|
||||||
console.log(bean);
|
|
||||||
|
|
||||||
fly.json("/comment/save",{
|
fly.json("/comment/save",bean,function (res) {
|
||||||
bean:JSON.stringify(bean)
|
|
||||||
},function (res) {
|
|
||||||
layer.msg("回复成功",{time:2000},function () {
|
layer.msg("回复成功",{time:2000},function () {
|
||||||
//location.href = "/";
|
//location.href = "/";
|
||||||
location.reload();
|
location.reload();
|
||||||
|
Loading…
Reference in New Issue
Block a user