DataHandlerService.php 3.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091
  1. <?php
  2. namespace App\Services\common;
  3. use App\Traits\ServiceAppAop;
  4. class DataHandlerService
  5. {
  6. use ServiceAppAop;
  7. protected $modelClass=DataHandler::class;
  8. public function dataHeader(array $mapKeys= [], $resultData =[]){
  9. $handlerData = [];
  10. $handlerData['mapkey'] = $mapKeys;
  11. if(!$resultData){return $handlerData;}
  12. foreach ($resultData as $data) {
  13. $key = $this->getKey($mapKeys,$data);
  14. $handlerData[$key] = $data;
  15. }
  16. return $handlerData;
  17. }
  18. /**
  19. * 只支持三层的寻找
  20. * @param array $mapKeyArr
  21. * @param array $resultData
  22. */
  23. public function dataHeaders(array $mapKeyArr = [], $resultData =[]){
  24. $handlerData_list = [];
  25. $level_1_key = $mapKeyArr[0][0] ?? false; unset($mapKeyArr[0][0]);
  26. $level_2_key = $mapKeyArr[1][0] ?? false; unset($mapKeyArr[1][0]);
  27. $level_3_key = $mapKeyArr[2][0] ?? false; unset($mapKeyArr[2][0]);
  28. $level_1_keys =$mapKeyArr[0] ?? false;
  29. $level_2_keys =$mapKeyArr[1] ?? false;
  30. $level_3_keys =$mapKeyArr[2] ?? false;
  31. if($level_1_key || $level_1_key==''){
  32. foreach ($resultData as $level_1_data) {
  33. if(!$level_1_keys){continue;}
  34. $key = $this->getKey($level_1_keys,$level_1_data);
  35. if($level_1_key==''){
  36. $level_2_data_list = $level_1_data;
  37. }else{
  38. $level_2_data_list = $level_1_data[$level_1_key];
  39. }
  40. if($level_2_key || $level_2_key==''){
  41. if(!$level_2_keys){continue;}
  42. foreach ($level_2_data_list as $level_2_data) {
  43. $key .= $this->getKey($level_2_keys, $level_2_data);
  44. $level_3_data_list = $level_2_data[$level_1_key];
  45. if ($level_3_key || $level_3_key=='') {
  46. if (!$level_3_keys) {
  47. continue;
  48. }
  49. foreach ($level_3_data_list as $level_3_data) {
  50. $key .= $this->getKey($level_3_keys, $level_3_data);
  51. $handlerData_list[$key] =$level_3_data;
  52. }
  53. }else{
  54. $handlerData_list[$key] =$level_2_data;
  55. }
  56. }
  57. }else{
  58. $handlerData_list[$key] =$level_1_data;
  59. }
  60. }
  61. }
  62. $handlerData['mapkey'] = array_merge($level_1_keys,$level_2_keys ?? [],$level_3_keys ?? []);
  63. return $handlerData_list ?? null;
  64. }
  65. private function getKey($keys,$object){
  66. $mapKey = '';
  67. foreach ($keys as $key){
  68. $mapKey .= $key.'='.$object[$key];
  69. }
  70. return $mapKey;
  71. }
  72. public function getKeyValue($keyValues,&$data){
  73. $mapkeys = $data['mapkey'];
  74. $key = '';
  75. if(!$data){return null;}
  76. foreach ($mapkeys as $mapkey) {
  77. $key .=$mapkey.'='.$keyValues[$mapkey];
  78. }
  79. return $data[$key] ?? null;
  80. }
  81. }