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.
78 lines
2.1 KiB
78 lines
2.1 KiB
package service |
|
|
|
import ( |
|
"context" |
|
"time" |
|
|
|
"go-common/app/admin/main/space/model" |
|
"go-common/library/ecode" |
|
"go-common/library/log" |
|
"go-common/library/queue/databus/report" |
|
) |
|
|
|
// Notice get notice data. |
|
func (s *Service) Notice(c context.Context, mid int64) (data *model.Notice, err error) { |
|
data = &model.Notice{Mid: mid} |
|
if err = s.dao.DB.Table(data.TableName()).Where("mid=?", mid).First(&data).Error; err != nil { |
|
log.Error("Notice (mid:%d) error (%v)", mid, err) |
|
if err == ecode.NothingFound { |
|
err = nil |
|
} |
|
} |
|
return |
|
} |
|
|
|
// NoticeUp notice clear and forbid. |
|
func (s *Service) NoticeUp(c context.Context, arg *model.NoticeUpArg) (err error) { |
|
var action string |
|
notice := &model.Notice{Mid: arg.Mid} |
|
if err = s.dao.DB.Table(notice.TableName()).Where("mid=?", arg.Mid).First(¬ice).Error; err != nil { |
|
log.Error("NoticeForbid error (mid:%d) (%v)", arg.Mid, err) |
|
if err != ecode.NothingFound { |
|
return |
|
} |
|
} |
|
up := make(map[string]interface{}) |
|
switch arg.Type { |
|
case model.NoticeTypeClear: |
|
up["notice"] = "" |
|
action = model.NoticeClear |
|
case model.NoticeTypeClearAndForbid: |
|
up["notice"] = "" |
|
up["is_forbid"] = model.NoticeForbid |
|
action = model.NoticeClearAndForbid |
|
case model.NoticeTypeUnForbid: |
|
up["is_forbid"] = model.NoticeNoForbid |
|
action = model.NoticeUnForbid |
|
} |
|
if err != ecode.NothingFound { |
|
if err = s.dao.DB.Table(notice.TableName()).Where("id=?", notice.ID).Update(up).Error; err != nil { |
|
log.Error("NoticeForbid (mid:%d) update error (%v)", arg.Mid, err) |
|
return |
|
} |
|
} else { |
|
create := &model.Notice{Mid: arg.Mid} |
|
if arg.Type == model.NoticeTypeClearAndForbid { |
|
create.IsForbid = model.NoticeForbid |
|
} |
|
if err = s.dao.DB.Table(notice.TableName()).Create(create).Error; err != nil { |
|
log.Error("NoticeForbid (mid:%d) insert error (%v)", arg.Mid, err) |
|
return |
|
} |
|
} |
|
if err = report.Manager(&report.ManagerInfo{ |
|
Uname: arg.Uname, |
|
UID: arg.UID, |
|
Business: model.NoticeLogID, |
|
Type: 0, |
|
Oid: arg.Mid, |
|
Action: action, |
|
Ctime: time.Now(), |
|
Content: map[string]interface{}{ |
|
"old": notice, |
|
}, |
|
}); err != nil { |
|
return |
|
} |
|
return |
|
}
|
|
|