gorden 7 months ago
parent
commit
2095fa43f7

+ 48 - 38
app/admin/controller/finance/IncomeAndExpendController.php

@@ -12,7 +12,7 @@ class IncomeAndExpendController
 {
 
     public function list(Request $request)
-    {        
+    {
         $days = $request->get('days');
         if (!empty($days)) {
             $days[0] = strtotime($days[0]);
@@ -25,7 +25,7 @@ class IncomeAndExpendController
             $days[1] = strtotime(date('Y-m-d', $days[1]) . " 23:59:59");
         } else {
             $month = date('Ym');
-            $days[0] = strtotime(date('Y-m').'-01');
+            $days[0] = strtotime(date('Y-m') . '-01');
             $days[1] = time();
         }
         $premises = $request->get('premises', DeptService::getPremisesList());
@@ -34,69 +34,77 @@ class IncomeAndExpendController
         //     $premisesKeyValue[$item['key']] = $item['label'];
         // }
         $premisesKey = [];
-        foreach($premises as $item){
+        foreach ($premises as $item) {
             $premisesKey[] = $item['key'];
         }
 
-        $dayNum = ($days[1] - $days[0])/(60*60*24);
-        $currentDay = date('Y-m-d',$days[0]);
-        $data =[];
-        $statistics = ['income_amount'=>0,'income_wxpay'=>0,'income_alipay'=>0,'income_qrcode'=>0,'expend_amount'=>0,'expend_wxpay'=>0,'expend_alipay'=>0];
-        for($i=0;$i<=$dayNum;$i++){
+        $dayNum = ($days[1] - $days[0]) / (60 * 60 * 24);
+        $currentDay = date('Y-m-d', $days[0]);
+        $data = [];
+        $statistics = ['income_amount' => 0, 'income_wxpay' => 0, 'income_alipay' => 0, 'income_money' => 0, 'expend_amount' => 0, 'expend_wxpay' => 0, 'expend_alipay' => 0, 'expend_money' => 0];
+        for ($i = 0; $i <= $dayNum; $i++) {
             $dayData = [];
             $dayData['day'] = $currentDay;
             // 收入
-            if(Util::schema()->hasTable("data_income_{$month}")){
+            if (Util::schema()->hasTable("data_income_{$month}")) {
                 $wxpay = Db::table("data_income_{$month}")
-                ->where('data_income_days',$currentDay)
-                ->where('data_income_pay_type','WXPAY')
-                ->whereIn('join_data_income_dept_id',$premisesKey)
-                ->selectRaw("data_income_pay_type,SUM(data_income_amount) as data_income_amount")
-                ->groupBy('data_income_pay_type')
-                ->first();
-    
+                    ->where('data_income_days', $currentDay)
+                    ->where('data_income_pay_type', 'WXPAY')
+                    ->whereIn('join_data_income_dept_id', $premisesKey)
+                    ->selectRaw("data_income_pay_type,SUM(data_income_amount) as data_income_amount")
+                    ->groupBy('data_income_pay_type')
+                    ->first();
+
                 $alipay = Db::table("data_income_{$month}")
-                    ->where('data_income_days',$currentDay)
-                    ->where('data_income_pay_type','ALIPAY')
-                    ->whereIn('join_data_income_dept_id',$premisesKey)
+                    ->where('data_income_days', $currentDay)
+                    ->where('data_income_pay_type', 'ALIPAY')
+                    ->whereIn('join_data_income_dept_id', $premisesKey)
                     ->selectRaw("data_income_pay_type,SUM(data_income_amount) as data_income_amount")
                     ->groupBy('data_income_pay_type')
                     ->first();
-    
+
                 $qrcode = Db::table("data_income_{$month}")
-                    ->where('data_income_days',$currentDay)
-                    ->where('data_income_pay_type','QRCODE')
-                    ->whereIn('join_data_income_dept_id',$premisesKey)
+                    ->where('data_income_days', $currentDay)
+                    ->where('data_income_pay_type', 'MONEY')
+                    ->whereIn('join_data_income_dept_id', $premisesKey)
                     ->selectRaw("data_income_pay_type,SUM(data_income_amount) as data_income_amount")
                     ->groupBy('data_income_pay_type')
                     ->first();
             }
-            
+
             $dayData['income']['wxpay'] = $wxpay->data_income_amount ?? 0.00;
             $statistics['income_wxpay'] += $dayData['income']['wxpay'];
             $dayData['income']['alipay'] = $alipay->data_income_amount ?? 0.00;
             $statistics['income_alipay'] += $dayData['income']['alipay'];
-            $dayData['income']['qrcode'] = $qrcode->data_income_amount ?? 0.00;
-            $statistics['income_qrcode'] += $dayData['income']['qrcode'];
+            $dayData['income']['money'] = $qrcode->data_income_amount ?? 0.00;
+            $statistics['income_money'] += $dayData['income']['money'];
 
-            $dayData['income']['amount'] = $dayData['income']['wxpay']+$dayData['income']['alipay']+$dayData['income']['qrcode'];
+            $dayData['income']['amount'] = $dayData['income']['wxpay'] + $dayData['income']['alipay'] + $dayData['income']['money'];
 
             $statistics['income_amount'] += $dayData['income']['amount'];
 
             // 支出
-            if(Util::schema()->hasTable("data_income_{$month}")){
+            if (Util::schema()->hasTable("data_income_{$month}")) {
                 $extendWxpay = Db::table("data_expend_{$month}")
-                    ->where('data_expend_days',$currentDay)
-                    ->where('data_expend_pay_type','WXPAY')
-                    ->whereIn('join_data_expend_dept_id',$premisesKey)
+                    ->where('data_expend_days', $currentDay)
+                    ->where('data_expend_pay_type', 'WXPAY')
+                    ->whereIn('join_data_expend_dept_id', $premisesKey)
                     ->selectRaw("data_expend_pay_type,SUM(data_expend_amount) as data_expend_amount")
                     ->groupBy('data_expend_pay_type')
                     ->first();
 
                 $extendAlipay = Db::table("data_expend_{$month}")
-                    ->where('data_expend_days',$currentDay)
-                    ->where('data_expend_pay_type','ALIPAY')
-                    ->whereIn('join_data_expend_dept_id',$premisesKey)
+                    ->where('data_expend_days', $currentDay)
+                    ->where('data_expend_pay_type', 'ALIPAY')
+                    ->whereIn('join_data_expend_dept_id', $premisesKey)
+                    ->selectRaw("data_expend_pay_type,SUM(data_expend_amount) as data_expend_amount")
+                    ->groupBy('data_expend_pay_type')
+                    ->first();
+
+                $extendMoney = Db::table("data_expend_{$month}")
+                    ->where('data_expend_days', $currentDay)
+                    ->where('data_expend_pay_type', 'MONEY')
+                    ->whereIn('join_data_expend_dept_id', $premisesKey)
                     ->selectRaw("data_expend_pay_type,SUM(data_expend_amount) as data_expend_amount")
                     ->groupBy('data_expend_pay_type')
                     ->first();
@@ -105,21 +113,23 @@ class IncomeAndExpendController
             $statistics['expend_wxpay'] += $dayData['expend']['wxpay'];
             $dayData['expend']['alipay'] = $extendAlipay->data_expend_amount ?? 0.00;
             $statistics['expend_alipay'] += $dayData['expend']['alipay'];
-            $dayData['expend']['amount'] = $dayData['expend']['wxpay']+$dayData['expend']['alipay'];
+            $dayData['expend']['money'] = $extendMoney->data_expend_amount ?? 0.00;
+            $statistics['expend_money'] += $dayData['expend']['money'];
+            $dayData['expend']['amount'] = $dayData['expend']['wxpay'] + $dayData['expend']['alipay'] + $dayData['expend']['money'];
 
             $statistics['expend_amount'] += $dayData['expend']['amount'];
 
             // 当前日期+1
-            $currentDay = date('Y-m-d',strtotime("+1 days",strtotime($currentDay)));
+            $currentDay = date('Y-m-d', strtotime("+1 days", strtotime($currentDay)));
 
             // 没有数据,跳过
-            if($dayData['expend']['amount'] == 0 && $dayData['income']['amount'] == 0){
+            if ($dayData['expend']['amount'] == 0 && $dayData['income']['amount'] == 0) {
                 continue;
             }
 
             $data[] = $dayData;
         }
 
-        return json_success('',['rows'=>$data,'statistics'=>$statistics]);
+        return json_success('', ['rows' => $data, 'statistics' => $statistics]);
     }
 }

+ 32 - 8
app/admin/controller/order/WholeController.php

@@ -78,9 +78,15 @@ class WholeController extends Curd
             $where['order_addtimes'][0] = strtotime(date('Y-m-d') . ' 00:00:00');
             $where['order_addtimes'][1] = strtotime(date('Y-m-d') . ' 23:59:59');
         } else if ($type == 'todayOrderAmount') {
-            $where['order_status_payment'] = 'SUCCESS';
-            $where['order_addtimes'][0] = strtotime(date('Y-m-d') . ' 00:00:00');
-            $where['order_addtimes'][1] = strtotime(date('Y-m-d') . ' 23:59:59');
+            $todayTimeUnix = strtotime(date('Y-m-d') . ' 00:00:00');
+            $groupIds = PayDetail::whereRaw('CAST(UNIX_TIMESTAMP(pay_paytimes) as SIGNED) > ? ', [$todayTimeUnix])
+                ->where('join_pay_order_id', '<>', '')
+                ->where('pay_category', '<>', 'RETURN')
+                ->where('pay_category', '<>', 'RECHARGE')
+                ->where('pay_category', '<>', 'CLEAR')
+                ->pluck('join_pay_order_id')
+                ->toArray();
+            $where['order_groupby'] = ['in', $groupIds];
         }
         $field = $field ?? 'order_addtimes';
         if (!empty($where['order_status_system']) && in_array($where['order_status_system'], ['PENDING', 'WAITING', 'SENDING', 'RECVING', 'SIGNED', 'CONFIRM'])) {
@@ -795,7 +801,7 @@ class WholeController extends Curd
             $order->order_is_complete = 'Y';
             $systemStatus = 'DONE';
         }
-        if ($params['goods_classify'] == 'PACKAGE' && $params['delivery'] == 'ARRIVAL'){
+        if ($params['goods_classify'] == 'PACKAGE' && $params['delivery'] == 'ARRIVAL') {
             $systemStatus = "WAITING";
         }
         Db::beginTransaction();
@@ -1040,6 +1046,7 @@ class WholeController extends Curd
                         'pay_prepayid' => $params['pay_category'],
                         'pay_json_request' => json_encode($params),
                         'pay_json_response' => $params['pay_json_response'],
+                        'join_pay_object_json' => !empty($params['orderId']) ? json_encode(['order_id' => $params['orderId']]) : '[]',
                         'pay_addtimes' => time()
                     ];
 
@@ -1111,6 +1118,7 @@ class WholeController extends Curd
                 $payData['pay_json_response'] = $payData['pay_status'] == 'SUCCESS' ? json_encode([
                     'pay-result' => '支付成功', 'result-datetime' => date('Y-m-d H:i:s')
                 ]) : '[]';
+                $payData['join_pay_object_json'] = !empty($params['orderId']) ? json_encode(['order_id' => $params['orderId']]) : '[]';
                 $payData['pay_addtimes'] = time();
 
                 PayDetail::insert($payData);
@@ -1364,7 +1372,7 @@ class WholeController extends Curd
             $order->order_is_complete = 'Y';
             $systemStatus = 'DONE';
         }
-        if ($params['goods_classify'] == 'PACKAGE' && $params['delivery'] == 'ARRIVAL'){
+        if ($params['goods_classify'] == 'PACKAGE' && $params['delivery'] == 'ARRIVAL') {
             $systemStatus = "WAITING";
         }
         $payDetail = PayDetail::where('join_pay_order_id', $order->order_groupby)->first();
@@ -1929,7 +1937,7 @@ class WholeController extends Curd
                     $params['order_is_complete'] = 'Y';
                     $systemStatus = 'DONE';
                 }
-                if ($params['goods_classify'] == 'PACKAGE' && $params['delivery'] == 'ARRIVAL'){
+                if ($params['goods_classify'] == 'PACKAGE' && $params['delivery'] == 'ARRIVAL') {
                     $systemStatus = "WAITING";
                 }
             }
@@ -2503,7 +2511,7 @@ class WholeController extends Curd
                     $params['order_is_complete'] = 'Y';
                     $systemStatus = 'DONE';
                 }
-                if ($params['goods_classify'] == 'PACKAGE' && $params['delivery'] == 'ARRIVAL'){
+                if ($params['goods_classify'] == 'PACKAGE' && $params['delivery'] == 'ARRIVAL') {
                     $systemStatus = "WAITING";
                 }
             }
@@ -3053,10 +3061,11 @@ class WholeController extends Curd
                 'pay_amount' => $params['order_amount_pay'],
                 'pay_prepayid' => $payPrepayid,
                 'pay_paytimes' => date('Y-m-d H:i:s'),
+                'join_pay_object_json' => !empty($params['orderId']) ? json_encode(['order_id' => $params['orderId']]) : '[]',
                 'pay_json_request' => json_encode($params),
                 'pay_json_response' => $params['pay_json_response'] ?? '[]',
                 'pay_remark' => $params['order_remark'] ?? '',
-                'pay_addtimes' => time()
+                'pay_addtimes' => time(),
             ];
 
             PayDetail::insert($data);
@@ -4010,6 +4019,7 @@ class WholeController extends Curd
 
     public function exportOrder(Request $request)
     {
+        $type = $request->get('type', '');
         [$where, $format, $limit, $field, $order] = $this->selectInput($request);
         $where['order_category'] = ['<>', 'RECHARGE'];
         if (!empty($request->get('order_ids'))) {
@@ -4019,6 +4029,20 @@ class WholeController extends Curd
             $where['order_addtimes'][0] = strtotime($where['order_addtimes'][0]);
             $where['order_addtimes'][1] = strtotime($where['order_addtimes'][1]);
         }
+        if ($type == 'todayOrder' && empty($where['order_addtimes'])) {
+            $where['order_addtimes'][0] = strtotime(date('Y-m-d') . ' 00:00:00');
+            $where['order_addtimes'][1] = strtotime(date('Y-m-d') . ' 23:59:59');
+        } else if ($type == 'todayOrderAmount') {
+            $todayTimeUnix = strtotime(date('Y-m-d') . ' 00:00:00');
+            $groupIds = PayDetail::whereRaw('CAST(UNIX_TIMESTAMP(pay_paytimes) as SIGNED) > ? ', [$todayTimeUnix])
+                ->where('join_pay_order_id', '<>', '')
+                ->where('pay_category', '<>', 'RETURN')
+                ->where('pay_category', '<>', 'RECHARGE')
+                ->where('pay_category', '<>', 'CLEAR')
+                ->pluck('join_pay_order_id')
+                ->toArray();
+            $where['order_groupby'] = ['in', $groupIds];
+        }
         if ($request->get('goods_classify') || $request->get('goods_name')) {
             $where['order_id'] = '';
             $goodsClassify = $request->get('goods_classify', '');

+ 2 - 3
app/admin/service/order/OrderService.php

@@ -376,6 +376,7 @@ class OrderService
             'pay_prepayid' => $params['pay_category'],
             'pay_json_request' => json_encode($params),
             'pay_json_response' => $params['pay_json_response'] ?? '[]',
+            'join_pay_object_json' => !empty($params['orderId']) ? json_encode(['order_id'=>$params['orderId']]) : '[]',
             'pay_addtimes' => time()
         ];
 
@@ -398,9 +399,6 @@ class OrderService
             $payDetail->pay_category = $params['goods_classify'] ?? '';
             $payDetail->pay_prepayid = $params['pay_category'];
             $payDetail->pay_json_request = json_encode($params);
-            $payDetail->pay_json_response = $params['pay_json_response'] ?? json_encode([
-                'pay-result' => '支付成功', 'result-datetime' => date('Y-m-d H:i:s')
-            ]);
             $payDetail->pay_addtimes = time();
         }
         if ($payDetail->pay_prepayid == $qrcodePrepayId) {
@@ -412,6 +410,7 @@ class OrderService
         $payDetail->pay_amount = $params['order_amount_pay'];
         $payDetail->pay_paytimes = date('Y-m-d H:i:s');
         $payDetail->pay_status = 'SUCCESS';
+        $payDetail->join_pay_object_json = !empty($params['orderId']) ? json_encode(['order_id'=>$params['orderId']]) : '[]';
         $payDetail->save();
     }
 

+ 9 - 5
app/admin/service/statistics/OrderService.php

@@ -4,6 +4,7 @@ namespace app\admin\service\statistics;
 
 use app\model\Order;
 use app\model\OrderReturn;
+use app\model\PayDetail;
 use support\Db;
 
 class OrderService
@@ -15,11 +16,14 @@ class OrderService
         // 今日订单
         $data['todayOrder'] = Order::where('order_addtimes', '>', $todayTimeUnix)->where('order_category', '<>', 'RECHARGE')->count();
         // 今日收入
-        $data['todayRevenue'] = Order::where('order_status_payment', 'SUCCESS')
-            ->where('order_addtimes', '>', $todayTimeUnix)
-            ->where('order_category', '<>', 'RETURN')
-            ->where('order_category', '<>', 'RECHARGE')
-            ->sum('order_amount_pay');
+//        $couponDetails = Db::select("select * from app_coupon_detail where coupon_detail_deadline_datetime != '' AND CAST(UNIX_TIMESTAMP(coupon_detail_deadline_datetime) as SIGNED) < " . time());
+
+        $data['todayRevenue'] = PayDetail::whereRaw('CAST(UNIX_TIMESTAMP(pay_paytimes) as SIGNED) > ? ' , [$todayTimeUnix])
+            ->where('join_pay_order_id','<>','')
+            ->where('pay_category', '<>', 'RETURN')
+            ->where('pay_category', '<>', 'RECHARGE')
+            ->where('pay_category', '<>', 'CLEAR')
+            ->sum('pay_amount');
         // 今日充值额
         $data['todayRecharge'] = Order::where('order_status_payment', 'SUCCESS')
             ->where('order_addtimes', '>', $todayTimeUnix)