Files

74 lines
1.8 KiB
Go

package paymentconfig
import (
"time"
"hfb_sys/backend/internal/model"
)
// toDTO 转换为 DTO
func (r *Repository) toDTO(item model.PaymentMerchantConfig, includeSecret bool) (ConfigDTO, error) {
dto := ConfigDTO{
ID: item.ID,
Name: item.Name,
Provider: item.Provider,
MerchantID: item.MerchantID,
GatewayURL: item.GatewayURL,
NotifyURL: item.NotifyURL,
JumpURL: item.JumpURL,
PayWay: item.PayWay,
JSPayFlag: item.JSPayFlag,
SignType: item.SignType,
ExtraConfig: item.ExtraConfig,
IsDefault: item.IsDefault,
Status: item.Status,
Environment: item.Environment,
BusinessTags: item.BusinessTags,
TotalTransactions: item.TotalTransactions,
TotalAmountCent: item.TotalAmountCent,
CreatedBy: item.CreatedBy,
UpdatedBy: item.UpdatedBy,
CreatedAt: item.CreatedAt.Format(time.RFC3339),
UpdatedAt: item.UpdatedAt.Format(time.RFC3339),
}
if item.LastUsedAt != nil {
s := item.LastUsedAt.Format(time.RFC3339)
dto.LastUsedAt = &s
}
// 只有明确要求时才解密并返回密钥
if includeSecret {
signKey, err := r.encryptor.Decrypt(item.SignKey)
if err != nil {
return ConfigDTO{}, ErrDecryptionFailed
}
notifyKey, err := r.encryptor.Decrypt(item.NotifyKey)
if err != nil {
return ConfigDTO{}, ErrDecryptionFailed
}
dto.SignKey = signKey
dto.NotifyKey = notifyKey
}
return dto, nil
}
// validateCreateRequest 验证创建请求
func firstNonEmpty(vals ...string) string {
for _, v := range vals {
if v != "" {
return v
}
}
return ""
}
func defaultSignType(provider string) string {
if provider == "lakala" {
return "SHA256withRSA"
}
return "MD5"
}