public function process(array $documents, &$context)
 {
     $franchiseIds = [];
     $franchiseIds[] = self::mediaToKey($context->media);
     foreach ($context->relationData as $relation) {
         if ($relation['media'] != $context->media->media) {
             continue;
         }
         if ($relation['type'] == MediaRelation::Character) {
             continue;
         }
         if (BanHelper::isFranchiseCouplingBanned($relation['media'], $relation['mal_id'], $context->media->media, $context->media->mal_id)) {
             continue;
         }
         $franchiseIds[] = self::mediaToKey($relation);
     }
     foreach (R::findAll('media', 'media||mal_id IN (' . R::genSlots($franchiseIds) . ')', $franchiseIds) as $relatedMedia) {
         $franchiseIds[] = $relatedMedia->franchise;
     }
     $franchiseId = reset($franchiseIds);
     $media =& $context->media;
     $media->franchise = $franchiseId;
     R::store($media);
     $query = 'UPDATE media SET franchise = ? WHERE franchise IN (' . R::genSlots($franchiseIds) . ')';
     R::exec($query, array_merge([$franchiseId], $franchiseIds));
 }
示例#2
0
 public static function getFromIdList($list)
 {
     $allEntries = [];
     foreach (array_chunk($list, Config::$maxDbBindings) as $chunk) {
         $query = 'SELECT m.*, m.id AS media_id FROM media m WHERE CONCAT_WS(\'\', m.media, m.mal_id) IN (' . R::genSlots($chunk) . ')';
         $rows = R::getAll($query, $chunk);
         $entries = array_map(function ($entry) {
             return new Model_MixedUserMedia($entry);
         }, $rows);
         $allEntries = array_merge($allEntries, $entries);
     }
     return $allEntries;
 }
示例#3
0
 public static function getCoolUsers($goal)
 {
     $query = 'SELECT id FROM user WHERE cool = 1 ORDER BY RANDOM() LIMIT ?';
     $userIds = array_map(function ($x) {
         return intval($x['id']);
     }, R::getAll($query, [$goal]));
     if (empty($userIds)) {
         return [];
     }
     $query = 'id IN (' . R::genSlots($userIds) . ')';
     $result = R::findAll('user', $query, $userIds);
     return array_map(function ($x) {
         return $x->box();
     }, $result);
 }
