storeOrderSumByWhere([ 'store_id' => $params['store_id'], 'paid' => 1, ]); $data['cashier_amount'] = $orderLogic->storeOrderSumByWhere([ 'store_id' => $params['store_id'], 'paid' => 1, 'shipping_type' => 3, ]); $data['delivery_amount'] = $orderLogic->storeOrderSumByWhere([ 'store_id' => $params['store_id'], 'paid' => 1, 'shipping_type' => 1, ]); $data['verify_amount'] = $orderLogic->storeOrderSumByWhere([ 'store_id' => $params['store_id'], 'paid' => 1, 'shipping_type' => 2, ]); $startTime = $params['start_time']; $endTime = $params['end_time']; $days = (new \DateTime($endTime))->diff(new \DateTime($startTime))->days; $days += 1; if ($days == 1) { $group = 'HOUR(pay_time)'; $timeRange = [0, 23]; $endTime = date('Y-m-d H:i:s', strtotime($endTime) + 86400); $field = 'from_unixtime(pay_time,"%H") as pay_time,sum(pay_price) as pay_price'; } elseif ($days <= 31) { $group = 'DAY(pay_time)'; $timeRange = [1, $days]; $field = 'from_unixtime(pay_time,"%m-%d") as pay_time,sum(pay_price) as pay_price'; } else { $group = 'MONTH(pay_time)'; $timeRange = [1, (int)date('n')]; $field = 'from_unixtime(pay_time,"%Y-%m") as pay_time,sum(pay_price) as pay_price'; } $orderList = StoreOrder::field($field) ->where('store_id', $params['store_id']) ->where('paid', 1) ->whereBetweenTime('pay_time', $startTime, $endTime) ->group($group) ->select() ->toArray(); $userList = StoreOrder::field($field . ',count(uid) as user_num') ->where('store_id', $params['store_id']) ->where('paid', 1) ->whereBetweenTime('pay_time', $startTime, $endTime) ->group($group . ',uid') ->select() ->toArray(); $orderList = reset_index($orderList, 'pay_time'); $userList = reset_index($userList, 'pay_time'); $orderListTmp = []; $userListTmp = []; $range = []; for ($i = $timeRange[0]; $i <= $timeRange[1]; $i++) { $range[] = $i; if (!isset($orderList[$i])) { $orderListTmp[$i] = 0; } else { $orderListTmp[$i] = $orderList[$i]['pay_price']; } if (!isset($userList[$i])) { $userListTmp[$i] = 0; } else { $userListTmp[$i] = $userList[$i]['user_num']; } } $data['statistics'] = [ 'range' => $range, 'data' => [ 'order_amount' => array_values($orderListTmp), 'user_number' => array_values($userListTmp) ] ]; return $data; } /** * @notes 常用功能 * @return array[] * @author 乔峰 * @date 2021/12/29 16:40 */ public static function menu(): array { return [ [ 'name' => '管理员', 'image' => FileService::getFileUrl(config('project.default_image.menu_admin')), 'url' => '/permission/admin' ], [ 'name' => '角色管理', 'image' => FileService::getFileUrl(config('project.default_image.menu_role')), 'url' => '/permission/role' ], [ 'name' => '部门管理', 'image' => FileService::getFileUrl(config('project.default_image.menu_dept')), 'url' => '/organization/department' ], [ 'name' => '素材中心', 'image' => FileService::getFileUrl(config('project.default_image.menu_file')), 'url' => '/material/index' ], [ 'name' => '菜单权限', 'image' => FileService::getFileUrl(config('project.default_image.menu_auth')), 'url' => '/permission/menu' ], [ 'name' => '网站信息', 'image' => FileService::getFileUrl(config('project.default_image.menu_web')), 'url' => '/setting/website/information' ], ]; } /** * @notes 版本信息 * @return array * @author 乔峰 * @date 2021/12/29 16:08 */ public static function versionInfo(): array { return [ 'version' => config('project.version'), 'website' => config('project.website.url'), 'name' => ConfigService::get('website', 'name'), 'based' => 'vue3.x、ElementUI、MySQL', 'channel' => [ 'website' => 'https://gitee.com/MuZJun/gather-admin.git', 'gitee' => 'https://gitee.com/MuZJun/gather-vue.git', ] ]; } /** * @notes 今日数据 * @return int[] * @author 乔峰 * @date 2021/12/29 16:15 */ public static function today(): array { return [ 'time' => date('Y-m-d H:i:s'), // 今日销售额 'today_sales' => 100, // 总销售额 'total_sales' => 1000, // 今日访问量 'today_visitor' => 10, // 总访问量 'total_visitor' => 100, // 今日新增用户量 'today_new_user' => 30, // 总用户量 'total_new_user' => 3000, // 订单量 (笔) 'order_num' => 12, // 总订单量 'order_sum' => 255 ]; } /** * @notes 访问数 * @return array * @author 乔峰 * @date 2021/12/29 16:57 */ public static function visitor(): array { $num = []; $date = []; for ($i = 0; $i < 15; $i++) { $where_start = strtotime("- " . $i . "day"); $date[] = date('Y/m/d', $where_start); $num[$i] = rand(0, 100); } return [ 'date' => $date, 'list' => [ ['name' => '访客数', 'data' => $num] ] ]; } /** * @notes 服务支持 * @return array[] * @author 乔峰 * @date 2022/7/18 11:18 */ public static function support() { return [ [ 'image' => FileService::getFileUrl(config('project.default_image.qq_group')), 'title' => '官方公众号', 'desc' => '关注官方公众号', ], [ 'image' => FileService::getFileUrl(config('project.default_image.customer_service')), 'title' => '添加企业客服微信', 'desc' => '想了解更多请添加客服', ] ]; } }