package logic import ( "context" "lone-services/pkg/sms" "lone-services/pkg/utils" "lone-services/rpc/chore/pb" "lone-services/services/chore/internal/dao" "lone-services/services/chore/internal/model" "lone-services/services/chore/internal/svc" "github.com/zeromicro/go-zero/core/logx" "google.golang.org/grpc/codes" "google.golang.org/grpc/status" ) type SendPasswordLogic struct { ctx context.Context svcCtx *svc.ServiceContext logx.Logger } func NewSendPasswordLogic(ctx context.Context, svcCtx *svc.ServiceContext) *SendPasswordLogic { return &SendPasswordLogic{ ctx: ctx, svcCtx: svcCtx, Logger: logx.WithContext(ctx), } } func (l *SendPasswordLogic) SendPassword(in *chore.SendPasswordReq) (*chore.SendPasswordResp, error) { if l.svcCtx.SMS == nil { return nil, status.Error(codes.InvalidArgument, "短信服务未配置") } err := l.svcCtx.SMS.SendByKind(in.Mobile, sms.TemplatePassword, map[string]string{"code": in.Password}) log := dao.SmsLogCreate{ Mobile: in.Mobile, Content: "您的初始密码为:" + in.Password + ",请尽快登录后修改!", BakContent: err.Error(), BrowserInfo: in.BrowserInfo, BrowserName: in.BrowserName, Ip: in.Ip, } sErr := model.SmsLogModel{}.Init().Create(&log) if sErr != nil { l.Errorf("sms log create: %v", sErr) return nil, status.Error(codes.Internal, "短信日志保存失败") } if err != nil { l.Errorf("sms send: %v", err) return nil, status.Error(codes.InvalidArgument, "短信发送失败") } return &chore.SendPasswordResp{Code: utils.NumberOne}, nil }