From bec7f51084cb50f0d2a17b78a91744278398f379 Mon Sep 17 00:00:00 2001 From: yirenyishi Date: Sun, 25 Nov 2018 23:35:35 +0800 Subject: [PATCH] =?UTF-8?q?=E4=B8=AA=E4=BA=BA=E8=B5=84=E6=96=99?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- controllers/BlogController.go | 8 +-- controllers/PageController.go | 18 +++++ controllers/UserController.go | 87 +++++++++++++++++------ data/beeblog.db | Bin 86016 -> 86016 bytes models/DataInit.go | 22 +++--- models/Like.go | 2 +- models/User.go | 12 ++-- routers/UserRouter.go | 3 + service/BlogService.go | 7 ++ service/LikeService.go | 44 ++++++++++-- service/UserService.go | 4 ++ static/css/common.css | 5 ++ static/css/me.css | 6 ++ views/blog.html | 6 ++ views/iframe/user.html | 125 ++++++++++++++++++++++++++++++++++ views/uinfo.html | 88 +++++++++++++++--------- views/ulike.html | 37 ++++++++-- 17 files changed, 391 insertions(+), 83 deletions(-) create mode 100644 views/iframe/user.html diff --git a/controllers/BlogController.go b/controllers/BlogController.go index 789f5d2..d217a7d 100644 --- a/controllers/BlogController.go +++ b/controllers/BlogController.go @@ -5,7 +5,6 @@ import ( "beeblog/service" "github.com/astaxie/beego" "strconv" - "fmt" ) type BlogController struct { @@ -44,8 +43,7 @@ func (this *BlogController) Get() { this.Redirect("/500", 302) return } - uid := this.GetSession("userid") - if uid != nil { + if uid := this.GetSession("userid"); uid != nil { if blog.UserId == uid.(int64) { this.Data["IsAuthor"] = true } @@ -53,6 +51,9 @@ func (this *BlogController) Get() { this.Data["IsLike"] = flag } } + if blogs, err := service.TopBlogByUser(blog.UserId); err == nil { + this.Data["Top"] = blogs + } this.Data["Blog"] = blog this.Data["NickName"] = this.GetSession("nickname") this.Data["IsLogin"] = this.GetSession("nickname") != nil @@ -126,7 +127,6 @@ func (this *BlogController) BlogsPage() { if cat <= 0 { cat = -1 } - fmt.Println("nelson page", num, size, cat) pages, err := service.FindBlogs(num, size, cat, flag) if err != nil { this.Redirect("/500", 302) diff --git a/controllers/PageController.go b/controllers/PageController.go index 0e444fc..4c0dfae 100644 --- a/controllers/PageController.go +++ b/controllers/PageController.go @@ -3,6 +3,7 @@ package controllers import ( "github.com/astaxie/beego" "beeblog/service" + "beeblog/models" ) type PageController struct { @@ -20,6 +21,23 @@ func (this *PageController) Blog() { this.TplName = "iframe/blog.html" } +// @router /iframe/user [get] +func (this *PageController) IframeUser() { + uid := this.GetSession("userid") + if uid == nil { + this.Data["IsLogin"] = false + } else { + this.Data["IsLogin"] = true + if user, err := service.GetUser(uid.(int64)); err == nil { + this.Data["User"] = user + } else { + this.Data["User"] = &models.User{Id: uid.(int64)} + } + } + this.TplName = "iframe/user.html" + return +} + // @router /iframe/note [get] func (this *PageController) IframeNote() { this.TplName = "iframe/note.html" diff --git a/controllers/UserController.go b/controllers/UserController.go index 0eda188..72062a5 100644 --- a/controllers/UserController.go +++ b/controllers/UserController.go @@ -36,17 +36,13 @@ func (this *UserController) PersonBlog() { flag, _ := this.GetInt("flag") page, err := service.MeBlogs(num, size, flag, uid.(int64)) if err != nil { - if uid == nil { - this.Redirect("/500", 302) - return - } + this.Redirect("/500", 302) + return } user, uerr := service.GetUser(uid.(int64)) if uerr != nil { - if uid == nil { - this.Redirect("/500", 302) - return - } + this.Redirect("/500", 302) + return } this.Data["NickName"] = this.GetSession("nickname") this.Data["IsLogin"] = this.GetSession("nickname") != nil @@ -75,10 +71,8 @@ func (this *UserController) PersonNote() { notColl = make([]*models.NoteColl, 0) } if err != nil { - if uid == nil { - this.Redirect("/500", 302) - return - } + this.Redirect("/500", 302) + return } user, uerr := service.GetUser(uid.(int64)) if uerr != nil { @@ -106,13 +100,10 @@ func (this *UserController) PersonLike() { if num <= 0 { num = 1 } - flag, _ := this.GetInt("flag") - page, err := service.MeBlogs(num, size, flag, uid.(int64)) + page, err := service.MeLikes(num, size, uid.(int64)) if err != nil { - if uid == nil { - this.Redirect("/500", 302) - return - } + this.Redirect("/500", 302) + return } user, uerr := service.GetUser(uid.(int64)) if uerr != nil { @@ -121,11 +112,65 @@ func (this *UserController) PersonLike() { return } } + this.Data["NickName"] = this.GetSession("nickname") + this.Data["IsLogin"] = this.GetSession("nickname") != nil this.Data["Page"] = page - this.Data["IsMeBlog"] = true - this.Data["Flag"] = 0 + this.Data["IsMeLike"] = true this.Data["User"] = user - this.TplName = "ublogs.html" + this.TplName = "ulike.html" +} + +func (this *UserController) PersonInfo() { + uid := this.GetSession("userid") + if uid == nil { + this.Redirect("/login", 302) + return + } + user, err := service.GetUser(uid.(int64)) + if err != nil { + this.Redirect("/500", 302) + return + } + this.Data["NickName"] = this.GetSession("nickname") + this.Data["IsLogin"] = this.GetSession("nickname") != nil + this.Data["IsMeInfo"] = true + this.Data["User"] = user + this.TplName = "uinfo.html" +} + +func (this *UserController) Edit() { + uid := this.GetSession("userid") + if uid == nil { + models.ReurnError(401, "") + this.ServeJSON() + return + } + user, err := service.GetUser(uid.(int64)) + if err != nil { + this.Data["json"] = models.ReurnError(500, "") + this.ServeJSON() + return + } + birthday := this.GetString("birthday") + if birthday != "" { + birthday += " 00:00:00" + if localTime, errt := time.ParseInLocation("2006-01-02 15:04:05", birthday, time.Local); errt == nil { + user.Birthday = localTime + } + } + user.NickName = this.GetString("nickName") + user.Email = this.GetString("email") + user.Mobile = this.GetString("mobile") + user.QQ = this.GetString("qqnum") + user.Sex, _ = this.GetInt("catory") + user.DescInfo = this.GetString("mdesc") + if _,err :=service.EditUser(user); err !=nil{ + this.Data["json"] = models.ReurnError(500, "") + }else{ + this.Data["json"] = models.ReurnSuccess("") + } + this.ServeJSON() + return } func (this *UserController) Login() { diff --git a/data/beeblog.db b/data/beeblog.db index 0d3623b8f53a76081f5211c580be4e39ebd760d3..fed87f6071d947e21e0bfcd974172bc82402d871 100644 GIT binary patch delta 442 zcmYjMF-sgl6rNdk-P_#Gjz>HaO(Unto#@@o?9A-WEXY-svezmEJohd|h{|DMC0;;; z2!R|^Xz4Eyaf<}}1J-E_qzN__ViBwo0%j5$-+SNp9=yl*_y)($;Mn=}qI3uVC>!_& zmcjGkJexiQjoMpO9Dt(bgW!AcA(->hLd*3=7n}jASib)=FO40*C;R=teO4~RkBj=C zc%;v*ulln+t}px*o%)Wx8`*(0@7vh5(Io8Wd&PBVRk8kqss;2L6wE)ME9jeTIvoyc z`K#czG;)G}81*BpPnsTd^_S)>^zy6b%$U6l@UmH@c=!DbdP)w0HAu8ddp=3;mqz}huZM^D?8hcJY yetOd?T_ZC?di`d?FCS})B&12G8WB@*$n#(KZu>6;7iu5? delta 399 zcmX|-%}T>S6oqHf)+FX<8l*~bQ(C2#Xq%Z#5>pVLK-(7(+9u6H`~w%F8!L#QASko2 z%i`WH%tDunZy!=-WwT;u1nb|C`g znN>~c07b|G{Z&8KO}Qp5it@-psv~5zFD)M%=?ge|6e{9GCIe4RcA|7yUwCBqs>PPo z5%!R{VuPd{?Y~ByNLBGGEA}CN(qYb zdu1w}+yiKjqb;<5kbq+#n_XJcfW}ACYEY1*jrQ91=Em>!9qRe*$PJsJ*K7qXOhXzF zyG5LEo)U}+4J^-%h~>2Wh}v%CQ*L434+7#j?IyAC{2az}gyb--5>mxpnQ%;8$FxMN zYFYZ&`*j^PVEP8--~e6U4J*cz#vcdL0H9~I^0T~d9kIr6C(r$o3~ST>!8C_m9#bWL O*|!~n?f7#j*1rLS$7K5e diff --git a/models/DataInit.go b/models/DataInit.go index 83ea4fd..5cdcef1 100644 --- a/models/DataInit.go +++ b/models/DataInit.go @@ -1,11 +1,12 @@ package models import ( - "github.com/Unknwon/com" - "os" - "path" + //"github.com/Unknwon/com" + //"os" + //"path" "github.com/astaxie/beego/orm" - _ "github.com/mattn/go-sqlite3" + //_ "github.com/mattn/go-sqlite3" + _ "github.com/go-sql-driver/mysql" ) const( @@ -14,12 +15,13 @@ const( ) func RegistDB() { - if !com.IsExist(_DB_NAME){ - os.MkdirAll(path.Dir(_DB_NAME),os.ModePerm) - os.Create(_DB_NAME) - } + //if !com.IsExist(_DB_NAME){ + // os.MkdirAll(path.Dir(_DB_NAME),os.ModePerm) + // os.Create(_DB_NAME) + //} //orm.RegisterModel(new(Attachment),new(Topic)) orm.RegisterModel(new(Attachment),new(User),new(Blog),new(NLabel),new(Note),new(NoteColl),new(Category),new(Like)) - orm.RegisterDriver(_SQLITE3_DRIVER,orm.DRSqlite) - orm.RegisterDataBase("default",_SQLITE3_DRIVER,_DB_NAME,10) + //orm.RegisterDriver(_SQLITE3_DRIVER,orm.DRSqlite) + //orm.RegisterDataBase("default",_SQLITE3_DRIVER,_DB_NAME,10) + orm.RegisterDataBase("default", "mysql", "root:booszy@tcp(127.0.0.1:3306)/beeblog?charset=utf8&loc=Local", 30) } \ No newline at end of file diff --git a/models/Like.go b/models/Like.go index 21934cf..714fb11 100644 --- a/models/Like.go +++ b/models/Like.go @@ -8,5 +8,5 @@ type Like struct { BlogId int64 Ltime time.Time `orm:"auto_now_add;type(datetime)"` - Note Note `orm:"-"` + Blog *Blog `orm:"-"` } diff --git a/models/User.go b/models/User.go index 735d11c..50607df 100644 --- a/models/User.go +++ b/models/User.go @@ -9,17 +9,17 @@ type User struct { UserPwd string Salt string Headimg string - Birthday time.Time `orm:"null;type(date)"` + Birthday time.Time `orm:"auto_now_add;type(datetime)"` Email string Mobile string QQ string HomeUrl string - Sex int + Sex int `orm:"default(1)"` DescInfo string Ctime time.Time `orm:"auto_now_add;type(datetime)"` - BlogCount int - BlogBrowes int - BlogComment int - BlogLike int + BlogCount int `orm:"default(0)"` + BlogBrowes int `orm:"default(0)"` + BlogComment int `orm:"default(0)"` + BlogLike int `orm:"default(0)"` } diff --git a/routers/UserRouter.go b/routers/UserRouter.go index f114d08..8b8d115 100644 --- a/routers/UserRouter.go +++ b/routers/UserRouter.go @@ -11,10 +11,13 @@ func init() { beego.Router("/login", &controllers.UserController{}, "post:Login") beego.Router("/regist", &controllers.UserController{}, "post:Regist") beego.Router("/regist", &controllers.UserController{}, "get:RegistPage") + beego.Router("/user/edit", &controllers.UserController{}, "post:Edit") beego.Router("/me/blog", &controllers.UserController{}, "get:PersonBlog") beego.Router("/me/note", &controllers.UserController{}, "get:PersonNote") + beego.Router("/me/like", &controllers.UserController{}, "get:PersonLike") + beego.Router("/me/info", &controllers.UserController{}, "get:PersonInfo") } diff --git a/service/BlogService.go b/service/BlogService.go index 4c1b799..630a059 100644 --- a/service/BlogService.go +++ b/service/BlogService.go @@ -41,6 +41,13 @@ func EditBlogBrows(id int64) { } } +func TopBlogByUser(uid int64) ([]*models.Blog, error) { + o := orm.NewOrm() + var blogs []*models.Blog + o.QueryTable(models.Blog{}).Filter("UserId",uid).Limit(12,0).OrderBy("-Browses").All(&blogs) + return blogs, nil +} + func GetBlog(id int64) (*models.Blog, error) { o := orm.NewOrm() blog := &models.Blog{Id: id} diff --git a/service/LikeService.go b/service/LikeService.go index 900e3ae..1a66fc7 100644 --- a/service/LikeService.go +++ b/service/LikeService.go @@ -4,26 +4,62 @@ import ( "beeblog/models" "github.com/astaxie/beego/orm" "fmt" + "beeblog/utils" ) func SaveLike(like *models.Like) (int64, error) { return orm.NewOrm().Insert(like) } func DelLike(like *models.Like) (int64, error) { - return orm.NewOrm().QueryTable(models.Like{}).Filter("BlogId",like.BlogId).Filter("UserId", like.UserId).Delete() + return orm.NewOrm().QueryTable(models.Like{}).Filter("BlogId", like.BlogId).Filter("UserId", like.UserId).Delete() } func IsLike(bid int64, uid int64) (bool, error) { totalCount, err := orm.NewOrm().QueryTable(&models.Like{}).Filter("BlogId", bid).Filter("UserId", uid).Count() if err == nil { - fmt.Println(totalCount,"like count") + fmt.Println(totalCount, "like count") if totalCount > 0 { return true, nil } else { return false, nil } - }else{ + } else { fmt.Println(err) - return false,err + return false, err } } + +func MeLikes(num int, size int, uid int64) (*utils.Page, error) { + page, err := countLike(num, size, uid) + if err != nil { + return nil, err + } + var likes []*models.Like + o := orm.NewOrm() + qs := o.QueryTable(&models.Like{}) + qs = qs.Filter("UserId", uid) + qs = qs.Limit(size, (page.PageNo-1)*size) + if _, err = qs.All(&likes); err != nil { + return nil, err + } + if len(likes) > 0 { + for i := 0; i < len(likes); i++ { + blog := &models.Blog{Id: likes[i].BlogId} + if err := o.Read(blog); err == nil { + likes[i].Blog = blog + } + } + } + page.List = likes + return page, nil +} + +func countLike(num int, size int, uid int64) (*utils.Page, error) { + o := orm.NewOrm() + qs := o.QueryTable(&models.Like{}) + totalCount, err := qs.Filter("UserId", uid).Count() + if err != nil { + return nil, err + } + return utils.PageUtil(totalCount, num, size), nil +} diff --git a/service/UserService.go b/service/UserService.go index 3b1a175..7ccd3bf 100644 --- a/service/UserService.go +++ b/service/UserService.go @@ -62,3 +62,7 @@ func CountLike(uid int64) { o.Raw("UPDATE `user` SET `blog_like` = (select count(id) from like where user_id = ?1) WHERE `id` = ?2 ", uid, uid).QueryRow(&browses) return } + +func EditUser(user *models.User) (int64, error){ + return orm.NewOrm().Update(user) +} diff --git a/static/css/common.css b/static/css/common.css index b8929bf..d599c28 100644 --- a/static/css/common.css +++ b/static/css/common.css @@ -13,6 +13,11 @@ body { margin-top: 2px; } +.img-circle-large{ + width: 110px; + height: 110px; +} + .root-container { position: absolute; height: 100%; diff --git a/static/css/me.css b/static/css/me.css index 7078d7b..2cc2b68 100644 --- a/static/css/me.css +++ b/static/css/me.css @@ -64,4 +64,10 @@ width: 100%; height: 110px; padding: 0 4%; +} +.info-header{ + flex: 1; +} +.info-header span{ + margin-right: 6px; } \ No newline at end of file diff --git a/views/blog.html b/views/blog.html index 1c54b80..e3d5deb 100644 --- a/views/blog.html +++ b/views/blog.html @@ -32,6 +32,12 @@
+ + {{range .Top}} + + {{end}}

{{.Blog.Title}}

diff --git a/views/iframe/user.html b/views/iframe/user.html new file mode 100644 index 0000000..f26b72f --- /dev/null +++ b/views/iframe/user.html @@ -0,0 +1,125 @@ + + + + + + + + + +{{/**/}} + + + 首页 - 个人随笔 + + + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+ +
+ + + \ No newline at end of file diff --git a/views/uinfo.html b/views/uinfo.html index b8c2cb8..5f4f3bb 100644 --- a/views/uinfo.html +++ b/views/uinfo.html @@ -6,44 +6,70 @@
{{template "nav" .}} {{template "memenu" .}} -
- {{range .Page.List}} -

{{.Title}}

-
- 发布时间:{{.Ctime.Format "2006/01/02"}} - 浏览量:{{.Browses}} - 删除 - 编辑 -
-
- {{end}} -
- +
+
+
+

昵称 :{{.User.NickName}}

+

修改资料

+
+

生日 :{{.User.Birthday.Format "2006-01-02"}}

+

邮箱 :{{.User.Email}}

+

手机 :{{.User.Mobile}}

+

Q Q :{{.User.QQ}}

+ {{if eq 0 .User.Sex}} +

性别 :女

+ {{else}} +

性别 :男

+ {{end}} +

简介 :{{.User.DescInfo}}

+
+
- {{template "footer"}} +
+ \ No newline at end of file diff --git a/views/ulike.html b/views/ulike.html index b8c2cb8..6ef8a2b 100644 --- a/views/ulike.html +++ b/views/ulike.html @@ -10,14 +10,16 @@
{{range .Page.List}} -

{{.Title}}

- 发布时间:{{.Ctime.Format "2006/01/02"}} - 浏览量:{{.Browses}} - 删除 - 编辑 +

{{.Blog.Title}}

+
+ 收藏时间:{{.Ltime.Format "2006/01/02"}} + 浏览量:{{.Blog.Browses}} + 删除 +
+
-
{{end}}
+ \ No newline at end of file