From 4876fbcba29d439f5ee56b921293d391c012ad48 Mon Sep 17 00:00:00 2001
From: Billy <641833868@qq.com>
Date: Fri, 7 Nov 2025 14:03:57 +0800
Subject: [PATCH] =?UTF-8?q?=E9=82=80=E8=AF=B7=E7=A0=81=E4=BF=AE=E6=94=B9?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
addons/shopro/library/InviteHelper.php | 52 ++++++++++++++++----------
frontend/pages/order/confirm.vue | 25 ++++++-------
2 files changed, 44 insertions(+), 33 deletions(-)
diff --git a/addons/shopro/library/InviteHelper.php b/addons/shopro/library/InviteHelper.php
index b233d3b..519b28c 100644
--- a/addons/shopro/library/InviteHelper.php
+++ b/addons/shopro/library/InviteHelper.php
@@ -53,30 +53,42 @@ class InviteHelper
}
/**
- * 验证邀请码
- * @param string $inviteCode 邀请码
+ * 验证邀请码或手机号
+ * @param string $inviteCode 邀请码或手机号
* @return array
*/
public static function validate($inviteCode)
{
- $inviteCode = strtoupper(trim($inviteCode));
+ $input = trim($inviteCode);
- if (strlen($inviteCode) !== 6) {
- return ['code' => 0, 'msg' => '邀请码格式错误'];
+ // 判断输入类型:11位纯数字识别为手机号,否则识别为邀请码
+ if (preg_match('/^\d{11}$/', $input)) {
+ // 手机号模式
+ $inviter = UserModel::where('mobile', $input)
+ ->where('status', 'normal')
+ ->field(['id', 'nickname', 'avatar', 'invite_code', 'mobile'])
+ ->find();
+ } else {
+ // 邀请码模式
+ $input = strtoupper($input);
+
+ if (strlen($input) !== 6) {
+ return ['code' => 0, 'msg' => '邀请信息格式错误'];
+ }
+
+ $inviter = UserModel::where('invite_code', $input)
+ ->where('status', 'normal')
+ ->field(['id', 'nickname', 'avatar', 'invite_code', 'mobile'])
+ ->find();
}
- $inviter = UserModel::where('invite_code', $inviteCode)
- ->where('status', 'normal')
- ->field(['id', 'nickname', 'avatar', 'invite_code'])
- ->find();
-
if (!$inviter) {
- return ['code' => 0, 'msg' => '邀请码不存在'];
+ return ['code' => 0, 'msg' => '邀请信息无效'];
}
return [
'code' => 1,
- 'msg' => '邀请码有效',
+ 'msg' => '邀请信息有效',
'data' => [
'user_id' => $inviter->id,
'invite_code' => $inviter->invite_code,
@@ -91,13 +103,13 @@ class InviteHelper
/**
* 绑定上下级关系
- * @param string $inviteCode 邀请码
+ * @param string $inviteCode 邀请码或手机号
* @param int $userId 被邀请人ID
* @return array
*/
public static function bind($inviteCode, $userId)
{
- $inviteCode = strtoupper(trim($inviteCode));
+ $input = trim($inviteCode);
$user = UserModel::find($userId);
if (!$user) {
@@ -109,8 +121,8 @@ class InviteHelper
return ['code' => 0, 'msg' => '您已有推荐人,无法修改'];
}
- // 验证邀请码
- $validateResult = self::validate($inviteCode);
+ // 验证邀请码或手机号
+ $validateResult = self::validate($input);
if ($validateResult['code'] != 1) {
return $validateResult;
}
@@ -119,15 +131,17 @@ class InviteHelper
// 不能邀请自己
if ($inviterUserId == $userId) {
- return ['code' => 0, 'msg' => '不能使用自己的邀请码'];
+ return ['code' => 0, 'msg' => '不能使用自己的邀请信息'];
}
// 绑定
$user->parent_user_id = $inviterUserId;
- $user->invite_code_used = $inviteCode;
+ $user->invite_code_used = $validateResult['data']['invite_code']; // 统一使用邀请码保存
$user->save();
- \think\Log::info("邀请码绑定: 邀请人[{$inviterUserId}] -> 被邀请人[{$userId}] 邀请码[{$inviteCode}]");
+ // 判断是手机号还是邀请码用于日志
+ $inputType = preg_match('/^\d{11}$/', $input) ? '手机号' : '邀请码';
+ \think\Log::info("邀请绑定: 邀请人[{$inviterUserId}] -> 被邀请人[{$userId}] {$inputType}[{$input}]");
// 触发分销业绩统计
$agent = new \addons\shopro\service\commission\Agent($userId);
diff --git a/frontend/pages/order/confirm.vue b/frontend/pages/order/confirm.vue
index b868aa7..3d22846 100644
--- a/frontend/pages/order/confirm.vue
+++ b/frontend/pages/order/confirm.vue
@@ -48,11 +48,11 @@
v-if="!userInfo.parent_user_id"
class="order-item ss-flex ss-col-center ss-row-between ss-p-x-20 bg-white ss-r-b-20"
>
- 邀请码
+ 邀请信息