174 lines
4.0 KiB
Go
174 lines
4.0 KiB
Go
package http
|
||
|
||
import (
|
||
"io/ioutil"
|
||
"net/http"
|
||
"strconv"
|
||
|
||
usrmdl "go-common/app/service/main/usersuit/model"
|
||
"go-common/library/ecode"
|
||
"go-common/library/log"
|
||
bm "go-common/library/net/http/blademaster"
|
||
|
||
"github.com/pkg/errors"
|
||
)
|
||
|
||
func updateFace(c *bm.Context) {
|
||
var (
|
||
//ip = c.RemoteIP()
|
||
mid, ok = c.Get("mid")
|
||
)
|
||
defer c.Request.Form.Del("face") // 防止日志不出现
|
||
if !ok {
|
||
c.JSON(nil, ecode.NoLogin)
|
||
return
|
||
}
|
||
c.Request.ParseMultipartForm(32 << 20)
|
||
face, err := func() ([]byte, error) {
|
||
fs := c.Request.FormValue("face")
|
||
if fs != "" {
|
||
log.Info("Succeeded to parse face file from form value: mid: %d, length: %d", mid, len(fs))
|
||
return []byte(fs), nil
|
||
}
|
||
log.Warn("Failed to parse face file from form value, fallback to form file: mid: %d", mid)
|
||
f, _, err := c.Request.FormFile("face")
|
||
if err != nil {
|
||
return nil, errors.Wrapf(err, "parse face form file: mid: %d", mid)
|
||
}
|
||
defer f.Close()
|
||
data, err := ioutil.ReadAll(f)
|
||
if err != nil {
|
||
return nil, errors.Wrapf(err, "read face form file: mid: %d", mid)
|
||
}
|
||
if len(data) <= 0 {
|
||
return nil, errors.Wrapf(err, "form file data: mid: %d, length: %d", mid, len(data))
|
||
}
|
||
log.Info("Succeeded to parse file from form file: mid: %d, length: %d", mid, len(data))
|
||
return data, nil
|
||
}()
|
||
if err != nil {
|
||
log.Error("Failed to parse face file: mid: %d: %+v", mid, err)
|
||
c.JSON(nil, ecode.RequestErr)
|
||
return
|
||
}
|
||
log.Info("Succeeded to parse face data: mid: %d, face-length: %d", mid, len(face))
|
||
if len(face) > 2*1024*1024 {
|
||
c.JSON(nil, ecode.UpdateFaceSize)
|
||
return
|
||
}
|
||
ftype := http.DetectContentType(face)
|
||
if ftype != "image/jpeg" && ftype != "image/png" && ftype != "image/jp2" {
|
||
c.JSON(nil, ecode.UpdateFaceFormat)
|
||
return
|
||
}
|
||
c.JSON(memberSvc.UpdateFace(c, mid.(int64), face, ftype))
|
||
}
|
||
|
||
func updateSex(c *bm.Context) {
|
||
var (
|
||
err error
|
||
sex int64
|
||
//ip = c.RemoteIP()
|
||
params = c.Request.Form
|
||
mid, ok = c.Get("mid")
|
||
)
|
||
if !ok {
|
||
c.JSON(nil, ecode.NoLogin)
|
||
return
|
||
}
|
||
if sex, err = strconv.ParseInt(params.Get("sex"), 10, 64); err != nil {
|
||
c.JSON(nil, ecode.RequestErr)
|
||
return
|
||
}
|
||
c.JSON(nil, memberSvc.UpdateSex(c, mid.(int64), sex))
|
||
}
|
||
|
||
func updateSign(c *bm.Context) {
|
||
var (
|
||
//ip = c.RemoteIP()
|
||
params = c.Request.Form
|
||
mid, ok = c.Get("mid")
|
||
)
|
||
if !ok {
|
||
c.JSON(nil, ecode.NoLogin)
|
||
return
|
||
}
|
||
sign := params.Get("user_sign")
|
||
c.JSON(nil, memberSvc.UpdateSign(c, mid.(int64), sign))
|
||
}
|
||
|
||
func updateBirthday(c *bm.Context) {
|
||
var (
|
||
birthday string
|
||
//ip = c.RemoteIP()
|
||
params = c.Request.Form
|
||
mid, ok = c.Get("mid")
|
||
)
|
||
if !ok {
|
||
c.JSON(nil, ecode.NoLogin)
|
||
return
|
||
}
|
||
if birthday = params.Get("birthday"); len(birthday) == 0 {
|
||
c.JSON(nil, ecode.RequestErr)
|
||
return
|
||
}
|
||
c.JSON(nil, memberSvc.UpdateBirthday(c, mid.(int64), birthday))
|
||
}
|
||
|
||
func updateUname(c *bm.Context) {
|
||
var (
|
||
uname string
|
||
//ip = c.RemoteIP()
|
||
params = c.Request.Form
|
||
mid, ok = c.Get("mid")
|
||
)
|
||
if !ok {
|
||
c.JSON(nil, ecode.NoLogin)
|
||
return
|
||
}
|
||
if uname = params.Get("uname"); len(uname) == 0 {
|
||
c.JSON(nil, ecode.RequestErr)
|
||
return
|
||
}
|
||
c.JSON(nil, memberSvc.UpdateName(c, mid.(int64), uname, params.Get("appkey")))
|
||
}
|
||
|
||
func nickFree(c *bm.Context) {
|
||
var (
|
||
mid, ok = c.Get("mid")
|
||
//ip = c.RemoteIP()
|
||
)
|
||
if !ok {
|
||
c.JSON(nil, ecode.NoLogin)
|
||
return
|
||
}
|
||
c.JSON(memberSvc.NickFree(c, mid.(int64)))
|
||
}
|
||
|
||
func pendantEquip(c *bm.Context) {
|
||
var (
|
||
mid, ok = c.Get("mid")
|
||
params = c.Request.Form
|
||
err error
|
||
pid int64
|
||
status int64
|
||
source int64
|
||
)
|
||
if !ok {
|
||
c.JSON(nil, ecode.NoLogin)
|
||
return
|
||
}
|
||
if pid, err = strconv.ParseInt(params.Get("pid"), 10, 64); err != nil {
|
||
c.JSON(nil, ecode.RequestErr)
|
||
return
|
||
}
|
||
if status, err = strconv.ParseInt(params.Get("status"), 10, 64); err != nil || (status != usrmdl.PendantPutOn && status != usrmdl.PendantPickOff) {
|
||
c.JSON(nil, ecode.RequestErr)
|
||
return
|
||
}
|
||
// source 挂件来源 可选, 默认0, 0未知 1 背包挂件 2大会员挂件
|
||
source = usrmdl.ParseSource(params.Get("source"))
|
||
|
||
c.JSON(nil, usSvc.Equip(c, mid.(int64), pid, int8(status), source))
|
||
}
|