123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384 |
- <?php
- namespace App\Admin\Repositories;
- use App\Models\BaseProductImage as Model;
- use Dcat\Admin\Repositories\EloquentRepository;
- use Carbon\Carbon;
- class BaseProductImage extends EloquentRepository
- {
- /**
- * Model.
- *
- * @var string
- */
- protected $eloquentClass = Model::class;
- public static function deleteByProductId($productId)
- {
- Model::where('product_id', $productId)->delete();
- }
- public static function saveProductImages($productId, $imageUrls)
- {
- if (empty($productId) || empty($imageUrl)) {
- return false;
- }
- // 准备数据集合
- $data = [];
- foreach ($imageUrls as $imageUrl) {
- $data[] = [
- 'product_id' => $productId,
- 'image_url' => $imageUrl,
- 'created_at' => Carbon::now(),
- 'updated_at' => Carbon::now(),
- ];
- }
- // 批量插入
- return Model::insert($data);
- }
- //格式化数据,用于多图上传
- public static function formatData($productId, $images)
- {
- $existingImages = Model::where('product_id', $productId)->get();
- // 用于存储结果的数组
- $result = [];
- // 处理条件1:如果数据在 base_product_image 中有,但在 $images 上无
- foreach ($existingImages as $existingImage) {
- if (!in_array($existingImage->image_url, $images)) {
- $result[] = [
- 'id' => $existingImage->id,
- 'image_url' => $existingImage->image_url,
- '_remove_' => 1,
- ];
- }
- }
- // 处理条件2:如果数据在 base_product_image 中无,但在 $images 有
- $i = 1;
- foreach ($images as $image) {
- $found = $existingImages->firstWhere('image_url', $image);
- if (!$found) {
- $result[] = [
- 'id' => 0,
- 'image_url' => $image,
- 'order' => $i,
- ];
- }
- //更新库中排序
- foreach ($existingImages as $existingImage) {
- if ($existingImage->image_url == $image) {
- $existingImage->order = $i;
- $existingImage->save();
- }
- }
- $i++;
- }
- return $result;
- }
- }
|