Commit 01058cae by Phạm Văn Đoan

cập nhật xử lý xóa data khi ko lấy lượt nghe nữa

parent 133eaa95
......@@ -18,6 +18,8 @@ class CmsTrack extends CI_Controller
$this->load->model('user_model');
$this->load->model('actionlog_model');
$this->load->model('crawler_listen_blacklist_model');
$this->load->model('crawler_listen_model');
$this->load->model('crawler_listen_history_model');
}
/**
......@@ -556,18 +558,35 @@ class CmsTrack extends CI_Controller
*/
public function updateBlacklistByAjax()
{
ini_set('max_execution_time', 180);
//
$track_id = $this->input->post('track_id');
$title = $this->input->post('title');
$src = $this->input->post('src');
$selected = $this->input->post('selected');
//
$result = $this->crawler_listen_blacklist_model->checkAndUpdate($track_id, $title, $src, $selected);
/**
* Kiểm tra nếu lưu blacklist thành công và user chọn tích bỏ lấy lượt nghe thì xóa data lịch sử
* Data lịch sử bao gồm ở 2 bảng: crawler_listens và crawler_listen_histories
*/
if ($result && $selected == 1) {
// Reset data ở bảng crawler_listens
$reset = $this->crawler_listen_model->resetCrawlerListenBySrc($track_id, $src);
// Reset data ở bảng crawler_listen_histories
if ($reset) {
$this->crawler_listen_history_model->resetCrawlerListenHistoryBySrc($track_id, $src);
}
}
//
if ($result) {
echo json_encode([
'code' => 200,
'message' => 'Cập nhật thành công',
'data' => null
'data' => (isset($reset) && $reset) ? 'Reset lượt nghe thành công' : 'Reset lượt nghe không thành công'
]);
} else {
echo json_encode([
......
......@@ -55,7 +55,7 @@ class Crawler_listen_blacklist_model extends CI_Model
$this->db->where($this->_table . '.src', $src);
$query = $this->db->get();
$result = $query->result_array();
//
// Nếu đã tồn tại mà bỏ tích chọn thì xóa, ngược lại thì tạo mới
if (isset($result[0])) {
if ($selected == 0) {
$this->db->where('id', $result[0]['id']);
......
......@@ -44,6 +44,66 @@ class Crawler_listen_history_model extends CI_Model
return $query->result_array();
}
/**
* Hàm thực hiện reset lượt nghe lịch sử ở nguồn và track id tương ứng
* khi user tích chọn không lấy lượt nghe ở nguồn src nào đó
* Lưu ý: ko reset được tổng lượt nghe, nên dùng trigger để xử lý
*
* @param $track_id
* @param $src
* @return bool
*/
public function resetCrawlerListenHistoryBySrc($track_id, $src)
{
try {
$this->db->select($this->_table . '.*');
$this->db->from($this->_table);
$this->db->where($this->_table . '.track_id', $track_id);
$query = $this->db->get();
$history = $query->result_array();
//
if (isset($history[0])) {
switch ($src) {
case 'zing':
$data_reset = [
'alltime_zing' => 0,
'zing_count' => 0,
'updated_at' => date('Y-m-d H:i:s')
];
break;
case 'nct':
$data_reset = [
'alltime_nct' => 0,
'nct_count' => 0,
'updated_at' => date('Y-m-d H:i:s')
];
break;
case 'keeng':
$data_reset = [
'alltime_keeng' => 0,
'keeng_count' => 0,
'updated_at' => date('Y-m-d H:i:s')
];
break;
default:
$data_reset = [];
}
if (count($data_reset) > 0) {
$this->db->where('track_id', $track_id);
$this->db->update($this->_table, $data_reset);
//
return true;
} else {
return false;
}
} else {
return false;
}
} catch (Exception $e) {
return false;
}
}
}
/* End of file welcome.php */
......
<?php if (!defined('BASEPATH')) exit('No direct script access allowed');
class Crawler_listen_model extends CI_Model
{
protected $_table = 'crawler_listens';
public function __construct()
{
parent::__construct();
date_default_timezone_set("Asia/Ho_Chi_Minh");
}
/**
* Hàm thực hiện reset lượt nghe ở nguồn tương ứng
* khi user tích chọn không lấy lượt nghe ở nguồn src nào đó
*
* @param $track_id
* @param $src
* @return bool
*/
public function resetCrawlerListenBySrc($track_id, $src)
{
try {
$this->db->select($this->_table . '.*');
$this->db->from($this->_table);
$this->db->where($this->_table . '.track_id', $track_id);
$query = $this->db->get();
$track = $query->result_array();
//
if (isset($track[0])) {
switch ($src) {
case 'zing':
$data_reset = [
'yesterday_zing' => 0,
'today_zing' => 0,
'date_zing' => 0,
'week_zing' => 0,
'month_zing' => 0,
'year_zing' => 0,
'alltime_zing' => 0,
'zing_crawler_at' => null
];
break;
case 'nct':
$data_reset = [
'yesterday_nct' => 0,
'today_nct' => 0,
'date_nct' => 0,
'week_nct' => 0,
'month_nct' => 0,
'year_nct' => 0,
'alltime_nct' => 0,
'nct_crawler_at' => null
];
break;
case 'keeng':
$data_reset = [
'yesterday_keeng' => 0,
'today_keeng' => 0,
'date_keeng' => 0,
'week_keeng' => 0,
'month_keeng' => 0,
'year_keeng' => 0,
'alltime_keeng' => 0,
'keeng_crawler_at' => null
];
break;
default:
$data_reset = [];
}
if (count($data_reset) > 0) {
$this->db->where('id', $track[0]['id']);
$this->db->update($this->_table, $data_reset);
//
return true;
} else {
return false;
}
} else {
return false;
}
} catch (Exception $e) {
return false;
}
}
}
/* End of file welcome.php */
/* Location: ./application/controllers/welcome.php */
\ No newline at end of file
......@@ -90,9 +90,10 @@
onclick="updateBlacklistByAjax(<?php echo $track[0]['id'] ?>, '<?php echo str_replace(["'", '"'], [","], $track[0]['title']); ?>', 'keeng')"
<?php echo (in_array('keeng', $blacklist) ? 'checked' : '') ?>>&nbsp;Keeng
</label>
<br><br>
<p>Lưu ý: Khi Bạn tích chọn <span class="color-red">KHÔNG LẤY LƯỢT NGHE</span> thì hệ thống sẽ <span class="color-red">XÓA</span> toàn bộ dữ liệu đã lấy của Bài hát này trên nguồn đã chọn.</p>
</div>
</div>
</div>
</div>
<br>
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment