123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129 |
- <?php
- namespace app\admin\command;
- use app\common\library\Redis;
- use think\console\Command;
- use think\console\Input;
- use think\console\Output;
- use think\Log;
- use think\Request;
- class BookCollectSum extends BaseCommand
- {
- protected function configure()
- {
- $this->setName('BookCollectSum')->setDescription('BookCollect数据汇总');
- }
- protected function execute(Input $input, Output $output)
- {
- Request::instance()->module('admin'); //cli模式下无法获取到当前的项目模块,手动指定一下
- $redis = Redis::instance();
- $yesterday = date('Ymd', strtotime('-1 days'));
- Log::info('BookCollectSum: 渠道列表RedisKey:' . "BC-CL:" . $yesterday);
- try {
- //获取渠道列表
- if (!$channel_list = $redis->smembers("BC-CL:" . $yesterday)) {
- Log::info("BookCollectSum: RedisKey:BC-CL:{$yesterday} Date:{$yesterday} 渠道列表为空");
- $output->info("BookCollectSum: RedisKey:BC-CL:{$yesterday} Date:{$yesterday} 渠道列表为空");
- return;
- }
- foreach ($channel_list as $channel_id) {
- //获取渠道书籍列表
- Log::info('BookCollectSum: 渠道书籍列表RedisKey:' . "BC-BL:{$channel_id}:" . $yesterday);
- $output->info('BookCollectSum: 渠道书籍列表RedisKey:' . "BC-BL:{$channel_id}:" . $yesterday);
- if (!$book_list = $redis->smembers("BC-BL:{$channel_id}:" . $yesterday)) {
- Log::info("BookCollectSum: RedisKey:BC-BL:{$channel_id}:{$yesterday} Date:{$yesterday} ChannelID:{$channel_id} 书籍列表为空,跳过统计");
- $output->info("BookCollectSum: RedisKey:BC-BL:{$channel_id}:{$yesterday} Date:{$yesterday} ChannelID:{$channel_id} 书籍列表为空,跳过统计");
- continue;
- }
- foreach ($book_list as $book_id) {
- Log::info('BookCollectSum: 书籍RedisKey:' . "BC:{$book_id}:{$channel_id}:{$yesterday}");
- $output->info('BookCollectSum: 书籍RedisKey:' . "BC:{$book_id}:{$channel_id}:{$yesterday}");
- $data = json_decode($redis->get("BC:{$book_id}:{$channel_id}:{$yesterday}"), true);
- Log::info('BookCollectSum: 书籍统计正文 key:' . "BC:{$book_id}:{$channel_id}:{$yesterday} data:" . json_encode($data));
- $output->info('BookCollectSum: 书籍统计正文 key:' . "BC:{$book_id}:{$channel_id}:{$yesterday} data:" . json_encode($data));
- $count_map = [
- 'type' => '3',
- 'admin_id' => $channel_id,
- 'book_id' => $book_id,
- ];
- $count_data = model('BookCollect')->where($count_map)->find();
- if ($count_data) {
- Log::info("BookCollect Source Data: admin_id:{$channel_id} book_id:{$book_id} data:" . json_encode($count_data->toArray()));
- $output->info("BookCollect Source Data: admin_id:{$channel_id} book_id:{$book_id} data:" . json_encode($count_data->toArray()));
- $update_data['uv'] = $count_data['uv'];
- $update_data['pv'] = $count_data['pv'];
- $update_data['recharge_suc_users'] = $count_data['recharge_suc_users'];
- $update_data['recharge_users'] = $count_data['recharge_users'];
- $update_data['recharge_money'] = $count_data['recharge_money'] + ($data['recharge_money'] ?? 0) * 1 / 100;
- $update_data['recharge_num'] = $count_data['recharge_num'] + ($data['recharge_num'] ?? 0);
- $update_data['spending_count_kandian'] = $count_data['spending_count_kandian'] + ($data['spending_count_kandian'] ?? 0);
- $update_data['spending_recharge_kandian'] = $count_data['spending_recharge_kandian'] + ($data['spending_recharge_kandian'] ?? 0);
- $update_data['spending_free_kandian'] = $count_data['spending_free_kandian'] + ($data['spending_free_kandian'] ?? 0);
- $update_data['spending_users'] = $count_data['spending_users'] + ($data['spending_users'] ?? 0);
- $update_data['spending_num'] = $count_data['spending_num'] + ($data['spending_num'] ?? 0);
- Log::info("BookCollect Update Data: AdminId:{$channel_id} BookId:{$book_id} Data:" . json_encode($update_data));
- $output->info("BookCollect Update Data: AdminId:{$channel_id} BookId:{$book_id} Data:" . json_encode($update_data));
- if ($is_update = $count_data->where($count_map)->update($update_data)) {
- Log::info('BookCollect update sql success');
- $output->info('BookCollect update sql success');
- } else {
- Log::error('BookCollect update sql failed');
- $output->error('BookCollect update sql failed');
- }
- } else {
- $insert_data = [
- 'type' => '3',
- 'admin_id' => $channel_id,
- 'book_id' => $book_id,
- 'createdate' => '20180101',
- 'uv' => 0,
- 'pv' => 0,
- 'recharge_users' => 0,
- 'recharge_suc_users' => 0,
- 'recharge_money' => ($data['recharge_money'] ?? 0) * 1 / 100,
- 'recharge_num' => ($data['recharge_num'] ?? 0),
- 'spending_count_kandian' => ($data['spending_count_kandian'] ?? 0),
- 'spending_recharge_kandian' => ($data['spending_recharge_kandian'] ?? 0),
- 'spending_free_kandian' => ($data['spending_free_kandian'] ?? 0),
- 'spending_users' => ($data['spending_users'] ?? 0),
- 'spending_num' => ($data['spending_num'] ?? 0),
- 'createtime' => time(),
- 'updatetime' => time()
- ];
- Log::info("BookCollect Source Insert Data: AdminId:{$channel_id} BookId:{$book_id} Data:" . json_encode($insert_data));
- $output->error("BookCollect Source Insert Data: AdminId:{$channel_id} BookId:{$book_id} Data:" . json_encode($insert_data));
- if ($is_insert = model('BookCollect')->insert($insert_data)) {
- Log::info('BookCollect insert sql success');
- $output->info('BookCollect insert sql success');
- } else {
- Log::error('BookCollect insert sql failed');
- $output->error('BookCollect insert sql failed');
- }
- }
- }
- }
- } catch (\Exception $exception) {
- $msg = 'BookCollect '.json_encode([
- "code" => $exception->getCode(),
- "file" => $exception->getFile(),
- "line" => $exception->getLine(),
- "msg" => $exception->getMessage(),
- "trace" => $exception->getTraceAsString(),
- ], JSON_UNESCAPED_UNICODE);
- Log::error($msg);
- $output->error($msg);
- }
- Log::info('BookCollect over');
- $output->info('BookCollect over');
- }
- }
|