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.
119 lines
3.1 KiB
119 lines
3.1 KiB
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 |
|
}
|
|
|