go-common/app/admin/main/space/service/blacklist.go
2019-04-22 18:49:16 +08:00

108 lines
2.3 KiB
Go

package service
import (
"fmt"
"time"
"go-common/app/admin/main/space/model"
"go-common/library/log"
"go-common/library/queue/databus/report"
"github.com/jinzhu/gorm"
)
const (
_BlacklistAdd = "BlacklistAdd"
_BlacklistUp = "BlacklistUp"
_StatusNotBlack = 1
)
// BlacklistAdd add blacklist
func (s *Service) BlacklistAdd(mids []int64, name string, uid int64) (err error) {
var (
blacklist map[int64]*model.Blacklist
updateMids, addMids []int64
)
if len(mids) > 30 {
err = fmt.Errorf("黑名单一次最多只能添加30个")
return
}
if blacklist, err = s.dao.BlacklistIn(mids); err != nil {
return
}
for _, v := range mids {
if blacklist[v] != nil {
if blacklist[v].Status == _StatusNotBlack {
updateMids = append(updateMids, blacklist[v].ID)
}
} else {
addMids = append(addMids, v)
}
}
if err = s.dao.BlacklistAdd(addMids, updateMids); err != nil {
return
}
for _, v := range mids {
if err = report.Manager(&report.ManagerInfo{
Uname: name,
UID: uid,
Business: model.NoticeLogID,
Type: model.LogBlacklist,
Oid: v,
Action: _BlacklistAdd,
Ctime: time.Now(),
Content: map[string]interface{}{
"mids": mids,
},
}); err != nil {
return
}
}
return
}
// BlacklistUp update blacklist
func (s *Service) BlacklistUp(id int64, status int, name string, uid int64) (err error) {
var (
mids []int64
)
blacklist := &model.Blacklist{}
if err = s.dao.DB.Model(&model.Blacklist{}).Where("id in (?)", []int64{id}).First(blacklist).Error; err != nil {
if err == gorm.ErrRecordNotFound {
err = fmt.Errorf("找不用数据")
return
}
log.Error("Srv.BlacklistUp First error(%v)", err)
return
}
if err = s.dao.BlacklistUp(id, status); err != nil {
return
}
mids = []int64{blacklist.Mid}
if err = report.Manager(&report.ManagerInfo{
Uname: name,
UID: uid,
Business: model.NoticeLogID,
Type: model.LogBlacklist,
Oid: blacklist.Mid,
Action: _BlacklistUp,
Ctime: time.Now(),
Content: map[string]interface{}{
"id": id,
"status": status,
"mids": mids,
},
}); err != nil {
return
}
return
}
// BlacklistIndex .
func (s *Service) BlacklistIndex(mid int64, pn, ps int) (pager *model.BlacklistPager, err error) {
if pager, err = s.dao.BlacklistIndex(mid, pn, ps); err != nil {
return
}
return
}