Пример #1
0
function _callbackSchooldata($school)
{
    $school['first_char'] = getFirstChar($school['name']);
    return $school;
}
Пример #2
0
 public function serialMatch_release_presubmit()
 {
     // 检查提交的比赛是否符合提交条件
     if ($_POST['ensureArrange'] == 1) {
         for ($i = 1; $i <= $groupNum; $i++) {
             // 循环组
             for ($j = 1; $j < $eachGroupAmount;) {
                 // 组内循环成员
                 if ($_POST[$groupArray[$i] . $j] == null || $_POST[$groupArray[$i] . $j] == '') {
                     $this->error('有部分球员未安排赛事,请重新安排!');
                 }
             }
         }
     }
     // 获取系列赛id
     $id0 = $_GET['id'];
     $groupNum = $_POST['groupNum'];
     $type = $_GET['type'];
     if ($id0 == null || $id0 == '') {
         $this->error('无有效参数!');
     }
     $s = new SaeStorage();
     // 获取基本情况
     $ACTIVITY = M('activity');
     $activity0 = $ACTIVITY->where('id=' . $id0)->getField('id, title, content, start_time, end_time, headcount, cover, scale_num, state, result, champion_id');
     $activity = current($activity0);
     if ($activity['cover'] != 1 || $s->fileExists("imgdomain", 'post/' . $id0 . '.jpg') == FALSE) {
         $activity['cover'] = "__IMG__/activity.jpg";
     } else {
         $activity['cover'] = $s->getUrl("imgdomain", 'post/' . $id0 . '.jpg');
     }
     // 赛事安排类型
     $matchArrangeType = 0;
     // 0表示小组赛,1表示淘汰赛,2表示超出系统安排范围
     // 参赛总人数
     $ACTIVITY = M('activity');
     $headcount = $ACTIVITY->where('id=' . $_GET['id'])->GetField('headcount');
     // 如果是淘汰赛,计算系统预设的分组数、每组人数和轮空数
     $groupNum = 0;
     $eachGroupAmount = 0;
     $groupVoidArray = array();
     // 轮空数组
     $groupArray = array("1" => "A", "2" => "B", "3" => "C", "4" => "D", "5" => "E", "6" => "F", "7" => "G", "8" => "H");
     $groupRoundNum = 0;
     // 淘汰赛
     if ($type == 1) {
         $matchArrangeType = 1;
         if ($headcount <= 8) {
             $groupNum = 2;
             $diff = 8 - $headcount;
             // 轮空数
             $eachGroupAmount = 4;
             $groupRoundNum = 2;
             $scaleNum = 8;
         } else {
             if ($headcount <= 16) {
                 $groupNum = 2;
                 $diff = 16 - $headcount;
                 // 轮空数
                 $eachGroupAmount = 8;
                 $groupRoundNum = 3;
                 $scaleNum = 16;
             } else {
                 if ($headcount <= 32) {
                     $groupNum = 4;
                     $diff = 32 - $headcount;
                     // 轮空数
                     $eachGroupAmount = 8;
                     $groupRoundNum = 3;
                     $scaleNum = 32;
                 } else {
                     if ($headcount <= 64) {
                         $groupNum = 4;
                         $diff = 64 - $headcount;
                         // 轮空数
                         $eachGroupAmount = 16;
                         $groupRoundNum = 4;
                         $scaleNum = 64;
                     } else {
                         if ($headcount <= 128) {
                             $groupNum = 8;
                             $diff = 128 - $headcount;
                             // 轮空数
                             $eachGroupAmount = 16;
                             $groupRoundNum = 4;
                             $scaleNum = 128;
                         } else {
                             if ($headcount <= 256) {
                                 $groupNum = 8;
                                 $diff = 256 - $headcount;
                                 // 轮空数
                                 $eachGroupAmount = 32;
                                 $groupRoundNum = 5;
                                 $scaleNum = 256;
                             } else {
                                 $matchArrangeType = 2;
                             }
                         }
                     }
                 }
             }
         }
         // 计算每组轮空数
         if ($matchArrangeType != 2) {
             $j = 1;
             $round = 1;
             for ($i = 1; $i <= $diff; $i++) {
                 $groupVoidArray[$j][$round * 2] = 1;
                 $j++;
                 if ($j > $groupNum) {
                     $round++;
                     $j = 1;
                 }
             }
         }
     } else {
         $matchArrangeType = 0;
         $groupNum = $_POST['groupNum'];
         $eachGroupAmount = floor($headcount / $groupNum);
         $offset = $groupNum - $headcount % $groupNum;
         if ($offset > 0) {
             $eachGroupAmount++;
         }
         // 计算每组轮空情况
         $j = $groupNum;
         for ($i = 1; $i <= $offset; $i++) {
             $groupVoidArray[$j][$eachGroupAmount] = 1;
             $j--;
         }
     }
     // --------------确认安排赛事---------------
     if ($_POST['ensureArrange'] == 1) {
         // 更新activity
         $ACTIVITY = M('activity');
         $ACTIVITY->id = $id0;
         $ACTIVITY->scale_num = $scaleNum;
         $ACTIVITY->group_num = $groupNum;
         $SERIAL_MATCH_USER = M('serial_match_user');
         $SERIAL_BASE_MATCH = M('serial_base_match');
         $BASE_MATCH = M('base_match');
         // serialMatchUser表提交数据变量
         $serialMatchUserItemArray = array();
         $serialMatchUserItemArray['serial_match_id'] = $id0;
         $serialMatchUserItemArray['round'] = 1;
         $serialMatchUserItemArray['type'] = $type;
         $serialMatchUserArray = array();
         // serialBaseMatch表提交数据变量
         $serialBaseMatchItemArray = array();
         $serialBaseMatchItemArray['serial_match_id'] = $id0;
         $serialBaseMatchItemArray['type'] = $type;
         $serialBaseMatchArray = array();
         // baseMatch表提交数据变量
         $baseMatchArray = array();
         $baseMatchArray['serial_match_id'] = $id0;
         $baseMatchArray['state'] = 0;
         $baseMatchArray['update_user'] = $_SESSION['tennis-user']['id'];
         $d = date('Y-m-d H:i:s');
         $baseMatchArray['update_date'] = $d;
         $baseMatchArray['start_date'] = $activity['start_time'];
         $baseMatchArray['end_date'] = $activity['end_time'];
         $sIndex = 0;
         // 存储到serial_match_user变量中
         for ($i = 1; $i <= $groupNum; $i++) {
             for ($j = 1; $j <= $eachGroupAmount; $j++) {
                 if ($_POST[$groupArray[$i] . $j] != 0) {
                     $serialMatchUserItemArray['user_id'] = $_POST[$groupArray[$i] . $j];
                     $serialMatchUserItemArray['group'] = $groupArray[$i];
                     $serialMatchUserItemArray['no'] = $j;
                     $serialMatchUserArray[$sIndex] = $serialMatchUserItemArray;
                     $sIndex++;
                 }
             }
         }
         // 更新serial_match_user表
         $result = $SERIAL_MATCH_USER->addAll($serialMatchUserArray);
         if ($result === false) {
             $this->error("保存serial_match_user出问题了,请联系管理员!");
         }
         $sIndex = 0;
         // 分类型更新base_match,serial_base_match
         // 小组赛
         if ($type == 0) {
             for ($i = 1; $i <= $groupNum; $i++) {
                 // 循环组
                 for ($j = 1; $j < $eachGroupAmount; $j++) {
                     // 组内循环成员
                     for ($k = $j + 1; $k <= $eachGroupAmount; $k++) {
                         // 组内成员全排列
                         if ($_POST[$groupArray[$i] . $j] != 0 && $_POST[$groupArray[$i] . $k] != 0) {
                             $tmp_id = $BASE_MATCH->data($baseMatchArray)->add();
                             if ($tmp_id === false) {
                                 $this->error("保存base_match出问题了,请联系管理员!");
                             } else {
                                 // 存储到serial_base_match变量中
                                 $serialBaseMatchItemArray['base_match_id'] = $tmp_id;
                                 $serialBaseMatchItemArray['player1_id'] = $_POST[$groupArray[$i] . $j];
                                 $serialBaseMatchItemArray['player2_id'] = $_POST[$groupArray[$i] . $k];
                                 $serialBaseMatchItemArray['group1'] = $groupArray[$i];
                                 $serialBaseMatchItemArray['group2'] = $groupArray[$i];
                                 $serialBaseMatchItemArray['no1'] = $j;
                                 $serialBaseMatchItemArray['no2'] = $k;
                                 $serialBaseMatchArray[$sIndex] = $serialBaseMatchItemArray;
                                 $sIndex++;
                             }
                         }
                     }
                 }
             }
             // 更新serial_base_match
             $result = $SERIAL_BASE_MATCH->addAll($serialBaseMatchArray);
             if ($result === false) {
                 $this->error("保存serial_base_match出问题了,请联系管理员!");
             }
         } else {
             if ($type == 1) {
                 // 排列小组内淘汰赛
                 $tmp_each_group_amount = $eachGroupAmount;
                 $r = 1;
                 for (; $r <= $groupRoundNum; $r++) {
                     for ($i = 1; $i <= $groupNum; $i++) {
                         // 循环组
                         for ($j = 1; $j < $tmp_each_group_amount;) {
                             // 组内循环成员
                             $tmp_id = $BASE_MATCH->data($baseMatchArray)->add();
                             if ($tmp_id === false) {
                                 $this->error("保存base_match出问题了,请联系管理员!");
                             } else {
                                 // 存储到serial_base_match变量中
                                 $serialBaseMatchItemArray['base_match_id'] = $tmp_id;
                                 if ($r == 1) {
                                     $serialBaseMatchItemArray['player1_id'] = $_POST[$groupArray[$i] . $j];
                                     $serialBaseMatchItemArray['player2_id'] = $_POST[$groupArray[$i] . ($j + 1)];
                                 } else {
                                     $serialBaseMatchItemArray['player1_id'] = -1;
                                     $serialBaseMatchItemArray['player2_id'] = -1;
                                 }
                                 $serialBaseMatchItemArray['group1'] = $groupArray[$i];
                                 $serialBaseMatchItemArray['group2'] = $groupArray[$i];
                                 $serialBaseMatchItemArray['round1'] = $r;
                                 $serialBaseMatchItemArray['round2'] = $r;
                                 $serialBaseMatchItemArray['no1'] = $j;
                                 $serialBaseMatchItemArray['no2'] = $j + 1;
                                 $serialBaseMatchArray[$sIndex] = $serialBaseMatchItemArray;
                                 $sIndex++;
                             }
                             $j += 2;
                         }
                     }
                     $tmp_each_group_amount /= 2;
                 }
                 // 排列小组出线后淘汰赛
                 $tmp_each_group_amount *= $groupNum;
                 while ($tmp_each_group_amount >= 1) {
                     $j = 1;
                     while ($j < $tmp_each_group_amount) {
                         // 组内循环成员
                         $tmp_id = $BASE_MATCH->data($baseMatchArray)->add();
                         if ($tmp_id === false) {
                             $this->error("保存base_match出问题了,请联系管理员!");
                         } else {
                             // 存储到serial_base_match变量中
                             $serialBaseMatchItemArray['base_match_id'] = $tmp_id;
                             $serialBaseMatchItemArray['player1_id'] = -1;
                             $serialBaseMatchItemArray['player2_id'] = -1;
                             $serialBaseMatchItemArray['group1'] = 'S';
                             $serialBaseMatchItemArray['group2'] = 'S';
                             $serialBaseMatchItemArray['round1'] = $r;
                             $serialBaseMatchItemArray['round2'] = $r;
                             $serialBaseMatchItemArray['no1'] = $j;
                             $serialBaseMatchItemArray['no2'] = $j + 1;
                             $serialBaseMatchArray[$sIndex] = $serialBaseMatchItemArray;
                             $sIndex++;
                         }
                         $j += 2;
                     }
                     $r++;
                     $tmp_each_group_amount /= 2;
                 }
                 // 更新serial_base_match
                 $result = $SERIAL_BASE_MATCH->addAll($serialBaseMatchArray);
                 if ($result === false) {
                     $this->error("保存serial_base_match出问题了,请联系管理员!");
                 }
             }
         }
         // 完成安排,跳转到赛事页面
         $this->success('安排成功!', '__APP__/Admin/Match/serialMatch_update_detail?id=' . $id0);
     }
     // 获取参赛选手列表
     $playerList = array();
     $all_players_id = array();
     $ACTIVITY_USER = M('activity_user');
     $player = $ACTIVITY_USER->where('activity_id=' . $_GET['id'])->join('INNER JOIN user ON user.id=activity_user.user_id')->getField('user.id, user_id, truename');
     foreach ($player as $key => $value) {
         $firstChar = getFirstChar($value['truename']);
         $user_name = $value['truename'];
         $user_id = $value['user_id'];
         $playerList[$user_id]['id'] = $user_id;
         $playerList[$user_id]['name'] = $user_name;
         $playerList[$user_id]['letter'] = $firstChar;
         array_push($all_players_id, $value['user_id']);
     }
     // 获取已安排参赛选手及对应位置
     // 已安排选手列表
     $has_set_players = array();
     // 等待随机插入的选手列表
     $rand_players = array();
     // 安排好用于返回的选手
     $players = array();
     // 获取已安排选手列表
     for ($i = 1; $i <= $groupNum; $i++) {
         for ($j = 1; $j <= $eachGroupAmount; $j++) {
             $index = $groupArray[$i] . $j;
             if ($_POST[$index] > 0) {
                 // 已安排
                 array_push($has_set_players, $_POST[$index]);
             }
         }
     }
     // 获取未安排选手列表
     $rand_players = array_diff($all_players_id, $has_set_players);
     shuffle($rand_players);
     // 安排这些未安排选手
     for ($i = 1; $i <= $groupNum; $i++) {
         for ($j = 1; $j <= $eachGroupAmount; $j++) {
             $index = $groupArray[$i] . $j;
             if ($_POST[$index] == null || $_POST[$index] == '') {
                 // 待安排
                 $tmp_id = array_shift($rand_players);
                 if ($tmp_id == null || $tmp_id == '') {
                     break;
                 }
                 $players[$groupArray[$i]][$j][id] = $tmp_id;
                 $players[$groupArray[$i]][$j][name] = $playerList[$tmp_id]['name'];
                 $players[$groupArray[$i]][$j][letter] = $playerList[$tmp_id]['letter'];
             } else {
                 if ($_POST[$index] > 0) {
                     $tmp_id = $_POST[$index];
                     $players[$groupArray[$i]][$j][id] = $tmp_id;
                     $players[$groupArray[$i]][$j][name] = $playerList[$tmp_id]['name'];
                     $players[$groupArray[$i]][$j][letter] = $playerList[$tmp_id]['letter'];
                 }
             }
         }
     }
     // 字母列表
     $letterList = array("A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z");
     // 返回参数
     $this->assign("id", $_GET['id']);
     $this->assign("matchArrangeType", $matchArrangeType);
     $this->assign("groupVoidArray", $groupVoidArray);
     $this->assign("groupNum", $groupNum);
     $this->assign("eachGroupAmount", $eachGroupAmount);
     $this->assign("groupArray", $groupArray);
     $this->assign("activity", $activity);
     $this->assign("players", $players);
     $this->assign("letterList", $letterList);
     $this->assign("hasSetPlayer", 1);
     $this->assign("groupNum", $groupNum);
     $this->display();
 }
