初始化项目:添加后端代码、ThinkPHP框架、前端资源
This commit is contained in:
@@ -0,0 +1,40 @@
|
||||
<?php
|
||||
|
||||
namespace app\admin\model\data;
|
||||
|
||||
use think\Model;
|
||||
|
||||
/**
|
||||
* 省市区模型
|
||||
*/
|
||||
class Area extends Model
|
||||
{
|
||||
// 表名
|
||||
protected $name = 'address_area';
|
||||
|
||||
protected $uniacid = false;
|
||||
|
||||
// 自动写入时间戳字段
|
||||
protected $autoWriteTimestamp = false;
|
||||
|
||||
// 定义时间戳字段名
|
||||
protected $createTime = false;
|
||||
protected $updateTime = false;
|
||||
protected $deleteTime = false;
|
||||
|
||||
/**
|
||||
* 关联子地区
|
||||
*/
|
||||
public function children()
|
||||
{
|
||||
return $this->hasMany('app\admin\model\data\Area', 'pid', 'id');
|
||||
}
|
||||
|
||||
/**
|
||||
* 关联父地区
|
||||
*/
|
||||
public function parent()
|
||||
{
|
||||
return $this->belongsTo('app\admin\model\data\Area', 'pid', 'id');
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,37 @@
|
||||
<?php
|
||||
|
||||
namespace app\admin\model\data;
|
||||
|
||||
use think\Model;
|
||||
|
||||
|
||||
class Order extends Model
|
||||
{
|
||||
|
||||
|
||||
// 表名
|
||||
protected $name = 'order';
|
||||
|
||||
// 自动写入时间戳字段
|
||||
protected $autoWriteTimestamp = 'integer';
|
||||
|
||||
// 定义时间戳字段名
|
||||
protected $createTime = 'createtime';
|
||||
protected $updateTime = false;
|
||||
protected $deleteTime = false;
|
||||
|
||||
|
||||
/**
|
||||
* 获取时间区间内的支付人数
|
||||
* @param $startTime
|
||||
* @param $endTime
|
||||
* @return void
|
||||
*/
|
||||
public function getTimeRangePayUserCount($startTime,$endTime){
|
||||
return self::where([
|
||||
'createtime'=>['between',[$startTime,$endTime]],
|
||||
'status'=>['in',[\app\common\constant\order\Status::STATUS_PAID,\app\common\constant\order\Status::STATUS_UNRECEIVE,\app\common\constant\order\Status::STATUS_UNSEND,\app\common\constant\order\Status::STATUS_SUREUNRECEIVE,\app\common\constant\order\Status::STATUS_SUCCESS]]
|
||||
])->group('user_id')
|
||||
->count();
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,50 @@
|
||||
<?php
|
||||
|
||||
namespace app\admin\model\data;
|
||||
|
||||
use think\Model;
|
||||
|
||||
|
||||
class Study extends Model
|
||||
{
|
||||
|
||||
|
||||
// 表名
|
||||
protected $name = 'study';
|
||||
|
||||
// 自动写入时间戳字段
|
||||
protected $autoWriteTimestamp = 'integer';
|
||||
|
||||
// 定义时间戳字段名
|
||||
protected $createTime = 'createtime';
|
||||
protected $updateTime = false;
|
||||
protected $deleteTime = false;
|
||||
|
||||
// 追加属性
|
||||
protected $append = [
|
||||
|
||||
];
|
||||
|
||||
public function course()
|
||||
{
|
||||
return $this->belongsTo('app\admin\model\Course', 'course_id', 'id', [], 'RIGHT')->setEagerlyType(0);
|
||||
}
|
||||
|
||||
public function courseleft()
|
||||
{
|
||||
return $this->belongsTo('app\admin\model\Course', 'course_id', 'id', [], 'LEFT')->setEagerlyType(0);
|
||||
}
|
||||
|
||||
|
||||
public function user()
|
||||
{
|
||||
return $this->belongsTo('app\admin\model\User', 'user_id', 'id', [], 'LEFT')->setEagerlyType(0);
|
||||
}
|
||||
|
||||
public function liveuser()
|
||||
{
|
||||
return $this->belongsTo('app\admin\model\live\User', 'user_id', 'user_id', [], 'LEFT')->setEagerlyType(0);
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
@@ -0,0 +1,182 @@
|
||||
<?php
|
||||
|
||||
namespace app\admin\model\data;
|
||||
|
||||
use think\Model;
|
||||
|
||||
|
||||
class Time
|
||||
{
|
||||
|
||||
/**
|
||||
* 获取指定日期的指定天数内
|
||||
* 每一天的开始与结束时间
|
||||
* @param $date
|
||||
* @return array
|
||||
* @throws \Exception
|
||||
*/
|
||||
public function getDaysStartAndEnd($date, $days = 7) {
|
||||
$dt = new \DateTime($date);
|
||||
// 初始化结果数组
|
||||
$dayList = [];
|
||||
for ($i = 0; $i < $days; $i++) {
|
||||
// 格式化开始和结束时间
|
||||
$dayStart = $dt->format('Y-m-d 00:00:00');
|
||||
$dayEnd = $dt->format('Y-m-d 23:59:59');
|
||||
$dayList[$dt->format('Y-m-d')] = ['start' => strtotime($dayStart), 'end' => strtotime($dayEnd)];
|
||||
|
||||
// 递增日期
|
||||
$dt->add(new \DateInterval('P1D')); // 增加一天
|
||||
}
|
||||
|
||||
return $dayList;
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取指定日期的一个月内
|
||||
* 每一天的开始与结束时间
|
||||
* @param $date
|
||||
* @return array
|
||||
* @throws \Exception
|
||||
*/
|
||||
public function getMonthDaysStartAndEnd($date) {
|
||||
$start = new \DateTime($date);
|
||||
$end = clone $start;
|
||||
$end->modify('+1 month'); // 移动到一个月后
|
||||
|
||||
// 初始化结果数组
|
||||
$dayList = [];
|
||||
while ($start < $end) {
|
||||
$dayStart = $start->format('Y-m-d 00:00:00');
|
||||
$dayEnd = $start->format('Y-m-d 23:59:59');
|
||||
$dayList[$start->format('Y-m-d')] = ['start' => strtotime($dayStart), 'end' => strtotime($dayEnd)];
|
||||
|
||||
// 递增日期
|
||||
$start->add(new \DateInterval('P1D')); // 增加一天
|
||||
}
|
||||
return $dayList;
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取指定日期的一个季度内
|
||||
* 每一天的开始与结束时间
|
||||
* @param $date
|
||||
* @return array
|
||||
* @throws \Exception
|
||||
*/
|
||||
public function getQuarterDaysStartAndEnd($date) {
|
||||
$start = new \DateTime($date);
|
||||
$end = clone $start;
|
||||
$end->modify('+3 month'); // 移动到一个月后
|
||||
|
||||
// 初始化结果数组
|
||||
$dayList = [];
|
||||
while ($start < $end) {
|
||||
$dayStart = $start->format('Y-m-d 00:00:00');
|
||||
$dayEnd = $start->format('Y-m-d 23:59:59');
|
||||
$dayList[$start->format('Y-m-d')] = ['start' => strtotime($dayStart), 'end' => strtotime($dayEnd)];
|
||||
|
||||
// 递增日期
|
||||
$start->add(new \DateInterval('P1D')); // 增加一天
|
||||
}
|
||||
return $dayList;
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取指定日期的一年内
|
||||
* 每一天的开始与结束时间
|
||||
* @param $date
|
||||
* @return array
|
||||
* @throws \Exception
|
||||
*/
|
||||
public function getYearDaysStartAndEnd($date) {
|
||||
$start = new \DateTime($date);
|
||||
$end = clone $start;
|
||||
$end->modify('+1 years'); // 移动到一个月后
|
||||
|
||||
// 初始化结果数组
|
||||
$dayList = [];
|
||||
while ($start < $end) {
|
||||
$dayStart = $start->format('Y-m-d 00:00:00');
|
||||
$dayEnd = $start->format('Y-m-d 23:59:59');
|
||||
$dayList[$start->format('Y-m-d')] = ['start' => strtotime($dayStart), 'end' => strtotime($dayEnd)];
|
||||
|
||||
// 递增日期
|
||||
$start->add(new \DateInterval('P1D')); // 增加一天
|
||||
}
|
||||
return $dayList;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 获取指定日期范围内
|
||||
* 每一天的开始与结束时间
|
||||
* @param $startDate
|
||||
* @param $endDate
|
||||
* @return array
|
||||
* @throws \Exception
|
||||
*/
|
||||
function getDateRangeStartAndEnd($startDate, $endDate) {
|
||||
$start = new \DateTime($startDate);
|
||||
$end = new \DateTime($endDate);
|
||||
$end->modify('+1 day'); // 包含结束日期那天
|
||||
|
||||
// 初始化结果数组
|
||||
$dayList = [];
|
||||
while ($start < $end) {
|
||||
$dayStart = $start->format('Y-m-d 00:00:00');
|
||||
$dayEnd = $start->format('Y-m-d 23:59:59');
|
||||
$dayList[$start->format('Y-m-d')] = ['start' => strtotime($dayStart), 'end' => strtotime($dayEnd)];
|
||||
|
||||
// 递增日期
|
||||
$start->add(new \DateInterval('P1D')); // 增加一天
|
||||
}
|
||||
|
||||
return $dayList;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 获取指定日期的开始与结束时间
|
||||
* @return array
|
||||
*/
|
||||
public function getFilterStartEndTime($time,$unit){
|
||||
|
||||
switch ($unit){
|
||||
case 'date':
|
||||
$startTime = strtotime($time.' midnight');
|
||||
$endTime = strtotime($time . " 23:59:59");
|
||||
break;
|
||||
case 'week':
|
||||
$startTime = strtotime($time.' midnight');
|
||||
$endTime = strtotime($time."+7 day 23:59:59");
|
||||
break;
|
||||
case 'month':
|
||||
$startTime = strtotime($time.'-01 00:00:00');
|
||||
$endTime = strtotime($time." next month") - 1;
|
||||
break;
|
||||
case 'quarter':
|
||||
$year = date('Y', strtotime($time));
|
||||
$month = date('m', strtotime($time));
|
||||
$quarter = ceil($month / 3);
|
||||
$startMonth = ($quarter - 1) * 3 + 1;
|
||||
$endMonth = $startMonth + 2;
|
||||
$startOfQuarter = "$year-$startMonth-01 00:00:00";
|
||||
$endOfQuarter = date('Y-m-t 23:59:59', strtotime("$year-$endMonth-01"));
|
||||
$startTime = strtotime($startOfQuarter);
|
||||
$endTime = strtotime($endOfQuarter);
|
||||
break;
|
||||
case 'year':
|
||||
$year = date('Y', strtotime($time));
|
||||
$startTime = strtotime("$year-01-01 00:00:00");
|
||||
$endTime = strtotime("$year-12-31 23:59:59");
|
||||
break;
|
||||
case 'range':
|
||||
$startTime = strtotime($time[0] . " 00:00:00");
|
||||
$endTime = strtotime($time[1] . " 23:59:59");
|
||||
break;
|
||||
}
|
||||
|
||||
return ['start'=>$startTime,'end'=>$endTime];
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,41 @@
|
||||
<?php
|
||||
|
||||
namespace app\admin\model\data;
|
||||
|
||||
use think\Model;
|
||||
|
||||
|
||||
class Traffic extends Model
|
||||
{
|
||||
|
||||
|
||||
// 表名
|
||||
protected $name = 'data_traffic';
|
||||
|
||||
// 自动写入时间戳字段
|
||||
protected $autoWriteTimestamp = 'integer';
|
||||
|
||||
// 定义时间戳字段名
|
||||
protected $createTime = 'createtime';
|
||||
protected $updateTime = false;
|
||||
protected $deleteTime = false;
|
||||
|
||||
protected $uniacid = false;
|
||||
|
||||
public function getTotal($startTime,$endTime){
|
||||
$where = [];
|
||||
|
||||
$where['createtime'] = ['between',[$startTime,$endTime]];
|
||||
|
||||
$data = self::where($where)
|
||||
->field([
|
||||
"FROM_UNIXTIME(createtime, '%Y-%m-%d') as date", // 转换创建时间为日期
|
||||
"COUNT(*) as store_pv", // 店铺浏览量,包括所有商品浏览
|
||||
"COUNT(DISTINCT ip) as store_uv", // 基于IP的店铺访客数
|
||||
"COUNT(IF(page_type<>'other', 1, NULL)) as product_pv", // 商品浏览量
|
||||
"COUNT(DISTINCT IF(page_type<>'other', ip, NULL)) as product_uv" // 商品访客数,基于IP
|
||||
])
|
||||
->find();
|
||||
return $data;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user