255], ]; } /** * {@inheritdoc} */ public function attributeLabels() { return [ 'id' => 'ID', 'mall_id' => 'Mall ID', 'type' => 'Type', 'user_id' => 'User ID', 'agent_price' => 'Agent Price', 'child_id' => 'Child ID', 'child_price' => 'Child Price', 'money' => 'Money', 'order_no' => 'Order No', 'goods_id' => 'Goods ID', 'num' => 'Num', 'status' => 'Status', 'created_at' => 'Created At', 'updated_at' => 'Updated At', ]; } public function getUser() { return $this->hasOne(User::class, ['id' => 'user_id'])->select(['id', 'nickname', 'avatar_url', 'mobile']); } public function getChild() { return $this->hasOne(User::class, ['id' => 'child_id'])->select(['id', 'nickname', 'avatar_url', 'mobile']); } public function getGoods() { return $this->hasOne(Goods::class, ['id' => 'goods_id'])->select(['id', 'goods_name', 'cover_pic']); } public static function addData($params) { $cloud_stock_goods = CloudStockGoods::findOne(['goods_id' => $params['goods_id'], 'status' => StatusEnum::ENABLED]); if (empty($cloud_stock_goods)) { throw new \Exception('商品不存在'); } $agent_price = json_decode($cloud_stock_goods['agent_price'], true); $agent_price_list = array_column($agent_price, null, 'level'); $child_cloud_stock_agent = CloudStockAgent::findOne(['user_id' => $params['target_user_id'], 'status' => StatusEnum::ENABLED]); if (empty($child_cloud_stock_agent)) { throw new \Exception('代理商不存在'); } $agent_price = 0; if (!empty($params['user_id'])) { $cloud_stock_agent = CloudStockAgent::findOne(['user_id' => $params['user_id'], 'status' => StatusEnum::ENABLED]); $agent_price = $agent_price_list[$cloud_stock_agent['level']]['price'] ?? 0; } $child_price = $agent_price_list[$child_cloud_stock_agent['level']]['price'] ?? 0; $add = [ 'mall_id' => $params['mall_id'], 'user_id' => $params['user_id'], 'child_id' => $params['target_user_id'], 'agent_price' => $agent_price, 'child_price' => $child_price, 'money' => $child_price * $params['number'], 'order_no' => self::getOrderNo($params['mall_id']), 'goods_id' => $params['goods_id'], 'num' => $params['number'], 'type' => $params['type'], 'status' => StatusEnum::ENABLED, ]; return self::setData($params['mall_id'], $add); } public static function setData(int $mall_id, array $data) { if (!empty($data['id'])) { $model = self::findOne(['mall_id' => $mall_id, 'status' => StatusEnum::ENABLED, 'id' => $data['id']]); if (empty($model)) { self::$static_error = '数据异常'; return false; } } else { $model = new self(); $model->loadDefaultValues(); $model->mall_id = $mall_id; } foreach ($data as $key => $val) { $model->$key = $val; } if (!$model->save()) { self::$static_error = '保存数据失败:' . $model->getErrorMessage(); return false; } return $model; } public static function getOrderNo($mall_id) { $date = date('Ymd'); $start = strtotime($date . ' 00:00:00'); $end = strtotime($date . ' 23:59:59'); $res = self::find()->where(['mall_id' => $mall_id, 'status' => StatusEnum::ENABLED])->andWhere(['between', 'created_at', $start, $end])->orderBy('id desc')->one(); if ($res) { $num = $res['order_no']; $num = substr($num, 8); $num = intval($num) + 1; $num = str_pad($num, 5, '0', STR_PAD_LEFT); return $date . $num; } else { return $date . '00001'; } } }