Excel.php 3.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192
  1. <?php namespace Place_order\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('source_detail', 'place_order')->select(['order_id' => $v['id']]);
  12. if ($detail) {
  13. if ($v['address_id']) {
  14. $address = Dever::load('address', 'place_user')->getInfo($v['address_id'], $v['uid']);
  15. $v['address'] = $address['full'];
  16. } else {
  17. $user = Dever::db('info', 'place_user')->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('delivery', 'sector')->columns(['type' => 1], 'name');
  42. $result['head'][0] = ['标识码', '订单号', '收货人', '规格', '数量', ['快递公司', $delivery], '快递单号'];
  43. }
  44. $result['body'] = [];
  45. if ($out) {
  46. return Dever::load('export', 'excel')->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::$data['muser']['id'];
  60. $mname = Dever::$data['muser']['name'];
  61. $mdesc = $mname . '在' . date('Y-m-d H:i:s') . '导入';
  62. $type = array_flip(Dever::db('info', 'place_source')->config['struct']['type']['value']);
  63. $result = $this->getTemplate(false, true);
  64. $file = Dever::load('view', 'upload')->local($file);
  65. $import = Dever::load('import', 'excel');
  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('source_detail', 'place_order')->find(['id' => $code]);
  70. if (!$detail) {
  71. continue;
  72. }
  73. $order = Dever::db('source', 'place_order')->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('source/delivery', 'place_order')->up($order['id'], $detail, $row['delivery_name'], $row['delivery_content'], 2, $muid);
  81. }
  82. return 'end';
  83. }
  84. }