File: /var/www/dk/wp-content/themes/food/Model/food_activity/FoodActivityPlayerModel.php
<?php
//比赛排行
class FoodActivityPlayerModel extends CommonModel
{
//`id`, `aid`, `ref`, `nickname`, `declaration`, `avatar`, `score`, `add_time`, `update_time`
public $tableName = 'food_activity_player';
public function setFoodActivityPlayer($action, $data, $debug = false)
{
global $wpdb;
$result = 0;
$args = [
'user_id',
'aid',
'ref',
'nickname',
'title',
'declaration',
'video_file_id',
'video_url',
'img_id',
'avatar',
'score',
'add_time',
'review_remark',
'status',
];
$form = [];
foreach ($args as $arg) {
if (isset($data[$arg])) {
$form[$arg] = $data[$arg];
}
}
$form['update_time'] = time() + 3600 * 8;
// $form['mtime2'] = date("Y-m-d H:i:s", time());
// if (isset($form['title'])) {
// $form['title'] = serialize($form['title']);
// }
if ($debug) {
print_r($form);
}
if ($action == 'update') {
$result = $wpdb->update($this->tableName, $form, [
'id' => $data['id']
]);
}
if ($action == 'add') {
$form['add_time'] = time() + 3600 * 8;
$result = $wpdb->insert($this->tableName, $form);
$result = $wpdb->insert_id;
}
if ($action == 'del') {
$result = $wpdb->update($this->tableName, [
'status' => 99,
'update_time' => $form['update_time'],
], [
'id' => $data['id']
]);
}
if ($debug) {
echo '<br>' . PHP_EOL . $wpdb->last_query;
}
return $result;
}
// public function delFoodActivity($data, $debug = false)
// {
// global $wpdb;
// $sql = "DELETE FROM {$this->tableName} WHERE `id` = '%d' ";
// $sql = $wpdb->prepare($sql, $data['id']);
// if ($debug) {
// echo '<br>' . $sql;
// }
// return $wpdb->query($sql);
// }
public function increasePlayerScore($aid, $player_id, $debug = false)
{
global $wpdb;
$sql = "UPDATE `food_activity_player` SET `score` = `score` + 1,`update_time` = '%d' WHERE `aid` = '%d' AND `id` = '%d' ";
$sql = $wpdb->prepare($sql, time(), $aid, $player_id);
if ($debug) {
echo '<br>' . $sql;
}
return $wpdb->query($sql);
}
/**
* 减去用户投票 -1
* @param $aid
* @param $player_id
* @param $debug
* @return mixed
*/
public function reducePlayerScore($aid, $player_id, $debug = false)
{
global $wpdb;
$sql = "UPDATE `food_activity_player` SET `score` = `score` - 1,`update_time` = '%d' WHERE `aid` = '%d' AND `id` = '%d' ";
$sql = $wpdb->prepare($sql, time(), $aid, $player_id);
if ($debug) {
echo '<br>' . $sql;
}
return $wpdb->query($sql);
}
/**
* 课程系列分页
* @param $where
* @param $data
* @param false $debug
* @return mixed
*/
public function getCountByPage($where, $data, $debug = false)
{
$sql = $this->getSqlForPage($where, false, $debug);
if ($debug) {
echo '<br>' . $sql;
}
global $wpdb;
return $wpdb->get_var($sql);
}
public function getInfoByPage($where, $data, $debug = false)
{
$sql = $this->getSqlForPage($where, true, $debug);
// $where = $data;
$startpoint = ($where['pageSize'] * ($where['pageNum'] - 1));
$order = $where['order'];
$sql = $sql . " ORDER BY {$order} LIMIT {$startpoint},{$where['pageSize']}";
if ($debug) {
echo 'getInfoByPage -> ' . $sql;
}
global $wpdb;
return $wpdb->get_results($sql); //, 'ARRAY_A'
}
private function getSqlForPage($data, $forPage = false, $debug = false)
{
unset($data['order']);
unset($data['pageNum']);
unset($data['pageSize']);
if ($debug) {
echo 'getCountByPage -> ';
print_r($data);
}
$sql = "SELECT COUNT(*) FROM {$this->tableName}";
if ($forPage) {
$sql = "SELECT * FROM {$this->tableName}";
}
$inData = [];
// if (key_exists('is_admin', $data)) {
// $inData['user_id'] = $data['user_id'];
// unset($data['user_id']);
// unset($data['is_admin']);
// }
$likeArr = $this->sqlStrLike($sql, $data, $debug);
$sql = $this->sqlStrByPage($likeArr[0], $likeArr[1], $debug);
if (count($inData) > 0) {
$sql = $this->sqlStrIN($sql, $inData, $debug);
}
return $sql;
}
public function sqlStrLike($sql, $data, $debug = false)
{
$outArr = $data;
$outStr = '';
$index = 0;
$sqlData = [];
if (is_array($data)) {
if (isset($data['title'])) {
$sqlData['title'] = $data['title'];
unset($outArr['title']);
}
}
// if ($debug) {
// print_r($sqlData);
// }
if (is_array($sqlData)) {
if (count($sqlData) > 0) {
foreach ($sqlData as $item => $value) {
if ($index == 0) {
$outStr .= " WHERE $item LIKE '%$value%'";
} else {
$outStr .= " AND $item LIKE '%$value%'";
}
$index++;
}
}
}
return [
0 => $sql . $outStr,
1 => $outArr
];
}
public function sqlStrByPage($sql, $data, $debug = false)
{
$outStr = '';
$index = 0;
if (is_array($data)) {
foreach ($data as $item => $value) {
if ($index == 0) {
if (check_str($sql, 'WHERE')) {
$outStr = $outStr . " AND ";
} else {
$outStr = $outStr . " WHERE ";
}
$outStr .= " $item = $value";
} else {
$outStr .= " AND $item = $value";
}
$index++;
}
}
$sql = $sql . $outStr;
// if ($debug) {
// print_r([]);
// echo $sql;
// }
$outStr2 = '';
if (check_str($sql, 'WHERE')) {
$outStr2 = " AND ";
} else {
$outStr2 = " WHERE ";
}
$outStr2 = $outStr2 . "1 = 1"; //"`status` != 99";
return $sql . $outStr2;
}
public function sqlStrIN($sql, $data, $debug = false)
{
$outSql = $sql;
if (is_array($data)) {
if (isset($data['user_id'])) {
//author
//{$where} IN ({$idlist})
$author = $data['user_id'];
$outSql = $sql . " AND `user_id` IN ({$author}) ";
}
}
return $outSql;
}
}