添加数据看板

This commit is contained in:
baji 2025-03-04 21:49:31 +08:00
parent 7ae76e2924
commit d6b3c8a33c
13 changed files with 3159 additions and 13 deletions

View File

@ -3,6 +3,8 @@
namespace app\admin\controller;
use app\common\model\Order as OrderModel;
use app\common\model\OrderList;
use app\common\model\OrderListRecovery;
use app\common\model\User;
use app\admin\controller\Base;
use app\common\model\Category;
use app\common\model\Yushou;
@ -44,7 +46,7 @@ class Statistics extends Base
}
$field = "*";
$order = "id desc";
$data = GoodsModel::getList($whe, $field, $order, $this->page);
$data = GoodsModel::getList($whe, $field, $order, 20);
//订单收入:实际收入:出货价值:实际利润率:订单利润率:
$sum_dingdan = 0;
$sum_shiji = 0;
@ -124,7 +126,7 @@ class Statistics extends Base
$value['count_use_coupon'] = $use_coupon;
$value['count_heji'] = $count_price + $count_yue + $use_integral + $use_score + $use_coupon;
$value['count_heji_yanzheng'] = $count_OrderList * $value['price'];
$value['count_OrderList'] = $count_OrderList;
$goodslist_price1 = round($goodslist_price, 2);
$value['goodslist_price'] = $goodslist_price1;
@ -142,7 +144,7 @@ class Statistics extends Base
$sum_dingdan += $count_OrderList * $value['price'];
$sum_shiji += $order_zhe_total;
$sum_chuhuo +=$goodslist_price1;
$sum_chuhuo += $goodslist_price1;
$sum_shijilirun += $value['lirun'];
$sum_dingdanlirun += $value['liruns'];
}
@ -159,5 +161,179 @@ class Statistics extends Base
}
/**
* 数据统计
* @param \think\Request $request
* @return string
*/
public function DataStand(Request $request)
{
$userCount = User::count("id");
// 今日时间
$ranges['today_start'] = strtotime('today');
$ranges['today_end'] = strtotime('tomorrow') - 1;
// 昨日时间
$ranges['yesterday_start'] = strtotime('yesterday');
$ranges['yesterday_end'] = strtotime('today') - 1;
// 本周时间(周一到周日)
$ranges['this_week_start'] = strtotime('monday this week');
$ranges['this_week_end'] = strtotime('sunday this week') + 86399;
// 上周时间(上周一到上周日)
$ranges['last_week_start'] = strtotime('monday last week');
$ranges['last_week_end'] = strtotime('sunday last week') + 86399;
// 本月时间1号到月末
$ranges['this_month_start'] = strtotime(date('Y-m-01'));
$ranges['this_month_end'] = strtotime(date('Y-m-t')) + 86399;
// 上月时间上个月1号到月末
$ranges['last_month_start'] = strtotime(date('Y-m-01', strtotime('-1 month')));
$ranges['last_month_end'] = strtotime(date('Y-m-t', strtotime('-1 month'))) + 86399;
// 今日注册人数
$user_today = User::whereBetweenTime('addtime', $ranges['today_start'], $ranges['today_end'])->count('id');
// 昨日注册人数
$user_yesterday = User::whereBetweenTime('addtime', $ranges['yesterday_start'], $ranges['yesterday_end'])->count('id');
// 本周注册人数
$user_this_week = User::whereBetweenTime('addtime', $ranges['this_week_start'], $ranges['this_week_end'])->count('id');
// 上周注册人数
$user_last_week = User::whereBetweenTime('addtime', $ranges['last_week_start'], $ranges['last_week_end'])->count('id');
// 本月注册人数
$user_this_month = User::whereBetweenTime('addtime', $ranges['this_month_start'], $ranges['this_month_end'])->count('id');
// 上月注册人数
$user_last_month = User::whereBetweenTime('addtime', $ranges['last_month_start'], $ranges['last_month_end'])->count('id');
// 本日充值金额
$order_today = OrderModel::where('status', '=', 1)->whereBetweenTime('addtime', $ranges['today_start'], $ranges['today_end'])->sum('price');
// 昨日充值金额
$order_yesterday = OrderModel::where('status', '=', 1)->whereBetweenTime('addtime', $ranges['yesterday_start'], $ranges['yesterday_end'])->sum('price');
// 本周充值金额
$order_this_week = OrderModel::where('status', '=', 1)->whereBetweenTime('addtime', $ranges['this_week_start'], $ranges['this_week_end'])->sum('price');
// 上周充值金额
$order_last_week = OrderModel::where('status', '=', 1)->whereBetweenTime('addtime', $ranges['last_week_start'], $ranges['last_week_end'])->sum('price');
// 本月充值金额
$order_this_month = OrderModel::where('status', '=', 1)->whereBetweenTime('addtime', $ranges['this_month_start'], $ranges['this_month_end'])->sum('price');
// 上月充值金额
$order_last_month = OrderModel::where('status', '=', 1)->whereBetweenTime('addtime', $ranges['last_month_start'], $ranges['last_month_end'])->sum('price');
// 消费人数统计
$consume_today = OrderModel::where('status', '=', 1)->whereBetweenTime('addtime', $ranges['today_start'], $ranges['today_end'])->field('user_id')->group('user_id')->count('user_id');
$consume_yesterday = OrderModel::where('status', '=', 1)->whereBetweenTime('addtime', $ranges['yesterday_start'], $ranges['yesterday_end'])->field('user_id')->group('user_id')->count('user_id');
$consume_this_week = OrderModel::where('status', '=', 1)->whereBetweenTime('addtime', $ranges['this_week_start'], $ranges['this_week_end'])->field('user_id')->group('user_id')->count('user_id');
$consume_last_week = OrderModel::where('status', '=', 1)->whereBetweenTime('addtime', $ranges['last_week_start'], $ranges['last_week_end'])->field('user_id')->group('user_id')->count('user_id');
$consume_this_month = OrderModel::where('status', '=', 1)->whereBetweenTime('addtime', $ranges['this_month_start'], $ranges['this_month_end'])->field('user_id')->group('user_id')->count('user_id');
$consume_last_month = OrderModel::where('status', '=', 1)->whereBetweenTime('addtime', $ranges['last_month_start'], $ranges['last_month_end'])->field('user_id')->group('user_id')->count('user_id');
// RMB消费人数统计
$rmb_consume_today = OrderModel::where('status', '=', 1)->where('price', '>', 0)->whereBetweenTime('addtime', $ranges['today_start'], $ranges['today_end'])->field('user_id')->group('user_id')->count('user_id');
$rmb_consume_yesterday = OrderModel::where('status', '=', 1)->where('price', '>', 0)->whereBetweenTime('addtime', $ranges['yesterday_start'], $ranges['yesterday_end'])->field('user_id')->group('user_id')->count('user_id');
$rmb_consume_this_week = OrderModel::where('status', '=', 1)->where('price', '>', 0)->whereBetweenTime('addtime', $ranges['this_week_start'], $ranges['this_week_end'])->field('user_id')->group('user_id')->count('user_id');
$rmb_consume_last_week = OrderModel::where('status', '=', 1)->where('price', '>', 0)->whereBetweenTime('addtime', $ranges['last_week_start'], $ranges['last_week_end'])->field('user_id')->group('user_id')->count('user_id');
$rmb_consume_this_month = OrderModel::where('status', '=', 1)->where('price', '>', 0)->whereBetweenTime('addtime', $ranges['this_month_start'], $ranges['this_month_end'])->field('user_id')->group('user_id')->count('user_id');
$rmb_consume_last_month = OrderModel::where('status', '=', 1)->where('price', '>', 0)->whereBetweenTime('addtime', $ranges['last_month_start'], $ranges['last_month_end'])->field('user_id')->group('user_id')->count('user_id');
//今日余额消费
$money_today = OrderModel::where('status', '=', 1)->whereBetweenTime('addtime', $ranges['today_start'], $ranges['today_end'])->sum('use_money');
$money_yesterday = OrderModel::where('status', '=', 1)->whereBetweenTime('addtime', $ranges['yesterday_start'], $ranges['yesterday_end'])->sum('use_money');
//今日积分抵扣
$score_yesterday = OrderModel::where('status', '=', 1)->whereBetweenTime('addtime', $ranges['yesterday_start'], $ranges['yesterday_end'])->sum('use_score');
$score_today = OrderModel::where('status', '=', 1)->whereBetweenTime('addtime', $ranges['today_start'], $ranges['today_end'])->sum('use_score');
//今日余额发放
$money_recovery_today = OrderListRecovery::whereBetweenTime('addtime', $ranges['today_start'], $ranges['today_end'])->sum('money');
$money_recovery_yesterday = OrderListRecovery::whereBetweenTime('addtime', $ranges['yesterday_start'], $ranges['yesterday_end'])->sum('money');
//今日优惠卷消费
$coupon_today = OrderModel::where('status', '=', 1)->whereBetweenTime('addtime', $ranges['today_start'], $ranges['today_end'])->sum('use_coupon');
//今日收入
$order_zhe_total = OrderModel::where('status', '=', 1)->whereBetweenTime('addtime', $ranges['today_start'], $ranges['today_end'])->sum('order_zhe_total');
$order_goodslist_money = OrderList::whereBetweenTime('addtime', $ranges['today_start'], $ranges['today_end'])->sum('goodslist_money');
$order_goodslist_count = OrderList::whereBetweenTime('addtime', $ranges['today_start'], $ranges['today_end'])->count();
$order_count = OrderModel::where('status', '=', 1)->whereBetweenTime('addtime', $ranges['today_start'], $ranges['today_end'])->count();
$order_zhe_total_yester = round(OrderModel::where('status', '=', 1)->whereBetweenTime('addtime', $ranges['yesterday_start'], $ranges['yesterday_end'])->sum('order_zhe_total'), 2);
$order_goodslist_money_yester = round( OrderList::whereBetweenTime('addtime', $ranges['yesterday_start'], $ranges['yesterday_end'])->sum('goodslist_money'), 2);
$order_zhe_total_week = round(OrderModel::where('status', '=', 1)->whereBetweenTime('addtime', $ranges['this_week_start'], $ranges['this_week_end'])->sum('order_zhe_total'), 2);
$order_goodslist_money_week = round(OrderList::whereBetweenTime('addtime', $ranges['this_week_start'], $ranges['this_week_end'])->sum('goodslist_money'), 2);
$order_zhe_total_last_week = round(OrderModel::where('status', '=', 1)->whereBetweenTime('addtime', $ranges['last_week_start'], $ranges['last_week_end'])->sum('order_zhe_total'), 2);
$order_goodslist_money__last_week = round(OrderList::whereBetweenTime('addtime', $ranges['last_week_start'], $ranges['last_week_end'])->sum('goodslist_money'), 2);
$order_zhe_total_month = round(OrderModel::where('status', '=', 1)->whereBetweenTime('addtime', $ranges['this_month_start'], $ranges['this_month_end'])->sum('order_zhe_total'), 2);
$order_goodslist_money_month = round(OrderList::whereBetweenTime('addtime', $ranges['this_month_start'], $ranges['this_month_end'])->sum('goodslist_money'), 2);
$order_zhe_total_last_month = round( OrderModel::where('status', '=', 1)->whereBetweenTime('addtime', $ranges['last_month_start'], $ranges['last_month_end'])->sum('order_zhe_total'), 2);
$order_goodslist_money__last_month = round(OrderList::whereBetweenTime('addtime', $ranges['last_month_start'], $ranges['last_month_end'])->sum('goodslist_money'), 2);
View::assign('money_today', $money_today);
View::assign('money_yesterday', $money_yesterday);
View::assign('coupon_today', $coupon_today);
View::assign('score_today', $score_today);
View::assign('score_yesterday', $score_yesterday);
View::assign('money_recovery_today', $money_recovery_today);
View::assign('money_recovery_yesterday', $money_recovery_yesterday);
View::assign('order_zhe_total', $order_zhe_total);
View::assign('order_goodslist_money', $order_goodslist_money);
View::assign('order_goodslist_count', $order_goodslist_count);
View::assign('order_count', $order_count);
View::assign('order_lirun', round($order_zhe_total - $order_goodslist_money, 2));
View::assign('order_lirun_yester', round($order_zhe_total_yester - $order_goodslist_money_yester, 2) . " ($order_zhe_total_yester - $order_goodslist_money_yester)");
View::assign('order_lirun_week', round($order_zhe_total_week - $order_goodslist_money_week, 2) . " ({$order_zhe_total_week} - $order_goodslist_money_week)");
View::assign('order_lirun_last_week', round($order_zhe_total_last_week - $order_goodslist_money__last_week, 2) . " ($order_zhe_total_last_week - $order_goodslist_money__last_week)");
View::assign('order_zhe_total_month', round($order_zhe_total_month - $order_goodslist_money_month, 2). " ($order_zhe_total_month - $order_goodslist_money_month)");
View::assign('order_lirun_last_month', round($order_zhe_total_last_month - $order_goodslist_money__last_month, 2). " ($order_zhe_total_last_month - $order_goodslist_money__last_month)");
// 赋值给模板
View::assign('userCount', $userCount);
View::assign('user_today', $user_today);
View::assign('user_yesterday', $user_yesterday);
View::assign('user_this_week', $user_this_week);
View::assign('user_last_week', $user_last_week);
View::assign('user_this_month', $user_this_month);
View::assign('user_last_month', $user_last_month);
// 充值订单数据
View::assign('order_today', $order_today);
View::assign('order_yesterday', $order_yesterday);
View::assign('order_this_week', $order_this_week);
View::assign('order_last_week', $order_last_week);
View::assign('order_this_month', $order_this_month);
View::assign('order_last_month', $order_last_month);
View::assign('consume_today', $consume_today);
View::assign('consume_yesterday', $consume_yesterday);
View::assign('consume_this_week', $consume_this_week);
View::assign('consume_last_week', $consume_last_week);
View::assign('consume_this_month', $consume_this_month);
View::assign('consume_last_month', $consume_last_month);
View::assign('rmb_consume_today', $rmb_consume_today);
View::assign('rmb_consume_yesterday', $rmb_consume_yesterday);
View::assign('rmb_consume_this_week', $rmb_consume_this_week);
View::assign('rmb_consume_last_week', $rmb_consume_last_week);
View::assign('rmb_consume_this_month', $rmb_consume_this_month);
View::assign('rmb_consume_last_month', $rmb_consume_last_month);
View::assign('ranges', $ranges);
return View::fetch("Statistics/dataStand");
}
}

