DiverseYouthNightSchool/application/common/model/school/classes/activity/order/OrderLog.php

103 lines
2.6 KiB
PHP
Raw Normal View History

2024-12-23 18:21:02 +08:00
<?php
namespace app\common\model\school\classes\activity\order;
2024-12-26 18:13:04 +08:00
use app\common\model\BaseModel;
2024-12-23 18:21:02 +08:00
use think\Model;
use traits\model\SoftDelete;
2024-12-26 18:13:04 +08:00
class OrderLog extends BaseModel
2024-12-23 18:21:02 +08:00
{
use SoftDelete;
// 表名
protected $name = 'school_classes_activity_order_log';
// 自动写入时间戳字段
protected $autoWriteTimestamp = 'integer';
// 定义时间戳字段名
protected $createTime = 'createtime';
protected $updateTime = 'updatetime';
protected $deleteTime = 'deletetime';
// 追加属性
protected $append = [
'status_text'
];
public function getStatusList()
{
2024-12-30 18:09:23 +08:00
return ['-3' => __('Status -3'), '0' => __('Status 0'), '2' => __('Status 2'), '3' => __('Status 3'), '4' => __('Status 4'),'5' => __('Status 5'), '6' => __('Status 6'), '9' => __('Status 9')];
2024-12-23 18:21:02 +08:00
}
public function getStatusTextAttr($value, $data)
{
$value = $value ? $value : (isset($data['status']) ? $data['status'] : '');
$list = $this->getStatusList();
return isset($list[$value]) ? $list[$value] : '';
}
public function activityorder()
{
return $this->belongsTo(Order::class, 'classes_activity_order_id', 'id', [], 'LEFT')->setEagerlyType(0);
}
2024-12-26 18:13:04 +08:00
/**记录订单日志
* @param $params
* @param bool $trans
* @throws \Exception
*/
public static function log($order,$mark='更新订单状态',$oper_type='user',$oper_id = 0,$trans=false){
if(is_numeric($order)||is_string($order))$order = Order::where('order_no|id|pay_no',$order)->find();
if(!$order)throw new \Exception("找不到订单");
//操作人信息(可扩展)
$data = [
'oper_type'=>$oper_type ?: 'user',
'oper_id'=>$oper_id ?: $order['user_id'],
'remark'=>$mark,
];
//判断逻辑
if($trans){
self::beginTrans();
}
$res = true;
try{
//事务逻辑
$log_data = $order->toArray();
$log_data["classes_activity_order_id"] = $order['id'];
unset($log_data['id']);
unset($log_data['createtime']);
if($mark)$log_data['log_text'] = $mark;
$log_data = array_merge($log_data,$data);
$log = (new self);
$log->allowField(true)->save($log_data);
if($trans){
self::commitTrans();
}
}catch (\Exception $e){
if($trans){
self::rollbackTrans();
}
throw new \Exception($e->getMessage());
}
return $log;
}
2024-12-23 18:21:02 +08:00
}