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,39 +133,6 @@
            $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)
@@ -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;
    }