17개의 변경된 파일과 268개의 추가작업 그리고 45개의 파일을 삭제
@ -0,0 +1,34 @@ |
|||||
|
package controllers |
||||
|
|
||||
|
import ( |
||||
|
"github.com/astaxie/beego" |
||||
|
"beeblog/models" |
||||
|
"beeblog/service" |
||||
|
"strconv" |
||||
|
) |
||||
|
|
||||
|
type BlogController struct { |
||||
|
beego.Controller |
||||
|
} |
||||
|
|
||||
|
func (this *BlogController) Save() { |
||||
|
blog := &models.Blog{Title: "ELK+logback+kafska+nginx 搭建分布式日志分析平台"} |
||||
|
err := service.SaveBlog(blog) |
||||
|
if (err == nil) { |
||||
|
this.Data["json"] = blog |
||||
|
} else { |
||||
|
this.Data["json"] = models.ReurnError("保存失败") |
||||
|
} |
||||
|
this.ServeJSON() |
||||
|
} |
||||
|
|
||||
|
func (this *BlogController) Get() { |
||||
|
idStr := this.Ctx.Input.Param(":id") |
||||
|
id, _ := strconv.ParseInt(idStr, 10, 64) |
||||
|
blog, err := service.GetBlog(id) |
||||
|
if (err == nil) { |
||||
|
this.Data["Blog"] = blog |
||||
|
} |
||||
|
//this.Data["IsHome"] = true
|
||||
|
this.TplName = "blog.html" |
||||
|
} |
Binary file not shown.
@ -0,0 +1,11 @@ |
|||||
|
package routers |
||||
|
|
||||
|
import ( |
||||
|
"github.com/astaxie/beego" |
||||
|
"beeblog/controllers" |
||||
|
) |
||||
|
|
||||
|
func init() { |
||||
|
beego.Router("/blog/save", &controllers.BlogController{}, "get:Save") |
||||
|
beego.Router("/blog/:id([0-9]+)", &controllers.BlogController{}, "get:Get") |
||||
|
} |
@ -0,0 +1,43 @@ |
|||||
|
package service |
||||
|
|
||||
|
import ( |
||||
|
"github.com/astaxie/beego/orm" |
||||
|
"beeblog/models" |
||||
|
) |
||||
|
|
||||
|
type BlogService struct { |
||||
|
} |
||||
|
|
||||
|
func GetBlog(id int64) (*models.Blog, error) { |
||||
|
o := orm.NewOrm() |
||||
|
blog := &models.Blog{Id:id} |
||||
|
err := o.Read(blog) |
||||
|
if err != nil { |
||||
|
return nil, err |
||||
|
} |
||||
|
return blog, nil |
||||
|
} |
||||
|
|
||||
|
|
||||
|
func FindBlogs() ([]*models.Blog, error) { |
||||
|
o := orm.NewOrm() |
||||
|
qs := o.QueryTable(&models.Blog{}) |
||||
|
var blogs []*models.Blog |
||||
|
_, err := qs.Filter("Delflag", 0).All(&blogs) |
||||
|
if err != nil { |
||||
|
return nil, err |
||||
|
} |
||||
|
return blogs, nil |
||||
|
} |
||||
|
|
||||
|
func SaveBlog(blog *models.Blog) error { |
||||
|
o := orm.NewOrm() |
||||
|
id, eror := o.Insert(blog) |
||||
|
if eror != nil { |
||||
|
return eror |
||||
|
} else { |
||||
|
blog.Id = id |
||||
|
o.Commit() |
||||
|
} |
||||
|
return nil |
||||
|
} |
@ -0,0 +1,5 @@ |
|||||
|
.blog-root{ |
||||
|
width: 100%; |
||||
|
height: 100%; |
||||
|
margin: 50px 4% 0 4%; |
||||
|
} |
@ -1,9 +1,33 @@ |
|||||
|
.root-container{ |
||||
|
position: absolute; |
||||
|
height: 100%; |
||||
|
width: 100%; |
||||
|
max-width: 100%; |
||||
|
} |
||||
|
|
||||
.nav-container{ |
.nav-container{ |
||||
|
max-height: 40px; |
||||
position: fixed; |
position: fixed; |
||||
width: 100%; |
width: 100%; |
||||
z-index: 1000; |
z-index: 1000; |
||||
|
left: 0; |
||||
|
top: 0; |
||||
} |
} |
||||
|
|
||||
.nav-container .sui-navbar .navbar-inner{ |
.nav-container .sui-navbar .navbar-inner{ |
||||
padding: 0 50px; |
padding: 0 50px; |
||||
} |
} |
||||
|
|
||||
|
::-webkit-scrollbar { |
||||
|
width: 1px; |
||||
|
height: 0px; |
||||
|
} |
||||
|
|
||||
|
::-webkit-scrollbar-track-piece { |
||||
|
background-color: rgba(0, 0, 0, 0); |
||||
|
-webkit-border-radius: 6px; |
||||
|
} |
||||
|
|
||||
|
.cursor{ |
||||
|
cursor: pointer |
||||
|
} |
||||
|
@ -0,0 +1,50 @@ |
|||||
|
.home-container{ |
||||
|
height: 100%; |
||||
|
margin: 50px 4% 0 4%; |
||||
|
} |
||||
|
.home-container hr{ |
||||
|
margin: 0; |
||||
|
} |
||||
|
|
||||
|
.home-hearder { |
||||
|
margin: 10px 0; |
||||
|
display: flex; |
||||
|
height: 30px; |
||||
|
line-height: 30px; |
||||
|
} |
||||
|
|
||||
|
.nelson-btn{ |
||||
|
color: #ec6149 !important; |
||||
|
border-radius: 15px; |
||||
|
border: 1px solid #bbb !important; |
||||
|
} |
||||
|
|
||||
|
.nelson-btn:hover{ |
||||
|
background: #fff !important; |
||||
|
color: #ec6149 !important; |
||||
|
border-radius: 15px; |
||||
|
border: 1px solid #ec6149 !important; |
||||
|
} |
||||
|
|
||||
|
.home-content{ |
||||
|
display: flex; |
||||
|
min-height: 50px; |
||||
|
line-height: 50px; |
||||
|
} |
||||
|
|
||||
|
.home-content-title{ |
||||
|
display: inline-block; |
||||
|
font-size: 16px; |
||||
|
/*width: 65%;*/ |
||||
|
flex: 1; |
||||
|
} |
||||
|
|
||||
|
.home-content-desc{ |
||||
|
display: flex |
||||
|
} |
||||
|
|
||||
|
.home-content-desc span{ |
||||
|
display: inline-block; |
||||
|
text-align: center |
||||
|
} |
||||
|
|
@ -0,0 +1,14 @@ |
|||||
|
{{template "header"}} |
||||
|
<title>博客 - 个人随笔</title> |
||||
|
<link type="text/css" rel="styleSheet" href="/static/css/blog.css"/> |
||||
|
</head> |
||||
|
<body> |
||||
|
<div class="root-container"> |
||||
|
{{template "nav" .}} |
||||
|
<div class="blog-root"> |
||||
|
<h1>{{.Blog.Title}}</h1> |
||||
|
|
||||
|
</div> |
||||
|
</div> |
||||
|
</body> |
||||
|
</html> |
@ -1,9 +1,67 @@ |
|||||
{{template "header"}} |
{{template "header"}} |
||||
<title>首页 - 个人随笔</title> |
<title>首页 - 个人随笔</title> |
||||
|
<link type="text/css" rel="styleSheet" href="/static/css/index.css"/> |
||||
</head> |
</head> |
||||
<body> |
<body> |
||||
<div class='container'> |
<div class="root-container"> |
||||
{{template "nav" .}} |
{{template "nav" .}} |
||||
</div> |
<div class="home-container"> |
||||
|
<div class="home-hearder"> |
||||
|
<div style="flex: 1"> |
||||
|
<span class="sui-dropdown dropdown-bordered select dropdown-large"> |
||||
|
<span class="dropdown-inner"> |
||||
|
<a id="select" role="button" href="javascript:void(0);" data-toggle="dropdown" |
||||
|
class="dropdown-toggle"> |
||||
|
<input value="hz" name="city" type="hidden"><i class="caret"></i><span>选择分类</span></a> |
||||
|
<ul role="menu" aria-labelledby="drop4" class="sui-dropdown-menu"> |
||||
|
<li role="presentation"><a role="menuitem" tabindex="-1" href="javascript:void(0);" |
||||
|
value="bj">北京</a></li> |
||||
|
<li role="presentation"><a role="menuitem" tabindex="-1" href="javascript:void(0);" value="sb">圣彼得堡</a></li> |
||||
|
<li role="presentation" class="active"><a role="menuitem" tabindex="-1" href="javascript:void(0);" |
||||
|
value="hz">杭州</a></li> |
||||
|
</ul> |
||||
|
</span> |
||||
|
</span> |
||||
|
<div class="sui-btn-group "> |
||||
|
<button class="sui-btn btn-primary btn-large btn-bordered">最新</button> |
||||
|
<button class="sui-btn btn-primary btn-large btn-bordered">最热</button> |
||||
|
</div> |
||||
|
</div> |
||||
|
<a href="/blog/new" target="_blank" class="sui-btn btn-bordered btn-large nelson-btn">写文章</a> |
||||
|
</div> |
||||
|
<div> |
||||
|
<div class="home-content" style="min-height: 40px;line-height: 40px;color: #888"> |
||||
|
<div class="home-content-title cursor" style="font-size: 14px"> |
||||
|
文章标题 |
||||
|
</div> |
||||
|
<div style="display: inline-block;width: 260px"> |
||||
|
<div class="home-content-desc"> |
||||
|
<span style="width: 60px;font-size: 14px">类型</span> |
||||
|
<span style="width: 60px"> 用户</span> |
||||
|
<span style="width: 60px;font-size: 14px">浏览量</span> |
||||
|
<span style="flex: 1;font-size: 14px">日期</span> |
||||
|
</div> |
||||
|
</div> |
||||
|
</div> |
||||
|
<hr style="height:1px;border:none;border-top:1px solid lightgray;"/> |
||||
|
</div> |
||||
|
{{range .Blogs}} |
||||
|
<div> |
||||
|
<div class="home-content"> |
||||
|
<div class="home-content-title cursor"> |
||||
|
<a href="/blog/{{.Id}}">{{.Title}}</a> |
||||
|
</div> |
||||
|
<div style="display: inline-block;width: 260px"> |
||||
|
<div class="home-content-desc"> |
||||
|
<span style="width: 60px;font-size: 14px">{{.CateName}}</span> |
||||
|
<span style="width: 60px" class="cursor">{{.UserName}}</span> |
||||
|
<span style="width: 60px;font-size: 14px">2555</span> |
||||
|
<span style="flex: 1;font-size: 14px">{{.CtimeStr}}</span> |
||||
|
</div> |
||||
|
</div> |
||||
|
</div> |
||||
|
<hr style="height:1px;border:none;border-top:1px solid #EEE;"/> |
||||
|
</div> |
||||
|
{{end}} |
||||
</body> |
</body> |
||||
</html> |
</html> |
불러오는 중...
Reference in new issue