You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
282 lines
6.2 KiB
282 lines
6.2 KiB
package http |
|
|
|
import ( |
|
"encoding/json" |
|
"io/ioutil" |
|
"net/http" |
|
"strconv" |
|
|
|
"go-common/app/interface/main/videoup/model/archive" |
|
"go-common/library/ecode" |
|
"go-common/library/log" |
|
bm "go-common/library/net/http/blademaster" |
|
"go-common/library/time" |
|
) |
|
|
|
func appEdit(c *bm.Context) { |
|
var ( |
|
aid int64 |
|
ap = &archive.ArcParam{} |
|
cp = &archive.ArcParam{} |
|
err error |
|
) |
|
mobi := c.Request.Form.Get("mobi_app") |
|
build := c.Request.Form.Get("build") |
|
midI, _ := c.Get("mid") |
|
mid, ok := midI.(int64) |
|
if !ok || mid <= 0 { |
|
c.JSON(nil, ecode.RequestErr) |
|
return |
|
} |
|
bs, err := ioutil.ReadAll(c.Request.Body) |
|
if err != nil { |
|
c.JSON(nil, ecode.RequestErr) |
|
return |
|
} |
|
c.Request.Body.Close() |
|
if mobi == "iphone" && (build == "4470" || build == "4430") { |
|
err = iosUnmarshal(bs, ap) |
|
err = iosUnmarshal(bs, cp) |
|
} else { |
|
err = json.Unmarshal(bs, ap) |
|
err = json.Unmarshal(bs, cp) |
|
} |
|
if err != nil { |
|
c.JSON(nil, ecode.VideoupParamErr) |
|
return |
|
} |
|
aid = ap.Aid |
|
ap.Mid = mid |
|
// 老的只编辑基础信息, 不需要按照平台自动转换 |
|
ap.UpFrom = archive.UpFromAPP |
|
defer func() { |
|
cp.Aid = ap.Aid |
|
cp.Mid = ap.Mid |
|
cp.UpFrom = ap.UpFrom |
|
cp.IPv6 = ap.IPv6 |
|
build, buvid := getBuildInfo(c) |
|
vdpSvc.SendArchiveLog(aid, build, buvid, "edit", "app", cp, err) |
|
}() |
|
err = vdpSvc.AppEdit(c, ap, mid) |
|
if err != nil { |
|
c.JSON(nil, err) |
|
log.Error("editErr err(%+v)|ap(%+v)", err, ap) |
|
return |
|
} |
|
c.JSON(map[string]interface{}{ |
|
"aid": ap.Aid, |
|
}, nil) |
|
} |
|
|
|
func iosUnmarshal(bs []byte, ap *archive.ArcParam) (err error) { |
|
var apStr = struct { |
|
Aid string `json:"aid"` |
|
Copyright string `json:"copyright"` |
|
Cover string `json:"cover"` |
|
Title string `json:"title"` |
|
TypeID string `json:"tid"` |
|
Tag string `json:"tag"` |
|
Desc string `json:"desc"` |
|
MissionID string `json:"mission_id"` |
|
OpenElec string `json:"open_elec"` |
|
DTime string `json:"dtime"` |
|
}{} |
|
if err = json.Unmarshal(bs, &apStr); err != nil { |
|
return |
|
} |
|
aid, err := strconv.ParseInt(apStr.Aid, 10, 64) |
|
if err != nil { |
|
return |
|
} |
|
copyright, err := strconv.ParseInt(apStr.Copyright, 10, 8) |
|
if err != nil { |
|
return |
|
} |
|
typeID, err := strconv.ParseInt(apStr.TypeID, 10, 16) |
|
if err != nil { |
|
return |
|
} |
|
missionID, err := strconv.ParseInt(apStr.MissionID, 10, 10) |
|
if err != nil { |
|
return |
|
} |
|
openElec, err := strconv.ParseInt(apStr.OpenElec, 10, 8) |
|
if err != nil { |
|
return |
|
} |
|
dtime, err := strconv.ParseInt(apStr.DTime, 10, 64) |
|
if err != nil { |
|
return |
|
} |
|
ap.Aid = aid |
|
ap.Copyright = int8(copyright) |
|
ap.TypeID = int16(typeID) |
|
ap.MissionID = int(missionID) |
|
ap.OpenElec = int8(openElec) |
|
ap.DTime = time.Time(dtime) |
|
ap.Cover = apStr.Cover |
|
ap.Title = apStr.Title |
|
ap.Tag = apStr.Tag |
|
ap.Desc = apStr.Desc |
|
return |
|
} |
|
|
|
func appUpCover(c *bm.Context) { |
|
midI, _ := c.Get("mid") |
|
mid, ok := midI.(int64) |
|
if !ok || mid <= 0 { |
|
c.JSON(nil, ecode.RequestErr) |
|
return |
|
} |
|
file, _, err := c.Request.FormFile("file") |
|
if err != nil { |
|
log.Error("c.Request().FormFile(\"file\") error(%v) | ", err) |
|
c.JSON(nil, ecode.RequestErr) |
|
return |
|
} |
|
bs, err := ioutil.ReadAll(file) |
|
file.Close() |
|
if err != nil { |
|
log.Error("ioutil.ReadAll(c.Request().Body) error(%v)", err) |
|
c.JSON(nil, ecode.RequestErr) |
|
return |
|
} |
|
ftype := http.DetectContentType(bs) |
|
if ftype != "image/jpeg" && ftype != "image/png" && ftype != "image/webp" { |
|
log.Error("filetype not allow file type(%s)", ftype) |
|
c.JSON(nil, ecode.RequestErr) |
|
return |
|
} |
|
url, err := vdpSvc.AppUpCover(c, ftype, bs, mid) |
|
if err != nil { |
|
c.JSON(nil, err) |
|
return |
|
} |
|
c.JSON(map[string]interface{}{ |
|
"url": url, |
|
}, nil) |
|
} |
|
|
|
func appAdd(c *bm.Context) { |
|
var ( |
|
aid int64 |
|
ap = &archive.ArcParam{} |
|
cp = &archive.ArcParam{} |
|
err error |
|
) |
|
form := c.Request.Form |
|
ar := &archive.AppRequest{ |
|
Build: form.Get("build"), |
|
MobiApp: form.Get("mobi_app"), |
|
Platform: form.Get("platform"), |
|
Device: form.Get("device"), |
|
} |
|
midI, _ := c.Get("mid") |
|
mid, ok := midI.(int64) |
|
if !ok || mid <= 0 { |
|
c.JSON(nil, ecode.RequestErr) |
|
return |
|
} |
|
bs, err := ioutil.ReadAll(c.Request.Body) |
|
if err != nil { |
|
c.JSON(nil, ecode.RequestErr) |
|
return |
|
} |
|
c.Request.Body.Close() |
|
err = json.Unmarshal(bs, ap) |
|
err = json.Unmarshal(bs, cp) |
|
if err != nil { |
|
c.JSON(nil, ecode.VideoupParamErr) |
|
return |
|
} |
|
ap.Aid = 0 |
|
ap.Mid = mid |
|
ap.UpFrom = appUpFrom(ar.Platform, ar.Device) |
|
defer func() { |
|
cp.Aid = ap.Aid |
|
cp.Mid = ap.Mid |
|
cp.UpFrom = ap.UpFrom |
|
cp.IPv6 = ap.IPv6 |
|
build, buvid := getBuildInfo(c) |
|
vdpSvc.SendArchiveLog(aid, build, buvid, "add", ar.Platform, cp, err) |
|
}() |
|
if err == nil { |
|
aid, err = vdpSvc.AppAdd(c, mid, ap, ar) |
|
} |
|
if err != nil { |
|
log.Error("AppAdd Err mid(%+d)|ap(%+v)|err(%+v)", mid, ap, err) |
|
c.JSON(nil, err) |
|
return |
|
} |
|
c.JSON(map[string]interface{}{ |
|
"aid": aid, |
|
}, nil) |
|
} |
|
|
|
func appEditFull(c *bm.Context) { |
|
var ( |
|
aid int64 |
|
ap = &archive.ArcParam{} |
|
cp = &archive.ArcParam{} |
|
err error |
|
) |
|
form := c.Request.Form |
|
ar := &archive.AppRequest{ |
|
Build: form.Get("build"), |
|
MobiApp: form.Get("mobi_app"), |
|
Platform: form.Get("platform"), |
|
Device: form.Get("device"), |
|
} |
|
buildStr := form.Get("build") |
|
buildNum, _ := strconv.ParseInt(buildStr, 10, 64) |
|
midI, _ := c.Get("mid") |
|
mid, _ := midI.(int64) |
|
ap = &archive.ArcParam{} |
|
bs, err := ioutil.ReadAll(c.Request.Body) |
|
if err != nil { |
|
c.JSON(nil, ecode.RequestErr) |
|
return |
|
} |
|
c.Request.Body.Close() |
|
err = json.Unmarshal(bs, ap) |
|
err = json.Unmarshal(bs, cp) |
|
if err != nil { |
|
c.JSON(nil, ecode.VideoupParamErr) |
|
return |
|
} |
|
aid = ap.Aid |
|
ap.Mid = mid |
|
ap.UpFrom = appUpFrom(ar.Platform, ar.Device) |
|
defer func() { |
|
cp.Aid = ap.Aid |
|
cp.Mid = ap.Mid |
|
cp.UpFrom = ap.UpFrom |
|
cp.IPv6 = ap.IPv6 |
|
build, buvid := getBuildInfo(c) |
|
vdpSvc.SendArchiveLog(aid, build, buvid, "edit", ar.Platform, cp, err) |
|
}() |
|
err = vdpSvc.AppEditFull(c, ap, mid, buildNum, ar) |
|
if err != nil { |
|
log.Error("AppEditFull Err mid(%+d)|ap(%+v)|err(%+v)", mid, ap, err) |
|
c.JSON(nil, err) |
|
return |
|
} |
|
c.JSON(map[string]interface{}{ |
|
"aid": ap.Aid, |
|
}, nil) |
|
} |
|
|
|
func appUpFrom(platfrom, device string) (res int8) { |
|
if platfrom == "ios" { |
|
if device == "pad" { |
|
res = archive.UpFromIpad |
|
} else { |
|
res = archive.UpFromAPPiOS |
|
} |
|
} else if platfrom == "android" { |
|
res = archive.UpFromAPPAndroid |
|
} else { |
|
res = archive.UpFromAPP |
|
} |
|
return |
|
}
|
|
|