package withdrawal import ( "crypto/rand" "encoding/hex" "fmt" "time" ) // 生成提现单号 func generateWithdrawNo() (string, error) { buf := make([]byte, 8) if _, err := rand.Read(buf); err != nil { return "", err } return fmt.Sprintf("WD%d%s", time.Now().Unix(), hex.EncodeToString(buf)[:8]), nil } // 账号脱敏 // 账号脱敏 func maskAccountNo(accountNo, accountType string) string { length := len(accountNo) if length <= 4 { return accountNo } switch accountType { case "alipay", "wechat": if length == 11 { return accountNo[:3] + "****" + accountNo[7:] } return accountNo[:2] + "****" + accountNo[length-2:] case "bank": if length > 8 { return accountNo[:4] + "****" + accountNo[length-4:] } return accountNo[:2] + "****" + accountNo[length-2:] } return accountNo } // 简化的解密函数(实际应该调用 paymentaccount 模块的解密) // 简化的解密函数(实际应该调用 paymentaccount 模块的解密) func (r *Repository) decryptAccountNo(encrypted string) (string, error) { // 这里应该调用 paymentaccount 包的解密函数 // 为了简化,直接返回(实际使用时需要正确实现) return encrypted, nil }