GameRebateController.php 8.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235
  1. <?php
  2. /**
  3. * GameRebateController.php UTF-8
  4. * 游戏返利管理
  5. *
  6. * @date : 2018/7/30 15:10
  7. *
  8. * @license 这不是一个自由软件,未经授权不许任何使用和传播。
  9. * @author : chenbingling <cbl@huosdk.com>
  10. * @version : HUOSDK 8.0
  11. */
  12. namespace admin\admin\controller\app;
  13. use cmf\controller\AdminBaseController;
  14. use cmf\view\Filter;
  15. use huolib\constant\CommonConst;
  16. use huolib\constant\GameConst;
  17. use huolib\constant\OptionConst;
  18. use huolib\constant\OrderConst;
  19. use huolib\tool\Export;
  20. use huolib\tool\Page;
  21. use huoRebate\logic\RebateLogic;
  22. class GameRebateController extends AdminbaseController {
  23. /*返利状态选择器*/
  24. protected function _statuses_select($status) {
  25. $_status = [
  26. OrderConst::REBATE_STATUS_NOT => '待处理',
  27. OrderConst::REBATE_STATUS_SUC => '成功',
  28. OrderConst::REBATE_STATUS_FAIL => '失败'
  29. ];
  30. $_status_select = Filter::selectCommon($_status, 'status', $status);
  31. $this->assign('statuses_select', $_status_select);
  32. $this->assign('statuses', $_status);
  33. }
  34. /***
  35. * 游戏返利列表
  36. * /admin/app.game_rebate/index
  37. */
  38. public function index() {
  39. if ('1' == $this->request->param('export/d', 0)) {
  40. return $this->exportIndex();
  41. }
  42. $_param = $this->request->param();
  43. $_order_input = Filter::text('order_id', get_val($_param, 'order_id', ''), '请输入订单ID');
  44. $this->assign('order_input', $_order_input);
  45. $_username_input = Filter::text('username', get_val($_param, 'username', ''), '请输入玩家账号');
  46. $this->assign('username_input', $_username_input);
  47. $this->_statuses_select(get_val($_param, 'status', ''));
  48. $this->_time(
  49. get_val($_param, 'start_time', date('Y-m-d', strtotime('-1 month'))),
  50. get_val($_param, 'end_time', date('Y-m-d'))
  51. );
  52. $this->_games(
  53. get_val($_param, 'app_id', 0), GameConst::GAME_STATUS_ON, CommonConst::CONST_NOT_DELETE,
  54. GameConst::GAME_IS_SDK
  55. );
  56. $this->_cp(get_val($_param, 'cp', 0));
  57. $_mg_mem_id_input = Filter::text('mg_mem_id', get_val($_param, 'mg_mem_id', ''), '请输入小号ID');
  58. $this->assign('mg_mem_id_input', $_mg_mem_id_input);
  59. $_page = $this->request->param('page/d', 1);
  60. $_listRows = $this->request->param('listRows/d', 10);
  61. $_list = (new RebateLogic())->getAdminList($_param, $_page.','.$_listRows);
  62. $_items = $_list['list'];
  63. $_items = (new Page())->paginate($_list['count'], $_items, $_page, $_listRows);
  64. $this->assign('page', $_items->render());
  65. $this->assign('items', $_items);
  66. $this->assign('members', $_list['members']);
  67. $this->assign('sum', $_list['sum']);
  68. return $this->fetch();
  69. }
  70. /**
  71. * 导出订单数据
  72. *
  73. * @param int $is_handle
  74. * @param int $cp_status
  75. */
  76. public function exportIndex() {
  77. $_param = $this->request->param();
  78. $_order_input = Filter::text('order_id', get_val($_param, 'order_id', ''), '请输入订单ID');
  79. $this->assign('order_input', $_order_input);
  80. $_username_input = Filter::text('username', get_val($_param, 'username', ''), '请输入玩家账号');
  81. $this->assign('username_input', $_username_input);
  82. $this->_statuses_select(get_val($_param, 'status', ''));
  83. $this->_time(
  84. get_val($_param, 'start_time', date('Y-m-d', strtotime('-1 month'))),
  85. get_val($_param, 'end_time', date('Y-m-d'))
  86. );
  87. $this->_games(
  88. get_val($_param, 'app_id', 0), GameConst::GAME_STATUS_ON, CommonConst::CONST_NOT_DELETE,
  89. GameConst::GAME_IS_SDK
  90. );
  91. $_cp = $this->_cp(0, true);
  92. $_mg_mem_id_input = Filter::text('mg_mem_id', get_val($_param, 'mg_mem_id', ''), '请输入小号ID');
  93. $this->assign('mg_mem_id_input', $_mg_mem_id_input);
  94. $_p = 1;
  95. $_offset = Export::MAX_ROWS;
  96. $_page = $_p.','.$_offset;
  97. $_data = (new RebateLogic())->getAdminList($_param, $_page.','.$_offset);
  98. $_members = $_data['members'];
  99. $_total_cnt = $_data['count'];
  100. if ($_total_cnt <= 0) {
  101. $_total_cnt = 1;
  102. }
  103. $_for_cnt = ceil($_total_cnt / $_offset);
  104. $_file_name_arr = [];
  105. while ($_p <= $_for_cnt) {
  106. $_head = [
  107. 'ID',
  108. '订单号',
  109. '用户',
  110. 'CP名称',
  111. '游戏',
  112. '区服',
  113. '角色ID',
  114. '角色',
  115. '金额',
  116. '状态',
  117. '申请时间',
  118. '小号ID',
  119. '备注'
  120. ];
  121. $_export_datas = [];
  122. if (1 == $_p) {
  123. $_data_sum['total'] = '汇总';
  124. $_data_sum['order_id'] = '--';
  125. $_data_sum['mem'] = '--';
  126. $_data_sum['cp'] = '--';
  127. $_data_sum['gamename'] = '--';
  128. $_data_sum['server_name'] = '--';
  129. $_data_sum['role_id'] = '--';
  130. $_data_sum['role_name'] = '--';
  131. $_data_sum['amount'] = $_data['sum'];
  132. $_data_sum['status'] = '--';
  133. $_data_sum['create_time'] = '--';
  134. $_data_sum['mg_mem_id'] = '--';
  135. $_data_sum['remark'] = '--';
  136. $_export_datas[] = $_data_sum;
  137. }
  138. foreach ($_data['list'] as $_key => $_val) {
  139. $_export_data['id'] = $_val['id'];
  140. $_export_data['order_id'] = $_val['order_id'];
  141. $_export_data['mem'] = isset($_members[$_val['mem_id']]) ? $_members[$_val['mem_id']] : '';
  142. $_export_data['cp'] = isset($_cp[$_val['cp_id']]) ? $_cp[$_val['cp_id']] : '';
  143. $_export_data['gamename'] = $_val['gamename'];
  144. $_export_data['server_name'] = $_val['server_name'];
  145. $_export_data['role_id'] = $_val['role_id'];
  146. $_export_data['role_name'] = $_val['role_name'];
  147. $_export_data['amount'] = $_val['amount'];
  148. $_export_data['status'] = $_val['status_txt'];
  149. $_export_data['create_time'] = date('Y-m-d H:i', $_val['apply_time']);
  150. $_export_data['mg_mem_id'] = $_val['mg_mem_id'];
  151. $_export_data['remark'] = $_val['remark'];
  152. $_export_datas[] = $_export_data;
  153. }
  154. if (1 == $_for_cnt) {
  155. Export::exportCsv($_head, $_export_datas, $path = $this->admin_id, '返利订单', '.csv', true);
  156. break;
  157. } else {
  158. $_file_name = '返利订单'.$_p;
  159. Export::exportCsv($_head, $_export_datas, $path = $this->admin_id, $_file_name);
  160. $_file_name_arr[] = $_file_name.'.csv';
  161. $_p++;
  162. if ($_p > 1) {
  163. $_data = null;
  164. $_page = $_p.','.$_offset;
  165. $_data = (new RebateLogic())->getAdminList($_param, $_page);
  166. }
  167. }
  168. }
  169. Export::exportZip($_file_name_arr, $path = $this->admin_id, '返利订单');
  170. }
  171. /**
  172. * 订单审核
  173. * /admin/app.game_rebate/setStatus
  174. */
  175. public function setStatus() {
  176. $_id = $this->request->param('oid/d', 0);
  177. $_status = $this->request->param('sts/d', 1);
  178. $_remark = $this->request->param('remark/s', '');
  179. if (empty($_id)) {
  180. $this->adminError(lang('param error'));
  181. }
  182. if (OrderConst::REBATE_STATUS_FAIL == $_status && empty($_remark)) {
  183. $this->adminError('请输入审核不通过原因!');
  184. }
  185. $_rs = (new RebateLogic())->setStatus($_id, $_status, $_remark);
  186. if (false == $_rs) {
  187. $this->adminError('修改失败');
  188. }
  189. $this->adminSuccess('修改成功');
  190. }
  191. /**
  192. * 订单详情
  193. * /admin/app.game_rebate/detail
  194. */
  195. public function detail() {
  196. $_id = $this->request->param('oid/d', 0);
  197. $_data = (new RebateLogic())->getRoInfo($_id);
  198. $this->_statuses_select(0);
  199. $this->assign('order', $_data['ro_info']);
  200. $this->assign('ro_list', $_data['ro_list']['list']);
  201. return $this->fetch();
  202. }
  203. /**
  204. * 获取最小值设定
  205. */
  206. public function minSet() {
  207. $_value = (new RebateLogic())->getMinSet();
  208. $this->assign('value', $_value);
  209. return $this->fetch('minSet');
  210. }
  211. /**
  212. * 设定最小值
  213. */
  214. public function setMinSet() {
  215. $_value = $this->request->param('rebate_min_set/d', 0);
  216. $_rs = (new RebateLogic())->setMinSet(OptionConst::REBATE_MIN_SET, $_value);
  217. if ($_rs) {
  218. return $this->adminSuccess('设定成功!');
  219. }
  220. return $this->adminError('设定失败!');
  221. }
  222. }