This commit is contained in:
87
app/Repository/Company/CompanyRepository.php
Normal file
87
app/Repository/Company/CompanyRepository.php
Normal file
@ -0,0 +1,87 @@
|
||||
<?php
|
||||
/**
|
||||
* Author: ykxiao
|
||||
* Date: 2025/6/5
|
||||
* Time: 下午6:00
|
||||
* Description:
|
||||
*
|
||||
* (c) ykxiao <yk_9001@hotmail.com>
|
||||
*
|
||||
* 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 <yk_9001@hotmail.com>
|
||||
*
|
||||
* 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启用
|
||||
];
|
||||
}
|
||||
}
|
111
app/Repository/Company/FirstCompanyRepository.php
Normal file
111
app/Repository/Company/FirstCompanyRepository.php
Normal file
@ -0,0 +1,111 @@
|
||||
<?php
|
||||
/**
|
||||
* Author: ykxiao
|
||||
* Date: 2025/6/5
|
||||
* Time: 下午9:25
|
||||
* Description:
|
||||
*
|
||||
* (c) ykxiao <yk_9001@hotmail.com>
|
||||
*
|
||||
* 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\FirstCompanyDao;
|
||||
use App\Repository\AbstractRepository;
|
||||
use Carbon\Carbon;
|
||||
use Exception;
|
||||
use function Hyperf\Collection\collect;
|
||||
|
||||
/**
|
||||
* Author: ykxiao
|
||||
* Date: 2025/6/5
|
||||
* Time: 下午9:26
|
||||
* Description: 平台公司数据仓库类.
|
||||
*
|
||||
* (c) ykxiao <yk_9001@hotmail.com>
|
||||
*
|
||||
* This source file is subject to the MIT license that is bundled
|
||||
* with this source code in the file LICENSE.
|
||||
*/
|
||||
class FirstCompanyRepository extends AbstractRepository
|
||||
{
|
||||
public function __construct(FirstCompanyDao $dao)
|
||||
{
|
||||
$this->dao = $dao;
|
||||
}
|
||||
|
||||
/**
|
||||
* 新增公司.
|
||||
* @throws Exception
|
||||
*/
|
||||
public function addCompany(array $data): void
|
||||
{
|
||||
$count = $this->dao->builder();
|
||||
|
||||
// 重复字段验证
|
||||
$make = $this->dao->make();
|
||||
$verify = $make->verifyData(clone $count, $data);
|
||||
$collect = clone collect($verify->get());
|
||||
|
||||
$errors = [];
|
||||
if ($collect->where('name', '=', $data['name'])->isNotEmpty()) {
|
||||
$errors[] = '公司简称已存在';
|
||||
}
|
||||
if ($collect->where('full_name', '=', $data['full_name'])->isNotEmpty()) {
|
||||
$errors[] = '公司全称已存在';
|
||||
}
|
||||
if ($collect->where('mobile', '=', $data['mobile'])->isNotEmpty()) {
|
||||
$errors[] = '负责人手机已存在';
|
||||
}
|
||||
if (!empty($errors)) {
|
||||
throw new Exception(implode(',', $errors));
|
||||
}
|
||||
|
||||
$this->dao->commonCreate($this->paramsData($data));
|
||||
}
|
||||
|
||||
/**
|
||||
* 参数处理.
|
||||
*/
|
||||
private function paramsData(array $params): array
|
||||
{
|
||||
if (empty($params['id'])) {
|
||||
return $params;
|
||||
}
|
||||
|
||||
return [
|
||||
'id' => $params['id'],
|
||||
'domain' => $params['domain'],
|
||||
'name' => $params['name'],
|
||||
'full_name' => $params['full_name'],
|
||||
'company_type' => $params['company_type'],
|
||||
'address' => $params['address'] ?? '',
|
||||
'logo' => $params['logo'] ?? '',
|
||||
'owner' => $params['owner'] ?? '', // 公司负责人
|
||||
'id_card' => $params['id_card'] ?? '', // 法人身份证
|
||||
'mobile' => $params['mobile'],
|
||||
'org_code' => $params['org_code'] ?? '',
|
||||
'remark' => $params['remark'] ?? '',
|
||||
'active_status' => $params['active_status'],
|
||||
'activation_date' => Carbon::parse($params['activation_date'])->timestamp,
|
||||
];
|
||||
}
|
||||
|
||||
/**
|
||||
* 根据公司全称获取公司信息.
|
||||
* @param string $fullName
|
||||
* @return array|null
|
||||
*/
|
||||
public function getCompanyByFullName(string $fullName): ?array
|
||||
{
|
||||
return $this->dao->builder()
|
||||
->select($this->dao->getFields())
|
||||
->where('full_name', '=', $fullName)
|
||||
->first()?->toArray();
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user