订单生成调整

This commit is contained in:
李子铭 2025-03-19 16:27:03 +08:00
parent 5494d7079e
commit fbe1d8712e
3 changed files with 14 additions and 39 deletions

View File

@ -4,6 +4,6 @@ import "context"
// GenerateMixRepo interface
type GenerateMixRepo interface {
GeneratorString(ctx context.Context, workId int) (string, error)
GeneratorNumber(ctx context.Context, workId int) (uint64, error)
GeneratorString(ctx context.Context) string
GeneratorNumber(ctx context.Context) int64
}

View File

@ -9,7 +9,6 @@ import (
"voucher/internal/biz/bo"
"voucher/internal/biz/vo"
"voucher/internal/pkg/lock"
"voucher/internal/pkg/uid"
)
func (v *VoucherBiz) order(ctx context.Context, req *bo.OrderCreateReqBo, product *bo.ProductBo) (*bo.OrderBo, error) {
@ -64,13 +63,8 @@ func (v *VoucherBiz) orderRetry(ctx context.Context, order *bo.OrderBo) error {
func (v *VoucherBiz) create(ctx context.Context, req *bo.OrderCreateReqBo, product *bo.ProductBo) (*bo.OrderBo, error) {
orderNo, err := v.GenerateMixRepo.GeneratorString(ctx, uid.Order)
if err != nil {
return nil, err
}
return v.OrderRepo.Create(ctx, &bo.OrderBo{
OrderNo: orderNo,
OrderNo: v.GenerateMixRepo.GeneratorString(ctx),
OutBizNo: req.OutBizNo,
ProductNo: req.ProductNo,
Account: req.Account,

View File

@ -8,7 +8,6 @@ import (
"os"
"voucher/internal/biz/mixrepos"
"voucher/internal/data"
"voucher/internal/pkg/uid"
)
type GenerateRepoImpl struct {
@ -25,6 +24,7 @@ func NewGenerateMixRepoImpl(rdb *data.Rdb) (mixrepos.GenerateMixRepo, error) {
if err != nil {
return nil, err
}
serverId := g.hashMod(name)
node, err := snowflake.NewNode(int64(serverId))
@ -37,35 +37,6 @@ func NewGenerateMixRepoImpl(rdb *data.Rdb) (mixrepos.GenerateMixRepo, error) {
return g, nil
}
// GeneratorString 生成字符串
func (s *GenerateRepoImpl) GeneratorString(_ context.Context, workId int) (string, error) {
return s.node.Generate().String(), nil
//serverIdStr := uid.GetAppId(ctx)
//serverId := s.hashMod(serverIdStr)
//
//number, err := uid.NewSignGenerator(s.rdb.Rdb).SetWorkerID(workId).SetServerID(serverId).GetNumber()
//if err != nil {
// return "", err
//}
//
//return strconv.FormatUint(number, 10), nil
}
// GeneratorNumber 生成unit64
func (s *GenerateRepoImpl) GeneratorNumber(ctx context.Context, workId int) (uint64, error) {
serverIdStr := uid.GetAppId(ctx)
serverId := s.hashMod(serverIdStr)
number, err := uid.NewSignGenerator(s.rdb.Rdb).SetWorkerID(workId).SetServerID(serverId).GetNumber()
if err != nil {
return 0, err
}
return number, nil
}
// hashMod hash mod
func (s *GenerateRepoImpl) hashMod(hashStr string) int {
hash := fnv.New32a()
@ -74,3 +45,13 @@ func (s *GenerateRepoImpl) hashMod(hashStr string) int {
hashValue := hash.Sum32()
return int(math.Mod(float64(hashValue), 32))
}
// GeneratorString 生成字符串
func (s *GenerateRepoImpl) GeneratorString(_ context.Context) string {
return s.node.Generate().String()
}
// GeneratorNumber 生成 int64
func (s *GenerateRepoImpl) GeneratorNumber(_ context.Context) int64 {
return s.node.Generate().Int64()
}