Files
2025-09-22 18:52:07 +08:00

477 lines
20 KiB
PHP
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<?php
namespace app\adminapi\controller;
use app\common\controller\adminApi;
use think\Db;
use Yzh\YunPay;
class Statistical extends adminApi
{
//初始化
public function _initialize()
{
parent::_initialize();
}
//充值排行统计
public function get_recharge_ranking()
{
$page = input('page', 1);
$page_limit = input('page_limit', 30);
$search_uid = input('search_uid', '');
$begin_time = input('begin_time', '');
$end_time = input('end_time', '');
$where=[];
//标签名称
if($search_uid !== ''){
$user_id = db::name('user')->where('user_code', $search_uid)->value('id');
$where['user_id'] = $user_id;
}
$username = input('username', '');
if($username !== ''){
$user_id = db::name('user')->where('nickname', $username)->value('id');
$where['user_id'] = $user_id;
}
if($begin_time !== ''){
$where['createtime'] = ['>=', strtotime($begin_time)];
}
if($end_time !== ''){
$where['createtime'] = ['<=', strtotime($end_time.' 23:59:59')];
}
if(!empty($begin_time) && !empty($end_time)){
$where['createtime'] = ['between',[strtotime($begin_time),strtotime($end_time.' 23:59:59')]];
}
$where['pay_status'] = 2;//1待支付,2已支付
$where['order_type'] = 1;//订单类型:1 充值
$count = db::name('vs_user_recharge')
->where($where)
->group('user_id')
->count();
$lists = db::name('vs_user_recharge')
->field('rid,createtime,user_id,sum(money) as money,sum(coin) as coin')
->where($where)
->group('user_id')
->order('money desc')
->page($page, $page_limit)
->select();
foreach ($lists as $key => $value) {
$lists[$key]['createtime'] = date('Y-m-d H:i:s', $value['createtime']);
$lists[$key]['user_name'] = db::name('user')->where('id', $value['user_id'])->value('nickname').'-'.
db::name('user')->where('id', $value['user_id'])->value('user_code');
$lists[$key]['avatar'] = db::name('user')->where('id', $value['user_id'])->value('avatar');
}
$return_data = [
'page' =>$page,
'page_limit' => $page_limit,
'count' => $count,
'lists' => $lists,
'total' =>[
'total_price' => db::name('vs_user_recharge')->where($where)->sum('money'),
'total_gold' => db::name('vs_user_recharge')->where($where)->sum('coin')
]
];
return V(1,"成功", $return_data);
}
//送礼、收礼排行
public function get_gift_ranking()
{
$page = input('page', 1);
$page_limit = input('page_limit', 30);
$type = input('type', 1);//1送礼2收礼
$search_uid = input('search_uid', '');
$begin_time = input('begin_time', '');
$end_time = input('end_time', '');
$where=[];
$group = 'user_id';
if($type == 2){
$group = 'gift_user';
}
//标签名称
if($search_uid !== ''){
$user_id = db::name('user')->where('user_code', $search_uid)->value('id');
if($type == 1){
$where['user_id'] = $user_id;
}else{
$where['gift_user'] = $user_id;
}
}
$username = input('username', '');
if($username !== ''){
$user_id = db::name('user')->where('nickname', $username)->value('id');
if($type == 1){
$where['user_id'] = $user_id;
}else{
$where['gift_user'] = $user_id;
}
}
if($begin_time !== ''){
$where['createtime'] = ['>=', strtotime($begin_time)];
}
if($end_time !== ''){
$where['createtime'] = ['<=', strtotime($end_time.' 23:59:59')];
}
if(!empty($begin_time) && !empty($end_time)){
$where['createtime'] = ['between',[strtotime($begin_time),strtotime($end_time.' 23:59:59')]];
}
$count = db::name('vs_give_gift')
->where($where)
->group($group)
->count();
$lists = db::name('vs_give_gift')
->field('id,createtime,user_id,gift_user,sum(total_price) as total_price,sum(number) as number')
->where($where)
->group($group)
->order('total_price desc')
->page($page, $page_limit)
->select();
foreach ($lists as $key => $value) {
$lists[$key]['createtime'] = date('Y-m-d H:i:s', $value['createtime']);
if($type == 1){
$lists[$key]['user_name'] = db::name('user')->where('id', $value['user_id'])->value('nickname').'-'.
db::name('user')->where('id', $value['user_id'])->value('user_code');
$lists[$key]['avatar'] = db::name('user')->where('id', $value['user_id'])->value('avatar');
}else{
$lists[$key]['user_name'] = db::name('user')->where('id', $value['gift_user'])->value('nickname').'-'.
db::name('user')->where('id', $value['gift_user'])->value('user_code');
$lists[$key]['avatar'] = db::name('user')->where('id', $value['gift_user'])->value('avatar');
}
}
$return_data = [
'page' =>$page,
'page_limit' => $page_limit,
'count' => $count,
'lists' => $lists,
'total' =>[
'total_price' => db::name('vs_give_gift')->where($where)->sum('total_price'),
'total_num' => db::name('vs_give_gift')->where($where)->sum('number')
]
];
return V(1,"成功", $return_data);
}
//消费排行
public function get_consumption_ranking()
{
$page = input('page', 1);
$page_limit = input('page_limit', 30);
$search_uid = input('search_uid', '');
$begin_time = input('begin_time', '');
$end_time = input('end_time', '');
$where=[];
//标签名称
if($search_uid !== ''){
$user_id = db::name('user')->where('user_code', $search_uid)->value('id');
$where['user_id'] = $user_id;
}
$username = input('username', '');
if($username !== ''){
$user_id = db::name('user')->where('nickname', $username)->value('id');
$where['user_id'] = $user_id;
}
if($begin_time !== ''){
$where['createtime'] = ['>=', strtotime($begin_time)];
}
if($end_time !== ''){
$where['createtime'] = ['<=', strtotime($end_time.' 23:59:59')];
}
if(!empty($begin_time) && !empty($end_time)){
$where['createtime'] = ['between',[strtotime($begin_time),strtotime($end_time.' 23:59:59')]];
}
// 1.系统调节 2.充值 3.提现 4.金币转增(送出) 5.每日任务奖励 6.充值返利 7.购买装扮
// 8.礼盒奖励 9.房间补贴 10.购买礼物 11.收礼增加收益 12.工会补贴 13.转赠金币(接收) 14.收益兑换
// 15.首充 16.天降好礼充值 17.退出工会扣款 18.房主收益 19.主持人收益 20.抢头条 21.公会长收益
$where['change_type'] = ['in', [4,7,10,17,20]];
$count = db::name('vs_user_money_log')
->where($where)
->group('user_id')
->count();
$lists = db::name('vs_user_money_log')
->field('log_id,createtime,user_id,sum(change_value) as change_value')
->where($where)
->group('user_id')
->order('change_value desc')
->page($page, $page_limit)
->select();
foreach ($lists as $key => $value) {
$lists[$key]['createtime'] = date('Y-m-d H:i:s', $value['createtime']);
$lists[$key]['user_name'] = db::name('user')->where('id', $value['user_id'])->value('nickname').'-'.
db::name('user')->where('id', $value['user_id'])->value('user_code');
$lists[$key]['avatar'] = db::name('user')->where('id', $value['user_id'])->value('avatar');
}
$return_data = [
'page' =>$page,
'page_limit' => $page_limit,
'count' => $count,
'lists' => $lists,
'total' =>[
'total_price' => db::name('vs_user_money_log')->where($where)->sum('change_value')
]
];
return V(1,"成功", $return_data);
}
//房间流水统计
public function get_room_flow_statistics()
{
$page = input('page', 1);
$page_limit = input('page_limit', 30);
$search_room_id = input('search_room_id', '');
$begin_time = input('begin_time', '');
$end_time = input('end_time', '');
$where=[];
//标签名称
$where['from_id'] = ['>' , 0];
if($search_room_id !== ''){
$room_id = db::name('vs_room')->where('room_number', $search_room_id)->value('id');
$where['from_id'] = $room_id;
}
$room_name = input('room_name', '');
if($room_name !== ''){
$room_id = db::name('vs_room')->where('room_name', $room_name)->value('id');
$where['from_id'] = $room_id;
}
if($begin_time !== ''){
$where['createtime'] = ['>=', strtotime($begin_time)];
}
if($end_time !== ''){
$where['createtime'] = ['<=', strtotime($end_time.' 23:59:59')];
}
if(!empty($begin_time) && !empty($end_time)){
$where['createtime'] = ['between',[strtotime($begin_time),strtotime($end_time.' 23:59:59')]];
}
//不为空
$where['from'] = 2;
$count = db::name('vs_give_gift')
->where($where)
->group('from_id')
->count();
$lists = db::name('vs_give_gift')
->field('id,createtime,user_id,gift_user,sum(total_price) as total_price,sum(number) as number,from_id')
->where($where)
->group('from_id')
->order('total_price desc')
->page($page, $page_limit)
->select();
foreach ($lists as $key => $value) {
$room = db::name('vs_room')->where('id', $value['from_id'])->find();
$lists[$key]['createtime'] = date('Y-m-d H:i:s', $value['createtime']);
$lists[$key]['room_name'] = $room['room_name'].'-'.$room['room_number'];
$lists[$key]['room_number'] = $room['room_number'];
$lists[$key]['room_cover'] = db::name('vs_room')->where('id', $value['from_id'])->value('room_cover');
$label = db::name('vs_room')->where('id', $value['from_id'])->value('label_id');
$lists[$key]['label'] = db::name('vs_room_label')->where('id', $label)->value('label_name');
}
$return_data = [
'page' =>$page,
'page_limit' => $page_limit,
'count' => $count,
'lists' => $lists,
'total' =>[
'total_price' => db::name('vs_give_gift')->where($where)->sum('total_price')
]
];
return V(1,"成功", $return_data);
}
//充值列表
public function get_recharge_list()
{
$page = input('page', 1);
$page_limit = input('page_limit', 30);
$search_uid = input('search_uid', '');
$pay_stime = input('pay_stime', '');
$pay_etime = input('pay_etime', '');
$pay_status = input('pay_status', '');//1.待支付 2.支付成功
$order_sn = input('order_sn', '');
$pay_type = input('pay_type', '');//1.微信 2.支付宝
$money = input('money', '');
$where=[];
//标签名称
if($search_uid !== ''){
$user_id = db::name('user')->where('user_code', $search_uid)->value('id');
$where['user_id'] = $user_id;
}
if($pay_stime !== ''){
$where['createtime'] = ['>=', strtotime($pay_stime)];
}
if($pay_etime !== ''){
$where['createtime'] = ['<=', strtotime($pay_etime.' 23:59:59')];
}
if(!empty($pay_stime) && !empty($pay_etime)){
$where['createtime'] = ['between',[strtotime($pay_stime),strtotime($pay_etime.' 23:59:59')]];
}
if($pay_status !== ''){
$where['pay_status'] = $pay_status;
}
if($order_sn !== ''){
$where['order_sn'] = $order_sn;
}
if($pay_type !== ''){
if($pay_type == 1){
$where['pay_type'] = ['in', [1,4]];
}elseif ($pay_type == 2){
$where['pay_type'] = ['in', [2,3]];
}
}
if($money !== ''){
$where['money'] = $money;
}
$count = db::name('vs_user_recharge')->where($where)->count();
$lists = db::name('vs_user_recharge')->where($where)->order('rid desc')->page($page, $page_limit)->select();
foreach ($lists as $key => $value) {
$lists[$key]['createtime'] = date('Y-m-d H:i:s', $value['createtime']);
$lists[$key]['user_name'] = db::name('user')->where('id', $value['user_id'])->value('nickname').'-'.
db::name('user')->where('id', $value['user_id'])->value('user_code');
if($value['pay_type'] == 1 || $value['pay_type'] == 4){
$lists[$key]['pay_type_name'] = '微信支付';
}elseif ($value['pay_type'] == 2 || $value['pay_type'] == 3){
$lists[$key]['pay_type_name'] = '支付宝支付';
}
$lists[$key]['pay_status_str'] = $value['pay_status'] == 1 ? '待支付' : '已支付';
$lists[$key]['pay_time'] = $value['pay_time'] == 0 ? '' : date('Y-m-d H:i:s', $value['pay_time']);
}
$return_data = [
'page' =>$page,
'page_limit' => $page_limit,
'count' => $count,
'lists' => $lists
];
//总收入
$wherew=[];
$return_data['total_money'] = db::name('vs_user_recharge')->sum('money');
//未支付
$return_data['unpaid_money'] = db::name('vs_user_recharge')->where('pay_status',1)->sum('money');
//已支付
$return_data['paid_money'] = db::name('vs_user_recharge')->where('pay_status',2)->sum('money');
//微信支付
$wherew['pay_type'] = ['in', [1,4]];
$return_data['wx_money'] = db::name('vs_user_recharge')->where('pay_status',2)->where($wherew)->sum('money');
//支付宝支付
$wherez['pay_type'] = ['in', [2,3]];
$return_data['ali_money'] = db::name('vs_user_recharge')->where('pay_status',2)->where($wherez)->sum('money');
//金币数量
$return_data['gold_num'] = db::name('vs_user_recharge')->where('pay_status',2)->sum('coin');
return V(1,"成功", $return_data);
}
//兑换列表
public function get_exchange_list()
{
$page = input('page', 1);
$page_limit = input('page_limit', 30);
$search_uid = input('search_uid', '');
$where=[];
if($search_uid !== ''){
if(is_numeric($search_uid)){
$where['b.user_code'] = $search_uid;
}else{
$where['b.nickname'] = ['like', '%'.$search_uid.'%'];
}
}
//时间筛选
$start_time = input('start_time', '');
$end_time = input('end_time', '');
if($start_time !== ''){
$where['a.createtime'] = ['>=', strtotime($start_time)];
}
if($end_time !== ''){
$where['a.createtime'] = ['<=', strtotime($end_time.' 23:59:59')];
}
if($start_time !== '' && $end_time !== ''){
$where['a.createtime'] = ['between', [strtotime($start_time), strtotime($end_time.' 23:59:59')]];
}
$count = db::name('user_exchange')->where($where)->alias('a')->join('user b', 'a.user_id = b.id')->count();
$lists = db::name('user_exchange')->where($where)->alias('a')->join('user b', 'a.user_id = b.id')
->field('a.*,b.nickname,b.user_code')
->order('a.id desc')
->page($page, $page_limit)->select();
foreach ($lists as $key => $value) {
$lists[$key]['user_name'] = $value['nickname'].'-'.$value['user_code'];
$lists[$key]['createtime'] = date('Y-m-d H:i:s', $value['createtime']);
}
$return_data = [
'page' =>$page,
'page_limit' => $page_limit,
'count' => $count,
'lists' => $lists,
'total' =>[
'total_coin_num' => db::name('user_exchange')->where($where)->alias('a')->join('user b', 'a.user_id = b.id')->sum('earnings_num'),
'total_earnings_num' => db::name('user_exchange')->where($where)->alias('a')->join('user b', 'a.user_id = b.id')->sum('coin_num'),
]
];
return V(1,"成功", $return_data);
}
//后台手动充值列表
public function admin_recharge_list(){
$page = input('page', 1);
$page_limit = input('page_limit', 10);
$where =[];
$search_id = input('search_id', '');
$search_name = input('search_name', '');
if($search_id){
$where['b.user_code'] = $search_id;
}
if($search_name){
$where['b.username'] = ['like', '%'.$search_name.'%'];
}
$start_time = input('start_time', '');
$end_time = input('end_time', '');
if($start_time !== ''){
$where['a.createtime'] = ['>=', strtotime($start_time)];
}
if($end_time !== ''){
$where['a.createtime'] = ['<=', strtotime($end_time.' 23:59:59')];
}
if($start_time !== '' && $end_time !== ''){
$where['a.createtime'] = ['between', [strtotime($start_time), strtotime($end_time.' 23:59:59')]];
}
$count = db::name('vs_admin_recharge_log')
->alias('a')->join('user b', 'a.user_id = b.id')
->where($where)
->count();
$lists = db::name('vs_admin_recharge_log')
->alias('a')->join('user b', 'a.user_id = b.id')
->where($where)
->field('a.*,b.nickname')
->order('a.arid desc')
->page($page, $page_limit)
->select();
foreach ($lists as &$list){
$user_code = model('api/Decorate')->user_decorate_detail($list['user_id'],6);
$list['nickname'] = $user_code."-".$list['nickname'];
$list['admin_name'] = db::name('admin')->where('id', $list['admin_id'])->value('username');
$list['type_str'] = model('common/UserWallet')::getMoneyType($list['type']);
$list['createtime'] = date('Y-m-d H:i:s', $list['createtime']);
}
//总充值(金币)
$total_coin = db::name('vs_admin_recharge_log')->where(['type'=>1])->sum('change_value');
//总充值(收益)
$total_earnings = db::name('vs_admin_recharge_log')->where(['type'=>2])->sum('change_value');
//今日充值(金币)
$today_coin =db::name('vs_admin_recharge_log')->where(['type'=>1])->whereTime('createtime', 'today')->sum('change_value');
//今日充值(收益)
$today_earnings = db::name('vs_admin_recharge_log')->where(['type'=>2])->whereTime('createtime', 'today')->sum('change_value');
$return_data = [
'page' =>$page,
'page_limit' => $page_limit,
'count' => $count,
'lists' => $lists,
'total_data' => [
'total_coin' => $total_coin,
'total_earnings' => $total_earnings,
'today_coin' => $today_coin,
'today_earnings' => $today_earnings
]
];
return V(1,"成功", $return_data);
}
}