getOrderTotal($today, $today); $ytd_order = $this->getOrderTotal($ytd, $ytd); $new_order_amount = $this->getOrderTotalPrice($today, $today); $ytd_order_amount = $this->getOrderTotalPrice($ytd, $ytd); $data = [ 'ref_date' => $today, // 今日日期 // 访问人数/昨天全天 暂不做 // 新访问人数/昨天全天 暂不做 // 总注册人数/昨天全天 'user_total' => [ 'today' => $this->getUserTotal(), 'ytd' => $this->getUserTotal(null, $ytd) ], // 新注册人数/昨天全天 'new_user' => [ 'today' => $this->getUserTotal($today, $today), 'ytd' => $this->getUserTotal($ytd, $ytd) ], // 新增订单数/昨天全天 'new_order' => [ 'today' => $new_order, 'ytd' => $ytd_order ], // 新增销售额/昨天全天 'new_order_amount' => [ 'today' => $new_order_amount, 'ytd' => $ytd_order_amount ], // 客单价(元)/昨天全天 客单价=新增销售额/新增订单数 'user_unit_price' => [ 'today' => $new_order > 0 ? helper::number2($new_order_amount / $new_order) : '0.00', 'ytd' => $ytd_order_amount > 0 ? helper::number2($ytd_order_amount / $ytd_order) : '0.00' ], // 新增退款金额/昨天全天 'refund_amount' => [ 'today' => $this->getRefundMoneyTotal($today, $today), 'ytd' => $this->getRefundMoneyTotal($ytd, $ytd) ], //售出现金卡总面额/昨天全天 'cash_rice_card_face_amount' => [ 'today' => $this->getCashRiceCardFacePriceTotal($today, $today), 'ytd' => $this->getCashRiceCardFacePriceTotal($ytd, $ytd) ], //现金卡销售额/昨天全天 'cash_rice_card_pay_amount' => [ 'today' => $this->getCashRiceCardPayPriceTotal($today, $today), 'ytd' => $this->getCashRiceCardPayPriceTotal($ytd, $ytd) ], ]; return $data; } /** * 获取用户总量 * @param null $startDate * @param null $endDate * @return string */ private function getUserTotal($startDate = null, $endDate = null) { // 检索查询条件 $filter = []; if (!is_null($startDate) && !is_null($endDate)) { // 时间区间 $filter[] = ['create_time', '>=', strtotime($startDate)]; $filter[] = ['create_time', '<', strtotime($endDate) + 86400]; } elseif (is_null($startDate) && !is_null($endDate)) { // 截止昨日 $filter[] = ['create_time', '<', strtotime($endDate) + 86400]; } // 查询总记录 $value = (new UserModel)->where($filter) ->where('is_delete', '=', '0') ->count(); return number_format($value); } /** * 获取订单总量 * 付款成功 * * @param null $startDate * @param null $endDate * @return string */ private function getOrderTotal($startDate = null, $endDate = null) { $filter = []; // 检索查询条件 $filter[] = ['pay_status', '=', PayStatusEnum::SUCCESS]; // $filter[] = ['order_status', '<>', OrderStatusEnum::CANCELLED]; if (!is_null($startDate) && !is_null($endDate)) { // 时间区间 $filter[] = ['pay_time', '>=', strtotime($startDate)]; $filter[] = ['pay_time', '<', strtotime($endDate) + 86400]; } elseif (is_null($startDate) && !is_null($endDate)) { // 截止昨日 $filter[] = ['pay_time', '<', strtotime($endDate) + 86400]; } $res = OrderModel::where($filter) ->where('is_delete', '=', 0) ->count(); return number_format($res); } /** * 获取总销售额 * 付款成功 * * @param null $startDate * @param null $endDate * @return float|int */ public function getOrderTotalPrice($startDate = null, $endDate = null) { $filter = []; // 检索查询条件 $filter[] = ['pay_status', '=', PayStatusEnum::SUCCESS]; // $filter[] = ['order_status', '<>', OrderStatusEnum::CANCELLED]; if (!is_null($startDate) && !is_null($endDate)) { // 时间区间 $filter[] = ['pay_time', '>=', strtotime($startDate)]; $filter[] = ['pay_time', '<', strtotime($endDate) + 86400]; } elseif (is_null($startDate) && !is_null($endDate)) { // 截止昨日 $filter[] = ['pay_time', '<', strtotime($endDate) + 86400]; } $res = OrderModel::where($filter) ->field('sum(pay_price + rice_card_money) as total_price') ->where('is_delete', '=', 0) ->find(); $price_amount = $res['total_price'] ?? 0; return helper::number2($price_amount); } /** * 获取退款金额 * 退款成功 * * @param null $startDate * @param null $endDate * @return float */ public function getRefundMoneyTotal($startDate = null, $endDate = null) { $filter[] = ['status', '=', RefundStatusEnum::COMPLETED]; $filter[] = ['finance_refund', '=', 10]; if (!is_null($startDate) && !is_null($endDate)) { // 时间区间 $filter[] = ['refund_succ_time', '>=', strtotime($startDate)]; $filter[] = ['refund_succ_time', '<', strtotime($endDate) + 86400]; } elseif (is_null($startDate) && !is_null($endDate)) { // 截止昨日 $filter[] = ['refund_succ_time', '<', strtotime($endDate) + 86400]; } $res = OrderRefund::where($filter)->sum('refund_money'); return helper::number2($res); } /** * 售出现金卡总面额 * * @param null $startDate * @param null $endDate * @return string */ public function getCashRiceCardFacePriceTotal($startDate = null, $endDate = null) { $filter = []; $filter[] = ['pay_status', '=', 1]; $filter[] = ['rice_card_type', '=', 2]; // 现金卡 if (!is_null($startDate) && !is_null($endDate)) { // 时间区间 $filter[] = ['pay_time', '>=', date('Y-m-d H:i:s',strtotime($startDate))]; $filter[] = ['pay_time', '<', date('Y-m-d H:i:s', strtotime($endDate) + 86400)]; } elseif (is_null($startDate) && !is_null($endDate)) { // 截止昨日 $filter[] = ['pay_time', '<', date('Y-m-d H:i:s', strtotime($endDate) + 86400)]; } $res = RiceCardOrder::where($filter) ->field('sum(rice_card_face_value*buy_num) as total_face_value') ->whereIn('order_status', [10, 30]) ->find(); return helper::number2($res['total_face_value']); } /** * 现金卡销售额 * @param null $startDate * @param null $endDate * @return string */ public function getCashRiceCardPayPriceTotal($startDate = null, $endDate = null) { $filter[] = ['pay_status', '=', 1]; $filter[] = ['rice_card_type', '=', 2]; // 现金卡 if (!is_null($startDate) && !is_null($endDate)) { // 时间区间 $filter[] = ['pay_time', '>=', date('Y-m-d H:i:s',strtotime($startDate))]; $filter[] = ['pay_time', '<', date('Y-m-d H:i:s', strtotime($endDate) + 86400)]; } elseif (is_null($startDate) && !is_null($endDate)) { // 截止昨日 $filter[] = ['pay_time', '<', date('Y-m-d H:i:s', strtotime($endDate) + 86400)]; } $res = RiceCardOrder::where($filter) ->whereIn('order_status', [10, 30]) ->sum('pay_price'); return helper::number2($res); } }