<?php /** * ReturnUserReward.php UTF-8 * 新用户奖励回退 * * @date : 2018/10/25 15:55 * * @license 这不是一个自由软件,未经授权不许任何使用和传播。 * @author : chenbingling <cbl@huosdk.com> * @version : HuoMap 1.0 */ namespace console\index\controller; use huo\controller\agent\AgentCache; use huo\controller\common\CommonFunc; use huo\controller\member\MemCache; use huo\model\integral\MemItgLogModel; use huo\model\user\UserModel; use huolib\constant\IaConst; use huomp\model\member\UnusualMemModel; use think\console\Command; use think\console\Input; use think\console\Output; use think\Log; class ReturnUserReward extends Command { protected function configure() { $this->setName('return_user_reward')->setDescription('新用户奖励bug,数据修复'); } protected function execute(Input $input, Output $output) { set_time_limit(0); $_mil_model = new MemItgLogModel(); $_agent_model = new UserModel(); $_um_model = new UnusualMemModel(); $_all_list = $_mil_model->field('mem_id,count(mem_id) AS mem_count') ->where( 'itg_type = 1 AND sub_ia_id = 81234671 AND ia_id = 12 AND create_time > 1540396800 AND is_delete=2' ) ->group('mem_id') ->having('count(mem_id) > 1')->select(); foreach ($_all_list as $member) { $_agent_id = $_agent_model->getIdByMemId($member['mem_id']); if (empty($_agent_id)) { Log::write('新用户奖励bug,数据修复,set1玩家信息'.json_encode($member), Log::ERROR); continue; } $_where = [ 'mem_id' => $member['mem_id'], 'is_delete' => 2, ]; $_field = ['id,itg_type,integral_total,my_integral,integral,ia_id']; $_list = $_mil_model->where($_where)->field($_field)->order('id asc')->select(); if (!empty($_list)) { $_list = $_list->toArray(); $_itg_total = 0; //修正总积分 $_my_integral = 0; //修正玩家当前积分 $_err_total = 0; //错误总积分 foreach ($_list as $_k => $_v) { $_err_total = $_v['integral_total']; if (0 == $_k || 1 == $_k) { $_itg_total = $_v['integral_total']; $_my_integral = $_v['my_integral']; continue; } $_map = ['id' => $_v['id']]; $_time = time(); if (IaConst::IA_OPEN_GAME == $_v['ia_id']) { $_up_data = [ 'is_delete' => 1, 'delete_time' => $_time ]; } else { if (1 == $_v['itg_type']) { $_itg_total += $_v['integral']; $_my_integral += $_v['integral']; $_up_data = [ 'integral_total' => $_itg_total, 'my_integral' => $_my_integral, ]; } else { $_up_data = [ 'integral_total' => $_itg_total, 'my_integral' => $_my_integral - $_v['integral'], ]; } } $_mil_model->where($_map)->update($_up_data); } $_cha_total = $_err_total - $_itg_total; if (!empty($_cha_total)) { /* 玩家余额回滚 */ $_money = ($_cha_total / CommonFunc::getGoldRmbRate()); $_ae_data = AgentCache::ins()->getAgentExtByAgentId($_agent_id); $_share_total = $_ae_data['share_total']; $_share_remain = $_ae_data['share_remain']; $_share_total -= $_money; $_share_remain -= $_money; $_ae_data['share_total'] = $_share_total > 0 ? $_share_total : 0; $_ae_data['share_remain'] = $_share_remain > 0 ? $_share_remain : 0; AgentCache::ins()->updateAgentExt($_agent_id, $_ae_data, true); /* 玩家积分回滚 */ $_me_data = MemCache::ins()->getMeInfoById($member['mem_id']); $_me_data['integral_total'] = $_itg_total > 0 ? $_itg_total : 0; $_me_data['my_integral'] = $_my_integral > 0 ? $_my_integral : 0; MemCache::ins()->updateMeCache($member['mem_id'], $_me_data); } } /* 删除玩家标记 */ $_um_model->deleteByAgentId($_agent_id); } } }