diff --git a/pom.xml b/pom.xml index b8061c4e..00646500 100644 --- a/pom.xml +++ b/pom.xml @@ -11,11 +11,11 @@ UTF-8 3.15.1 - 2.0.5-SNAPSHOT + 2.0.5-RELEASE 0.2.2-beta 0.1.2 0.0.2 - 0.9.0 + 0.10.0 1.0 3.2.0 @@ -87,6 +87,12 @@ 1.16.18 compile + + + io.netty + netty-transport-native-epoll + 4.1.18.Final + diff --git a/src/main/java/com/tale/controller/IndexController.java b/src/main/java/com/tale/controller/IndexController.java index ff50cc6f..e86db2a9 100644 --- a/src/main/java/com/tale/controller/IndexController.java +++ b/src/main/java/com/tale/controller/IndexController.java @@ -247,7 +247,6 @@ public RestResponse comment(Request request, Response response, comments.setAuthor(EmojiParser.parseToAliases(comments.getAuthor())); comments.setContent(EmojiParser.parseToAliases(comments.getContent())); comments.setIp(request.address()); - comments.setParent(comments.getCoid()); try { commentsService.saveComment(comments); diff --git a/src/main/java/com/tale/controller/admin/ArticleController.java b/src/main/java/com/tale/controller/admin/ArticleController.java index 04a88107..9bd3efa2 100644 --- a/src/main/java/com/tale/controller/admin/ArticleController.java +++ b/src/main/java/com/tale/controller/admin/ArticleController.java @@ -8,6 +8,7 @@ import com.blade.mvc.ui.RestResponse; import com.blade.validator.annotation.Valid; import com.tale.controller.BaseController; +import com.tale.enums.GroupName; import com.tale.exception.TipException; import com.tale.extension.Commons; import com.tale.model.dto.LogActions; @@ -19,6 +20,7 @@ import com.tale.service.ContentsService; import com.tale.service.MetasService; import com.tale.service.SiteService; +import com.tale.utils.TaleUtils; import lombok.extern.slf4j.Slf4j; import java.util.List; @@ -52,8 +54,12 @@ public class ArticleController extends BaseController { @GetRoute(value = "") public String index(@Param(defaultValue = "1") int page, @Param(defaultValue = "15") int limit, Request request) { - - Page articles = new Contents().where("type", Types.ARTICLE).page(page, limit, "created desc"); + Users users = TaleUtils.getLoginUser(); + Contents contents = new Contents().where("type", Types.ARTICLE); + if (users != null && !GroupName.ADMIN.toString().equals(users.getGroupName())) { + contents = contents.where("author_id", users.getUid()); + } + Page articles = contents.page(page, limit, "created desc"); request.attribute("articles", articles); return "admin/article_list"; } diff --git a/src/main/java/com/tale/controller/admin/AuthController.java b/src/main/java/com/tale/controller/admin/AuthController.java index 58469519..79bae87f 100644 --- a/src/main/java/com/tale/controller/admin/AuthController.java +++ b/src/main/java/com/tale/controller/admin/AuthController.java @@ -60,6 +60,9 @@ public RestResponse doLogin(LoginParam loginParam, Request request, if (null == user) { return RestResponse.fail("用户名或密码错误"); } + if(user.getState() != 1) { + return RestResponse.fail("用户已被封禁,请联系管理员"); + } session.attribute(TaleConst.LOGIN_SESSION_KEY, user); if (StringKit.isNotBlank(loginParam.getRemeberMe())) { TaleUtils.setCookie(response, user.getUid()); diff --git a/src/main/java/com/tale/controller/admin/UsersController.java b/src/main/java/com/tale/controller/admin/UsersController.java index ae7574fb..94e6400e 100644 --- a/src/main/java/com/tale/controller/admin/UsersController.java +++ b/src/main/java/com/tale/controller/admin/UsersController.java @@ -1,5 +1,6 @@ package com.tale.controller.admin; +import com.blade.ioc.annotation.Inject; import com.blade.jdbc.page.Page; import com.blade.kit.DateKit; import com.blade.mvc.annotation.*; @@ -7,8 +8,10 @@ import com.blade.mvc.http.Request; import com.blade.mvc.ui.RestResponse; import com.tale.controller.BaseController; +import com.tale.exception.TipException; import com.tale.init.TaleConst; import com.tale.model.entity.Users; +import com.tale.service.UsersService; import lombok.extern.slf4j.Slf4j; /** @@ -20,6 +23,9 @@ @Path("admin/users") public class UsersController extends BaseController { + @Inject + private UsersService usersService; + @Route(value = "", method = HttpMethod.GET) public String index(Request request) { Page usersPage = new Users().page(1, TaleConst.MAX_POSTS); @@ -36,16 +42,60 @@ public String index(Request request) { @PostRoute("create") @JSON public RestResponse create(@Param Users users) { - System.out.println(users); - Integer time = DateKit.nowUnix(); - users.setCreated(time); + try { + Integer time = DateKit.nowUnix(); + users.setCreated(time); + usersService.saveUser(users); + } catch (Exception e) { + String msg = "操作失败"; + if (e instanceof TipException) { + msg = e.getMessage(); + } else { + log.error(msg, e); + } + return RestResponse.fail(msg); + } + return RestResponse.ok(); + } + + + /** + * 删除用户 + * + * @param users + * @return + */ + @PostRoute("delete") + @JSON + public RestResponse delete(@Param Users users) { + try { + usersService.deleteUser(users); + } catch (Exception e) { + String msg = "操作失败"; + if (e instanceof TipException) { + msg = e.getMessage(); + } else { + log.error(msg, e); + } + return RestResponse.fail(msg); + } return RestResponse.ok(); } @PostRoute("update") @JSON public RestResponse update(@Param Users users) { - System.out.println(users); + try { + usersService.updateUser(users); + } catch (Exception e) { + String msg = "操作失败"; + if (e instanceof TipException) { + msg = e.getMessage(); + } else { + log.error(msg, e); + } + return RestResponse.fail(msg); + } return RestResponse.ok(); } diff --git a/src/main/java/com/tale/extension/Theme.java b/src/main/java/com/tale/extension/Theme.java index bc3ddf02..052a3b16 100644 --- a/src/main/java/com/tale/extension/Theme.java +++ b/src/main/java/com/tale/extension/Theme.java @@ -12,6 +12,7 @@ import com.tale.model.entity.Comments; import com.tale.model.entity.Contents; import com.tale.model.entity.Metas; +import com.tale.model.entity.Users; import com.tale.service.SiteService; import com.tale.utils.TaleUtils; import jetbrick.template.runtime.InterpretContext; @@ -41,8 +42,8 @@ public static void setSiteService(SiteService ss) { * @return */ public static String meta_keywords() { - InterpretContext ctx = InterpretContext.current(); - Object value = ctx.getValueStack().getValue("keywords"); + InterpretContext ctx = InterpretContext.current(); + Object value = ctx.getValueStack().getValue("keywords"); if (null != value) { return value.toString(); } @@ -55,8 +56,8 @@ public static String meta_keywords() { * @return */ public static String meta_description() { - InterpretContext ctx = InterpretContext.current(); - Object value = ctx.getValueStack().getValue("description"); + InterpretContext ctx = InterpretContext.current(); + Object value = ctx.getValueStack().getValue("description"); if (null != value) { return value.toString(); } @@ -69,8 +70,8 @@ public static String meta_description() { * @return */ public static String head_title() { - InterpretContext ctx = InterpretContext.current(); - Object value = ctx.getValueStack().getValue("title"); + InterpretContext ctx = InterpretContext.current(); + Object value = ctx.getValueStack().getValue("title"); String p = "首页"; if (null != value) { @@ -197,7 +198,7 @@ public static List tag_list() { */ public static String show_categories(String categories) throws UnsupportedEncodingException { if (StringKit.isNotBlank(categories)) { - String[] arr = categories.split(","); + String[] arr = categories.split(","); StringBuffer sbuf = new StringBuffer(); for (String c : arr) { sbuf.append("" + c + ""); @@ -216,7 +217,7 @@ public static String show_categories(String categories) throws UnsupportedEncodi public static String show_tags(String split) throws UnsupportedEncodingException { Contents contents = current_article(); if (StringKit.isNotBlank(contents.getTags())) { - String[] arr = contents.getTags().split(","); + String[] arr = contents.getTags().split(","); StringBuffer sbuf = new StringBuffer(); for (String c : arr) { sbuf.append(split).append("" + c + ""); @@ -327,11 +328,11 @@ public static String show_thumb(Contents contents) { return contents.getThumbImg(); } String content = article(contents.getContent()); - String img = Commons.show_thumb(content); + String img = Commons.show_thumb(content); if (StringKit.isNotBlank(img)) { return img; } - int cid = contents.getCid(); + int cid = contents.getCid(); int size = cid % 20; size = size == 0 ? 1 : size; return "/templates/themes/default/static/img/rand/" + size + ".jpg"; @@ -612,9 +613,9 @@ public static Page comments(int limit) { if (null == contents) { return new Page<>(); } - InterpretContext ctx = InterpretContext.current(); - Object value = ctx.getValueStack().getValue("cp"); - int page = 1; + InterpretContext ctx = InterpretContext.current(); + Object value = ctx.getValueStack().getValue("cp"); + int page = 1; if (null != value) { page = (int) value; } @@ -629,7 +630,7 @@ public static Page comments(int limit) { */ public static Page articles(int limit) { Request request = WebContext.request(); - Integer page = request.attribute("page_num"); + Integer page = request.attribute("page_num"); page = null == page ? request.queryInt("page", 1) : page; page = page < 0 || page > TaleConst.MAX_PAGE ? 1 : page; @@ -644,14 +645,29 @@ public static Page articles(int limit) { return articles; } + /** + * 获取当前文章的作者 + * + * @return + */ + public static Users current_author() { + Contents contents = current_article(); + if (null == contents) { + return new Users(); + } + Integer authorId = contents.getAuthorId(); + Users users = siteService.getUser(authorId); + return users == null ? new Users() : users; + } + /** * 获取当前上下文的文章对象 * * @return */ private static Contents current_article() { - InterpretContext ctx = InterpretContext.current(); - Object value = ctx.getValueStack().getValue("article"); + InterpretContext ctx = InterpretContext.current(); + Object value = ctx.getValueStack().getValue("article"); if (null != value) { return (Contents) value; } diff --git a/src/main/java/com/tale/service/CommentsService.java b/src/main/java/com/tale/service/CommentsService.java index 01a76b90..d3b2d5ad 100644 --- a/src/main/java/com/tale/service/CommentsService.java +++ b/src/main/java/com/tale/service/CommentsService.java @@ -6,16 +6,13 @@ import com.blade.jdbc.page.Page; import com.blade.kit.BladeKit; import com.blade.kit.DateKit; -import com.blade.kit.StringKit; import com.tale.exception.TipException; import com.tale.model.dto.Comment; import com.tale.model.entity.Comments; import com.tale.model.entity.Contents; -import com.tale.utils.TaleUtils; import java.util.ArrayList; import java.util.List; -import java.util.Optional; /** * 评论Service diff --git a/src/main/java/com/tale/service/SiteService.java b/src/main/java/com/tale/service/SiteService.java index 9d00da69..1eb142ee 100644 --- a/src/main/java/com/tale/service/SiteService.java +++ b/src/main/java/com/tale/service/SiteService.java @@ -39,9 +39,22 @@ public class SiteService { @Inject private CommentsService commentsService; + @Inject + private UsersService usersService; public MapCache mapCache = new MapCache(); + + /** + * 获取用户 + * + * @param uid + * @return + */ + public Users getUser(Integer uid) { + return usersService.findUser(uid); + } + /** * 初始化站点 * @@ -58,8 +71,8 @@ public void initSite(Users users) { Integer uid = users.save(); try { - String cp = SiteService.class.getClassLoader().getResource("").getPath(); - File lock = new File(cp + "install.lock"); + String cp = SiteService.class.getClassLoader().getResource("").getPath(); + File lock = new File(cp + "install.lock"); lock.createNewFile(); TaleConst.INSTALL = Boolean.TRUE; new Logs(LogActions.INIT_SITE, null, "", uid.intValue()).save(); @@ -126,11 +139,11 @@ public Statistics getStatistics() { statistics = new Statistics(); - long articles = new Contents().where("type", Types.ARTICLE).and("status", Types.PUBLISH).count(); - long pages = new Contents().where("type", Types.PAGE).and("status", Types.PUBLISH).count(); - long comments = new Comments().count(); - long attachs = new Attach().count(); - long tags = new Metas().where("type", Types.TAG).count(); + long articles = new Contents().where("type", Types.ARTICLE).and("status", Types.PUBLISH).count(); + long pages = new Contents().where("type", Types.PAGE).and("status", Types.PUBLISH).count(); + long comments = new Comments().count(); + long attachs = new Attach().count(); + long tags = new Metas().where("type", Types.TAG).count(); long categories = new Metas().where("type", Types.CATEGORY).count(); statistics.setArticles(articles); @@ -161,14 +174,14 @@ public List getArchives() { private Archive parseArchive(Archive archive) { String date_str = archive.getDate_str(); - Date sd = DateKit.toDate(date_str + "01", "yyyy年MM月dd"); + Date sd = DateKit.toDate(date_str + "01", "yyyy年MM月dd"); archive.setDate(sd); - int start = DateKit.toUnix(sd); + int start = DateKit.toUnix(sd); Calendar calender = Calendar.getInstance(); calender.setTime(sd); calender.add(Calendar.MONTH, 1); Date endSd = calender.getTime(); - int end = DateKit.toUnix(endSd) - 1; + int end = DateKit.toUnix(endSd) - 1; List contents = new Contents().where("type", Types.ARTICLE) .and("status", Types.PUBLISH) .and("created", ">", start) @@ -224,7 +237,7 @@ public BackResponse backup(String bkType, String bkPath, String fmt) throws Exce // 备份数据库 if ("db".equals(bkType)) { String filePath = "upload/" + DateKit.toString(new Date(), "yyyyMMddHHmmss") + "_" + StringKit.rand(8) + ".db"; - String cp = AttachController.CLASSPATH + filePath; + String cp = AttachController.CLASSPATH + filePath; Files.createDirectory(Paths.get(cp)); Files.copy(Paths.get(SqliteJdbc.DB_PATH), Paths.get(cp)); backResponse.setSql_path("/" + filePath); diff --git a/src/main/java/com/tale/service/UsersService.java b/src/main/java/com/tale/service/UsersService.java new file mode 100644 index 00000000..acf9777c --- /dev/null +++ b/src/main/java/com/tale/service/UsersService.java @@ -0,0 +1,82 @@ +package com.tale.service; + +import com.blade.ioc.annotation.Bean; +import com.blade.jdbc.utils.StringUtils; +import com.blade.kit.EncryptKit; +import com.tale.model.entity.Users; + +/** + * Created by chaihaipeng on 2018/4/2. + */ +@Bean +public class UsersService { + + /** + * 查询用户 + * + * @param uid + * @return + */ + public Users findUser(Integer uid) { + if (uid == null) return new Users(); + return new Users().find(uid); + } + + /** + * 保存用户 + * + * @param user + */ + public void saveUser(Users user) { + try { + if (user != null) { + user.setScreenName(user.getUsername()); + user.setPassword(EncryptKit.md5(user.getUsername(), user.getPassword())); + user.save(); + } + } catch (Exception e) { + throw e; + } + } + + /** + * 更新用户 + * + * @param user + */ + public void updateUser(Users user) { + try { + if (user != null && user.getUid() != null) { + Users users = new Users().find(user.getUid()); + if (users != null) { + Users temp = new Users(); + if (StringUtils.isNotBlank(user.getPassword())) { + temp.setPassword(EncryptKit.md5(user.getUsername(), user.getPassword())); + } + if (user.getState() != null) { + temp.setState(user.getState()); + } + temp.update(user.getUid()); + } + } + } catch (Exception e) { + throw e; + } + } + + /** + * 删除用户 + * + * @param user + */ + public void deleteUser(Users user) { + try { + if (user != null && user.getUid() != null) { + new Users().delete("uid", user.getUid()); + } + } catch (Exception e) { + throw e; + } + } + +} diff --git a/src/main/resources/app.properties b/src/main/resources/app.properties index 16a11c97..b3febfda 100644 --- a/src/main/resources/app.properties +++ b/src/main/resources/app.properties @@ -8,3 +8,4 @@ app.support_163_music=true app.support_gist=true com.blade.logger.com.blade.jdbc.core=debug com.blade.logger.logFile=./logs/tale.log +http.gzip.enable=true diff --git a/src/main/resources/templates/admin/profile.html b/src/main/resources/templates/admin/profile.html index dcb43de0..4324e1ba 100644 --- a/src/main/resources/templates/admin/profile.html +++ b/src/main/resources/templates/admin/profile.html @@ -22,7 +22,7 @@

个人信息

+ value="${login_user.screenName}" required aria-required="true"/>
diff --git a/src/main/resources/templates/admin/user_list.html b/src/main/resources/templates/admin/user_list.html index b1e4eef5..bfb432ac 100644 --- a/src/main/resources/templates/admin/user_list.html +++ b/src/main/resources/templates/admin/user_list.html @@ -48,9 +48,13 @@

用户管理

#if(item.groupName != 'ADMIN') - - - + #if(item.state == 1) + + #elseif(item.state == 0) + + #end + + #end @@ -75,7 +79,7 @@

用户管理

- +
@@ -112,6 +116,7 @@

用户管理

@@ -141,20 +141,22 @@

最新评论