👽 修改新增和修改的逻辑,简化代码:)

pull/1/head
RYAN0UP_ 2018-03-28 00:17:56 +08:00
parent 84e5362d70
commit a94099dd48
15 changed files with 160 additions and 223 deletions

View File

@ -21,7 +21,7 @@
**Halo** [ˈheɪloʊ]<br>
Fast,simple,powerful blog system powered by Java.
**Halo** [ˈheɪloʊ],意为光环。当然,你也可以读拼音(哈喽)。<br>
**Halo** [ˈheɪloʊ],意为光环。当然,你也可以当成拼音读(哈喽)。<br>
轻快简洁功能强大使用Java开发的博客系统。
## Demo 演示

View File

@ -14,7 +14,7 @@ import java.util.Optional;
public interface CategoryService {
/**
*
* /
*
* @param category
* @return
@ -29,14 +29,6 @@ public interface CategoryService {
*/
Category removeByCateId(Long cateId);
/**
*
*
* @param category
* @return
*/
Category updateByCategory(Category category);
/**
*
*

View File

@ -14,7 +14,7 @@ import java.util.Optional;
public interface MenuService {
/**
*
* /
*
* @param menu menu
* @return Menu
@ -36,13 +36,6 @@ public interface MenuService {
*/
Menu removeByMenuId(Long menuId);
/**
*
* @param menu menu
* @return Menu
*/
Menu updateByMenu(Menu menu);
/**
*
* @param menuId menuId

View File

@ -29,7 +29,7 @@ public class CategoryServiceImpl implements CategoryService{
private static final String CATEGORY_CACHE_NAME = "cate_cache";
/**
*
* /
*
* @param category
* @return ategory
@ -54,19 +54,6 @@ public class CategoryServiceImpl implements CategoryService{
return category.get();
}
/**
*
*
* @param category
* @return Category
*/
@CachePut(value = CATEGORY_CACHE_NAME,key = "#category.cateId+'cate'")
@CacheEvict(value = CATEGORY_CACHE_NAME,key = CATEGORY_KEY)
@Override
public Category updateByCategory(Category category) {
return categoryRepository.save(category);
}
/**
*
*

View File

@ -32,7 +32,7 @@ public class MenuServiceImpl implements MenuService{
}
/**
*
* /
*
* @param menu menu
* @return Menu
@ -55,17 +55,6 @@ public class MenuServiceImpl implements MenuService{
return menu.get();
}
/**
*
*
* @param menu menu
* @return Menu
*/
@Override
public Menu updateByMenu(Menu menu) {
return menuRepository.save(menu);
}
/**
*
*

View File

@ -37,14 +37,14 @@ public class CategoryController {
public String categories(Model model){
List<Category> categories = categoryService.findAllCategories();
model.addAttribute("categories",categories);
model.addAttribute("statusName","添加");
//设置选项
model.addAttribute("options",HaloConst.OPTIONS);
return "admin/admin_category";
}
/**
*
* /
*
* @param category category
* @return freemarker
@ -93,24 +93,6 @@ public class CategoryController {
return "redirect:/admin/category";
}
/**
*
*
* @param category category
* @return redirect
*/
@PostMapping(value = "/update")
public String updateCategory(@ModelAttribute Category category){
try{
Optional<Category> beforeCate = categoryService.findByCateId(category.getCateId());
log.info("修改之前的数据:"+beforeCate.get()+",修改之后的数据:"+category);
categoryService.updateByCategory(category);
}catch (Exception e){
log.error("未知错误:"+e.getMessage());
}
return "redirect:/admin/category";
}
/**
*
*
@ -120,11 +102,13 @@ public class CategoryController {
*/
@GetMapping(value = "/edit")
public String toEditCategory(Model model,@PathParam("cateId") Long cateId){
List<Category> categories = categoryService.findAllCategories();
Optional<Category> category = categoryService.findByCateId(cateId);
model.addAttribute("category",category.get());
model.addAttribute("updateCategory",category.get());
model.addAttribute("categories",categories);
model.addAttribute("statusName","修改");
//设置选项
model.addAttribute("options", HaloConst.OPTIONS);
return "admin/admin_cate-update";
return "admin/admin_category";
}
}

