function newSchoolMessageAction() { //从SSO获取频道列表,暂时注释掉从SSO取频道的过程 $messageModel = new MessageModel(); $result = $messageModel->getSchool(); //如果SSO没有找到该频道 if ($result == -1) { $this->displayJsonUdo(Common_Error::ERROR_SSO_ERROR_SCHOOL); } if ($result == -3) { $this->displayJsonUdo(Common_Error::ERROR_FIRST_UPDATE); } //如果没有新频道 if ($result == -2) { $this->displayJsonUdo(Common_Error::ERROR_SCHOOL_NOT_EXISTS); } //如果有新频道,需要获取所有注册用户,并比对是否适合推送给该用户 /*$userModel = new UserModel(); $user = $userModel->getAllUser();*/ //如果用户返回有误 /* if ($user == -1) $this->displayJsonUdo(Common_Error::ERROR_SSO_ERROR_USER);*/ //print_r($result); //以下result和user是测试数据 /* $result = array( 0=> array("id"=>1,"city_id"=>3,"name"=>"双十","title"=>"双十中学","grade"=>11,"apiUdoUrl"=>"http://112.126.68.99:8520") , 1=> array("id"=>2,"city_id"=>4,"name"=>"华英","title"=>"华英学校","grade"=>14,"apiUdoUrl"=>"http://112.126.68.99:8520"), 2=> array("id"=>3,"city_id"=>4,"name"=>"三明","title"=>"三明中学","grade"=>21,"apiUdoUrl"=>"http://112.126.68.99:8520"));*/ //对于每一个新频道,过滤出该频道适合推荐给的用户组 $new_array = []; $userModel = new UserModel(); foreach ($result as $k => $val) { $temp_array = []; //获取到该频道下有权限访问的用户列表 $user = $userModel->getAllUser($val['id']); if ($user <= 0) { continue; } foreach ($user as $l => $ids) { //对于用户群中的某一个id,获取该用户的详细信息 $value = $userModel->getUserInfo($ids); //print_r($value); /** * 检查用户条件,当用户满足以下条件时,才将该用户加入推荐列表 * 如果频道有年级限制,且用户的年级条件符合,将用户加入 */ $grade_filter = 1; if ($val['grade']) { switch ($value['grade']) { case strstr($value['grade'], '小'): if ($val['grade'] >= 11 && $val['grade'] != 14) { $grade_filter = 1; } else { $grade_filter = 0; } break; case strstr($value['grade'], '初'): if ($val['grade'] >= 21 && $val['grade'] != 24 || $val['grade'] <= 10) { $grade_filter = 1; } else { $grade_filter = 0; } break; case strstr($value['grade'], '高'): if ($val['grade'] <= 20) { $grade_filter = 1; } else { $grade_filter = 0; } break; default: $grade_filter = 1; break; } } if ($value['provinceId'] && $value['grade'] && $val['cityId'] && ($val['cityId'] == $value['provinceId'] || $val['cityId'] == $value['cityId'] || $val['cityId'] == $value['areaId']) && $grade_filter || $value['provinceId'] && !$value['grade'] && $val['cityId'] && ($val['cityId'] == $value['provinceId'] || $val['cityId'] == $value['cityId'] || $val['cityId'] == $value['areaId']) || !$value['provinceId'] && $value['grade'] && $grade_filter || !$value['provinceId'] && !$value['grade'] || !$val['cityId']) { $new_array[$k][0] = $val['id']; $new_array[$k][1] = $val['customerName']; $new_array[$k][2] = $val['apiUdoUrl']; if (!$temp_array) { $temp_array = array($value['id']); } else { array_push($temp_array, $value['id']); } } } $new_array[$k][3] = $temp_array; } //print_r($new_array); //新频道可以推荐的用户数组完成,将参数传给消息推送接口 $title = "UDO微课堂上新频道啦~~~"; $type = 1; $messageType = Common_Config::UDO_SCHOOL_MESSAGE_TYPE; $messageModel = new MessageModel(); //对于每一个频道,发送频道上线消息。有多少频道,发送多少组消息 foreach ($new_array as $k => $val) { $retry = 0; $result = -1; $receiveUserId = $val[3]; $text = "小主," . $val[1] . "新频道上线啦!点击进入>>"; //print_r($receiveUserId); //print_r($text); $custom_data_raw = json_encode(array("school_id" => $val[0], "course_id" => "", "url" => $val[2])); $mid = $messageModel->messageLog($type, $messageType, $custom_data_raw, 0, $receiveUserId, null, $title, $text); $custom_data = json_encode(array("id" => $mid, "school_id" => $val[0], "course_id" => "", "url" => $val[2], "prof_type" => 100, "title" => $title, "text" => $text)); //print_r($custom_data); //如果发送失败,再尝试三次 while ($retry <= 3 and $result == -1) { $result = $messageModel->sendMessage($type, $custom_data, $receiveUserId, $custom_data, $title, $text); //print_r($result); $retry++; } //此处确实发送失败的处理 } }