Переглянути джерело

feat(payment): 新增分润接收申请单业务类型并优化编号生成逻辑

- 在 NumberBizEnum 中新增 PROFIT_SHARE_RECEIVER 枚举值及对应描述- 更新 generate_number 函数,支持自定义随机数长度,默认为3位- 优化编号生成注释,明确格式组成与参数说明
- 调整随机数填充逻辑以适配可变长度参数
runphp 4 місяців тому
батько
коміт
a6133fa435
2 змінених файлів з 7 додано та 3 видалено
  1. 2 1
      src/Enum/NumberBizEnum.php
  2. 5 2
      src/helper.php

+ 2 - 1
src/Enum/NumberBizEnum.php

@@ -6,12 +6,12 @@ namespace SixShop\Payment\Enum;
 
 enum NumberBizEnum: int
 {
-    // 1 订单号 2 订单支付 3 订单退款 4 提现 5 购买会员
     case ORDER_NO = 1;
     case ORDER_PAY = 2;
     case ORDER_REFUND = 3;
     case WITHDRAWAL = 4;
     case VIP_PAY = 5;
+    case PROFIT_SHARE_RECEIVER = 6;
 
     public function toString(): string
     {
@@ -21,6 +21,7 @@ enum NumberBizEnum: int
             self::ORDER_REFUND => '订单退款',
             self::WITHDRAWAL => '提现',
             self::VIP_PAY => 'VIP支付',
+            self::PROFIT_SHARE_RECEIVER => '分润接收申请单'
         };
     }
 

+ 5 - 2
src/helper.php

@@ -7,13 +7,16 @@ use SixShop\Payment\Enum\NumberBizEnum;
 if (!function_exists('generate_number')) {
     /**
      * 生成20位数字编号
+     *
+     * 如果位数不够时可以调整$randomLength值,默认为3位
+     *
      * 格式:14位日期时间(YmdHis) + 2位业务码(00-99) + 3位随机数 + 1位校验位
      *
      * @param NumberBizEnum $bizCode 业务编码(0-99),1 订单号 2 订单支付
      * @return string 20位数字编号
      * @throws InvalidArgumentException 当业务码不在0-99范围时抛出
      */
-    function generate_number(NumberBizEnum $bizCode): string
+    function generate_number(NumberBizEnum $bizCode, int $randomLength = 3): string
     {
         $bizCode = $bizCode->value;
         // 1. 校验业务码范围
@@ -25,7 +28,7 @@ if (!function_exists('generate_number')) {
         // 3. 2位业务码(自动补零)
         $bizPart = str_pad((string)$bizCode, 2, '0', STR_PAD_LEFT);
         // 4. 3位安全随机数
-        $random = str_pad((string)random_int(0, 999), 3, '0', STR_PAD_LEFT);
+        $random = str_pad((string)random_int(0, 999), $randomLength, '0', STR_PAD_LEFT);
         // 5. 组合前19位
         $prefix = $datetime . $bizPart . $random;
         // 6. 计算校验位(简单加权求和)