From 91a56a9b83ec23a1580aa586a24b34aba6990ffa Mon Sep 17 00:00:00 2001
From: lyzflash <lzhflash@163.com>
Date: Mon, 17 Nov 2025 14:58:42 +0800
Subject: [PATCH] 报名时可选择加入的分会
---
admin/app/api/model/branch/ActivityUser.php | 105 +++++++++++++++++++++++++++++-----------------------
1 files changed, 59 insertions(+), 46 deletions(-)
diff --git a/admin/app/api/model/branch/ActivityUser.php b/admin/app/api/model/branch/ActivityUser.php
index 8fa0ae3..d0cc402 100644
--- a/admin/app/api/model/branch/ActivityUser.php
+++ b/admin/app/api/model/branch/ActivityUser.php
@@ -32,9 +32,9 @@
];
/**
- * 获取报名用户列表
+ * 获取用户报名的活动列表
*/
- public function getList($user_id, $params = [])
+ public function getListForUser($user_id, $params = [])
{
// 构建查询规则
$model = $this->alias('A')->with(['activity' => ['branch', 'image']])
@@ -95,8 +95,8 @@
public function addUser($user, $params)
{
$detail = ActivityModel::detail($params["activity_id"]);
- // 如果用户还没加入连盟
- if (!$params['is_member']) {
+ // 如果用户还没加入连盟并且不是帮朋友报名
+ if (!$params['is_member'] && !$params['is_friend']) {
$this->addMember($detail, $params, $user);
}
// 验证数据
@@ -118,6 +118,14 @@
'in_radius' => $params['in_radius'],
'app_id' => self::$app_id,
];
+ // 如果是帮朋友报名,把用户信息记录下来
+ if ($params['is_friend']) {
+ $data['real_name'] = $params['real_name'];
+ $data['mobile'] = $params['mobile'];
+ $data['company'] = $params['company'];
+ $data['is_friend'] = 1;
+ $data['reg_user_id'] = $user['user_id']; // 记录是谁帮注册的,因为核销的时候会把user_id改为实际报名人的
+ }
$data['trade_no'] = $data['order_no'];
$this->save($data);
// 如果不需要在线支付
@@ -125,46 +133,13 @@
$this->onPayOffline($data['order_no']);
}
return $this;
-
- // $order_id = $this['order_id'];
- // if (!$order_id) {
- // $this->error = '报名失败';
- // return false;
- // }
- // // 处理支付
- // if ($detail['fee'] > 0) {
- // // 如果使用了积分
- // if ($params['points_num']) {
- // $describe = "活动报名消费:{$data['order_no']}";
- // $user->setIncPoints(-$params['points_num'], $describe);
- // }
- // // 如果使用了余额
- // if ($params['balance']) {
- // BalanceLogModel::add(BalanceLogSceneEnum::RECHARGE, [
- // 'user_id' => $user['user_id'],
- // 'money' => $params['balance'],
- // 'app_id' => self::$app_id
- // ], ['order_no' => $data['order_no']]);
- // $user->where('user_id', '=', $user['user_id'])
- // ->dec('balance', $params['balance'])
- // ->update();
- // }
- // // 如果还需要在线支付
- // if ($params['online_money']) {
- // $payment = self::onOrderPayment($user, $data['order_no'], $params['pay_type'], $params['pay_source'], $params['online_money']);
- // } else {
- // // 报名直接完成
-
- // }
- // }
- // return $this['order_id'];
}
public function addMember($activity, $params, $user)
{
$data = [
'user_id' => $user['user_id'],
- 'branch_id' => $activity['branch_id'],
+ 'branch_id' => $params['branch_id'],
'real_name' => $params['real_name'],
'mobile' => $params['mobile'],
'company' => $params['company'],
@@ -229,6 +204,11 @@
$this->error = '报名名额已满';
return false;
}
+ // 如果是帮朋友报名,验证手机号是不是已报过
+ if ($params['is_friend'] && ActivityUserModel::isRegByFriend($params['mobile'], $activity['activity_id'])) {
+ $this->error = '该手机号已经报过名了';
+ return false;
+ }
// 如果需要支付报名费
$params['online_money'] = 0;
if ($activity['fee'] > 0) {
@@ -277,29 +257,62 @@
/**
* 完成核销
*/
- public function onVerify($user, $activity_id)
+ public function onVerify($user, $activity_id, $params = [])
{
$activity = ActivityModel::detail($activity_id);
if ($activity['status_text']['status'] == 2) {
$this->error = '活动已经结束了,不能签到啦';
return false;
}
- $detail = ActivityUserModel::detail(['activity_id' => $activity_id, 'user_id' => $user['user_id']]);
+ $detail = ActivityUserModel::detail(['activity_id' => $activity_id, 'user_id' => $user['user_id'], 'is_friend' => 0]);
+ if (!$detail) {
+ // 如果朋友帮报名
+ if (!empty($params['verify_mobile'])) {
+ $detail = ActivityUserModel::detail(['activity_id' => $activity_id, 'mobile' => $params['verify_mobile'], 'is_friend' => 1]);
+ if (!$detail) {
+ $this->error = '很抱歉,没有找到报名记录';
+ return false;
+ }
+ // 更新信息
+ $userData = [];
+ if ($user['real_name'] == '') {
+ $userData['real_name'] = $detail['real_name'];
+ }
+ if ($user['mobile'] == '') {
+ $userData['mobile'] = $detail['mobile'];
+ }
+ if ($userData) {
+ $user->save($userData);
+ }
+ } else {
+ $this->error = 'not_reg';
+ return false;
+ }
+ }
if($detail['is_verify'] == 1) {
$this->error = '您已经签到过啦';
return false;
}
- $detail->save([
+ $data = [
'is_verify' => 1,
'verify_time' => time()
- ]);
+ ];
+ // 如果是帮报名的签到,将user_id改成真正报名的人
+ if (!empty($params['verify_mobile'])) {
+ $data['user_id'] = $user['user_id'];
+ }
+ $detail->save($data);
// 发放奖励
$setting = BranchSettingModel::getItem('basic');
- if ($setting['participate_user'] > 0) {
- $describe = "活动签到获得奖励[活动ID:{$activity_id}]";
- $user->setIncPoints($setting['participate_user'], $describe);
+ $participate_points = $setting['participate_user'];
+ $member = MemberModel::detail($user['user_id'], ['position']);
+ if ($member && $member['position'] && $member['position']['participate_points'] > 0) {
+ $participate_points = $member['position']['participate_points'];
}
-
+ if ($participate_points > 0) {
+ $describe = "活动签到获得奖励[活动ID:{$activity_id}]";
+ $user->setIncPoints($participate_points, $describe);
+ }
return true;
}
--
Gitblit v1.9.2