joe主题再续前缘1.4版增加后台订单统计总额

joe主题再续前缘1.4版增加后台订单统计总额

admin
9月18日发布

title: Joe主题再续前缘1.4版:后台订单统计总额功能详解
date: 2025-09-18 12:00:00
tags: [joe主题, 再续前缘, 订单统计, typecho]
category: 主题教程

cover: https://www.3cym.com/usr/uploads/2025/09/2409291984.jpg

功能一句话

后台「订单管理」顶部实时显示:总订单数、已支付金额、未支付金额等 6 项关键数据,无需插件,开箱即用


效果预览

后台订单统计总额展示图


核心代码(已内置)


📎 点击查看 /admin/orders.php 完整源码(已折叠)

<?php
require_once TYPECHO_ADMIN_ROOT . 'header.php';
require_once TYPECHO_ADMIN_ROOT . 'menu.php';
require_once __DIR__ . '/widget.php';

$orders_url = '../themes/' . THEME_NAME . '/admin/orders.php';
$panel_url  = $options->adminUrl . 'extending.php?panel=' . urlencode($orders_url);

/* =========================================================
 * 把整张表一次性读出来,用 PHP 算数字
 * ========================================================= */
$db     = Typecho_Db::get();
$rows   = $db->fetchAll($db->select()->from('table.orders'));

$totalOrders = $totalPaidOrders = $totalUnpaidOrders = 0;
$totalAmount = $totalPaidAmount = $totalUnpaidAmount = 0;   // 单位:分

foreach ($rows as $r) {
    $totalOrders++;

    $money   = intval(round(floatval($r['money'])   * 100));
    $pay     = intval(round(floatval($r['pay_price']) * 100));
    $status  = (int)$r['status'];   // 1 已支付,0 未支付

    $totalAmount += $money;

    if ($status === 1) {
        $totalPaidOrders++;
        $totalPaidAmount += $pay;
    } else {
        $totalUnpaidOrders++;
        $totalUnpaidAmount += ($money - $pay);
    }
}

// 转回元
$totalAmountYuan       = number_format($totalAmount / 100, 2, '.', '');
$totalPaidAmountYuan   = number_format($totalPaidAmount / 100, 2, '.', '');
$totalUnpaidAmountYuan = number_format($totalUnpaidAmount / 100, 2, '.', '');

/* =========================================================
 * 下面负责展示
 * ========================================================= */
$orders = Typecho\Widget::widget('JoeOrders\Widget');
?>

