ExcelService.php 26 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638
  1. <?php
  2. // +----------------------------------------------------------------------
  3. // | CRMEB [ CRMEB赋能开发者,助力企业发展 ]
  4. // +----------------------------------------------------------------------
  5. // | Copyright (c) 2016~2020 https://www.crmeb.com All rights reserved.
  6. // +----------------------------------------------------------------------
  7. // | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权
  8. // +----------------------------------------------------------------------
  9. // | Author: CRMEB Team <admin@crmeb.com>
  10. // +----------------------------------------------------------------------
  11. namespace crmeb\services;
  12. use app\common\repositories\store\order\StoreImportDeliveryRepository;
  13. use app\common\repositories\store\order\StoreOrderRepository;
  14. use app\common\repositories\store\ExcelRepository;
  15. use app\common\repositories\store\order\StoreRefundOrderRepository;
  16. use app\common\repositories\system\merchant\FinancialRecordRepository;
  17. use app\common\repositories\system\merchant\MerchantIntentionRepository;
  18. use app\common\repositories\user\UserBillRepository;
  19. use app\common\repositories\user\UserVisitRepository;
  20. use think\Exception;
  21. use think\facade\Db;
  22. class ExcelService
  23. {
  24. public function getAll($data)
  25. {
  26. set_time_limit(0);
  27. ini_set('memory_limit', '-1');
  28. $this->{$data['type']}($data['where'], $data['excel_id']);
  29. }
  30. /**
  31. * TODO 导出操作
  32. * @param $id
  33. * @param $path
  34. * @param $header
  35. * @param $title
  36. * @param array $export
  37. * @param string $filename
  38. * @param array $end
  39. * @param string $suffix
  40. * @author Qinii
  41. * @day 3/17/21
  42. */
  43. public function export($id, $path, $header, $title, $export = [], $filename = '',$end = [],$suffix = 'xlsx')
  44. {
  45. try{
  46. $_path = SpreadsheetExcelService::instance()
  47. ->createOrActive()
  48. ->setExcelHeader($header,count($title['mark']) + 2)
  49. ->setExcelTile($title)
  50. ->setExcelContent($export)
  51. ->setExcelEnd($end)
  52. ->excelSave($filename, $suffix, $path);
  53. app()->make(ExcelRepository::class)->update($id,[
  54. 'name' => $filename.'.'.$suffix,
  55. 'status' => 1,
  56. 'path' => '/'.$_path
  57. ]);
  58. }catch (Exception $exception){
  59. app()->make(ExcelRepository::class)->update($id,[
  60. 'name' => $filename.'.'.$suffix,
  61. 'status' => 2,
  62. 'message' => $exception->getMessage()
  63. ]);
  64. }
  65. }
  66. /**
  67. * TODO 搜索记录导出
  68. * @param array $where
  69. * @param int $id
  70. * @author xaboy
  71. * @day 6/10/21
  72. */
  73. public function searchLog(array $where, int $id)
  74. {
  75. $query = app()->make(UserVisitRepository::class)->search($where);
  76. $header = ['序号', '用户ID', '用户昵称', '用户类型', '搜索词', '搜索时间', '首次访问时间'];
  77. $title = [
  78. 'title' => '搜索记录',
  79. 'sheets' => '搜索记录',
  80. 'mark' => ['生成时间:' . date('Y-m-d H:i:s', time())],
  81. ];
  82. $searchLog = [];
  83. $user_type = [
  84. 'h5' => 'H5',
  85. 'wechat' => '公众号',
  86. 'routine' => '小程序',
  87. ];
  88. $query->with(['user' => function ($query) {
  89. $query->field('uid,nickname,avatar,user_type,create_time');
  90. }])->order('create_time DESC')->chunk(100, function ($logs) use (&$export, $user_type) {
  91. foreach ($logs as $log) {
  92. $searchLog[] = [
  93. $log['user_visit_id'],
  94. $log['user'] ? $log['user']['uid'] : '未登录',
  95. $log['user'] ? $log['user']['nickname'] : '未知',
  96. $log['user'] ? ($user_type[$log['user']['user_type']] ?? $log['user']['user_type']) : '未知',
  97. $log['content'],
  98. $log['create_time'],
  99. $log['user'] ? $log['user']['create_time'] : '未知',
  100. ];
  101. }
  102. });
  103. $filename = '搜索记录_' . date('YmdHis');
  104. $end = [];
  105. return $this->export($id, 'searchLog', $header, $title, $searchLog, $filename, $end);
  106. }
  107. /**
  108. * TODO 导出订单
  109. * @param array $where
  110. * @param int $id
  111. * @author Qinii
  112. * @day 2020-08-10
  113. */
  114. public function order(array $where,int $id)
  115. {
  116. $make = app()->make(StoreOrderRepository::class);
  117. $status = $where['status'];
  118. $del = $where['mer_id'] > 0 ? 0 : null;
  119. unset($where['status']);
  120. $query = $make->search($where,$del)->where($make->getOrderType($status))->with([
  121. 'orderProduct',
  122. 'merchant' => function ($query) {return $query->field('mer_id,mer_name');},
  123. 'user.spread'
  124. ])->order('order_id ASC');
  125. $header = ['序号','订单编号','订单类型','推广人','用户信息', '商品名称','商品规格','单商品总数','商品价格(元)','优惠','实付邮费(元)','实付金额(元)','已退款金额(元)', '收货人','收货人电话','收货地址','物流单号/送货人电话','下单时间','支付方式','支付状态','商家备注'];
  126. $title = [
  127. 'title' => '订单列表',
  128. 'sheets' => '订单信息',
  129. 'mark' => ['生成时间:' . date('Y-m-d H:i:s',time())],
  130. ];
  131. $export = [];
  132. $limit = 20;
  133. $count = ceil(($query->count())/$limit);
  134. $i = 1;
  135. $paytype = [
  136. 0 => '余额',
  137. 1 => '微信',
  138. 2 => '小程序',
  139. 3 => 'H5',
  140. 4 => '支付宝',
  141. 5 => '支付宝扫码',
  142. 6 => '微信扫码',
  143. ];
  144. for( $page = 1; $page <= $count; $page++ ) {
  145. $list = $query->page($page, $limit)->select()->each(function($item){
  146. $item['refund_price'] = app()->make(StoreRefundOrderRepository::class)->refundPirceByOrder([$item['order_id']]);
  147. return $item;
  148. });
  149. foreach ($list as $item){
  150. foreach ($item['orderProduct'] as $key => $value){
  151. $export[] = [
  152. $i,
  153. $item['order_sn'],
  154. $item['order_type'] ? '核销订单':'普通订单',
  155. $item['user']['spread']['nickname'],
  156. $item['user']['nickname'],
  157. $value['cart_info']['product']['store_name'],
  158. $value['cart_info']['productAttr']['sku'],
  159. $value['product_num'],
  160. $value['cart_info']['productAttr']['price'],
  161. ($key == 0 ) ? $item['coupon_price'] : 0,
  162. ($key == 0 ) ? $item['pay_postage'] : 0,
  163. $value['product_price'],
  164. ($key == 0 ) ? $item['refund_price'] : 0,
  165. $item['real_name'],
  166. $item['user_phone'],
  167. $item['user_address'],
  168. $item['delivery_id'],
  169. $item['create_time'],
  170. $paytype[$item['pay_type']],
  171. $item['paid'] ? '已支付':'未支付',
  172. $item['remark']
  173. ];
  174. $i++;
  175. }
  176. }
  177. }
  178. $filename = '订单列表_'.date('YmdHis');
  179. $end = [];
  180. return $this->export($id, 'order', $header, $title, $export,$filename, $end);
  181. }
  182. /**
  183. * TODO 流水记录导出
  184. * @param array $where
  185. * @param int $id
  186. * @author Qinii
  187. * @day 2020-08-10
  188. */
  189. public function financial(array $where,int $id)
  190. {
  191. $_key = [
  192. 'mer_accoubts' => '财务对账',
  193. 'sys_accoubts' => '财务对账',
  194. 'refund_order' => '退款订单',
  195. 'brokerage_one' => '一级分佣',
  196. 'brokerage_two' => '二级分佣',
  197. 'refund_brokerage_one' => '返还一级分佣',
  198. 'refund_brokerage_two' => '返还二级分佣',
  199. 'order' => '订单支付',
  200. ];
  201. $make = app()->make(FinancialRecordRepository::class);
  202. $query = $make->search($where)->with(['merchant']);
  203. $header = ['序号','商户名称','交易流水单号','总订单号','子订单号','用户名','用户ID','交易类型','收入/支出','金额','创建时间'];
  204. $title = [
  205. 'title' => '流水列表',
  206. 'sheets' => '流水信息',
  207. 'mark' => ['生成时间:' . date('Y-m-d H:i:s',time())],
  208. ];
  209. $export = [];
  210. $limit = 20;
  211. $count = ceil(($query->count())/$limit);
  212. $i = 1;
  213. $order_make = app()->make(StoreOrderRepository::class);
  214. for( $page = 1; $page <= $count; $page++ ) {
  215. $list = $query->page($page,$limit)->select();
  216. foreach ($list as $k => $v) {
  217. $order = $order_make->get($v['order_id']);
  218. $export[] = [
  219. $i,
  220. $v['merchant']['mer_name'],
  221. $v['financial_record_sn'],
  222. $order['groupOrder']['group_order_sn'] ?? '无数据',
  223. $v['order_sn'],
  224. $v['user_info'],
  225. $v['user_id'],
  226. $_key[$v['financial_type']],
  227. $v['financial_pm'] ? '收入' : '支出',
  228. ($v['financial_pm'] ? '+ ' : '- ') . $v['number'],
  229. $v['create_time'],
  230. ];
  231. $i++;
  232. }
  233. }
  234. $filename = '流水列表_'.date('YmdHis');
  235. return $this->export($id,'financial',$header,$title,$export,$filename,[],'xlsx');
  236. }
  237. /**
  238. * TODO 获取待发货订单 发货信息
  239. * @param array $where
  240. * @param int $id
  241. * @author Qinii
  242. * @day 3/13/21
  243. */
  244. public function delivery(array $where,int $id)
  245. {
  246. $make = app()->make(StoreOrderRepository::class);
  247. $query = $make->search($where)->where('order_type',0)->with(['orderProduct'])->order('order_id ASC');
  248. $header = ['序号','订单编号','物流公司','物流编码','物流单号', '发货地址','用户信息','手机号','商品信息','支付时间'];
  249. $title = [
  250. 'title' => '批量发货单',
  251. 'sheets' => '发货信息',
  252. 'mark' => ['生成时间:' . date('Y-m-d H:i:s',time())],
  253. ];
  254. $filename = '批量发货单_'.date('YmdHis');
  255. $export = [];
  256. $limit = 20;
  257. $count = ceil(($query->count())/$limit);
  258. $i = 1;
  259. for( $page = 1; $page <= $count; $page++ ) {
  260. $data = $query->page($page,$limit)->select();
  261. foreach ($data as $key => $item){
  262. $product = '';
  263. foreach ($item['orderProduct'] as $value){
  264. $product = $product.$value['cart_info']['product']['store_name'].'【'. $value['cart_info']['productAttr']['sku'] .'】【' . $value['product_num'].'】'.PHP_EOL;
  265. }
  266. $export[] = [
  267. $i,
  268. $item['order_sn'] ?? '',
  269. '',
  270. $item['delivery_name']??"",
  271. $item['delivery_id']??"",
  272. $item['user_address']??"",
  273. $item['real_name'] ?? '',
  274. $item['user_phone'] ?? '',
  275. $product,
  276. $item['pay_time'] ?? '',
  277. ];
  278. $i++;
  279. }
  280. }
  281. $end = [];
  282. return $this->export($id,'delivery',$header,$title,$export,$filename,$end);
  283. }
  284. /**
  285. * TODO 导出 发货导入记录
  286. * @param array $where
  287. * @param int $id
  288. * @author Qinii
  289. * @day 3/17/21
  290. */
  291. public function importDelivery(array $where,int $id)
  292. {
  293. $make = app()->make(StoreImportDeliveryRepository::class);
  294. $query = $make->getSearch($where)->order('create_time ASC');
  295. $title = [
  296. 'title' => '发货记录',
  297. 'sheets' => '发货信息',
  298. 'mark' => [
  299. '生成时间:' . date('Y-m-d H:i:s',time())
  300. ],
  301. ];
  302. $header = ['序号','订单编号','物流公司','物流单号', '发货状态','备注'];
  303. $filename = '发货单记录_'.date('YmdHis');
  304. $export = [];
  305. $limit = 20;
  306. $count = ceil(($query->count())/$limit);
  307. $i = 1;
  308. for( $page = 1; $page <= $count; $page++ ) {
  309. $data = $query->page($page,$limit)->select();
  310. foreach ($data as $key => $item){
  311. $export[] = [
  312. $i,
  313. $item['order_sn'],
  314. $item['delivery_name'],
  315. $item['delivery_id'],
  316. $item['status'],
  317. $item['mark'],
  318. ];
  319. $i++;
  320. }
  321. }
  322. $end = [];
  323. return $this->export($id,'delivery',$header,$title,$export,$filename,$end);
  324. }
  325. /**
  326. * TODO 平台/商户 导出日月账单信息
  327. * @param array $where
  328. * @param int $id
  329. * @author Qinii
  330. * @day 3/25/21
  331. */
  332. public function exportFinancial(array $where,int $id)
  333. {
  334. /*
  335. order 收入 公共 新订单
  336. brokerage_one 支出 公共 一级佣金
  337. brokerage_two 支出 公共 二级佣金
  338. order_charge 支出 商户 手续费
  339. order_true 支出 平台 商户入账
  340. refund_order 支出 公共 退款
  341. refund_brokerage_one 收入 公共 返还一级佣金
  342. refund_brokerage_two 收入 公共 返还二级佣金
  343. refund_charge 收入 商户 返还手续费
  344. refund_true 收入 平台 商户返还入账
  345. presell 收入 公共 新订单
  346. presell_charge 支出 商户 手续费
  347. presell_true 支出 平台 商户入账
  348. */
  349. $financialType = [
  350. 'order' => '订单支付',
  351. 'presell' => '预售订单(尾款)',
  352. 'brokerage_one' => '一级佣金',
  353. 'brokerage_two' => '二级佣金',
  354. 'order_charge' => '手续费',
  355. 'order_true' => '商户入账',
  356. 'refund_order' => '退款',
  357. 'refund_charge' => '返还手续费',
  358. 'refund_true' => '商户返还入账',
  359. 'presell_charge'=> '预售订单(手续费)',
  360. 'presell_true' => '商户入账',
  361. 'refund_brokerage_one' => '返还一级佣金',
  362. 'refund_brokerage_two' => '返还二级佣金',
  363. 'mer_presell' => '预售订单(总额)',
  364. 'order_presell' => '预售订单(定金)'
  365. ];
  366. $sys_pm_1 = ['order','presell','order_charge','order_presell','presell_charge','refund_brokerage_one','refund_brokerage_two'];
  367. $mer_pm_1 = ['order','presell','refund_charge','refund_brokerage_one','refund_brokerage_two','mer_presell'];
  368. $date_ = $where['date'];unset($where['date']);
  369. $make = app()->make(FinancialRecordRepository::class);
  370. $query = $make->search($where)->with(['orderInfo','refundOrder','merchant.merchantCategory']);
  371. if($where['type'] == 1){
  372. $title_ = '日账单';
  373. $start_date = $date_.' 00:00:00';
  374. $end_date = $date_.' 23:59:59';
  375. $query->whereDay('create_time',$date_);
  376. }else{
  377. $title_ = '月账单';
  378. $start_date = (date('Y-m-01', strtotime($date_)));
  379. $end_date = date('Y-m-d', strtotime("$start_date +1 month -1 day"));
  380. $query->whereMonth('create_time',$date_);
  381. }
  382. $income = $make->countIncome($where['type'],$where,$date_);
  383. $expend = $make->countExpend($where['type'],$where,$date_);
  384. $refund = $make->countRefund($where['type'],$where,$date_);
  385. $charge = bcsub($income['number'],$expend['number'],2);
  386. $filename = $title_.'('.$date_.')'.time();
  387. $title = [];
  388. $header = [];
  389. $export = [];
  390. $end = [];
  391. $limit = 20;
  392. $count = ceil(($query->count())/$limit);
  393. $i = 1;
  394. $order_make = app()->make(StoreOrderRepository::class);
  395. //平台
  396. if(!$where['is_mer']){
  397. $header = ['序号','商户类别','商户分类','商户名称','总订单号','订单编号','交易流水号','交易时间', '对方信息','交易类型','收支金额','备注'];
  398. for( $page = 1; $page <= $count; $page++ ) {
  399. $list = $query->page($page, $limit)->order('create_time DESC')->select();
  400. foreach ($list as $key => $value) {
  401. $order = $order_make->get($value['order_id']);
  402. $export[] = [
  403. $i,
  404. $value['merchant']['is_trader'] ? '自营' : '非自营',
  405. $value['merchant']['merchantCategory']['category_name'] ?? '平台',
  406. $value['merchant']['mer_name'] ?? '平台',
  407. $order['groupOrder']['group_order_sn'] ?? '无数据',
  408. $value['order_sn'],
  409. $value['financial_record_sn'],
  410. $value['create_time'],
  411. $value['user_info'],
  412. $financialType[$value['financial_type']],
  413. (in_array($value['financial_type'], $sys_pm_1) ? '+' : '-') . $value['number'],
  414. ''
  415. ];
  416. $i++;
  417. }
  418. }
  419. $end = [
  420. '合计:平台应入账手续费 '.$charge,
  421. '收入合计: '.'订单支付'.$income['count'].'笔,'.'实际支付金额共:'.$income['number'].'元;',
  422. '支出合计: '.'佣金支出'.$expend['count_brokerage'].'笔,支出金额:'.$expend['number_brokerage'].'元;商户入账支出'.$expend['count_order'].'笔,支出金额:'.$expend['number_order'].'元;退款手续费'.$expend['count_charge'].'笔,支出金额'.$expend['number_charge'].'元;合计支出'.$expend['number'],
  423. ];
  424. //商户
  425. }else{
  426. $header = ['序号','总订单号','子订单编号','交易流水号','交易时间', '对方信息','交易类型','收支金额','备注'];
  427. $mer_name = '';
  428. for( $page = 1; $page <= $count; $page++ ) {
  429. $list = $query->page($page, $limit)->order('create_time DESC')->select();
  430. foreach ($list as $key => $value) {
  431. $order = $order_make->get($value['order_id']);
  432. $export[] = [
  433. $i,
  434. $order['groupOrder']['group_order_sn'] ?? '无数据',
  435. $value['order_sn'],
  436. $value['financial_record_sn'],
  437. $value['create_time'],
  438. $value['user_info'],
  439. $financialType[$value['financial_type']],
  440. (in_array($value['financial_type'], $mer_pm_1) ? '+' : '-') . $value['number'],
  441. ''
  442. ];
  443. $i++;
  444. $mer_name = $mer_name ? $mer_name : ($value['merchant']['mer_name'] ?? '');
  445. }
  446. }
  447. $count_brokeage = $expend['count_brokerage'] + $expend['count_refund_brokerage'];
  448. $number_brokeage = bcsub($expend['number_brokerage'],$expend['number_refund_brokerage'],2);
  449. $count_charge = $expend['count_charge']+$expend['count_order_charge'];
  450. $number_charge = bcsub($expend['number_order_charge'],$expend['number_charge'],2);
  451. $end = [
  452. '合计:商户应入金额 '.$charge,
  453. '收入合计: '.'订单支付'.$income['count'].'笔,'.'实际支付金额共:'.$income['number'].'元;',
  454. '支出合计: '.'佣金支出'.$count_brokeage.'笔,支出金额:'.$number_brokeage.'元;退款'.$expend['count_refund'].'笔,支出金额:'.$expend['number_refund'].'元;平台手续费'.$count_charge.'笔,支出金额:'.$number_charge.'元;合计支出金额:'.$expend['number'].'元;',
  455. //'商户应入金额 '.$charge,
  456. ];
  457. $mer_name = '商户名称:'.$mer_name;
  458. }
  459. $title = [
  460. 'title' => $title_,
  461. 'sheets' => $title_.'信息',
  462. 'mark' => [
  463. $mer_name ?? '平台',
  464. '结算账期:【' .$start_date.'】至【'.$end_date.'】',
  465. '生成时间:' . date('Y-m-d H:i:s',time())
  466. ],
  467. ];
  468. return $this->export($id,'financial',$header,$title,$export,$filename,$end);
  469. }
  470. /**
  471. * TODO 退款单导出
  472. * @param array $where
  473. * @param int $id
  474. * @author Qinii
  475. * @day 6/10/21
  476. */
  477. public function refundOrder(array $where,int $id)
  478. {
  479. $query = app()->make(StoreRefundOrderRepository::class)->search($where)->where('is_system_del', 0)->with(['order' => function ($query) {
  480. $query->field('order_id,order_sn,activity_type,real_name,user_address');
  481. }, 'refundProduct.product', 'user' => function ($query) {
  482. $query->field('uid,nickname,phone');
  483. }])->order('create_time DESC');
  484. $title = [
  485. 'title' => '退款订单',
  486. 'sheets' => '退款单信息',
  487. 'mark' => [
  488. '生成时间:' . date('Y-m-d H:i:s',time())
  489. ],
  490. ];
  491. $header = ['序号','退款单号','申请时间','审核时间', '退款金额','退货件量','退货商品信息','退款类型','订单状态','拒绝理由','退货人','退货地址','相关订单号','退货物流公司','退货物流单号','备注'];
  492. $filename = '退款订单'.time();
  493. $path = 'refundOrder';
  494. $status = [
  495. 0 => '待审核',
  496. 1 => '待退货',
  497. 2 => '待收货',
  498. 3 => '已退款',
  499. -1=> '审核未通过',
  500. ];
  501. $limit = 20;
  502. $count= ceil(($query->count())/$limit);
  503. $i = 1;
  504. for( $page = 1; $page <= $count; $page++ ){
  505. $data = $query->page($page,$limit)->select()->toArray();
  506. foreach ($data as $k => $datum){
  507. $product = '';
  508. foreach ($datum['refundProduct'] as $value){
  509. $product .= '【'.$value['product']['cart_info']['product']['product_id'].'】'.$value['product']['cart_info']['product']['store_name'].'*'.$value['refund_num'].$value['product']['cart_info']['product']['unit_name'].PHP_EOL;
  510. }
  511. $export[] = [
  512. $i,
  513. $datum['refund_order_sn'],
  514. $datum['create_time'],
  515. $datum['status_time'],
  516. $datum['refund_price'],
  517. $datum['refund_num'],
  518. $product,
  519. ($datum['refund_type'] == 1 ) ? '仅退款' : '退款退货',
  520. $status[$datum['status']],
  521. $datum['fail_message'],
  522. $datum['order']['real_name'],
  523. $datum['order']['user_address'],
  524. $datum['order']['order_sn'],
  525. $datum['delivery_type'],
  526. $datum['delivery_id'],
  527. $datum['mark'],
  528. ];
  529. $i++;
  530. }
  531. }
  532. $end = [];
  533. $this->export($id, $path, $header, $title, $export, $filename);
  534. }
  535. /**
  536. * TODO 积分日志导出
  537. * @param $where
  538. * @param $id
  539. * @author Qinii
  540. * @day 6/10/21
  541. */
  542. public function integralLog($where,$id)
  543. {
  544. $title = [
  545. 'title' => '积分日志',
  546. 'sheets' => '积分日志',
  547. 'mark' => [
  548. '生成时间:' . date('Y-m-d H:i:s',time())
  549. ],
  550. ];
  551. $header = ['用户ID','用户昵称','积分标题','变动积分', '当前积分余额','备注','时间'];
  552. $filename = '积分日志'.time();
  553. $path = 'integralLog';
  554. $export = [];
  555. app()->make(UserBillRepository::class)->searchJoin($where)->order('a.create_time DESC')
  556. ->chunk(100,function($list) use(&$export){
  557. foreach ($list as $item) {
  558. $export[] = [
  559. $item['uid'],
  560. $item['nickname'],
  561. $item['title'],
  562. $item['number'],
  563. $item['balance'],
  564. $item['mark'],
  565. $item['create_time'],
  566. ];
  567. }
  568. });
  569. $this->export($id, $path, $header, $title, $export, $filename);
  570. }
  571. public function intention($where,$id)
  572. {
  573. $title = [
  574. 'title' => '申请列表',
  575. 'sheets' => '申请列表',
  576. 'mark' => [
  577. '生成时间:' . date('Y-m-d H:i:s',time())
  578. ],
  579. ];
  580. $header = ['商户姓名','联系方式','备注','店铺名称','店铺分类','时间'];
  581. $filename = '申请列表'.time();
  582. $path = 'intention';
  583. $export = [];
  584. app()->make(MerchantIntentionRepository::class)->search($where)->with(['merchantCategory', 'merchantType'])->order('a.create_time DESC')
  585. ->chunk(100,function($list) use(&$export){
  586. foreach ($list as $item) {
  587. $export[] = [
  588. $item['name'],
  589. $item['phone'],
  590. $item['mark'],
  591. $item['mer_name'],
  592. $item['category_name'],
  593. $item['create_time'],
  594. ];
  595. }
  596. });
  597. $this->export($id, $path, $header, $title, $export, $filename);
  598. }
  599. }