87 lines
3.0 KiB
Go
87 lines
3.0 KiB
Go
package service
|
|
|
|
import (
|
|
"context"
|
|
"math"
|
|
"time"
|
|
|
|
"go-common/app/admin/main/reply/model"
|
|
"go-common/library/log"
|
|
)
|
|
|
|
// AddReplyConfig create a new administrator configuration for reply business
|
|
func (s *Service) AddReplyConfig(c context.Context, m *model.Config) (id int64, err error) {
|
|
sub, err := s.subject(c, m.Oid, m.Type)
|
|
if err != nil {
|
|
return
|
|
}
|
|
now := time.Now()
|
|
if _, err = s.dao.AddConfig(c, m.Type, m.Category, m.Oid, m.AdminID, m.Operator, m.Config, now); err != nil {
|
|
return
|
|
}
|
|
if m.ShowEntry == 1 && m.ShowAdmin == 1 {
|
|
sub.AttrSet(model.AttrNo, model.SubAttrConfig)
|
|
} else {
|
|
sub.AttrSet(model.AttrYes, model.SubAttrConfig)
|
|
}
|
|
if _, err = s.dao.UpSubjectAttr(c, m.Oid, m.Type, sub.Attr, now); err != nil {
|
|
log.Error("s.dao.UpSubjectAttr(%d,%d,%d,%d) error(%v)", m.Type, m.Oid, model.SubAttrConfig, m.ShowEntry, err)
|
|
return
|
|
}
|
|
if err = s.dao.DelSubjectCache(c, m.Oid, m.Type); err != nil {
|
|
log.Error("ReplyConfig del subject cache error(%v)", err)
|
|
}
|
|
if err = s.dao.DelConfigCache(c, m.Oid, m.Type, m.Category); err != nil {
|
|
log.Error("ReplyConfig del config cache error(%v)", err)
|
|
}
|
|
return
|
|
}
|
|
|
|
// LoadReplyConfig load a configuration record of reply business.
|
|
func (s *Service) LoadReplyConfig(c context.Context, typ, category int32, oid int64) (m *model.Config, err error) {
|
|
m, err = s.dao.LoadConfig(c, typ, category, oid)
|
|
return
|
|
}
|
|
|
|
//PaginateReplyConfig paginate configuration list of records indexing from start to end, and a total count of records
|
|
func (s *Service) PaginateReplyConfig(c context.Context, typ, category int32, oid int64, operator string, offset, count int) (configs []*model.Config, totalCount, pages int64, err error) {
|
|
configs, _ = s.dao.PaginateConfig(c, typ, category, oid, operator, offset, count)
|
|
totalCount, _ = s.dao.PaginateConfigCount(c, typ, category, oid, operator)
|
|
pages = int64(math.Ceil(float64(totalCount) / float64(count)))
|
|
return
|
|
}
|
|
|
|
//RenewReplyConfig reset reply configuration by default, with deleting the detail configurations from db
|
|
func (s *Service) RenewReplyConfig(c context.Context, id int64) (result bool, err error) {
|
|
now := time.Now()
|
|
config, err := s.dao.LoadConfigByID(c, id)
|
|
if err != nil {
|
|
log.Error("s.dao.LoadConfigByID(%d) error(%v)", id, err)
|
|
}
|
|
if config == nil {
|
|
return false, nil
|
|
}
|
|
sub, err := s.dao.Subject(c, config.Oid, config.Type)
|
|
if err != nil {
|
|
return
|
|
}
|
|
sub.AttrSet(model.AttrNo, model.SubAttrConfig)
|
|
_, err = s.dao.UpSubjectAttr(c, config.Oid, config.Type, sub.Attr, now)
|
|
if err != nil {
|
|
log.Error("s.dao.UpSubjectAttr(%d,%d,%d,%d) error(%v)", config.Type, config.Oid, model.SubAttrConfig, config.ShowEntry, err)
|
|
return
|
|
}
|
|
if _, err = s.dao.DeleteConfig(c, id); err != nil {
|
|
log.Error("s.dao.DeleteConfig(%d) error(%v)", id, err)
|
|
return
|
|
}
|
|
if err = s.dao.DelSubjectCache(c, config.Oid, config.Type); err != nil {
|
|
log.Error("ReplyConfig del subject cache error(%v)", err)
|
|
}
|
|
if err = s.dao.DelConfigCache(c, config.Oid, config.Type, config.Category); err != nil {
|
|
log.Error("ReplyConfig del config cache error(%v)", err)
|
|
}
|
|
result = true
|
|
return
|
|
}
|