CrmRemove.php 3.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111
  1. <?php
  2. namespace app\sys\controller;
  3. use think\facade\View;
  4. use think\facade\Db;
  5. use PhpOffice\PhpSpreadsheet\IOFactory;
  6. use app\BaseController;
  7. use app\model\Company;
  8. use app\model\CrmRemoveCustomer;
  9. use app\model\CrmRemoveImportLog;
  10. use app\model\CrmRemoveRecord;
  11. use app\model\Customer;
  12. use app\model\CustomerInvalidLog;
  13. use app\model\CustomerPortraitField;
  14. use app\model\CustomerSource;
  15. use app\model\Employee;
  16. use app\model\CustomerVisitLog;
  17. use cutExcel\MyreadFilter;
  18. use PHPExcel_Shared_Date;
  19. use think\facade\Queue;
  20. use think\facade\Request;
  21. use toolkits\Aec;
  22. /**
  23. * 其他平台客户迁移导入功能
  24. */
  25. class CrmRemove extends BaseController
  26. {
  27. /*--------- composer require phpoffice/phpspreadsheet -------------*/
  28. public function importing()
  29. {
  30. if (request()->isAjax()) {
  31. $list = CrmRemoveImportLog::where('root_id', '=', request()->employee->root_id)->order('addtime desc')->select()->toArray();
  32. return json(['code'=> 0, 'data'=> $list, 'msg'=> 'success']);
  33. } else {
  34. return View::fetch();
  35. }
  36. }
  37. /**
  38. * 导入前日志存储
  39. */
  40. public function importLog()
  41. {
  42. $file = request()->file('file');
  43. $root_id = request()->employee->root_id;
  44. if (empty($file)) {
  45. return json(['code' => 1, 'msg' => '请上传导入文件', 'data' => []]);
  46. }
  47. $log['employee_id'] = request()->employee->id;
  48. $log['name'] = $file->getOriginalName();
  49. $log['count'] = 0;
  50. $log['avaliable_count'] = 0;
  51. $log['bad_phone_num'] = 0;
  52. $log['repeat_phone_number'] = 0;
  53. $log['status'] = 0;
  54. $log['root_id'] = $root_id;
  55. $log['path'] = Request::param('file');
  56. $log['execute_rows'] = 0;
  57. $log_id = CrmRemoveImportLog::insertGetId($log);
  58. return json(['code' => 0, 'msg' => '上传成功', 'data' => $log_id]);
  59. }
  60. /**
  61. * 导入
  62. */
  63. public function add() {
  64. $log_id = input('log_id', '', 'intval');
  65. $root_id = request()->employee['root_id'];
  66. $log = CrmRemoveImportLog::find($log_id);
  67. if (empty($log)) {
  68. return json(['code'=> 1, 'msg'=> '文件不存在']);
  69. }
  70. if ($root_id != $log['root_id']) {
  71. return json(['code'=> 1, 'msg'=> '导入失败']);
  72. }
  73. $ali_oss_bindurl = config('app.ali_oss_bindurl');
  74. $path = 'https://' . $ali_oss_bindurl . '/' . $log['path'];
  75. // 抓取远程Excel文件的内容
  76. try {
  77. $content = file_get_contents($path);
  78. if (!$content) {
  79. return json(['code'=> 1, 'msg'=> '文件不存在']);
  80. }
  81. } catch (\Exception $e) {
  82. return json(['code'=> 1, 'msg'=> '文件不存在']);
  83. }
  84. if ($log['status'] == 0) {
  85. $log->status = 1;
  86. $log->save();
  87. $jobHandlerClassName = 'app\jobs\CrmRemove';
  88. $jobQueueName = 'crm_remove';
  89. $orderData = ['id'=> $log_id]; //这个是需要传到消费者的数据
  90. Queue::later(0, $jobHandlerClassName, $orderData, $jobQueueName);
  91. }
  92. return json(['code' => 0, 'msg' => '上传中,请手动刷新结果']);
  93. }
  94. }
  95. ?>