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.
86 lines
3.0 KiB
86 lines
3.0 KiB
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 |
|
}
|
|
|