From 575fe86aa67d655228e276f38b54a5a9b767f143 Mon Sep 17 00:00:00 2001 From: "LAPTOP-7SGDREK0\\shiweijun" <411582373@qq.com> Date: Thu, 6 Feb 2025 18:13:20 +0800 Subject: [PATCH] feat:material_application --- app/Constants/Common/MaterialCode.php | 10 +++ app/Controller/Api/MaterialController.php | 48 ++++++++++++ app/Model/MaterialApplication.php | 49 ++++++++++++ app/Request/Api/MaterialRequest.php | 4 + app/Service/Api/Material/MaterialService.php | 79 ++++++++++++++++++++ sync/http/admin/auth.http | 24 ++++++ 6 files changed, 214 insertions(+) create mode 100644 app/Model/MaterialApplication.php diff --git a/app/Constants/Common/MaterialCode.php b/app/Constants/Common/MaterialCode.php index 19f519c..d9a769b 100644 --- a/app/Constants/Common/MaterialCode.php +++ b/app/Constants/Common/MaterialCode.php @@ -26,4 +26,14 @@ class MaterialCode extends AbstractConstants */ const int DISABLE = 2; + const int UN_AUDIT = 1; + const int AUDITED = 2; + + const int AUDIT_REFUSE = 3; + + const int PART_OUT = 4; + + const int ALL_OUT = 5; + + } \ No newline at end of file diff --git a/app/Controller/Api/MaterialController.php b/app/Controller/Api/MaterialController.php index 7e96aba..28fa4a7 100644 --- a/app/Controller/Api/MaterialController.php +++ b/app/Controller/Api/MaterialController.php @@ -30,5 +30,53 @@ class MaterialController return (new MaterialService())->materialList(); } + /** + * 申请材料 + * @param MaterialRequest $request + * @return array + */ + #[RequestMapping(path: "application", methods: "POST")] + #[Scene(scene: "material_application")] + public function materialApplication(MaterialRequest $request): array + { + return (new MaterialService())->materialApplication(); + } + + /** + * 修改申请材料 + * @param MaterialRequest $request + * @return array + */ + #[RequestMapping(path: "application_edit", methods: "POST")] + #[Scene(scene: "application_edit")] + public function materialApplicationEdit(MaterialRequest $request): array + { + return (new MaterialService())->applicationEdit(); + } + + /** + * 删除申请材料 + * @param MaterialRequest $request + * @return array + */ + #[RequestMapping(path: "application_delete", methods: "POST")] + #[Scene(scene: "application_delete")] + public function materialApplicationDelete(MaterialRequest $request): array + { + return (new MaterialService())->applicationDelete(); + } + + /** + * 个人申请材料列表 + * @param MaterialRequest $request + * @return array + */ + #[RequestMapping(path: "application_list", methods: "GET")] + #[Scene(scene: "application_list")] + public function applicationList(MaterialRequest $request): array + { + return (new MaterialService())->applicationList(); + } + } diff --git a/app/Model/MaterialApplication.php b/app/Model/MaterialApplication.php new file mode 100644 index 0000000..b962adc --- /dev/null +++ b/app/Model/MaterialApplication.php @@ -0,0 +1,49 @@ + 'integer', 'material_id' => 'integer', 'dish_id' => 'integer', 'num' => 'integer', 'status' => 'integer', 'city_id' => 'integer', 'kitchen_id' => 'integer', 'operator_id' => 'integer', 'is_del' => 'integer']; + + const CREATED_AT = 'create_time'; + + const UPDATED_AT = 'update_time'; + + public function getInfoById(int $id): \Hyperf\Database\Model\Model|Builder|null + { + return $this->where('id', $id)->first(); + } +} diff --git a/app/Request/Api/MaterialRequest.php b/app/Request/Api/MaterialRequest.php index 124b738..ea0147f 100644 --- a/app/Request/Api/MaterialRequest.php +++ b/app/Request/Api/MaterialRequest.php @@ -29,5 +29,9 @@ class MaterialRequest extends FormRequest protected array $scenes = [ 'material_list' => ['limit','query_name'], + 'material_application' => ['material_id','dish_id','number','processing','city_id','kitchen_id'], + 'application_edit' => ['id','material_id','dish_id','number','processing'], + 'application_delete' => ['id'], + 'application_list' => ['limit'], ]; } diff --git a/app/Service/Api/Material/MaterialService.php b/app/Service/Api/Material/MaterialService.php index d550abe..91bcbff 100644 --- a/app/Service/Api/Material/MaterialService.php +++ b/app/Service/Api/Material/MaterialService.php @@ -5,7 +5,9 @@ declare(strict_types=1); namespace App\Service\Api\Material; use App\Constants\Common\MaterialCode; +use App\Exception\ErrException; use App\Model\Material; +use App\Model\MaterialApplication; use App\Service\Api\BaseService; use Hyperf\Di\Annotation\Inject; @@ -17,6 +19,9 @@ class MaterialService extends BaseService{ #[Inject] protected Material $MaterialModel; + #[Inject] + protected MaterialApplication $MaterialApplication; + public function handle() { @@ -39,6 +44,80 @@ class MaterialService extends BaseService{ return $this->return->success('success',$list); } + public function materialApplication(): array + { + $material_id = (int)$this->request->input('material_id'); + $dish_id = (int)$this->request->input('dish_id'); + $number = (int)$this->request->input('number'); + $processing = $this->request->input('processing'); + $status = MaterialCode::UN_AUDIT; + $city_id = (int)$this->request->input('city_id'); + $kitchen_id = (int)$this->request->input('kitchen_id'); + $materialApplication = new MaterialApplication(); + $materialApplication->material_id = $material_id; + $materialApplication->dish_id = $dish_id; + $materialApplication->num = $number; + $materialApplication->processing = $processing; + $materialApplication->status = $status; + $materialApplication->city_id = $city_id; + $materialApplication->kitchen_id = $kitchen_id; + $materialApplication->operator_id = $this->userId; + + if (!$materialApplication->save()) + throw new ErrException('申请失败'); + + return $this->return->success(); + } + + public function applicationEdit(): array + { + $id = (int)$this->request->input('id'); + $material_id = (int)$this->request->input('material_id'); + $dish_id = (int)$this->request->input('dish_id'); + $number = (int)$this->request->input('number'); + $processing = $this->request->input('processing'); + + $info = $this->MaterialApplication->getInfoById($id); + + if (!empty($material_id)){ + $info->material_id = $material_id; + } + if (!empty($dish_id)){ + $info->dish_id = $dish_id; + } + if (!empty($number)){ + $info->num = $number; + } + if (!empty($processing)){ + $info->processing = $processing; + } + $info->operator_id = $this->userId; + + if (!$info->save()) throw new ErrException('申请修改失败'); + + return $this->return->success(); + } + + public function applicationDelete(): array + { + $id = (int)$this->request->input('id'); + $info = $this->MaterialApplication->getInfoById($id); + $info->is_del = 2; + if ($info->status == MaterialCode::ALL_OUT) throw new ErrException("已全部出库"); + if (!$info->save()) throw new ErrException('申请删除失败'); + return $this->return->success(); + } + + public function applicationList(): array + { + $limit = (int)$this->request->input('limit', 10); + $list = $this->MaterialApplication + ->where('is_del',MaterialCode::IS_NO_DEL) + ->where('id', $this->userId) + ->paginate($limit)->toArray(); + + return $this->return->success('success',$list); + } } \ No newline at end of file diff --git a/sync/http/admin/auth.http b/sync/http/admin/auth.http index 10b301e..7a4c8d8 100644 --- a/sync/http/admin/auth.http +++ b/sync/http/admin/auth.http @@ -413,4 +413,28 @@ id=1&pre_quantity=300&price=12 ### 厨师查看排菜 GET {{host}}/api/dish/list?limit=10 content-type: application/json +Authorization: Bearer {{admin_token}} + +### 厨师申请材料 +POST {{host}}/api/material/application +Content-Type: application/x-www-form-urlencoded +Authorization: Bearer {{admin_token}} + +material_id=1&dish_id=1&number=50&city_id=1&kitchen_id=1 + +### 厨师修改申请材料 +POST {{host}}/api/material/application_edit +Content-Type: application/x-www-form-urlencoded +Authorization: Bearer {{admin_token}} + +id=1&material_id=1&dish_id=1&number=50&processing=切碎 + +### 厨师删除申请材料 +POST {{host}}/api/material/application_delete?id=1 +Content-Type: application/x-www-form-urlencoded +Authorization: Bearer {{admin_token}} + +### 个人申请材料列表 +GET {{host}}/api/material/application_list?limit=10 +content-type: application/json Authorization: Bearer {{admin_token}} \ No newline at end of file