Files
liche/common/libraries/receiver/Orders_status_entity.php
T
2022-05-20 11:30:08 +08:00

109 lines
3.4 KiB
PHP

<?php
/**
* Created by PhpStorm.
* User: lcc
* Date: 2022/1/10
* Time: 16:11
*/
class Orders_status_entity{
private $ci;
public function __construct(){
$this->ci = & get_instance();
$this->ci->load->model('receiver/order/receiver_order_status_model');
}
/**
* 完成状态
* @param $oid
* @param $pid_status
* @param $status
* @return bool
*/
public function set_status($oid,$pid_status,$status){
$row = $this->ci->receiver_order_status_model->get(['o_id' => $oid,'pid_status'=>$pid_status,'status'=>$status]);
if($row){
return False;
}
$data = [
'o_id' => $oid,
'pid_status' => $pid_status,
'status' => $status,
'c_time' => time()
];
$res = $this->ci->receiver_order_status_model->add($data);
return $res;
}
/**
* 获取主状未完成
* @param $o_id
* @param $pid_status
* @return string
*/
public function status_cn($o_id,$pid_status){
$status_cn = '';
$status_arr = $this->ci->receiver_order_status_model->get_status();
$sub_status = $status_arr[$pid_status];
if($sub_status){
$key = count($sub_status);
for ($key;$key>=0;$key--){
if(!$key && !$this->ci->receiver_order_status_model->count(['o_id'=>$o_id,'pid_status'=>$pid_status,'status'=>$key])){ //0时
$status_cn = $sub_status[$key];
break;
}else{
if($this->ci->receiver_order_status_model->count(['o_id'=>$o_id,'pid_status'=>$pid_status,'status'=>$key])){
$status_cn = $sub_status[$key];
break;
}
}
}
}
return $status_cn;
}
/**
* 判断否个状态是否全部完成
* @param $o_id
* @param $pid_status
* @param $status
* @return bool
*/
public function get_finish($o_id,$pid_status,$status){
$count = $this->ci->receiver_order_status_model->count(['o_id'=>$o_id,'pid_status'=>$pid_status,'status'=>$status]);
if($count){
return true;
}else{
return false;
}
}
/**
* 获取订单最新子状态
* @param $oid 订单id
* @param $pid_status 主状态id
* @return string
*/
public function last_status_cn($oid,$pid_status=''){
$where=[
'o_id' => $oid,
];
if(!strlen($pid_status)){
$row = $this->ci->receiver_order_status_model->get($where,"id,max(pid_status) as pid_status");
$pid_status = $row['pid_status'];
}
$where['pid_status'] = $pid_status;
$row = $this->ci->receiver_order_status_model->get($where,"id,max(status) as last_status");
$status_arr = $this->ci->receiver_order_status_model->get_status();
if($row['id']){
if($status_arr[$pid_status][$row['last_status']]){
return $status_arr[$pid_status][$row['last_status']];
}else{
return array_pop($status_arr[$pid_status]);
}
}else{
return $status_arr[$pid_status][0];
}
}
}