NameRuleImport.php 2.4 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()->allowed()->where("id", $group)->first();
  18. throw_validation_if($namingRule==null, "Naming rule does not exist");
  19. $requestRule = new CreateOrUpdateRequest();
  20. $this->validatorByCollection($collection,$requestRule->importRules());
  21. $options=[];
  22. $inputs=[];
  23. $keys=[];
  24. //拿到每个key和对应的type去重key
  25. foreach ($collection as $item){
  26. $key = $item->get('key');
  27. $type = $item->get('type');
  28. if (!isset($seenKeys[$key])) {
  29. $keys[$key] = $type;
  30. $seenKeys[$key] = true;
  31. }
  32. }
  33. foreach ($keys as $key=>$value){
  34. //封装下拉列表或者文本
  35. foreach ($collection as $item){
  36. if($key == $item->get('key')){
  37. $type=$item->get('type');
  38. $langData=[
  39. 'en'=>$item->get('custom_key'),
  40. 'zh'=>null,
  41. ];
  42. $valueData = $item->get('custom_value');
  43. $remarkData = $item->get('remark');
  44. if($type==1){
  45. $inputs[] =new CustomOptions($langData,$valueData,$remarkData);
  46. }else{
  47. $options[] =new CustomOptions($langData,$valueData,$remarkData);
  48. }
  49. }
  50. }
  51. $formData=[
  52. 'global'=>0,
  53. 'group'=>$group,
  54. 'key'=>$key,
  55. 'type'=>$value,
  56. 'options'=>empty($options)?null:$options,
  57. 'required'=>0,
  58. 'inputs'=>empty($inputs)?null:$inputs,
  59. ];
  60. CustomField::query()->updateOrCreate([
  61. 'group' => $group,
  62. 'key' => $key,
  63. ], $formData);
  64. $options=[];
  65. $inputs=[];
  66. }
  67. }
  68. }