go-common/app/admin/main/sms/service/template.go

120 lines
3.1 KiB
Go
Raw Normal View History

2019-04-22 10:49:16 +00:00
package service
import (
"context"
pb "go-common/app/service/main/sms/api"
smsmdl "go-common/app/service/main/sms/model"
"go-common/library/ecode"
"go-common/library/log"
)
const (
_tableTemplate = "sms_template_new"
_searchTypeCode = "code"
_searchTypeContent = "content"
)
func (s *Service) templateByID(ctx context.Context, id int64) (res *smsmdl.ModelTemplate, err error) {
res = new(smsmdl.ModelTemplate)
if err = s.db.Table(_tableTemplate).Where("id=?", id).First(&res).Error; err != nil {
res = nil
if err == ecode.NothingFound {
err = nil
return
}
log.Error("templateByID(%d) error(%v)", id, err)
return
}
return
}
func (s *Service) templateByCode(ctx context.Context, code string) (res *smsmdl.ModelTemplate, err error) {
res = new(smsmdl.ModelTemplate)
if err = s.db.Table(_tableTemplate).Where("code=?", code).First(&res).Error; err != nil {
res = nil
if err == ecode.NothingFound {
err = nil
return
}
log.Error("templateByCode(%s) error(%v)", code, err)
return
}
return
}
// AddTemplate add template
func (s *Service) AddTemplate(ctx context.Context, req *pb.AddTemplateReq) (res *pb.AddTemplateReply, err error) {
tpl, err := s.templateByCode(ctx, req.Tcode)
if err != nil {
return
}
if tpl != nil {
err = ecode.SmsTemplateCodeExist
return
}
t := &smsmdl.ModelTemplate{
Code: req.Tcode,
Template: req.Template,
Stype: req.Stype,
Status: smsmdl.TemplateStatusApprovel,
Submitter: req.Submitter,
}
if err = s.db.Table(_tableTemplate).Create(t).Error; err != nil {
log.Error("s.AddTemplate(%+v) error(%v)", req, err)
}
return
}
// UpdateTemplate update template
func (s *Service) UpdateTemplate(ctx context.Context, req *pb.UpdateTemplateReq) (res *pb.UpdateTemplateReply, err error) {
tpl, err := s.templateByID(ctx, req.ID)
if err != nil {
return
}
if tpl == nil {
err = ecode.SmsTemplateNotExist
return
}
if tpl.Code != req.Tcode {
var t *smsmdl.ModelTemplate
if t, err = s.templateByCode(ctx, req.Tcode); err != nil {
return
}
if t != nil {
err = ecode.SmsTemplateCodeExist
return
}
}
m := map[string]interface{}{
"code": req.Tcode,
"template": req.Template,
"stype": req.Stype,
"status": req.Status,
"submitter": req.Submitter,
}
if err = s.db.Table(_tableTemplate).Where("id=?", req.ID).Update(m).Error; err != nil {
log.Error("s.UpdateTemplate(%+v) error(%v)", req, err)
}
return
}
// TemplateList template list
func (s *Service) TemplateList(ctx context.Context, req *pb.TemplateListReq) (res *pb.TemplateListReply, err error) {
res = new(pb.TemplateListReply)
cond := "1=1"
if req.St == _searchTypeCode {
cond = "code like '%" + req.Sw + "%'"
} else if req.St == _searchTypeContent {
cond = "template like '%" + req.Sw + "%'"
}
start := (req.Pn - 1) * req.Ps
if err = s.db.Table(_tableTemplate).Where(cond).Order("id desc").Offset(start).Limit(req.Ps).Find(&res.List).Error; err != nil {
log.Error("s.TemplateList(%d,%d,%s,%s) error(%v)", req.Pn, req.Ps, req.St, req.Sw, err)
return
}
err = s.db.Table(_tableTemplate).Where(cond).Count(&res.Total).Error
return
}