public function extendFuncGroups($fgList, $durationInSecs) { Log::record('WebsiteUserFuncManager extend:' . print_r($fgList, true) . ' secs:' . $durationInSecs . ' uid:' . $this->websiteUserId); Log::save(); $currTime = time(); $tb_userFG = M('user_func_group'); $existingRelations = $tb_userFG->where('user_id=' . $this->websiteUserId)->select(); $existingGroupId2RealtionMap = array(); foreach ($existingRelations as $relation) { $existingGroupId2RealtionMap[$relation['group_id']] = $relation; } foreach ($fgList as $codeFgId) { if (in_array($codeFgId, array_keys($existingGroupId2RealtionMap))) { // 该功能已经存在关系表里,只需要进行update $tmpUserFuncGroup = $existingGroupId2RealtionMap[$codeFgId]; $tmp = array(); if (!empty($tmpUserFuncGroup['expire_time']) && $tmpUserFuncGroup['expire_time'] > $currTime) { // 该功能未过期 $tmp['start_time'] = $tmpUserFuncGroup['start_time']; $tmp['expire_time'] = $tmpUserFuncGroup['expire_time'] + $durationInSecs; $tmp['status'] = 1; } else { $tmp['start_time'] = $currTime; $tmp['expire_time'] = $currTime + $durationInSecs; $tmp['status'] = 1; } $tb_userFG->where('id=' . $tmpUserFuncGroup['id'])->setField($tmp); } else { $tmp = array(); $tmp['user_id'] = $this->websiteUserId; $tmp['group_id'] = $codeFgId; $tmp['start_time'] = $currTime; $tmp['expire_time'] = $currTime + $durationInSecs; $tmp['status'] = 1; $tb_userFG->add($tmp); } } // 检查该用户是否已经配置公共账号,如果配置了,自动开通功能组对应的功能项,并复制模版数据。 $publicAccount = M('wxuser')->where(array('uid' => $this->websiteUserId, 'status' => 1))->field('token')->find(); if ($publicAccount) { //$websiteUserId, $uname, $token $userInfo = M('users')->where(array('id' => $this->websiteUserId))->field('username')->find(); $publicAccountFuncManager = new PublicAccountFuncManager($this->websiteUserId, $userInfo['username'], $publicAccount['token']); foreach ($fgList as $fgId) { $publicAccountFuncManager->openSingleFuncGroup($fgId); } } }