diff --git a/build/Dockerfile b/build/Dockerfile index 78cd457..c5e8f4b 100644 --- a/build/Dockerfile +++ b/build/Dockerfile @@ -32,7 +32,7 @@ RUN --mount=type=ssh go mod download RUN CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build \ -ldflags "$FLAG" \ - -o service + -o notification ########## ## FINAL # @@ -44,4 +44,4 @@ WORKDIR /app COPY --from=builder /app/service /app/service COPY --from=builder /app/etc/service.yaml /app/etc/service.yaml EXPOSE 8080 -CMD ["/app/service"] \ No newline at end of file +CMD ["/app/notification"] \ No newline at end of file diff --git a/etc/service.example.yaml b/etc/service.example.yaml index 52f9844..07047e8 100644 --- a/etc/service.example.yaml +++ b/etc/service.example.yaml @@ -5,12 +5,12 @@ Etcd: - 127.0.0.1:2379 Key: notification.rpc SMTP: - Host: smtp.mailgun.org + Host: smtp.mail.host Port: 25 - User: postmaster@abc123@30.com - Password: gg88g88 + User: smtp@user.net + Password: smtp_password SMSSender: - User: daniel@30cm.net - Password : test123 + User: sms@user.net + Password : sms_password diff --git a/go.mod b/go.mod index f983540..9ea4180 100644 --- a/go.mod +++ b/go.mod @@ -3,7 +3,7 @@ module app-cloudep-notification-service go 1.22.3 require ( - code.30cm.net/digimon/library-go/errors v1.0.0 + code.30cm.net/digimon/library-go/errs v1.2.3 code.30cm.net/digimon/library-go/validator v1.0.0 code.30cm.net/digimon/library-go/worker_pool v0.0.0-20240820153352-f9c90a90f5e2 github.com/minchao/go-mitake v1.0.0 diff --git a/internal/domain/errors.go b/internal/domain/errors.go new file mode 100644 index 0000000..b6d54f0 --- /dev/null +++ b/internal/domain/errors.go @@ -0,0 +1,58 @@ +package domain + +import ( + "fmt" + "strings" + + "code.30cm.net/digimon/library-go/errs" + "code.30cm.net/digimon/library-go/errs/code" + "github.com/zeromicro/go-zero/core/logx" +) + +type ErrorCode uint32 + +func (e ErrorCode) ToUint32() uint32 { + return uint32(e) +} + +const ( + _ = iota + SendMailErrorCode ErrorCode = iota + SendSMSErrorCode +) + +// SendMailError ... +func SendMailError(s ...string) *errs.LibError { + return errs.NewError(code.CloudEPNotification, code.ThirdParty, + SendMailErrorCode.ToUint32(), + fmt.Sprintf("%s", strings.Join(s, " "))) +} + +// SendMailErrorL logs error message and returns Err +func SendMailErrorL(l logx.Logger, filed []logx.LogField, s ...string) *errs.LibError { + e := SendMailError(s...) + if filed != nil || len(filed) >= 0 { + l.WithCallerSkip(1).WithFields(filed...).Error(e.Error()) + } + l.WithCallerSkip(1).Error(e.Error()) + + return e +} + +// SendSMSError ... +func SendSMSError(s ...string) *errs.LibError { + return errs.NewError(code.CloudEPNotification, code.ThirdParty, + SendSMSErrorCode.ToUint32(), + fmt.Sprintf("%s", strings.Join(s, " "))) +} + +// SendSMSErrorL logs error message and returns Err +func SendSMSErrorL(l logx.Logger, filed []logx.LogField, s ...string) *errs.LibError { + e := SendSMSError(s...) + if filed != nil || len(filed) >= 0 { + l.WithCallerSkip(1).WithFields(filed...).Error(e.Error()) + } + l.WithCallerSkip(1).Error(e.Error()) + + return e +} diff --git a/internal/logic/senderservice/send_mail_by_template_id_logic.go b/internal/logic/senderservice/send_mail_by_template_id_logic.go index b9decc9..08f53ae 100644 --- a/internal/logic/senderservice/send_mail_by_template_id_logic.go +++ b/internal/logic/senderservice/send_mail_by_template_id_logic.go @@ -4,9 +4,7 @@ import ( "app-cloudep-notification-service/gen_result/pb/notification" "app-cloudep-notification-service/internal/svc" "context" - "fmt" - ers "code.30cm.net/digimon/library-go/errors" "github.com/zeromicro/go-zero/core/logx" ) @@ -26,7 +24,6 @@ func NewSendMailByTemplateIdLogic(ctx context.Context, svcCtx *svc.ServiceContex // SendMailByTemplateId 寄送模板信件 func (l *SendMailByTemplateIdLogic) SendMailByTemplateId(in *notification.SendByTemplateIDReq) (*notification.OKResp, error) { - fmt.Println(ers.ResourceNotFound("testing")) return ¬ification.OKResp{}, nil } diff --git a/internal/logic/senderservice/send_mail_logic.go b/internal/logic/senderservice/send_mail_logic.go index c7aa930..7b16399 100644 --- a/internal/logic/senderservice/send_mail_logic.go +++ b/internal/logic/senderservice/send_mail_logic.go @@ -1,10 +1,11 @@ package senderservicelogic import ( + "app-cloudep-notification-service/internal/domain" "app-cloudep-notification-service/internal/domain/usecase" "context" - ers "code.30cm.net/digimon/library-go/errors" + ers "code.30cm.net/digimon/library-go/errs" "app-cloudep-notification-service/gen_result/pb/notification" "app-cloudep-notification-service/internal/svc" @@ -45,7 +46,7 @@ func (l *SendMailLogic) SendMail(in *notification.SendMailReq) (*notification.OK Body: in.GetBody(), From: in.GetFrom(), }); err != nil { - return nil, ers.InvalidFormat(err.Error()) + return nil, ers.InvalidFormat("invalid format") } // TODO 以後可以做換線 @@ -56,12 +57,15 @@ func (l *SendMailLogic) SendMail(in *notification.SendMailReq) (*notification.OK Body: in.GetBody(), }) if err != nil { - logx.WithCallerSkip(1).WithFields( - logx.Field("func", "MailSender.SendMail"), - logx.Field("in", in), - logx.Field("err", err), - ).Error(err.Error()) - return nil, ers.ArkInternal("MailSender.SendMail failed to send mail") + return nil, domain.SendMailErrorL( + logx.WithContext(l.ctx), + []logx.LogField{ + logx.Field("func", "MailSender.SendMail"), + logx.Field("in", in), + logx.Field("err", err), + }, + "MailSender.SendMail failed to send mail", + ) } return ¬ification.OKResp{}, nil diff --git a/internal/logic/senderservice/send_sms_by_template_id_logic.go b/internal/logic/senderservice/send_sms_by_template_id_logic.go index 5895774..0ec19d2 100644 --- a/internal/logic/senderservice/send_sms_by_template_id_logic.go +++ b/internal/logic/senderservice/send_sms_by_template_id_logic.go @@ -23,7 +23,7 @@ func NewSendSmsByTemplateIdLogic(ctx context.Context, svcCtx *svc.ServiceContext } } -// SendSMSByTemplateID 寄送模板簡訊 +// SendSmsByTemplateId 寄送模板簡訊 func (l *SendSmsByTemplateIdLogic) SendSmsByTemplateId(in *notification.SendByTemplateIDReq) (*notification.OKResp, error) { // todo: add your logic here and delete this line diff --git a/internal/logic/senderservice/send_sms_logic.go b/internal/logic/senderservice/send_sms_logic.go index 83d79fa..28e30a9 100644 --- a/internal/logic/senderservice/send_sms_logic.go +++ b/internal/logic/senderservice/send_sms_logic.go @@ -1,10 +1,11 @@ package senderservicelogic import ( + "app-cloudep-notification-service/internal/domain" "app-cloudep-notification-service/internal/domain/usecase" "context" - ers "code.30cm.net/digimon/library-go/errors" + "code.30cm.net/digimon/library-go/errs" "app-cloudep-notification-service/gen_result/pb/notification" "app-cloudep-notification-service/internal/svc" @@ -42,7 +43,7 @@ func (l *SendSmsLogic) SendSms(in *notification.SendSMSReq) (*notification.OKRes Body: in.GetBody(), RecipientAddress: in.GetTo(), }); err != nil { - return nil, ers.InvalidFormat(err.Error()) + return nil, errs.InvalidFormat(err.Error()) } // TODO 以後可以做換線 @@ -52,12 +53,15 @@ func (l *SendSmsLogic) SendSms(in *notification.SendSMSReq) (*notification.OKRes Body: in.GetBody(), }) if err != nil { - logx.WithCallerSkip(1).WithFields( - logx.Field("func", "SMSSender.SendSMS"), - logx.Field("in", in), - logx.Field("err", err), - ).Error(err.Error()) - return nil, ers.ArkInternal("SMSSender.SendSMS failed to send sms") + return nil, domain.SendSMSErrorL( + logx.WithContext(l.ctx), + []logx.LogField{ + logx.Field("func", "SMSSender.SendSMS"), + logx.Field("in", in), + logx.Field("err", err), + }, + "SMSSender.SendSMS failed to send sms", + ) } return ¬ification.OKResp{}, nil diff --git a/internal/svc/service_context.go b/internal/svc/service_context.go index 7ce53b9..d5a59dc 100644 --- a/internal/svc/service_context.go +++ b/internal/svc/service_context.go @@ -5,6 +5,9 @@ import ( domainUC "app-cloudep-notification-service/internal/domain/usecase" "app-cloudep-notification-service/internal/usecase" + "code.30cm.net/digimon/library-go/errs" + "code.30cm.net/digimon/library-go/errs/code" + v "code.30cm.net/digimon/library-go/validator" ) @@ -17,6 +20,7 @@ type ServiceContext struct { } func NewServiceContext(c config.Config) *ServiceContext { + errs.Scope = code.CloudEPNotification return &ServiceContext{ Config: c, MailSender: usecase.MustMailgunUseCase(usecase.MailUseCaseParam{Conf: c}),