OrderExport0424.php 27 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748
  1. <?php
  2. /**
  3. * Niushop商城系统 - 团队十年电商经验汇集巨献!
  4. * =========================================================
  5. * Copy right 2019-2029 杭州牛之云科技有限公司, 保留所有权利。
  6. * ----------------------------------------------
  7. * 官方网址: https://www.niushop.com
  8. * =========================================================
  9. */
  10. namespace app\model\order;
  11. use app\model\BaseModel;
  12. use think\facade\Db;
  13. /**
  14. * 订单导出
  15. * @author Administrator
  16. */
  17. class OrderExport extends BaseModel
  18. {
  19. public $order_field = [
  20. 'order_no' => '订单编号',
  21. 'site_name' => '店铺名称',
  22. 'order_name' => '订单内容',
  23. 'order_from_name' => '订单来源',
  24. 'order_type_name' => '订单类型',
  25. 'order_promotion_name' => '营销活动类型',
  26. 'out_trade_no' => '支付流水号',
  27. 'out_trade_no_2' => '支付流水号(多次支付)',
  28. 'delivery_code' => '整体提货编码',
  29. 'order_status_name' => '订单状态',
  30. 'pay_status' => '支付状态',
  31. 'delivery_status' => '配送状态',
  32. 'pay_type_name' => '支付方式',
  33. 'delivery_type_name' => '配送方式',
  34. 'nickname' => '购买人',
  35. 'name' => '客户姓名',
  36. 'mobile' => '客户手机',
  37. 'telephone' => '客户固定电话',
  38. 'province_name' => '省',
  39. 'city_name' => '市',
  40. 'district_name' => '县',
  41. 'full_address' => '详细地址',
  42. 'buyer_ip' => '客户ip',
  43. 'buyer_ask_delivery_time' => '客户要求配送时间',
  44. 'buyer_message' => '客户留言信息',
  45. 'goods_money' => '商品总金额',
  46. 'delivery_money' => '配送费用',
  47. 'promotion_money' => '订单优惠金额',
  48. 'coupon_money' => '优惠券金额',
  49. 'order_money' => '订单合计金额',
  50. 'adjust_money' => '订单调整金额',
  51. 'balance_money' => '余额支付金额',
  52. 'pay_money' => '抵扣之后应付金额',
  53. 'refund_money' => '订单退款金额',
  54. 'pay_time' => '支付时间',
  55. 'delivery_time' => '配送时间',
  56. 'sign_time' => '签收时间',
  57. 'finish_time' => '完成时间',
  58. 'remark' => '卖家留言',
  59. 'goods_num' => '商品件数',
  60. 'delivery_status_name' => '发货状态',
  61. 'is_settlement' => '是否进行结算',
  62. 'delivery_store_name' => '门店名称',
  63. 'promotion_type_name' => '营销类型',
  64. 'form_data' => '表单数据'
  65. ];
  66. //订单商品信息
  67. public $order_goods_field = [
  68. 'sku_name' => '商品名称',
  69. 'sku_no' => '商品编码',
  70. 'goods_class_name' => '商品类型',
  71. 'price' => '商品卖价',
  72. 'cost_price' => '成本价',
  73. 'num' => '购买数量',
  74. 'goods_money' => '商品总价',
  75. 'cost_money' => '成本总价',
  76. 'delivery_status_name' => '配送状态',
  77. 'delivery_no' => '配送单号',
  78. 'refund_status_name' => '退款状态',
  79. 'refund_no' => '退款编号',
  80. 'refund_type' => '退货方式',
  81. 'refund_apply_money' => '退款申请金额',
  82. 'refund_reason' => '退款原因',
  83. 'refund_real_money' => '实际退款金额',
  84. 'refund_delivery_name' => '退款公司名称',
  85. 'refund_delivery_no' => '退款单号',
  86. 'refund_time' => '实际退款时间',
  87. 'refund_refuse_reason' => '退款拒绝原因',
  88. 'refund_action_time' => '申请退款时间',
  89. 'real_goods_money' => '实际商品购买价',
  90. 'refund_remark' => '退款说明',
  91. 'refund_delivery_remark' => '买家退货说明',
  92. 'refund_address' => '退货地址',
  93. 'is_refund_stock' => '是否返还库存',
  94. 'form_data' => '表单数据'
  95. ];
  96. public $define_data = [
  97. 'pay_status' => [ 'type' => 2, 'data' => [ '未支付', '已支付' ] ],//支付状态
  98. 'delivery_status' => [ 'type' => 2, 'data' => [ '待发货', '已发货', '已收货' ] ],//配送状态
  99. 'refund_status' => [ 'type' => 2, 'data' => [ '未退款', '已退款' ] ],//退款状态
  100. // 'buyer_ask_delivery_time' => [ 'type' => 1 ],//购买人要求配送时间
  101. 'pay_time' => [ 'type' => 1 ],//支付时间
  102. 'delivery_time' => [ 'type' => 1 ],//订单配送时间
  103. 'sign_time' => [ 'type' => 1 ],//订单签收时间
  104. 'finish_time' => [ 'type' => 1 ],//订单完成时间
  105. 'refund_time' => [ 'type' => 1 ],//退款到账时间
  106. 'refund_action_time' => [ 'type' => 1 ],//实际退款时间
  107. 'is_settlement' => [ 'type' => 2, 'data' => [ '否', '是' ] ],//是否进行结算
  108. 'refund_type' => [ 'type' => 2, 'data' => [ 1 => '仅退款', 2 => '退款退货' ] ],//退货方式
  109. 'is_refund_stock' => [ 'type' => 2, 'data' => [ '否', '是' ] ],//是否返还库存
  110. 'form_data' => [ 'type' => 3 ],//表单数据
  111. ];
  112. /**
  113. * 数据处理
  114. * @param $data
  115. * @param $field
  116. * @return array
  117. */
  118. public function handleData($data, $field)
  119. {
  120. $define_data = $this->define_data;
  121. foreach ($data as $k => $v) {
  122. //获取键
  123. $keys = array_keys($v);
  124. foreach ($keys as $key) {
  125. if (in_array($key, $field)) {
  126. if (array_key_exists($key, $define_data)) {
  127. $type = $define_data[ $key ][ 'type' ];
  128. switch ( $type ) {
  129. case 1:
  130. $data[ $k ][ $key ] = time_to_date((int) $v[ $key ]);
  131. break;
  132. case 2:
  133. $define_data_data = $define_data[ $key ][ 'data' ];
  134. $data[ $k ][ $key ] = !empty($v[ $key ]) ? $define_data_data[ $v[ $key ] ] : '';
  135. break;
  136. case 3:
  137. if (!empty($v[ $key ])) {
  138. $form_data = json_decode($v[ $key ], true);
  139. $form_content = '';
  140. if (is_array($form_data)) {
  141. foreach ($form_data as $item) {
  142. $form_content .= $item[ 'value' ][ 'title' ] . ':' . $item[ 'val' ] . ' ';
  143. }
  144. }
  145. $data[ $k ][ $key ] = $form_content;
  146. }
  147. break;
  148. }
  149. }
  150. }
  151. }
  152. }
  153. return $data;
  154. }
  155. /**
  156. * 查询订单项数据并导出
  157. * @param $condition
  158. * @param $condition_desc
  159. * @param $site_id
  160. * @param $join
  161. * @param $is_verify
  162. * @param $order_label
  163. * @return array
  164. */
  165. public function orderExport($condition, $condition_desc, $site_id, $join, $is_verify, $order_label)
  166. {
  167. try {
  168. //预先创建导出的记录
  169. $data = array (
  170. 'condition' => json_encode($condition_desc),
  171. 'create_time' => time(),
  172. 'type' => 1,//订单
  173. 'status' => 0,
  174. 'site_id' => $site_id
  175. );
  176. $records_result = $this->addExport($data);
  177. $export_id = $records_result[ 'data' ] ?? 0;
  178. if ($export_id <= 0) {
  179. return $this->error();
  180. }
  181. $alias = 'o';
  182. $field = $this->order_field;
  183. //通过分批次执行数据导出(防止内存超出配置设置的)
  184. set_time_limit(0);
  185. $file_name = date('YmdHis');//csv文件名
  186. $file_path = 'upload/order_csv/';
  187. if (dir_mkdir($file_path)) {
  188. $file_path = $file_path . $file_name . '.csv';
  189. //创建一个临时csv文件
  190. $fp = fopen($file_path, 'w'); //生成临时文件
  191. fwrite($fp, chr(0xEF) . chr(0xBB) . chr(0xBF)); // 添加 BOM
  192. $field_value = [];
  193. $field_key = [];
  194. $field_key_array = [];
  195. //为了防止部分代码被筛选中替换, 给变量前后两边增加字符串
  196. foreach ($field as $k => $v) {
  197. $field_value[] = $v;
  198. $field_key[] = "{\$$k}";
  199. $field_key_array[] = $k;
  200. }
  201. $table_field = implode(',', $field_key_array);
  202. $order_table = Db::name('order')->where($condition)->alias($alias);
  203. if (!empty($join) || $is_verify != "all") {
  204. if (!empty($join) && $is_verify == "all") {
  205. $join = [
  206. [
  207. 'order_goods og',
  208. 'o.order_id = og.order_id',
  209. 'left'
  210. ],
  211. ];
  212. } else if ($is_verify != "all" && empty($join)) {
  213. $join = [
  214. [
  215. 'verify v',
  216. 'v.verify_code = o.virtual_code',
  217. 'left'
  218. ],
  219. ];
  220. } else {
  221. $join = [
  222. [
  223. 'order_goods og',
  224. 'o.order_id = og.order_id',
  225. 'left'
  226. ],
  227. [
  228. 'verify v',
  229. 'v.verify_code = o.virtual_code',
  230. 'left'
  231. ]
  232. ];
  233. }
  234. }
  235. $join[] = [
  236. 'member m',
  237. 'm.member_id = o.member_id',
  238. 'left'
  239. ];
  240. $join[] = [
  241. 'form_data fm',
  242. "fm.relation_id = o.order_id and scene = 'order'",
  243. 'left'
  244. ];
  245. $order_table = $this->parseJoin($order_table, $join);
  246. $first_line = implode(',', $field_value);
  247. //写入第一行表头
  248. fwrite($fp, $first_line . "\n");
  249. $temp_line = implode(',', $field_key) . "\n";
  250. $table_field = 'o.*,m.nickname,fm.form_data';
  251. $order_table->field($table_field)->chunk(5000, function($item_list) use ($fp, $temp_line, $field_key_array) {
  252. //写入导出信息
  253. $this->itemExport($item_list, $field_key_array, $temp_line, $fp);
  254. unset($item_list);
  255. }, 'o.order_id');
  256. $order_table->removeOption();
  257. fclose($fp); //每生成一个文件关闭
  258. unset($order_table);
  259. //将同步导出记录状态
  260. $records_data = array (
  261. 'path' => $file_path,
  262. 'status' => 1
  263. );
  264. $records_condition = array (
  265. [ 'export_id', '=', $export_id ]
  266. );
  267. $this->editExport($records_data, $records_condition);
  268. return $this->success();
  269. } else {
  270. return $this->error();
  271. }
  272. } catch (\Exception $e) {
  273. return $this->error([], $e->getMessage() . $e->getFile() . $e->getLine());
  274. }
  275. }
  276. /**
  277. * 查询订单项数据并导出
  278. * @param $condition
  279. * @param $condition_desc
  280. * @param $site_id
  281. * @param $is_verify
  282. * @param $order_label
  283. * @return array
  284. */
  285. public function orderGoodsExport($condition, $condition_desc, $site_id, $is_verify, $order_label)
  286. {
  287. try {
  288. //预先创建导出的记录
  289. $data = array (
  290. 'condition' => json_encode($condition_desc),
  291. 'create_time' => time(),
  292. 'type' => 2,//订单项
  293. 'status' => 0,
  294. 'site_id' => $site_id
  295. );
  296. $records_result = $this->addExport($data);
  297. $export_id = $records_result[ 'data' ] ?? 0;
  298. if ($export_id <= 0) {
  299. return $this->error();
  300. }
  301. $alias = 'og';
  302. $join = [
  303. [
  304. 'order o',
  305. 'o.order_id = og.order_id',
  306. 'left'
  307. ]
  308. ];
  309. if ($is_verify != "all") {
  310. $join = [
  311. [
  312. 'order o',
  313. 'o.order_id = og.order_id',
  314. 'left'
  315. ],
  316. [
  317. 'verify v',
  318. 'v.verify_code = o.virtual_code',
  319. 'left'
  320. ]
  321. ];
  322. }
  323. $join[] = [
  324. 'member m',
  325. 'm.member_id = og.member_id',
  326. 'left'
  327. ];
  328. $join[] = [
  329. 'form_data fm',
  330. "fm.relation_id = og.order_goods_id and scene = 'goods'",
  331. 'left'
  332. ];
  333. $order_field = 'o.order_no,o.site_name,o.order_name,o.order_from_name,o.order_type_name,o.order_promotion_name,o.out_trade_no,o.out_trade_no_2,o.delivery_code,o.order_status_name,o.pay_status,o.delivery_status,o.refund_status,o.pay_type_name,o.delivery_type_name,o.name,o.mobile,o.telephone,o.full_address,o.buyer_ip,o.buyer_ask_delivery_time,o.buyer_message,o.goods_money,o.delivery_money,o.promotion_money,o.coupon_money,o.order_money,o.adjust_money,o.balance_money,o.pay_money,o.refund_money,o.pay_time,o.delivery_time,o.sign_time,o.finish_time,o.remark,o.goods_num,o.delivery_status_name,o.is_settlement,o.delivery_store_name,o.promotion_type_name,o.address,m.nickname';
  334. $order_goods_field = 'og.order_goods_id,og.sku_name,og.sku_no,og.is_virtual,og.goods_class_name,og.price,og.cost_price,og.num,og.goods_money,og.cost_money,og.delivery_no,og.refund_no,og.refund_type,og.refund_apply_money,og.refund_reason,og.refund_real_money,og.refund_delivery_name,og.refund_delivery_no,og.refund_time,og.refund_refuse_reason,og.refund_action_time,og.real_goods_money,og.refund_remark,og.refund_delivery_remark,og.refund_address,og.is_refund_stock,og.refund_status_name,fm.form_data';
  335. $table_field = $order_field . ',' . $order_goods_field;
  336. $order_table = Db::name('order_goods')->where($condition)->alias($alias);
  337. $order_table = $this->parseJoin($order_table, $join);
  338. $field = array_merge($this->order_goods_field, $this->order_field);
  339. //通过分批次执行数据导出(防止内存超出配置设置的)
  340. set_time_limit(0);
  341. $file_name = date('YmdHis');//csv文件名
  342. $file_path = 'upload/order_csv/';
  343. if (dir_mkdir($file_path)) {
  344. //创建一个临时csv文件
  345. $file_path = $file_path . $file_name . '.csv';
  346. $fp = fopen($file_path, 'w'); //生成临时文件
  347. fwrite($fp, chr(0xEF) . chr(0xBB) . chr(0xBF)); // 添加 BOM
  348. $field_value = [];
  349. $field_key = [];
  350. $field_key_array = [];
  351. //为了防止部分代码被筛选中替换, 给变量前后两边增加字符串
  352. foreach ($field as $k => $v) {
  353. $field_value[] = $v;
  354. $field_key[] = "{\$$k}";
  355. $field_key_array[] = $k;
  356. }
  357. $first_line = implode(',', $field_value);
  358. //写入第一行表头
  359. fwrite($fp, $first_line . "\n");
  360. $temp_line = implode(',', $field_key) . "\n";
  361. $order_table->field($table_field)->chunk(5000, function($item_list) use ($fp, $temp_line, $field_key_array) {
  362. //写入导出信息
  363. $this->itemExport($item_list, $field_key_array, $temp_line, $fp);
  364. unset($item_list);
  365. });
  366. $order_table->removeOption();
  367. fclose($fp); //每生成一个文件关闭
  368. unset($order_table);
  369. //将同步导出记录状态
  370. $records_data = array (
  371. 'path' => $file_path,
  372. 'status' => 1
  373. );
  374. $records_condition = array (
  375. [ 'export_id', '=', $export_id ]
  376. );
  377. $this->editExport($records_data, $records_condition);
  378. return $this->success();
  379. } else {
  380. return $this->error();
  381. }
  382. } catch (\Exception $e) {
  383. return $this->error([], $e->getMessage() . $e->getLine());
  384. }
  385. }
  386. /**
  387. * 查询订单项数据并导出
  388. * @param $condition
  389. * @param $condition_desc
  390. * @param int $site_id
  391. * @return array
  392. */
  393. public function orderRefundExport($condition, $condition_desc, $site_id = 0)
  394. {
  395. try {
  396. //预先创建导出的记录
  397. $data = array (
  398. 'condition' => json_encode($condition_desc),
  399. 'create_time' => time(),
  400. 'status' => 0,
  401. 'site_id' => $site_id
  402. );
  403. $records_result = $this->addRefundExport($data);
  404. $export_id = $records_result[ 'data' ] ?? 0;
  405. if ($export_id <= 0) {
  406. return $this->error();
  407. }
  408. $alias = 'og';
  409. $join = [
  410. [
  411. 'order o',
  412. 'o.order_id = og.order_id',
  413. 'left'
  414. ]
  415. ];
  416. $order_field = 'o.order_no,o.site_name,o.order_name,o.order_from_name,o.order_type_name,o.order_promotion_name,o.out_trade_no,o.out_trade_no_2,o.delivery_code,o.order_status_name,o.pay_status,o.delivery_status,o.refund_status,o.pay_type_name,o.delivery_type_name,o.name,o.mobile,o.telephone,o.full_address,o.buyer_ip,o.buyer_ask_delivery_time,o.buyer_message,o.goods_money,o.delivery_money,o.promotion_money,o.coupon_money,o.order_money,o.adjust_money,o.balance_money,o.pay_money,o.refund_money,o.pay_time,o.delivery_time,o.sign_time,o.finish_time,o.remark,o.goods_num,o.delivery_status_name,o.is_settlement,o.delivery_store_name,o.promotion_type_name,o.address';
  417. $order_goods_field = 'og.order_goods_id,og.sku_name,og.sku_no,og.is_virtual,og.goods_class_name,og.price,og.cost_price,og.num,og.goods_money,og.cost_money,og.delivery_no,og.refund_no,og.refund_type,og.refund_apply_money,og.refund_reason,og.refund_real_money,og.refund_delivery_name,og.refund_delivery_no,og.refund_time,og.refund_refuse_reason,og.refund_action_time,og.real_goods_money,og.refund_remark,og.refund_delivery_remark,og.refund_address,og.is_refund_stock,og.refund_status_name';
  418. $table_field = $order_field . ',' . $order_goods_field;
  419. $order_table = Db::name('order_goods')->where($condition)->alias($alias);
  420. $order_table = $this->parseJoin($order_table, $join);
  421. $field = array_merge($this->order_goods_field, $this->order_field);
  422. //通过分批次执行数据导出(防止内存超出配置设置的)
  423. set_time_limit(0);
  424. $file_name = date('YmdHis');//csv文件名
  425. $file_path = 'upload/order_csv/';
  426. if (dir_mkdir($file_path)) {
  427. $file_path = $file_path . $file_name . '.csv';
  428. //创建一个临时csv文件
  429. $fp = fopen($file_path, 'w'); //生成临时文件
  430. fwrite($fp, chr(0xEF) . chr(0xBB) . chr(0xBF)); // 添加 BOM
  431. $field_value = [];
  432. $field_key = [];
  433. $field_key_array = [];
  434. //为了防止部分代码被筛选中替换, 给变量前后两边增加字符串
  435. foreach ($field as $k => $v) {
  436. $field_value[] = $v;
  437. $field_key[] = "{\$$k}";
  438. $field_key_array[] = $k;
  439. }
  440. $first_line = implode(',', $field_value);
  441. //写入第一行表头
  442. fwrite($fp, $first_line . "\n");
  443. $temp_line = implode(',', $field_key) . "\n";
  444. $order_table->field($table_field)->chunk(5000, function($item_list) use ($fp, $temp_line, $field_key_array) {
  445. //写入导出信息
  446. $this->itemExport($item_list, $field_key_array, $temp_line, $fp);
  447. unset($item_list);
  448. });
  449. $order_table->removeOption();
  450. fclose($fp); //每生成一个文件关闭
  451. unset($order_table);
  452. //将同步导出记录状态
  453. $records_data = array (
  454. 'path' => $file_path,
  455. 'status' => 1
  456. );
  457. $records_condition = array (
  458. [ 'export_id', '=', $export_id ]
  459. );
  460. $this->editRefundExport($records_data, $records_condition);
  461. return $this->success();
  462. } else {
  463. return $this->error();
  464. }
  465. } catch (\Exception $e) {
  466. return $this->error([], $e->getMessage() . $e->getLine());
  467. }
  468. }
  469. /**
  470. *
  471. * @param $db_obj
  472. * @param $join
  473. * @return mixed
  474. */
  475. public function parseJoin($db_obj, $join)
  476. {
  477. foreach ($join as $item) {
  478. list($table, $on, $type) = $item;
  479. $type = strtolower($type);
  480. switch ( $type ) {
  481. case "left":
  482. $db_obj = $db_obj->leftJoin($table, $on);
  483. break;
  484. case "inner":
  485. $db_obj = $db_obj->join($table, $on);
  486. break;
  487. case "right":
  488. $db_obj = $db_obj->rightjoin($table, $on);
  489. break;
  490. case "full":
  491. $db_obj = $db_obj->fulljoin($table, $on);
  492. break;
  493. default:
  494. break;
  495. }
  496. }
  497. return $db_obj;
  498. }
  499. /**
  500. * 给csv写入新的数据
  501. * @param $item_list
  502. * @param $field_key
  503. * @param $temp_line
  504. * @param $fp
  505. */
  506. public function itemExport($item_list, $field_key, $temp_line, $fp)
  507. {
  508. $item_list = $item_list->toArray();
  509. $item_list = $this->handleData($item_list, $field_key);
  510. foreach ($item_list as $k => $item_v) {
  511. $new_line_value = $temp_line;
  512. if (isset($item_v[ 'goods_num' ])) {
  513. $item_v[ 'goods_num' ] = numberFormat($item_v[ 'goods_num' ]);
  514. }
  515. if (isset($item_v[ 'num' ])) {
  516. $item_v[ 'num' ] = numberFormat($item_v[ 'num' ]);
  517. }
  518. //省市县
  519. $address_arr = explode("-", $item_v[ 'full_address' ]);
  520. $item_v[ 'province_name' ] = !empty($address_arr[ 0 ]) ? $address_arr[ 0 ] : "";
  521. $item_v[ 'city_name' ] = !empty($address_arr[ 1 ]) ? $address_arr[ 1 ] : "";
  522. $item_v[ 'district_name' ] = !empty($address_arr[ 2 ]) ? $address_arr[ 2 ] : "";
  523. foreach ($item_v as $key => $value) {
  524. $value = trim($value);
  525. if ($key == 'full_address') {
  526. $address = $item_v[ 'address' ] ?? '';
  527. $value = $value . $address;
  528. }
  529. //CSV比较简单,记得转义 逗号就好
  530. $values = str_replace(',', '\\', $value . "\t");
  531. $values = str_replace("\n", '', $values);
  532. $values = str_replace("\r", '', $values);
  533. $new_line_value = str_replace("{\$$key}", $values, $new_line_value);
  534. }
  535. //写入第一行表头
  536. fwrite($fp, $new_line_value);
  537. //销毁变量, 防止内存溢出
  538. unset($new_line_value);
  539. }
  540. }
  541. /**
  542. * 添加导出记录
  543. * @param $data
  544. * @return array
  545. */
  546. public function addExport($data)
  547. {
  548. $res = model("order_export")->add($data);
  549. return $this->success($res);
  550. }
  551. /**
  552. * 更新导出记录
  553. * @param $data
  554. * @param $condition
  555. * @return array
  556. */
  557. public function editExport($data, $condition)
  558. {
  559. $res = model("order_export")->update($data, $condition);
  560. return $this->success($res);
  561. }
  562. /**
  563. * 删除导出记录
  564. * @param $condition
  565. * @return array
  566. */
  567. public function deleteExport($condition)
  568. {
  569. //先查询数据
  570. $list = model("order_export")->getList($condition, '*');
  571. if (!empty($list)) {
  572. foreach ($list as $k => $v) {
  573. if (file_exists($v[ 'path' ])) {
  574. //删除物理文件路径
  575. if (!unlink($v[ 'path' ])) {
  576. //失败
  577. } else {
  578. //成功
  579. }
  580. }
  581. }
  582. $res = model("order_export")->delete($condition);
  583. }
  584. return $this->success($res);
  585. }
  586. /**
  587. * 获取导出记录
  588. * @param $condition
  589. * @param string $field
  590. * @param string $order
  591. * @return array
  592. */
  593. public function getExport($condition, $field = "*", $order = '')
  594. {
  595. $list = model("order_export")->getList($condition, $field, $order);
  596. return $this->success($list);
  597. }
  598. /**
  599. * 导出记录
  600. * @param array $condition
  601. * @param int $page
  602. * @param int $page_size
  603. * @param string $order
  604. * @param string $field
  605. * @return array
  606. */
  607. public function getExportPageList($condition = [], $page = 1, $page_size = PAGE_LIST_ROWS, $order = '', $field = '*')
  608. {
  609. $list = model('order_export')->pageList($condition, $field, $order, $page, $page_size);
  610. return $this->success($list);
  611. }
  612. /**
  613. * 添加导出记录
  614. * @param $data
  615. * @return array
  616. */
  617. public function addRefundExport($data)
  618. {
  619. $res = model("order_refund_export")->add($data);
  620. return $this->success($res);
  621. }
  622. /**
  623. * 更新导出记录
  624. * @param $data
  625. * @return array
  626. */
  627. public function editRefundExport($data, $condition)
  628. {
  629. $res = model("order_refund_export")->update($data, $condition);
  630. return $this->success($res);
  631. }
  632. /**
  633. * 删除导出记录
  634. * @param $data
  635. * @return array
  636. */
  637. public function deleteRefundExport($condition)
  638. {
  639. $res = model("order_refund_export")->delete($condition);
  640. return $this->success($res);
  641. }
  642. /**
  643. * 获取导出记录
  644. * @param $member_id
  645. * @return array
  646. */
  647. public function getRefundExport($condition, $field = "*", $order = '')
  648. {
  649. $list = model("order_refund_export")->getList($condition, $field, $order);
  650. return $this->success($list);
  651. }
  652. /**
  653. * 导出记录
  654. * @param array $condition
  655. * @param int $page
  656. * @param int $page_size
  657. * @param string $order
  658. * @param string $field
  659. * @return array
  660. */
  661. public function getRefundExportPageList($condition = [], $page = 1, $page_size = PAGE_LIST_ROWS, $order = '', $field = '*')
  662. {
  663. $list = model('order_refund_export')->pageList($condition, $field, $order, $page, $page_size);
  664. return $this->success($list);
  665. }
  666. }