Excel.php 3.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394
  1. <?php namespace Porder\Manage\Lib;
  2. use Dever;
  3. use Dever\Helper\Secure;
  4. class Excel
  5. {
  6. # 导出资源订单
  7. public function outSource($data)
  8. {
  9. $result = $this->getTemplate();
  10. foreach ($data['body'] as $k => $v) {
  11. $detail = Dever::db('porder/source_detail')->select(['order_id' => $v['id']]);
  12. if ($detail) {
  13. if ($v['address_id']) {
  14. $address = Dever::load(\Puser\Lib\Address::class)->getInfo($v['address_id'], $v['uid']);
  15. $v['address'] = $address['full'];
  16. } else {
  17. $user = Dever::db('puser/info')->find($v['uid']);
  18. $v['address'] = $user['name'] . ',' . $user['mobile'];
  19. }
  20. $s = [0, $v['order_num'], $v['address']];
  21. foreach ($detail as $v1) {
  22. $s[0] = Secure::encode($v1['id']);
  23. $s[] = $v1['name'] . '-' . $v1['sku_name'];
  24. $s[] = $v1['num'];
  25. $result['body'][] = $s;
  26. }
  27. }
  28. }
  29. $result['file'] = '111';
  30. return $result;
  31. }
  32. # 导出一个模板出来
  33. public function getTemplate($out = false, $import = false)
  34. {
  35. $result = [];
  36. if ($import) {
  37. # 导入时的字段,一定要和下面的else里的对应
  38. $result['head'][0] = ['detail_code', 'order_num', 'address', 'sku', 'num', 'delivery_name', 'delivery_content'];
  39. } else {
  40. # 这是导入时的模板
  41. $delivery = Dever::db('sector/delivery')->columns(['type' => 1], 'name');
  42. $result['head'][0] = ['标识码', '订单号', '收货人', '规格', '数量', ['快递公司', $delivery], '快递单号'];
  43. }
  44. $result['body'] = [];
  45. if ($out) {
  46. return Dever::load(\Excel\Lib\Export::class)->act($result['body'], $result['head'], '发货单导入模板');
  47. }
  48. return $result;
  49. }
  50. # 导入
  51. public function import_commit(){}
  52. public function import($db, $data)
  53. {
  54. if (empty($data['import'])) {
  55. Dever::error('请选择导入文件');
  56. }
  57. $file = $data['import'];
  58. # 当前登录的管理员id
  59. $muid = Dever::getData('muser')['id'];
  60. $mname = Dever::getData('muser')['name'];
  61. $mdesc = $mname . '在' . date('Y-m-d H:i:s') . '导入';
  62. $type = array_flip(Dever::db('psource/info')->config['struct']['type']['value']);
  63. $result = $this->getTemplate(false, true);
  64. $file = Dever::load(\Upload\Lib\View::class)->local($file);
  65. $import = Dever::load(\Excel\Lib\Import::class);
  66. $i = 0;
  67. foreach ($import->act($file, 0, 1, $result['head'][0]) as $row) {
  68. $code = Secure::decode($row['detail_code']);
  69. $detail = Dever::db('porder/source_detail')->find(['id' => $code]);
  70. if (!$detail) {
  71. continue;
  72. }
  73. $order = Dever::db('porder/source')->find(['id' => $detail['order_id']]);
  74. if (!$order) {
  75. continue;
  76. }
  77. if ($order['order_num'] != $row['order_num']) {
  78. continue;
  79. }
  80. Dever::load(\Porder\Lib\Source\Delivery::class)->up($order['id'], $detail, $row['delivery_name'], $row['delivery_content'], 2, $muid);
  81. }
  82. @unlink($file);
  83. return 'end';
  84. }
  85. }