assembleColumns, 'code'); if ($requestData) { foreach ($requestData as $key => $value) { if (!in_array($key, $columnArr)) { unset($requestData[$key]); } } $this->requestData = $requestData; } } public function exec() { $add_type = $this->interfaceSettingInfo['add_type'] ?? 0; if (2 === $add_type) { // 批量添加 $result = $this->addMulti(); } elseif (3 === $add_type) { // 添加树型数据 $result = $this->addOneTree(); } elseif (1 === $add_type) { // 添加单条数据 $result = $this->addOne(); } else { $result = $this->addOne(); } return $result; } /** * 添加单条数据. */ public function addOne(): int { $find = DB::connection($this->getDbConnection())->table($this->table); // 添加数据 最多允许的数量 $this->addTotalLimit($find); if (!isset($this->requestData['mid'])) { $this->requestData['mid'] = Str::random(12); } if (!isset($this->requestData['created_at'])) { $this->requestData['created_at'] = time(); } if (!isset($this->requestData['updated_at'])) { $this->requestData['updated_at'] = time(); } return $find->insertGetId($this->requestData); } /** * 添加树型数据. * * @return int */ public function addOneTree() { $find = DB::connection($this->getDbConnection())->table($this->table); // 添加数据 最多允许的数量 $this->addTotalLimit($find); if (!isset($this->requestData['mid'])) { $this->requestData['mid'] = Str::random(12); } if (!isset($this->requestData['created_at'])) { $this->requestData['created_at'] = time(); } if (!isset($this->requestData['updated_at'])) { $this->requestData['updated_at'] = time(); } // 设置树型数据参数 $requestData = $this->getTreeParams($this->requestData); return $find->insertGetId($requestData); } /** * 批量添加数据. */ public function addMulti() // // todo 代码不对 { $find = DB::connection($this->getDbConnection())->table($this->table); return $find->insert(); } /** * 填充树型数据的父级分类数据. */ private function getTreeParams(?array $requestData): array { if (isset($requestData['parent_id']) && $requestData['parent_id']) { // 查询父级信息 $parentInfo = ES::table($this->table)->find($requestData['parent_id']); if (empty($parentInfo)) { abort(508, '父级数据不存在,请重试!'); } $requestData['level'] = $parentInfo['level'] + 1; } else { $requestData['parent_id'] = 0; $requestData['level'] = 1; } return $requestData; } /** * 添加数据 最多允许的数量. */ private function addTotalLimit($find): void { // 判断是否超出总数限制 $totalSetting = $this->interfaceInfo['total_setting'] ?? []; if ($totalSetting) { $totalSetting = json_decode($totalSetting, true); if (2 === $totalSetting['type']) { $num = $totalSetting['num'] ?? 1; $total = $find->count(); if ($total > $num) { abort(508, '对不起,最多只允许添加' . $num . '条信息!'); } } } } }