NameRuleImport.php 2.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182
  1. <?php
  2. namespace App\Imports;
  3. use App\Http\Requests\API\CustomField\CreateOrUpdateRequest;
  4. use App\Models\CustomField;
  5. use App\Models\CustomOptions;
  6. use App\Models\NamingRule;
  7. use Illuminate\Support\Collection;
  8. use Illuminate\Support\Facades\Auth;
  9. use Maatwebsite\Excel\Concerns\ToCollection;
  10. use Maatwebsite\Excel\Concerns\WithHeadingRow;
  11. class NameRuleImport implements ToCollection, WithHeadingRow
  12. {
  13. use ImportValidatorHelper;
  14. public function collection(Collection $collection)
  15. {
  16. $group=request()->group;
  17. $namingRule = NamingRule::query()->where("company_id", Auth::user()->company_id)->where("id", $group)->first();
  18. if (! $namingRule) {
  19. return $this->forbidden('Naming rule does not exist');
  20. }
  21. $requestRule = new CreateOrUpdateRequest();
  22. $this->validatorByCollection($collection,$requestRule->importRules());
  23. $options=[];
  24. $inputs=[];
  25. $keys=[];
  26. //拿到每个key和对应的type去重key
  27. foreach ($collection as $item){
  28. $key = $item->get('key');
  29. $type = $item->get('type');
  30. if (!isset($seenKeys[$key])) {
  31. $keys[$key] = $type;
  32. $seenKeys[$key] = true;
  33. }
  34. }
  35. foreach ($keys as $key=>$value){
  36. //封装下拉列表或者文本
  37. foreach ($collection as $item){
  38. if($key == $item->get('key')){
  39. $type=$item->get('type');
  40. $langData=[
  41. 'en'=>$item->get('custom_key'),
  42. 'zh'=>null,
  43. ];
  44. $valueData = $item->get('custom_value');
  45. $remarkData = $item->get('remark');
  46. if($type==1){
  47. $inputs[] =new CustomOptions($langData,$valueData,$remarkData);
  48. }else{
  49. $options[] =new CustomOptions($langData,$valueData,$remarkData);
  50. }
  51. }
  52. }
  53. $formData=[
  54. 'global'=>0,
  55. 'group'=>$group,
  56. 'key'=>$key,
  57. 'type'=>$value,
  58. 'options'=>empty($options)?null:$options,
  59. 'required'=>0,
  60. 'inputs'=>empty($inputs)?null:$inputs,
  61. ];
  62. CustomField::query()->updateOrCreate([
  63. 'group' => $group,
  64. 'key' => $key,
  65. ], $formData);
  66. $options=[];
  67. $inputs=[];
  68. }
  69. }
  70. }