Browse Source

个人中心

layui
mail_yanpeng@163.com 6 years ago
parent
commit
868c10ef6a
  1. 8
      controllers/BlogController.go
  2. 2
      controllers/PageController.go
  3. 64
      controllers/UserController.go
  4. BIN
      data/beeblog.db
  5. 36
      service/BlogService.go
  6. 7
      service/UserService.go
  7. 9
      static/css/me.css
  8. 1
      utils/PageUtil.go
  9. 3
      views/T.nav.tpl
  10. 41
      views/ublogs.html

8
controllers/BlogController.go

@ -41,7 +41,7 @@ func (this *BlogController) Get() {
id, _ := strconv.ParseInt(idStr, 10, 64)
blog, err := service.GetBlog(id)
if err != nil {
this.Redirect("/500.html",302)
this.Redirect("/500",302)
return
}
this.Data["Blog"] = blog
@ -56,7 +56,7 @@ func (this *BlogController) Get() {
func (this *BlogController) New() {
uid := this.GetSession("userid")
if uid == nil {
this.Redirect("/login.html", 302)
this.Redirect("login.html", 302)
return
}
this.TplName = "newblog.html"
@ -68,7 +68,7 @@ func (this *BlogController) Blog1() {
func (this *BlogController) BlogsPage() {
cats, errcat := service.GetCats()
if errcat != nil {
this.Redirect("500.html", 302)
this.Redirect("/500", 302)
return
}
num, _ := this.GetInt("num")
@ -87,7 +87,7 @@ func (this *BlogController) BlogsPage() {
fmt.Println("nelson page", num, size, cat)
pages, err := service.FindBlogs(num, size, cat, flag)
if err != nil {
this.Redirect("500.html", 302)
this.Redirect("/500", 302)
return
}

2
controllers/PageController.go

@ -13,7 +13,7 @@ type PageController struct {
func (this *PageController) Blog() {
cats, err := service.GetCats()
if err != nil {
this.Redirect("500.html", 302)
this.Redirect("/500", 302)
return
}
this.Data["Cats"] = cats

64
controllers/UserController.go

@ -9,7 +9,6 @@ import (
"time"
"strconv"
"encoding/hex"
"fmt"
)
type UserController struct {
@ -23,30 +22,58 @@ func (u *UserController) RegistPage() {
u.TplName = "regist.html"
}
func (u *UserController) PersonBlog() {
u.TplName = "ublogs.html"
func (this *UserController) PersonBlog() {
uid := this.GetSession("userid")
if uid == nil {
this.Redirect("/login", 302)
return
}
size := 15
num, _ := this.GetInt("num")
if num <= 0 {
num = 1
}
flag, _ := this.GetInt("flag")
page, err := service.MeBlogs(num, size, flag, uid.(int64))
if err != nil {
if uid == nil {
this.Redirect("/500", 302)
return
}
}
user, uerr := service.GetUser(uid.(int64))
if uerr != nil {
if uid == nil {
this.Redirect("/500", 302)
return
}
}
this.Data["Page"] = page
this.Data["Flag"] = 0
this.Data["User"] = user
this.TplName = "ublogs.html"
}
func (this *UserController) Login() {
username := this.GetString("username")
userpwd := this.GetString("userpwd")
if username == "" {
this.Data["json"] = models.ReurnError(1,"用户名为空")
this.Data["json"] = models.ReurnError(1, "用户名为空")
this.ServeJSON()
return
}
if len(username) < 4 {
this.Data["json"] = models.ReurnError(1,"用户名最低4位")
this.Data["json"] = models.ReurnError(1, "用户名最低4位")
this.ServeJSON()
return
}
if userpwd == "" {
this.Data["json"] = models.ReurnError(1,"密码为空")
this.Data["json"] = models.ReurnError(1, "密码为空")
this.ServeJSON()
return
}
if len(userpwd) < 6 {
this.Data["json"] = models.ReurnError(1,"密码最低6位")
this.Data["json"] = models.ReurnError(1, "密码最低6位")
this.ServeJSON()
return
}
@ -59,12 +86,11 @@ func (this *UserController) Login() {
this.Data["json"] = models.ReurnSuccess("")
this.SetSession("userid", user.Id)
this.SetSession("nickname", user.NickName)
fmt.Println(this.CruSession)
} else {
this.Data["json"] = models.ReurnError(1,"用户名或密码错误")
this.Data["json"] = models.ReurnError(1, "用户名或密码错误")
}
} else {
this.Data["json"] = models.ReurnError(1,"用户名不存在")
this.Data["json"] = models.ReurnError(1, "用户名不存在")
}
this.ServeJSON()
return
@ -76,28 +102,28 @@ func (this *UserController) Regist() {
username = strings.Replace(username, " ", "", -1)
userpwd = strings.Replace(userpwd, " ", "", -1)
if username == "" {
this.Data["json"] = models.ReurnError(1,"用户名为空")
this.Data["json"] = models.ReurnError(1, "用户名为空")
this.ServeJSON()
return
}
if len(username) < 4 {
this.Data["json"] = models.ReurnError(1,"用户名最低4位")
this.Data["json"] = models.ReurnError(1, "用户名最低4位")
this.ServeJSON()
return
}
if userpwd == "" {
this.Data["json"] = models.ReurnError(1,"密码为空")
this.Data["json"] = models.ReurnError(1, "密码为空")
this.ServeJSON()
return
}
if len(userpwd) < 6 {
this.Data["json"] = models.ReurnError(1,"密码最低6位")
this.Data["json"] = models.ReurnError(1, "密码最低6位")
this.ServeJSON()
return
}
user, _ := service.FindByUserName(username)
if user != nil {
this.Data["json"] = models.ReurnError(1,"用户已经存在")
this.Data["json"] = models.ReurnError(1, "用户已经存在")
this.ServeJSON()
return
}
@ -107,12 +133,12 @@ func (this *UserController) Regist() {
h = md5.New()
h.Write([]byte(userpwd + salt))
userpwd = hex.EncodeToString(h.Sum(nil))
user = &models.User{UserName: username,NickName:username, UserPwd: userpwd, Salt: salt}
user = &models.User{UserName: username, NickName: username, UserPwd: userpwd, Salt: salt}
err := service.SaveUser(user)
if err == nil {
this.Data["json"] = models.ReurnSuccess("")
} else {
this.Data["json"] = models.ReurnError(1,"注册失败")
this.Data["json"] = models.ReurnError(1, "注册失败")
}
this.ServeJSON()
return
@ -121,6 +147,6 @@ func (this *UserController) Regist() {
func (this *UserController) Logout() {
this.DelSession("userid")
this.DelSession("nickname")
this.Redirect("/",302)
this.Redirect("/", 302)
return
}
}

BIN
data/beeblog.db

Binary file not shown.

36
service/BlogService.go

@ -23,6 +23,16 @@ func count(num int, size int, cat int64) (*utils.Page, error) {
return utils.PageUtil(totalCount, num, size), nil
}
func countByUser(num int, size int, uid int64) (*utils.Page, error) {
o := orm.NewOrm()
qs := o.QueryTable(&models.Blog{})
totalCount, err := qs.Filter("Delflag", 0).Filter("UserId", uid).Count()
if err != nil {
return nil, err
}
return utils.PageUtil(totalCount, num, size), nil
}
func EditBlogBrows(id int64) {
o := orm.NewOrm()
blog := &models.Blog{Id: id}
@ -47,7 +57,7 @@ func GetBlog(id int64) (*models.Blog, error) {
}
var labels []*models.NLabel
qs := o.QueryTable(&models.NLabel{})
_,err = qs.Filter("BlogId",id).All(&labels)
_, err = qs.Filter("BlogId", id).All(&labels)
if err == nil {
blog.Lables = labels
}
@ -119,3 +129,27 @@ func SaveBlog(blog *models.Blog, strs []string) error {
}
return nil
}
func MeBlogs(num int, size int, flag int, uid int64) (*utils.Page, error) {
page, err := countByUser(num, size, uid)
if err != nil {
return nil, err
}
var blogs []*models.Blog
o := orm.NewOrm()
qs := o.QueryTable(&models.Blog{})
qs = qs.Filter("Delflag", 0)
qs = qs.Filter("UserId", uid)
if flag == 0 {
qs = qs.OrderBy("-Ctime")
} else {
qs = qs.OrderBy("-Browses")
}
qs = qs.Limit(size, (page.PageNo-1)*size)
_, err = qs.All(&blogs)
if err != nil {
return nil, err
}
page.List = blogs
return page, nil
}

7
service/UserService.go

@ -8,6 +8,13 @@ import (
type UserService struct {
}
func GetUser(id int64) (*models.User,error) {
o := orm.NewOrm()
user := &models.User{Id:id}
err := o.Read(user)
return user,err
}
func FindByUserName(username string) (*models.User, error) {
o := orm.NewOrm()
qs := o.QueryTable(&models.User{})

9
static/css/me.css

@ -9,9 +9,16 @@
.me-blog-root{
height: 100%;
margin: 50px 4% 0 4%;
margin: 50px 4% 0 0;
}
.me-blog-list{
margin-left: 300px;
}
.me-blog-list p{
height: 30px;
line-height: 30px;
margin: 0;
font-size: 15px;
}

1
utils/PageUtil.go

@ -16,6 +16,7 @@ type Page struct {
}
func PageUtil(count64 int64, pageNo int, pageSize int) *Page {
fmt.Println("count",count64,"paheNo",pageNo,"pageSize",pageSize)
string := strconv.FormatInt(count64, 10)
count, _ := strconv.Atoi(string)
tp := count / pageSize

3
views/T.nav.tpl

@ -28,8 +28,7 @@
{{/*</form>*/}}
<ul class="nav navbar-nav navbar-right">
{{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>
<li><a href="/me/blog" 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>

41
views/ublogs.html

@ -8,34 +8,63 @@
<div class="me-menu">
<div style="height: 50px;line-height: 50px">
<a href=""><img src="/static/img/2.png" alt="头像" class="img-circle"></a>
<a href="" style="margin-left: 15px;font-size: 18px;text-decoration: none">{{.Blog.User.NickName}}</a>
<a href="" style="margin-left: 15px;font-size: 18px;text-decoration: none">{{.User.NickName}}</a>
</div>
<hr style="height:1px;border:none;border-top:1px solid #EEE;margin: 6px;"/>
<div style="display: flex;height: 30px;line-height: 30px;">
<div style="display: inline-block;width: 100px">
<span>文章: </span>
<span>{{.Blog.User.BlogCount}}</span>
<span>{{.User.BlogCount}}</span>
</div>
<div style="display: inline-block;flex: 1">
<span>访问: </span>
<span>{{.Blog.User.BlogBrowes}}</span>
<span>{{.User.BlogBrowes}}</span>
</div>
</div>
<div style="display: flex;height: 30px;line-height: 30px;">
<div style="display: inline-block;width: 100px">
<span>评论: </span>
<span>{{.Blog.User.BlogComment}}</span>
<span>{{.User.BlogComment}}</span>
</div>
<div style="display: inline-block;flex: 1">
<span>喜欢: </span>
<span>{{.Blog.User.BlogLike}}</span>
<span>{{.User.BlogLike}}</span>
</div>
</div>
<hr style="height:1px;border:none;border-top:1px solid #EEE;margin: 6px;"/>
</div>
<div class="me-blog-root">
<div class="me-blog-list">
<p>vue webpack方式调用amap高德地图及其UI组件</p>
{{range .Page.List}}
<p><a href="/blog/{{.Id}}">{{.Title}}</a></p>
<div>
<em>发布时间:{{.Ctime.Format "2006/01/02"}}</em>
<em>浏览量:{{.Browses}}</em>
<span style="width: 35px;margin-left: 30px"><a href="">删除</a></span>
</div>
<hr style="height:1px;border:none;border-top:1px solid #EEE;margin: 6px;"/>
{{end}}
<div style="text-align: center">
<nav>
<div class="pagination pagination-lg">
<ul>
{{if .Page.FirstPage}}
{{else}}
<li class="prev">
<a href="/me/blog?num={{ .Page.PageNo | NAdd -1}}&flag={{.Flag}}">&laquo;</a>
</li>
{{end}}
<li class="active"><a href="javascript:void(0)">{{.Page.PageNo}}</a></li>
{{if .Page.LastPage}}
{{else}}
<li class="next">
<a href="/me/blog?num={{ .Page.PageNo | NAdd +1}}&flag={{.Flag}}">&raquo;</a>
</li>
{{end}}
</ul>
</div>
</nav>
</div>
</div>
{{template "footer"}}
</div>

Loading…
Cancel
Save