vd/app/Domains/Virtual/Services/CompanyService.php
2018-12-18 16:46:51 +08:00

108 lines
2.9 KiB
PHP

<?php
namespace App\Domains\Virtual\Services;
use App\Core\Service;
use Illuminate\Support\Str;
use App\Models\Virtual\Company;
use Illuminate\Validation\Rule;
use Illuminate\Support\Facades\DB;
use App\Exceptions\NotExistException;
use Illuminate\Support\Facades\Validator;
use App\Domains\Virtual\Services\CommonService;
use App\Domains\Virtual\Repositories\CompanyRepository;
class CompanyService extends Service
{
protected $companyRepository;
/**
* 构造函数
*
* @return void
*/
public function __construct(CompanyRepository $companyRepository)
{
$this->companyRepository = $companyRepository;
}
/**
* 企业列表
*
* @param array $conditions
* @return mixed
*/
public function index(array $conditions = [])
{
$limit = $conditions['limit'] ?? 20;
$companies = $this->companyRepository->withConditions($conditions)
->applyConditions()->paginate($limit);
return $companies;
}
/**
* 存储企业
*
* @param array $attributes
* @param Company $parent
* @return Company
*/
public function store(array $attributes = [])
{
$attributes = array_only($attributes, array_merge(app(Company::class)->getFillable()));
$rule = [
'name' => ['required', 'between:2,32', Rule::unique($this->companyRepository->getTable(), 'name')->ignore($attributes['id'])],
'contacts' => ['string', 'between:2,32'],
'mobile' => ['string', 'cn_phone'],
'address' => ['string'],
'extends' => ['array'],
];
$message = [
'name.required' => '请输入企业名称',
'name.between' => '企业名称长度不合法',
'name.unique' => '企业名称已经被其他用户所使用',
'contacts.between' => '联系人长度不合法',
'mobile.cn_phone' => '手机号不合法',
];
Validator::validate($attributes, $rule, $message);
if (!$attributes['id']) {
$maxId = Company::withTrashed()->max('id');
$attributes['id'] = $maxId ? $maxId + 1 : 1;
$attributes['sn'] = CommonService::stringifyCompanyId($attributes['id']);
$node = $this->companyRepository->create($attributes);
}
if ($attributes['id']) {
$node = $this->companyRepository->find($attributes['id']);
if (!$node) {
throw new NotExistException('企业不存在或已删除');
}
$this->companyRepository->setModel($node)->update($attributes);
}
return $node;
}
/**
* 删除
*
* @return bool
*/
public function destroy($ids)
{
$ids = is_array($ids) ? $ids : [$ids];
$this->companyRepository->destroy($ids);
return true;
}
}