108 lines
2.3 KiB
Go
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
|
|
}
|