User.php 9.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360
  1. <?php
  2. namespace app\index\model;
  3. use\think\Model;
  4. use think\Session;
  5. use think\cache\driver\Redis;
  6. use think\Loader;
  7. use think\Cache;
  8. class User extends Model
  9. {
  10. /**
  11. * 用户登陆
  12. */
  13. public function login($getData)
  14. {
  15. $code = -2;
  16. // 获取的用户信息.
  17. $name = $getData['name'];
  18. $password = $getData['password'];
  19. // 验证传参.
  20. $data = [
  21. 'name' => $name,
  22. 'password' => $password,
  23. ];
  24. $validate = Loader::validate('User');
  25. if (!$validate->scene('login')->check($data)) {
  26. return [
  27. 'code' => $code,
  28. 'msg' => $validate->getError(),
  29. 'data' => [],
  30. ];
  31. }
  32. // 获取用户信息.
  33. $userInfoWhere['user_name'] = $name;
  34. $userInfoWhere['user_status'] = 1;
  35. $getUserInfo = $this
  36. ->field('user_name, user_identity, user_phone, user_nickname, user_salt, user_password')
  37. ->where($userInfoWhere)
  38. ->find();
  39. if(empty($getUserInfo)){
  40. return [
  41. 'code' => $code,
  42. 'msg' => lang('EA01002'),
  43. 'data' => [],
  44. ];
  45. }
  46. $userSalt = $getUserInfo['user_salt'];
  47. // 验证密码.
  48. if (md5(md5($userSalt.$password)) !== $getUserInfo['user_password']) {
  49. return [
  50. 'code' => $code,
  51. 'msg' => lang('EA01001'),
  52. 'data' => [],
  53. ];
  54. }
  55. // 存储token及用户信息.
  56. $userInfo = [
  57. 'userName' => $getUserInfo['user_name'],
  58. 'userId' => $getUserInfo['user_identity'],
  59. 'userNick' => $getUserInfo['user_nickname'],
  60. 'phone' => $getUserInfo['user_phone'],
  61. 'lastOperation' => time(),
  62. ];
  63. $userToken = getToken();
  64. // 修改最后操作信息.
  65. $upData = [
  66. 'user_last_time' => time(),
  67. 'user_last_ip' => $_SERVER['REMOTE_ADDR'],
  68. 'user_token' => $userToken,
  69. 'user_lastOperation' => $userInfo['lastOperation'],
  70. ];
  71. $upUser = $this
  72. ->where($userInfoWhere)
  73. ->update($upData);
  74. return [
  75. 'code' => 1,
  76. 'msg' => lang('MA01001'),
  77. 'data' => [
  78. 'userToken' => $userToken,
  79. 'userInfo' => [
  80. 'phone' => $getUserInfo['user_phone'],
  81. 'userId' => $getUserInfo['user_identity'],
  82. 'name' => $name,
  83. 'lastOperation' => $userInfo['lastOperation'],
  84. ],
  85. ],
  86. ];
  87. }//end login()
  88. /**
  89. * 用户注册
  90. */
  91. public function registered($getData)
  92. {
  93. $code = -2;
  94. // 获取的用户信息.
  95. $name = $getData['name'];
  96. $password = $getData['password'];
  97. $phone = $getData['phone'];
  98. // 验证传参.
  99. $data = [
  100. 'name' => $name,
  101. 'password' => $password,
  102. 'phone' => $phone,
  103. ];
  104. $validate = Loader::validate('User');
  105. if (!$validate->scene('registered')->check($data)) {
  106. return [
  107. 'code' => $code,
  108. 'msg' => $validate->getError(),
  109. 'data' => [],
  110. ];
  111. }
  112. // 查询用户是否存在.
  113. $haveUser = $this
  114. ->field('user_id')
  115. ->where('user_name', $name)
  116. ->find();
  117. if (empty($haveUser) === false) {
  118. return [
  119. 'code' => $code,
  120. 'msg' => lang('EA01009'),
  121. 'data' => [],
  122. ];
  123. }
  124. $userToken = getToken();
  125. // 新增数据.
  126. $genPassword = GenPassword($password);
  127. $userData['user_name'] = $name;
  128. $userData['user_phone'] = $phone;
  129. $userData['user_identity'] = UUID();
  130. $userData['user_password'] = $genPassword['password'];
  131. $userData['user_salt'] = $genPassword['encryption'];
  132. $userData['user_register_time'] = time();
  133. $userData['user_register_ip'] = $_SERVER['REMOTE_ADDR'];
  134. $userData['user_last_time'] = time();
  135. $userData['user_last_ip'] = $_SERVER['REMOTE_ADDR'];
  136. $userData['user_token'] = $userToken;
  137. $userData['user_lastOperation'] = time();
  138. // 新增用户.
  139. $addUser = $this->insert($userData);
  140. if (empty($addUser) === false) {
  141. // 存储token及用户信息.
  142. $userInfo = [
  143. 'userName' => $name,
  144. 'userId' => $userData['user_identity'],
  145. 'phone' => $userData['user_phone'],
  146. 'lastOperation' => time(),
  147. ];
  148. return [
  149. 'code' => 1,
  150. 'msg' => lang('MA01002'),
  151. 'data' => [
  152. 'userToken' => $userToken,
  153. 'userInfo' => [
  154. 'phone' => $userInfo['phone'],
  155. 'name' => $userInfo['userName'],
  156. 'userId' => $userInfo['userId'],
  157. 'lastOperation' => $userInfo['lastOperation'],
  158. ],
  159. ],
  160. ];
  161. } else {
  162. return [
  163. 'code' => $code,
  164. 'msg' => lang('EC01002'),
  165. 'data' => [],
  166. ];
  167. }//end if
  168. }//end registered()
  169. /**
  170. * 退出登陆
  171. */
  172. public function logout()
  173. {
  174. // // 获取的传参信息.
  175. $userToken = input('get.userToken');
  176. $userInfoWhere['user_token'] = $userToken;
  177. $upData = [
  178. 'user_token' => '',
  179. 'user_lastOperation' => '',
  180. ];
  181. $upUser = $this
  182. ->where($userInfoWhere)
  183. ->update($upData);
  184. return [
  185. 'code' => 1,
  186. 'msg' => lang('MA01003'),
  187. 'data' => [],
  188. ];
  189. }//end logout()
  190. /**
  191. * 当前用户信息
  192. */
  193. public function currentUser($userToken)
  194. {
  195. // $userToken = input('get.userToken');
  196. // 获取用户信息.
  197. $userInfoWhere['user_token'] = $userToken;
  198. $getUserInfo = $this
  199. ->field('user_name, user_identity, user_phone, user_nickname, user_salt, user_password,user_token,user_lastOperation')
  200. ->where($userInfoWhere)
  201. ->find()
  202. ->toArray();
  203. return [
  204. 'code' => 1,
  205. 'msg' => lang('MA01003'),
  206. 'data' => $getUserInfo,
  207. ];
  208. }//end currentUser()
  209. /**
  210. * 更新用户操作时间
  211. */
  212. public function updateLastOperation($userToken,$time)
  213. {
  214. $userInfoWhere['user_token'] = $userToken;
  215. $upData = [
  216. 'user_lastOperation' => $time,
  217. ];
  218. $upUser = $this
  219. ->where($userInfoWhere)
  220. ->update($upData);
  221. }//end updateLastOperation()
  222. /**
  223. * 修改用户密码
  224. */
  225. public function updatePassword($getData)
  226. {
  227. $code = -2;
  228. // 验证传参.
  229. $validate = Loader::validate('User');
  230. if (!$validate->scene('updatePassword')->check($getData)) {
  231. return [
  232. 'code' => $code,
  233. 'msg' => $validate->getError(),
  234. 'data' => [],
  235. ];
  236. }
  237. $userToken = input('get.userToken');
  238. $conditions_user['user_token'] = $userToken;
  239. $userInfo = $this
  240. ->field('user_salt, user_password')
  241. ->where($conditions_user)
  242. ->find();
  243. // 验证旧密码.
  244. $userSalt = $userInfo['user_salt'];
  245. if (md5(md5($userSalt.$getData['oldPassword'])) !== $userInfo['user_password']) {
  246. return [
  247. 'code' => $code,
  248. 'msg' => lang('EA01006'),
  249. 'data' => [],
  250. ];
  251. }
  252. // 修改密码.
  253. $newPassword = GenPassword($getData['newPassword']);
  254. $updateData = [
  255. 'user_password' => $newPassword['password'],
  256. 'user_salt' => $newPassword['encryption'],
  257. ];
  258. $getUserInfo = $this
  259. ->where($conditions_user)
  260. ->update($updateData);
  261. if (empty($getUserInfo) === true) {
  262. return [
  263. 'code' => $code,
  264. 'msg' => lang('EC01002'),
  265. 'data' => [],
  266. ];
  267. } else {
  268. $code = 1;
  269. return [
  270. 'code' => $code,
  271. 'msg' => lang('MC01004'),
  272. 'data' => [],
  273. ];
  274. }
  275. }//end updatePassword()
  276. /**
  277. * 验证用户密码
  278. */
  279. public function checkPwd($getData)
  280. {
  281. $userToken = input('get.userToken');
  282. $conditions_user['user_token'] = $userToken;
  283. // 获取用户信息.
  284. $userInfo = $this
  285. ->field('user_salt, user_password')
  286. ->where($conditions_user)
  287. ->find();
  288. if(empty($getData['password'])){
  289. return [
  290. 'code' => -2,
  291. 'msg' => lang('EA01011'),
  292. 'data' => [],
  293. ];
  294. }
  295. if(empty($userInfo)){
  296. return [
  297. 'code' => -2,
  298. 'msg' => lang('EA01012'),
  299. 'data' => [],
  300. ];
  301. }
  302. if($userInfo['user_password'] != md5(md5($userInfo['user_salt'].$getData['password']))){
  303. return [
  304. 'code' => -2,
  305. 'msg' => lang('EA01001'),
  306. 'data' => [],
  307. ];
  308. }
  309. return [
  310. 'code' => 1,
  311. 'msg' => '',
  312. 'data' => $userInfo,
  313. ];
  314. }//end checkPwd()
  315. }