FarmerImporter.php
2.8 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
<?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);
}
}
}