123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258 |
- package manager
- import (
- "context"
- "go-common/app/admin/main/videoup/model/oversea"
- "go-common/library/log"
- )
- // UpPolicyRelation update or into archive_relation.
- func (d *Dao) UpPolicyRelation(c context.Context, aid, gid int64) (relation *oversea.ArchiveRelation, err error) {
- var assign = map[string]interface{}{
- "policy_id": gid,
- "aid": aid,
- }
- relation = &oversea.ArchiveRelation{}
- if err = d.OverseaDB.Where("aid=?", aid).Assign(assign).FirstOrCreate(&relation).Error; err != nil {
- log.Error("d.UpPolicyRelation.FirstOrCreate error(%v)", err)
- return
- }
- return
- }
- // PolicyRelation get archive policy group relation.
- func (d *Dao) PolicyRelation(c context.Context, aid int64) (relation *oversea.ArchiveRelation, err error) {
- relation = &oversea.ArchiveRelation{}
- res := d.OverseaDB.Where("aid=?", aid).Find(&relation)
- if res.RecordNotFound() {
- relation = nil
- return
- }
- err = res.Error
- return
- }
- // PolicyGroups get policy group
- func (d *Dao) PolicyGroups(c context.Context, uid, id int64, gType, state int8, count, page int64, order, sort string) (groups []*oversea.PolicyGroup, total int64, err error) {
- var (
- db = d.OverseaDB.Model(&groups)
- orders = map[string]int{
- "mtime": 1,
- }
- )
- db = db.Where("is_global=?", 1)
- if uid > 0 {
- db = db.Where("uid=?", uid)
- }
- if id > 0 {
- db = db.Where("id=?", id)
- }
- if gType > 0 {
- db = db.Where("type=?", gType)
- }
- if state >= 0 {
- db = db.Where("state=?", state)
- }
- if order != "" && sort != "" {
- if _, ok := orders[order]; ok {
- db = db.Order(order + " " + sort)
- }
- }
- if count <= 0 {
- count = 20
- }
- if page <= 0 {
- page = 1
- }
- db.Count(&total)
- db = db.Offset((page - 1) * count)
- db = db.Limit(count)
- if err = db.Find(&groups).Error; err != nil {
- log.Error("d.PolicyGroups.Find error(%v)", err)
- }
- err = d.ItemsByGroup(groups)
- return
- }
- // PolicyGroupsByIds get policy groups by ids
- func (d *Dao) PolicyGroupsByIds(c context.Context, ids []int64) (groups []*oversea.PolicyGroup, err error) {
- if err = d.OverseaDB.Where(ids).Find(&groups).Error; err != nil {
- log.Error("d.PolicyGroupsByIds.Find error(%v)", err)
- }
- return
- }
- // PolicyGroup get policy group by id
- func (d *Dao) PolicyGroup(c context.Context, id int64) (group *oversea.PolicyGroup, err error) {
- var (
- groups []*oversea.PolicyGroup
- )
- group = &oversea.PolicyGroup{}
- res := d.OverseaDB.Where("id=?", id).Find(&group)
- if res.RecordNotFound() {
- group = nil
- return
- }
- err = res.Error
- if err != nil {
- log.Error("d.PolicyGroup.Find error(%v)", err)
- return
- }
- groups = append(groups, group)
- if err = d.ItemsByGroup(groups); err != nil {
- log.Error("d.ItemsByGroup.Find error(%v)", err)
- return
- }
- if len(groups) != 0 {
- group = groups[0]
- }
- return
- }
- // ArchiveGroups get archive's policy groups
- func (d *Dao) ArchiveGroups(c context.Context, aid int64) (groups []*oversea.PolicyGroup, err error) {
- var (
- db = d.OverseaDB
- relations []*oversea.ArchiveRelation
- gids []int64
- )
- err = db.Where("aid=?", aid).Find(&relations).Error
- if err != nil {
- log.Error("d.ArchiveGroups.Find error(%v)", err)
- return
- }
- gids = make([]int64, len(relations))
- for i, v := range relations {
- gids[i] = v.GroupID
- }
- db = d.OverseaDB
- err = db.Where(gids).Find(&groups).Error
- if err != nil {
- log.Error("d.ArchiveGroups.Find error(%v)", err)
- return
- }
- err = d.ItemsByGroup(groups)
- return
- }
- // ItemsByGroup get policy items into group
- func (d *Dao) ItemsByGroup(groups []*oversea.PolicyGroup) (err error) {
- var (
- items []*oversea.PolicyItem
- itemMap = make(map[int64][]*oversea.PolicyItem)
- )
- gids := make([]int64, len(groups))
- for i, v := range groups {
- gids[i] = v.ID
- }
- db := d.OverseaDB
- err = db.Where("group_id in (?) and state=?", gids, oversea.StateOK).Find(&items).Error
- if err != nil {
- log.Error("d.ArchiveGroups.Find error(%v)", err)
- return
- }
- for _, v := range items {
- itemMap[v.GroupID] = append(itemMap[v.GroupID], v)
- }
- for i, g := range groups {
- if _, ok := itemMap[g.ID]; !ok {
- groups[i].Items = make([]*oversea.PolicyItem, 0)
- continue
- }
- groups[i].Items = itemMap[g.ID]
- }
- return
- }
- // AddPolicyGroup add policy group
- func (d *Dao) AddPolicyGroup(c context.Context, group *oversea.PolicyGroup) (err error) {
- var (
- db = d.OverseaDB
- )
- group.IsGlobal = 1
- group.Aid = 0
- group.State = 1
- err = db.Create(&group).Error
- if err != nil {
- group = &oversea.PolicyGroup{}
- log.Error("d.AddPolicyGroup.Create error(%v)", err)
- }
- return
- }
- // UpdatePolicyGroup update policy group
- func (d *Dao) UpdatePolicyGroup(c context.Context, id int64, attrs map[string]interface{}) (err error) {
- var (
- db = d.OverseaDB
- )
- err = db.Model(&oversea.PolicyGroup{}).Where("id=?", id).Update(attrs).Error
- if err != nil {
- log.Error("d.UpdatePolicyGroup.Update error(%v)", err)
- }
- return
- }
- // UpdatePolicyGroups multi update policy groups
- func (d *Dao) UpdatePolicyGroups(c context.Context, ids []int64, attrs map[string]interface{}) (err error) {
- var (
- db = d.OverseaDB
- )
- err = db.Model(&oversea.PolicyGroup{}).Where(ids).Update(attrs).Error
- if err != nil {
- log.Error("d.UpdatePolicyGroup.Update error(%v)", err)
- }
- return
- }
- // PolicyItems get policy items
- func (d *Dao) PolicyItems(c context.Context, gid int64) (items []*oversea.PolicyItem, err error) {
- err = d.OverseaDB.Where("group_id=? AND state=?", gid, oversea.StateOK).Find(&items).Error
- return
- }
- // ZoneIDs get zone ids by area ids
- func (d *Dao) ZoneIDs(c context.Context, aids []int64) (ids []int64, err error) {
- var items []*oversea.Zone
- if err = d.OverseaDB.Where(aids).Find(&items).Pluck("zone_id", &ids).Error; err != nil {
- log.Error("d.ZoneIDs.Find error(%v)", err)
- }
- return
- }
- // AddPolicies add policy items
- func (d *Dao) AddPolicies(c context.Context, policies []oversea.PolicyItem) (err error) {
- var assign = map[string]interface{}{
- "group_id": 0,
- "play_auth": 0,
- "down_auth": 0,
- "area_id": "",
- "zone_id": "",
- }
- for _, v := range policies {
- if v.ID > 0 {
- assign["group_id"] = v.GroupID
- assign["play_auth"] = v.PlayAuth
- assign["down_auth"] = v.DownAuth
- assign["area_id"] = v.AreaID
- assign["zone_id"] = v.ZoneID
- err = d.OverseaDB.Model(&v).Where("id=?", v.ID).Update(assign).Error
- } else {
- err = d.OverseaDB.Create(&v).Error
- }
- if err != nil {
- log.Error("d.AddPolicies.FirstOrCreate error(%v)", err)
- return
- }
- }
- return
- }
- // DelPolices soft delete policy items
- func (d *Dao) DelPolices(c context.Context, gid int64, ids []int64) (err error) {
- err = d.OverseaDB.Debug().Model(&oversea.PolicyItem{}).Where(ids).Where("group_id=?", gid).Update("state", oversea.StateDeleted).Error
- if err != nil {
- log.Error("d.DelPolices.Update error(%v)", err)
- }
- return
- }
|