ReturnUserReward.php 4.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114
  1. <?php
  2. /**
  3. * ReturnUserReward.php UTF-8
  4. * 新用户奖励回退
  5. *
  6. * @date : 2018/10/25 15:55
  7. *
  8. * @license 这不是一个自由软件,未经授权不许任何使用和传播。
  9. * @author : chenbingling <cbl@huosdk.com>
  10. * @version : HuoMap 1.0
  11. */
  12. namespace console\index\controller;
  13. use huo\controller\agent\AgentCache;
  14. use huo\controller\common\CommonFunc;
  15. use huo\controller\member\MemCache;
  16. use huo\model\integral\MemItgLogModel;
  17. use huo\model\user\UserModel;
  18. use huolib\constant\IaConst;
  19. use huomp\model\member\UnusualMemModel;
  20. use think\console\Command;
  21. use think\console\Input;
  22. use think\console\Output;
  23. use think\Log;
  24. class ReturnUserReward extends Command {
  25. protected function configure() {
  26. $this->setName('return_user_reward')->setDescription('新用户奖励bug,数据修复');
  27. }
  28. protected function execute(Input $input, Output $output) {
  29. set_time_limit(0);
  30. $_mil_model = new MemItgLogModel();
  31. $_agent_model = new UserModel();
  32. $_um_model = new UnusualMemModel();
  33. $_all_list = $_mil_model->field('mem_id,count(mem_id) AS mem_count')
  34. ->where(
  35. 'itg_type = 1 AND sub_ia_id = 81234671 AND ia_id = 12 AND create_time > 1540396800 AND is_delete=2'
  36. )
  37. ->group('mem_id')
  38. ->having('count(mem_id) > 1')->select();
  39. foreach ($_all_list as $member) {
  40. $_agent_id = $_agent_model->getIdByMemId($member['mem_id']);
  41. if (empty($_agent_id)) {
  42. Log::write('新用户奖励bug,数据修复,set1玩家信息'.json_encode($member), Log::ERROR);
  43. continue;
  44. }
  45. $_where = [
  46. 'mem_id' => $member['mem_id'],
  47. 'is_delete' => 2,
  48. ];
  49. $_field = ['id,itg_type,integral_total,my_integral,integral,ia_id'];
  50. $_list = $_mil_model->where($_where)->field($_field)->order('id asc')->select();
  51. if (!empty($_list)) {
  52. $_list = $_list->toArray();
  53. $_itg_total = 0; //修正总积分
  54. $_my_integral = 0; //修正玩家当前积分
  55. $_err_total = 0; //错误总积分
  56. foreach ($_list as $_k => $_v) {
  57. $_err_total = $_v['integral_total'];
  58. if (0 == $_k || 1 == $_k) {
  59. $_itg_total = $_v['integral_total'];
  60. $_my_integral = $_v['my_integral'];
  61. continue;
  62. }
  63. $_map = ['id' => $_v['id']];
  64. $_time = time();
  65. if (IaConst::IA_OPEN_GAME == $_v['ia_id']) {
  66. $_up_data = [
  67. 'is_delete' => 1,
  68. 'delete_time' => $_time
  69. ];
  70. } else {
  71. if (1 == $_v['itg_type']) {
  72. $_itg_total += $_v['integral'];
  73. $_my_integral += $_v['integral'];
  74. $_up_data = [
  75. 'integral_total' => $_itg_total,
  76. 'my_integral' => $_my_integral,
  77. ];
  78. } else {
  79. $_up_data = [
  80. 'integral_total' => $_itg_total,
  81. 'my_integral' => $_my_integral - $_v['integral'],
  82. ];
  83. }
  84. }
  85. $_mil_model->where($_map)->update($_up_data);
  86. }
  87. $_cha_total = $_err_total - $_itg_total;
  88. if (!empty($_cha_total)) {
  89. /* 玩家余额回滚 */
  90. $_money = ($_cha_total / CommonFunc::getGoldRmbRate());
  91. $_ae_data = AgentCache::ins()->getAgentExtByAgentId($_agent_id);
  92. $_share_total = $_ae_data['share_total'];
  93. $_share_remain = $_ae_data['share_remain'];
  94. $_share_total -= $_money;
  95. $_share_remain -= $_money;
  96. $_ae_data['share_total'] = $_share_total > 0 ? $_share_total : 0;
  97. $_ae_data['share_remain'] = $_share_remain > 0 ? $_share_remain : 0;
  98. AgentCache::ins()->updateAgentExt($_agent_id, $_ae_data, true);
  99. /* 玩家积分回滚 */
  100. $_me_data = MemCache::ins()->getMeInfoById($member['mem_id']);
  101. $_me_data['integral_total'] = $_itg_total > 0 ? $_itg_total : 0;
  102. $_me_data['my_integral'] = $_my_integral > 0 ? $_my_integral : 0;
  103. MemCache::ins()->updateMeCache($member['mem_id'], $_me_data);
  104. }
  105. }
  106. /* 删除玩家标记 */
  107. $_um_model->deleteByAgentId($_agent_id);
  108. }
  109. }
  110. }