validate()) { return $this->getModelError(); } $goods = Goods::findOne($this->goods_hub_id); $goodsAttr = GoodsAttr::findOne(['goods_id' => $goods->id, 'sign_id' => $this->attr_id, 'is_delete' => 0]); if (empty($goodsAttr->price)) { return $this->apiReturnError('价格错误'); } if (!$goods) { return $this->apiReturnError('商品id异常'); } if (!empty($this->order_id)) { $signing = Signing::findOne(['id' => $this->order_id]); if ($signing == null) { return $this->apiReturnError('订单错误'); } $signing->update_time = time(); } else { $signing = new Signing(); $signing->create_time = time(); } $signing->order_no = $this->orderNo(); $signing->user_id = $this->user_id; $signing->goods_id = $goods->id; $signing->moy = $goodsAttr->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->attr_id = $this->attr_id; return $signing->save() ? $this->apiReturnSuccess('success', ['order_no' => $signing->order_no, 'order_id' => $signing->id]) : $this->apiReturnError('error'); } public function status_no() { if (empty($this->order_id)) { return $this->apiReturnError('订单错误'); } $model = Signing::findOne(['id' => $this->order_id,]); if ($model == null) { return $this->apiReturnError('订单错误'); } $model->update_time = time(); $model->status = 4; return $model->save() ? $this->apiReturnSuccess('success') : $this->apiReturnError('error'); } private function orderNo() { $orderNo = mt_rand(100000000000, 9999999999999); if (Signing::find()->where(['order_no' => $orderNo])->count('id')) { return $this->orderNo(); } return $orderNo; } public function orderDetail($orderNo) { $order = Signing::find()->andWhere(['order_no' => $orderNo, 'user_id' => $this->user_id])->one()->toArray(); if (!$order) { return $this->apiReturnError('订单号错误'); } $order['goods'] = Goods::findOne($order['goods_id']); $order['goods_hub'] = GoodsHub::findOne($order['goods']['goods_hub_id']); return $this->apiReturnSuccess('success', $order); } public function orderList($status, $limit, $page) { $query = Signing::find()->with(['goods.goodsHub'])->andWhere(['user_id' => $this->user_id])->orderBy(['create_time' => SORT_DESC]); if ($status != null) { $query->andWhere(['status' => $status]); } $pagination = new Pagination(['totalCount' => $query->count(), 'defaultPageSize' => $limit]); $models = $query->offset($pagination->offset)->limit($pagination->limit)->asArray()->all(); return $this->apiReturnSuccess('success', ['pagination' => $pagination, 'data' => $models]); } }