UserController.php 5.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184
  1. <?php
  2. namespace api\modules\v1\controllers;
  3. use common\models\Customer;
  4. use common\models\User;
  5. use yii\rest\ActiveController;
  6. use common\library\Apireturn;
  7. use yii;
  8. class UserController extends ActiveController
  9. {
  10. public $modelClass = 'common\models\User';
  11. //注册步骤1
  12. public function actionRegister()
  13. {
  14. $username =Yii::$app->request->post('username');
  15. $code =Yii::$app->request->post('code');
  16. if(empty($username)||empty($code))
  17. {
  18. return Apireturn::sent(1,'参数错误');
  19. }
  20. if(!User::is_tel($username))
  21. {
  22. return Apireturn::sent(1,'请输入正确的手机号');
  23. }
  24. $count = User::find()->where(array('username'=>$username))->count();
  25. if($count>0)
  26. {
  27. return Apireturn::sent(1,'手机号已存在');
  28. }
  29. //判断验证码是否正确
  30. $result = TelcodeController::existCode($username,TelcodeController::TYPE_REGISTER,$code);
  31. if($result==false)
  32. {
  33. return Apireturn::sent(1,'验证码错误');
  34. }
  35. return Apireturn::sent(0,'验证通过');
  36. }
  37. //注册步骤2 确认密码
  38. public function actionRegister2()
  39. {
  40. $username =Yii::$app->request->post('username');
  41. $password =Yii::$app->request->post('password');
  42. $password2 =Yii::$app->request->post('password2');
  43. $recommend =Yii::$app->request->post('recommend');
  44. if(empty($username)||empty($password)||empty($password2))
  45. {
  46. return Apireturn::sent(1,'参数错误');
  47. }
  48. if(!User::is_tel($username))
  49. {
  50. return Apireturn::sent(1,'请输入正确的手机号');
  51. }
  52. if(!User::is_pwd($password))
  53. {
  54. return Apireturn::sent(1,'请输入6到16位的密码');
  55. }
  56. if($password!=$password2)
  57. {
  58. return Apireturn::sent(1,'两次密码输入不一致');
  59. }
  60. if(User::find()->where(['username'=>$username])->count()>0)
  61. {
  62. return Apireturn::sent(1,'账号已经存在');
  63. }
  64. //添加用户
  65. $model = new User();
  66. $model->username=$username;
  67. //添加推荐人信息
  68. if(!empty($recommend)){
  69. $recommendname = User::find()->where(['id'=>$recommend,'role'=>User::ROLE_CUSTOMER])->one();
  70. if(!empty($recommendname)){
  71. $model->recommendation=isset($recommendname->username)?$recommendname->username:'';
  72. }
  73. }
  74. $model->setPassword($password);
  75. $model->generateAuthKey();
  76. $model->role = User::ROLE_CUSTOMER;
  77. $model->created_at = time();
  78. if($model->save()){
  79. $customer = new Customer();
  80. $customer->uid = $model->id;
  81. $customer->updated_at = time();
  82. $customer->save();
  83. return Apireturn::sent(0,'注册成功');
  84. }else{
  85. return Apireturn::sent(1,'注册失败');
  86. }
  87. }
  88. //登录
  89. public function actionLogin()
  90. {
  91. $username = Yii::$app->request->post('username');
  92. $password = Yii::$app->request->post('password');
  93. if(empty($username)||empty($password))
  94. {
  95. return Apireturn::sent(1,'参数错误',200);
  96. }
  97. $user = User::find()->where(array('username'=>$username))->one();
  98. if(empty($user))
  99. {
  100. return Apireturn::sent(1,'用户不存在',200);
  101. }
  102. if($user->status==User::STATUS_DELETED)
  103. {
  104. return Apireturn::sent(1,'用户被删除',200);
  105. }
  106. if($user->role!=User::ROLE_CUSTOMER)
  107. return Apireturn::sent(1,'账号类型不是用户',200);
  108. if(!Yii::$app->getSecurity()->validatePassword($password,$user->password_hash))
  109. {
  110. return Apireturn::sent(1,'密码错误',200);
  111. }
  112. $access_token = md5($user->id.$user->auth_key.time());
  113. $user->access_token = $access_token;
  114. if($user->save())
  115. {
  116. return Apireturn::sent(0,'登录成功',200,array('token'=>$access_token));
  117. }else{
  118. return Apireturn::sent(1,'登录失败',200);
  119. }
  120. }
  121. //找回密码 1
  122. public function actionFindpass()
  123. {
  124. $username =Yii::$app->request->post('username');
  125. $code =Yii::$app->request->post('code');
  126. if(empty($username)||empty($code))
  127. {
  128. return Apireturn::sent(1,'参数错误');
  129. }
  130. $count = User::find()->where(array('username'=>$username))->count();
  131. if($count==0)
  132. {
  133. return Apireturn::sent(1,'手机号未注册');
  134. }
  135. //判断验证码是否正确
  136. $result = TelcodeController::existCode($username,TelcodeController::TYPE_FIND,$code);
  137. if($result==false)
  138. {
  139. return Apireturn::sent(1,'验证码错误');
  140. }
  141. return Apireturn::sent(0,'验证通过');
  142. }
  143. //找回密码 2
  144. public function actionFindpass2()
  145. {
  146. $username =Yii::$app->request->post('username');
  147. $password =Yii::$app->request->post('password');
  148. $password2 =Yii::$app->request->post('password2');
  149. if(empty($username)||empty($password)||empty($password2))
  150. {
  151. return Apireturn::sent(1,'参数错误');
  152. }
  153. $user = User::find()->where(array('username'=>$username))->one();
  154. if(empty($user))
  155. {
  156. return Apireturn::sent(1,'用户不存在');
  157. }
  158. if($password!=$password2)
  159. {
  160. return Apireturn::sent(1,'两次密码不一致');
  161. }
  162. if(!User::is_pwd($password))
  163. {
  164. return Apireturn::sent(1,'请输入6到16位的密码');
  165. }
  166. $user->password_hash = Yii::$app->security->generatePasswordHash($password);
  167. $user->updated_at = time();
  168. if($user->save())
  169. {
  170. return Apireturn::sent(0,'重置成功');
  171. }else{
  172. return Apireturn::sent(1,'重置密码失败');
  173. }
  174. }
  175. }