115 lines
4.1 KiB
PHP
Executable File
115 lines
4.1 KiB
PHP
Executable File
<?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);
|
|
}
|
|
}
|
|
|
|
|
|
}
|