HunterRankLogic.php 4.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141
  1. <?php
  2. /**
  3. * HunterRankLogic.php UTF-8
  4. * 猎人平台逻辑
  5. *
  6. * @date : 2018/9/20 19:42
  7. *
  8. * @license 这不是一个自由软件,未经授权不许任何使用和传播。
  9. * @author : chenbingling <cbl@huosdk.com>
  10. * @version : HuoMP 1.0
  11. */
  12. namespace huomp\logic\hunter;
  13. use huo\model\user\AgentExtModel;
  14. use huolib\constant\DataConst;
  15. use huolib\tool\StrUtils;
  16. use huomp\logic\finance\IncomeListLogic;
  17. use huomp\model\common\CommonModel;
  18. use huomp\model\hunter\HunterRankModel;
  19. class HunterRankLogic extends CommonModel {
  20. protected function getWhere($param = []) {
  21. $_map = [];
  22. return $_map;
  23. }
  24. /**
  25. * 获取虚拟排行列表
  26. *
  27. * @param array $param
  28. * @param string $page
  29. * @param string $order
  30. *
  31. * @return array
  32. */
  33. public function getList($param = [], $page = '1,10', $order = '-update_time') {
  34. $_rdata = ['count' => 0, 'list' => []];
  35. $_model = new HunterRankModel();
  36. $_map = $this->getWhere($param);
  37. $_count = $_model->where($_map)->count();
  38. if (empty($_count)) {
  39. return $_rdata;
  40. }
  41. $_order = $_model->orderFilter($order);
  42. $_data = $_model->with('mem')
  43. ->where($_map)
  44. ->order($_order)
  45. ->page($page)
  46. ->select();
  47. if (is_object($_data)) {
  48. $_data = $_data->toArray();
  49. }
  50. if (empty($_data)) {
  51. return $_rdata;
  52. }
  53. $_rdata['count'] = $_count;
  54. $_rdata['list'] = $_data;
  55. return $_rdata;
  56. }
  57. /**
  58. * 获取后台玩家数据,排除已在虚拟列表的玩家
  59. *
  60. * @param $where
  61. * @param string $page
  62. *
  63. * @return array
  64. */
  65. public function getAgentExt($where, $page = '1,10') {
  66. $_map = [];
  67. if (!empty($where['role_id'])) {
  68. $_map['mpagent.role_id'] = $where['role_id'];
  69. }
  70. if (!empty($where['nickname'])) {
  71. $_map['mpagent.user_nicename'] = $where['nickname'];
  72. }
  73. /* 排除已在虚拟列表玩家 */
  74. $_mem_id = (new HunterRankModel())->getMemIds();
  75. if (!empty($_mem_id)) {
  76. $_map['mpagent.mem_id'] = ['not in', $_mem_id];
  77. }
  78. $_model = new AgentExtModel();
  79. $_count = $_model->with('mpagent')->where($_map)->count();
  80. if (empty($_count)) {
  81. return [
  82. 'count' => 0,
  83. 'list' => []
  84. ];
  85. }
  86. $_order = 'share_total desc';
  87. $_data_list = $_model
  88. ->with('mpagent')
  89. ->where($_map)
  90. ->order($_order)
  91. ->page($page)
  92. ->select();
  93. if (is_object($_data_list)) {
  94. $_data_list = $_data_list->toArray();
  95. }
  96. if (empty($_data_list)) {
  97. return [
  98. 'count' => $_count,
  99. 'list' => []
  100. ];
  101. }
  102. $_data = [];
  103. foreach ($_data_list as $_item) {
  104. $_data[] = [
  105. 'avatar' => !empty($_item['mpagent']) ? $_item['mpagent']['avatar'] : '',
  106. 'nickname' => !empty($_item['mpagent']) ? $_item['mpagent']['user_nicename'] : '',
  107. 'mem_id' => !empty($_item['mpagent']) ? $_item['mpagent']['mem_id'] : 0,
  108. 'share_total' => StrUtils::formatNumber($_item['share_total']),
  109. ];
  110. }
  111. $_rdata = [
  112. 'count' => $_count,
  113. 'list' => $_data
  114. ];
  115. return $_rdata;
  116. }
  117. /**
  118. * 获取 静态html 展示数据
  119. *
  120. * @return mixed
  121. */
  122. public function getHtmlList() {
  123. $_param = ['range' => DataConst::RANK_RANGE_WEEK];
  124. $_data = $this->getList([], '1,10', '-day_money');
  125. return $_data['list'];
  126. }
  127. /* 获取虚拟排行榜最新更新的时间用于cdn 防止刷新*/
  128. public function lastUpdateTime() {
  129. return (new HunterRankModel())->order('update_time DESC')->limit(1)->value('update_time');
  130. }
  131. }