UserController.php 9.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247
  1. <?php
  2. namespace App\Controllers\Admin;
  3. use App\Models\User;
  4. use App\Models\Ip;
  5. use App\Models\RadiusBan;
  6. use App\Models\Relay;
  7. use App\Controllers\AdminController;
  8. use App\Utils\Hash;
  9. use App\Utils\Radius;
  10. use App\Utils\QQWry;
  11. use App\Utils\Wecenter;
  12. use App\Utils\Tools;
  13. class UserController extends AdminController
  14. {
  15. public function index($request, $response, $args)
  16. {
  17. $table_config['total_column'] = array("op" => "操作", "id" => "ID", "user_name" => "用户名",
  18. "remark" => "备注", "email" => "邮箱", "money" => "金钱",
  19. "im_type" => "联络方式类型", "im_value" => "联络方式详情",
  20. "node_group" => "群组", "account_expire_in" => "账户过期时间",
  21. "class" => "等级", "class_expire" => "等级过期时间",
  22. "passwd" => "连接密码","port" => "连接端口", "method" => "加密方式",
  23. "protocol" => "连接协议", "obfs" => "连接混淆方式",
  24. "online_ip_count" => "在线IP数", "last_ss_time" => "上次使用时间",
  25. "used_traffic" => "已用流量/GB", "enable_traffic" => "总流量/GB",
  26. "last_checkin_time" => "上次签到时间", "today_traffic" => "今日流量/MB",
  27. "is_enable" => "是否启用", "reg_date" => "注册时间",
  28. "reg_location" => "注册IP", "auto_reset_day" => "自动重置流量日",
  29. "auto_reset_bandwidth" => "自动重置流量/GB", "ref_by" => "邀请人ID", "ref_by_user_name" => "邀请人用户名");
  30. $table_config['default_show_column'] = array("op", "id", "user_name", "remark", "email");
  31. $table_config['ajax_url'] = 'user/ajax';
  32. return $this->view()->assign('table_config', $table_config)->display('admin/user/index.tpl');
  33. }
  34. public function search($request, $response, $args)
  35. {
  36. $pageNum = 1;
  37. $text=$args["text"];
  38. if (isset($request->getQueryParams()["page"])) {
  39. $pageNum = $request->getQueryParams()["page"];
  40. }
  41. $users = User::where("email", "LIKE", "%".$text."%")->orWhere("user_name", "LIKE", "%".$text."%")->orWhere("im_value", "LIKE", "%".$text."%")->orWhere("port", "LIKE", "%".$text."%")->orWhere("remark", "LIKE", "%".$text."%")->paginate(20, ['*'], 'page', $pageNum);
  42. $users->setPath('/admin/user/search/'.$text);
  43. //Ip::where("datetime","<",time()-90)->get()->delete();
  44. $total = Ip::where("datetime", ">=", time()-90)->orderBy('userid', 'desc')->get();
  45. $userip=array();
  46. $useripcount=array();
  47. $regloc=array();
  48. $iplocation = new QQWry();
  49. foreach ($users as $user) {
  50. $useripcount[$user->id]=0;
  51. $userip[$user->id]=array();
  52. $location=$iplocation->getlocation($user->reg_ip);
  53. $regloc[$user->id]=iconv('gbk', 'utf-8//IGNORE', $location['country'].$location['area']);
  54. }
  55. foreach ($total as $single) {
  56. if (isset($useripcount[$single->userid])) {
  57. if (!isset($userip[$single->userid][$single->ip])) {
  58. $useripcount[$single->userid]=$useripcount[$single->userid]+1;
  59. $location=$iplocation->getlocation($single->ip);
  60. $userip[$single->userid][$single->ip]=iconv('gbk', 'utf-8//IGNORE', $location['country'].$location['area']);
  61. }
  62. }
  63. }
  64. return $this->view()->assign('users', $users)->assign("regloc", $regloc)->assign("useripcount", $useripcount)->assign("userip", $userip)->display('admin/user/index.tpl');
  65. }
  66. public function sort($request, $response, $args)
  67. {
  68. $pageNum = 1;
  69. $text=$args["text"];
  70. $asc=$args["asc"];
  71. if (isset($request->getQueryParams()["page"])) {
  72. $pageNum = $request->getQueryParams()["page"];
  73. }
  74. $users->setPath('/admin/user/sort/'.$text."/".$asc);
  75. //Ip::where("datetime","<",time()-90)->get()->delete();
  76. $total = Ip::where("datetime", ">=", time()-90)->orderBy('userid', 'desc')->get();
  77. $userip=array();
  78. $useripcount=array();
  79. $regloc=array();
  80. $iplocation = new QQWry();
  81. foreach ($users as $user) {
  82. $useripcount[$user->id]=0;
  83. $userip[$user->id]=array();
  84. $location=$iplocation->getlocation($user->reg_ip);
  85. $regloc[$user->id]=iconv('gbk', 'utf-8//IGNORE', $location['country'].$location['area']);
  86. }
  87. foreach ($total as $single) {
  88. if (isset($useripcount[$single->userid])) {
  89. if (!isset($userip[$single->userid][$single->ip])) {
  90. $useripcount[$single->userid]=$useripcount[$single->userid]+1;
  91. $location=$iplocation->getlocation($single->ip);
  92. $userip[$single->userid][$single->ip]=iconv('gbk', 'utf-8//IGNORE', $location['country'].$location['area']);
  93. }
  94. }
  95. }
  96. return $this->view()->assign('users', $users)->assign("regloc", $regloc)->assign("useripcount", $useripcount)->assign("userip", $userip)->display('admin/user/index.tpl');
  97. }
  98. public function edit($request, $response, $args)
  99. {
  100. $id = $args['id'];
  101. $user = User::find($id);
  102. if ($user == null) {
  103. }
  104. return $this->view()->assign('edit_user', $user)->display('admin/user/edit.tpl');
  105. }
  106. public function update($request, $response, $args)
  107. {
  108. $id = $args['id'];
  109. $user = User::find($id);
  110. $email1=$user->email;
  111. $user->email = $request->getParam('email');
  112. $email2=$request->getParam('email');
  113. $passwd=$request->getParam('passwd');
  114. Radius::ChangeUserName($email1, $email2, $passwd);
  115. if ($request->getParam('pass') != '') {
  116. $user->pass = Hash::passwordHash($request->getParam('pass'));
  117. Wecenter::ChangeUserName($email1, $email2, $request->getParam('pass'), $user->user_name);
  118. $user->clean_link();
  119. }
  120. $user->auto_reset_day = $request->getParam('auto_reset_day');
  121. $user->auto_reset_bandwidth = $request->getParam('auto_reset_bandwidth');
  122. $origin_port = $user->port;
  123. $user->port = $request->getParam('port');
  124. $relay_rules = Relay::where('user_id', $user->id)->where('port', $origin_port)->get();
  125. foreach ($relay_rules as $rule) {
  126. $rule->port = $user->port;
  127. $rule->save();
  128. }
  129. $user->passwd = $request->getParam('passwd');
  130. $user->protocol = $request->getParam('protocol');
  131. $user->protocol_param = $request->getParam('protocol_param');
  132. $user->obfs = $request->getParam('obfs');
  133. $user->obfs_param = $request->getParam('obfs_param');
  134. $user->is_multi_user = $request->getParam('is_multi_user');
  135. $user->transfer_enable = Tools::toGB($request->getParam('transfer_enable'));
  136. $user->invite_num = $request->getParam('invite_num');
  137. $user->method = $request->getParam('method');
  138. $user->node_speedlimit = $request->getParam('node_speedlimit');
  139. $user->node_connector = $request->getParam('node_connector');
  140. $user->enable = $request->getParam('enable');
  141. $user->is_admin = $request->getParam('is_admin');
  142. $user->node_group = $request->getParam('group');
  143. $user->ref_by = $request->getParam('ref_by');
  144. $user->remark = $request->getParam('remark');
  145. $user->money = $request->getParam('money');
  146. $user->class = $request->getParam('class');
  147. $user->class_expire = $request->getParam('class_expire');
  148. $user->expire_in = $request->getParam('expire_in');
  149. $user->forbidden_ip = str_replace(PHP_EOL, ",", $request->getParam('forbidden_ip'));
  150. $user->forbidden_port = str_replace(PHP_EOL, ",", $request->getParam('forbidden_port'));
  151. if (!$user->save()) {
  152. $rs['ret'] = 0;
  153. $rs['msg'] = "修改失败";
  154. return $response->getBody()->write(json_encode($rs));
  155. }
  156. $rs['ret'] = 1;
  157. $rs['msg'] = "修改成功";
  158. return $response->getBody()->write(json_encode($rs));
  159. }
  160. public function delete($request, $response, $args)
  161. {
  162. $id = $request->getParam('id');
  163. $user = User::find($id);
  164. $email1=$user->email;
  165. if (!$user->kill_user()) {
  166. $rs['ret'] = 0;
  167. $rs['msg'] = "删除失败";
  168. return $response->getBody()->write(json_encode($rs));
  169. }
  170. $rs['ret'] = 1;
  171. $rs['msg'] = "删除成功";
  172. return $response->getBody()->write(json_encode($rs));
  173. }
  174. public function ajax($request, $response, $args)
  175. {
  176. $pageNum = 1;
  177. if (isset($request->getQueryParams()["page"])) {
  178. $pageNum = $request->getQueryParams()["page"];
  179. }
  180. $users = User::skip(($pageNum - 1) * 100)->limit(100)->get();
  181. $total_conut = User::count();
  182. if($total_conut < $pageNum * 100) {
  183. $res['next'] = 0;
  184. } else {
  185. $res['next'] = 1;
  186. }
  187. $res['data'] = array();
  188. foreach ($users as $user) {
  189. array_push($res['data'], $user->get_table_json_array());
  190. }
  191. return $this->echoJson($response, $res);
  192. }
  193. }