175 lines
5.7 KiB
PHP
175 lines
5.7 KiB
PHP
<?php
|
|
|
|
namespace app\common\library;
|
|
|
|
use app\common\model\school\Area;
|
|
use app\common\model\school\classes\VirtualHead;
|
|
use app\common\model\school\classes\VirtualUser;
|
|
use bw\Common;
|
|
|
|
/**
|
|
* 虚拟数据工具类
|
|
*/
|
|
class Virtual
|
|
{
|
|
|
|
/** 获得虚拟昵称
|
|
* @return mixed|string
|
|
*/
|
|
public function getNickName(){
|
|
$str = config("site.virtual_nickname");
|
|
$arr = explode("##",$str);
|
|
$r = rand(0,sizeof($arr));
|
|
return $arr[$r];
|
|
}
|
|
|
|
public function getVirtualUser($num=10,$classes_lib_id = 0,$time=null,$set=false){
|
|
if(!is_numeric($time)) $time = strtotime($time); //日期字符格式化时间戳
|
|
|
|
$users = [];
|
|
if(!$time)$time = time();
|
|
//mysql随机查询$num个数据
|
|
$virtualHead = VirtualHead::orderRaw("rand()")->limit($num)->select();
|
|
//随机获得$num个虚拟用户昵称和头像
|
|
foreach($virtualHead as $k=>$v) {
|
|
$nickname = $this->getNickName();
|
|
$head = $v->head_image;
|
|
$r = rand(($time - 86400*7),$time);
|
|
|
|
$users[] = [
|
|
"nickname"=>$nickname,
|
|
"head_image"=>$head,
|
|
"time"=>$r,
|
|
"jointype" => "1",
|
|
// "havetype" => "".($k % 2)
|
|
"havetype" => "0" //只要非已报名数据
|
|
];
|
|
}
|
|
|
|
if(!$set){
|
|
return $users;
|
|
}else{
|
|
|
|
$user_data=[];
|
|
foreach($users as $k=> $user) {
|
|
$r = rand(($time - 86400*7),$time);
|
|
$user_data[] = [
|
|
"nickname"=>$user["nickname"],
|
|
"head_image"=>$user["head_image"],
|
|
"classes_lib_id"=>$classes_lib_id,
|
|
"time"=>$r,
|
|
"jointype" => "1",
|
|
"havetype" => $user["havetype"]
|
|
];
|
|
}
|
|
(new VirtualUser)->saveAll($user_data);
|
|
|
|
\app\common\model\school\classes\ClassesLib::update_classes($classes_lib_id);
|
|
return $user_data;
|
|
}
|
|
|
|
}
|
|
|
|
|
|
public static function getWeekByTime($time){
|
|
$time = $time && !is_numeric($time) ? strtotime($time) : time();
|
|
|
|
//得到当前日期所在周几
|
|
$week = date("w",$time);
|
|
$week = $week == 0 ? '7' : $week;
|
|
$sub = abs(7-( 7-$week)) -1; //绝对值
|
|
$start_time = $time - ($sub*86400);
|
|
// var_dump( date("Y-m-d",$start_time));
|
|
$titles = ["周一","周二","周三","周四","周五","周六","周日"];
|
|
//循环7天
|
|
$week_arr = [];
|
|
for($i=0;$i<7;$i++){
|
|
$week_arr[$i]['active'] = false;
|
|
$week_arr[$i]['start_time'] = $start_time + ($i*86400);
|
|
$week_arr[$i]['end_time'] = strtotime("+1 day",$week_arr[$i]['start_time']) -1 ;
|
|
|
|
$week_arr[$i]['start_date'] = date("Y/m/d H:i:s",$week_arr[$i]['start_time']);
|
|
$week_arr[$i]['end_date'] = date("Y/m/d H:i:s",$week_arr[$i]['end_time']);
|
|
|
|
|
|
|
|
$week_arr[$i]['day_text'] = date("m.d",$week_arr[$i]['start_time']);
|
|
|
|
|
|
$week_arr[$i]['week'] = $i+1;
|
|
$week_arr[$i]['week_text'] = $titles[$i];
|
|
if($week_arr[$i]['week'] == $week){
|
|
$week_arr[$i]['active'] = true;
|
|
}
|
|
}
|
|
|
|
return $week_arr;
|
|
}
|
|
|
|
|
|
public static function visitNnmberUpdate(){
|
|
$key = "night_school_total_visit";
|
|
$redis = (new \bw\Redis())->getRedis();
|
|
if (!$redis->exists($key)) {
|
|
$redis->set($key, 0); // 缓存 五秒
|
|
}
|
|
// 进行累加
|
|
return $redis->incr($key);
|
|
}
|
|
|
|
public static function getVisitNnmber(){
|
|
$key = "night_school_total_visit";
|
|
$redis = (new \bw\Redis())->getRedis();
|
|
return $redis->get($key);
|
|
|
|
}
|
|
|
|
|
|
public static function getNowCity(){
|
|
$address_city = config("site.the_city");
|
|
//按/符号分割
|
|
$the_city = explode("/",$address_city);
|
|
//初始化省市区变量
|
|
$province = $city = $area = null;
|
|
$province_code = $city_code = $area_code = 0;
|
|
//只分割出一个为省
|
|
//只分割出两个为省和市
|
|
//分割出三个为省、市、县
|
|
if(count($the_city)==1){
|
|
$province = $the_city[0];
|
|
}elseif(count($the_city)==2){
|
|
$province = $the_city[0];
|
|
$city = $the_city[1];
|
|
}elseif(count($the_city)==3){
|
|
$province = $the_city[0];
|
|
$city = $the_city[1];
|
|
$area = $the_city[2];
|
|
}
|
|
//省市区分别模糊查询区域编码表获取编码
|
|
if($province) $province_code = Area::where("level",1)->where("name","like","%$province%")->value("id");
|
|
if($city) $city_code = Area::where("level",2)->where( "pid",$province_code)->where("name","like","%$city%")->value("id");
|
|
if($area) $area_code = Area::where("level",3)->where( "pid",$city_code)->where("name","like","%$area%")->value("id");
|
|
return [
|
|
"address_city"=>$address_city,
|
|
"province"=>$province,
|
|
"city"=>$city,
|
|
"area"=>$area,
|
|
"province_code"=>$province_code,
|
|
"city_code"=>$city_code,
|
|
"area_code"=>$area_code
|
|
];
|
|
}
|
|
|
|
|
|
public static function getPath($key,$params=[],$expression = '{{KEYWORD}}'){
|
|
$wx_miniapp_path = config("site.wx_miniapp_path");
|
|
if(!$wx_miniapp_path) throw new \Exception("请先配置小程序路径");
|
|
if(!isset($wx_miniapp_path[$key])) throw new \Exception("请先配置小程序路径");
|
|
$path = $wx_miniapp_path[$key];
|
|
// 参数替换
|
|
$template = Common::parsePrintTemplateString($path,$params,$expression);
|
|
return $template;
|
|
}
|
|
|
|
|
|
} |