Browse Source

实现用户添加

lifei6671 8 years ago
parent
commit
a05a13dd4e
6 changed files with 236 additions and 5 deletions
  1. 1 1
      conf/app.conf
  2. 8 0
      conf/enumerate.go
  3. 177 3
      controllers/manager.go
  4. 29 1
      models/book.go
  5. 20 0
      models/member.go
  6. 1 0
      models/member_result.go

+ 1 - 1
conf/app.conf

@@ -12,7 +12,7 @@ base_url = https://hook.iminho.me
 timezone = Asia/Shanghai
 
 #数据库配置
-db_host=192.168.3.104
+db_host=127.0.0.1
 db_port=3306
 db_database=mindoc_db
 db_username=root

+ 8 - 0
conf/enumerate.go

@@ -6,6 +6,10 @@ import "github.com/astaxie/beego"
 // 登录用户的Session名
 const LoginSessionName = "LoginSessionName"
 
+const RegexpEmail  = `^(\w)+(\.\w+)*@(\w)+((\.\w+)+)$`
+
+const RegexpAccount = `^[a-zA-Z][a-zA-z0-9]{2,50}$`
+
 // app_key
 func GetAppKey()  (string) {
 	return beego.AppConfig.DefaultString("app_key","go-git-webhook")
@@ -13,4 +17,8 @@ func GetAppKey()  (string) {
 
 func GetDatabasePrefix() string  {
 	return beego.AppConfig.DefaultString("db_prefix","md_")
+}
+//获取默认头像
+func GetDefaultAvatar() string {
+	return beego.AppConfig.DefaultString("avatar","/static/images/headimgurl.jpg")
 }

+ 177 - 3
controllers/manager.go

@@ -1,5 +1,18 @@
 package controllers
 
+import (
+
+	"encoding/json"
+	"html/template"
+	"strings"
+	"regexp"
+
+	"github.com/lifei6671/godoc/conf"
+	"github.com/astaxie/beego/logs"
+	"github.com/lifei6671/godoc/utils"
+	"github.com/lifei6671/godoc/models"
+)
+
 type ManagerController struct {
 	BaseController
 }
@@ -8,6 +21,167 @@ func (p *ManagerController) Index() {
 	p.TplName = "manager/index.tpl"
 }
 
-func (p *ManagerController) Users()  {
-	p.TplName = "manager/users.tpl"
-}
+// 用户列表.
+func (c *ManagerController) Users()  {
+	c.Prepare()
+	c.TplName = "manager/users.tpl"
+
+	if c.Member.Role != 0 {
+		c.Abort("403")
+	}
+
+	pageIndex,_ := c.GetInt("page",0)
+
+	members,totalCount,err := models.NewMember().FindToPager(pageIndex,15)
+
+	if err != nil {
+		c.Data["ErrorMessage"] = err.Error()
+		return
+	}
+
+	html := utils.GetPagerHtml(c.Ctx.Request.RequestURI,pageIndex,10,totalCount)
+
+	c.Data["PageHtml"] = html
+	b,err := json.Marshal(members)
+
+	if err != nil {
+		c.Data["Result"] = template.JS("[]")
+	}else{
+		c.Data["Result"] = template.JS(string(b))
+	}
+}
+
+// 添加用户
+func (c *ManagerController) CreateMember() {
+	c.Prepare()
+	if c.Member.Role != 0{
+		c.Abort("403")
+	}
+
+	account := strings.TrimSpace(c.GetString("account"))
+	password1 := strings.TrimSpace(c.GetString("password1"))
+	password2 := strings.TrimSpace(c.GetString("password2"))
+	email := strings.TrimSpace(c.GetString("email"))
+	phone := strings.TrimSpace(c.GetString("phone"))
+	role,_ := c.GetInt("role",1)
+	status,_ := c.GetInt("status",0)
+
+	if ok,err := regexp.MatchString(conf.RegexpAccount,account); account == "" || !ok || err != nil {
+		c.JsonResult(6001,"账号只能由英文字母数字组成,且在3-50个字符")
+	}
+	if  l := strings.Count(password1,"") ; password1 == "" || l > 50 || l < 6{
+		c.JsonResult(6002,"密码必须在6-50个字符之间")
+	}
+	if password1 != password2 {
+		c.JsonResult(6003,"确认密码不正确")
+	}
+	if  ok,err := regexp.MatchString(conf.RegexpEmail,email); !ok || err != nil || email == "" {
+		c.JsonResult(6004,"邮箱不能为空")
+	}
+	if role != 0 && role != 1 {
+		role = 1
+	}
+	if status != 0 && status != 1 {
+		status = 0
+	}
+
+	member := models.NewMember()
+
+	if err := member.FindByAccount(account); err != nil {
+		c.JsonResult(6005,"账号已存在")
+	}
+
+	member.Account = account
+	member.Password = password1
+	member.Role = role
+	member.Avatar = conf.GetDefaultAvatar()
+	member.CreateAt = c.Member.MemberId
+	member.Email = email
+	if phone != "" {
+		member.Phone = phone
+	}
+
+	if err := member.Add(); err != nil {
+		c.JsonResult(6006,err.Error())
+	}
+
+	c.JsonResult(0,"ok",member)
+}
+
+//更新用户状态.
+func (c *ManagerController) UpdateMemberStatus()  {
+	c.Prepare()
+
+	if c.Member.Role != 0 {
+		c.Abort("403")
+	}
+
+	member_id,_ := c.GetInt("member_id",0)
+	status ,_ := c.GetInt("status",0)
+
+	if member_id <= 0 {
+		c.JsonResult(6001,"参数错误")
+	}
+	if status != 0 && status != 1 {
+		status = 0
+	}
+	member := models.NewMember()
+
+	if err := member.Find(member_id); err != nil {
+		c.JsonResult(6002,"用户不存在")
+	}
+	member.Status = status
+
+	if err := member.Update();err != nil {
+		logs.Error("",err)
+		c.JsonResult(6003,"用户状态设置失败")
+	}
+	c.JsonResult(0,"ok",member)
+}
+
+func (c *ManagerController) Books()  {
+	c.Prepare()
+	c.TplName = "manager/books.tpl"
+
+}
+
+func (c *ManagerController) DeleteBook()  {
+	c.Prepare()
+	if c.Member.Role != 0 {
+		c.Abort("403")
+	}
+}
+
+func (c *ManagerController) Comments()  {
+	c.Prepare()
+	if c.Member.Role != 0 {
+		c.Abort("403")
+	}
+}
+
+func (c *ManagerController) DeleteComment()  {
+	c.Prepare()
+	if c.Member.Role != 0 {
+		c.Abort("403")
+	}
+}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+

+ 29 - 1
models/book.go

@@ -137,4 +137,32 @@ func (m *Book) FindToPager(pageIndex, pageSize ,memberId int) (books []BookResul
 		}
 	}
 	return
-}
+}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+

+ 20 - 0
models/member.go

@@ -109,7 +109,27 @@ func (m *Member) FindByAccount (account string) error  {
 	return err
 }
 
+func (m *Member) FindToPager(pageIndex, pageSize int) ([]Member,int,error)  {
+	o := orm.NewOrm()
+
+	var members []Member
+
+	offset := (pageIndex - 1) * pageSize
+
+	totalCount,err := o.QueryTable(m.TableNameWithPrefix()).Count()
+
+	if err != nil {
+		return members,0,err
+	}
+
+	_,err = o.QueryTable(m.TableNameWithPrefix()).Offset(offset).Limit(pageSize).All(&members)
+
+	if err != nil {
+		return members,0,err
+	}
 
+	return members,totalCount,nil
+}
 
 
 

+ 1 - 0
models/member_result.go

@@ -58,3 +58,4 @@ func (m *MemberRelationshipResult) FindForUsersByBookId(book_id ,pageIndex, page
 
 
 
+