View File

@ -7,10 +7,7 @@ import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.*;
import java.util.List;
@ -22,7 +19,7 @@ import java.util.List;
*/
@Slf4j
@Controller
@RequestMapping(value = "/admin/menu")
@RequestMapping(value = "/admin/menus")
public class MenuController {
@Autowired
@ -35,17 +32,17 @@ public class MenuController {
* @return string
*/
@GetMapping
public String menu(Model model){
public String menus(Model model){
List<Menu> menus = menuService.findAllMenus();
model.addAttribute("menus",menus);
model.addAttribute("statusName","添加");
//设置选项
model.addAttribute("options",HaloConst.OPTIONS);
return "/admin/admin_menu";
}
/**
*
* /
*
* @param menu menu
* @return string
@ -57,6 +54,24 @@ public class MenuController {
}catch (Exception e){
log.error("保存菜单失败:"+e.getMessage());
}
return "redirect:/admin/menu";
return "redirect:/admin/menus";
}
/**
*
* @param id id
* @param model model
* @return string
*/
@GetMapping(value = "/edit")
public String updateMenu(@RequestParam("menuId") Long menuId,Model model){
List<Menu> menus = menuService.findAllMenus();
Menu menu = menuService.findByMenuId(menuId).get();
model.addAttribute("statusName","修改");
model.addAttribute("updateMenu",menu);
model.addAttribute("menus",menus);
//设置选项
model.addAttribute("options", HaloConst.OPTIONS);
return "/admin/admin_menu";
}
}

View File

@ -1,36 +1,24 @@
# 端口配置
server:
port: 8090
spring:
# 数据源配置 使用druid数据源
datasource:
type: com.alibaba.druid.pool.DruidDataSource
# H2database 配置
driver-class-name: org.h2.Driver
url: jdbc:h2:file:~/halo/halo_db
# url: jdbc:h2:mem:halo_db
username: admin
password: 123456
# MySQL配置
#driver-class-name: com.mysql.jdbc.Driver
#url: jdbc:mysql://localhost:3306/halodb?useUnicode=true&characterEncoding=utf8&useSSL=false
#username: root
#password: 123456
h2:
console:
settings:
web-allow-others: true
path: /h2-console
enabled: true
# jpa配置
jpa:
hibernate:
ddl-auto: update
show-sql: true
database-platform: org.hibernate.dialect.H2Dialect
# freemarker配置
freemarker:
allow-request-override: false
cache: false
@ -44,7 +32,6 @@ spring:
cache:
ehcache:
config: ehcache.xml
# 设置日志输出路径
logging:
file: ./logs/log.log

View File

@ -1,78 +0,0 @@
<#compress >
<#include "module/_macro.ftl">
<@head title="Halo后台管理-修改分类">
</@head>
<div class="wrapper">
<!-- 顶部栏模块 -->
<#include "module/_header.ftl">
<!-- 菜单栏模块 -->
<#include "module/_sidebar.ftl">
<div class="content-wrapper">
<link rel="stylesheet" href="/static/plugins/toast/css/jquery.toast.min.css">
<style type="text/css" rel="stylesheet">
.form-horizontal .control-label{text-align: left;}
</style>
<section class="content-header">
<h1>分类目录<small></small>
</h1>
<ol class="breadcrumb">
<li><a data-pjax="true" href="/admin"><i class="fa fa-dashboard"></i> 首页</a></li>
<li><a data-pjax="true" href="/admin/category"><i class="fa fa-dashboard"></i> 分类目录</a></li>
<li class="active">修改</li>
</ol>
</section>
<section class="content container-fluid">
<div class="row">
<div class="col-md-6">
<div class="box box-solid">
<div class="box-header with-border"><h3 class="box-title">修改分类目录</h3></div>
<form action="/admin/category/update" method="post" class="form-horizontal" onsubmit="return checkCate()">
<input type="hidden" name="cateId" value="${category.cateId}">
<div class="box-body">
<div class="form-group">
<label for="cateName" class="col-sm-3 control-label">名称:</label>
<div class="col-sm-9">
<input type="text" class="form-control" id="cateName" name="cateName" value="${category.cateName}">
</div>
</div>
<div class="form-group">
<label for="cateUrl" class="col-sm-3 control-label">路径名称:</label>
<div class="col-sm-9">
<input type="text" class="form-control" id="cateUrl" name="cateUrl" value="${category.cateUrl}">
</div>
</div>
<div class="form-group">
<label for="cateDesc" class="col-sm-3 control-label">描述:</label>
<div class="col-sm-9">
<textarea class="form-control" rows="3" id="cateDesc" name="cateDesc" style="resize: none">${category.cateDesc}</textarea>
</div>
</div>
</div>
<div class="box-footer">
<button class="btn btn-default" onclick="window.history.back()">返回</button>
<button type="submit" class="btn btn-primary pull-right">保存</button>
</div>
</form>
</div>
</div>
</div>
</section>
<script src="/static/plugins/toast/js/jquery.toast.min.js"></script>
<script>
function checkCate() {
var name = $('#cateName').val();
var url = $('#cateUrl').val();
var desc = $('#cateDesc').val();
var result = true;
if(name==""||url==""||desc==""){
showMsg("请输入完整信息!","info",2000);
result = false;
}
return result;
}
</script>
</div>
<#include "module/_footer.ftl">
</div>
<@footer></@footer>
</#compress>

View File

@ -27,30 +27,56 @@
<div class="col-md-5">
<div class="box box-primary">
<div class="box-header with-border">
<h3 class="box-title">添加分类目录</h3>
<h3 class="box-title">${statusName}分类目录<#if updateCategory??>[${updateCategory.cateName}]</#if></h3>
</div>
<form action="/admin/category/save" method="post" role="form" id="cateAddForm" onsubmit="return checkCate()">
<div class="box-body">
<div class="form-group">
<label for="exampleInputEmail1">名称</label>
<input type="text" class="form-control" id="cateName" name="cateName" placeholder="">
<small>页面上所显示的名称</small>
<#if updateCategory??>
<form action="/admin/category/save" method="post" role="form" id="cateAddForm">
<input type="hidden" name="cateId" value="${updateCategory.cateId}">
<div class="box-body">
<div class="form-group">
<label for="exampleInputEmail1">名称</label>
<input type="text" class="form-control" id="cateName" name="cateName" value="${updateCategory.cateName}">
<small>页面上所显示的名称</small>
</div>
<div class="form-group">
<label for="exampleInputPassword1">路径名称</label>
<input type="text" class="form-control" id="cateUrl" name="cateUrl" value="${updateCategory.cateUrl}">
<small>*这是文章路径上显示的名称,最好为英文</small>
</div>
<div class="form-group">
<label for="cateDesc" class="control-label">描述</label>
<textarea class="form-control" rows="3" id="cateDesc" name="cateDesc" style="resize: none">${updateCategory.cateDesc}</textarea>
<small>*添加描述,部分主题可显示</small>
</div>
</div>
<div class="form-group">
<label for="exampleInputPassword1">路径名称</label>
<input type="text" class="form-control" id="cateUrl" name="cateUrl" placeholder="">
<small>*这是文章路径上显示的名称,最好为英文</small>
<div class="box-footer">
<button type="submit" class="btn btn-primary btn-flat">确定${statusName}</button>
</div>
<div class="form-group">
<label for="cateDesc" class="control-label">描述</label>
<textarea class="form-control" rows="3" id="cateDesc" name="cateDesc" style="resize: none"></textarea>
<small>*添加描述,部分主题可显示</small>
</form>
<#else >
<form action="/admin/category/save" method="post" role="form" id="cateAddForm" onsubmit="return checkCate()">
<div class="box-body">
<div class="form-group">
<label for="exampleInputEmail1">名称</label>
<input type="text" class="form-control" id="cateName" name="cateName" placeholder="">
<small>页面上所显示的名称</small>
</div>
<div class="form-group">
<label for="exampleInputPassword1">路径名称</label>
<input type="text" class="form-control" id="cateUrl" name="cateUrl" placeholder="">
<small>*这是文章路径上显示的名称,最好为英文</small>
</div>
<div class="form-group">
<label for="cateDesc" class="control-label">描述</label>
<textarea class="form-control" rows="3" id="cateDesc" name="cateDesc" style="resize: none"></textarea>
<small>*添加描述,部分主题可显示</small>
</div>
</div>
</div>
<div class="box-footer">
<button type="submit" class="btn btn-primary btn-flat">确定添加</button>
</div>
</form>
<div class="box-footer">
<button type="submit" class="btn btn-primary btn-flat">确定${statusName}</button>
</div>
</form>
</#if>
</div>
</div>
<div class="col-md-7">
@ -77,7 +103,11 @@
<td>${(cate.cateDesc)!}</td>
<td>2</td>
<td>
<a href="/admin/category/edit?cateId=${cate.cateId}" class="btn btn-primary btn-xs btn-flat">修改</a>
<#if updateCategory?? && updateCategory.cateId==cate.cateId>
<a href="#" class="btn btn-primary btn-xs btn-flat" disabled>正在修改</a>
<#else >
<a data-pjax="true" href="/admin/category/edit?cateId=${cate.cateId}" class="btn btn-primary btn-xs btn-flat">修改</a>
</#if>
<button class="btn btn-danger btn-xs btn-flat" onclick="modelShow('/admin/category/remove?cateId=${cate.cateId}')">删除</button>
</td>
</tr>

View File

@ -32,7 +32,7 @@
<div class="row">
<div class="col-md-9">
<#if post??>
<input type="hidden" id="postId" name="postId" value="${post.postId?if_exists}">
<input type="hidden" id="postId" name="postId" value="${post.postId}">
</#if>
<div style="margin-bottom: 10px;">
<input type="text" class="form-control input-lg" id="post_title" name="post_title" placeholder="请输入文章标题" value="<#if post??>${post.postTitle}</#if>" onblur="TitleOnBlurAuto()">

View File

@ -21,33 +21,57 @@
<div class="col-md-5">
<div class="box box-primary">
<div class="box-header with-border">
<h3 class="box-title">添加分类目录</h3>
<h3 class="box-title">${statusName}菜单<#if updateMenu??>[${updateMenu.menuName}]</#if></h3>
</div>
<form action="/admin/menu/save" method="post" role="form" id="menuAddForm">
<div class="box-body">
<div class="form-group">
<label for="menuName">名称</label>
<input type="text" class="form-control" id="menuName" name="menuName" placeholder="">
<small>页面上所显示的名称</small>
<form action="/admin/menus/save" method="post" role="form" id="menuAddForm">
<#if updateMenu??>
<input type="hidden" name="menuId" value="${updateMenu.menuId}">
<div class="box-body">
<div class="form-group">
<label for="menuName">名称</label>
<input type="text" class="form-control" id="menuName" name="menuName" value="${updateMenu.menuName}">
<small>页面上所显示的名称</small>
</div>
<div class="form-group">
<label for="menuUrl">路径</label>
<input type="text" class="form-control" id="menuUrl" name="menuUrl" value="${updateMenu.menuUrl}">
<small>*菜单的路径,最好为英文</small>
</div>
<div class="form-group">
<label for="menuSort">排序编号</label>
<input type="text" class="form-control" id="menuSort" name="menuSort" value="${updateMenu.menuSort}">
</div>
<div class="form-group">
<label for="menuIcon">图标</label>
<input type="text" class="form-control" id="menuIcon" name="menuIcon" value="${updateMenu.menuIcon}">
<small>*可选项,支持部分字体图标</small>
</div>
</div>
<div class="form-group">
<label for="menuUrl">路径</label>
<input type="text" class="form-control" id="menuUrl" name="menuUrl" placeholder="">
<small>*这是文章路径上显示的名称,最好为英文</small>
<#else >
<div class="box-body">
<div class="form-group">
<label for="menuName">名称</label>
<input type="text" class="form-control" id="menuName" name="menuName">
<small>页面上所显示的名称</small>
</div>
<div class="form-group">
<label for="menuUrl">路径</label>
<input type="text" class="form-control" id="menuUrl" name="menuUrl">
<small>*菜单的路径,最好为英文</small>
</div>
<div class="form-group">
<label for="menuSort">排序编号</label>
<input type="text" class="form-control" id="menuSort" name="menuSort">
</div>
<div class="form-group">
<label for="menuIcon">图标</label>
<input type="text" class="form-control" id="menuIcon" name="menuIcon">
<small>*可选项,支持部分字体图标</small>
</div>
</div>
<div class="form-group">
<label for="menuSort">排序编号</label>
<input type="text" class="form-control" id="menuSort" name="menuSort" placeholder="">
<small>*这是文章路径上显示的名称,最好为英文</small>
</div>
<div class="form-group">
<label for="menuIcon">图标</label>
<input type="text" class="form-control" id="menuIcon" name="menuIcon" placeholder="">
<small>*可选项,支持部分字体图标</small>
</div>
</div>
</#if>
<div class="box-footer">
<button type="submit" class="btn btn-primary btn-flat">确定添加</button>
<button type="submit" class="btn btn-primary btn-flat">确定${statusName}</button>
</div>
</form>
</div>
@ -55,7 +79,7 @@
<div class="col-md-7">
<div class="box box-primary">
<div class="box-header with-border">
<h3 class="box-title">所有菜单选项</h3>
<h3 class="box-title">所有菜单</h3>
</div>
<div class="box-body table-responsive">
<table class="table table-hover">
@ -76,7 +100,11 @@
<td>${(menu.menuSort)!}</td>
<td>${menu.menuIcon}</td>
<td>
<a href="#" class="btn btn-primary btn-xs btn-flat">修改</a>
<#if updateMenu?? && menu.menuId==updateMenu.menuId>
<a href="#" class="btn btn-primary btn-xs btn-flat" disabled="">正在修改</a>
<#else>
<a data-pjax="true" href="/admin/menus/edit?menuId=${menu.menuId}" class="btn btn-primary btn-xs btn-flat">修改</a>
</#if>
<button class="btn btn-danger btn-xs btn-flat" onclick="modelShow()">删除</button>
</td>
</tr>

View File

@ -64,13 +64,13 @@
<form method="post" class="form-horizontal" id="commonOptions">
<div class="box-body">
<div class="form-group">
<label for="siteTitle" class="col-sm-2 control-label">网站标题:</label>
<label for="siteTitle" class="col-sm-2 control-label">博客标题:</label>
<div class="col-sm-4">
<input type="text" class="form-control" id="siteTitle" name="site_title" value="${options.site_title?if_exists}">
</div>
</div>
<div class="form-group">
<label for="siteUrl" class="col-sm-2 control-label">网站链接</label>
<label for="siteUrl" class="col-sm-2 control-label">博客地址</label>
<div class="col-sm-4">
<input type="text" class="form-control" id="siteUrl" name="site_url" value="${options.site_url?default('http://localhost:8080')}">
</div>
@ -85,7 +85,7 @@
<div class="input-group">
<input type="text" class="form-control selectData" id="siteLogo" name="site_logo" value="${options.site_logo?if_exists}">
<span class="input-group-btn">
<button class="btn btn-default btn-flat" type="button" onclick="openAttach()">选择</button>
<button class="btn btn-default btn-flat" type="button" onclick="openAttach('siteLogo')">选择</button>
</span>
</div>
</div>
@ -262,6 +262,17 @@
</label>
</div>
</div>
<div class="form-group">
<label for="nativeCss" class="col-sm-2 control-label">自定义CSS
<span data-toggle="tooltip" data-placement="top" title="对评论框自定义样式,如边距等" style="cursor: pointer">
<i class="fa fa-question-circle" aria-hidden="true"></i>
</span>
</label>
<div class="col-sm-4">
<textarea class="form-control" rows="5" id="nativeCss" name="native_css" style="resize: none">${options.native_css?if_exists}</textarea>
</div>
</div>
</div>
<!-- valine选项 -->
@ -541,14 +552,14 @@
$('[data-toggle="tooltip"]').tooltip();
checkCommentOption();
});
function openAttach() {
function openAttach(id) {
layer.open({
type: 2,
title: '所有附件',
shadeClose: true,
shade: 0.5,
area: ['90%', '90%'],
content: '/admin/attachments/select',
content: '/admin/attachments/select?id='+id,
scrollbar: false
});
}

View File

@ -79,7 +79,7 @@
</a>
<ul class="treeview-menu">
<li><a data-pjax="true" href="/admin/themes"><i class="fa fa-circle-o"></i>主题</a></li>
<li><a data-pjax="true" href="/admin/menu"><i class="fa fa-circle-o"></i>菜单</a></li>
<li><a data-pjax="true" href="/admin/menus"><i class="fa fa-circle-o"></i>菜单</a></li>
<li><a data-pjax="false" href="/admin/themes/editor"><i class="fa fa-circle-o"></i>自定义</a></li>
</ul>
</li>

View File

@ -131,8 +131,7 @@
color: #ef2f11;
cursor: pointer;
}
${options.native_css?if_exists}
@media screen and (max-width:560px){
.comment-input-who,.comment-input-email,.comment-input-website{
width: 100%;
@ -190,7 +189,7 @@
var date = new Date(timestamp).toLocaleDateString();
var content = element.commentContent;
var authorPic = md5(authorEmail);
$('.native-list').append("<li class=\"native-list-one\"><img class=\"native-list-one-img\" src=\"http://www.gravatar.com/avatar/"+authorPic+"?s=256&d=${options.native_comment_avatar?default('default')}\"><section><div class=\"native-list-one-head\"><a class=\"native-list-one-head-name\" rel=\"nofollow\" href=\""+authorUrl+"\" target=\"_blank\">"+author+"</a> <span class=\"ua\">"+browser+"</span> <span class=\"ua\">"+os+"</span></div><div class=\"native-list-one-content\"><p>"+content+"</p></div><div class=\"native-list-one-footer\"><span class=\"native-list-one-footer-time\">"+date+"</span> <span rid=\"5a58569744d904006a970794\" at=\"@舍的研习室\" mail=\"veganshe@163.com\" class=\"native-list-one-footer-reback\">回复</span></div></section></li>");
$('.native-list').append("<li class=\"native-list-one\"><img class=\"native-list-one-img\" src=\"http://www.gravatar.com/avatar/"+authorPic+"?s=256&d=${options.native_comment_avatar?default('default')}\"><section><div class=\"native-list-one-head\"><a class=\"native-list-one-head-name\" rel=\"nofollow\" href=\""+authorUrl+"\" target=\"_blank\">"+author+"</a> <span class=\"ua\">"+browser+"</span> <span class=\"ua\">"+os+"</span></div><div class=\"native-list-one-content\"><p>"+content+"</p></div><div class=\"native-list-one-footer\"><span class=\"native-list-one-footer-time\">"+date+"</span> <span rid=\"\" at=\"@"+author+"\" mail=\""+authorEmail+"\" class=\"native-list-one-footer-reback\">回复</span></div></section></li>");
});
}
});