EduSoho 如何與第三方平臺(tái)實(shí)現(xiàn)同步注冊(cè)和開通課程
1、注冊(cè)
使用方法
HTTP-POST > /api/users
對(duì)應(yīng)文件與代碼
api/src/Topxia/Api/Resource/Users.php
public function post(Application $app, Request $request)
{
$fields = $request->request->all();
if (!ArrayToolkit::requireds($fields, array('email', 'nickname', 'password'))) {
return array('message' => '缺少必填字段');
}
if (empty($fields['registeredWay']) || !in_array(strtolower($fields['registeredWay']), array('ios', 'android'))) {
$fields['registeredWay'] = $this->guessDeviceFromUserAgent($request->headers->get("user-agent"));
}
$ip = $request->getClientIp();
$fields['createdIp'] = $ip;
$authSettings = ServiceKernel::instance()->createService('System:SettingService')->get('auth', array());
if (isset($authSettings['register_protective'])) {
$type = $authSettings['register_protective'];
switch ($type) {
case 'middle':
$condition = array(
'startTime' => time() - 24 * 3600,
'createdIp' => $ip);
$registerCount = $this->getUserService()->countUsers($condition);
if ($registerCount > 30) {
goto failure;
}
goto register;
break;
case 'high':
$condition = array(
'startTime' => time() - 24 * 3600,
'createdIp' => $ip);
$registerCount = $this->getUserService()->countUsers($condition);
if ($registerCount > 10) {
goto failure;
}
$registerCount = $this->getUserService()->countUsers(array(
'startTime' => time() - 3600,
'createdIp' => $ip));
if ($registerCount >= 1) {
goto failure;
}
goto register;
break;
default:
goto register;
break;
}
}
register:
$user = $this->getUserService()->register($fields, array('mobile'));
$user['profile'] = $this->getUserService()->getUserProfile($user['id']);
return $this->callFilter('User', $user);
failure:
return array('message' => '已經(jīng)超出用戶注冊(cè)次數(shù)限制,用戶注冊(cè)失敗');
}
2、加入課程
使用方法
HTTP-POST /courses/{id}/members
官方文檔
認(rèn)證與授權(quán) · EduSoho開發(fā)指南
http://developer.edusoho.com/api/auth.html
課程 · EduSoho開發(fā)指南
http://developer.edusoho.com/api/course.html#教學(xué)計(jì)劃成員
對(duì)應(yīng)文件與代碼
src/ApiBundle/Api/Resource/Course/CourseMember.php
public function add(ApiRequest $request, $courseId)
{
$course = $this->getCourseService()->getCourse($courseId);
if (!$course) {
throw CourseException::NOTFOUND_COURSE();
}
$member = $this->getMemberService()->getCourseMember($courseId, $this->getCurrentUser()->getId());
if (!$member) {
$member = $this->tryJoin($course);
}
if ($member) {
$this->getOCUtil()->single($member, array('userId'));
return $member;
}
return null;
}