Files
CKB-Interface/application/store/model/VendorOrderModel.php
2026-03-24 10:39:16 +08:00

109 lines
2.8 KiB
PHP

<?php
namespace app\store\model;
use think\Model;
/**
* 供应商订单模型
*/
class VendorOrderModel extends Model
{
// 设置表名
protected $name = 'vendor_order';
// 主键
protected $pk = 'id';
// 自动写入时间戳
protected $autoWriteTimestamp = true;
protected $createTime = 'createTime';
protected $updateTime = 'updateTime';
// 状态常量
const STATUS_UNPAID = 0; // 待支付
const STATUS_PAID = 1; // 已支付
const STATUS_COMPLETED = 2; // 已完成
const STATUS_CANCELED = 3; // 已取消
// 类型转换
protected $type = [
'id' => 'integer',
'userId' => 'integer',
'companyId' => 'integer',
'packageId' => 'integer',
'totalAmount' => 'float',
'payAmount' => 'float',
'advancePayment' => 'float',
'status' => 'integer',
'createTime' => 'timestamp',
'updateTime' => 'timestamp',
'payTime' => 'timestamp',
];
/**
* 与套餐的关联
*/
public function package()
{
return $this->belongsTo('VendorPackageModel', 'packageId', 'id');
}
/**
* 生成唯一订单号
* @return string
*/
public static function generateOrderNo()
{
$prefix = 'GY';
$date = date('YmdHis');
$random = mt_rand(10000, 99999);
return $prefix . $date . $random;
}
/**
* 创建订单
*
* @param int $userId 用户ID
* @param int $companyId 公司ID
* @param int $packageId 套餐ID
* @param string $packageName 套餐名称
* @param float $totalAmount 订单总额
* @param float $payAmount 支付金额
* @param float $advancePayment 预付款
* @param string $remark 备注
* @return array|false
*/
public static function createOrder($userId, $companyId, $packageId, $packageName, $totalAmount, $payAmount, $advancePayment = 0, $remark = '')
{
$orderNo = self::generateOrderNo();
$data = [
'userId' => intval($userId),
'companyId' => intval($companyId),
'packageId' => intval($packageId),
'packageName' => $packageName,
'orderNo' => $orderNo,
'totalAmount' => floatval($totalAmount),
'payAmount' => floatval($payAmount),
'advancePayment' => floatval($advancePayment),
'status' => self::STATUS_UNPAID,
'remark' => $remark,
'createTime' => time(),
'updateTime' => time(),
];
$model = new self();
$result = $model->save($data);
if ($result) {
return $model->toArray();
} else {
return false;
}
}
}