示例#4
0
}
/* 5、客户上电分布 */
try {
    $pue_month_custcabin = R::getAll('   SELECT x.relate_id, ' . '          x.dc_name, ' . '          x.cust_name, ' . '          SUM(x.shangdianshu) AS shangdianshu ' . '     FROM (     SELECT CASE WHEN @var_dc_name = a.dc_name THEN @rank := @rank + 1 ELSE @rank := 1 END  AS rank, ' . '                       dc_id                                                                           AS relate_id, ' . '                       @var_dc_name := a.dc_name                                                       AS dc_name, ' . '                       CASE WHEN @rank <= 4 THEN cust_name ELSE "其它" END                             AS cust_name, ' . '                       shangdianshu                                                                    AS shangdianshu ' . '                  FROM (    SELECT h.dc_id, ' . '                                   h.fullname            AS dc_name, ' . '                                   g.shortname           AS cust_name, ' . '                                   COUNT(*)              AS shangdianshu ' . '                              FROM pro_room_cabinet a ' . '                        INNER JOIN pro_room b ' . '                                ON a.pro_room_id = b.pro_room_id ' . '                        INNER JOIN room c ' . '                                ON b.room_id = c.room_id ' . '                        INNER JOIN sub_project d ' . '                                ON b.sub_project_id = d.sub_project_id ' . '                        INNER JOIN project f ' . '                                ON d.project_id = f.project_id ' . '                        INNER JOIN customer g ' . '                                ON f.customer_id = g.customer_id ' . '                        INNER JOIN dc h ' . '                                ON c.dc_id = h.dc_id ' . '                             WHERE (    a.elec_time >= DATE_FORMAT(DATE_SUB(NOW(), INTERVAL (CASE WHEN DAY(NOW()) < 11 THEN 2 ELSE 1 END) MONTH), "%Y-%m-01 00:00:00") ' . '                                    AND a.elec_time <= DATE_FORMAT(LAST_DAY(DATE_SUB(NOW(), INTERVAL (CASE WHEN DAY(NOW()) < 11 THEN 2 ELSE 1 END) MONTH)), "%Y-%m-%d 23:59:59"))' . '                               AND h.dc_id IN (' . R::genSlots($dc_ids) . ') ' . '                          GROUP BY dc_name, cust_name ' . '                          ORDER BY dc_name, shangdianshu DESC ' . '                       ) a ' . '            CROSS JOIN (SELECT @var_dc_name := NULL, @rank := NULL ) b ' . '          ) x' . ' GROUP BY relate_id, dc_name, cust_name ' . ' ORDER BY dc_name, rank ', $dc_ids);
} catch (Exception $e) {
    exit('DB resource select failed 5 \\n' . $e->getMessage());
}
/* 6、客户下电分布 */
try {
    $pue_month_custcabout = R::getAll('   SELECT x.relate_id, ' . '          x.dc_name, ' . '          x.cust_name, ' . '          SUM(x.xiadianshu) AS xiadianshu ' . '     FROM (     SELECT CASE WHEN @var_dc_name = a.dc_name THEN @rank := @rank + 1 ELSE @rank := 1 END  AS rank, ' . '                       dc_id                                                                           AS relate_id, ' . '                       @var_dc_name := a.dc_name                                                       AS dc_name, ' . '                       CASE WHEN @RANK <= 4 THEN CUST_NAME ELSE "其它" END                             AS cust_name, ' . '                       xiadianshu                                                                      AS xiadianshu ' . '                  FROM (   SELECT h.dc_id, ' . '                                  h.fullname           AS dc_name, ' . '                                  g.shortname          AS cust_name, ' . '                                  COUNT(*)             AS xiadianshu ' . '                             FROM pro_room_cabinet a ' . '                       INNER JOIN pro_room b ' . '                               ON a.pro_room_id = b.pro_room_id ' . '                       INNER JOIN room c ' . '                               ON b.room_id = c.room_id ' . '                       INNER JOIN sub_project d ' . '                               ON b.sub_project_id = d.sub_project_id ' . '                       INNER JOIN project f ' . '                               ON d.project_id = f.project_id ' . '                       INNER JOIN customer g ' . '                               ON f.customer_id = g.customer_id ' . '                       INNER JOIN dc h ' . '                               ON c.dc_id = h.dc_id ' . '                            WHERE (    a.down_elec_time >= DATE_FORMAT(DATE_SUB(NOW(), INTERVAL (CASE WHEN DAY(NOW()) < 11 THEN 2 ELSE 1 END) MONTH), "%Y-%m-01 00:00:00")  ' . '                                   AND a.down_elec_time <= DATE_FORMAT(LAST_DAY(DATE_SUB(NOW(), INTERVAL (CASE WHEN DAY(NOW()) < 11 THEN 2 ELSE 1 END) MONTH)), "%Y-%m-%d 23:59:59")) ' . '                              AND h.dc_id IN (' . R::genSlots($dc_ids) . ') ' . '                         GROUP BY dc_name, cust_name ' . '                         ORDER BY dc_name, xiadianshu DESC ' . '                       ) a ' . '            CROSS JOIN (SELECT @var_dc_name := NULL, @rank := NULL ) b ' . '          ) x' . ' GROUP BY relate_id, dc_name, cust_name ' . ' ORDER BY dc_name, rank ', $dc_ids);
} catch (Exception $e) {
    exit('DB resource select failed 6 \\n' . $e->getMessage());
}
/* 7、客户用电较上月浮动最大Top5 */
try {
    $pue_month_cust5top = R::getAll(' SELECT final.rank, ' . '        final.dc_id        AS relate_id, ' . '        final.dc_id, ' . '        final.dc_name, ' . '        final.cust_name, ' . '        final.bianhuashuKW ' . '   FROM ' . '   (    SELECT IF(@dc_id = total.dc_id, @rank := @rank + 1, @rank := 1) AS rank, ' . '               @dc_id := total.dc_id, ' . '               total.dc_id, ' . '               total.dc_name, ' . '               total.cust_name, ' . '               total.bianhuashuKW ' . '          FROM (        SELECT l.dc_id, ' . '                               ll.cust_name, ' . '                               _month.dc_name, ' . '                               CASE WHEN l.ITKW IS NULL OR ll.LITKW IS NULL THEN 0 ' . '                                    ELSE ROUND(l.ITKW - ll.LITKW, 2) ' . '                                END AS bianhuashuKW ' . '                          FROM (   SELECT dc.dc_id, ' . '                                          dc.fullname AS dc_name, ' . '                                          DATE_FORMAT(DATE_SUB(NOW(), INTERVAL (CASE WHEN DAY(NOW()) < 11 THEN 2 ELSE 1 END) MONTH), "%Y%m")*1 AS last_month, ' . '                                          DATE_FORMAT(DATE_SUB(NOW(), INTERVAL (CASE WHEN DAY(NOW()) < 11 THEN 3 ELSE 2 END) MONTH), "%Y%m")*1 AS last_last_month ' . '                                     FROM dc ' . '                                    WHERE dc.dc_id IN (' . R::genSlots($dc_ids) . ') ' . '                               ) AS _month ' . '                     LEFT JOIN (   SELECT c.dc_id, ' . '                                          f.shortname AS cust_name, ' . '                                          SUM(a.record_elec / DATEDIFF(a.record_endtime, a.record_starttime) / 24) AS ITKW, ' . '                                          a.record_month ' . '                                     FROM record_pro_room_elec a, ' . '                                          pro_room b, ' . '                                          room c, ' . '                                          sub_project d, ' . '                                          project e, ' . '                                          customer f ' . '                                    WHERE a.pro_room_id = b.pro_room_id ' . '                                      AND b.room_id = c.room_id ' . '                                      AND b.sub_project_id = d.sub_project_id ' . '                                      AND a.record_month = DATE_FORMAT(DATE_SUB(NOW(), INTERVAL (CASE WHEN DAY(NOW()) < 11 THEN 2 ELSE 1 END) MONTH), "%Y%m") ' . '                                      AND d.project_id = e.project_id ' . '                                      AND e.customer_id = f.customer_id ' . '                                 GROUP BY c.dc_id, cust_name ' . '                               ) l ' . '                            ON l.record_month = _month.last_month ' . '                           AND l.dc_id = _month.dc_id ' . '                     LEFT JOIN (   SELECT c.dc_id, ' . '                                          f.shortname AS cust_name, ' . '                                          SUM(a.record_elec / DATEDIFF(a.record_endtime, a.record_starttime) / 24) AS LITKW, ' . '                                          a.record_month ' . '                                     FROM record_pro_room_elec a, ' . '                                          pro_room b, ' . '                                          room c, ' . '                                          sub_project d, ' . '                                          project e, ' . '                                          customer f ' . '                                    WHERE a.pro_room_id = b.pro_room_id ' . '                                      AND b.room_id = c.room_id ' . '                                      AND b.sub_project_id = d.sub_project_id ' . '                                      AND a.record_month = DATE_FORMAT(DATE_SUB(NOW(), INTERVAL (CASE WHEN DAY(NOW()) < 11 THEN 3 ELSE 2 END) MONTH), "%Y%m") ' . '                                      AND d.project_id = e.project_id ' . '                                      AND e.customer_id = f.customer_id ' . '                                 GROUP BY c.dc_id, cust_name ' . '                               ) ll ' . '                            ON ll.record_month = _month.last_last_month ' . '                           AND ll.dc_id = _month.dc_id ' . '                           AND l.dc_id = ll.dc_id ' . '                           AND l.cust_name = ll.cust_name ' . '                      ORDER BY l.dc_id, l.ITKW - ll.LITKW DESC ' . '                ) total ' . '     CROSS JOIN (SELECT @dc_id := NULL, @rank := 1 ) r ' . '   ) final ' . ' WHERE final.rank <= 5 ', $dc_ids);
} catch (Exception $e) {
    exit('DB resource select failed 7 \\n' . $e->getMessage());
}
R::close();
SAVE:
/* 写入报警 */
/* ≥5%且<10%  XXX数据中心上月PUE环比上升/下降 YY% */
/* ≥10%  XXX数据中心上月PUE环比上升/下降 YY% */
R::addDatabase('alarm', $GLOBALS['db_alarm_url'], $GLOBALS['db_alarm_user'], $GLOBALS['db_alarm_pass']);
R::selectDatabase('alarm');
if (!R::testConnection()) {
    exit('DB alarm connect failed \\n' . $e->getMessage());
}
R::freeze(TRUE);
try {
示例#5
0
 public static function genre($genreIds, $list)
 {
     if (empty($list)) {
         return [];
     }
     if (!is_array($genreIds)) {
         $genreIds = [$genreIds];
     }
     $tblName = Model_MixedUserMedia::createTemporaryTable($list);
     $query = 'SELECT * FROM mediagenre mg INNER JOIN ' . $tblName . ' ON mg.media_id = ' . $tblName . '.media_id WHERE mg.mal_id IN (' . R::genSlots($genreIds) . ')';
     $data = R::getAll($query, $genreIds);
     Model_MixedUserMedia::dropTemporaryTable($tblName);
     $data = array_map(function ($x) {
         return $x['media_id'];
     }, $data);
     $data = array_flip($data);
     return function ($row) use($data) {
         return isset($data[$row->media_id]);
     };
 }
示例#6
0
try {
    $db = new PDO($GLOBALS['db_remedy_url'], $GLOBALS['db_remedy_user'], $GLOBALS['db_remedy_pass'], array(PDO::ATTR_PERSISTENT => true));
    $db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    $sql = $db->prepare(' SELECT Distinct remedy_login_id ' . '   FROM CTM_PeopleUserSupportGroupFunc ' . '  WHERE Functional_Role = \'Work Order Assignee\' ' . '    AND Organization = \'数据中心服务部\' ', [PDO::ATTR_CURSOR => PDO::CURSOR_FWDONLY]);
    $sql->execute();
    $staff_dcs_accounts = $sql->fetchAll(PDO::FETCH_ASSOC);
    $staff_dcs_account_vals = array_column($staff_dcs_accounts, 'remedy_login_id');
    $sql = null;
} catch (PDOException $e) {
    exit('DB remedy select failed \\n' . $e->getMessage());
}
R::addDatabase('portal', $GLOBALS['db_portal_url'], $GLOBALS['db_portal_user'], $GLOBALS['db_portal_pass']);
R::selectDatabase('portal');
if (!R::testConnection()) {
    exit('DB failed' . PHP_EOL);
}
R::freeze(true);
try {
    if (!empty($staff_dcs_account_vals)) {
        $staff_dcss = R::getAll('SELECT name        AS fullname, ' . '       email       AS email, ' . '       cell_phone  AS mobilenumber' . '  FROM gdsportal.auth_user ' . ' WHERE username IN (' . R::genSlots($staff_dcs_account_vals) . ')', $staff_dcs_account_vals);
    }
} catch (Exception $e) {
    header('Content-type:text/json;charset=utf-8');
    echo json_encode(['result' => 'failed', 'error' => 'db error portal', 'details' => $e->getMessage()]);
    die;
}
R::close();
// Return
header('Content-type:text/json;charset=utf-8');
echo json_encode(['result' => 'true', 'staff_dcss' => $staff_dcss], JSON_UNESCAPED_UNICODE);
die;
 public static function work(&$controllerContext, &$viewContext)
 {
     try {
         if (empty($_POST['sender'])) {
             throw new Exception('No sender specified');
         }
         $sender = $_POST['sender'];
         if (empty($_POST['action'])) {
             throw new Exception('No action specified');
         }
         $action = $_POST['action'];
         if (empty($_POST['model-ids'])) {
             throw new Exception('No model ids specified');
         }
         $modelIds = array_map('trim', preg_split('/[,;]/', $_POST['model-ids']));
         $chosenMedia = [];
         $chosenUsers = [];
         switch ($sender) {
             case 'media':
                 $chosenMedia = self::getChosenMedia($modelIds);
                 break;
             case 'user':
                 $chosenUsers = self::getChosenUsers($modelIds);
                 break;
             default:
                 throw new Exception('Unknown sender: ' . $sender);
         }
         if ($action == 'refresh') {
             $num = 0;
             $startTime = microtime(true);
             $mediaProcessors = [Media::Anime => new AnimeProcessor(), Media::Manga => new MangaProcessor()];
             $userProcessor = new UserProcessor();
             foreach ($chosenMedia as $media => $ids) {
                 foreach ($ids as $id) {
                     $mediaProcessors[$media]->process($id);
                     ++$num;
                 }
             }
             foreach ($chosenUsers as $user) {
                 $userProcessor->process($user);
                 ++$num;
             }
             $viewContext->messageType = 'info';
             $viewContext->message = sprintf('Successfully processed %d entities in %.02fs', $num, microtime(true) - $startTime);
         } elseif ($action == 'wipe-cache') {
             $deleted = 0;
             foreach ($chosenUsers as $userName) {
                 $cache = new Cache();
                 $cache->setPrefix($userName);
                 foreach ($cache->getAllFiles() as $path) {
                     $deleted++;
                     unlink($path);
                 }
             }
             $viewContext->messageType = 'info';
             $viewContext->message = 'Deleted ' . $deleted . ' files';
         } elseif ($action == 'unban' or $action == 'soft-ban' or $action == 'hard-ban') {
             switch ($action) {
                 case 'unban':
                     $banState = BanHelper::USER_BAN_NONE;
                     break;
                 case 'soft-ban':
                     $banState = BanHelper::USER_BAN_QUEUE_ONLY;
                     break;
                 case 'hard-ban':
                     $banState = BanHelper::USER_BAN_TOTAL;
                     break;
                 default:
                     throw new Exception('Wrong ban state');
             }
             $changed = 0;
             foreach ($chosenUsers as $userName) {
                 BanHelper::setUserBanState($userName, $banState);
                 ++$changed;
             }
             $viewContext->messageType = 'info';
             $viewContext->message = sprintf('Successfully updated %d users', $changed);
         } elseif ($action == 'reset-franchise') {
             $num = 0;
             foreach ($chosenMedia as $media => $ids) {
                 $query = 'UPDATE media SET franchise = NULL WHERE media = ? AND mal_id IN (' . R::genSlots($ids) . ')';
                 R::exec($query, array_merge([$media], $ids));
                 $num += count($ids);
             }
             $viewContext->messageType = 'info';
             $viewContext->message = sprintf('Successfully reset franchise for %d entities. Don\'t forget to refresh them now!', $num);
         } elseif ($action == 'remove') {
             $num = 0;
             foreach ($chosenMedia as $media => $ids) {
                 $query = 'DELETE FROM media WHERE media = ? AND mal_id IN (' . R::genSlots($ids) . ')';
                 R::exec($query, array_merge([$media], $ids));
                 $num += count($ids);
             }
             $viewContext->messageType = 'info';
             $viewContext->message = sprintf('Successfully removed %d entities.', $num);
         } else {
             throw new Exception('Unknown action: ' . $action);
         }
     } catch (Exception $e) {
         $viewContext->messageType = 'error';
         $viewContext->message = $e->getMessage();
     }
     $viewContext->viewName = 'admin-index';
     $viewContext->meta->title = 'Admin &#8212; ' . Config::$title;
     WebMediaHelper::addCustom($viewContext);
 }
示例#8
0
}
/* 4、上周新上下电机柜总数 */
try {
    $pue_week_cabio = R::getAll('     SELECT c.dc_id          AS relate_id, ' . '            h.fullname       AS dc_name, ' . '            SUM(CASE ' . '                     WHEN     a.elec_time >= DATE_FORMAT(DATE_SUB(NOW(), INTERVAL WEEKDAY(NOW()) + 17 DAY), "%Y-%m-%d 06:00:00") ' . '                          AND a.elec_time <= DATE_FORMAT(DATE_SUB(NOW(), INTERVAL WEEKDAY(NOW()) + 10 DAY), "%Y-%m-%d 06:00:00") ' . '                     THEN 1 ' . '                     ELSE 0 ' . '                END ' . '            )                AS shangdianshu, ' . '            SUM(CASE ' . '                    WHEN      a.down_elec_time >= DATE_FORMAT(DATE_SUB(NOW(), INTERVAL WEEKDAY(NOW()) + 17 DAY), "%Y-%m-%d 06:00:00") ' . '                          AND a.down_elec_time <= DATE_FORMAT(DATE_SUB(NOW(), INTERVAL WEEKDAY(NOW()) + 10 DAY), "%Y-%m-%d 06:00:00") ' . '                    THEN 1 ' . '                    ELSE 0 ' . '                END ' . '            )                AS xiadianshu ' . '       FROM pro_room_cabinet a ' . ' INNER JOIN pro_room b ' . '         ON a.pro_room_id = b.pro_room_id ' . ' INNER JOIN room c ' . '         ON b.room_id = c.room_id ' . ' INNER JOIN dc h ' . '         ON c.dc_id = h.dc_id ' . '      WHERE (    (     a.elec_time >= DATE_FORMAT(DATE_SUB(NOW(), INTERVAL WEEKDAY(NOW()) + 17 DAY), "%Y-%m-%d 06:00:00") ' . '                   AND a.elec_time <= DATE_FORMAT(DATE_SUB(NOW(), INTERVAL WEEKDAY(NOW()) + 10 DAY),  "%Y-%m-%d 06:00:00") ' . '                 ) ' . '              OR (     a.down_elec_time >= DATE_FORMAT(DATE_SUB(NOW(), INTERVAL WEEKDAY(NOW()) + 17 DAY), "%Y-%m-%d 06:00:00") ' . '                   AND a.down_elec_time <= DATE_FORMAT(DATE_SUB(NOW(), INTERVAL WEEKDAY(NOW()) + 10 DAY),  "%Y-%m-%d 06:00:00") ' . '                 ) ' . '            ) ' . '        AND h.dc_id IN (' . R::genSlots($dc_ids) . ') ' . '   GROUP BY c.dc_id ', $dc_ids);
} catch (Exception $e) {
    exit('DB resource select failed 4 \\n' . $e->getMessage());
}
/* 5、客户上电分布 */
try {
    $pue_week_custcabin = R::getAll('   SELECT x.relate_id, ' . '          x.dc_name, ' . '          x.cust_name, ' . '          SUM(x.shangdianshu) AS shangdianshu ' . '     FROM (     SELECT IF(@var_dc_name = a.dc_name, @rank := @rank + 1, @rank := 1)        AS rank, ' . '                       dc_id                                                               AS relate_id, ' . '                       @var_dc_name := a.dc_name                                           AS dc_name, ' . '                       CASE WHEN @RANK <= 4 THEN cust_name ELSE "其它" END                 AS cust_name, ' . '                       shangdianshu                                                        AS shangdianshu ' . '                  FROM (   SELECT h.dc_id      AS dc_id, ' . '                                  h.fullname   AS dc_name, ' . '                                  g.shortname  AS cust_name, ' . '                                  COUNT(*)     AS shangdianshu ' . '                             FROM pro_room_cabinet a ' . '                       INNER JOIN pro_room b ' . '                               ON a.pro_room_id = b.pro_room_id ' . '                       INNER JOIN room c ' . '                               ON b.room_id = c.room_id ' . '                       INNER JOIN sub_project d ' . '                               ON b.sub_project_id = d.sub_project_id ' . '                       INNER JOIN project f ' . '                               ON d.project_id = f.project_id ' . '                       INNER JOIN customer g ' . '                               ON f.customer_id = g.customer_id ' . '                       INNER JOIN dc h ' . '                               ON c.dc_id = h.dc_id ' . '                            WHERE (a.elec_time >= DATE_FORMAT(DATE_SUB(NOW(), INTERVAL WEEKDAY(NOW()) + 17 DAY), "%Y-%m-%d 06:00:00") ' . '                              AND a.elec_time  <= DATE_FORMAT(DATE_SUB(NOW(), INTERVAL WEEKDAY(NOW()) + 10 DAY), "%Y-%m-%d 06:00:00")) ' . '                              AND h.dc_id IN (' . R::genSlots($dc_ids) . ') ' . '                         GROUP BY dc_id, dc_name, cust_name ' . '                         ORDER BY dc_id, dc_name, shangdianshu DESC ' . '                       ) a ' . '            CROSS JOIN (SELECT @var_dc_name := NULL, @rank := NULL ) b ' . '          ) x' . ' GROUP BY relate_id, dc_name, cust_name ' . ' ORDER BY dc_name, rank ', $dc_ids);
} catch (Exception $e) {
    exit('DB resource select failed 5 \\n' . $e->getMessage());
}
/* 6、客户下电分布 */
try {
    $pue_week_custcabout = R::getAll('   SELECT x.relate_id, ' . '          x.dc_name, ' . '          x.cust_name, ' . '          SUM(x.xiadianshu) AS xiadianshu ' . '     FROM (     SELECT IF(@var_dc_name = a.dc_name, @rank := @rank + 1, @rank := 1)       AS rank, ' . '                       dc_id                                                              AS relate_id, ' . '                       @var_dc_name := a.dc_name                                          AS dc_name, ' . '                       CASE WHEN @RANK <= 4 THEN cust_name ELSE "其它" END                AS cust_name, ' . '                       xiadianshu                                                         AS xiadianshu ' . '                  FROM (   SELECT h.dc_id         AS dc_id, ' . '                                  h.fullname      AS dc_name, ' . '                                  g.shortname     AS cust_name, ' . '                                  COUNT(*)        AS xiadianshu ' . '                             FROM pro_room_cabinet a ' . '                       INNER JOIN pro_room b ' . '                               ON a.pro_room_id = b.pro_room_id ' . '                       INNER JOIN room c ' . '                               ON b.room_id = c.room_id ' . '                       INNER JOIN sub_project d ' . '                               ON b.sub_project_id = d.sub_project_id ' . '                       INNER JOIN project f ' . '                               ON d.project_id = f.project_id ' . '                       INNER JOIN customer g ' . '                               ON f.customer_id = g.customer_id ' . '                       INNER JOIN dc h ' . '                               ON c.dc_id = h.dc_id ' . '                            WHERE (a.down_elec_time >= DATE_FORMAT(DATE_SUB(NOW(), INTERVAL WEEKDAY(NOW()) + 17 DAY), "%Y-%m-%d 06:00:00") ' . '                              AND a.down_elec_time  <= DATE_FORMAT(DATE_SUB(NOW(), INTERVAL WEEKDAY(NOW()) + 10 DAY),  "%Y-%m-%d 06:00:00")) ' . '                              AND h.dc_id IN (' . R::genSlots($dc_ids) . ') ' . '                         GROUP BY dc_name, cust_name ' . '                         ORDER BY dc_name, xiadianshu DESC ' . '                       ) a ' . '            CROSS JOIN (SELECT @var_dc_name := NULL, @rank := NULL ) b ' . '          ) x' . ' GROUP BY relate_id, dc_name, cust_name ' . ' ORDER BY dc_name, rank ', $dc_ids);
} catch (Exception $e) {
    exit('DB resource select failed 6 \\n' . $e->getMessage());
}
R::close();
SAVE:
/* 写入:报警信息 */
/* ≥5%且<10%    XXX数据中心上周PUE环比上升/下降 YY% */
/* ≥10%         XXX数据中心上周PUE环比上升/下降 YY% */
R::addDatabase('alarm', $GLOBALS['db_alarm_url'], $GLOBALS['db_alarm_user'], $GLOBALS['db_alarm_pass']);
R::selectDatabase('alarm');
if (!R::testConnection()) {
    exit('DB alarm connect failed \\n' . $e->getMessage());
}
R::freeze(TRUE);
try {
示例#9
0
try {
    $dc_view_2_1 = R::getAll('     SELECT /* 基础信息 */ ' . '            dc.fullname                                                                                      AS dc_name,              /* 数据中心名称 */ ' . '            IFNULL(dc.room_area, 0) + IFNULL(dc.office_area, 0) + IFNULL(dc.stationarea_area, 0)             AS dc_total_area,        /* 总建筑面积(㎡) */ ' . '            raa.area_c                                                                                         AS dc_rack_area,         /* 总机房面积(㎡) */ ' . '            raa.elec_c                                                                                         AS dc_elec,              /* 总规划电力(KW) */ ' . '  ' . '            /* 能效 */ ' . '            r.actual_pue                                                                                     AS nx_pue,               /* 周PUE */ ' . '            ROUND((r.actual_pue - last_r.actual_pue) / last_r.actual_pue * 100, 2)                           AS nx_pue_chg,           /* 周PUE 变化百分比 */ ' . '            r.total_elec                                                                                     AS nx_total_elec,        /* 周总用电量 */ ' . '            ROUND((r.total_elec - last_r.total_elec) / last_r.total_elec * 100, 2)                           AS nx_total_elec_chg,    /* 周总用电量 变化百分比 */ ' . '            r.it_elec                                                                                        AS nx_it_elec,           /* 周IT用电量 */ ' . '            ROUND((r.it_elec - last_r.it_elec) / last_r.it_elec * 100, 2)                                    AS nx_it_elec_chg,       /* 周IT用电量 变化百分比 */ ' . '  ' . '            /* 资源 */ ' . '            ifnull(r.field_rent_rate ,"漏填" )                                                                              AS zy_field_rent,        /* 周场租率 */ ' . '            r.field_rent_rate - last_r.field_rent_rate                                                       AS zy_field_rent_chg,    /* 周场租率 变化百分点 */ ' . '            ifnull(r.it_capacity_rate ,"漏填" )                                                                              AS zy_it_capability,     /* 周IT负载率 */ ' . '            r.it_capacity_rate - last_r.it_capacity_rate                                                     AS zy_it_capability_chg, /* 周IT负载率 变化百分点 */ ' . '            r.actual_field_rack                                                                              As zy_field_rack,        /* 周进场机柜数 */ ' . '            ROUND((r.actual_field_rack - last_r.actual_field_rack) / last_r.actual_field_rack * 100, 2)      AS zy_field_rack_chg,    /* 周进场机柜数 变化百分比 */ ' . '            r.actual_elec_rack                                                                               AS zy_elec_rack,         /* 周上电机柜数 */ ' . '            ROUND((r.actual_field_rack - last_r.actual_field_rack) / last_r.actual_field_rack * 100, 2)      AS zy_elec_rack_chg,     /* 周上电机柜数 变化百分比 */ ' . '            r.remaining_unit                                                                                 AS zy_remaining_unit     /* 周剩余标准机柜位 */ ' . '       FROM dc ' . '  LEFT JOIN dc_weekly_elec_record r ' . '         ON r.dc_id = dc.dc_id ' . '        AND r.record_week = DATE_FORMAT(DATE_SUB(NOW(), INTERVAL WEEKDAY(NOW()) + 10 DAY), "%Y%m%d") left outer join (SELECT dc_id,SUM(area_c) AS area_c ,SUM(ups_out_energy) AS elec_c  FROM room GROUP BY dc_id) raa on raa.dc_id =dc.dc_id ' . '  LEFT JOIN dc_weekly_elec_record last_r ' . '         ON last_r.dc_id = dc.dc_id ' . '        AND last_r.record_week = DATE_FORMAT(DATE_SUB(NOW(), INTERVAL WEEKDAY(NOW()) + 17 DAY), "%Y%m%d") ' . '      WHERE dc.fullname IN (' . R::genSlots($dc_names) . ') ', $dc_names);
} catch (Exception $e) {
    exit('DB portal select failed 2_1 \\n' . $e->getMessage());
}
/* 能效信息   -- 月PUE      -- 月用电情况 -- 月总电量
 * 资源信息   -- 场租率     -- IT负载率   -- 上电机柜数 -- 进场机柜数 -- 剩余机柜位 */
try {
    $dc_view_2_2 = R::getAll('     SELECT _month.dc_name                                        AS dc_name,                  /* 数据中心名称 */ ' . '  ' . '            /* 能效 */ ' . '            a.pue                                                 AS nx_pue_month,             /* 月PUE */ ' . '            a.huanbiPUE                                           AS nx_pue_chg_month,         /* 月PUE 变化百分比 */ ' . '            a.shijidc                                             AS nx_total_elec_month,      /* 月总用电量 */ ' . '            ROUND(a.huanbi_shijidc / a.shijidc, 2)                AS nx_total_elec_chg_month,  /* 月总用电量 变化百分比 */ ' . '            a.shijiIT                                             AS nx_it_elec_month,         /* 月IT用电量 */ ' . '            ROUND(a.huanbiIT / a.shijiIT, 2)                      AS nx_it_elec_chg_month,     /* 月IT用电量 变化百分比 */ ' . '  ' . '            /* 资源 */ ' . '            ROUND(a.hetong_jiguiwei *100 / a.guihuajiguiwei,2)                                                    AS zy_field_rent_month,        /* 月场租率 */ ' . '            ROUND(a.hetong_jiguiwei / a.guihuajiguiwei,2) - ROUND(b.hetong_jiguiwei / b.guihuajiguiwei, 2)   AS zy_field_rent_chg_month,    /* 月场租率 变化百分点 */ ' . '            ROUND(a.shijiITKW *100/ a.guihuadianliang,2)                                                         AS zy_it_capability_month,     /* 月IT负载率 */ ' . '            ROUND(a.shijiITKW / a.guihuadianliang,2) - ROUND(b.shijiITKW / b.guihuadianliang, 2)             AS zy_it_capability_chg_month, /* 月IT负载率 变化百分点 */ ' . '            a.jinchang_jigui                                                                                 As zy_field_rack_month,        /* 月进场机柜数 */ ' . '            ROUND(a.huanbijinchang_jigui *100/ a.jinchang_jigui, 2)                                              AS zy_field_rack_chg_month,    /* 月进场机柜数 变化百分比 */ ' . '            a.shangdian_jiguishu                                                                             AS zy_elec_rack_month,         /* 月上电机柜数 */ ' . '            ROUND(a.huanbishangdian_jiguishu *100 / a.shangdian_jiguishu, 2)                                      AS zy_elec_rack_chg_month,     /* 月上电机柜数 变化百分比 */ ' . '            a.shengyu_jiguiwei                                                                               AS zy_remaining_unit_month     /* 月剩余标准机柜位 */ ' . '       FROM ( SELECT dc.dc_id, ' . '                     dc.fullname AS dc_name, ' . '                     DATE_FORMAT(DATE_SUB(NOW(), INTERVAL (CASE WHEN DAY(NOW()) < 11 THEN 2 ELSE 1 END) MONTH), "%Y%m")*1 AS last_month, ' . '                     DATE_FORMAT(DATE_SUB(NOW(), INTERVAL (CASE WHEN DAY(NOW()) < 11 THEN 3 ELSE 2 END) MONTH), "%Y%m")*1 AS last_last_month ' . '                FROM dc ' . '            ) AS _month ' . '  LEFT JOIN dcrm_his.report_dc a ' . '         ON _month.last_month = a.yuefen ' . '        AND _month.dc_id = a.dc_id' . '  LEFT JOIN dcrm_his.report_dc b ' . '         ON _month.last_last_month = b.yuefen ' . '        AND _month.dc_id = b.dc_id ' . '      WHERE _month.dc_name IN (' . R::genSlots($dc_names) . ') ', $dc_names);
} catch (Exception $e) {
    exit('DB portal select failed 2_2 \\n' . $e->getMessage());
}
/* 新增客户项目条线查询数据
 * 项目数 -- 近三月离场项目 -- 近三月进场项目 -- 上月离场项目 -- 上月进场项目 -- 近三月进场机柜 -- 近三月离场机柜 -- 上月进场机柜 -- 上月离场机柜 */
try {
    $dc_view_18 = R::getAll('     SELECT dc.fullname, /*数据中心*/ ' . '            COUNT(DISTINCT CASE WHEN sp.is_released = 0 THEN sp.sub_project_id ELSE NULL END)                                                AS project_cnt,                /* 项目数 */ ' . '            COUNT(DISTINCT CASE WHEN     sp.released_time > CONCAT(DATE_FORMAT(LAST_DAY(NOW() - INTERVAL 3 MONTH), "%Y-%m-"), "01") ' . '                                     AND sp.released_time < LAST_DAY(NOW() - INTERVAL 1 MONTH) ' . '                                THEN sp.sub_project_id ' . '                                ELSE NULL ' . '                            END )                                                                                                            AS project_release_threemonth, /* 近三月离场项目 */ ' . '            COUNT(DISTINCT CASE WHEN     sp.create_time > CONCAT(DATE_FORMAT(LAST_DAY(NOW() - INTERVAL 3 MONTH), "%Y-%m-"), "01") ' . '                                     AND sp.create_time < LAST_DAY(NOW() - INTERVAL 1 MONTH) ' . '                                THEN sp.sub_project_id ' . '                                ELSE NULL ' . '                            END )                                                                                                            AS project_in_threemonth,      /* 近三月进场项目 */ ' . '            COUNT(DISTINCT CASE WHEN     sp.released_time > CONCAT(DATE_FORMAT(LAST_DAY(NOW() - INTERVAL 1 MONTH), "%Y-%m-"), "01") ' . '                                     AND sp.released_time < LAST_DAY(NOW() - INTERVAL 1 MONTH) ' . '                                THEN sp.sub_project_id ' . '                                ELSE NULL ' . '                            END )                                                                                                            AS project_release_onemonth,   /* 上月离场项目 */ ' . '            COUNT(DISTINCT CASE WHEN     sp.create_time > CONCAT(DATE_FORMAT(LAST_DAY(NOW() - INTERVAL 1 MONTH), "%Y-%m-"), "01") ' . '                                     AND sp.create_time < LAST_DAY(NOW() - INTERVAL 1 MONTH) ' . '                                THEN sp.sub_project_id ' . '                                ELSE NULL ' . '                            END )                                                                                                            AS project_in_onemonth,        /* 上月进场项目 */ ' . '            COUNT(DISTINCT CASE WHEN     prc.field_in_time > CONCAT(DATE_FORMAT(LAST_DAY(NOW() - INTERVAL 3 MONTH), "%Y-%m-"), "01") ' . '                                     AND prc.field_in_time < LAST_DAY(NOW() - INTERVAL 1 MONTH) ' . '                                THEN prc.pro_room_cabinet_id ' . '                                ELSE NULL ' . '                            END )                                                                                                            AS cabinet_in_threemonth,     /* 近三月进场机柜 */ ' . '            COUNT(DISTINCT CASE WHEN     prc.field_out_time > CONCAT(DATE_FORMAT(LAST_DAY(NOW() - INTERVAL 3 MONTH), "%Y-%m-"), "01") ' . '                                     AND prc.field_out_time < LAST_DAY(NOW() - INTERVAL 1 MONTH) ' . '                                THEN prc.pro_room_cabinet_id ' . '                                ELSE NULL ' . '                            END )                                                                                                            AS cabinet_out_threemonth,    /* 近三月离场机柜 */ ' . '            COUNT(DISTINCT CASE WHEN     prc.field_in_time > CONCAT(DATE_FORMAT(LAST_DAY(NOW() - INTERVAL 1 MONTH), "%Y-%m-"), "01") ' . '                                     AND prc.field_in_time < LAST_DAY(NOW() - INTERVAL 1 MONTH) ' . '                                THEN prc.pro_room_cabinet_id ' . '                                ELSE NULL ' . '                            END )                                                                                                            AS cabinet_in_onemonth,       /* 上月进场机柜 */ ' . '            COUNT(DISTINCT CASE WHEN     prc.field_out_time > CONCAT(DATE_FORMAT(LAST_DAY(NOW() - INTERVAL 1 MONTH), "%Y-%m-"), "01") ' . '                                     AND prc.field_out_time < LAST_DAY(NOW() - INTERVAL 1 MONTH) ' . '                                THEN prc.pro_room_cabinet_id ' . '                                ELSE NULL ' . '                            END )                                                                                                            AS cabinet_out_onemonth       /* 上月离场机柜 */ ' . '       FROM dc ' . ' INNER JOIN room r               ON dc.dc_id = r.dc_id ' . ' INNER JOIN pro_room pr          ON r.room_id = pr.room_id ' . ' INNER JOIN sub_project sp       ON sp.sub_project_id = pr.sub_project_id ' . ' INNER JOIN pro_room_cabinet prc ON pr.pro_room_id = prc.pro_room_id ' . '      WHERE dc.fullname IN (' . R::genSlots($dc_names) . ') ' . '   GROUP BY dc.fullname ', $dc_names);
} catch (Exception $e) {
    exit('DB portal select failed 2 \\n' . $e->getMessage());
}
R::close();
/***************************************/
/********* PART 3: Remedy DB ***********/
/***************************************/
try {
    $db = new PDO($GLOBALS['db_remedy_url'], $GLOBALS['db_remedy_user'], $GLOBALS['db_remedy_pass'], array(PDO::ATTR_PERSISTENT => true));
    $db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
} catch (PDOException $e) {
    exit('DB remedy select failed \\n' . $e->getMessage());
}
/* 设备信息 -- 关键设备数   -- 关键设备维保覆盖率  -- 关键设备维保覆盖率(区分 自行维保 && 供应商维保)
            -- UPS设备数    -- UPS设备维保覆盖率   -- 冷水机组设备数   -- 冷水机组维保覆盖率
示例#10
0
    public function show_Update()
    {
        $maxPX = 4;
        $userID = $this->user->getID();
        // check if new x/y pos is a valid position
        if (!is_numeric($_POST['x']) || !is_numeric($_POST['y'])) {
            $this->error('Invalid position');
        }
        // new pos
        $x = $_POST['x'] < 0 ? 0 : $_POST['x'];
        $y = $_POST['y'] < 0 ? 0 : $_POST['y'];
        // old pos
        $om = $this->mapPosition;
        // you cant move to much at once
        $deltaX = abs($om->x - $x);
        $deltaY = abs($om->y - $y);
        // skip if player did not move
        if ($deltaX != 0 || $deltaY != 0) {
            if ($deltaX > $maxPX || $deltaY > $maxPX) {
                $this->output('player_position', array($om->x, $om->y));
                $this->error('moved_to_far');
            }
            // update to new pos
            $om->x = $x;
            $om->y = $y;
            foreach ($this->teleportMap[$om->map] as $teleportPoint) {
                if ($om->x == $teleportPoint["x"] && $om->y == $teleportPoint["y"]) {
                    // check if key is needed
                    if (isset($teleportPoint["keys"])) {
                        $array = $teleportPoint["keys"];
                        $ct = R::getCell('SELECT
											COUNT(inventory.id)
									FROM
										inventory, item
									WHERE
										item.type IN (' . R::genSlots($teleportPoint["keys"]) . ')
									AND
										inventory.user_id = ' . $this->user->getID(), $teleportPoint["keys"]);
                        if ($ct == 0) {
                            continue;
                        }
                    }
                    $om->map = $teleportPoint["target"]["map"];
                    $om->x = $teleportPoint["target"]["x"];
                    $om->y = $teleportPoint["target"]["y"];
                }
            }
            //R::store($om);
            R::exec('UPDATE map_position SET x = ?, y = ?, map = ? WHERE user_id = ?', array($om->x, $om->y, $om->map, $this->user->getID()));
        }
        $this->output('player_position', array($om->x, $om->y));
        $this->output('map', $om->map);
        // get surrounding players
        /*$players = R::find('map_position', ' map = ? AND user_id != ?', array(
        			$om->map,
        			$this->user->getID()
        		));*/
        // get surrounding npcs, cached
        $npcs = RCached::find('map_npc', ' map = ?', array($om->map), date('d.m.Y'));
        $p = array();
        $players = R::getAll('SELECT
			map_position.x as x,
			map_position.y as y,

			user.id as userid,
			user.username as username,
			user.characterImage as ucharacter,

			COUNT(session.id) as isOnline

		FROM

			map_position, user, session

		WHERE

			map_position.map = ? AND
			map_position.user_id != ? AND
			user.id = map_position.user_id AND
			session.user_id = user.id AND
			session.expires > ?', array($om->map, $this->user->getId(), time()));
        foreach ($players as $playerPos) {
            if ($playerPos['x'] == null) {
                continue;
            }
            $p['p' . $playerPos['userid']] = array('name' => $playerPos['username'], 'id' => $playerPos['userid'], 'x' => $playerPos['x'], 'y' => $playerPos['y'], 'character' => $playerPos['ucharacter'], 'is_npc' => false, 'look_direction' => 2, 'npc_type' => '');
        }
        /*
        foreach ($players as $playerPos) {
        	if (!$playerPos->user->isOnline()) {
        		continue;
        	}
        
        	$p['p'.$playerPos->user->id] = array('name' => $playerPos->user->username,
        										 'x' => $playerPos->x,
        										 'y' => $playerPos->y,
        										 'id' => $playerPos->user->id,
        										 'character' => $playerPos->user->characterImage,
        										 'is_npc' => false,
        									     'look_direction' => 2,
        									     'npc_type' => "");
        }
        */
        foreach ($npcs as $npc) {
            $p['n' . $npc->id] = array('name' => $npc->name, 'x' => $npc->x, 'y' => $npc->y, 'id' => $npc->id, 'character' => $npc->characterImage, 'is_npc' => true, 'look_direction' => $npc->lookDirection, 'npc_type' => $npc->type);
        }
        $this->output('players', $p);
    }
示例#11
0
<?php

require 'api_rb.php';
require 'api_db.php';
// Query get name, title, skill
R::addDatabase('kayako', $GLOBALS['db_kayako_url'], $GLOBALS['db_kayako_user'], $GLOBALS['db_kayako_pass']);
R::selectDatabase('kayako');
if (!R::testConnection()) {
    exit('DB failed' . PHP_EOL);
}
R::freeze(true);
try {
    $staff_csc_ids = R::getCell(' SELECT TRIM(BOTH "," FROM REPLACE(REPLACE(GROUP_CONCAT(DISTINCT com_staff), ",,", ","), ",,", ",")) cscs ' . '   FROM supportsr.order_service_company ' . '  WHERE com_staff IS NOT NULL AND com_staff != "" ');
    if (!empty($staff_csc_ids)) {
        $id_array = explode(',', $staff_csc_ids);
        $staff_cscs = R::getAll(' SELECT s.fullname, s.email, s.mobilenumber ' . '   FROM kayako_fusion.swstaff s ' . '  WHERE s.staffid IN (' . R::genSlots($id_array) . ')', $id_array);
    }
} catch (Exception $e) {
    header('Content-type:text/json;charset=utf-8');
    echo json_encode(['result' => 'failed', 'error' => 'db error portal', 'details' => $e->getMessage()]);
    die;
}
R::close();
// Return
header('Content-type:text/json;charset=utf-8');
echo json_encode(['result' => 'true', 'staff_cscs' => $staff_cscs], JSON_UNESCAPED_UNICODE);
die;
示例#12
0
文件: util.php 项目: darwish/skyhigh
function search($query, $category_id = null, $page = 1)
{
    $where = ['shop_id IS NOT NULL'];
    $params = [];
    if (!empty($query)) {
        $where[] = "(MATCH(title) AGAINST(?))";
        $params[] = "%{$query}%";
    }
    if ($category_id) {
        $children = R::load("category", $category_id)->ownCategoryList;
        $categoryAndChildrenIds = array_merge([$category_id], array_map(function ($c) {
            return $c->id;
        }, $children));
        $slots = R::genSlots($categoryAndChildrenIds);
        $where[] = "category_id IN ({$slots})";
        $params = array_merge($params, $categoryAndChildrenIds);
    }
    $pageSize = 10;
    $offset = ($page - 1) * $pageSize;
    $results = R::find("item", implode(" AND ", $where) . " LIMIT {$offset}, {$pageSize}", $params);
    foreach ($results as $item) {
        $item->shop;
        // Load shop data for export
    }
    $pageStart = ($page - 1) * $pageSize + 1;
    $pageEnd = $pageStart + $pageSize - 1;
    if ($pageEnd > count($results)) {
        $pageEnd = count($results);
    }
    return ['query' => $query, 'results' => $results, 'count' => count($results), 'page' => $page, 'pageSize' => $pageSize, 'start' => $pageStart, 'end' => $pageEnd];
}
示例#13
0
    exit('DB failed' . PHP_EOL);
}
R::freeze(true);
try {
    $user_email = R::getCell('SELECT email' . '  FROM wxcsc_users' . ' WHERE openid = :openid' . ' LIMIT 1', [':openid' => $user_openid]);
} catch (Exception $e) {
    header('Content-type:text/json;charset=utf-8');
    echo json_encode(['result' => 'failed', 'error' => 'db error wechat', 'details' => $e->getMessage()]);
    die;
}
R::close();
_log(json_encode(['openid' => $user_openid, 'user_email' => $user_email]));
// Query
R::addDatabase('kayako', $GLOBALS['db_kayako_url'], $GLOBALS['db_kayako_user'], $GLOBALS['db_kayako_pass']);
R::selectDatabase('kayako');
if (!R::testConnection()) {
    exit('DB failed' . PHP_EOL);
}
R::freeze(true);
try {
    $user = R::getRow('     SELECT a.fullname AS name, ' . '            c.organizationname AS organization,' . '            a.phone AS phone,' . '            b.email AS email,' . '            d.com_century AS dc_id' . '       FROM kayako_fusion.swusers a' . ' INNER JOIN kayako_fusion.swuseremails b ' . '         ON a.userid = b.linktypeid' . ' INNER JOIN kayako_fusion.swuserorganizations c' . '         ON a.userorganizationid = c.userorganizationid' . '  LEFT JOIN supportsr.order_service_company d' . '         ON d.com_id = c.userorganizationid' . '      WHERE b.email = :email' . '        AND b.linktype = 1', [':email' => $user_email]);
    $user_dc_id_arr = explode(',', $user['dc_id']);
    $user_dc = R::getAssoc('SELECT name' . '  FROM supportsr.esr_companylist' . ' WHERE id IN (' . R::genSlots($user_dc_id_arr) . ')', $user_dc_id_arr);
} catch (Exception $e) {
    header('Content-type:text/json;charset=utf-8');
    echo json_encode(['result' => 'failed', 'error' => 'db error kayako', 'details' => $e->getMessage()]);
    die;
}
header('Content-type:text/json;charset=utf-8');
echo json_encode(['result' => 'true', 'user' => $user, 'user_dc' => $user_dc], JSON_UNESCAPED_UNICODE);
die;
示例#14
0
 /**
  * Test Transactions.
  * 
  * @return void
  */
 public function testTransactions()
 {
     testpack('transactions');
     R::begin();
     $bean = R::dispense('bean');
     R::store($bean);
     R::commit();
     asrt(R::count('bean'), 1);
     R::wipe('bean');
     R::freeze(1);
     R::begin();
     $bean = R::dispense('bean');
     R::store($bean);
     R::rollback();
     asrt(R::count('bean'), 0);
     R::freeze(FALSE);
     testpack('genSlots');
     asrt(R::genSlots(array('a', 'b')), '?,?');
     asrt(R::genSlots(array('a')), '?');
     asrt(R::genSlots(array()), '');
 }
