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.
275 lines
6.7 KiB
275 lines
6.7 KiB
package http |
|
|
|
import ( |
|
"fmt" |
|
"net/url" |
|
|
|
"go-common/app/admin/main/tv/model" |
|
"go-common/library/ecode" |
|
"go-common/library/log" |
|
bm "go-common/library/net/http/blademaster" |
|
) |
|
|
|
const ( |
|
_isVerDeleted = 2 |
|
) |
|
|
|
func verUpdateList(c *bm.Context) { |
|
var ( |
|
req = c.Request.Form |
|
err error |
|
items []*model.VersionUpdate |
|
limit []*model.VersionUpdateLimit |
|
rets []*model.VersionUpdateDetail |
|
count int64 |
|
vid = atoi(req.Get("vid")) |
|
page = atoi(req.Get("page")) |
|
size = 20 |
|
) |
|
if page == 0 { |
|
page = 1 |
|
} |
|
db := tvSrv.DBShow.Where("vid=?", vid).Where("state!=?", _isVerDeleted) |
|
db.Model(&model.VersionUpdate{}).Count(&count) |
|
if err = db.Model(&model.VersionUpdate{}).Offset((page - 1) * size).Limit(size).Find(&items).Error; err != nil { |
|
log.Error("%v\n", err) |
|
c.JSON(nil, err) |
|
return |
|
} |
|
for _, val := range items { |
|
if err = tvSrv.DBShow.Model(&model.VersionUpdateLimit{}).Where("up_id=?", val.ID).Find(&limit).Error; err != nil { |
|
log.Error("%v\n", err) |
|
c.JSON(nil, err) |
|
return |
|
} |
|
rets = append(rets, &model.VersionUpdateDetail{VersionUpdate: val, VerLimit: limit}) |
|
} |
|
|
|
version := model.Version{} |
|
if err = tvSrv.DBShow.Where("id=?", vid).Where("state!=?", _isDeleted).First(&version).Error; err != nil { |
|
log.Error("version info not exists-(%v)\n", err) |
|
c.JSON(nil, err) |
|
return |
|
} |
|
lists := map[string]interface{}{ |
|
"verUpdate": rets, |
|
"version": version, |
|
} |
|
pager := &model.VersionUpdatePager{ |
|
TotalCount: count, |
|
Pn: page, |
|
Ps: size, |
|
Items: lists, |
|
} |
|
c.JSON(pager, nil) |
|
} |
|
|
|
func saveVerUpdate(c *bm.Context) { |
|
var ( |
|
req = c.Request.PostForm |
|
id = parseInt(req.Get("id")) |
|
err error |
|
) |
|
exist := model.VersionUpdate{} |
|
if err = tvSrv.DBShow.Where("id=?", id).Where("state!=?", _isVerDeleted).First(&exist).Error; err != nil { |
|
c.JSON(nil, err) |
|
return |
|
} |
|
alert, simple := validateVerUpdatePostData(c) |
|
if alert != "" { |
|
renderErrMsg(c, ecode.RequestErr.Code(), alert) |
|
return |
|
} |
|
if err = tvSrv.DBShow.Model(&model.VersionUpdate{}).Where("id = ?", id).Update(simple).Error; err != nil { |
|
log.Error("tvSrv.saveVerUpdate error(%v)", err) |
|
c.JSON(nil, err) |
|
return |
|
} |
|
if err = tvSrv.DBShow.Model(&model.VersionUpdate{}).Where("id = ?", id).Update(map[string]int8{"is_push": simple.IsPush, "is_force": simple.IsForce}).Error; err != nil { |
|
log.Error("tvSrv.saveVerUpdate error(%v)", err) |
|
c.JSON(nil, err) |
|
return |
|
} |
|
if err = tvSrv.DBShow.Model(&model.VersionUpdateLimit{}).Where("up_id=?", id).Delete(&model.VersionUpdateLimit{}).Error; err != nil { |
|
log.Error("tvSrv.DeleteVerUpdateLimit error(%v)\n", err) |
|
return |
|
} |
|
log.Info("saveVerUpdate exist.ID = %d", exist.ID) |
|
if exist.ID > 0 { |
|
addVerUpdateLimit(req, exist.ID) |
|
} |
|
c.JSON(nil, nil) |
|
} |
|
|
|
func addVerUpdate(c *bm.Context) { |
|
var ( |
|
req = c.Request.PostForm |
|
err error |
|
) |
|
alert, simple := validateVerUpdatePostData(c) |
|
if alert != "" { |
|
renderErrMsg(c, ecode.RequestErr.Code(), alert) |
|
return |
|
} |
|
db := tvSrv.DBShow.Create(simple) |
|
if err = db.Error; err != nil { |
|
log.Error("tvSrv.addVerUpdate error(%v)", err) |
|
c.JSON(nil, err) |
|
return |
|
} |
|
insertID := (db.Value.(*model.VersionUpdate)).ID |
|
if insertID > 0 { |
|
addVerUpdateLimit(req, insertID) |
|
} |
|
c.JSON(nil, nil) |
|
} |
|
|
|
func addVerUpdateLimit(req url.Values, upid int64) (err error) { |
|
var ( |
|
condi = req["condi[]"] |
|
value = req["value[]"] |
|
) |
|
if len(condi) > 0 { |
|
for key, val := range condi { |
|
li := &model.VersionUpdateLimit{UPID: int32(upid)} |
|
if key < len(condi) { |
|
li.Condi = val |
|
} |
|
if key < len(value) { |
|
li.Value = atoi(value[key]) |
|
} |
|
if err = tvSrv.DBShow.Create(li).Error; err != nil { |
|
log.Error("tvSrv.addVerUpdateLimit error(%v)", err) |
|
break |
|
} |
|
} |
|
} |
|
return |
|
} |
|
|
|
func verUpdateEnable(c *bm.Context) { |
|
var ( |
|
req = c.Request.PostForm |
|
|
|
id = parseInt(req.Get("id")) |
|
state = atoi(req.Get("state")) |
|
err error |
|
) |
|
exist := model.VersionUpdate{} |
|
if err = tvSrv.DBShow.Where("id=?", id).Where("state!=?", _isVerDeleted).First(&exist).Error; err != nil { |
|
c.JSON(nil, err) |
|
return |
|
} |
|
if err := tvSrv.DBShow.Model(&model.VersionUpdate{}).Where("id = ?", id).Update(map[string]int{"state": state}).Error; err != nil { |
|
log.Error("tvSrv.verUpdateEnable error(%v)", err) |
|
c.JSON(nil, err) |
|
return |
|
} |
|
c.JSON(nil, nil) |
|
} |
|
|
|
func fullPackageImport(c *bm.Context) { |
|
var ( |
|
req = c.Request.Form |
|
|
|
vid = atoi(req.Get("vid")) |
|
build = atoi(req.Get("build")) |
|
err error |
|
) |
|
result, err := tvSrv.FullImport(c, build) |
|
if err != nil { |
|
log.Error("%v\n", err) |
|
c.JSON(nil, err) |
|
return |
|
} |
|
for _, val := range result { |
|
if !createApk2Version(val, vid) { |
|
renderErrMsg(c, ecode.RequestErr.Code(), fmt.Sprintf("fullPackageImport fail(%v)", val)) |
|
return |
|
} |
|
} |
|
c.JSON(nil, nil) |
|
} |
|
|
|
func createApk2Version(val *model.APKInfo, vid int) (b bool) { |
|
var ( |
|
err error |
|
simple *model.VersionUpdate |
|
limit *model.VersionUpdateLimit |
|
) |
|
b = false |
|
simple = new(model.VersionUpdate) |
|
simple.VID = vid |
|
simple.PolicyName = "指定版本导入更新" |
|
simple.IsForce = 0 |
|
simple.IsPush = 0 |
|
simple.Channel = "bili" |
|
simple.URL = val.CDNAddr |
|
simple.Size = val.Size |
|
simple.Md5 = val.SignMd5 |
|
simple.Sdkint = 0 |
|
simple.Model = "" |
|
simple.Policy = 0 |
|
simple.Coverage = 100 |
|
db := tvSrv.DBShow.Create(simple) |
|
if err = db.Error; err != nil { |
|
log.Error("tvSrv.createApk2Version error(%v)", err) |
|
return |
|
} |
|
insertID := (db.Value.(*model.VersionUpdate)).ID |
|
limit = &model.VersionUpdateLimit{UPID: int32(insertID), Condi: "", Value: 0} |
|
if err = tvSrv.DBShow.Create(limit).Error; err != nil { |
|
log.Error("tvSrv.createAPK2Version error(%v)", err) |
|
return |
|
} |
|
return true |
|
} |
|
|
|
func validateVerUpdatePostData(c *bm.Context) (alert string, simple *model.VersionUpdate) { |
|
var ( |
|
req = c.Request.PostForm |
|
vid = atoi(req.Get("vid")) |
|
isForce = atoi(req.Get("is_force")) |
|
isPush = atoi(req.Get("is_push")) |
|
channel = req.Get("channel") |
|
url = req.Get("url") |
|
size = atoi(req.Get("size")) |
|
md5 = req.Get("md5") |
|
sdkint = atoi(req.Get("sdkint")) |
|
mod = req.Get("model") |
|
policy = atoi(req.Get("policy")) |
|
coverage = atoi(req.Get("coverage")) |
|
policyName = req.Get("policy_name") |
|
) |
|
alert = string("") |
|
simple = new(model.VersionUpdate) |
|
simple.VID = vid |
|
simple.PolicyName = policyName |
|
simple.IsForce = int8(isForce) |
|
simple.IsPush = int8(isPush) |
|
simple.Channel = channel |
|
simple.URL = url |
|
simple.Size = size |
|
simple.Md5 = md5 |
|
simple.Sdkint = sdkint |
|
simple.Model = mod |
|
simple.Policy = int8(policy) |
|
simple.Coverage = int32(coverage) |
|
if simple.Channel == "" { |
|
alert = "渠道不能为空" |
|
return |
|
} |
|
if simple.URL == "" { |
|
alert = "安装包地址不能为空" |
|
return |
|
} |
|
if simple.Size == 0 { |
|
alert = "文件大小不能为0" |
|
return |
|
} |
|
if simple.Md5 == "" { |
|
alert = "文件hash值不能为空" |
|
return |
|
} |
|
return |
|
}
|
|
|