public static function getActivityManager($wechatId, $activityType, $memberId) { $member = ActivityMember::where(['wechat_id' => $wechatId, 'doctor_id' => $memberId, 'is_ongoing' => 1])->get()->first(); if (!$member) { $activity = self::where(['id' => $member['activity_id'], 'wechat_id' => $wechatId, 'activity_type_id' => $activityType, 'status' => self::STATUS_ONGOING])->get()->first(); if ($activity) { return ActivityManager::getById($activity['activity_manager_id']); } } return null; }
/** * Member join in ongoing activity * * @param $wechatId * @param $activityTypeId * @param $activityCode * @param $memberId * @return array */ public static final function memberJoinActivity($wechatId, $activityTypeId, $activityCode, $memberId) { $result = ['status' => ErrorCode::success, 'param' => null]; //根据编号获取活动 $activity = Activity::getActivityByCode($wechatId, $activityTypeId, $activityCode); if (!$activity) { $result['status'] = ErrorCode::err_activity_not_exist; return $result; } //获取manager $manager = ActivityManager::getById($activity['activity_manager_id']); if (!$manager) { $result['status'] = ErrorCode::err_activity_manager_not_found; return $result; } //获取活动session $key = 'activity-' . $wechatId . '-' . $manager['id']; $session = Session::get($key); if (!$session) { $result['status'] = ErrorCode::err_activity_session_not_exist; return $result; } if ($session['activity_code'] != $activityCode) { $result['status'] = ErrorCode::err_activity_session_not_exist; return $result; } //检查是否重复加入活动 if (in_array($memberId, $session['member_id'])) { $result['status'] = ErrorCode::err_member_repeat_join; $result['param'] = $activity; return $result; } //检查是否已加入过另外的活动 $preId = ActivityMember::getActivityIdOngoing($wechatId, $memberId); $pre = Activity::getActivityById($preId['activity_id']); if ($pre) { $result['status'] = ErrorCode::err_pre_joined_activity_ongoing; $result['param'] = $pre; return $result; } //添加用户到活动成员表 $member = new ActivityMember(); $member->wechat_id = $wechatId; $member->activity_id = $session['activity_id']; $member->user_id = $memberId; $member->is_ongoing = 1; if (!$member->save()) { SysLog::error(__FILE__, __METHOD__, __LINE__, 'create activity member error'); $result['status'] = ErrorCode::err_create_activity_member_fail; return $result; } //更新活动session, 添加用户ID到session $session['member_count']++; $session['member_id'][] = $memberId; $session['timestamps'] = time(); if (!Session::update($key, $session, $session['duration'])) { $result['status'] = ErrorCode::err_update_activity_session_fail; return $result; } Log::info(PHP_EOL . '[===================================================Session Member Join :]' . PHP_EOL . '[activity type:] ' . $activityTypeId . PHP_EOL . '[activity code:] ' . $session['activity_code'] . PHP_EOL . '[session key:] ' . $key . PHP_EOL . '[session value:] ' . json_encode($session) . PHP_EOL); $result['status'] = ErrorCode::success; $result['param'] = $activity; return $result; }
private static function registerHandle($app, $user, $mobile) { $openId = $user['open_id']; if ($openId) { //新注册用户 if (!$user['mobile']) { //先寻找有无此手机号的代表, 有则绑定手机号和openid $manager = ActivityManager::getByMobile($mobile); if ($manager->bindManager($app, $openId, $mobile)) { return UserCache::updateUser($app, $openId); } else { if (Doctor::createDoctor($app, $openId, $mobile)) { return UserCache::updateUser($app, $openId); } } } else { if ($user['type'] == UserOpenid::TYPE_DOCTOR) { $doctor = Doctor::getById($user['id']); $doctor->mobile = $mobile; $doctor->updated_at = Carbon::now(); if ($doctor->save()) { return UserCache::updateUser($app, $openId); } } if ($user['type'] == UserOpenid::TYPE_MANAGER) { $manager = ActivityManager::getById($user['id']); $manager->mobile = $mobile; $manager->updated_at = Carbon::now(); if ($manager->save()) { return UserCache::updateUser($app, $openId); } } } } return false; }