Some checks failed
构建并部署到测试环境(无 SSH) / build-and-deploy (push) Has been cancelled
- personal_customer.Service: 删除已迁移到 client_auth 的死方法 (GetProfile/SendVerificationCode/VerifyCode),移除多余的 verificationService/jwtManager 依赖 - 删除 internal/service/customer/ 整个目录(零引用的早期残留)
97 lines
2.5 KiB
Go
97 lines
2.5 KiB
Go
// Package personal_customer 提供个人客户资料管理的业务逻辑服务
|
|
package personal_customer
|
|
|
|
import (
|
|
"context"
|
|
|
|
"github.com/break/junhong_cmp_fiber/internal/model"
|
|
"github.com/break/junhong_cmp_fiber/internal/store/postgres"
|
|
"github.com/break/junhong_cmp_fiber/pkg/errors"
|
|
"go.uber.org/zap"
|
|
"gorm.io/gorm"
|
|
)
|
|
|
|
// Service 个人客户服务
|
|
type Service struct {
|
|
store *postgres.PersonalCustomerStore
|
|
phoneStore *postgres.PersonalCustomerPhoneStore
|
|
logger *zap.Logger
|
|
}
|
|
|
|
// NewService 创建个人客户服务实例
|
|
func NewService(
|
|
store *postgres.PersonalCustomerStore,
|
|
phoneStore *postgres.PersonalCustomerPhoneStore,
|
|
logger *zap.Logger,
|
|
) *Service {
|
|
return &Service{
|
|
store: store,
|
|
phoneStore: phoneStore,
|
|
logger: logger,
|
|
}
|
|
}
|
|
|
|
// UpdateProfile 更新个人资料
|
|
func (s *Service) UpdateProfile(ctx context.Context, customerID uint, nickname, avatarURL string) error {
|
|
customer, err := s.store.GetByID(ctx, customerID)
|
|
if err != nil {
|
|
s.logger.Error("查询个人客户失败",
|
|
zap.Uint("customer_id", customerID),
|
|
zap.Error(err),
|
|
)
|
|
return errors.Wrap(errors.CodeInternalError, err, "查询个人客户失败")
|
|
}
|
|
|
|
// 更新资料
|
|
if nickname != "" {
|
|
customer.Nickname = nickname
|
|
}
|
|
if avatarURL != "" {
|
|
customer.AvatarURL = avatarURL
|
|
}
|
|
|
|
if err := s.store.Update(ctx, customer); err != nil {
|
|
s.logger.Error("更新个人资料失败",
|
|
zap.Uint("customer_id", customerID),
|
|
zap.Error(err),
|
|
)
|
|
return errors.Wrap(errors.CodeInternalError, err, "更新个人资料失败")
|
|
}
|
|
|
|
s.logger.Info("更新个人资料成功",
|
|
zap.Uint("customer_id", customerID),
|
|
)
|
|
|
|
return nil
|
|
}
|
|
|
|
// GetProfileWithPhone 获取个人资料(包含主手机号)
|
|
func (s *Service) GetProfileWithPhone(ctx context.Context, customerID uint) (*model.PersonalCustomer, string, error) {
|
|
// 获取客户信息
|
|
customer, err := s.store.GetByID(ctx, customerID)
|
|
if err != nil {
|
|
s.logger.Error("查询个人客户失败",
|
|
zap.Uint("customer_id", customerID),
|
|
zap.Error(err),
|
|
)
|
|
return nil, "", errors.Wrap(errors.CodeInternalError, err, "查询个人客户失败")
|
|
}
|
|
|
|
// 获取主手机号
|
|
phone := ""
|
|
primaryPhone, err := s.phoneStore.GetPrimaryPhone(ctx, customerID)
|
|
if err != nil {
|
|
if err != gorm.ErrRecordNotFound {
|
|
s.logger.Error("查询主手机号失败",
|
|
zap.Uint("customer_id", customerID),
|
|
zap.Error(err),
|
|
)
|
|
// 不返回错误,继续返回客户信息(手机号为空)
|
|
}
|
|
} else {
|
|
phone = primaryPhone.Phone
|
|
}
|
|
|
|
return customer, phone, nil
|
|
}
|