王总上门按摩后台代码
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
shangmenanmo/app/massage/model/CoachLevel.php

656 lines
16 KiB

<?php
namespace app\massage\model;
use app\BaseModel;
use think\facade\Db;
class CoachLevel extends BaseModel
{
//定义表名
protected $name = 'massage_service_coach_level';
/**
* @author chenniang
* @DataTime: 2020-09-29 11:04
* @功能说明:添加
*/
public function dataAdd($data){
$data['create_time'] = time();
$res = $this->insert($data);
return $res;
}
/**
* @author chenniang
* @DataTime: 2020-09-29 11:04
* @功能说明:添加
*/
public function dataInfo($dis){
$res = $this->where($dis)->find();
return !empty($res)?$res->toArray():[];
}
/**
* @author chenniang
* @DataTime: 2020-09-29 11:05
* @功能说明:编辑
*/
public function dataUpdate($dis,$data){
$res = $this->where($dis)->update($data);
return $res;
}
/**
* @author chenniang
* @DataTime: 2020-09-29 11:06
* @功能说明:列表
*/
public function dataList($dis,$page){
$data = $this->where($dis)->order('time_long desc,id desc')->paginate($page)->toArray();
return $data;
}
/**
* @author chenniang
* @DataTime: 2020-09-29 11:43
* @功能说明:
*/
public function dataInit($uniacid){
//查询有无记录
$info = $this->where(['uniacid'=>$uniacid])->order('date_str desc')->find();
//没有就用订单的第一天
if(empty($info)){
$order_model = new Order();
$start = $order_model->where(['uniacid'=>$uniacid])->min('create_time');
$start = !empty($start)?$start-86400:0;
}else{
$start = $info['date_str'];
}
//没有记录就用今天
$start = !empty($start)?$start:time();
//确保零点
$start = strtotime(date('Y-m-d',$start));
$eve = strtotime(date('Y-m-d',time())) - $start;
$eve = $eve/86400;
if(!empty($eve)){
for ($i=1;$i<=$eve;$i++){
$insert = [
'uniacid' => $uniacid,
'date' => date('Y-m-d',$start+$i*86400),
'date_str'=> $start+$i*86400
];
$this->dataAdd($insert);
}
}
return true;
}
/**
* @author chenniang
* @DataTime: 2022-11-04 15:50
* @功能说明:获取最低时长
*/
public function getMinTimeLong($caoch_id,$level_cycle,$type=1){
$order_model = new Order();
$dis = [
'coach_id' => $caoch_id,
'pay_type' => 7
];
//每周
if($level_cycle==1){
$week = $type==1?'week':'last week';
$price = $order_model->where($dis)->whereTime('create_time',$week)->sum('true_time_long');
//每月
}elseif ($level_cycle==2){
$month = $type==1?'month':'last month';
$price = $order_model->where($dis)->whereTime('create_time',$month)->sum('true_time_long');
//每季度
}elseif ($level_cycle==3){
$quarter = $type==1 ? ceil((date('n'))/3) : ceil((date('n'))/3)-1;//获取当前季度
$start_quarter= mktime(0, 0, 0,$quarter*3-2,1,date('Y'));
$end_quarter = mktime(0, 0, 0,$quarter*3+1,1,date('Y'));
$price = $order_model->where($dis)->where('create_time','between',"$start_quarter,$end_quarter")->sum('true_time_long');
//每年
}elseif ($level_cycle==4){
$year = $type==1?'year':'last year';
$price = $order_model->where($dis)->whereTime('create_time',$year)->sum('true_time_long');
}elseif ($level_cycle==5){
$day = date('d',time());
//本期
if($type==1){
//下半月
if($day>15){
$start_time = strtotime(date ('Y-m-16', time()));
$end_time = strtotime(date('Y-m-t', time()))+86399;
}else{
$start_time = strtotime(date ('Y-m-01', time()));
$end_time = strtotime(date('Y-m-16', time()))-1;
}
}else{
//上期
//下半月
if($day>15){
$start_time = strtotime(date ('Y-m-01', time()));
$end_time = strtotime(date('Y-m-16', time()))-1;
}else{
$start_time = strtotime(date ('Y-m-16', strtotime('-1 month')));
$end_time = strtotime(date('Y-m-t', strtotime('-1 month')))+86399;
}
}
$price = $order_model->where($dis)->where('create_time','between',"$start_time,$end_time")->sum('true_time_long');
}else{
//不限
$price = $order_model->where($dis)->sum('true_time_long');
}
return $price;
}
/**
* @author chenniang
* @DataTime: 2022-11-04 15:50
* @功能说明:获取最低业绩
*/
public function getMinPrice($caoch_id,$level_cycle,$add = 0,$type=1){
$order_model = new Order();
$dis = [
'coach_id' => $caoch_id,
'pay_type' => 7
];
if($add==1){
$dis['is_add'] = $add;
}
//每周
if($level_cycle==1){
$week = $type==1?'week':'last week';
$price = $order_model->where($dis)->whereTime('create_time',$week)->sum('true_service_price');
//每月
}elseif ($level_cycle==2){
$month = $type==1?'month':'last month';
$price = $order_model->where($dis)->whereTime('create_time',$month)->sum('true_service_price');
//每季度
}elseif ($level_cycle==3){
$quarter = $type==1 ? ceil((date('n'))/3) : ceil((date('n'))/3)-1;//获取当前季度
$start_quarter= mktime(0, 0, 0,$quarter*3-2,1,date('Y'));
$end_quarter = mktime(0, 0, 0,$quarter*3+1,1,date('Y'));
$price = $order_model->where($dis)->where('create_time','between',"$start_quarter,$end_quarter")->sum('true_service_price');
//每年
}elseif ($level_cycle==4){
$year = $type==1?'year':'last year';
$price = $order_model->where($dis)->whereTime('create_time',$year)->sum('true_service_price');
}elseif ($level_cycle==5){
$day = date('d',time());
//本期
if($type==1){
//下半月
if($day>15){
$start_time = strtotime(date ('Y-m-16', time()));
$end_time = strtotime(date('Y-m-t', time()))+86399;
}else{
$start_time = strtotime(date ('Y-m-01', time()));
$end_time = strtotime(date('Y-m-16', time()))-1;
}
}else{
//上期
//下半月
if($day>15){
$start_time = strtotime(date ('Y-m-01', time()));
$end_time = strtotime(date('Y-m-16', time()))-1;
}else{
$start_time = strtotime(date ('Y-m-16', strtotime('-1 month')));
$end_time = strtotime(date('Y-m-t', strtotime('-1 month')))+86399;
}
}
$price = $order_model->where($dis)->where('create_time','between',"$start_time,$end_time")->sum('true_service_price');
}else{
//不限
$price = $order_model->where($dis)->sum('true_service_price');
}
return round($price,2);
}
/**
* @author chenniang
* @DataTime: 2022-11-04 15:50
* @功能说明:获取技师在线时长
*/
public function getCoachOnline($caoch_id,$level_cycle,$type=1){
$log_model = new WorkLog();
//初始化每一天的工作时间
$log_model->updateTimeOnline($caoch_id,1);
$dis = [
'coach_id' => $caoch_id,
];
//每周
if($level_cycle==1){
$week = $type==1?'week':'last week';
$time_long = $log_model->where($dis)->whereTime('create_time',$week)->sum('time');
//每月
}elseif ($level_cycle==2){
$month = $type==1?'month':'last month';
$time_long = $log_model->where($dis)->whereTime('create_time',$month)->sum('time');
//每季度
}elseif ($level_cycle==3){
$quarter = $type==1 ? ceil((date('n'))/3) : ceil((date('n'))/3)-1;//获取当前季度
$start_quarter = mktime(0, 0, 0,$quarter*3-2,1,date('Y'));
$end_quarter = mktime(0, 0, 0,$quarter*3+1,1,date('Y'));
$time_long = $log_model->where($dis)->where('create_time','between',"$start_quarter,$end_quarter")->sum('time');
//每年
}elseif ($level_cycle==4){
$year = $type==1?'year':'last year';
$time_long = $log_model->where($dis)->whereTime('create_time',$year)->sum('time');
}elseif ($level_cycle==5){
$day = date('d',time());
//本期
if($type==1){
//下半月
if($day>15){
$start_time = strtotime(date ('Y-m-16', time()));
$end_time = strtotime(date('Y-m-t', time()))+86399;
}else{
$start_time = strtotime(date ('Y-m-01', time()));
$end_time = strtotime(date('Y-m-16', time()))-1;
}
}else{
//下半月
if($day>15){
$start_time = strtotime(date ('Y-m-01', time()));
$end_time = strtotime(date('Y-m-16', time()))-1;
}else{
$start_time = strtotime(date ('Y-m-16', strtotime('-1 month')));
$end_time = strtotime(date('Y-m-t', strtotime('-1 month')))+86399;
}
}
$time_long = $log_model->where($dis)->where('create_time','between',"$start_time,$end_time")->sum('time');
}else{
//不限
$time_long = $log_model->where($dis)->sum('time');
}
$coach_time_model = new CoachTimeList();
//休息时间
$rest_time_long = $coach_time_model->getCoachRestTimeLong($caoch_id,$level_cycle,$type);
//4772280.0
$time_long = ($time_long-$rest_time_long)>0?$time_long-$rest_time_long:0;
return floor($time_long/3600);
}
/**
* @author chenniang
* @DataTime: 2022-11-04 15:50
* @功能说明:获取最低业绩
*/
public function getMinIntegral($caoch_id,$level_cycle,$type=1){
$order_model = new BalanceOrder();
$dis = [
'coach_id' => $caoch_id,
'status' => 2
];
//每周
if($level_cycle==1){
$week = $type==1?'week':'last week';
$price = $order_model->where($dis)->whereTime('create_time',$week)->sum('integral');
//每月
}elseif ($level_cycle==2){
$month = $type==1?'month':'last month';
$price = $order_model->where($dis)->whereTime('create_time',$month)->sum('integral');
//每季度
}elseif ($level_cycle==3){
$quarter = $type==1 ? ceil((date('n'))/3) : ceil((date('n'))/3)-1;//获取当前季度
$start_quarter= mktime(0, 0, 0,$quarter*3-2,1,date('Y'));
$end_quarter = mktime(0, 0, 0,$quarter*3+1,1,date('Y'));
$price = $order_model->where($dis)->where('create_time','between',"$start_quarter,$end_quarter")->sum('integral');
//每年
}elseif ($level_cycle==4){
$year = $type==1?'year':'last year';
$price = $order_model->where($dis)->whereTime('create_time',$year)->sum('integral');
}elseif ($level_cycle==5){
$day = date('d',time());
//本期
if($type==1){
//下半月
if($day>15){
$start_time = strtotime(date ('Y-m-16', time()));
$end_time = strtotime(date('Y-m-t', time()))+86399;
}else{
$start_time = strtotime(date ('Y-m-01', time()));
$end_time = strtotime(date('Y-m-16', time()))-1;
}
}else{
//上期
//下半月
if($day>15){
$start_time = strtotime(date ('Y-m-01', time()));
$end_time = strtotime(date('Y-m-16', time()))-1;
}else{
$start_time = strtotime(date ('Y-m-16', strtotime('-1 month')));
$end_time = strtotime(date('Y-m-t', strtotime('-1 month')))+86399;
}
}
$price = $order_model->where($dis)->where('create_time','between',"$start_time,$end_time")->sum('integral');
}else{
//不限
$price = $order_model->where($dis)->sum('integral');
}
return $price;
}
/**
* @author chenniang
* @DataTime: 2022-11-04 17:47
* @功能说明:初始化
*/
public function initTop($uniacid){
$dis = [
'uniacid' => $uniacid,
'status' => 1
];
$list = $this->where($dis)->order('time_long,id desc')->select()->toArray();
$key = 'coach_level_key';
incCache($key,1,$this->_uniacid);
$key_value = getCache($key,$this->_uniacid);
if($key_value==1){
if(!empty($list)){
foreach ($list as $k=>$value){
$this->dataUpdate(['id'=>$value['id']],['top'=>$k+1]);
}
}
}
decCache($key,1,$this->_uniacid);
return true;
}
/**
* @author chenniang
* @DataTime: 2022-11-04 15:50
* @功能说明:获取最低业绩
*/
public function getMinCount($caoch_id,$level_cycle,$add = 0,$type=1){
$order_model = new Order();
$dis = [
'coach_id' => $caoch_id,
'pay_type' => 7
];
if($add==1){
$dis['is_add'] = $add;
}
//每周
if($level_cycle==1){
$week = $type==1?'week':'last week';
$price = $order_model->where($dis)->whereTime('create_time',$week)->count();
//每月
}elseif ($level_cycle==2){
$month = $type==1?'month':'last month';
$price = $order_model->where($dis)->whereTime('create_time',$month)->count();
//每季度
}elseif ($level_cycle==3){
$quarter = $type==1 ? ceil((date('n'))/3) : ceil((date('n'))/3)-1;//获取当前季度
$start_quarter= mktime(0, 0, 0,$quarter*3-2,1,date('Y'));
$end_quarter = mktime(0, 0, 0,$quarter*3+1,1,date('Y'));
$price = $order_model->where($dis)->where('create_time','between',"$start_quarter,$end_quarter")->count();
//每年
}elseif ($level_cycle==4){
$year = $type==1?'year':'last year';
$price = $order_model->where($dis)->whereTime('create_time',$year)->count();
}elseif ($level_cycle==5){
$day = date('d',time());
//本期
if($type==1){
//下半月
if($day>15){
$start_time = strtotime(date ('Y-m-16', time()));
$end_time = strtotime(date('Y-m-t', time()))+86399;
}else{
$start_time = strtotime(date ('Y-m-01', time()));
$end_time = strtotime(date('Y-m-16', time()))-1;
}
}else{
//上期
//下半月
if($day>15){
$start_time = strtotime(date ('Y-m-01', time()));
$end_time = strtotime(date('Y-m-16', time()))-1;
}else{
$start_time = strtotime(date ('Y-m-16', strtotime('-1 month')));
$end_time = strtotime(date('Y-m-t', strtotime('-1 month')))+86399;
}
}
$price = $order_model->where($dis)->where('create_time','between',"$start_time,$end_time")->count();
}else{
//不限
$price = $order_model->where($dis)->count();
}
return $price;
}
}