Selaa lähdekoodia

首页及详情页跳转

layui
yirenyishi 6 vuotta sitten
vanhempi
commit
d5a326fb6a
  1. 34
      controllers/BlogController.go
  2. 5
      controllers/IndexController.go
  3. 23
      controllers/UserController.go
  4. BIN
      data/beeblog.db
  5. 30
      models/Blog.go
  6. 2
      models/Comment.go
  7. 2
      models/DataInit.go
  8. 11
      routers/BlogRouter.go
  9. 43
      service/BlogService.go
  10. 5
      static/css/blog.css
  11. 26
      static/css/common.css
  12. 50
      static/css/index.css
  13. 4
      static/css/reset.css
  14. 1
      views/T.header.tpl
  15. 14
      views/blog.html
  16. 62
      views/index.html
  17. 1
      views/map.html

34
controllers/BlogController.go

@ -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"
}

5
controllers/IndexController.go

@ -2,6 +2,8 @@ package controllers
import (
"github.com/astaxie/beego"
"fmt"
"beeblog/service"
)
type IndexController struct {
@ -9,6 +11,9 @@ type IndexController struct {
}
func (c *IndexController) Get() {
blogs,_ := service.FindBlogs()
fmt.Println(blogs)
c.Data["Blogs"] = blogs
c.Data["IsHome"] = true
c.TplName = "index.html"
}

23
controllers/UserController.go

@ -16,28 +16,7 @@ type UserController struct {
}
func (u *UserController) LoginPage() {
//o := orm.NewOrm()
//
//category := &models.Category{Title: "slene", Views: 5, TopicCount: 0}
//
//id,err := o.Insert(category)
//fmt.Printf("ID: %d, ERR: %v\n", id, err)
//
//category.Title = "nelson"
//num, err := o.Update(&category)
//fmt.Printf("NUM: %d, ERR: %v\n", num, err)
//
//c := &models.Category{Id:1}
//err := o.Read(c)
//fmt.Printf("ERR: %v\n", err)
//fmt.Println(c.Title)
////c.Title = "nelson"
////num, err := o.Update(c)
////fmt.Printf("NUM: %d, ERR: %v\n", num, err)
//qs := o.QueryTable(&models.Category{})
//var tests []*models.Category
//qs.Filter("Title","slene")
//qs.All(&tests)
//
//for i:=0; i<len(tests) ; i++ {
// fmt.Println(tests[i].Title,tests[i].Id)

BIN
data/beeblog.db

Binary file not shown.

30
models/Blog.go

@ -3,18 +3,22 @@ package models
import "time"
type Blog struct {
Id int64
UserId int64
Title string
BlogValue string `orm:"size(5000)"`
BlogHtml string `orm:"size(5000)"`
Ctime time.Time `orm:"datetime"`
Utime time.Time `orm:"datetime"`
Browses int64 `orm:"datetime"`
Top int
Hot int
Ttime time.Time `orm:"datetime"`
Htime time.Time `orm:"datetime"`
Delflag int
Id int64
UserId int64
Title string
BlogValue string `orm:"type(text)"`
BlogHtml string `orm:"type(text)"`
Ctime time.Time `orm:"auto_now_add;type(datetime)"`
Utime time.Time `orm:"auto_now_add;type(datetime)"`
Browses int64 `orm:"default(0)"`
Top int `orm:"default(0)"`
Hot int `orm:"default(0)"`
Ttime time.Time `orm:"null;type(date)"`
Htime time.Time `orm:"null;type(date)"`
Delflag int `orm:"default(0)"`
CategoryId int64
CtimeStr string `orm:"-"`
UserName string `orm:"-"`
CateName string `orm:"-"`
}

2
models/Comment.go

@ -9,5 +9,5 @@ type Comment struct {
BlogId int64
Ctime time.Time `orm:"datetime"`
Pid int64
ComVal string `orm:"size(2000)"`
ComVal string `orm:"type(text)"`
}

2
models/DataInit.go

@ -19,7 +19,7 @@ func RegistDB() {
os.Create(_DB_NAME)
}
//orm.RegisterModel(new(Attachment),new(Topic))
orm.RegisterModel(new(Attachment),new(User))
orm.RegisterModel(new(Attachment),new(User),new(Blog))
orm.RegisterDriver(_SQLITE3_DRIVER,orm.DRSqlite)
orm.RegisterDataBase("default",_SQLITE3_DRIVER,_DB_NAME,10)
}

11
routers/BlogRouter.go

@ -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")
}

43
service/BlogService.go

@ -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
}

5
static/css/blog.css

@ -0,0 +1,5 @@
.blog-root{
width: 100%;
height: 100%;
margin: 50px 4% 0 4%;
}

26
static/css/common.css

@ -1,9 +1,33 @@
.root-container{
position: absolute;
height: 100%;
width: 100%;
max-width: 100%;
}
.nav-container{
max-height: 40px;
position: fixed;
width: 100%;
z-index: 1000;
left: 0;
top: 0;
}
.nav-container .sui-navbar .navbar-inner{
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
}

50
static/css/index.css

@ -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
}

4
static/css/reset.css

@ -87,7 +87,3 @@ body {
-webkit-text-size-adjust: none;
-webkit-tap-highlight-color: rgba(0, 0, 0, 0);
}
.cursor{
cursor: pointer
}

1
views/T.header.tpl

@ -9,4 +9,5 @@
<link href="http://g.alicdn.com/sj/dpl/1.5.1/css/sui.min.css" rel="stylesheet">
<script type="text/javascript" src="http://g.alicdn.com/sj/lib/jquery/dist/jquery.min.js"></script>
<script type="text/javascript" src="http://g.alicdn.com/sj/dpl/1.5.1/js/sui.min.js"></script>
<link type="text/css" rel="styleSheet" href="/static/css/common.css"/>
{{end}}

14
views/blog.html

@ -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>

62
views/index.html

@ -1,9 +1,67 @@
{{template "header"}}
<title>首页 - 个人随笔</title>
<link type="text/css" rel="styleSheet" href="/static/css/index.css"/>
</head>
<body>
<div class='container'>
<div class="root-container">
{{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>
</html>

1
views/map.html

@ -3,7 +3,6 @@
<script type="text/javascript"
src="https://webapi.amap.com/maps?v=1.4.10&key=74c9586333eaf8d6191c576cf59739fa"></script>
<script src="https://webapi.amap.com/ui/1.0/main.js"></script>
<link type="text/css" rel="styleSheet" href="/static/css/common.css"/>
<link type="text/css" rel="styleSheet" href="/static/css/map.css" />
</head>
<body>

Ladataan…
Peruuta
Tallenna