FarmerImporter.php 2.8 KB
<?php
/**
+-----------------------------------------------------------------------------------------------------------------------
 * 导入类 : 农民 导入 数据 操作类
+-----------------------------------------------------------------------------------------------------------------------
 *
 * PHP version 7
 *
 * @category  App\Admin\Extensions\Importer
 * @package   App\Admin\Extensions\Importer
 * @author    Richer <yangzi1028@163.com>
 * @date      2023年2月20日18:17:51
 * @copyright 2021-2022 Richer (http://www.Richer.com/)
 * @license   http://www.Richer.com/ License
 * @link      http://www.Richer.com/
 */
namespace App\Admin\Extensions\Importer;

use App\Models\User\User;
use Illuminate\Support\Arr;
use Illuminate\Support\Facades\DB;
use Maatwebsite\Excel\Concerns\ToCollection;
use Illuminate\Support\Collection;

/**
 * Class FarmerImporter
 *
 * @category  App\Admin\Extensions\Importer
 * @package   App\Admin\Extensions\Importer
 * @author    Richer <yangzi1028@163.com>
 * @date      2021年11月08日14:45:16
 * @copyright 2021-2022 Richer (http://www.Richer.com/)
 * @license   http://www.Richer.com/ License
 * @link      http://www.Richer.com/
 */
class FarmerImporter implements ToCollection
{
    /**
     * 使用 ToCollection
     * @param Collection $rows
     * @return User|null
     */
    public function collection(Collection $rows)
    {
        //如果需要去除表头
        unset($rows[0]);
        //$rows 是数组格式
        $this->createData($rows);
    }

    public function createData($rows)
    {
        $mobiles = [];
        $data =  $rows->map(function ($row) use (&$mobiles) {
            $name   = Arr::get($row, 1);
            $mobile = Arr::get($row, 2);
            $gender = Arr::get(array_flip(User::GENDER_ZH_OPTIONS), Arr::get($row, 3));
            $role = Arr::get(array_flip(User::FARMER_ROLE_OPTIONS), Arr::get($row, 4));
            $mobiles[] = $mobile;
            return [
                'name'          =>  $name,
                'mobile'        =>  $mobile,
                'gender'        =>  $gender,
                'role'          =>  $role ? : User::FARMER,
                'created_at'    =>  now()->toDateTimeString(),
            ];
        })->toArray();
        $data = array_values(array_filter($data));
        // 判断
        if ($mobiles) {
            // 查询已经存在的用户
//            $users = User::whereIn('mobile', $mobiles)->get()->each(function ($updates) {
//
//            });

            $user_mobiles = User::whereIn('mobile', $mobiles)->get()->pluck('mobile')->toArray();
            foreach ($data as $key => $item) {
                if (in_array($item['mobile'], $user_mobiles)) {
                    unset($data[$key]);
                }
            }
        }

        if ($data) {
            DB::table(User::TABLE)->insert($data);
        }
    }
}