* * This source file is subject to the MIT license that is bundled * with this source code in the file LICENSE. */ declare(strict_types=1); namespace App\Repository\Company; use App\Dao\Company\CompanyDao; use App\Repository\AbstractRepository; use Exception; use function Hyperf\Collection\collect; /** * Author: ykxiao * Date: 2025/6/5 * Time: 下午6:01 * Description: CompanyRepository类用于提供公司相关的数据访问和操作。它继承自AbstractRepository类,并实现了CompanyDao接口。 * * (c) ykxiao * * This source file is subject to the MIT license that is bundled * with this source code in the file LICENSE. */ class CompanyRepository extends AbstractRepository { public function __construct(CompanyDao $dao) { $this->dao = $dao; } /** * 添加公司。 * @param array $data * @return void * @throws Exception */ public function add(array $data): void { $count = $this->dao->builder(); if (!empty($data['id'])) { $count->where('id', '!=', $data['id']); } // 重复验证邮箱和手机号码 $make = $this->dao->make(); $verify = $make->verifyData(clone $count); $collect = clone collect($verify->get()); $errors = []; if ($collect->where('name', '=', $data['name'])->isNotEmpty()) { $errors[] = '公司名称已存在'; } if (!empty($errors)) { throw new Exception(implode(',', $errors)); } $this->dao->commonCreate($this->paramsData($data)); } /** * 处理参数数据。 * @param array $params * @return array */ private function paramsData(array $params): array { if (empty($params['id'])) { return $params; } return [ 'id' => $params['id'], 'company_type' => $params['company_type'], // 公司类别:1开证 2收货 'name' => $params['name'], // 公司名称 'status' => $params['status'] // 状态:0禁用 1启用 ]; } }