Browse Source

详情页

layui
mail_yanpeng@163.com 6 years ago
parent
commit
0c720b9b04
  1. 1
      conf/app.conf
  2. 5
      controllers/BlogController.go
  3. 20
      controllers/UserController.go
  4. BIN
      data/beeblog.db
  5. 11
      filter/Security.go
  6. 2
      main.go
  7. 2
      models/Blog.go
  8. 1
      models/User.go
  9. 1
      routers/UserRouter.go
  10. 27
      service/BlogService.go
  11. 10
      static/css/blog.css
  12. 15
      static/css/common.css
  13. BIN
      static/img/2.png
  14. BIN
      static/img/bg.jpg
  15. 33
      views/T.nav.tpl
  16. 16
      views/blog.html
  17. 2
      views/newblog.html

1
conf/app.conf

@ -3,6 +3,7 @@ httpport = 8082
runmode = dev runmode = dev
sessionon = true sessionon = true
sessiongcmaxlifetime = 36000
EnableGzip = true EnableGzip = true
EnableDocs = true EnableDocs = true

5
controllers/BlogController.go

@ -82,6 +82,11 @@ func (this *BlogController) BlogsPage() {
this.Redirect("500.html", 302) this.Redirect("500.html", 302)
return return
} }
NickName:= this.GetSession("nickname")
fmt.Print("current user ",NickName)
this.Data["NickName"] = NickName
this.Data["IsLogin"] = this.GetSession("nickname") != nil
this.Data["Page"] = pages this.Data["Page"] = pages
this.Data["Cats"] = cats this.Data["Cats"] = cats
this.Data["Cat"] = cat this.Data["Cat"] = cat

20
controllers/UserController.go

