From 4c10e8ed71732f2ac7f7838332e99f99ca7cafe7 Mon Sep 17 00:00:00 2001 From: ctexthuang Date: Wed, 8 Jan 2025 11:28:08 +0800 Subject: [PATCH] feat: cycle --- app/Controller/Admin/GoodController.php | 65 ++++++++++++++++++++++++- app/Model/Cycle.php | 5 +- app/Request/Admin/GoodRequest.php | 4 ++ app/Service/Admin/Good/CycleService.php | 40 +++++++++++++++ app/Service/Admin/Good/SkuService.php | 35 +++++++++++-- 5 files changed, 140 insertions(+), 9 deletions(-) create mode 100644 app/Service/Admin/Good/CycleService.php diff --git a/app/Controller/Admin/GoodController.php b/app/Controller/Admin/GoodController.php index 67f51a6..7452c32 100644 --- a/app/Controller/Admin/GoodController.php +++ b/app/Controller/Admin/GoodController.php @@ -6,6 +6,7 @@ namespace App\Controller\Admin; use App\Middleware\Admin\JwtAuthMiddleware; use App\Request\Admin\GoodRequest; +use App\Service\Admin\Good\CycleService; use App\Service\Admin\Good\SkuService; use App\Service\Admin\Good\SpuService; use Exception; @@ -82,12 +83,74 @@ class GoodController } /** + * sku 添加 * @param GoodRequest $request + * @return array */ #[RequestMapping(path: "add_sku", methods: "POST")] #[Scene(scene: "add_sku")] - public function add_sku(GoodRequest $request) + public function addSku(GoodRequest $request) { return (new SkuService)->add(); } + + /** + * sku 修改 + * @param GoodRequest $request + * @return array + */ + #[RequestMapping(path: "edit_sku", methods: "POST")] + #[Scene(scene: "edit_sku")] + public function editSku(GoodRequest $request): array + { + return (new SkuService)->edit(); + } + + /** + * sku 删除 + * @param GoodRequest $request + * @return array + */ + #[RequestMapping(path: "del_sku", methods: "POST")] + #[Scene(scene: "del_sku")] + public function delSku(GoodRequest $request): array + { + return (new SkuService)->del(); + } + + /** + * sku 详情 + * @param GoodRequest $request + * @return array + */ + #[RequestMapping(path: "sku", methods: "POST")] + #[Scene(scene: "sku")] + public function sku(GoodRequest $request): array + { + return (new SkuService)->view(); + } + + /** + * sku 列表 + * @param GoodRequest $request + * @return array + */ + #[RequestMapping(path: "list_sku", methods: "POST")] + #[Scene(scene: "list_sku")] + public function skuList(GoodRequest $request): array + { + return (new SkuService)->handle(); + } + + /** + * cycle 列表 + * @param GoodRequest $request + * @return array + */ + #[RequestMapping(path: "list_cycle", methods: "POST")] + #[Scene(scene: "list_cycle")] + public function cycleList(GoodRequest $request): array + { + return (new CycleService)->handle(); + } } diff --git a/app/Model/Cycle.php b/app/Model/Cycle.php index e647c75..9015f05 100644 --- a/app/Model/Cycle.php +++ b/app/Model/Cycle.php @@ -9,8 +9,7 @@ use Hyperf\DbConnection\Model\Model; /** * @property int $id - * @property string $dates - * @property int $is_use + * @property string $dates * @property string $create_time */ class Cycle extends Model @@ -30,7 +29,7 @@ class Cycle extends Model /** * The attributes that should be cast to native types. */ - protected array $casts = ['id' => 'integer', 'is_use' => 'integer']; + protected array $casts = ['id' => 'integer']; const string CREATED_AT = 'create_time'; const null UPDATED_AT = null; diff --git a/app/Request/Admin/GoodRequest.php b/app/Request/Admin/GoodRequest.php index e4fd8b8..b7da05c 100644 --- a/app/Request/Admin/GoodRequest.php +++ b/app/Request/Admin/GoodRequest.php @@ -31,6 +31,10 @@ class GoodRequest extends FormRequest 'saleable' => 'required|integer|in:1,2', 'id' => 'required|integer', 'cycle_id' => 'required|integer|exists:cycle,id', + 'spu_id' => 'required|integer|exists:spu,id', + 'image_ids' => 'required|string', + 'stock' => 'required|integer', + 'price' => 'required|string', ]; } diff --git a/app/Service/Admin/Good/CycleService.php b/app/Service/Admin/Good/CycleService.php new file mode 100644 index 0000000..1c02bf2 --- /dev/null +++ b/app/Service/Admin/Good/CycleService.php @@ -0,0 +1,40 @@ +cycleModel->whereBetween('dates',[ + date('Y-m-d',strtotime('-10 day',time())), + date('Y-m-d',strtotime('+10 day',time())), + ])->orderBy('dates')->get(); + if (empty($arr)) return $this->return->success('success',['list' => []]); + + $arr = $arr->toArray(); + + return $this->return->success('success',['list' => $arr]); + } +} \ No newline at end of file diff --git a/app/Service/Admin/Good/SkuService.php b/app/Service/Admin/Good/SkuService.php index 4fe199a..829e930 100644 --- a/app/Service/Admin/Good/SkuService.php +++ b/app/Service/Admin/Good/SkuService.php @@ -27,9 +27,33 @@ class SkuService extends BaseService #[Inject] protected Sku $skuModel; - public function handle() + /** + * @return array + */ + public function handle(): array { - //todo Write logic + $limit = (int)$this->request->input('limit', 10); + $spuId = (int)$this->request->input('spu_id'); + + $list = $this->skuModel->where('spu_id',$spuId)->paginate($limit)->toArray(); + + $imageIdArr = array_column($list['data'],'image_ids'); + $imageIds = array_unique(explode(',',implode(',',$imageIdArr))); + $imageList = $this->getOssObjects($imageIds); + + foreach ($list['data'] as &$item) { + $imageOneArr = []; + foreach (explode(',',$item['image_ids']) as $imageId) { + $imageOneArr[] = [ + 'id' => $imageId, + 'url' => $imageList[$imageId]['url'] + ]; + } + + $item['image_list'] = $imageOneArr; + } + + return $this->return->success('success', ['list' => $list]); } /** @@ -93,7 +117,7 @@ class SkuService extends BaseService if ($skuInfo->order_num > 0 && $skuInfo->price != $this->request->input('price')) throw new ErrException('已有订单不可改价,退单后即可操作'); else $skuInfo->price = $this->request->input('price'); - $requestOssIds = $this->request->input('oss_ids'); + $requestOssIds = $this->request->input('image_ids'); $updateOssIds = array_diff(explode(',',$requestOssIds), explode(',',$skuInfo->image_ids)); $delOssIds = array_diff(explode(',',$skuInfo->image_ids), explode(',',$requestOssIds)); @@ -113,7 +137,8 @@ class SkuService extends BaseService if (!$skuInfo->save()) throw new ErrException('修改失败'); - if ($forceCleanStockCache == 1) return $this->return->success();//todo 修改缓存 + if ($forceCleanStockCache == 1) return $this->return->success(); + //todo 修改缓存 return $this->return->success(); } @@ -153,7 +178,7 @@ class SkuService extends BaseService $res = $skuInfo->toArray(); - $res['image_list'] = $imageList; + $res['image_list'] = array_values($imageList); return $this->return->success('success',$res); }