DataHandlerService.php 3.1 KB

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