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 ...@@ -18,6 +18,8 @@ class CmsTrack extends CI_Controller
$this->load->model('user_model'); $this->load->model('user_model');
$this->load->model('actionlog_model'); $this->load->model('actionlog_model');
$this->load->model('crawler_listen_blacklist_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 ...@@ -556,18 +558,35 @@ class CmsTrack extends CI_Controller
*/ */
public function updateBlacklistByAjax() public function updateBlacklistByAjax()
{ {
ini_set('max_execution_time', 180);
//
$track_id = $this->input->post('track_id'); $track_id = $this->input->post('track_id');
$title = $this->input->post('title'); $title = $this->input->post('title');
$src = $this->input->post('src'); $src = $this->input->post('src');
$selected = $this->input->post('selected'); $selected = $this->input->post('selected');
// //
$result = $this->crawler_listen_blacklist_model->checkAndUpdate($track_id, $title, $src, $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) { if ($result) {
echo json_encode([ echo json_encode([
'code' => 200, 'code' => 200,
'message' => 'Cập nhật thành công', '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 { } else {
echo json_encode([ echo json_encode([
......
...@@ -55,7 +55,7 @@ class Crawler_listen_blacklist_model extends CI_Model ...@@ -55,7 +55,7 @@ class Crawler_listen_blacklist_model extends CI_Model
$this->db->where($this->_table . '.src', $src); $this->db->where($this->_table . '.src', $src);
$query = $this->db->get(); $query = $this->db->get();
$result = $query->result_array(); $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 (isset($result[0])) {
if ($selected == 0) { if ($selected == 0) {
$this->db->where('id', $result[0]['id']); $this->db->where('id', $result[0]['id']);
......
...@@ -44,6 +44,66 @@ class Crawler_listen_history_model extends CI_Model ...@@ -44,6 +44,66 @@ class Crawler_listen_history_model extends CI_Model
return $query->result_array(); 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 */ /* 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 @@ ...@@ -90,9 +90,10 @@
onclick="updateBlacklistByAjax(<?php echo $track[0]['id'] ?>, '<?php echo str_replace(["'", '"'], [","], $track[0]['title']); ?>', 'keeng')" onclick="updateBlacklistByAjax(<?php echo $track[0]['id'] ?>, '<?php echo str_replace(["'", '"'], [","], $track[0]['title']); ?>', 'keeng')"
<?php echo (in_array('keeng', $blacklist) ? 'checked' : '') ?>>&nbsp;Keeng <?php echo (in_array('keeng', $blacklist) ? 'checked' : '') ?>>&nbsp;Keeng
</label> </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>
</div> </div>
</div> </div>
<br> <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