123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145 |
- package http
- import (
- "go-common/app/admin/main/creative/model/logcli"
- "go-common/app/admin/main/creative/model/music"
- "go-common/library/ecode"
- "go-common/library/log"
- bm "go-common/library/net/http/blademaster"
- "go-common/library/net/http/blademaster/binding"
- "go-common/library/xstr"
- "github.com/jinzhu/gorm"
- )
- func musicMaterialRelationInfo(c *bm.Context) {
- var (
- req = c.Request.Form
- id = parseInt(req.Get("id"))
- err error
- )
- m := &music.WithMaterialParam{}
- if err = svc.DBArchive.Where("id=?", id).First(&m).Error; err != nil {
- c.JSON(nil, ecode.NothingFound)
- return
- }
- c.JSON(map[string]*music.WithMaterialParam{
- "data": m,
- }, nil)
- }
- func editMaterialRelation(c *bm.Context) {
- var (
- err error
- )
- uid, uname := getUIDName(c)
- m := &music.WithMaterialParam{}
- if err = c.BindWith(m, binding.Form); err != nil {
- return
- }
- exist := music.WithMaterial{}
- if err = svc.DBArchive.Where("sid=?", m.Sid).Where("state!=?", music.MusicDelete).First(&exist).Error; err != nil {
- c.JSON(nil, ecode.NothingFound)
- return
- }
- m.ID = exist.ID
- m.UID = uid
- m.Index = exist.Index
- if err = svc.DBArchive.Model(&music.WithMaterial{}).Where("id=?", exist.ID).Update(m).Error; err != nil {
- log.Error("svc.editMaterialRelation error(%v)", err)
- c.JSON(nil, err)
- return
- }
- svc.SendMusicLog(c, logcli.LogClientArchiveMusicTypeMaterialRelation, &music.LogParam{ID: m.ID, UID: uid, UName: uname, Action: "update", Name: string(m.ID)})
- c.JSON(map[string]int{
- "code": 0,
- }, nil)
- }
- func addMaterialRelation(c *bm.Context) {
- var (
- err error
- )
- m := &music.WithMaterialParam{}
- if err = c.BindWith(m, binding.Form); err != nil {
- return
- }
- exist := &music.WithMaterial{}
-
-
- if err = svc.DBArchive.Where("state!=?", music.MusicDelete).Where("sid=?", m.Sid).First(&exist).Error; err != nil && err != gorm.ErrRecordNotFound {
- c.JSON(nil, err)
- return
- }
- if exist.ID > 0 {
- c.JSON(map[string]int64{
- "id": exist.ID,
- }, nil)
- return
- }
- if err = svc.DBArchive.Create(m).Error; err != nil {
- log.Error("svc.addMaterialRelation error(%v)", err)
- c.JSON(nil, err)
- return
- }
- uid, uname := getUIDName(c)
- svc.SendMusicLog(c, logcli.LogClientArchiveMusicTypeMaterialRelation, &music.LogParam{ID: m.ID, UID: uid, UName: uname, Action: "add", Name: string(m.ID)})
- c.JSON(map[string]int64{
- "id": m.ID,
- }, nil)
- }
- func batchAddMaterialRelation(c *bm.Context) {
- var (
- err error
- sids []int64
- )
- uid, uname := getUIDName(c)
- m := &music.BatchMusicWithMaterialParam{}
- if err = c.BindWith(m, binding.Form); err != nil {
- log.Error("svc.batchAddMaterialRelation bind error(%v)", err)
- return
- }
-
- if sids, err = xstr.SplitInts(m.SidList); err != nil {
- log.Error("svc.batchAddMaterialRelation SplitInts error(%v)", err)
- c.JSON(nil, err)
- return
- }
- max := music.WithMaterial{}
- if err = svc.DBArchive.Model(&music.WithMaterial{}).Where("tid=?", m.Tid).Where("state!=?", music.MusicDelete).Order("music_with_material.index desc").First(&max).Error; err != nil && err != gorm.ErrRecordNotFound {
-
- log.Error("svc.batchAddMaterialRelation max index error(%v)", err)
- return
- }
- thisIndex := max.Index
- i := int64(1)
- for _, sid := range sids {
-
- exists := music.WithMaterial{}
- if err = svc.DBArchive.Model(&music.WithMaterial{}).Where("sid=?", sid).Where("state!=?", music.MusicDelete).First(&exists).Error; err != nil && err != gorm.ErrRecordNotFound {
- log.Error("svc.batchAddMaterialRelation check exist sid tid (%d,%d) error(%v)", sid, m.Tid, err)
- c.JSON(nil, err)
- return
- }
- if exists.ID > 0 {
-
- if err = svc.DBArchive.Model(&music.WithMaterial{}).Where("sid=?", sid).Where("state!=?", music.MusicDelete).Update("tid", m.Tid).Error; err != nil && err != gorm.ErrRecordNotFound {
- log.Error("svc.batchAddMaterialRelation Update error(%v)", err)
- continue
- }
- svc.SendMusicLog(c, logcli.LogClientArchiveMusicTypeMaterialRelation, &music.LogParam{ID: exists.Sid, UID: uid, UName: uname, Action: "update", Name: string(exists.Sid)})
- } else {
- mp := &music.WithMaterialParam{Sid: sid, Tid: m.Tid, Index: thisIndex + i}
- if err = svc.DBArchive.Create(mp).Error; err != nil {
- log.Error("svc.batchAddMaterialRelation Create error(%v)", err)
- continue
- }
- i++
- svc.SendMusicLog(c, logcli.LogClientArchiveMusicTypeMaterialRelation, &music.LogParam{ID: mp.Sid, UID: uid, UName: uname, Action: "add", Name: string(mp.Sid)})
- }
- }
- c.JSON(map[string]int64{
- "code": 0,
- }, nil)
- }
|