Files
spacestation/api/controllers/plan/Score.php
T
2024-10-17 15:36:33 +08:00

142 lines
5.9 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');
$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']);
}
} else {
$msg = '执行完成';
echo $msg;
debug_log("[info]# " . $msg, __FUNCTION__, $this->log_dir);
}
}
//每日统计
public function scoreDay()
{
$day = date('Y-m-d', strtotime("-1 day"));
$scoreLogModel = new Receiver_score_log_model();
$receiverScoreDayModel = new Receiver_score_day_model();
$redis = &load_cache('redis');
$page = 1;
$size = 100;
$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);
}
}
} else { //合并门店数据
$this->scoreBizDay($day);
}
}
public function scoreBizDay($day)
{
$receiverScoreDayModel = new Receiver_score_day_model();
$redis = &load_cache('redis');
$page = 1;
$size = 100;
$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);
}
}
}
}
}