12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394 |
- <?php namespace Porder\Manage\Lib;
- use Dever;
- use Dever\Helper\Secure;
- class Excel
- {
- # 导出资源订单
- public function outSource($data)
- {
- $result = $this->getTemplate();
- foreach ($data['body'] as $k => $v) {
- $detail = Dever::db('porder/source_detail')->select(['order_id' => $v['id']]);
- if ($detail) {
- if ($v['address_id']) {
- $address = Dever::load(\Puser\Lib\Address::class)->getInfo($v['address_id'], $v['uid']);
- $v['address'] = $address['full'];
- } else {
- $user = Dever::db('puser/info')->find($v['uid']);
- $v['address'] = $user['name'] . ',' . $user['mobile'];
- }
- $s = [0, $v['order_num'], $v['address']];
- foreach ($detail as $v1) {
- $s[0] = Secure::encode($v1['id']);
- $s[] = $v1['name'] . '-' . $v1['sku_name'];
- $s[] = $v1['num'];
- $result['body'][] = $s;
- }
- }
- }
- $result['file'] = '111';
- return $result;
- }
- # 导出一个模板出来
- public function getTemplate($out = false, $import = false)
- {
- $result = [];
- if ($import) {
- # 导入时的字段,一定要和下面的else里的对应
- $result['head'][0] = ['detail_code', 'order_num', 'address', 'sku', 'num', 'delivery_name', 'delivery_content'];
- } else {
- # 这是导入时的模板
- $delivery = Dever::db('sector/delivery')->columns(['type' => 1], 'name');
- $result['head'][0] = ['标识码', '订单号', '收货人', '规格', '数量', ['快递公司', $delivery], '快递单号'];
- }
- $result['body'] = [];
- if ($out) {
- return Dever::load(\Excel\Lib\Export::class)->act($result['body'], $result['head'], '发货单导入模板');
- }
- return $result;
- }
- # 导入
- public function import_commit(){}
- public function import($db, $data)
- {
- if (empty($data['import'])) {
- Dever::error('请选择导入文件');
- }
- $file = $data['import'];
- # 当前登录的管理员id
- $muid = Dever::getData('muser')['id'];
- $mname = Dever::getData('muser')['name'];
- $mdesc = $mname . '在' . date('Y-m-d H:i:s') . '导入';
- $type = array_flip(Dever::db('psource/info')->config['struct']['type']['value']);
- $result = $this->getTemplate(false, true);
- $file = Dever::load(\Upload\Lib\View::class)->local($file);
- $import = Dever::load(\Excel\Lib\Import::class);
- $i = 0;
- foreach ($import->act($file, 0, 1, $result['head'][0]) as $row) {
- $code = Secure::decode($row['detail_code']);
- $detail = Dever::db('porder/source_detail')->find(['id' => $code]);
- if (!$detail) {
- continue;
- }
- $order = Dever::db('porder/source')->find(['id' => $detail['order_id']]);
- if (!$order) {
- continue;
- }
- if ($order['order_num'] != $row['order_num']) {
- continue;
- }
- Dever::load(\Porder\Lib\Source\Delivery::class)->up($order['id'], $detail, $row['delivery_name'], $row['delivery_content'], 2, $muid);
-
- }
- @unlink($file);
- return 'end';
- }
- }
|