mirror of
https://github.com/mindoc-org/mindoc.git
synced 2025-09-20 19:07:56 +08:00
1、实现压缩包的Markdown文件导入
2、重命名文件
This commit is contained in:
171
controllers/SettingController.go
Normal file
171
controllers/SettingController.go
Normal file
@@ -0,0 +1,171 @@
|
||||
package controllers
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"os"
|
||||
"path/filepath"
|
||||
"strconv"
|
||||
"strings"
|
||||
"time"
|
||||
|
||||
"github.com/astaxie/beego/logs"
|
||||
"github.com/lifei6671/mindoc/conf"
|
||||
"github.com/lifei6671/mindoc/graphics"
|
||||
"github.com/lifei6671/mindoc/models"
|
||||
"github.com/lifei6671/mindoc/utils"
|
||||
)
|
||||
|
||||
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
|
||||
member.RealName = strings.TrimSpace(c.GetString("real_name",""))
|
||||
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() {
|
||||
if c.Member.AuthMethod == conf.AuthMethodLDAP {
|
||||
c.JsonResult(6009, "当前用户不支持修改密码")
|
||||
}
|
||||
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 := filepath.Join(conf.WorkingDirectory, "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, "头像剪切失败")
|
||||
}
|
||||
os.Remove(filePath)
|
||||
|
||||
filePath = filepath.Join(conf.WorkingDirectory, "uploads", time.Now().Format("200601"), fileName+"_small"+ext)
|
||||
|
||||
err = graphics.ImageResizeSaveFile(subImg, 120, 120, filePath)
|
||||
//err = graphics.SaveImage(filePath,subImg)
|
||||
|
||||
if err != nil {
|
||||
logs.Error("保存文件失败 => ", err.Error())
|
||||
c.JsonResult(500, "保存文件失败")
|
||||
}
|
||||
|
||||
url := "/" + strings.Replace(strings.TrimPrefix(filePath, conf.WorkingDirectory), "\\", "/", -1)
|
||||
if strings.HasPrefix(url, "//") {
|
||||
url = string(url[1:])
|
||||
}
|
||||
|
||||
if member, err := models.NewMember().Find(c.Member.MemberId); err == nil {
|
||||
avater := member.Avatar
|
||||
|
||||
member.Avatar = url
|
||||
err := member.Update()
|
||||
if err == nil {
|
||||
if strings.HasPrefix(avater, "/uploads/") {
|
||||
os.Remove(filepath.Join(conf.WorkingDirectory, avater))
|
||||
}
|
||||
c.SetMember(*member)
|
||||
} else {
|
||||
c.JsonResult(60001, "保存头像失败")
|
||||
}
|
||||
}
|
||||
|
||||
c.JsonResult(0, "ok", url)
|
||||
}
|
Reference in New Issue
Block a user