@ -17,16 +17,6 @@ type UserController struct {
} }
func (u *UserController) LoginPage() { func (u *UserController) LoginPage() {
//
//for i:=0; i<len(tests) ; i++ {
// fmt.Println(tests[i].Title,tests[i].Id)
//}
//fmt.Println(len(tests))
//num, err = o.Delete(&u)
//fmt.Printf("NUM: %d, ERR: %v\n", num, err)
//u.Ctx.WriteString("login page")
u.TplName = "login.html" u.TplName = "login.html"
} }
func (u *UserController) RegistPage() { func (u *UserController) RegistPage() {
@ -64,6 +54,7 @@ func (this *UserController) Login() {
if userpwd == user.UserPwd { if userpwd == user.UserPwd {
this.Data["json"] = models.ReurnSuccess("") this.Data["json"] = models.ReurnSuccess("")
this.SetSession("userid", user.Id) this.SetSession("userid", user.Id)
this.SetSession("nickname", user.NickName)
fmt.Println(this.CruSession) fmt.Println(this.CruSession)
} else { } else {
this.Data["json"] = models.ReurnError(1,"用户名或密码错误") this.Data["json"] = models.ReurnError(1,"用户名或密码错误")
@ -112,7 +103,7 @@ func (this *UserController) Regist() {
h = md5.New() h = md5.New()
h.Write([]byte(userpwd + salt)) h.Write([]byte(userpwd + salt))
userpwd = hex.EncodeToString(h.Sum(nil)) userpwd = hex.EncodeToString(h.Sum(nil))
user = &models.User{UserName: username, UserPwd: userpwd, Salt: salt} user = &models.User{UserName: username,NickName:username, UserPwd: userpwd, Salt: salt}
err := service.SaveUser(user) err := service.SaveUser(user)
if err == nil { if err == nil {
this.Data["json"] = models.ReurnSuccess("") this.Data["json"] = models.ReurnSuccess("")
@ -122,3 +113,10 @@ func (this *UserController) Regist() {
this.ServeJSON() this.ServeJSON()
return return
} }
func (this *UserController) Logout() {
this.DelSession("userid")
this.DelSession("nickname")
this.Redirect("/",302)
return
}

BIN
data/beeblog.db

Binary file not shown.

11
filter/Security.go

@ -5,7 +5,6 @@ import (
"github.com/astaxie/beego/context" "github.com/astaxie/beego/context"
) )
var FilterAdmin = func(ctx *context.Context) { var FilterAdmin = func(ctx *context.Context) {
url := ctx.Input.URL() url := ctx.Input.URL()
logs.Info("##### filter url : %s", url) logs.Info("##### filter url : %s", url)
@ -14,10 +13,8 @@ var FilterAdmin = func(ctx *context.Context) {
//} //}
} }
var FilterAdmin1 = func(ctx *context.Context) { var FilterLoginInfo = func(ctx *context.Context) {
url := ctx.Input.URL() if ctx.Input.Session("userid") != nil {
logs.Info("##### filter url : %s", url) //ctx.
//if url != "/login"{ }
// ctx.Redirect(302, "/login")
//}
} }

2
main.go

@ -11,7 +11,7 @@ import (
func init() { func init() {
models.RegistDB() models.RegistDB()
beego.InsertFilter("/*", beego.BeforeRouter, filter.FilterAdmin) beego.InsertFilter("/*", beego.BeforeRouter, filter.FilterAdmin)
beego.InsertFilter("/*", beego.BeforeRouter, filter.FilterAdmin1) beego.InsertFilter("/*", beego.FinishRouter, filter.FilterLoginInfo)
} }
func main() { func main() {
orm.Debug = true orm.Debug = true

2
models/Blog.go

@ -19,5 +19,7 @@ type Blog struct {
CategoryId int64 CategoryId int64
UserName string `orm:"-"` UserName string `orm:"-"`
HeadImg string `orm:"-"`
CateName string `orm:"-"` CateName string `orm:"-"`
Lables []*NLabel `orm:"-"`
} }

1
models/User.go

@ -5,6 +5,7 @@ import "time"
type User struct { type User struct {
Id int64 Id int64
UserName string `orm:"unique"` UserName string `orm:"unique"`
NickName string
UserPwd string UserPwd string
Salt string Salt string
Headimg string Headimg string

1
routers/UserRouter.go

@ -7,6 +7,7 @@ import (
func init() { func init() {
beego.Router("/login", &controllers.UserController{}, "get:LoginPage") beego.Router("/login", &controllers.UserController{}, "get:LoginPage")
beego.Router("/logout", &controllers.UserController{}, "get:Logout")
beego.Router("/login", &controllers.UserController{}, "post:Login") beego.Router("/login", &controllers.UserController{}, "post:Login")
beego.Router("/regist", &controllers.UserController{}, "post:Regist") beego.Router("/regist", &controllers.UserController{}, "post:Regist")
beego.Router("/regist", &controllers.UserController{}, "get:RegistPage") beego.Router("/regist", &controllers.UserController{}, "get:RegistPage")

27
service/BlogService.go

@ -30,6 +30,18 @@ func GetBlog(id int64) (*models.Blog, error) {
if err != nil { if err != nil {
return nil, err return nil, err
} }
user := &models.User{Id: blog.UserId}
err = o.Read(user)
if err == nil {
blog.UserName = user.UserName
blog.HeadImg = user.Headimg
}
var labels []*models.NLabel
qs := o.QueryTable(&models.NLabel{})
_,err = qs.Filter("BlogId",id).All(&labels)
if err == nil {
blog.Lables = labels
}
return blog, nil return blog, nil
} }
@ -56,6 +68,21 @@ func FindBlogs(num int, size int, cat int64, flag int) (*utils.Page, error) {
if err != nil { if err != nil {
return nil, err return nil, err
} }
if len(blogs) > 0 {
for i := 0; i < len(blogs); i++ {
user := &models.User{Id: blogs[i].UserId}
err = o.Read(user)
if err == nil {
blogs[i].UserName = user.UserName
blogs[i].HeadImg = user.Headimg
}
category := &models.Category{Id: blogs[i].CategoryId}
err = o.Read(category)
if err == nil {
blogs[i].CateName = category.Title
}
}
}
page.List = blogs page.List = blogs
return page, nil return page, nil
} }

10
static/css/blog.css

@ -1,5 +1,13 @@
.blog-root{ .blog-root{
width: 100%;
height: 100%; height: 100%;
margin: 50px 4% 0 4%; margin: 50px 4% 0 4%;
} }
.blog-info{
text-align: center;
}
.blog-info em{
padding: 0 8px !important;
}

15
static/css/common.css

@ -1,3 +1,18 @@
body {
/*background: #f5f7f9 url("/static/img/bg.jpg") repeat;*/
background: #f5f7f9;
}
.navbar-default{
border-color: #f8d9ea !important;
}
.img-circle{
width: 36px;
height: 36px;
margin-top: 2px;
}
.root-container { .root-container {
position: absolute; position: absolute;
height: 100%; height: 100%;

BIN
static/img/2.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 321 KiB

BIN
static/img/bg.jpg

Binary file not shown.

After

Width:  |  Height:  |  Size: 20 KiB

33
views/T.nav.tpl

@ -20,24 +20,33 @@
<a href="/map" target="_blank">地图</a> <a href="/map" target="_blank">地图</a>
</li> </li>
</ul> </ul>
<form class="navbar-form navbar-left" role="search"> {{/*<form class="navbar-form navbar-left" role="search">*/}}
<div class="form-group"> {{/*<div class="form-group">*/}}
<input type="text" class="form-control" placeholder="Search"> {{/*<input type="text" class="form-control" placeholder="Search">*/}}
</div> {{/*</div>*/}}
<button type="submit" class="btn btn-default">Submit</button> {{/*<button type="submit" class="btn btn-default">Submit</button>*/}}
</form> {{/*</form>*/}}
<ul class="nav navbar-nav navbar-right"> <ul class="nav navbar-nav navbar-right">
<li><a href="#">个人中心</a></li> {{if .IsLogin }}
{{/*<li><a href="#"></a></li>*/}}
<li><a href="/" style="padding: 0;"><img src="/static/img/2.png" alt="头像" class="img-circle"></a></li>
{{else}}
<li><a href="/login">登录</a></li>
<li><a href="/regist">注册</a></li>
{{end}}
{{if .IsLogin }}
<li class="dropdown"> <li class="dropdown">
<a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-expanded="false">Dropdown <span class="caret"></span></a> <a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-expanded="false">
{{.NickName}}<span class="caret"></span></a>
<ul class="dropdown-menu" role="menu"> <ul class="dropdown-menu" role="menu">
<li><a href="#">Action</a></li> <li><a href="#">个人中心</a></li>
<li><a href="#">Another action</a></li> <li><a href="/note" target="_blank">我的笔记</a></li>
<li><a href="#">Something else here</a></li> <li><a href="/note" target="_blank">我的首页</a></li>
<li class="divider"></li> <li class="divider"></li>
<li><a href="#">Separated link</a></li> <li><a href="/logout">安全退出</a></li>
</ul> </ul>
</li> </li>
{{end}}
</ul> </ul>
</div><!-- /.navbar-collapse --> </div><!-- /.navbar-collapse -->
</div><!-- /.container-fluid --> </div><!-- /.container-fluid -->

16
views/blog.html

@ -6,8 +6,20 @@
<div class="root-container"> <div class="root-container">
{{template "nav" .}} {{template "nav" .}}
<div class="blog-root"> <div class="blog-root">
<h1>{{.Blog.Title}}</h1> <h1 style="text-align: center">{{.Blog.Title}}</h1>
<div class="blog-info">
<span><a href="">{{.Blog.UserName}}</a></span>
<span><em>时间:</em>{{.Blog.Ctime.Format "2006-01-02"}}</span>
<span><em>阅读数:</em>{{.Blog.Browses}}</span>
<div class="tag-group" style="display: inline-block">
{{range .Blog.Lables}}
<label class='tag tag-info disabled'>{{.Title}}</label>
{{end}}
</div>
</div>
<div style="width: 100%">
{{str2html .Blog.BlogHtml}}
</div>
</div> </div>
</div> </div>
</body> </body>

2
views/newblog.html

@ -6,7 +6,7 @@
<body> <body>
<div class="root-container"> <div class="root-container">
<div class="blog-title"> <div class="blog-title">
<input type="text" id="blog-title"> <input type="text" id="blog-title" placeholder="请输入文章标题">
<button type="button" id="newBtn" class="btn btn-danger" style="border-radius: 12px">发布文章</button> <button type="button" id="newBtn" class="btn btn-danger" style="border-radius: 12px">发布文章</button>
</div> </div>
<div id="editor" class="editor"> <div id="editor" class="editor">

Loading…
Cancel
Save