AdminController.php 7.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215
  1. <?php
  2. namespace App\Controllers;
  3. use App\Models\Node;
  4. use App\Models\Coupon;
  5. use App\Models\User;
  6. use App\Services\Gateway\ChenPay;
  7. use App\Utils\AliPay;
  8. use App\Utils\Tools;
  9. use App\Services\Analytics;
  10. use Ozdemir\Datatables\Datatables;
  11. use App\Utils\DatatablesHelper;
  12. /**
  13. * Admin Controller
  14. */
  15. class AdminController extends UserController
  16. {
  17. public function index($request, $response, $args)
  18. {
  19. $sts = new Analytics();
  20. return $this->view()->assign('sts', $sts)->display('admin/index.tpl');
  21. }
  22. public function node($request, $response, $args)
  23. {
  24. $nodes = Node::all();
  25. return $this->view()->assign('nodes', $nodes)->display('admin/node.tpl');
  26. }
  27. public function editConfig($request, $response, $args)
  28. {
  29. return (new ChenPay())->editConfig();
  30. }
  31. public function saveConfig($request, $response, $args)
  32. {
  33. return (new ChenPay())->saveConfig($request);
  34. }
  35. public function sys()
  36. {
  37. return $this->view()->display('admin/index.tpl');
  38. }
  39. public function invite($request, $response, $args)
  40. {
  41. $table_config['total_column'] = array('id' => 'ID',
  42. 'total' => '原始金额', 'event_user_id' => '发起用户ID',
  43. 'event_user_name' => '发起用户名', 'ref_user_id' => '获利用户ID',
  44. 'ref_user_name' => '获利用户名', 'ref_get' => '获利金额',
  45. 'datetime' => '时间');
  46. $table_config['default_show_column'] = array();
  47. foreach ($table_config['total_column'] as $column => $value) {
  48. $table_config['default_show_column'][] = $column;
  49. }
  50. $table_config['ajax_url'] = 'payback/ajax';
  51. return $this->view()->assign('table_config', $table_config)->display('admin/invite.tpl');
  52. }
  53. public function addInvite($request, $response, $args)
  54. {
  55. $num = $request->getParam('num');
  56. $prefix = $request->getParam('prefix');
  57. if (Tools::isInt($num) == false) {
  58. $res['ret'] = 0;
  59. $res['msg'] = '非法请求';
  60. return $response->getBody()->write(json_encode($res));
  61. }
  62. if ($request->getParam('uid') != '0') {
  63. if (strpos($request->getParam('uid'), '@') != false) {
  64. $user = User::where('email', '=', $request->getParam('uid'))->first();
  65. } else {
  66. $user = User::Where('id', '=', $request->getParam('uid'))->first();
  67. }
  68. if ($user == null) {
  69. $res['ret'] = 0;
  70. $res['msg'] = '邀请次数添加失败,检查用户id或者用户邮箱是否输入正确';
  71. return $response->getBody()->write(json_encode($res));
  72. }
  73. $uid = $user->id;
  74. } else {
  75. $uid = 0;
  76. }
  77. $user->invite_num += $num;
  78. $user->save();
  79. $res['ret'] = 1;
  80. $res['msg'] = '邀请次数添加成功';
  81. return $response->getBody()->write(json_encode($res));
  82. }
  83. public function coupon($request, $response, $args)
  84. {
  85. $table_config['total_column'] = array('id' => 'ID', 'code' => '优惠码',
  86. 'expire' => '过期时间', 'shop' => '限定商品ID',
  87. 'credit' => '额度', 'onetime' => '次数');
  88. $table_config['default_show_column'] = array();
  89. foreach ($table_config['total_column'] as $column => $value) {
  90. $table_config['default_show_column'][] = $column;
  91. }
  92. $table_config['ajax_url'] = 'coupon/ajax';
  93. return $this->view()->assign('table_config', $table_config)->display('admin/coupon.tpl');
  94. }
  95. public function addCoupon($request, $response, $args)
  96. {
  97. $code = new Coupon();
  98. $code->onetime = $request->getParam('onetime');
  99. $generate_type = $request->getParam('generate_type');
  100. $final_code = $request->getParam('prefix');
  101. if (empty($final_code) && ($generate_type == 1 || $generate_type == 3)) {
  102. $res['ret'] = 0;
  103. $res['msg'] = '优惠码不能为空';
  104. return $response->getBody()->write(json_encode($res));
  105. }
  106. if ($generate_type == 1) {
  107. if (Coupon::where('code', $final_code)->count() != 0) {
  108. $res['ret'] = 0;
  109. $res['msg'] = '优惠码已存在';
  110. return $response->getBody()->write(json_encode($res));
  111. }
  112. } else {
  113. while (true) {
  114. if ($generate_type == 2) {
  115. $temp_code = Tools::genRandomChar(8);
  116. } elseif ($generate_type == 3) {
  117. $temp_code = $final_code . Tools::genRandomChar(8);
  118. }
  119. if (Coupon::where('code', $temp_code)->count() == 0) {
  120. $final_code = $temp_code;
  121. break;
  122. }
  123. }
  124. }
  125. $code->code = $final_code;
  126. $code->expire = time() + $request->getParam('expire') * 3600;
  127. $code->shop = $request->getParam('shop');
  128. $code->credit = $request->getParam('credit');
  129. $code->save();
  130. $res['ret'] = 1;
  131. $res['msg'] = '优惠码添加成功';
  132. return $response->getBody()->write(json_encode($res));
  133. }
  134. public function trafficLog($request, $response, $args)
  135. {
  136. $table_config['total_column'] = array('id' => 'ID', 'user_id' => '用户ID',
  137. 'user_name' => '用户名', 'node_name' => '使用节点',
  138. 'rate' => '倍率', 'origin_traffic' => '实际使用流量',
  139. 'traffic' => '结算流量',
  140. 'log_time' => '记录时间');
  141. $table_config['default_show_column'] = array('id', 'user_id',
  142. 'user_name', 'node_name',
  143. 'rate', 'origin_traffic',
  144. 'traffic', 'log_time');
  145. $table_config['ajax_url'] = 'trafficlog/ajax';
  146. return $this->view()->assign('table_config', $table_config)->display('admin/trafficlog.tpl');
  147. }
  148. public function ajax_trafficLog($request, $response, $args)
  149. {
  150. $datatables = new Datatables(new DatatablesHelper());
  151. $datatables->query('Select log.id,log.user_id,user.user_name,node.name as node_name,log.rate,(log.u + log.d) as origin_traffic,log.traffic,log.log_time from user_traffic_log as log,user,ss_node as node WHERE log.user_id = user.id AND log.node_id = node.id');
  152. $datatables->edit('log_time', static function ($data) {
  153. return date('Y-m-d H:i:s', $data['log_time']);
  154. });
  155. $datatables->edit('origin_traffic', static function ($data) {
  156. return Tools::flowAutoShow($data['origin_traffic']);
  157. });
  158. $body = $response->getBody();
  159. $body->write($datatables->generate());
  160. }
  161. public function ajax_payback($request, $response, $args)
  162. {
  163. $datatables = new Datatables(new DatatablesHelper());
  164. $datatables->query('Select payback.id,payback.total,payback.userid as event_user_id,event_user.user_name as event_user_name,payback.ref_by as ref_user_id,ref_user.user_name as ref_user_name,payback.ref_get,payback.datetime from payback,user as event_user,user as ref_user where event_user.id = payback.userid and ref_user.id = payback.ref_by');
  165. $datatables->edit('datetime', static function ($data) {
  166. return date('Y-m-d H:i:s', $data['datetime']);
  167. });
  168. $body = $response->getBody();
  169. $body->write($datatables->generate());
  170. }
  171. public function ajax_coupon($request, $response, $args)
  172. {
  173. $datatables = new Datatables(new DatatablesHelper());
  174. $datatables->query('Select id,code,expire,shop,credit,onetime from coupon');
  175. $datatables->edit('expire', static function ($data) {
  176. return date('Y-m-d H:i:s', $data['expire']);
  177. });
  178. $body = $response->getBody();
  179. $body->write($datatables->generate());
  180. }
  181. }