View File

@ -264,4 +264,7 @@ Route::rule('productcate_del', 'ProductCate/del', 'GET|POST');
//利润统计
Route::rule('statistics_profit', 'Statistics/profit', 'GET');
Route::rule('statistics_profit', 'Statistics/profit', 'GET');
//数据看台
Route::rule('statistics_dataStand', 'Statistics/DataStand', 'GET');

View File

@ -0,0 +1,303 @@
{include file="Public:header2"/}
<style>
.s-row {
margin-top: 5px;
margin-bottom: 5px;
}
</style>
<body>
<div class="layui-fluid">
<div class="layui-card">
<div class="layui-row">
<div class="layui-col-xs6">
<div class="layui-card">
<div class="layui-card-header" style="background-color: yellow;">
总注册人数:
<span style="color: red;">
{$userCount}
</span>
</div>
<div class="layui-card-body" style="padding: 0px;">
<div class="layui-row">
<div class="layui-col-xs6" style="padding: 0px 5px;background-color: #393D49;">
<div class="layui-card" style="background-color: #393D49;color: #fff;">
<div class="layui-card-header" style="color: #fff;">用户注册数据</div>
<div class="layui-card-body">
<div class="layui-row s-row ">
<div class="layui-col-xs6">
今日新增用户: <span class="layui-badge layui-bg-gray">{$user_today}</span>
</div>
<div class="layui-col-xs6">
昨日新增用户: <span
class="layui-badge layui-bg-gray">{$user_yesterday}</span>
</div>
</div>
<div class="layui-row s-row ">
<div class="layui-col-xs6">
本周新增用户: <span
class="layui-badge layui-bg-gray">{$user_this_week}</span>
</div>
<div class="layui-col-xs6">
上周新增用户: <span
class="layui-badge layui-bg-gray">{$user_last_week}</span>
</div>
</div>
<div class="layui-row s-row ">
<div class="layui-col-xs6">
本月新增用户: <span
class="layui-badge layui-bg-gray">{$user_this_month}</span>
</div>
<div class="layui-col-xs6">
上月新增用户: <span
class="layui-badge layui-bg-gray">{$user_last_month}</span>
</div>
</div>
</div>
</div>
</div>
<div class="layui-col-xs6" style="padding: 0px 5px;background-color: #009688;">
<div class="layui-card" style="background-color: #009688;color: #fff;">
<div class="layui-card-header" style="color: #fff;">用户充值数据</div>
<div class="layui-card-body">
<div class="layui-row s-row ">
<div class="layui-col-xs6">
今日充值金额: <span
class="layui-badge layui-bg-gray">{$order_today}</span>
</div>
<div class="layui-col-xs6">
昨日充值金额: <span
class="layui-badge layui-bg-gray">{$order_yesterday}</span>
</div>
</div>
<div class="layui-row s-row ">
<div class="layui-col-xs6">
本周充值金额: <span
class="layui-badge layui-bg-gray">{$order_this_week}</span>
</div>
<div class="layui-col-xs6">
上周充值金额: <span
class="layui-badge layui-bg-gray">{$order_last_week}</span>
</div>
</div>
<div class="layui-row s-row ">
<div class="layui-col-xs6">
本月充值金额: <span
class="layui-badge layui-bg-gray">{$order_this_month}</span>
</div>
<div class="layui-col-xs6">
上月充值金额: <span
class="layui-badge layui-bg-gray">{$order_last_month}</span>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<div class="layui-col-xs6">
<div class="layui-card">
<div class="layui-card-header" style="background-color: #2F3F56;color: #fff;">
消费与虚拟货币
<span style="color: red;">
</span>
</div>
<div class="layui-card-body" style="padding: 0px;">
<div class="layui-row">
<div class="layui-col-xs6" style="padding: 0px 5px;background-color: #21A0BF;">
<div class="layui-card" style="background-color: #21A0BF;color: #fff;">
<div class="layui-card-header" style="color: #fff;">消费数据RMB/全部)</div>
<div class="layui-card-body">
<div class="layui-row s-row ">
<div class="layui-col-xs6">
今日消费人数: <span
class="layui-badge layui-bg-gray">{$rmb_consume_today}/{$consume_today}</span>
</div>
<div class="layui-col-xs6">
昨日消费人数: <span
class="layui-badge layui-bg-gray">{$rmb_consume_yesterday}/{$consume_yesterday}</span>
</div>
</div>
<div class="layui-row s-row ">
<div class="layui-col-xs6">
本周消费人数: <span
class="layui-badge layui-bg-gray">{$rmb_consume_this_week}/{$consume_this_week}</span>
</div>
<div class="layui-col-xs6">
上周消费人数: <span
class="layui-badge layui-bg-gray">{$rmb_consume_last_week}/{$consume_last_week}</span>
</div>
</div>
<div class="layui-row s-row ">
<div class="layui-col-xs6">
本月消费人数: <span
class="layui-badge layui-bg-gray">{$rmb_consume_this_month}/{$consume_this_month}</span>
</div>
<div class="layui-col-xs6">
上月消费人数: <span
class="layui-badge layui-bg-gray">{$rmb_consume_last_month}/{$consume_last_month}</span>
</div>
</div>
</div>
</div>
</div>
<div class="layui-col-xs6" style="padding: 0px 5px;background-color: #FF5722;">
<div class="layui-card" style="background-color: #FF5722;color: #fff;">
<div class="layui-card-header" style="color: #fff;">虚拟货币统计</div>
<div class="layui-card-body">
<div class="layui-row s-row ">
<div class="layui-col-xs6">
今日余额消费: <span
class="layui-badge layui-bg-gray">{$money_today}</span>
</div>
<div class="layui-col-xs6">
今日余额发放: <span
class="layui-badge layui-bg-gray">{$money_recovery_today}</span>
</div>
</div>
<div class="layui-row s-row ">
<div class="layui-col-xs6">
今日积分消费: <span
class="layui-badge layui-bg-gray">{$score_today}</span>
</div>
<div class="layui-col-xs6">
今日消费卷抵扣: <span
class="layui-badge layui-bg-gray">{$coupon_today}</span>
</div>
</div>
<div class="layui-row s-row ">
<div class="layui-col-xs6">
昨日积分消费: <span
class="layui-badge layui-bg-gray">{$score_yesterday}</span>
</div>
<!-- <div class="layui-col-xs6">
昨日余额消费: <span
class="layui-badge layui-bg-gray">{$money_yesterday}</span>
</div> -->
<div class="layui-col-xs6">
昨日余额发放: <span
class="layui-badge layui-bg-gray">{$money_recovery_yesterday}</span>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<div class="layui-row">
<div class="layui-col-xs6">
<div class="layui-card">
<div class="layui-card-header" style="text-align:center;background-color: #7C98CB;">
今日收入汇总
</div>
<div class="layui-card-body" style="padding: 0px;">
<table class="layui-table">
<colgroup>
<col width="150">
<col>
</colgroup>
<tbody>
<tr>
<td>订单收入:</td>
<td>{$order_zhe_total}(收入不包含折扣,不包含优惠卷)</td>
</tr>
<tr>
<td>RMB收入</td>
<td>{$order_today}</td>
</tr>
<tr>
<td>订单出货:</td>
<td>{$order_goodslist_money}</td>
</tr>
<tr>
<td>订单笔数:</td>
<td>{$order_count}</td>
</tr>
<tr>
<td>发数:</td>
<td>{$order_goodslist_count}</td>
</tr>
<tr>
<td>利润:</td>
<td>{$order_lirun}</td>
</tr>
<tr>
<td>利润计算方式:</td>
<td>收入-支出=当日利润</td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<div class="layui-col-xs6">
<div class="layui-card">
<div class="layui-card-header" style="text-align:center;background-color:darkorange;">
今日毛利统计
</div>
<div class="layui-card-body" style="padding: 0px;">
<table class="layui-table">
<colgroup>
<col width="50%">
<col>
</colgroup>
<tbody>
<tr>
<td>今日毛利:{$order_lirun}</td>
<td>昨日毛利:{$order_lirun_yester}</td>
</tr>
<tr>
<td>本周毛利:{$order_lirun_week}</td>
<td>上周毛利:{$order_lirun_last_week}</td>
</tr>
<tr>
<td>本月毛利:{$order_zhe_total_month}</td>
<td>上月毛利:{$order_lirun_last_month}</td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
</div>
</div>
</div>
{include file="Public:footer"/}
<script type="text/javascript">
layui.use(['layer', 'laydate', 'table'], function () {
var $ = layui.$;
//执行一个laydate实例
var laydate = layui.laydate;
laydate.render({
elem: '#addtime'
, type: 'datetime'
, range: true
});
// laydate.render({
// elem: '#endtime'
// // , type: 'datetime'
// // , range: true
// });
})
</script>
</body>
</html>

