UserCenter.php 5.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141
  1. <?php
  2. namespace app\api\controller;
  3. use app\common\model\UserLevelRank;
  4. use app\common\model\UserMessage;
  5. use app\common\validate\UserVali;
  6. use EasyWeChat\Factory;
  7. use think\cache\driver\Redis;
  8. use think\Db;
  9. use app\common\model\User;
  10. /**
  11. * @title 会员个人中心
  12. * @controller UserCenter
  13. * @group base
  14. */
  15. class UserCenter extends Base
  16. {
  17. public function initialize()
  18. {
  19. parent::initialize();
  20. parent::checkLogin();
  21. }
  22. /**
  23. * @title 获取个人信息
  24. * @desc 个人信息
  25. * @author qc
  26. * @url /api/User_center/getUserInfo
  27. * @method GET
  28. * @tag 个人信息
  29. * @header name:Authorization require:1 desc:Token
  30. * @return name:id type:int default:-- desc:会员id
  31. * @return name:phone type:int default:-- desc:手机号
  32. * @return name:openid type:string default:-- desc:openid
  33. * @return name:name type:string default:-- desc:昵称
  34. * @return name:headimg type:string default:-- desc:头像地址
  35. *
  36. */
  37. public function getUserInfo()
  38. {
  39. $field = 'id,phone,name,level_id,headimg,openid';
  40. $user_info = User::field($field)->where('id',$this->user_id)->find()->toArray();
  41. $this->success('获取成功',['detail'=>$user_info]);
  42. }
  43. /**
  44. * @title 编辑个人信息
  45. * @desc 编辑个人信息
  46. * @author qc
  47. * @url /api/User_center/updateUserInfo
  48. * @method POST
  49. * @tag 编辑信息
  50. * @header name:Authorization require:1 desc:Token
  51. * @param name:name type:string default:-- desc:昵称
  52. * @param name:headimg type:string default:-- desc:头像地址
  53. * @return name:id type:int default:-- desc:会员id
  54. * @return name:phone type:int default:-- desc:手机号
  55. * @return name:openid type:string default:-- desc:openid
  56. * @return name:name type:string default:-- desc:昵称
  57. * @return name:headimg type:string default:-- desc:头像地址
  58. */
  59. public function updateUserInfo()
  60. {
  61. $headimg = input('post.headimg');
  62. $name = trim(input('post.name',''));
  63. $update_data= [];
  64. $update_data['name'] = $name;
  65. $update_data['headimg'] = $headimg;
  66. Db::name('store_member')->where('id',$this->user_id)->update($update_data);
  67. $field = 'id,phone,name,headimg,openid';
  68. $user_info = Db::name('store_member')->field($field)->where('id',$this->user_id)->find();
  69. $this->success('编辑成功',['detail'=>$user_info]);
  70. }
  71. /**
  72. * @title 绑定手机号
  73. * @desc 绑定手机号
  74. * @author qc
  75. * @url /api/User_center/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. */
  84. public function modifyPhone()
  85. {
  86. $uid = $this->user_id;
  87. $phone = input('post.phone');
  88. $code = input('post.code');
  89. if(empty($phone) || empty($code) ) $this->error('参数错误');
  90. $field = 'id,phone,name,headimg';
  91. $user_info = Db::name('store_member')->field($field)->where('id',$this->user_id)->find();
  92. if($user_info['phone'] == $phone)$this->error('更换手机号与绑定手机号一致!');
  93. $check_code = $this->checkPhoneCode($phone,$code);
  94. if(!$check_code) $this->error('验证码错误');
  95. //判断手机号是否已注册
  96. $member_id = Db::name('store_member')
  97. ->where('phone','=',$phone)->where('is_deleted','=',0)->where('id','<>',$this->user_id)->value('id');
  98. if($member_id) $this->error('手机号已注册过');
  99. Db::name('store_member')->where('id',$uid)->update(['phone'=>$phone]);
  100. $user_info['phone'] = $phone;
  101. $this->updatePhoneCode($check_code);
  102. $this->success('绑定成功',$user_info);
  103. }
  104. /**
  105. * @title 授权绑定手机号
  106. * @desc 授权绑定手机号
  107. * @author qc
  108. * @url /api/User_center/impowerBindPhone
  109. * @method POST
  110. * @tag
  111. * @header name:Authorization require:1 desc:Token
  112. * @param name:code type:int require:1 default:-- desc:code值
  113. */
  114. public function impowerBindPhone()
  115. {
  116. $code = input('code');
  117. $redis = new Redis();
  118. $access_token = $redis->get('access_token');
  119. if(!$access_token){
  120. $mini_program = config('app.mini_program');
  121. $res = requestGet("https://api.weixin.qq.com/cgi-bin/token?appid={$mini_program['app_id']}&secret={$mini_program['secret']}&code=".$code.'&grant_type=client_credential');
  122. $res = json_decode($res,true);
  123. $redis->set('access_token',$res['access_token'],7000);
  124. $access_token = $res['access_token'];
  125. }
  126. $user_info = requestPost('https://api.weixin.qq.com/wxa/business/getuserphonenumber?access_token='.$access_token,json_encode(array('code'=>$code)));
  127. $user_info = json_decode($user_info,true);
  128. if(empty($user_info) || $user_info['errcode'] !=0 ) $this->error('请求错误');
  129. User::where('id',$this->user_id)->update(['phone'=>$user_info['phone_info']['purePhoneNumber']]);
  130. $this->success('绑定成功');
  131. }
  132. }