mirror of https://github.com/mindoc-org/mindoc.git
152 lines
3.5 KiB
Go
152 lines
3.5 KiB
Go
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)
|
|
} |