优化订单结算金额展示和钱包流水号
This commit is contained in:
@@ -2,7 +2,6 @@ package wallet
|
||||
|
||||
import (
|
||||
"crypto/rand"
|
||||
"encoding/hex"
|
||||
"fmt"
|
||||
"math"
|
||||
"time"
|
||||
@@ -290,9 +289,13 @@ func toLedgerDTO(row model.WalletLedger) LedgerDTO {
|
||||
}
|
||||
|
||||
func newLedgerNo() (string, error) {
|
||||
buf := make([]byte, 4)
|
||||
// 生成格式:WL + YYYYMMDDHHMMSS + 毫秒 + 4位随机数
|
||||
// 例如:WL202606051234561230456,便于用户和客服识别。
|
||||
now := time.Now()
|
||||
buf := make([]byte, 2)
|
||||
if _, err := rand.Read(buf); err != nil {
|
||||
return "", err
|
||||
}
|
||||
return fmt.Sprintf("WL%d%s", time.Now().UnixNano(), hex.EncodeToString(buf)), nil
|
||||
randomNum := (int(buf[0])<<8 | int(buf[1])) % 10000
|
||||
return fmt.Sprintf("WL%s%03d%04d", now.Format("20060102150405"), now.Nanosecond()/1_000_000, randomNum), nil
|
||||
}
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
package wallet
|
||||
|
||||
import (
|
||||
"regexp"
|
||||
"testing"
|
||||
|
||||
"hfb_sys/backend/internal/model"
|
||||
@@ -29,3 +30,14 @@ func TestApplyEntryRoundsMoneyBeforeComparing(t *testing.T) {
|
||||
t.Fatalf("FrozenBalance = %v, want 0", account.FrozenBalance)
|
||||
}
|
||||
}
|
||||
|
||||
func TestNewLedgerNoUsesReadableFormat(t *testing.T) {
|
||||
ledgerNo, err := newLedgerNo()
|
||||
if err != nil {
|
||||
t.Fatalf("newLedgerNo() error = %v", err)
|
||||
}
|
||||
matched := regexp.MustCompile(`^WL\d{21}$`).MatchString(ledgerNo)
|
||||
if !matched {
|
||||
t.Fatalf("ledgerNo = %q, want WL + 21 digits", ledgerNo)
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user