Beispiel #1
0
 /**
  * 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;
 }
Beispiel #2
0
 /**
  * Close activity
  *
  * @param $activity
  * @return void
  */
 public static function closeActivity($activity)
 {
     ActivityMember::closeActivity($activity);
     $activity->status = self::STATUS_CLOSED;
     $activity->closed_at = Carbon::now();
     $activity->save();
 }