Files
mier-php/application/api/model/Statistics.php

206 lines
7.3 KiB
PHP
Raw Permalink Normal View History

2025-08-11 10:22:05 +08:00
<?php
namespace app\api\model;
use think\Db;
use think\Model;
class Statistics extends Model
{
//统计每日贡献值
public function day_contribution($uid, $rid, $amount, $type = 1)
{
$map = [];
$map[] = ['uid', '=', $uid];
$map[] = ['rid', '=', $rid];
$map[] = ['type', '=', $type];
$day_time = strtotime(date('Ymd'));
$map[] = ['add_time', '>=', $day_time];
$info = Db::name('user_contribution_count_day')->where($map)->find();
if($info) {
Db::name('user_contribution_count_day')->where('sid', $info['sid'])->inc('amount', $amount)->update(['update_time' => time()]);
} else {
$insert_data = [
'uid' => $uid,
'rid' => $rid,
'type' => $type,
'amount' => $amount,
'add_time' => time(),
'update_time' => time(),
];
Db::name('user_contribution_count_day')->insert($insert_data);
}
}
//统计用户每日收益
public function day_charm($uid, $rid, $amount, $type = 1)
{
$map = [];
$map[] = ['uid', '=', $uid];
$map[] = ['rid', '=', $rid];
$map[] = ['type', '=', $type];
$day_time = strtotime(date('Ymd'));
$map[] = ['add_time', '>=', $day_time];
$info = Db::name('user_charm_count_day')->where($map)->find();
if($info) {
Db::name('user_charm_count_day')->where('sid', $info['sid'])->inc('amount', $amount)->update(['update_time' => time()]);
} else {
$insert_data = [
'uid' => $uid,
'rid' => $rid,
'type' => $type,
'amount' => $amount,
'add_time' => time(),
'update_time' => time(),
];
Db::name('user_charm_count_day')->insert($insert_data);
}
}
//统计收益带公会
public function day_guild_charm($uid, $rid, $guild_id, $amount, $type = 1)
{
$map = [];
$map[] = ['uid', '=', $uid];
$map[] = ['rid', '=', $rid];
$map[] = ['guild_id', '=', $guild_id];
$map[] = ['type', '=', $type];
$day_time = strtotime(date('Ymd'));
$map[] = ['add_time', '>=', $day_time];
$info = Db::name('user_guild_charm_count_day')->where($map)->find();
if($info) {
Db::name('user_guild_charm_count_day')->where('sid', $info['sid'])->inc('amount', $amount)->update(['update_time' => time()]);
} else {
$insert_data = [
'uid' => $uid,
'rid' => $rid,
'type' => $type,
'guild_id' => $guild_id,
'amount' => $amount,
'add_time' => time(),
'update_time' => time(),
];
Db::name('user_guild_charm_count_day')->insert($insert_data);
}
}
//统计房间收益带公会
public function day_room_guild_charm($uid, $rid, $guild_id, $amount, $type = 1)
{
$map = [];
$map[] = ['uid', '=', $uid];
$map[] = ['rid', '=', $rid];
$map[] = ['type', '=', $type];
$map[] = ['guild_id', '=', $guild_id];
$day_time = strtotime(date('Ymd'));
$map[] = ['add_time', '>=', $day_time];
$info = Db::name('room_guild_charm_count_day')->where($map)->find();
if($info) {
Db::name('room_guild_charm_count_day')->where('sid', $info['sid'])->inc('amount', $amount)->update(['update_time' => time()]);
} else {
$insert_data = [
'uid' => $uid,
'rid' => $rid,
'type' => $type,
'guild_id' => $guild_id,
'amount' => $amount,
'add_time' => time(),
'update_time' => time(),
];
Db::name('room_guild_charm_count_day')->insert($insert_data);
}
}
//统计用户cp值记录
public function day_cp_value($uid, $receive_uid, $amount){
$map = [];
$map[] = ['uid|receive_uid', '=', $uid];
$map[] = ['uid|receive_uid', '=', $receive_uid];
//是否互相为cp
$cp_info = db::name('user_coupling')->where($map)->where('is_delete', 1)->find();
if(empty($cp_info)){
return true;
}
$day_time = strtotime(date('Ymd'));
$map = [];
$map[] = ['uid', '=', $cp_info['uid']];
$map[] = ['receive_uid', '=', $cp_info['receive_uid']];
$map[] = ['add_time', '>=', $day_time];
$info = db::name('user_cp_count_day')->where($map)->find();
if($info){
db::name('user_cp_count_day')->where('sid', $info['sid'])->inc('amount', $amount)->update(['update_time' => time()]);
}else{
$insert_data = [
'uid' => $cp_info['uid'],
'receive_uid' => $cp_info['receive_uid'],
'amount' => $amount,
'add_time' => time(),
'update_time' => time(),
];
Db::name('user_cp_count_day')->insert($insert_data);
}
}
//统计用户房间收益记录
public function day_room_profit($uid, $rid, $amount, $type){
$map = [];
$map[] = ['uid', '=', $uid];
$map[] = ['rid', '=', $rid];
$map[] = ['type', '=', $type];
$day_time = strtotime(date('Ymd'));
$map[] = ['add_time', '>=', $day_time];
$info = db::name('user_room_profit_day')->where($map)->find();
if($info){
db::name('user_room_profit_day')->where('sid', $info['sid'])->inc('amount', $amount)->update(['update_time' => time()]);
}else{
$insert_data = [
'uid' => $uid,
'rid' => $rid,
'type' => $type,
'amount' => $amount,
'add_time' => time(),
'update_time' => time(),
];
Db::name('user_room_profit_day')->insert($insert_data);
}
}
//主持在线时长统计
public function room_host_online_time($uid, $rid, $type){
$day_time = strtotime(date('Ymd'));
$map = [];
$map[] = ['uid', '=', $uid];
$map[] = ['rid', '=', $rid];
$map[] = ['add_time', '>=', $day_time];
$info = db::name('room_host_online_time_log')->where($map)->find();
if($type == 1){//上麦
if($info){
db::name('room_host_online_time_log')->where('id', $info['id'])->update(['start_time' => time(), 'end_time' => 0, 'update_time' => time()]);
}else{
$insert_data = [
'uid' => $uid,
'rid' => $rid,
'add_time' => time(),
'start_time' => time(),
];
Db::name('room_host_online_time_log')->insert($insert_data);
}
}else{//下麦
if($info){
//计算时间
$end_time = time();
$online_time = (int)(($end_time - $info['start_time'])/60);
if($online_time > 0){
db::name('room_host_online_time_log')->where('id', $info['id'])->inc('online_time', $online_time)->update(['end_time' => time(), 'update_time' => time()]);
}
}
}
}
}