File diff suppressed because it is too large Load Diff

View File

@ -155,7 +155,7 @@ class Index extends Base
$wxServer = new \app\common\server\Wx($this->app);
$user_base = $wxServer->generateUrlLinks($userId);
$autoload = new \app\common\server\autoload();
$imageData = $autoload->generatePosterWithQR('/www/wwwroot/testbaji.onelight.vip/public/img_poster.jpg', $user_base);
$imageData = $autoload->generatePosterWithQR('/www/wwwroot/119.45.131.215_80/public/img_poster.jpg', $user_base);
if ($imageData) {
header('Content-Type: image/png');
header('Content-Length: ' . strlen($imageData)); // 设置图像长度,帮助浏览器处理流式内容

View File

@ -390,6 +390,7 @@ class Login extends Base
$code = request()->param("code", '');
$wxServer = new \app\common\server\Wx($this->app);
$mobile = $wxServer->getMobile($code);
// return $this->renderError($mobile,[$mobile,$code]);
Db::startTrans();
$res = [];
// $res[] = User::where(['id' => $user['id']])->update([

172
app/command/FlwOpen.php Normal file
View File

@ -0,0 +1,172 @@
<?php
namespace app\command;
use app\common\model\CardLevel;
use app\common\model\Goods;
use app\common\model\GoodsLock;
use app\common\model\ItemCard;
use app\common\model\OrderListSend;
use app\common\model\OrderSale;
use app\common\model\ProductOrder;
use app\common\model\ProductOrderList;
use app\common\model\ProfitPay;
use app\common\model\Shang;
use app\common\model\User;
use app\common\model\UserLevelCoupon;
use app\common\model\UserRecharge;
use app\common\model\Ads;
use app\common\model\CouponReceive as CouponReceiveModel;
use app\common\model\GoodsExtendList as GoodsExtendListModel;
use think\facade\Log;
use app\common\model\GoodsList;
use app\common\model\Order;
use app\common\model\OrderList;
use app\api\controller\Notify;
use think\console\Command;
use think\console\Input;
use think\console\input\Argument;
use think\console\input\Option;
use think\console\Output;
use think\facade\Db;
class FlwOpen extends Command
{
static $shang_prize_id = [10, 33];#抽奖赏品id
static $shang_give_first_id = 1;#赠送(FIRST赏)赏品id
static $shang_give_arr = [2, 3, 4];#赠送(LAST赏 最终赏 全局赏)赏品id
static $shang_give_w_id = 4;#赠送(全局赏)赏品id
static $shang_give_quan_id = 5;#赠送(拳王赏)赏品id
static $secretKey = null;
static $secretKeyAccount = null;
protected function configure()
{
$this->setName('FlwOpen')->setDescription('福利屋开奖');
}
protected function execute(Input $input, Output $output)
{
//php /www/wwwroot/xinglanmh.shequtuangou.vip think FlwOpen
$time = date('Y-m-d H:i:s', time());
Log::info('福利屋开奖' . $time);
Log::info('福利屋开奖' . $time);
Log::info('福利屋开奖' . $time);
print('福利屋开奖' . $time);
print('福利屋开奖' . $time);
print_r(time());
// $notify=new Notify();
//cd /www/wwwroot/xinglanmh.shequtuangou.vip && php think FlwOpen
$goodslist = Goods::where('status', 1)->where('is_flw', 1)->where('is_open', 0)->select()->toArray();
foreach ($goodslist as $k => $v) {
Log::info('福利屋开奖$goods_id' . $v['id']);
Log::info('福利屋开奖open_time' . date('Y-m-d H:i:s', $v['open_time']));
print_r('福利屋开奖open_time' . date('Y-m-d H:i:s', $v['open_time']));
if($v['open_time']<time()){
Log::info('福利屋开奖$goods_id时间小于所以开奖啦' . $v['id']);
print_r('福利屋开奖$goods_id时间小于所以开奖啦' . $v['id']);
$this->special_prize_notice_time($v['id']);
}
}
$time = date('Y-m-d H:i:s', time());
$output->writeln('success' . $time);
}
/**
* 特殊奖品开奖 LAST 最终赏 全局赏 到时间开奖修改此处
* @param $order 订单信息
* @param $first_count
*/
protected function special_prize_notice_time($goods_id)
{
$res = [];
// $goods_id = $order['goods_id'];
// $num = $order['num'];
// $order_type = $order['order_type'];
// $goods_id=request()->param('goods_id/d', 0);
// $num = request()->param('goods_num/d', 0); #第几箱
$num = 1; #第几箱
$order_type =6;
print_r('$goods_id'.$goods_id);
#特殊奖品存在
$special_prize = GoodsList::where('goods_id', '=', $goods_id)
->where('num', '=', $num)
->where('surplus_stock', '>', 0)
->where('shang_id', 'in', self::$shang_give_arr)
->select()->toArray();
$surplus_give_stock = $special_prize ? array_sum(array_column($special_prize, 'surplus_stock')) : 0;
if ($special_prize && $surplus_give_stock > 0) {
#所有奖品信息
$all_order_list = OrderList::field('id,user_id')
->where('goods_id', '=', $goods_id)
->where('num', '=', $num)
->where('order_type', '=', $order_type)
->where('shang_id', 'between', self::$shang_prize_id)
->order('id asc')
->select()->toArray();
$order_goods = [];
foreach ($special_prize as $k => $v) {
if ($v['shang_id'] == 4) {#全局赏
for ($surplus_stock_i = 0; $surplus_stock_i < $v['surplus_stock']; $surplus_stock_i++) {
$overall_order_list = $all_order_list;
shuffle($overall_order_list);
shuffle($overall_order_list);
$prize_info = $overall_order_list[0];
$user_id = $prize_info['user_id'];
#特殊赏中奖订单id
$order_list_id = $prize_info['id'];
#中奖奖项
$ordinary_prize_info = $v;
$order_goods[] = [
'order_id' => 0,
'user_id' => $user_id,
'status' => 0,#0未操作 1选择兑换 2选择发货
'goods_id' => $goods_id,
'num' => $num,
'shang_id' => $ordinary_prize_info['shang_id'],
'goodslist_id' => $ordinary_prize_info['id'],
'goodslist_title' => $ordinary_prize_info['title'],
'goodslist_imgurl' => $ordinary_prize_info['imgurl'],
'goodslist_price' => $ordinary_prize_info['price'],
'goodslist_money' => $ordinary_prize_info['money'],
'goodslist_type' => $ordinary_prize_info['goods_type'],
'goodslist_sale_time' => $ordinary_prize_info['sale_time'],
'addtime' => time(),
'prize_code' => $ordinary_prize_info['prize_code'],
'order_type' => $order_type,
'order_list_id' => $order_list_id,
];
print_r($user_id.'中奖'.$goods_id.'商品'.$v['title']);
#减少库存
$res[] = GoodsList::field('surplus_stock')
->where(['id' => $ordinary_prize_info['id']])
->dec('surplus_stock')
->update();
}
}
}
#新增奖品列表
$res[] = OrderList::insertAll($order_goods);
Goods::where(['id' => $goods_id])->update([
'is_open' => 1
]);
Log::info('福利屋开奖$goods_idupdate_is_open' . $goods_id);
} else {
$res[] = 1;
}
return $res;
}
}

View File

@ -15,6 +15,7 @@ use think\facade\Db;
class Zd extends Command
{
//*/30 * * * * /www/server/cron/ZDFH
protected function configure()
{
$this->setName('Zd')->setDescription('自动发货');
@ -47,7 +48,7 @@ class Zd extends Command
}
// $data2 = Db::name('market_order')->field('id,user_id,order_num,zdfh_is,zdfh_time,addtime')->where('zdfh_is','in',[0,1])->select()->toArray();
// if($data2){0.
// if($data2){
// foreach ($data2 as $value2){
// if($value2['zdfh_is'] == 0 && (time()-180) > $value2['addtime']){
// Db::name('market_order')->where('id',$value2['id'])->update(['zdfh_is'=>1,'zdfh_time'=>(time()+300)]);

View File

@ -58,6 +58,7 @@ class Wx extends MyController
$access_token = $this->get_access_token();
$mobile_url = "https://api.weixin.qq.com/wxa/business/getuserphonenumber?access_token=" . $access_token;
$mobile_info = $this->post_curl_data($mobile_url, ['code' => $code]);
// return $mobile_info;
if ($mobile_info['errcode'] == 0) {
return $mobile_info['phone_info']['phoneNumber'];
} else {
@ -269,6 +270,11 @@ class Wx extends MyController
public function post_order($openid, $access_token, $order_num, $title = '订单发货')
{
$date = new \DateTime();
//2023-08-07T17:16:31
//2025-03-04T21:06:59
// 格式化时间为 yyyy-MM-dd HH:mm:ss
$formattedDate = $date->format('Y-m-d\TH:i:s');
$request_url = "https://api.weixin.qq.com/wxa/sec/order/upload_shipping_info?access_token=" . $access_token;
$param = '{
"order_key": {
@ -276,14 +282,14 @@ class Wx extends MyController
"mchid":"' . self::$mch . '",
"out_trade_no":"' . $order_num . '"
},
"logistics_type": 4,
"logistics_type": 3,
"delivery_mode": 1,
"shipping_list": [
{
"item_desc": "本单购买商品已发放至[小程序盒柜]"
}
],
"upload_time": "2023-08-07T17:16:31+08:00",
"upload_time": "' . $formattedDate . '+08:00",
"payer": {
"openid":"' . $openid . '"
}
@ -300,6 +306,12 @@ class Wx extends MyController
public function post_order_one($openid, $access_token, $order_num, $title = '订单发货')
{
// 创建一个 DateTime 对象,设置为当前时间
$date = new \DateTime();
//2023-08-07T17:16:31
//2025-03-04T21:06:59
// 格式化时间为 yyyy-MM-dd HH:mm:ss
$formattedDate = $date->format('Y-m-d\TH:i:s');
$request_url = "https://api.weixin.qq.com/wxa/sec/order/upload_shipping_info?access_token=" . $access_token;
$param = '{
"order_key": {
@ -307,14 +319,14 @@ class Wx extends MyController
"mchid":"' . self::$mch . '",
"out_trade_no":"' . $order_num . '"
},
"logistics_type": 4,
"logistics_type": 3,
"delivery_mode": 1,
"shipping_list": [
{
"item_desc": "本单购买商品已发放至[小程序盒柜]"
}
],
"upload_time": "2023-08-07T17:16:31+08:00",
"upload_time": "' . $formattedDate . '+08:00",
"payer": {
"openid":"' . $openid . '"
}

View File

@ -19,7 +19,7 @@ class autoload
$backgroundHeight = imagesy($backgroundImage);
// 生成二维码
$qrSize = 500;
$qrSize = 850;
$qrCode = new QrCode($qrText);
$qrCode->setSize($qrSize);
$writer = new PngWriter();
@ -30,7 +30,7 @@ class autoload
// 计算二维码的放置位置
$qrX = ($backgroundWidth - $qrSize) / 2;
$qrY = ($backgroundHeight - $qrSize) * 0.73;
$qrY = ($backgroundHeight - $qrSize) * 0.78;
// 将二维码绘制到背景图上
imagecopy($backgroundImage, $qrImageResource, $qrX, $qrY, 0, 0, $qrSize, $qrSize);

View File

@ -64,10 +64,16 @@ return [
[
'name' =>'数据统计',
'son' => [
[
'url' => '/admin/statistics_dataStand',
'name' => '数据看台',
],
[
'url' => '/admin/statistics_profit',
'name' => '盒子利润统计',
]
],
],
],
[

BIN
public/dow.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 899 B

BIN
public/img_poster.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 540 KiB