UsersController.php 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318
  1. <?php
  2. namespace App\Http\Controllers\Api;
  3. use App\Http\Controllers\Controller;
  4. use App\Module\Base;
  5. use App\Module\Users;
  6. use DB;
  7. use Request;
  8. use Session;
  9. /**
  10. * @apiDefine users
  11. *
  12. * 会员
  13. */
  14. class UsersController extends Controller
  15. {
  16. public function __invoke($method, $action = '')
  17. {
  18. $app = $method ? $method : 'main';
  19. if ($action) {
  20. $app .= "__" . $action;
  21. }
  22. return (method_exists($this, $app)) ? $this->$app() : Base::ajaxError("404 not found (" . str_replace("__", "/", $app) . ").");
  23. }
  24. /**
  25. * 登陆
  26. * @return array
  27. */
  28. public function login()
  29. {
  30. $user = Base::DBC2A(DB::table('users')->where('username', trim(Request::input('username')))->first());
  31. if (empty($user)) {
  32. return Base::retError('账号或密码错误。');
  33. }
  34. if ($user['userpass'] != Base::md52(Request::input('userpass'))) {
  35. return Base::retError('账号或密码错误!');
  36. }
  37. //
  38. $array = [
  39. 'token' => Users::token($user),
  40. 'loginnum' => $user['loginnum'] + 1,
  41. 'lastip' => Base::getIp(),
  42. 'lastdate' => Base::time(),
  43. 'lineip' => Base::getIp(),
  44. 'linedate' => Base::time(),
  45. ];
  46. Base::array_over($user, $array);
  47. DB::table('users')->where('id', $user['id'])->update($array);
  48. //
  49. if (intval(Request::input('onlydata')) !== 1) {
  50. Session::put('sessionToken', $array['token']);
  51. }
  52. return Base::retSuccess("登陆成功", Users::retInfo($user));
  53. }
  54. /**
  55. * 获取会员信息
  56. * @return array|mixed
  57. */
  58. public function info()
  59. {
  60. $callback = Request::input('callback');
  61. //
  62. $user = Users::authE();
  63. if (Base::isError($user)) {
  64. if (strlen($callback) > 3) {
  65. return $callback . '(' . json_encode($user) . ')';
  66. }
  67. return $user;
  68. } else {
  69. $user = $user['data'];
  70. }
  71. //
  72. if (strlen($callback) > 3) {
  73. return $callback . '(' . json_encode(Base::retSuccess('success', Users::retInfo($user))) . ')';
  74. }
  75. return Base::retSuccess('success', Users::retInfo($user));
  76. }
  77. /**
  78. * 搜索会员列表
  79. */
  80. public function searchinfo()
  81. {
  82. $keys = Request::input('where');
  83. $whereArr = [];
  84. $whereFunc = null;
  85. if ($keys['usernameequal']) $whereArr[] = ['username', '=', $keys['usernameequal']];
  86. if ($keys['identity']) $whereArr[] = ['identity', 'like', '%,' . $keys['identity'] . ',%'];
  87. if ($keys['noidentity']) $whereArr[] = ['identity', 'not like', '%,' . $keys['noidentity'] . ',%'];
  88. if ($keys['username']) {
  89. $whereFunc = function($query) use ($keys) {
  90. $query->where('username', 'like', '%' . $keys['username'] . '%')->orWhere('nickname', 'like', '%' . $keys['username'] . '%');
  91. };
  92. }
  93. //
  94. $lists = DB::table('users')->select(['id', 'username', 'nickname', 'userimg', 'profession'])->where($whereArr)->where($whereFunc)->orderBy('id')->paginate(Min(Max(Base::nullShow(Request::input('pagesize'), 10), 1), 200));
  95. $lists = Base::getPageList($lists);
  96. if ($lists['total'] == 0) {
  97. return Base::retError('未搜索到任何相关的会员');
  98. }
  99. foreach ($lists['lists'] AS $key => $item) {
  100. $lists['lists'][$key]['userimg'] = Base::fillUrl($item['userimg']);
  101. $lists['lists'][$key]['identitys'] = explode(",", trim($item['identity'], ","));
  102. $lists['lists'][$key]['setting'] = Base::string2array($item['setting']);
  103. }
  104. return Base::retSuccess('success', $lists);
  105. }
  106. /**
  107. * 修改资料
  108. * @return array|mixed
  109. */
  110. public function editdata()
  111. {
  112. $user = Users::authE();
  113. if (Base::isError($user)) {
  114. return $user;
  115. } else {
  116. $user = $user['data'];
  117. }
  118. //
  119. $array = [];
  120. //头像
  121. $userimg = Request::input('userimg');
  122. if ($userimg) {
  123. $userimg = is_array($userimg) ? $userimg[0]['path'] : $userimg;
  124. $array['userimg'] = Base::unFillUrl($userimg);
  125. }
  126. //昵称
  127. $nickname = trim(Request::input('nickname'));
  128. if ($nickname) {
  129. if (mb_strlen($nickname) < 2) {
  130. return Base::retError('昵称不可以少于2个字!');
  131. } elseif (mb_strlen($nickname) > 8) {
  132. return Base::retError('昵称最多只能设置8个字!');
  133. } else {
  134. $array['nickname'] = $nickname;
  135. }
  136. }
  137. //职位/职称
  138. $profession = trim(Request::input('profession'));
  139. if ($profession) {
  140. if (mb_strlen($profession) < 2) {
  141. return Base::retError('昵称不可以少于2个字!');
  142. } elseif (mb_strlen($profession) > 20) {
  143. return Base::retError('昵称最多只能设置20个字!');
  144. } else {
  145. $array['profession'] = $profession;
  146. }
  147. }
  148. //
  149. if ($array) {
  150. DB::table('users')->where('id', $user['id'])->update($array);
  151. } else {
  152. return Base::retError('请设置要修改的内容!');
  153. }
  154. return Base::retSuccess('修改成功!');
  155. }
  156. /**
  157. * 修改密码
  158. * @return array|mixed
  159. */
  160. public function editpass()
  161. {
  162. $user = Users::authE();
  163. if (Base::isError($user)) {
  164. return $user;
  165. } else {
  166. $user = $user['data'];
  167. }
  168. //
  169. $oldpass = trim(Request::input('oldpass'));
  170. $newpass = trim(Request::input('newpass'));
  171. if (strlen($newpass) < 6) {
  172. return Base::retError('密码设置不能小于6位数!');
  173. } elseif (strlen($newpass) > 32) {
  174. return Base::retError('密码最多只能设置32位数!');
  175. }
  176. if ($oldpass == $newpass) {
  177. return Base::retError('新旧密码一致!');
  178. }
  179. //
  180. if ($user['setpass']) {
  181. $verify = DB::table('users')->where(['id'=>$user['id'], 'userpass'=>Base::md52($oldpass)])->count();
  182. if (empty($verify)) {
  183. return Base::retError('请填写正确的旧密码!');
  184. }
  185. }
  186. DB::table('users')->where('id', $user['id'])->update(['encrypt' => Base::generatePassword(6), 'userpass'=>Base::md52($newpass)]);
  187. return Base::retSuccess('修改成功');
  188. }
  189. /**
  190. * 团队列表
  191. */
  192. public function team__lists()
  193. {
  194. $user = Users::authE();
  195. if (Base::isError($user)) {
  196. return $user;
  197. } else {
  198. $user = $user['data'];
  199. }
  200. //
  201. $lists = DB::table('users')->select(['id', 'username', 'nickname', 'userimg', 'profession', 'regdate'])->orderByDesc('id')->paginate(Min(Max(Base::nullShow(Request::input('pagesize'), 10), 1), 200));
  202. $lists = Base::getPageList($lists);
  203. if ($lists['total'] == 0) {
  204. return Base::retError('未找到任何相关的团队成员');
  205. }
  206. foreach ($lists['lists'] AS $key => $item) {
  207. $lists['lists'][$key]['userimg'] = Users::userimg($item['userimg']);
  208. }
  209. return Base::retSuccess('success', $lists);
  210. }
  211. /**
  212. * 添加团队成员
  213. */
  214. public function team__add()
  215. {
  216. $user = Users::authE();
  217. if (Base::isError($user)) {
  218. return $user;
  219. } else {
  220. $user = $user['data'];
  221. }
  222. //
  223. if (Base::isError(Users::identity('admin'))) {
  224. return Base::retError('身份权限不足!', [], -1);
  225. }
  226. //头像
  227. $userimg = Request::input('userimg');
  228. if ($userimg) {
  229. $userimg = is_array($userimg) ? $userimg[0]['path'] : $userimg;
  230. }
  231. //昵称
  232. $nickname = trim(Request::input('nickname'));
  233. if ($nickname) {
  234. if (mb_strlen($nickname) < 2) {
  235. return Base::retError('昵称不可以少于2个字!');
  236. } elseif (mb_strlen($nickname) > 8) {
  237. return Base::retError('昵称最多只能设置8个字!');
  238. }
  239. }
  240. //职位/职称
  241. $profession = trim(Request::input('profession'));
  242. if ($profession) {
  243. if (mb_strlen($profession) < 2) {
  244. return Base::retError('昵称不可以少于2个字!');
  245. } elseif (mb_strlen($profession) > 20) {
  246. return Base::retError('昵称最多只能设置20个字!');
  247. }
  248. }
  249. //用户名
  250. $username = trim(Request::input('username'));
  251. if (strlen($username) < 2) {
  252. return Base::retError('用户名不可以少于2个字符!');
  253. } elseif (strlen($username) > 12) {
  254. return Base::retError('用户名最多只能设置12个字符!');
  255. }
  256. if (Users::username2id($username) > 0) {
  257. return Base::retError('用户名已存在!');
  258. }
  259. //密码
  260. $userpass = trim(Request::input('userpass'));
  261. if (strlen($userpass) < 6) {
  262. return Base::retError('密码设置不能小于6位数!');
  263. } elseif (strlen($userpass) > 32) {
  264. return Base::retError('密码最多只能设置32位数!');
  265. }
  266. //
  267. if (DB::table('users')->insert([
  268. 'userimg' => $userimg ?: '',
  269. 'nickname' => $nickname ?: '',
  270. 'profession' => $profession ?: '',
  271. 'username' => $username,
  272. 'userpass' => Base::md52($userpass),
  273. 'regip' => Base::getIp(),
  274. 'regdate' => Base::time()
  275. ])) {
  276. return Base::retSuccess('添加成功!');
  277. } else {
  278. return Base::retError('添加失败!');
  279. }
  280. }
  281. /**
  282. * 删除团队成员
  283. */
  284. public function team__delete()
  285. {
  286. $user = Users::authE();
  287. if (Base::isError($user)) {
  288. return $user;
  289. } else {
  290. $user = $user['data'];
  291. }
  292. //
  293. if (Base::isError(Users::identity('admin'))) {
  294. return Base::retError('身份权限不足!', [], -1);
  295. }
  296. $id = intval(Request::input('id'));
  297. if ($user['id'] == $id) {
  298. return Base::retError('不能删除自己!');
  299. }
  300. //
  301. if (DB::table('users')->where('id', $id)->delete()) {
  302. return Base::retSuccess('删除成功!');
  303. } else {
  304. return Base::retError('删除失败!');
  305. }
  306. }
  307. }