拆分订单仓储模块
This commit is contained in:
@@ -0,0 +1,55 @@
|
||||
package order
|
||||
|
||||
import (
|
||||
"crypto/rand"
|
||||
"errors"
|
||||
"strconv"
|
||||
|
||||
"gorm.io/gorm"
|
||||
"hfb_sys/backend/internal/auditlog"
|
||||
"hfb_sys/backend/internal/timeutil"
|
||||
)
|
||||
|
||||
func firstNonEmpty(values ...string) string {
|
||||
for _, value := range values {
|
||||
if value != "" {
|
||||
return value
|
||||
}
|
||||
}
|
||||
return ""
|
||||
}
|
||||
|
||||
func newOrderNo() (string, error) {
|
||||
// 生成格式:RO + YYYYMMDDHHMMSS + 3位随机数
|
||||
// 例如:RO20260603123456789
|
||||
now := timeutil.ShanghaiNow()
|
||||
|
||||
// 时间部分:年月日时分秒 (14位)
|
||||
timeStr := now.Format("20060102150405")
|
||||
|
||||
// 随机部分:3位数字 (000-999)
|
||||
buf := make([]byte, 2)
|
||||
if _, err := rand.Read(buf); err != nil {
|
||||
return "", err
|
||||
}
|
||||
// 将2字节转为0-999的数字
|
||||
randomNum := (int(buf[0])<<8 | int(buf[1])) % 1000
|
||||
|
||||
return "RO" + timeStr + strconv.Itoa(1000 + randomNum)[1:], nil
|
||||
}
|
||||
|
||||
func appendAuditLog(tx *gorm.DB, actorID uint64, action string, bizType string, bizID uint64, meta AuditMeta, detail map[string]any) error {
|
||||
return auditlog.Append(tx, auditlog.Entry{
|
||||
ActorType: "admin",
|
||||
ActorID: actorID,
|
||||
Action: action,
|
||||
BizType: bizType,
|
||||
BizID: &bizID,
|
||||
Meta: meta,
|
||||
Detail: detail,
|
||||
})
|
||||
}
|
||||
|
||||
func IsNotFound(err error) bool {
|
||||
return errors.Is(err, gorm.ErrRecordNotFound)
|
||||
}
|
||||
Reference in New Issue
Block a user