StoreImport.php 3.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104
  1. <?php
  2. namespace app\controller\merchant\store;
  3. use app\common\repositories\store\ExcelRepository;
  4. use app\common\repositories\store\order\StoreImportDeliveryRepository;
  5. use app\common\repositories\store\order\StoreOrderRepository;
  6. use ln\jobs\ImportSpreadsheetExcelJob;
  7. use ln\services\SpreadsheetExcelService;
  8. use ln\services\UploadService;
  9. use think\App;
  10. use ln\basic\BaseController;
  11. use app\common\repositories\store\order\StoreImportRepository;
  12. use think\facade\Queue;
  13. class StoreImport extends BaseController
  14. {
  15. protected $repository;
  16. /**
  17. * Product constructor.
  18. * @param App $app
  19. * @param StoreImportRepository $repository
  20. */
  21. public function __construct(App $app, StoreImportRepository $repository)
  22. {
  23. parent::__construct($app);
  24. $this->repository = $repository;
  25. }
  26. public function lst()
  27. {
  28. [$page, $limit] = $this->getPage();
  29. $where = $this->request->params(['status','date',['import_type','delivery'],'type']);
  30. $where['mer_id'] = $this->request->merId();
  31. $data = $this->repository->getList($where,$page,$limit);
  32. return app('json')->success($data);
  33. }
  34. public function detail($id)
  35. {
  36. $where = [
  37. 'import_id' => $id,
  38. 'mer_id' => $this->request->merId()
  39. ];
  40. [$page, $limit] = $this->getPage();
  41. $data = app()->make(StoreImportDeliveryRepository::class)->getList($where,$page, $limit);
  42. return app('json')->success($data);
  43. }
  44. public function export($id)
  45. {
  46. $where = [
  47. 'import_id' => $id,
  48. 'mer_id' => $this->request->merId()
  49. ];
  50. app()->make(ExcelRepository::class)->create($where,$this->request->adminId(),'importDelivery',$this->request->merId());
  51. return app('json')->success('开始生成数据,请去导出文件列表下载');
  52. }
  53. /**
  54. * TODO 导入excel信息
  55. * @return \think\response\Json
  56. * @author Qinii
  57. * @day 3/16/21
  58. */
  59. public function Import($type)
  60. {
  61. $file = $this->request->file('file');
  62. if (!$file) return app('json')->fail('请上传EXCEL文件');
  63. $file = is_array($file) ? $file[0] : $file;
  64. validate(["file|文件" => ['fileExt' => 'xlsx,xls',]])->check(['file' => $file]);
  65. $upload = UploadService::create(1);
  66. $ret = $upload->to('excel')->move('file');
  67. if ($ret === false) return app('json')->fail($upload->getError());
  68. $res = $upload->getUploadInfo();
  69. $data = [];
  70. switch ($type){
  71. case 'delivery' :
  72. SpreadsheetExcelService::instance()->checkImport(public_path().$res['dir'],['E3' => '物流单号']);
  73. $data = [
  74. 'mer_id' => $this->request->merId(),
  75. 'data' => [
  76. 'path' => public_path().$res['dir'],
  77. 'sql' => ['delivery_name' => 'D', 'delivery_id' => 'E',],
  78. 'where' => ['order_sn' => 'B',],
  79. ]
  80. ];
  81. break;
  82. }
  83. if(!empty($data)){
  84. $res = $this->repository->create($this->request->merId(),'delivery');
  85. $data['data']['import_id'] = $res->import_id;
  86. // app()->make(StoreOrderRepository::class)->setWhereDeliveryStatus($data['data'],$data['mer_id']);
  87. Queue::push(ImportSpreadsheetExcelJob::class,$data);
  88. return app('json')->success('开始导入数据,请稍后在批量发货记录中查看!');
  89. }
  90. return app('json')->fail('数据类型错误');
  91. }
  92. }