manghe/app/command/RankWeek.php
2025-03-21 18:43:39 +08:00

115 lines
3.9 KiB
PHP

<?php
namespace app\command;
use app\common\model\GoodsList;
use app\common\model\RankWeek as RankWeekModel;
use app\common\model\Order;
use app\common\model\OrderList;
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 RankWeek extends Command
{
protected function configure()
{
$this->setName('RankWeek')->setDescription('周榜定榜');
}
protected function execute(Input $input, Output $output)
{
#上周开始时间
$beginLastWeek = mktime(0, 0, 0, date('m'), date('d') - date('w') + 1 - 7, date('Y'));
#上周结束时间
$endLastWeek = mktime(23, 59, 59, date('m'), date('d') - date('w') + 7 - 7, date('Y'));
// echo date('Y-m-d H:i:s', $beginLastWeek);
// echo "\r\n";
// echo date('Y-m-d H:i:s', $endLastWeek);
// die;
#添加时间
$addtime = time();
#周时间范围
$week_time = date('Y-m-d H:i:s', $beginLastWeek) . ' - ' . date('Y-m-d H:i:s', $endLastWeek);
$data = Order::field('user_id,sum(`order_total`) as order_total')
->append(['user_info'])
->where('addtime', 'between', [$beginLastWeek, $endLastWeek])
->where('status', '=', 1)
->where('order_type', '<', 5)
->group('user_id')
->order('order_total desc,user_id asc')
->limit(30)
->select()->toArray();
Db::startTrans();
$res = [];
#定榜记录
$save_rank = [];
foreach ($data as $key => $value) {
$goods_id = -1;
$rank = $key + 1;
$order_total = $value['order_total'] * 1;
$order_list_id = 0;
#奖品信息
$prize_info = GoodsList::where('goods_id', '=', $goods_id)
->where('rank', '=', $rank)
->find();
if ($prize_info) {
$res[] = $order_list_id = OrderList::insertGetId([
'order_id' => 0,
'user_id' => $value['user_id'],
'status' => 0,#0未操作 1选择兑换 2选择发货
'goods_id' => $goods_id,
'num' => 0,
'shang_id' => $prize_info['shang_id'],
'goodslist_id' => $prize_info['id'],
'goodslist_title' => $prize_info['title'],
'goodslist_imgurl' => $prize_info['imgurl'],
'goodslist_price' => $prize_info['price'],
'goodslist_money' => $prize_info['money'],
'goodslist_type' => $prize_info['goods_type'],
'goodslist_sale_time' => $prize_info['sale_time'],
'addtime' => $addtime,
'prize_code' => $prize_info['prize_code'],
'order_type' => 7,
]);
$prize_title = $prize_info['title'];
$prize_imgurl = $prize_info['imgurl'];
} else {
$prize_title = '';
$prize_imgurl = '';
}
$save_rank[] = [
'user_id' => $value['user_id'],
'rank' => $rank,
'money' => $order_total,
'week_time' => $week_time,
'addtime' => $addtime,
'order_list_id' => $order_list_id,
'prize_title' => $prize_title,
'prize_imgurl' => $prize_imgurl,
];
}
#定榜记录
if ($save_rank) {
$res[] = RankWeekModel::insertAll($save_rank);
}
if (resCheck($res)) {
Db::commit();
$time = date('Y-m-d H:i:s', time());
$output->writeln('success' . $time);
} else {
Db::rollback();
$time = date('Y-m-d H:i:s', time());
$output->writeln('error' . $time);
}
}
}