Просмотр исходного кода

总部后台线下订单展示和导出-修复导出问题

Xpy месяцев назад: 6
Родитель
Сommit
43d628104d

+ 11 - 57
app/common/repositories/merchant/order/OrderMerchantRepository.php

@@ -154,74 +154,28 @@ class OrderMerchantRepository extends BaseRepository
154 154
      */
155 155
     public function getMerchantListAdmin($merId, array $where, $page, $limit)
156 156
     {
157
-//        $merId=Db::name('merchant')->where('uid',$uid)->value('mer_id');
157
+        //        $merId=Db::name('merchant')->where('uid',$uid)->value('mer_id');
158 158
         $query = $this->dao->merchantSearch($merId, $where);
159 159
         $query1 = $this->dao->merchantSearch($merId, $where);
160 160
         $statistics = $query1->field('sum(money) money,sum(available) available,sum(swipe_fee) swipe_fee')
161
-            ->when($merId, function ($query, $merId) {
162
-                $query->where('mer_id', $merId);
163
-            })
161
+            ->where('mer_id', $merId)
164 162
             ->where('paid', 1)
165 163
             ->whereNull('refund_time')
166 164
             ->find();
167
-
168
-        $is_excel = request()->param('is_excel', 0);
169
-        if($is_excel){
170
-            ini_set('memory_limit', '-1');
171
-            set_time_limit(0);
172
-            $list = clone $query;
173
-            $list = $list->with(['merchant' => function ($query) {
174
-                return $query->field('mer_id,mer_name,mer_avatar');
175
-            }])->order('id desc')->select()->each(function ($item) {
176
-                $item->actual = bcsub($item->money, ($item->available + $item->swipe_fee), 2);
177
-                return $item;
178
-            });
179
-
180
-            $arr = [];
181
-            foreach ($list as $item){
182
-                $status = $item['paid'] == 1 ? '已支付' : '未支付';
183
-                if($item['refund_time']) $status = '已退款';
184
-
185
-                $arr[] = [
186
-                    $item['id'],
187
-                    $item['mer_id'],
188
-                    $item['merchant']['mer_name'] ?? '',
189
-                    $item['uid'],
190
-                    $item['money'],
191
-                    $item['available'],
192
-                    $item['service_money'],
193
-                    $item['pension'],
194
-                    $item['swipe_fee'],
195
-                    $item['mer_money'],
196
-                    $item['mer_fanyong'],
197
-                    $item['actual'],
198
-                    $status,
199
-                    $item['create_time'],
200
-                    $item['out_trade_no']
201
-                ];
202
-            }
203
-            $header = [
204
-                'ID', '商户ID', '商户名称', '用户ID',
205
-                '充值金额', '可分佣总额', '服务商返利', '养老金', '刷卡手续费', '商户金额', '商户返佣', '实到金额',
206
-                '状态', '时间', '订单号'
207
-            ];
208
-            return app()->make(\crmeb\services\SpreadsheetExcelService::class)->setExcelContent($header, $arr, '线下订单');
209
-        }
210
-
211 165
         $count = $query->count();
212 166
         $list = $query->with(['merchant', 'merchant' => function ($query) {
213 167
             return $query->field('mer_id,mer_name,mer_avatar');
214 168
         }])->page($page, $limit)->select()->each(function ($item) {
215 169
             $item->actual = bcsub($item->money, ($item->available + $item->swipe_fee), 2);
216
-//            switch($item->trade_type) {
217
-//                case 'ALI':
218
-//                    $item->broadcast = '支付宝收款'.$item->actual.'元';
219
-//                    break;
220
-//                case 'WX':
221
-//                    $item->broadcast = '微信收款'.$item->actual.'元';
222
-//                    break;
223
-//                default:break;
224
-//            }
170
+            //            switch($item->trade_type) {
171
+            //                case 'ALI':
172
+            //                    $item->broadcast = '支付宝收款'.$item->actual.'元';
173
+            //                    break;
174
+            //                case 'WX':
175
+            //                    $item->broadcast = '微信收款'.$item->actual.'元';
176
+            //                    break;
177
+            //                default:break;
178
+            //            }
225 179
             //语音内容
226 180
             $broadcast = systemConfig('broadcast');
227 181
             $item->broadcast = strtr($broadcast, ['{money}' => $item->actual]);

+ 63 - 1
app/controller/admin/order/MerchantOfflineOrder.php

@@ -3,6 +3,7 @@
3 3
 namespace app\controller\admin\order;
4 4
 use app\common\repositories\merchant\order\OrderMerchantRepository;
5 5
 use crmeb\basic\BaseController;
6
+use crmeb\services\SpreadsheetExcelService;
6 7
 use think\App;
7 8
 
8 9
 class MerchantOfflineOrder extends BaseController
@@ -36,7 +37,68 @@ class MerchantOfflineOrder extends BaseController
36 37
     {
37 38
         [$page, $limit] = $this->getPage();
38 39
         $where = $this->request->params(['keyword', 'date', 'status', 'mer_id']);
39
-        return app('json')->success($this->repository->getMerchantListAdmin($this->merId, $where, $page, $limit));
40
+        $is_excel = $this->request->param('is_excel', 0);
41
+        $data = $this->repository->getMerchantListAdmin($this->merId, $where, $page, $limit);
42
+
43
+        if($is_excel){
44
+            $arr = [];
45
+            foreach ($data as $item){
46
+                $status = $item['paid'] == 1 ? '已支付' : '未支付';
47
+                if($item['refund_time']) $status = '已退款';
48
+
49
+                $arr[] = [
50
+                    $item['id'],
51
+                    $item['mer_id'],
52
+                    $item['merchant']['mer_name'] ?? '',
53
+                    $item['uid'],
54
+                    $item['money'],
55
+                    $item['available'],
56
+                    $item['service_money'],
57
+                    $item['pension'],
58
+                    $item['swipe_fee'],
59
+                    $item['mer_money'],
60
+                    $item['mer_fanyong'],
61
+                    $item['actual'],
62
+                    $status,
63
+                    $item['create_time'],
64
+                    $item['out_trade_no']
65
+                ];
66
+            }
67
+            $header = [
68
+                'ID', '商户ID', '商户名称', '用户ID',
69
+                '充值金额', '可分佣总额', '服务商返利', '养老金', '刷卡手续费', '商户金额', '商户返佣', '实到金额',
70
+                '状态', '时间', '订单号'
71
+            ];
72
+            return app('json')->success($this->getStatisticsExcel($header, $arr, '线下订单'));
73
+        }
74
+        return app('json')->success($data);
40 75
     }
41 76
 
77
+    public function getStatisticsExcel($header,$arr,$title)
78
+    {
79
+        $filename = $title.'_'.date('YmdHis').'_'.rand(10000,99999);
80
+        $name = $filename;
81
+        $info = '生成时间:' . date('Y-m-d H:i:s',time());
82
+        $suffix='xlsx';
83
+        $path='offline_order';
84
+        unset($_instance);
85
+
86
+        $_instance = SpreadsheetExcelService::instance_xin();
87
+
88
+        $_path =$_instance
89
+            ->createOrActive()
90
+            ->setExcelHeader($header)
91
+            ->setExcelTile($title, $name, $info)
92
+            ->setExcelContent($arr)
93
+            ->excelSave($filename, $suffix, $path);
94
+
95
+        $domain = request()->domain();
96
+        $data= [
97
+            'name' => $filename.'.'.$suffix,
98
+            'status' => 1,
99
+            'path' => $domain.'/'.$_path
100
+        ];
101
+
102
+        return $data;
103
+    }
42 104
 }