Files
spacestation/api/controllers/plan/Score.php
T
2024-10-18 14:25:14 +08:00

188 lines
7.8 KiB
PHP

<?php
defined('BASEPATH') or exit('No direct script access allowed');
class Score extends HD_Controller
{
private $log_dir = 'receiver_score';
public function __construct()
{
parent::__construct();
$this->load->model('receiver/receiver_score_log_model');
$this->load->model('receiver/receiver_score_config_model');
$this->load->model('app/licheb/app_licheb_users_model');
$this->load->library('receiver/score_entity');
$this->load->model('receiver/receiver_score_day_model');
}
public function index()
{
$biz_id = $this->input->get('biz_id');
$uid = $this->input->get('uid');
$getPage = $this->input->get('page');
$t_limit = $this->input->get('time_limit');
$h = date('H');
if (!$t_limit && $h > 5) {
echo '当前时间段不可执行';
exit;
}
$redis = &load_cache('redis');
$pageCacheKey = "RECEIVER_SCORE_PLAN_PAGE";
if ($getPage) {
$page = $getPage;
} else {
$page = $redis->get($pageCacheKey) ?: 1;
}
$size = 20;
$groups_string = implode(',', [App_licheb_users_model::GROUP_BIZ, App_licheb_users_model::GROUP_MANAGER]);
$where = [
"group_id in ({$groups_string})" => null,
'status' => 1
];
$biz_id && $where['biz_id'] = $biz_id;
$uid && $where['id'] = $uid;
$rows = $this->app_licheb_users_model->select($where, "id desc", $page, $size, 'id, uname, biz_id');
if ($rows) {
$day = date('Y-m-d', strtotime("-1 day"));
foreach ($rows as $item) {
$result = Score_entity::init($day, $item['id'], $item['group_id'], $item['biz_id']);
}
debug_log("[info]# 当前执行页数" . $page, __FUNCTION__, $this->log_dir);
$page++;
$redis->set($pageCacheKey, $page, 60 * 60);
} else {
$msg = '执行完成';
echo $msg;
debug_log("[info]# " . $msg, __FUNCTION__, $this->log_dir);
}
}
//每日统计
public function scoreDay()
{
$t_limit = $this->input->get('time_limit');
$h = date('H');
if (!$t_limit && $h > 5) {
echo '当前时间段不可执行';
exit;
}
$getPage = $this->input->get('page');
$day = date('Y-m-d', strtotime("-1 day"));
$scoreLogModel = new Receiver_score_log_model();
$receiverScoreDayModel = new Receiver_score_day_model();
$redis = &load_cache('redis');
$pageCacheKey = "RECEIVER_SCORE_DAY_USER_PLAN_PAGE";
if ($getPage) {
$page = $getPage;
} else {
$page = $redis->get($pageCacheKey) ?: 1;
}
$size = 50;
$where = [
'day' => $day,
];
$rows = $scoreLogModel->select($where, "id desc", $page, $size, 'DISTINCT biz_id,uid,day');
if ($rows) {
foreach ($rows as $item) {
$where = [
'biz_id' => $item['biz_id'],
'uid' => $item['uid'],
'day' => $day,
'type' => Receiver_score_day_model::TYPE_USER
];
$scoreDayRow = $receiverScoreDayModel->get($where);
$scoreSum = $scoreLogModel->sum('score', ['uid' => $item['uid'], 'day' => $day]);
$score = $scoreSum ? $scoreSum['score'] : 0;
//获取上一天数据
$where = [
'biz_id' => $item['biz_id'],
'uid' => $item['uid'],
'day<' => $day,
'type' => Receiver_score_day_model::TYPE_USER
];
$dayRow = $receiverScoreDayModel->select($where, 'day desc', 1, 1, 'score');
$change_score = $dayRow[0]['score'] ? $score - $dayRow[0]['score'] : $score;
if ($scoreDayRow) {
$receiverScoreDayModel->update(['score' => $score, 'change_score' => $change_score], ['id' => $scoreDayRow['id']]);
} else {
$addData = [
'biz_id' => $item['biz_id'], 'uid' => $item['uid'],
'score' => $score, 'day' => $day, 'type' => Receiver_score_day_model::TYPE_USER,
'change_score' => $change_score, 'c_time' => time()
];
$receiverScoreDayModel->add($addData);
}
}
debug_log("[info]# 当前执行页数" . $page, __FUNCTION__, $this->log_dir);
$page++;
$redis->set($pageCacheKey, $page, 60 * 60);
} else { //合并门店数据
$finishCacheKey = "RECEIVER_SCORE_DAY_USER_FINISH";
if ($redis->get($finishCacheKey)) {
$msg = '用户合并统计数据执行完成';
echo $msg;
debug_log("[info]# " . $msg, __FUNCTION__, $this->log_dir);
echo "开始执行店铺合并数据";
$redis->set($finishCacheKey, 1, 6 * 60 * 60);
}
$this->scoreBizDay($day);
}
}
public function scoreBizDay($day)
{
$getPage = $this->input->get('page');
!$day && $day = date('Y-m-d', strtotime("-1 day"));
$receiverScoreDayModel = new Receiver_score_day_model();
$redis = &load_cache('redis');
$pageCacheKey = "RECEIVER_SCORE_DAY_BIZ_PLAN_PAGE";
if ($getPage) {
$page = $getPage;
} else {
$page = $redis->get($pageCacheKey) ?: 1;
}
$size = 50;
$where = [
'day' => $day,
'type' => Receiver_score_day_model::TYPE_USER
];
$rows = $receiverScoreDayModel->select($where, "id desc", $page, $size, 'DISTINCT biz_id,day');
if ($rows) {
foreach ($rows as $item) {
$where = [
'biz_id' => $item['biz_id'],
'day' => $day,
'type' => Receiver_score_day_model::TYPE_BIZ
];
$scoreDayRow = $receiverScoreDayModel->get($where);
$scoreSum = $receiverScoreDayModel->sum('score', ['biz_id' => $item['biz_id'], 'day' => $day]);
$score = $scoreSum ? $scoreSum['score'] : 0;
//获取上一天数据
$where = [
'biz_id' => $item['biz_id'],
'day<' => $day,
'type' => Receiver_score_day_model::TYPE_BIZ
];
$dayRow = $receiverScoreDayModel->select($where, 'day desc', 1, 1, 'score');
$change_score = $dayRow[0]['score'] ? $score - $dayRow[0]['score'] : $score;
if ($scoreDayRow) {
$receiverScoreDayModel->update(['score' => $score, 'change_score' => $change_score], ['id' => $scoreDayRow['id']]);
} else {
$addData = [
'biz_id' => $item['biz_id'], 'uid' => $item['uid'],
'score' => $score, 'day' => $day, 'type' => Receiver_score_day_model::TYPE_USER,
'change_score' => $change_score, 'c_time' => time()
];
$receiverScoreDayModel->add($addData);
}
}
debug_log("[info]# 当前执行页数" . $page, __FUNCTION__, $this->log_dir);
$page++;
$redis->set($pageCacheKey, $page, 60 * 60);
} else {
$msg = '店铺合并统计数据执行完成';
echo $msg;
debug_log("[info]# " . $msg, __FUNCTION__, $this->log_dir);
}
}
}