No puede seleccionar más de 25 temas
Los temas deben comenzar con una letra o número, pueden incluir guiones ('-') y pueden tener hasta 35 caracteres de largo.
293 líneas
6.8 KiB
293 líneas
6.8 KiB
package controllers
|
|
|
|
import (
|
|
"github.com/astaxie/beego"
|
|
"beeblog/service"
|
|
"beeblog/models"
|
|
"strings"
|
|
"crypto/md5"
|
|
"time"
|
|
"strconv"
|
|
"encoding/hex"
|
|
)
|
|
|
|
type UserController struct {
|
|
beego.Controller
|
|
}
|
|
|
|
func (u *UserController) LoginPage() {
|
|
u.TplName = "login.html"
|
|
}
|
|
func (u *UserController) RegistPage() {
|
|
u.TplName = "regist.html"
|
|
}
|
|
|
|
func (this *UserController) UserInfo() {
|
|
idStr := this.Ctx.Input.Param(":id")
|
|
id, _ := strconv.ParseInt(idStr, 10, 64)
|
|
user, err := service.GetUser(id)
|
|
if err != nil {
|
|
this.Redirect("/500", 302)
|
|
return
|
|
}
|
|
size := 15
|
|
num, _ := this.GetInt("num")
|
|
if num <= 0 {
|
|
num = 1
|
|
}
|
|
flag, _ := this.GetInt("flag")
|
|
if page, err := service.MeBlogs(num, size, flag, id); err == nil {
|
|
this.Data["Page"] = page
|
|
}
|
|
this.Data["User"] = user
|
|
this.TplName = "user.html"
|
|
return
|
|
}
|
|
|
|
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 {
|
|
this.Redirect("/500", 302)
|
|
return
|
|
}
|
|
user, uerr := service.GetUser(uid.(int64))
|
|
if uerr != nil {
|
|
this.Redirect("/500", 302)
|
|
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["User"] = user
|
|
this.TplName = "ublogs.html"
|
|
}
|
|
|
|
func (this *UserController) PersonNote() {
|
|
uid := this.GetSession("userid")
|
|
if uid == nil {
|
|
this.Redirect("/login", 302)
|
|
return
|
|
}
|
|
notColl, err := service.GetNoteColl(uid.(int64))
|
|
if err == nil {
|
|
if len(notColl) > 0 {
|
|
for i := 0; i < len(notColl); i++ {
|
|
count, _ := service.CountNote(notColl[i].Id)
|
|
notColl[i].Count = count
|
|
}
|
|
}
|
|
} else {
|
|
notColl = make([]*models.NoteColl, 0)
|
|
}
|
|
if err != 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["NickName"] = this.GetSession("nickname")
|
|
this.Data["IsLogin"] = this.GetSession("nickname") != nil
|
|
this.Data["Note"] = notColl
|
|
this.Data["IsMeNote"] = true
|
|
this.Data["User"] = user
|
|
this.TplName = "unote.html"
|
|
}
|
|
|
|
func (this *UserController) PersonLike() {
|
|
uid := this.GetSession("userid")
|
|
if uid == nil {
|
|
this.Redirect("/login", 302)
|
|
return
|
|
}
|
|
size := 15
|
|
num, _ := this.GetInt("num")
|
|
if num <= 0 {
|
|
num = 1
|
|
}
|
|
page, err := service.MeLikes(num, size, uid.(int64))
|
|
if err != 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["NickName"] = this.GetSession("nickname")
|
|
this.Data["IsLogin"] = this.GetSession("nickname") != nil
|
|
this.Data["Page"] = page
|
|
this.Data["IsMeLike"] = true
|
|
this.Data["User"] = user
|
|
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() {
|
|
username := this.GetString("username")
|
|
userpwd := this.GetString("userpwd")
|
|
if username == "" {
|
|
this.Data["json"] = models.ReurnError(1, "用户名为空")
|
|
this.ServeJSON()
|
|
return
|
|
}
|
|
if len(username) < 4 {
|
|
this.Data["json"] = models.ReurnError(1, "用户名最低4位")
|
|
this.ServeJSON()
|
|
return
|
|
}
|
|
if userpwd == "" {
|
|
this.Data["json"] = models.ReurnError(1, "密码为空")
|
|
this.ServeJSON()
|
|
return
|
|
}
|
|
if len(userpwd) < 6 {
|
|
this.Data["json"] = models.ReurnError(1, "密码最低6位")
|
|
this.ServeJSON()
|
|
return
|
|
}
|
|
user, error := service.FindByUserName(username)
|
|
if error == nil && user != nil {
|
|
h := md5.New()
|
|
h.Write([]byte(userpwd + user.Salt))
|
|
userpwd = hex.EncodeToString(h.Sum(nil))
|
|
if userpwd == user.UserPwd {
|
|
this.Data["json"] = models.ReurnSuccess("")
|
|
this.SetSession("userid", user.Id)
|
|
this.SetSession("nickname", user.NickName)
|
|
} else {
|
|
this.Data["json"] = models.ReurnError(1, "用户名或密码错误")
|
|
}
|
|
} else {
|
|
this.Data["json"] = models.ReurnError(1, "用户名不存在")
|
|
}
|
|
this.ServeJSON()
|
|
return
|
|
}
|
|
|
|
func (this *UserController) Regist() {
|
|
username := this.GetString("username")
|
|
userpwd := this.GetString("userpwd")
|
|
username = strings.Replace(username, " ", "", -1)
|
|
userpwd = strings.Replace(userpwd, " ", "", -1)
|
|
if username == "" {
|
|
this.Data["json"] = models.ReurnError(1, "用户名为空")
|
|
this.ServeJSON()
|
|
return
|
|
}
|
|
if len(username) < 4 {
|
|
this.Data["json"] = models.ReurnError(1, "用户名最低4位")
|
|
this.ServeJSON()
|
|
return
|
|
}
|
|
if userpwd == "" {
|
|
this.Data["json"] = models.ReurnError(1, "密码为空")
|
|
this.ServeJSON()
|
|
return
|
|
}
|
|
if len(userpwd) < 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.ServeJSON()
|
|
return
|
|
}
|
|
h := md5.New()
|
|
h.Write([]byte(strconv.FormatInt(time.Now().Unix(), 10) + beego.AppConfig.String("host")))
|
|
salt := hex.EncodeToString(h.Sum(nil))
|
|
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}
|
|
err := service.SaveUser(user)
|
|
if err == nil {
|
|
this.Data["json"] = models.ReurnSuccess("")
|
|
} else {
|
|
this.Data["json"] = models.ReurnError(1, "注册失败")
|
|
}
|
|
this.ServeJSON()
|
|
return
|
|
}
|
|
|
|
func (this *UserController) Logout() {
|
|
this.DelSession("userid")
|
|
this.DelSession("nickname")
|
|
this.Redirect("/", 302)
|
|
return
|
|
}
|
|
|