51 lines
1.2 KiB
Go
51 lines
1.2 KiB
Go
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
|
|
}
|