Usercenter.php 6.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173
  1. <?php
  2. namespace app\api\controller;
  3. use AlibabaCloud\Client\AlibabaCloud;
  4. use AlibabaCloud\Client\Exception\ClientException;
  5. use AlibabaCloud\Client\Exception\ServerException;
  6. use think\Db;
  7. /**
  8. * @title 会员个人中心
  9. * @controller Usercenter
  10. * @group base
  11. */
  12. class Usercenter extends Base
  13. {
  14. public function initialize()
  15. {
  16. parent::check_login();
  17. }
  18. /**
  19. * @title 获取个人信息
  20. * @desc 个人信息
  21. * @author qc
  22. * @url /api/Usercenter/getUserInfo
  23. * @method GET
  24. * @tag 个人信息
  25. * @header name:Authorization require:1 desc:Token
  26. * @return name:phone type:int default:-- desc:手机号
  27. * @return name:name type:string default:-- desc:姓名
  28. * @return name:headimg type:string default:-- desc:头像地址
  29. * @return name:crystal type:int default:-- desc:水晶(不可提现)
  30. * @return name:crystal_cash type:string default:-- desc:水晶(可提现)
  31. */
  32. public function getUserInfo()
  33. {
  34. $uid = $this->uid;
  35. $field = 'id,phone,name,headimg,status,crystal,crystal_cash';
  36. $user_info = Db::name('store_member')->field($field)->where('id',$uid)->find();
  37. if(empty($user_info)) $this->error('用户信息不正确');
  38. if($user_info['status'] == 0) $this->error('该用户已被禁用');
  39. $this->success('获取成功',$user_info);
  40. }
  41. /**
  42. * @title 编辑个人信息
  43. * @desc 编辑个人信息
  44. * @author qc
  45. * @url /api/Usercenter/updateUserInfo
  46. * @method POST
  47. * @tag 编辑信息
  48. * @header name:Authorization require:1 desc:Token
  49. * @param name:type type:int require:1 default:1 desc:修改的类型(1:昵称,2:头像)
  50. * @param name:name type:string require:0 default:-- desc:昵称(type为1时必传)
  51. * @param name:headimg type:string require:0 default:-- desc:头像地址(type为2时必传)
  52. * @return name:phone type:int default:-- desc:手机号
  53. * @return name:name type:string default:-- desc:姓名
  54. * @return name:headimg type:string default:-- desc:头像地址
  55. */
  56. public function updateUserInfo()
  57. {
  58. $type = input('post.type',1);
  59. $headimg = input('post.headimg');
  60. $name = input('post.name');
  61. if(!in_array($type,[1,2])) $this->error('参数错误');
  62. $update_data= [];
  63. if($type == 1 && $name) $update_data['name'] = $name;
  64. if($type == 2 && $headimg) $update_data['headimg'] = $headimg;
  65. if(empty($update_data)) $this->error('参数错误');
  66. Db::name('store_member')->where('id',$this->uid)->update($update_data);
  67. $field = 'phone,name,headimg';
  68. $user_info = Db::name('store_member')->field($field)->where('id',$this->uid)->find();
  69. $this->success('编辑成功',$user_info);
  70. }
  71. /**
  72. * @title 绑定手机号
  73. * @desc 绑定手机号
  74. * @author qc
  75. * @url /api/Usercenter/modifyPhone
  76. * @method POST
  77. * @header name:Authorization require:1 desc:Token
  78. * @param name:phone type:int require:1 default:-- desc:手机号
  79. * @param name:code type:int require:1 default:-- desc:手机号验证码
  80. * @return name:phone type:int default:-- desc:手机号
  81. * @return name:name type:string default:-- desc:姓名
  82. * @return name:headimg type:string default:-- desc:头像地址
  83. * @return name:password type:string default:-- desc:不加密
  84. * @return name:decode_password type:string default:-- desc:加密后
  85. */
  86. public function modifyPhone()
  87. {
  88. $uid = $this->uid;
  89. $phone = input('post.phone');
  90. $code = input('post.code');
  91. if(empty($phone) || empty($code) ) $this->error('参数错误');
  92. $store_member_sms = Db::name('store_member_sms')
  93. ->field('id,code')->where('phone',$phone)
  94. ->where('used',0)->order('id desc')
  95. ->find();
  96. if($store_member_sms['code'] != $code) $this->error('验证码错误');
  97. //判断手机号是否已注册
  98. $member_id = Db::name('store_member')->where('phone','=',$phone)->where('id','<>',$this->uid)->value('id');
  99. if($member_id) $this->error('手机号已注册过');
  100. $up = ['phone'=>$phone];
  101. $res = Db::name('store_member')->where('id',$uid)->update($up);
  102. $field = 'phone,name,headimg,status,decode_password,password';
  103. $user_info = Db::name('store_member')->field($field)->where('id',$this->uid)->find();
  104. if($res !==false){
  105. Db::name('store_member_sms')->where('id',$store_member_sms['id'])->update(['used'=>1]);
  106. $this->success('绑定成功',$user_info);
  107. }else{
  108. $this->error('绑定失败');
  109. }
  110. }
  111. /**
  112. * @title 发送短信验证码
  113. * @desc 发送短信验证码
  114. * @author QGF
  115. * @url /api/Usercenter/sendSms
  116. * @method POST
  117. * @tag 短信验证码
  118. * @param name:phone type:int require:1 default:-- desc:要获取验证码的手机号
  119. * @return name:code type:string default:-- desc:验证码
  120. */
  121. public function sendSms(){
  122. $phone = input('post.phone');
  123. if(empty($phone)) $this ->error('参数错误');
  124. $code = rand(0,9).rand(0,9).rand(0,9).rand(0,9).rand(0,9).rand(0,9);
  125. AlibabaCloud::accessKeyClient('LTAI5tSFmMzKUQC4zJjc3Guu', 'gdEyLTubu0KT6WzR26upX3dgiu5FD6')
  126. ->regionId('cn-hangzhou')->asDefaultClient();
  127. try {
  128. $result = AlibabaCloud::rpc()
  129. ->product('Dysmsapi')
  130. ->version('2017-05-25')
  131. ->action('SendSms')
  132. ->method('POST')
  133. ->host('dysmsapi.aliyuncs.com')
  134. ->options([
  135. 'query' => [
  136. 'RegionId' => "cn-hangzhou",
  137. 'PhoneNumbers' => $phone,
  138. 'SignName' => "验证码",
  139. 'TemplateCode' => "SMS_204845304",
  140. 'TemplateParam' => json_encode(array("code"=>$code)),
  141. ],
  142. ])->request();
  143. $result = $result->toArray();
  144. var_dump($result);
  145. if($result['Code'] == "OK")
  146. {
  147. $sms_data = array(
  148. 'phone'=>$phone,
  149. 'code'=>$code,
  150. 'result'=>$result['Message']
  151. );
  152. Db::name('store_member_sms')->insert($sms_data);
  153. $this->error('发送成功',$code);
  154. }else{
  155. $this->error('发送失败');
  156. }
  157. } catch (ClientException $e) {
  158. echo $e->getErrorMessage() . PHP_EOL;
  159. } catch (ServerException $e) {
  160. echo $e->getErrorMessage() . PHP_EOL;
  161. }
  162. }
  163. }