Crmresimport.php 8.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168
  1. <?php
  2. namespace app\command;
  3. use think\console\Command;
  4. use think\console\input\Argument;
  5. use think\console\Input;
  6. use think\console\Output;
  7. use app\model\Customer;
  8. use app\model\CrmImportLog;
  9. use PhpOffice\PhpSpreadsheet\IOFactory;
  10. class Crmresimport extends Command
  11. {
  12. protected function configure()
  13. {
  14. $this->setName('crmresimport')
  15. ->addArgument('employee_id', Argument::OPTIONAL, "employee id")
  16. ->addArgument('root_id', Argument::OPTIONAL, "root id")
  17. ->addArgument('org_id', Argument::OPTIONAL, "org id")
  18. ->setDescription('crm resource import');
  19. }
  20. protected function execute(Input $input, Output $output)
  21. {
  22. $employee_id = $input->getArgument('employee_id');
  23. $root_id = $input->getArgument('root_id');
  24. $org_id = $input->getArgument('org_id');
  25. $fileExtendName = substr(strrchr($_FILES['file']["name"], '.'), 1);
  26. $filename = $_FILES['file']['tmp_name'];
  27. if ($fileExtendName == 'xlsx') {
  28. $objReader = IOFactory::createReader('Xlsx');
  29. } else {
  30. $objReader = IOFactory::createReader('Xls');
  31. }
  32. $objPHPExcel = $objReader->load($filename); //$filename可以是上传的表格,或者是指定的表格
  33. $sheet = $objPHPExcel->getSheet(0); //excel中的第一张sheet
  34. //$data = $sheet->toArray();
  35. //$highestRow = $sheet->getHighestRow();
  36. $highestRow = $sheet->getHighestDataRow();
  37. $highestColumn = $sheet->getHighestDataColumn();
  38. ///
  39. //// to make crm import log record
  40. $fileoriname = $_FILES['file']['name'];
  41. $log = new CrmImportLog();
  42. $insertData = [
  43. 'name' => $fileoriname . '-' . date('Y-m-d H:i:s', time()),
  44. 'employee_id' => $employee_id,
  45. 'org_id' => $root_id,
  46. 'count' => $highestRow - 1,
  47. 'left_num' => $highestRow - 1
  48. ];
  49. $log->save($insertData);
  50. ///
  51. $a = 0;
  52. $realnum = 0;
  53. $badphonenum = 0;
  54. for ($i = 2; $i <= $highestRow; $i++) {
  55. $rowData = $sheet->rangeToArray('A' . $i . ':' . $highestColumn . $i, NULL, TRUE, FALSE);
  56. if ($this->isEmptyRow(reset($rowData))) {
  57. continue;
  58. } else {
  59. $realnum++;
  60. } // skip empty row
  61. //$data[$a]['name'] = (string) $objPHPExcel->getActiveSheet()->getCell('A' . $i)->getValue();
  62. //$data[$a]['sex'] = (int) $objPHPExcel->getActiveSheet()->getCell('B' . $i)->getValue();
  63. //$data[$a]['level'] = (string) $objPHPExcel->getActiveSheet()->getCell('C' . $i)->getValue();
  64. //$data[$a]['tag'] = (string) $objPHPExcel->getActiveSheet()->getCell('D' . $i)->getValue();
  65. //$data[$a]['phone'] = (string) $objPHPExcel->getActiveSheet()->getCell('E' . $i)->getValue();
  66. //$data[$a]['email'] = (string) $objPHPExcel->getActiveSheet()->getCell('F' . $i)->getValue();
  67. //$data[$a]['from'] = (string) $objPHPExcel->getActiveSheet()->getCell('G' . $i)->getValue();
  68. //$data[$a]['enterprise'] = (string) $objPHPExcel->getActiveSheet()->getCell('H' . $i)->getValue();
  69. //$data[$a]['position'] = (string) $objPHPExcel->getActiveSheet()->getCell('I' . $i)->getValue();
  70. //$data[$a]['birthday'] = (string) $objPHPExcel->getActiveSheet()->getCell('J' . $i)->getValue();
  71. //$data[$a]['pcd'] = (string) $objPHPExcel->getActiveSheet()->getCell('K' . $i)->getValue();
  72. //$data[$a]['loc'] = (string) $objPHPExcel->getActiveSheet()->getCell('L' . $i)->getValue();
  73. //$data[$a]['desc'] = (string) $objPHPExcel->getActiveSheet()->getCell('M' . $i)->getValue();
  74. //$data[$a]['age'] = (string) $objPHPExcel->getActiveSheet()->getCell('N' . $i)->getValue();
  75. //$data[$a]['nation'] = (string) $objPHPExcel->getActiveSheet()->getCell('O' . $i)->getValue();
  76. //$data[$a]['citizenship'] = (string) $objPHPExcel->getActiveSheet()->getCell('P' . $i)->getValue();
  77. //$data[$a]['grade'] = (string) $objPHPExcel->getActiveSheet()->getCell('Q' . $i)->getValue();
  78. //$data[$a]['major'] = (string) $objPHPExcel->getActiveSheet()->getCell('R' . $i)->getValue();
  79. //$data[$a]['idcode'] = (string) $objPHPExcel->getActiveSheet()->getCell('S' . $i)->getValue();
  80. //$data[$a]['wx'] = (string) $objPHPExcel->getActiveSheet()->getCell('T' . $i)->getValue();
  81. //$data[$a]['qq'] = (string) $objPHPExcel->getActiveSheet()->getCell('U' . $i)->getValue();
  82. //$data[$a]['community_name'] = (string) $objPHPExcel->getActiveSheet()->getCell('V' . $i)->getValue();
  83. //$data[$a]['building_unit'] = (string) $objPHPExcel->getActiveSheet()->getCell('W' . $i)->getValue();
  84. //$data[$a]['house_delivery_time'] = (string) $objPHPExcel->getActiveSheet()->getCell('X' . $i)->getValue();
  85. //$data[$a]['square'] = (string) $objPHPExcel->getActiveSheet()->getCell('Y' . $i)->getValue();
  86. //$data[$a]['phone_two'] = (string) $objPHPExcel->getActiveSheet()->getCell('Z' . $i)->getValue();
  87. $data[$a]['name'] = (string) $objPHPExcel->getActiveSheet()->getCell('A' . $i)->getValue();
  88. $data[$a]['sex'] = (string) $objPHPExcel->getActiveSheet()->getCell('B' . $i)->getValue();
  89. $data[$a]['phone'] = (string) $objPHPExcel->getActiveSheet()->getCell('C' . $i)->getValue();
  90. $data[$a]['level'] = (string) $objPHPExcel->getActiveSheet()->getCell('D' . $i)->getValue();
  91. $data[$a]['community_name'] = (string) $objPHPExcel->getActiveSheet()->getCell('E' . $i)->getValue();
  92. $data[$a]['square'] = (int) $objPHPExcel->getActiveSheet()->getCell('F' . $i)->getValue();
  93. $data[$a]['house_type'] = (string) $objPHPExcel->getActiveSheet()->getCell('G' . $i)->getValue();
  94. $data[$a]['loc'] = (string) $objPHPExcel->getActiveSheet()->getCell('H' . $i)->getValue();
  95. $data[$a]['from'] = (string) $objPHPExcel->getActiveSheet()->getCell('I' . $i)->getValue();
  96. $data[$a]['focus'] = (string) $objPHPExcel->getActiveSheet()->getCell('J' . $i)->getValue();
  97. $data[$a]['house_delivery_time'] = (string) $objPHPExcel->getActiveSheet()->getCell('K' . $i)->getValue();
  98. $data[$a]['age'] = (string) $objPHPExcel->getActiveSheet()->getCell('L' . $i)->getValue();
  99. //$data[$a]['wx'] = (string) $objPHPExcel->getActiveSheet()->getCell('M' . $i)->getValue();
  100. //$data[$a]['qq'] = (string) $objPHPExcel->getActiveSheet()->getCell('N' . $i)->getValue();
  101. $data[$a]['apply_time'] = (string) $objPHPExcel->getActiveSheet()->getCell('M' . $i)->getValue();
  102. $t = [
  103. 'phone' => cypherphone($data[$a]['phone']),
  104. 'name' => $data[$a]['name'],
  105. 'level' => $data[$a]['level'],
  106. 'state' => '待确认',
  107. 'community_name' => $data[$a]['community_name'],
  108. 'house_type' => $data[$a]['house_type'],
  109. 'house_delivery_time' => $data[$a]['house_delivery_time'],
  110. //'plan_deco_time' => $data[$a]['plan_deco_time'],
  111. 'square' => $data[$a]['square'],
  112. //'deco_style' => $data[$a]['deco_style'],
  113. //'budget' => $data[$a]['budget'],
  114. 'sex' => ($data[$a]['sex'] == '男') ? 1 : 2,
  115. 'org_id' => $root_id,
  116. 'crm_res_id' => $log->id,
  117. 'is_resource' => 1,
  118. 'bad_phone' => ($this->checkphone($data[$a]['phone'])) ? 0 : 1
  119. ];
  120. $obj = new Customer();
  121. $obj->insert($t);
  122. if (!$this->checkphone($data[$a]['phone'])) {
  123. $badphonenum++;
  124. }
  125. }
  126. ////
  127. $avaliable_count = $realnum - $badphonenum;
  128. $updateData = [
  129. 'count' => $realnum,
  130. 'avaliable_count' => $avaliable_count,
  131. 'bad_phone_num' => $badphonenum,
  132. 'left_num' => $avaliable_count
  133. ];
  134. $log->save($updateData);
  135. $output->writeln("true");
  136. }
  137. private function isEmptyRow($row)
  138. {
  139. foreach ($row as $cell) {
  140. if (null !== $cell) return false;
  141. }
  142. return true;
  143. }
  144. private function checkphone($value)
  145. {
  146. if (preg_match("/^1[356789]\d{9}$/", $value)) {
  147. return true;
  148. } else {
  149. return false;
  150. }
  151. }
  152. }