Пример #3
0
 public function otheradd()
 {
     $names = I('post.names');
     $campus = I('post.campus');
     $room = I('post.room');
     $number = I('post.number');
     $unit = I('post.unit');
     if ($names == '' || $campus == '' || $room == '' || $number == '' || $unit == '') {
         $this->ajaxReturn("数据为空");
     } elseif ($names == '请选择' || $campus == '请选择' || $room == '请选择') {
         $this->ajaxReturn("请选择");
     } elseif ($number <= 0) {
         $this->ajaxReturn("数量必须大于0");
     }
     preg_match_all("/./u", $names, $arr);
     //拆分汉字
     $arrayName = $arr[0];
     //赋值名称字符串
     $strname = getFirstChar($arrayName[0]);
     if (count($arrayName, 0) > 1) {
         for ($j = 1; $j < count($arrayName, 0); $j++) {
             $strname = $strname . getFirstChar($arrayName[$j]);
         }
     }
     $Other = M('AssetOther');
     for ($i = 0; $i < $number; $i++) {
         $Other->create();
         $Other->seq = $strname . '-' . NOW_TIME . '-' . $i;
         $Other->start = date("Y-m-d H:i:s", NOW_TIME);
         $Other->number = '1';
         $Other->add();
     }
     if ($Other) {
         $this->ajaxReturn(true);
     } else {
         $this->ajaxReturn("添加失败");
     }
 }