cxgj/modules/api/models/SigningForm.php
2024-01-15 16:52:34 +08:00

103 lines
2.5 KiB
PHP

<?php
namespace app\modules\api\models;
use app\models\GoodsHub;
use app\models\Signing;
use yii\data\Pagination;
class SigningForm extends ApiModel
{
public $goods_hub_id;
public $company_name;
public $brand_name;
public $product;
public $type;
public $number;
public $remark;
public function rules()
{
return [
[['goods_hub_id', 'company_name', 'brand_name', 'product', 'type', 'number', 'remark'], 'required'],
[['goods_hub_id', 'number'], 'integer']
];
}
public function add()
{
if (!$this->validate()) {
return $this->getModelError();
}
$goods = GoodsHub::findOne($this->goods_hub_id);
if (!$goods) {
return $this->apiReturnError('商品id异常');
}
$signing = new Signing();
$signing->order_no = $this->orderNo();
$signing->user_id = \Yii::$app->user->identity->id;
$signing->goods_hub_id = $this->goods_hub_id;
$signing->moy = $goods->original_price * $this->number;
$signing->company_name = $this->company_name;
$signing->brand_name = $this->brand_name;
$signing->product = $this->product;
$signing->type = $this->type;
$signing->number = $this->number;
$signing->remark = $this->remark;
$signing->create_time = time();
return $signing->save();
}
private function orderNo()
{
$orderNo = mt_rand(100000000000, 99999999999);
if (Signing::find()->where('order_no', $orderNo)->count()) {
return $this->orderNo();
}
return $orderNo;
}
public function orderDetail($orderNo)
{
$order = Signing::find()->where('order_no', $orderNo)
->where('user_id', \Yii::$app->user->identity->id)->one()->toArray();
if (!$order) {
return $this->apiReturnError('订单号错误');
}
$order['goods'] = GoodsHub::findOne($order['goods_hub_id']);
return $this->apiReturnSuccess('success', $order);
}
public function orderList($status)
{
$query = Signing::find()->where('user_id', \Yii::$app->user->identity->id);
if ($status) {
$query->where('status', $status);
}
$pagination = new Pagination(['totalCount' => $query->count(), 'defaultPageSize' => 2]);
$models = $query->offset($pagination->offset)->limit($pagination->limit)->all();
return $this->apiReturnSuccess('success', $models);
}
}