| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152 | 
							- package controllers
 
- import (
 
- 	"fmt"
 
- 	"os"
 
- 	"strings"
 
- 	"path/filepath"
 
- 	"strconv"
 
- 	"time"
 
- 	"github.com/astaxie/beego/logs"
 
- 	"github.com/lifei6671/godoc/models"
 
- 	"github.com/lifei6671/godoc/utils"
 
- 	"github.com/lifei6671/godoc/graphics"
 
- )
 
- type SettingController struct {
 
- 	BaseController
 
- }
 
- func (c *SettingController) Index()  {
 
- 	c.TplName = "setting/index.tpl"
 
- 	if c.Ctx.Input.IsPost() {
 
- 		email := strings.TrimSpace(c.GetString("email", ""))
 
- 		phone := strings.TrimSpace(c.GetString("phone"))
 
- 		description := strings.TrimSpace(c.GetString("description"))
 
- 		if email == "" {
 
- 			c.JsonResult(601, "邮箱不能为空")
 
- 		}
 
- 		member := c.Member
 
- 		member.Email = email
 
- 		member.Phone = phone
 
- 		member.Description = description
 
- 		if err := member.Update(); err != nil {
 
- 			c.JsonResult(602, err.Error())
 
- 		}
 
- 		c.SetMember(*member)
 
- 		c.JsonResult(0, "ok")
 
- 	}
 
- }
 
- func (c *SettingController) Password()  {
 
- 	c.TplName = "setting/password.tpl"
 
- 	if c.Ctx.Input.IsPost() {
 
- 		password1 := c.GetString("password1")
 
- 		password2 := c.GetString("password2")
 
- 		password3 := c.GetString("password3")
 
- 		if password1 == "" {
 
- 			c.JsonResult(6003,"原密码不能为空")
 
- 		}
 
- 		if password2 == "" {
 
- 			c.JsonResult(6004,"新密码不能为空")
 
- 		}
 
- 		if count := strings.Count(password2,""); count < 6 || count > 18 {
 
- 			c.JsonResult(6009,"密码必须在6-18字之间")
 
- 		}
 
- 		if password2 != password3 {
 
- 			c.JsonResult(6003,"确认密码不正确")
 
- 		}
 
- 		if ok,_ := utils.PasswordVerify(c.Member.Password,password1) ; !ok {
 
- 			c.JsonResult(6005,"原始密码不正确")
 
- 		}
 
- 		if password1 == password2 {
 
- 			c.JsonResult(6006,"新密码不能和原始密码相同")
 
- 		}
 
- 		pwd,err := utils.PasswordHash(password2)
 
- 		if err != nil {
 
- 			c.JsonResult(6007,"密码加密失败")
 
- 		}
 
- 		c.Member.Password = pwd
 
- 		if err := c.Member.Update();err != nil {
 
- 			c.JsonResult(6008,err.Error())
 
- 		}
 
- 		c.JsonResult(0,"ok")
 
- 	}
 
- }
 
- // Upload 上传图片
 
- func (c *SettingController) Upload() {
 
- 	file,moreFile,err := c.GetFile("image-file")
 
- 	defer file.Close()
 
- 	if err != nil {
 
- 		logs.Error("",err.Error())
 
- 		c.JsonResult(500,"读取文件异常")
 
- 	}
 
- 	ext := filepath.Ext(moreFile.Filename)
 
- 	if !strings.EqualFold(ext,".png") && !strings.EqualFold(ext,".jpg") && !strings.EqualFold(ext,".gif") && !strings.EqualFold(ext,".jpeg")  {
 
- 		c.JsonResult(500,"不支持的图片格式")
 
- 	}
 
- 	x1 ,_ := strconv.ParseFloat(c.GetString("x"),10)
 
- 	y1 ,_ := strconv.ParseFloat(c.GetString("y"),10)
 
- 	w1 ,_ := strconv.ParseFloat(c.GetString("width"),10)
 
- 	h1 ,_ := strconv.ParseFloat(c.GetString("height"),10)
 
- 	x := int(x1)
 
- 	y := int(y1)
 
- 	width := int(w1)
 
- 	height := int(h1)
 
- 	fmt.Println(x,x1,y,y1)
 
- 	fileName := "avatar_" +  strconv.FormatInt(time.Now().UnixNano(), 16)
 
- 	filePath := "uploads/" + time.Now().Format("200601") + "/" + fileName + ext
 
- 	path := filepath.Dir(filePath)
 
- 	os.MkdirAll(path, os.ModePerm)
 
- 	err = c.SaveToFile("image-file",filePath)
 
- 	if err != nil {
 
- 		logs.Error("",err)
 
- 		c.JsonResult(500,"图片保存失败")
 
- 	}
 
- 	//剪切图片
 
- 	subImg,err := graphics.ImageCopyFromFile(filePath,x,y,width,height)
 
- 	if err != nil {
 
- 		logs.Error("ImageCopyFromFile => ",err)
 
- 		c.JsonResult(6001,"头像剪切失败")
 
- 	}
 
- 	err = graphics.SaveImage(filePath,subImg)
 
- 	if err != nil {
 
- 		logs.Error("保存文件失败 => ",err.Error())
 
- 		c.JsonResult(500,"保存文件失败")
 
- 	}
 
- 	url := "/" + filePath
 
- 	if member,err := models.NewMember().Find(c.Member.MemberId);err == nil {
 
- 		member.Avatar = url
 
- 		member.Update()
 
- 		c.SetMember(*member)
 
- 	}
 
- 	c.JsonResult(0,"ok",url)
 
- }
 
 
  |