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

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
}