diff --git a/app/api/controller/order/OrderController.php b/app/api/controller/order/OrderController.php index fa1f79a2c..70ec3e5a5 100644 --- a/app/api/controller/order/OrderController.php +++ b/app/api/controller/order/OrderController.php @@ -185,6 +185,9 @@ class OrderController extends BaseApiController $user=User::where('id',$this->userId)->find(); $order = OrderLogic::createOrder($cartId, $addressId, $user, $params); + if($order['pay_price'] <= 0){ + $pay_type = 3; + } if ($order != false) { switch ($pay_type) { case PayEnum::BALANCE_PAY: diff --git a/app/common/enum/OrderEnum.php b/app/common/enum/OrderEnum.php index c6ea7ec5b..4c0560214 100644 --- a/app/common/enum/OrderEnum.php +++ b/app/common/enum/OrderEnum.php @@ -28,12 +28,16 @@ class OrderEnum const SUPPLIER_ORDER_OBTAINS = 6; const PLATFORM_ORDER_PAY = 7; const SYSTEM_SET = 8; - const CASHIER_ORDER_PAY = 9; + const CASHIER_ORDER_PAY = 9;//微信条码 const CASHIER_CASH_ORDER_PAY = 10; const ORDER_MARGIN = 11; const ORDER_COMMITION = 12; + const CASHIER_ORDER_ALI_PAY = 13;//支付宝条码 + + const CASHIER_FACE_PAY = 17;//现金收银 + /** * 收入支出类型 @@ -87,6 +91,7 @@ class OrderEnum /**小程序下单**/ const ONLINE = [1,2]; + const OFFLINE = [3]; /** * 账户类型 * @USER 用户 diff --git a/app/common/logic/PayNotifyLogic.php b/app/common/logic/PayNotifyLogic.php index 2aaa30f04..d0b1e159e 100644 --- a/app/common/logic/PayNotifyLogic.php +++ b/app/common/logic/PayNotifyLogic.php @@ -106,7 +106,7 @@ class PayNotifyLogic extends BaseLogic $extra['transaction_id'] = time(); } $user = User::where('id', $order['uid'])->find(); - if ($order->pay_type == 9) { + if ($order->pay_type == OrderEnum::CASHIER_ORDER_PAY || $order->pay_type == OrderEnum::CASHIER_ORDER_ALI_PAY) {//收银台支付 $order->status = 2; } else { $capitalFlowDao = new CapitalFlowLogic($user); @@ -276,6 +276,10 @@ class PayNotifyLogic extends BaseLogic $amount = min($deposit, $frozen); $financeLogic->in($transaction_id, $amount, OrderEnum::ORDER_MARGIN, $order['store_id'], $order['staff_id']); } + //入商户帐 + if($deposit <= 0 && $frozen > 0){ + SystemStore::where('id',$order['store_id'])->inc('store_money',$frozen); + } } $financeLogic->save(); } diff --git a/app/store/controller/WorkbenchController.php b/app/store/controller/WorkbenchController.php index 267a13ecc..6788b71ca 100644 --- a/app/store/controller/WorkbenchController.php +++ b/app/store/controller/WorkbenchController.php @@ -142,4 +142,22 @@ class WorkbenchController extends BaseAdminController return $workbench->get_product_ranking(); } + + #[ + ApiDoc\Title('收银台数据统计'), + ApiDoc\url('/store/workbench/business_statistics'), + ApiDoc\Method('GET'), + ApiDoc\NotHeaders(), + ApiDoc\Author('中国队长'), + ApiDoc\Query(), + ApiDoc\Header(ref: [Definitions::class, "token"]), + ApiDoc\ResponseSuccess("data", type: "array"), + ] + public function business_statistics() + { + $params = $this->request->get(); + $params['store_id'] = $this->request->adminInfo['store_id']; + $result = WorkbenchLogic::revenueStatistics($params); + return $this->data($result); + } } diff --git a/app/store/logic/WorkbenchLogic.php b/app/store/logic/WorkbenchLogic.php index 01fb12a11..bbfdaf095 100644 --- a/app/store/logic/WorkbenchLogic.php +++ b/app/store/logic/WorkbenchLogic.php @@ -15,14 +15,19 @@ namespace app\store\logic; +use app\common\enum\OrderEnum; use app\common\enum\PayEnum; +use app\common\enum\YesNoEnum; use app\common\logic\BaseLogic; use app\common\logic\store_order\StoreOrderLogic; +use app\common\logic\StoreFinanceFlowLogic; use app\common\model\order\Cart; use app\common\model\store_cash_finance_flow\StoreCashFinanceFlow; +use app\common\model\store_finance_flow\StoreFinanceFlow; use app\common\model\store_order\StoreOrder; use app\common\model\store_order_cart_info\StoreOrderCartInfo; use app\common\model\store_visit\StoreVisit; +use app\common\model\system_store\SystemStore; use app\common\service\ConfigService; use app\common\service\FileService; @@ -529,4 +534,161 @@ class WorkbenchLogic extends BaseLogic return $data; } + + public static function revenueStatistics($params) + { + + //当日营业额的统计 当日利润的统计 当日成本合集的统计 当日加到保证金的 当日的现金收银 + $today = StoreOrder::where(['paid'=>YesNoEnum::YES,'store_id'=>$params['store_id']]); + $turnover_today = $today + ->whereDay('create_time') + ->sum('pay_price'); + $profit_today = $today + ->whereDay('create_time') + ->sum('profit'); + $cost_today = $today + ->whereDay('create_time') + ->sum('cost'); + + $deposit = StoreFinanceFlow::where(['store_id'=>$params['store_id']]) + ->where('financial_type',OrderEnum::ORDER_MARGIN); + $deposit_today =$deposit + ->whereDay('create_time') + ->sum('number'); + + $cash_today = StoreCashFinanceFlow::where('store_id',$params['store_id']) + ->whereDay('create_time') + ->where('status',YesNoEnum::YES) + ->sum('receipts'); + + //总的营业额的统计 总的利润的统计 总的成本合集的统计 总的加到保证金的 + $all = StoreOrder::where(['paid'=>YesNoEnum::YES,'store_id'=>$params['store_id']]); + $turnover_all = $all + ->sum('pay_price'); + $profit_all = $all + ->sum('profit'); + $cost_all = $all + ->sum('cost'); + $deposit_all = SystemStore::where('id',$params['store_id']) + ->value('paid_deposit'); + $cash_all = StoreCashFinanceFlow::where('store_id',$params['store_id']) + ->where('status',YesNoEnum::YES) + ->sum('receipts'); + + + $time = self::getLastSevenDays(); + $newArr = []; + foreach ($time as $value){ + $data = self::dealSearch($params['store_id'],$value); + $newArr[$value] = $data; + } + return [ + 'today'=>[ + 'turnover_today'=>$turnover_today, + 'profit_today'=>$profit_today, + 'cost_today'=>$cost_today, + 'deposit_today'=>$deposit_today, + 'cash_today'=>$cash_today, + ], + 'all'=>[ + 'turnover_all'=>$turnover_all, + 'profit_all'=>$profit_all, + 'cost_all'=>$cost_all, + 'deposit_all'=>$deposit_all, + 'cash_all'=>$cash_all, + ], + 'time'=>$newArr + ]; + + + // 可以选时间 当日订单数 本月订单数 拆分线上和线下的方式 ---v.01 + /* if($params['start_time'] && $params['end_time']){ + $startTime = $params['start_time']; + $endTime = $params['end_time']; + $endTime = date('Y-m-d', strtotime($endTime) + 86400); + }else{ + $startTime = date('Y-m-d',time()); + $endTime = date('Y-m-d', strtotime($startTime) + 86400); + } + + //当日订单和当月订单 + $base = StoreOrder::where('paid',YesNoEnum::YES); + $offline_order_today_num =$base + ->whereIn('shipping_type',OrderEnum::OFFLINE) + ->whereDay('create_time') + ->count(); + + $offline_order_today_month = $base + ->whereIn('shipping_type',OrderEnum::OFFLINE) + ->whereMonth('create_time') + ->count(); + //条码收银的-->微信和支付宝的没那个 + + //线下现金收银 + whereIn('pay_type',[OrderEnum::CASHIER_ORDER_PAY, + OrderEnum::CASHIER_ORDER_ALI_PAY,OrderEnum::CASHIER_FACE_PAY]) + $cash = StoreCashFinanceFlow::where('store_id',$params['store_id']) + ->whereBetweenTime('create_time', $startTime, $endTime) + ->where('status',YesNoEnum::YES); + $cash_count = $cash->count(); + $cash_receipt = $cash->sum('receipts');*/ + + } + + + public static function getLastSevenDays() + { + $dates = []; + $today = new \DateTime(); // 获取当前日期 + + for ($i = 0; $i < 30; $i++) { + $date = clone $today; // 克隆当前日期对象,以避免修改原始对象 + $date->modify("-$i day"); // 减去相应的天数 + $dates[] = $date->format('Y-m-d'); // 格式化日期并添加到数组中 + } + + return $dates; + } + + + public static function dealSearch($store_id,$startTime) + { + $endTime = date('Y-m-d', strtotime($startTime) + 86400); + //当日营业额的统计 当日利润的统计 当日成本合集的统计 当日加到保证金的 当日的现金收银 + $today = StoreOrder::where(['paid'=>YesNoEnum::YES,'store_id'=>$store_id]); + $turnover_today = $today + ->whereBetweenTime('create_time', $startTime, $endTime) + ->sum('pay_price'); + $profit_today = $today + ->whereBetweenTime('create_time', $startTime, $endTime) + ->sum('profit'); + $cost_today = $today + ->whereBetweenTime('create_time', $startTime, $endTime) + ->sum('cost'); + + $deposit = StoreFinanceFlow::where(['store_id'=>$store_id]) + ->where('financial_type',OrderEnum::ORDER_MARGIN); + $deposit_today =$deposit + ->whereBetweenTime('create_time', $startTime, $endTime) + ->sum('number'); + + $cash_today = StoreCashFinanceFlow::where('store_id',$store_id) + ->whereBetweenTime('create_time', $startTime, $endTime) + ->where('status',YesNoEnum::YES) + ->sum('receipts'); + return [ + 'turnover_today'=>$turnover_today, + 'profit_today'=>$profit_today, + 'cost_today'=>$cost_today, + 'deposit_today'=>$deposit_today, + 'cash_today'=>$cash_today, + ]; + + } + + + + + + }