<style>
.stats{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:15px;padding:10px;background:#f9f9f9;border:1px solid #ddd;font-size:13px}
.stats>div{flex:1 1 110px;text-align:center}
.stats strong{display:block;font-size:15px;color:#333}
</style>

<div class="main">
    <div class="body container">
        <div class="typecho-page-title"><h2>订单管理</h2></div>
        <div class="row typecho-page-main" role="main">
            <div class="col-mb-12 typecho-list">

                <!-- 统计卡片(使用 PHP 计算好的结果) -->
                <div class="stats">
                    <div>总订单 <strong><?php echo $totalOrders; ?></strong></div>
                    <div>已支付订单 <strong><?php echo $totalPaidOrders; ?></strong></div>
                    <div>未支付订单 <strong><?php echo $totalUnpaidOrders; ?></strong></div>
                    <div>订单总额 <strong><?php echo $totalAmountYuan; ?>元</strong></div>
                    <div>已支付金额 <strong><?php echo $totalPaidAmountYuan; ?>元</strong></div>
                    <div>未支付金额 <strong><?php echo $totalUnpaidAmountYuan; ?>元</strong></div>
                </div>

                <!-- 以下保持你原先的业务代码,一字未改 -->
                <div class="typecho-list-operate clearfix">
                    <form method="get" action="<?php $options->adminUrl('extending.php'); ?>">
                        <input type="hidden" name="panel" value="<?= '../themes/' . THEME_NAME . '/admin/orders.php' ?>" />
                        <div class="operate">
                            <label><i class="sr-only"><?php _e('全选'); ?></i><input type="checkbox" class="typecho-table-select-all" /></label>
                            <div class="btn-group btn-drop">
                                <button class="btn dropdown-toggle btn-s" type="button"><i class="sr-only"><?php _e('操作'); ?></i><?php _e('选中项'); ?> <i class="i-caret-down"></i></button>
                                <ul class="dropdown-menu">
                                    <li><a lang="<?php _e('你确认要删除这些订单吗?'); ?>" href="<?= $panel_url . '&action=delete' ?>"><?php _e('删除') ?></a></li>
                                </ul>
                                <button lang="你确认要清理所有未支付订单吗?" class="btn btn-s btn-warn btn-operate" href="<?= $panel_url . '&action=clear' ?>">清理所有未支付订单</button>
                            </div>
                        </div>
                        <div class="search" role="search">
                            <?php if ('' != $request->keywords): ?>
                                <a href="<?= $panel_url ?>"><?php _e('&laquo; 取消筛选'); ?></a>
                            <?php endif; ?>
                            <input type="text" class="text-s" placeholder="<?php _e('请输入关键字'); ?>" value="<?php echo $request->filter('html')->keywords; ?>" name="keywords" />
                            <select class="search-type" name="type">
                                <option value=""><?php _e('支付方式'); ?></option>
                                <?php foreach (['wxpay' => '微信', 'alipay' => '支付宝', 'qqpay' => 'QQ'] as $id => $name) : ?>
                                    <option value="<?php echo $id; ?>" <?php if ($request->get('type') == $id) : ?> selected="true" <?php endif; ?>><?php echo $name; ?></option>
                                <?php endforeach; ?>
                            </select>
                            <select class="search-status" name="status">
                                <option value=""><?php _e('支付状态'); ?></option>
                                <?php foreach (['1' => '已支付', '0' => '未支付'] as $id => $name) : ?>
                                    <option value="<?php echo $id; ?>" <?= $request->get('status', 2) == $id ? 'selected="true"' : null ?>><?php echo $name; ?></option>
                                <?php endforeach; ?>
                            </select>
                            <button type="submit" class="search-btn btn btn-s"><?php _e('筛选'); ?></button>
                        </div>
                    </form>
                </div><!-- end .typecho-list-operate -->

                <form method="post" name="manage_users" class="operate-form">
                    <div class="typecho-table-wrap">
                        <table class="typecho-list-table">
                            <colgroup>
                                <col width="25px" />
                                <col width="130px" />
                                <col width="150px" />
                                <col width="200px" />
                                <col width="60px" />
                                <col width="60px" />
                                <col width="100px" />
                                <col width="50px" />
                                <col width="60px" />
                                <col width="60px" />
                                <col width="60px" />
                                <col width="130px" />
                            </colgroup>
                            <thead>
                                <tr>
                                    <th></th>
                                    <th>订单号</th>
                                    <th>接口订单号</th>
                                    <th>文章标题</th>
                                    <th>支付方式</th>
                                    <th>订单金额</th>
                                    <th>用户IP</th>
                                    <th>用户ID</th>
                                    <th>实付金额</th>
                                    <th>通知管理</th>
                                    <th>通知用户</th>
                                    <th>创建时间</th>
                                </tr>
                            </thead>
                            <tbody>
                                <?php if ($orders->have()) : ?>
                                    <?php while ($orders->next()) : ?>
                                        <tr id="<?php $orders->id(); ?>">
                                            <td><input type="checkbox" value="<?php $orders->id(); ?>" name="id[]" /></td>
                                            <td><?php $orders->trade_no(); ?></td>
                                            <td><?php $orders->api_trade_no(); ?></td>
                                            <td><?php $orders->content_title(); ?></td>
                                            <td><?php $orders->typeName(); ?></td>
                                            <td><?php $orders->money(); ?></td>
                                            <td><?php $orders->ip(); ?></td>
                                            <td><?php $orders->user_id(); ?></td>
                                            <td><?php $orders->pay_price(); ?></td>
                                            <td><?php $orders->admin_email(); ?></td>
                                            <td><?php $orders->user_email(); ?></td>
                                            <td><?php $orders->create_time(); ?></td>
                                        </tr>
                                    <?php endwhile; ?>
                                <?php else : ?>
                                    <tr class="even">
                                        <td colspan="12">
                                            <h6 class="typecho-list-table-title"><?php _e('当前无订单'); ?></h6>
                                        </td>
                                    </tr>
                                <?php endif; ?>
                            </tbody>
                        </table><!-- end .typecho-list-table -->
                    </div><!-- end .typecho-table-wrap -->
                </form><!-- end .operate-form -->

                <div class="typecho-list-operate clearfix">
                    <form method="get">
                        <?php if ($orders->have()): ?>
                            <ul class="typecho-pager">
                                <?php $orders->pageNav(); ?>
                            </ul>
                        <?php endif; ?>
                    </form>
                </div>
                <!-- end .typecho-list-operate -->
            </div><!-- end .typecho-list -->
        </div><!-- end .typecho-page-main -->
    </div>
</div>

<?php
include 'copyright.php';
include 'common-js.php';
include 'table-js.php';
include 'footer.php';
?>

使用零步骤

© 版权声明
THE END
喜欢就支持一下吧
点赞 0 分享 收藏
评论 抢沙发
OωO
取消 登录评论
SSL