| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292 |
- <?php
- /**
- * @package merchant
- * @Author: Qinii
- * @Date: 2020/7/28
- */
- namespace crmeb\services;
- use app\common\repositories\store\order\StoreOrderRepository;
- use app\common\repositories\store\ExcelRepository;
- use app\common\repositories\store\order\StoreRefundOrderRepository;
- use app\common\repositories\system\merchant\FinancialRecordRepository;
- use think\Exception;
- class ExcelService
- {
- public function getAll($data)
- {
- $this->{$data['type']}($data['where'],$data['excel_id']);
- }
- public function export($header, $title_arr, $export = [],$path, $filename = '', $id,$suffix = 'xlsx')
- {
- $title = isset($title_arr[0]) && !empty($title_arr[0]) ? $title_arr[0] : '导出数据';
- $name = isset($title_arr[1]) && !empty($title_arr[1]) ? $title_arr[1] : '导出数据';
- $info = isset($title_arr[2]) && !empty($title_arr[2]) ? $title_arr[2] : date('Y-m-d H:i:s', time());
- try{
- $_path = SpreadsheetExcelService::instance_xin()
- ->createOrActive()
- ->setExcelHeader($header)
- ->setExcelTile($title, $name, $info)
- ->setExcelContent($export)
- ->excelSave($filename, $suffix, $path);
- $dir=app()->getRootPath() . 'public' ;
- $img=$dir.'/'.$_path;
- $upload = UploadService::create();
- $time = date('Y-m-d');
- $osspath = "chuxubao/phpexcel/" . $time . '/'.$filename.'.xlsx';
- $data = $upload->stream(file_get_contents($img),$osspath);
- if ($data === false) {
- return app('json')->fail($upload->getError());
- }
- $res = $upload->getUploadInfo();
- $_path2=$res['thumb_path'];
- app()->make(ExcelRepository::class)->update($id,[
- 'name' => $filename.'.'.$suffix,
- 'status' => 1,
- // 'path' => '/'.$_path
- 'path' => $_path2
- ]);
- }catch (Exception $exception){
- app()->make(ExcelRepository::class)->update($id,[
- 'name' => $filename.'.'.$suffix,
- 'status' => 2,
- 'message' => $exception->getMessage()
- ]);
- }
- }
- /**
- * TODO 导出订单
- * @param array $where
- * @param int $id
- * @author Qinii
- * @day 2020-08-10
- */
- public function order(array $export,int $id)
- {
- // $make = app()->make(StoreOrderRepository::class);
- // var_dump($where);
- // $list=$make->merchantGetListYhc($where,1,10000);
- // var_dump($list);die;
- $header = [
- '序号','订单编号','收货人','手机号','商品信息','价格*数量','实际支付', '支付类型','支付方式','订单状态','下单时间','养老金','养老金状态','收货地址',
- ];
- //
- //
- // $status = $where['status'];
- // $del = $where['mer_id'] > 0 ? 0 : null;
- // unset($where['status']);
- // $query = $make->search($where,$del)->where($make->getOrderType($status))->order('order_id ASC');
- //// $count = $query->count();
- // $list = $query->with([
- // 'orderProduct',
- // 'merchant' => function ($query) {return $query->field('mer_id,mer_name');},
- // 'user.spread'
- // ])->select()->toArray();
- // $export = $this->orderList($list);
- // $header = [
- // '序号','订单编号','订单类型','推广人','用户信息',
- // '商品名称','单商品总数','商品价格(元)','优惠','实付邮费(元)','实付金额(元)','已退款金额(元)',
- // '收货人','收货人电话','收货地址','物流单号','下单时间','支付方式','支付状态','商家备注'
- // ];
- $title = ['订单列表','订单信息','生成时间:' . date('Y-m-d H:i:s',time())];
- $filename = '订单列表_'.date('YmdHis');
- return $this->export($header,$title,$export,'order',$filename,$id,'xlsx');
- }
- public function orderList2(array $data){
- $result = [];
- if(empty($data)) return $result;
- $i = 1;
- // '序号','订单编号','收货人','商品信息','实际支付', '支付类型','支付方式','支付状态',订单状态'下单时间','养老金','养老金状态',
- foreach ($data as $item){
- if($item['status']==5){
- $item['pay_price']='0';
- }
- $item['leixing']='';
- $item['ddzt']='';
- $item['is_red_ylj_text']='未结算';
- if($item['paid']==1){
- if($item['pay_type']==0){
- $item['leixing']='虚拟支付';
- }else if ($item['pay_type']==1){
- $item['leixing']='微信支付';
- }else if ($item['pay_type']==5){
- $item['leixing']='红积分兑换';
- }
- }
- if($item['status'] == 5) $item['ddzt']='待付款';
- if($item['status'] == 0) $item['ddzt']='待发货';
- if($item['status'] == 1) $item['ddzt']='待收货';
- if($item['status'] == 2) $item['ddzt']='待评价';
- if($item['status'] == 3) $item['ddzt']='已完成';
- if($item['status'] == 4) $item['ddzt']='已申请退款';
- if($item['status'] == -1) $item['ddzt']='已退款';
- if($item['status'] == 6) $item['ddzt']='已取消';
- if($item['is_red_ylj']==1){
- $item['is_red_ylj_text']='待审核';
- }
- if($item['is_red_ylj']==2){
- $item['is_red_ylj_text']='已结算';
- }
- $result[] = [
- $i,
- $item['order_sn'],
- $item['real_name'],
- $item['user']['nickname'],
- '商品信息',
- $item['pay_price'],
- $item['leixing'],
- $item['paid'] ? '已支付':'未支付',
- $item['ddzt'] ? '已支付':'未支付',
- $item['create_time'] ,
- $item['ylj'] ,
- $item['is_red_ylj_text'] ,
- $item['user_address']
- ];
- $i++;
- }
- return $result;
- }
- /**
- * TODO 整理订单信息
- * @param array $data
- * @return array
- * @author Qinii
- * @day 2020-08-10
- */
- public function orderList(array $data)
- {
- $result = [];
- if(empty($data)) return $result;
- $i = 1;
- foreach ($data as $item){
- $refund_price = app()->make(StoreRefundOrderRepository::class)->refundPirceByOrder([$item['order_id']]);
- foreach ($item['orderProduct'] as $key => $value){
- $result[] = [
- $i,
- $item['order_sn'],
- $item['order_type'] ? '核销订单':'普通订单',
- $item['user']['spread']['nickname'],
- $item['user']['nickname'],
- $value['cart_info']['product']['store_name'],
- $value['product_num'],
- $value['cart_info']['product']['price'],
- ($key == 0 ) ? $item['coupon_price'] : 0,
- ($key == 0 ) ? $item['pay_postage'] : 0,
- ($key == 0 ) ? $item['total_price'] : 0,
- ($key == 0 ) ? $refund_price : 0,
- $item['real_name'],
- $item['user_phone'],
- $item['user_address'],
- $item['delivery_id'],
- $item['create_time'],
- $item['pay_type'] ? '微信': '余额',
- $item['paid'] ? '已支付':'未支付',
- $item['remark']
- ];
- $i++;
- }
- }
- return $result;
- }
- /**
- * TODO 流水记录导出
- * @param array $where
- * @param int $id
- * @author Qinii
- * @day 2020-08-10
- */
- public function financial(array $where,int $id)
- {
- $_key = [
- 'mer_accoubts' => '财务对账',
- 'sys_accoubts' => '财务对账',
- 'refund_order' => '退款订单',
- 'brokerage_one' => '一级分佣',
- 'brokerage_two' => '二级分佣',
- 'refund_brokerage_one' => '返还一级分佣',
- 'refund_brokerage_two' => '返还二级分佣',
- 'order' => '订单支付',
- ];
- $make = app()->make(FinancialRecordRepository::class);
- $query = $make->search($where)->with(['merchant']);
- $list = $query->select();
- $header = [
- '序号','商户ID','商户名称','流水ID','流水单号','订单ID','订单号','用户名','用户ID','流水类型','收入/支付','金额','创建时间'
- ];
- $_export = [];
- foreach ($list as $k => $v){
- $_export[]=[
- $k,
- $v['merchant']['mer_id'],
- $v['merchant']['mer_name'],
- $v['financial_record_id'],
- $v['financial_record_sn'],
- $v['order_id'],
- $v['order_sn'],
- $v['user_info'],
- $v['user_id'],
- $_key[$v['financial_type']],
- $v['financial_pm'] ? '收入' : '支出',
- $v['number'],
- $v['create_time'],
- ];
- }
- $title = ['流水列表','流水信息','生成时间:' . date('Y-m-d H:i:s',time())];
- $filename = '流水列表_'.date('YmdHis');
- return $this->export($header,$title,$_export,'financial',$filename,$id,'xlsx');
- }
- public function extract(array $data)
- {
- $export =$data;
- $header = [
- '申请时间','姓名','申请金额','综合服务费','实际到账金额','提现方式','所属银行','所属银行支行','银行卡号','状态'
- ];
- $title_arr = ['提现列表','提现信息','生成时间:' . date('Y-m-d H:i:s',time())];
- $filename = '提现列表_'.date('YmdHis');
- $title = isset($title_arr[0]) && !empty($title_arr[0]) ? $title_arr[0] : '导出数据';
- $name = isset($title_arr[1]) && !empty($title_arr[1]) ? $title_arr[1] : '导出数据';
- $info = isset($title_arr[2]) && !empty($title_arr[2]) ? $title_arr[2] : date('Y-m-d H:i:s', time());
- $suffix='xlsx';
- $path='extract';
- $_path = SpreadsheetExcelService::instance()
- ->createOrActive()
- ->setExcelHeader($header)
- ->setExcelTile($title, $name, $info)
- ->setExcelContent($export)
- ->excelSave($filename, $suffix, $path);
- return [
- 'name' => $filename.'.'.$suffix,
- 'status' => 1,
- 'path' => '/'.$_path
- ];
- }
- }
|