<?php
//src/ItemBundle/Http/Api/V1/Action/ItemTypesController.php
namespace ItemBundle\Http\Api\V1\Action;
use Illuminate\Http\Request;
use App\Http\Controllers\Controller as BaseController;
use Dingo\Api\Exception\StoreResourceFailedException;
class ItemTypesController extends BaseController
{
public function index(Request $request) {
return $this->response->array([]);
}
public function save(Request $request) {
return $this->response->array([]);
}
public function show(Request $request, $id) {
return $this->response->array([$id]);
}
public function update(Request $request, $id) {
}
public function destroy(Request $request, $id) {
}
}
//src/ItemBundle/Services/ItemTypeSercice.php
<?php
namespace ItemBundle\Services;
class ItemTypeService
{
}
//src/ItemBundle/Repositories/ItemTypeRepository.php
<?php
namespace ItemBundle\Repositories;
use Doctrine\ORM\EntityRepository;
class ItemTypeRepository extends EntityRepository
{
}
<?php
//src/ItemBundle/Entities/ItemType.php
namespace ItemBundle\Entities;
use Doctrine\ORM\Mapping as ORM;
/**
* ItemType
*
* @ORM\Table(name="item_type")
* @ORM\Entity(repositoryClass="ItemBundle\Repositories\ItemTypeRepository")
*/
class ItemType
{
//...
}
<?php
//src/ItemBundle/Http/Api/V1/Action/ItemTypesController.php
namespace ItemBundle\Http\Api\V1\Action;
use Illuminate\Http\Request;
use App\Http\Controllers\Controller as BaseController;
use Dingo\Api\Exception\StoreResourceFailedException;
use ItemBundle\Entities\ItemType;
use Dingo\Api\Exception\ResourceException;
use ItemBundle\Services\ItemTypeService;
class ItemTypesController extends BaseController
{
protected $itemTypeService;
public function __construct(ItemTypeService $itemTypeService)
{
$this->itemTypeService = $itemTypeService;
}
//...
}
//src/ItemBundle/Services/ItemTypeSercice.php
<?php
namespace ItemBundle\Services;
use ItemBundle\Entities\ItemType;
class ItemTypeService
{
protected $itemTypeRepository;
public function __construct()
{
$this->itemTypeRepository = app('registry')->getManager('default')->getRepository(ItemType::class);
}
}
//src/ItemBundle/Repositories/ItemTypeRepository.php
<?php
namespace ItemBundle\Repositories;
use ItemBundle\Entities\ItemType;
use Doctrine\ORM\EntityRepository;
class ItemTypeRepository extends EntityRepository
{
public function store(ItemType $itemType)
{
$em = $this->getEntityManager();
$em->persist($itemType);
$em->flush();
return $itemType;
}
public function delete(ItemType $itemType)
{
$em = $this->getEntityManager();
$em->remove($itemType);
$em->flush();
return $itemType;
}
}
//src/ItemBundle/Services/ItemTypeSercice.php
<?php
namespace ItemBundle\Services;
use ItemBundle\Entities\ItemType;
class ItemTypeService
{
protected $itemTypeRepository;
public function __construct()
{
$this->itemTypeRepository = app('registry')->getManager('default')->getRepository(ItemType::class);
}
public function create($params)
{
$itemType = new ItemType();
$itemType->setName($params['name']);
$itemType->setCode($params['code']);
$itemType->setCreated(time());
return $this->itemTypeRepository->store($itemType);
}
public function update($id,$data)
{
$itemType = $this->itemTypeRepository->find($id);
if( !$itemType ) {
throw new ResourceException("未查询到更新数据");
}
$itemType->setName($data['name']);
$itemType->setCode($data['code']);
$itemType->setUpdated(time());
return $this->itemTypeRepository->store($itemType);
}
public function deleteById($id)
{
$itemType = $this->itemTypeRepository->find($id);
if( !$itemType ) {
throw new ResourceException("未查询到更新数据");
}
return $this->itemTypeRepository->delete($itemType);
}
public function findAll()
{
return $this->itemTypeRepository->findAll();
}
public function find($id)
{
return $this->itemTypeRepository->find($id);
}
public function toArray(ItemType $itemType)
{
return [
'id'=>$itemType->getId(),
'name'=>$itemType->getName(),
'code'=>$itemType->getCode(),
'created'=>$itemType->getCreated(),
'updated'=>$itemType->getUpdated(),
];
}
}
<?php
//src/ItemBundle/Http/Api/V1/Action/ItemTypesController.php
namespace ItemBundle\Http\Api\V1\Action;
use Illuminate\Http\Request;
use App\Http\Controllers\Controller as BaseController;
use Dingo\Api\Exception\StoreResourceFailedException;
use ItemBundle\Entities\ItemType;
use Dingo\Api\Exception\ResourceException;
use ItemBundle\Services\ItemTypeService;
class ItemTypesController extends BaseController
{
protected $itemTypeService;
public function __construct(ItemTypeService $itemTypeService)
{
$this->itemTypeService = $itemTypeService;
}
public function index(Request $request) {
$list = $this->itemTypeService->findAll();
foreach ($list as $itemType) {
$result[] = $this->itemTypeService->toArray($itemType);
}
return $this->response->array($result);
}
public function save(Request $request) {
$rules = [
'name' => ['required', '类型名称不能为空'],
'code' => ['required', '类型编码不能为空'],
];
$params = $request->all(array_keys($rules));
$error = validator_params($params, $rules);
if($error) {
throw new StoreResourceFailedException($error);
}
$itemType = $this->itemTypeService->create($params);
return $this->response->array(['id'=>$itemType->getId()]);
}
public function show(Request $request,$id) {
$itemType = $this->itemTypeService->find($id);
return $this->response->array($this->itemTypeService->toArray($itemType));
}
public function update(Request $request, $id) {
$rules = [
'name' => ['required', '类型名称不能为空'],
'code' => ['required', '类型编码不能为空'],
];
$params = $request->all(array_keys($rules));
$error = validator_params($params, $rules);
if($error) {
throw new StoreResourceFailedException($error);
}
$itemType = $this->itemTypeService->update($id,$params);
return $this->response->array(['status'=>'succ']);
}
public function destroy(Request $request, $id) {
$itemType = $this->itemTypeService->deleteById($id);
return $this->response->array(['status'=>'succ']);
}
}