Files
yycea/application/api/controller/wdsxh/Screen.php
2026-03-17 09:56:06 +08:00

351 lines
13 KiB
PHP
Raw 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
// +----------------------------------------------------------------------
// | 麦沃德科技赋能开发者,助力商协会发展
// +----------------------------------------------------------------------
// | Copyright (c) 20172024 www.wdsxh.cn All rights reserved.
// +----------------------------------------------------------------------
// | 沃德商协会系统并不是自由软件,不加密,并不代表开源,未经许可不可自由转售和商用
// +----------------------------------------------------------------------
// | Author: MY WORLD Team <bd@maiwd.cn> www.maiwd.cn
// +----------------------------------------------------------------------
/**
* Class Screen
* Desc 数据大屏
* Create on 2024/7/2 9:55
* Create by wangyafang
*/
namespace app\api\controller\wdsxh;
use app\api\model\wdsxh\activity\Activity;
use app\api\model\wdsxh\member\Member;
use app\api\model\wdsxh\member\Visitor;
use app\common\controller\Api;
use app\api\model\wdsxh\business\Business;
use app\common\model\User;
class Screen extends Api
{
protected $noNeedLogin = ['*'];
protected $noNeedRight = ['*'];
public function _initialize()
{
parent::_initialize();
// 获取数据大屏密码启用状态
$config = (new \app\admin\model\wdsxh\Config())->where('id',1)->find();
$data_screen_password_switch = $config['data_screen_password_switch'] ?? '2';
// 如果密码验证已关闭,则跳过密码验证
if ($data_screen_password_switch == '2') {
return;
}
// 密码验证已开启,进行密码验证
$password = $this->request->get('password');
if(!$password) {
$this->error('密码不能为空');
}
$data_screen_password = $config['data_screen_password'] ?? '';
if($password != $data_screen_password) {
$this->error('密码错误');
}
}
/**
* Desc 行业会员数量
* Create on 2024/7/2 10:19
* Create by wangyafang
*/
public function member_count()
{
if(!$this->request->isGet()) {
$this->error('请求类型错误');
}
$current_date = date('Y-m-d',time());
$data = array(
'platform'=>array(
'total_user_count' => User::count(),
'today_user_count' => User::whereTime('jointime', 'today')->count(),
),
'member'=>array(
'total_member_count' => Member::where('expire_time','>=',$current_date)->count(),
'today_member_count' => Member::whereTime('createtime', 'today')->count(),
),
'activity'=>array(
'total_activity_count' => Activity::where('status','normal')->count(),
'today_activity_count' => Activity::where('status','normal')->whereTime('createtime', 'today')->count(),
),
'business'=>array(
'total_business_count' => Business::where('status','normal')->where('state','2')->count(),
'today_business_count' => Business::where('status','normal')->where('state','2')->whereTime('createtime', 'today')->count(),
),
);
$this->success('请求成功',$data);
}
/**
* Desc 会员类型
* Create on 2024/7/2 10:56
* Create by wangyafang
*/
public function member_type()
{
if(!$this->request->isGet()) {
$this->error('请求类型错误');
}
$current_date = date('Y-m-d',time());
$data = array(
'total_member_count' => Member::where('expire_time','>=',$current_date)->count(),
'person_member_count' => Member::where('expire_time','>=',$current_date)->where('type','1')->count(),
'company_member_count' => Member::where('expire_time','>=',$current_date)->where('type','2')->count(),
'organize_member_count' => Member::where('expire_time','>=',$current_date)->where('type','3')->count(),
);
$this->success('请求成功',$data);
}
/**
* Desc 上月用户访问情况
* Create on 2024/7/2 11:10
* Create by wangyafang
*/
public function last_month_user_data()
{
//todo 展示数据大屏,显示会员头像
if(!$this->request->isGet()) {
$this->error('请求类型错误');
}
$day_array = array();
$count_array = array();
for ($i = 30; $i >= 1 ; $i--) {
$day_array[] = date("d",strtotime("-$i day"));
$count_array[] = User::whereTime('logintime', 'between',[date("Y-m-d",strtotime("-$i day")).' 00:00:00', date("Y-m-d",strtotime("-$i day")).' 23:59:59'])->count();
}
$data = array(
'day_array' =>$day_array,
'count_array' =>$count_array,
);
$this->success('请求成功',$data);
}
public function last_month_user_data_bak()
{
if(!$this->request->isGet()) {
$this->error('请求类型错误');
}
$year_month = date('Y-m', strtotime('-1 month'));
$last_month_count = date('t', strtotime('-1 month'));
$day_array = array();
$count_array = array();
for ($i = 1; $i <= $last_month_count ; $i++) {
$day_array[] = $i;
$count_array[] = User::whereTime('logintime', 'between',[$year_month.'-'.$i.' 00:00:00', $year_month.'-'.$i.' 23:59:59'])->count();
}
$data = array(
'day_array' =>$day_array,
'count_array' =>$count_array,
);
$this->success('请求成功',$data);
}
/**
* Desc 商会活动
* Create on 2024/7/2 10:58
* Create by wangyafang
*/
public function activity()
{
if(!$this->request->isGet()) {
$this->error('请求类型错误');
}
$data = array(
'total_count' => Activity::where('status','normal')->count(),
'apply_count' => Activity::where('status','normal')->where('state','1')->count(),
'progress_count' => Activity::where('status','normal')->where('state','2')->count(),
'end_count' => Activity::where('status','normal')->where('state','3')->count(),
);
$this->success('请求成功',$data);
}
/**
* Desc 会员列表
* Create on 2024/7/2 11:40
* Create by wangyafang
*/
public function member_list()
{
//todo 展示数据大屏,显示会员头像
if(!$this->request->isGet()) {
$this->error('请求类型错误');
}
$field = 'member.name,member.avatar,member.member_level_name,member.industry_category_name,member.join_time';
$order = "level.weigh asc,member.id asc";
$current_date = date('Y-m-d',time());
$table_name = config('database.prefix').'wdsxh_member.';
$where[$table_name.'status'] = array('eq','normal');
$where['expire_time'] = array('>=',$current_date);
$data = (new Member())
->alias('member')
->where($where)
->join('wdsxh_member_level level','level.id = member.member_level_id')
->field($field)->order($order)
->select();
$data = collection($data)->toArray();
$result = array();
foreach ($data as $v) {
$result[] = array(
0=>$v['avatar'],
1=>$v['name'],
2=>$v['member_level_name'],
3=>$v['industry_category_name'],
4=>$v['join_time'],
);
}
$this->success('请求成功',$result);
}
/**
* Desc 会员行业
* Create on 2024/7/2 11:55
* Create by wangyafang
*/
public function member_industry()
{
if(!$this->request->isGet()) {
$this->error('请求类型错误');
}
$industryCategoryIdArray = (new \app\api\model\wdsxh\member\IndustryCategory())
->where('status','1')
->column('id');
$data = (new Member())
->field('industry_category_name,count(industry_category_id) count')
->group('industry_category_id')
->order('count desc')
->where('industry_category_id','in',$industryCategoryIdArray)
->select();
$category_array = array();
$count_array = array();
$data = collection($data)->toArray();
foreach ($data as $k=>$v) {
$category_array[] = $v['industry_category_name'];
$count_array[] = $v['count'];
}
$result = array(
'category_array'=>$category_array,
'count_array'=>$count_array,
);
$this->success('请求成功',$result);
}
/**
* Desc 会员本月新增
* Create on 2024/7/2 13:55
* Create by wangyafang
*/
public function member_this_month_new()
{
if(!$this->request->isGet()) {
$this->error('请求类型错误');
}
$current_date = date('Y-m-d',time());
$data = array(
'person_count'=>Member::where('expire_time','>=',$current_date)->whereTime('createtime', 'month')->where('type','1')->count(),
'company_count'=>Member::where('expire_time','>=',$current_date)->whereTime('createtime', 'month')->where('type','2')->count(),
'organize_count'=>Member::where('expire_time','>=',$current_date)->whereTime('createtime', 'month')->where('type','3')->count(),
);
$this->success('请求成功',$data);
}
/**
* Desc 会员当日访问频率
* Create on 2024/7/2 13:55
* Create by wangyafang
*/
public function member_daily_visit_frequency()
{
if(!$this->request->isGet()) {
$this->error('请求类型错误');
}
$time_slot = array(
'00:00',
'03:00',
'06:00',
'09:00',
'12:00',
'15:00',
'18:00',
'21:00',
);
$current_time = time();
$time = array();
$person_count = array();
$company_count = array();
$organize_count = array();
$current_date = date('Y-m-d',time());
$where['expire_time'] = array('>=',$current_date);
$person_member_id_array = (new Member())
->where($where)
->where('type','1')
->column('id');
$company_member_id_array = (new Member())
->where($where)
->where('type','2')
->column('id');
$organize_member_id_array = (new Member())
->where($where)
->where('type','3')
->column('id');
foreach ($time_slot as $v) {
$time[] = $v;
$tem = date('Y-m-d',time()).' '.$v.':00';
if ($current_time >= strtotime($tem)) {
switch ($v) {
case '00:00':
$whereTime = [$current_date.' 00:00:00', $current_date.' 00:00:00'];
break;
case '03:00':
$whereTime = [$current_date.' 00:00:01', $current_date.' 03:00:00'];
break;
case '06:00':
$whereTime = [$current_date.' 03:00:01', $current_date.' 06:00:00'];
break;
case '09:00':
$whereTime = [$current_date.' 06:00:01', $current_date.' 09:00:00'];
break;
case '12:00':
$whereTime = [$current_date.' 09:00:01', $current_date.' 12:00:00'];
break;
case '15:00':
$whereTime = [$current_date.' 12:00:01', $current_date.' 15:00:00'];
break;
case '18:00':
$whereTime = [$current_date.' 15:00:01', $current_date.' 18:00:00'];
break;
case '21:00':
$whereTime = [$current_date.' 18:00:01', $current_date.' 23:59:59'];
break;
}
$person_count[] = Visitor::where('member_id','in',$person_member_id_array)->whereTime('createtime', 'between',$whereTime)->count();
$company_count[] = Visitor::where('member_id','in',$company_member_id_array)->whereTime('createtime', 'between',$whereTime)->count();
$organize_count[] = Visitor::where('member_id','in',$organize_member_id_array)->whereTime('createtime', 'between',$whereTime)->count();
}
}
$result = array(
'time'=>$time,
'person_count'=>$person_count,
'company_count'=>$company_count,
'organize_count'=>$organize_count,
);
$this->success('请求成功',$result);
}
}