AgentGameLogic.php 7.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173
  1. <?php
  2. /**
  3. * AgentGameLogic.php UTF-8
  4. * huosdk_mini_program
  5. *
  6. * @date : 2018/9/6 14:12
  7. *
  8. * @license 这不是一个自由软件,未经授权不许任何使用和传播。
  9. * @author : chenbingling <cbl@huosdk.com>
  10. * @version : HUOSDK 8.0
  11. */
  12. namespace huomp\logic\agent;
  13. use huo\logic\member\CpLogic;
  14. use huo\model\agent\AgentGameModel;
  15. use huo\model\game\GameModel;
  16. use huo\model\rate\GameRateModel;
  17. use huo\model\user\UserModel;
  18. use huolib\constant\CommonConst;
  19. use huolib\constant\GameConst;
  20. use huomp\model\common\CommonModel;
  21. class AgentGameLogic extends CommonModel {
  22. /**
  23. * @param array $param
  24. *
  25. * @return array
  26. */
  27. protected function getWhere($param = []) {
  28. $_map = [];
  29. if (!empty($param['start_time']) && !empty($param['end_time'])) {
  30. $_map['agent_game_model.create_time']
  31. = [
  32. 'between',
  33. [
  34. strtotime($param['start_time']),
  35. CommonConst::CONST_DAY_SECONDS + strtotime($param['end_time'])
  36. ]
  37. ];
  38. } elseif (!empty($param['start_time'])) {
  39. $_map['agent_game_model.create_time'] = ['egt', strtotime($param['start_time'])];
  40. } elseif (!empty($param['end_time'])) {
  41. $_map['agent_game_model.create_time'] = ['elt',
  42. CommonConst::CONST_DAY_SECONDS + strtotime($param['end_time'])];
  43. }
  44. if (!empty($param['role_id'])) {
  45. $_role_ids = [$param['role_id']];
  46. if (is_array($param['role_id'])) {
  47. $_role_ids = $param['role_id'];
  48. }
  49. $_agent_ids = (new UserModel())->getIdsByRoleId($_role_ids);
  50. $_map['agent_id'] = ['in', $_agent_ids];
  51. }
  52. if (!empty($param['agent_id'])) {
  53. $_map['agent_id'] = $param['agent_id'];
  54. }
  55. if (!empty($param['parent_id'])) {
  56. $_map['parent_id'] = $param['parent_id'];
  57. }
  58. if (!empty($param['sub_agent_id'])) {
  59. $_map['agent_id'] = $param['sub_agent_id'];
  60. }
  61. if (!empty($param['agent_name'])) {
  62. $_agent_id = (new UserModel())->getIdByName($param['agent_name']);
  63. $_map['agent_id'] = $_agent_id;
  64. }
  65. if (!empty($param['classify'])) {
  66. $_map['classify'] = $param['classify'];
  67. }
  68. if (!empty($param['game_id'])) {
  69. $_map['app_id'] = $param['game_id'];
  70. }
  71. if (!empty($param['promote_switch'])) {
  72. $_map['game.promote_switch'] = $param['promote_switch'];
  73. }
  74. if (!empty($param['app_id'])) {
  75. $_map['app_id'] = $param['app_id'];
  76. }
  77. if (!empty($param['status'])) {
  78. $_map['agent_game_model.status'] = $param['status'];
  79. }
  80. $_map['agent_game_model.is_delete'] = CommonConst::CONST_NOT_DELETE;
  81. return $_map;
  82. }
  83. /**
  84. * 获取游戏渠道列表
  85. *
  86. * @param array $where
  87. * @param string $page
  88. * @param string $order
  89. *
  90. * @return mixed
  91. * @throws \think\db\exception\DataNotFoundException
  92. * @throws \think\db\exception\ModelNotFoundException
  93. * @throws \think\exception\DbException
  94. */
  95. public function getAgentGames($where = [], $page = '1,10', $order = '-create_time') {
  96. $_map = $this->getWhere($where);
  97. $_map['game.status'] = GameConst::GAME_STATUS_ON;
  98. $_ag_model = new AgentGameModel();
  99. $_count = $_ag_model->with('game')->where($_map)->count();
  100. if (empty($_count)) {
  101. $_rdata['count'] = 0;
  102. $_rdata['list'] = [];
  103. return $_rdata;
  104. }
  105. $_field = 'classify as classify_label';
  106. $_order = $this->orderFilter($order);
  107. $_games = $_ag_model
  108. ->with('rate,gamerate,agent,game,gamemini')
  109. ->field($_field)
  110. ->where($_map)
  111. ->order($_order)
  112. ->page($page)
  113. ->select();
  114. if (is_object($_games)) {
  115. $_games = $_games->toArray();
  116. }
  117. $_list = [];
  118. $_game_model = new GameModel();
  119. $_gr_model = new GameRateModel();
  120. foreach ($_games as $_k => $_v) {
  121. $_data = [];
  122. $_data['ag_id'] = $_v['id'];
  123. $_data['agent_id'] = $_v['agent_id'];
  124. $_data['game_id'] = isset($_v['game']['id']) ? $_v['game']['id'] : 0;
  125. $_data['gamename'] = isset($_v['game']['name']) ? $_v['game']['name'] : '';
  126. $_data['mini_id'] = !empty($_v['gamemini']['mini_app_id']) ? $_v['gamemini']['mini_app_id'] : '';
  127. $_data['agent_name'] = isset($_v['agent']['user_login']) ? $_v['agent']['user_login']: '';
  128. $_data['agent_nicename'] = isset($_v['agent']['user_nicename']) ? $_v['agent']['user_nicename']: '';
  129. $_data['cp'] = '';
  130. if (!empty($_v['game']['cp_id'])) {
  131. $_data['cp'] = (new CpLogic())->getCpNameById($_v['game']['cp_id']);
  132. }
  133. $_data['role_id'] = isset($_v['agent']['role_id']) ? $_v['agent']['role_id'] : 0;
  134. $_data['icon'] = isset($_v['game']['icon']) ? $_v['game']['icon'] : '';
  135. $_data['type'] = isset($_v['game']['type']) ? $_v['game']['type'] : '';
  136. $_data['tags'] = isset($_v['game']['tags']) ? $_v['game']['tags'] : '';
  137. $_data['gift_cnt'] = 0;
  138. $_data['package_name'] = isset($_v['game']['package_name']) ? $_v['game']['package_name'] : '';
  139. $_data['oneword'] = isset($_v['game']['oneword']) ? $_v['game']['oneword'] : '';
  140. $_data['runtime'] = isset($_v['game']['runtime']) ? $_v['game']['runtime'] : '';
  141. $_data['agent_rate'] = isset($_v['rate']['agent_rate']) ? $_v['rate']['agent_rate'] : 1;
  142. $_data['agent_rebate'] = isset($_v['rate']['agent_rebate']) ? $_v['rate']['agent_rebate'] : 0;
  143. $_data['benefit_type'] = isset($_v['gamerate']['benefit_type']) ? $_v['gamerate']['benefit_type'] : 0;
  144. $_data['benefit_type_text'] = $_gr_model->getBenefitTypeTextAttr($_data['benefit_type']);
  145. $_data['promote_switch'] = isset($_v['game']['promote_switch']) ? $_v['game']['promote_switch']
  146. : GameConst::GAME_PROMOTE_SWITCH_NO;
  147. $_data['sub_agent_rate'] = isset($_v['rate']['sub_agent_rate']) ? $_v['rate']['sub_agent_rate'] : 1;
  148. $_data['sub_agent_rebate'] = isset($_v['rate']['sub_agent_rebate']) ? $_v['rate']['sub_agent_rebate'] : 0;
  149. $_data['first_mem_rate'] = isset($_v['rate']['first_mem_rate']) ? $_v['rate']['first_mem_rate'] : 1;
  150. $_data['first_mem_rebate'] = isset($_v['rate']['first_mem_rebate']) ? $_v['rate']['first_mem_rebate'] : 0;
  151. $_data['mem_rate'] = isset($_v['rate']['mem_rate']) ? $_v['rate']['mem_rate'] : 1;
  152. $_data['mem_rebate'] = isset($_v['rate']['mem_rebate']) ? $_v['rate']['mem_rebate'] : 0;
  153. $_data['mem_agent_reward'] = isset($_v['rate']['mem_agent_reward']) ? $_v['rate']['mem_agent_reward'] : 0;
  154. $_data['mem_reward'] = isset($_v['rate']['mem_reward']) ? $_v['rate']['mem_reward'] : 0;
  155. $_data['status'] = $_v['status'];
  156. $_data['promote_switch_label'] = $_game_model->getAgPsLabel($_data['status']);
  157. $_data['create_time'] = $_v['create_time'];
  158. $_list[] = $_data;
  159. }
  160. if (empty($_games)) {
  161. $_list = null;
  162. }
  163. $_rdata['count'] = $_count;
  164. $_rdata['list'] = $_list;
  165. return $_rdata;
  166. }
  167. }