示例#15
0
R::close();
// Check
if (empty($users_wechat) || count($users_wechat) == 0) {
    header('Content-type:text/json;charset=utf-8');
    echo json_encode(['result' => 'failed', 'error' => 'No data found']);
    die;
}
// Kayako
R::addDatabase('kayako', $GLOBALS['db_kayako_url'], $GLOBALS['db_kayako_user'], $GLOBALS['db_kayako_pass']);
R::selectDatabase('kayako');
if (!R::testConnection()) {
    exit('DB failed' . PHP_EOL);
}
R::freeze(true);
$emails = array_column($users_wechat, 'email');
try {
    $users_kayako = R::getAll('       SELECT u.fullname, IFNULL(o.organizationname, "-") AS organizationname ' . '         FROM kayako_fusion.swuseremails e ' . '   INNER JOIN kayako_fusion.swusers u ' . '           ON e.linktypeid = u.userid ' . '          AND e.linktype = 1 ' . '    LEFT JOIN kayako_fusion.swuserorganizations o ' . '           ON u.userorganizationid = o.userorganizationid ' . '        WHERE e.email IN (' . R::genSlots($emails) . ') ' . '     ORDER BY e.email ASC ', $emails);
} catch (Exception $e) {
    header('Content-type:text/json;charset=utf-8');
    echo json_encode(['result' => 'failed', 'error' => 'db error kayako', 'details' => $e->getMessage()]);
    die;
}
R::close();
// Merge
$users_1 = array_combine($emails, $users_wechat);
$users_2 = array_combine($emails, $users_kayako);
$users = array_merge_recursive($users_1, $users_2);
// Return
header('Content-type:text/json;charset=utf-8');
echo json_encode(['result' => 'true', 'all' => $users_count, 'users' => $users], JSON_UNESCAPED_UNICODE);
die;