Usercenter.php 9.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234
  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:synopsis type:string default:-- desc:个人简介
  30. * @return name:background type:string default:-- desc:个人中心背景图片地址
  31. * @return name:password type:string default:-- desc:不加密
  32. * @return name:decode_password type:string default:-- desc:加密后
  33. * @return name:true_name type:string default:-- desc:真实姓名
  34. */
  35. public function getUserInfo()
  36. {
  37. $uid = $this->uid;
  38. $field = 'phone,name,headimg,synopsis,status,background,decode_password,password,true_name';
  39. $user_info = Db::name('store_member')->field($field)->where('id',$uid)->find();
  40. if(empty($user_info)) $this->error('用户信息不正确');
  41. if($user_info['status'] == 0) $this->error('该用户已被禁用');
  42. $this->success('获取成功',$user_info);
  43. }
  44. /**
  45. * @title 编辑个人信息
  46. * @desc 编辑个人信息
  47. * @author qc
  48. * @url /api/Usercenter/updateUserInfo
  49. * @method POST
  50. * @tag 编辑信息
  51. * @header name:Authorization require:1 desc:Token
  52. * @param name:type type:int require:1 default:1 desc:修改的类型(1:昵称,2:头像)
  53. * @param name:name type:string require:0 default:-- desc:昵称(type为1时必传)
  54. * @param name:headimg type:string require:0 default:-- desc:头像地址(type为2时必传)
  55. * @return name:phone type:int default:-- desc:手机号
  56. * @return name:name type:string default:-- desc:姓名
  57. * @return name:headimg type:string default:-- desc:头像地址
  58. * @return name:password type:string default:-- desc:不加密
  59. * @return name:decode_password type:string default:-- desc:加密后
  60. */
  61. public function updateUserInfo()
  62. {
  63. $type = input('post.type',1);
  64. $headimg = input('post.headimg');
  65. $name = input('post.name');
  66. if(!in_array($type,[1,2])) $this->error('参数错误');
  67. $update_data= [];
  68. if($type == 1 && $name) $update_data['name'] = $name;
  69. if($type == 2 && $headimg) $update_data['headimg'] = $headimg;
  70. if(empty($update_data)) $this->error('参数错误');
  71. Db::name('store_member')->where('id',$this->uid)->update($update_data);
  72. $field = 'phone,name,headimg,status,decode_password,password';
  73. $user_info = Db::name('store_member')->field($field)->where('id',$this->uid)->find();
  74. $this->success('编辑成功',$user_info);
  75. }
  76. /**
  77. * @title 绑定手机号
  78. * @desc 绑定手机号
  79. * @author qc
  80. * @url /api/Usercenter/modifyPhone
  81. * @method POST
  82. * @header name:Authorization require:1 desc:Token
  83. * @param name:phone type:int require:1 default:-- desc:手机号
  84. * @param name:code type:int require:1 default:-- desc:手机号验证码
  85. * @return name:phone type:int default:-- desc:手机号
  86. * @return name:name type:string default:-- desc:姓名
  87. * @return name:headimg type:string default:-- desc:头像地址
  88. * @return name:password type:string default:-- desc:不加密
  89. * @return name:decode_password type:string default:-- desc:加密后
  90. */
  91. public function modifyPhone()
  92. {
  93. $uid = $this->uid;
  94. $phone = input('post.phone');
  95. $code = input('post.code');
  96. if(empty($phone) || empty($code) ) $this->error('参数错误');
  97. $store_member_sms = Db::name('store_member_sms')
  98. ->field('id,code')->where('phone',$phone)
  99. ->where('used',0)->order('id desc')
  100. ->find();
  101. // if($store_member_sms['code'] != $code) $this->error('验证码错误');
  102. //判断手机号是否已注册
  103. $member_id = Db::name('store_member')->where('phone',$phone)->where('id','<>',$this->uid)->value('id');
  104. if($member_id) $this->error('手机号已注册过');
  105. $up = ['phone'=>$phone];
  106. $res = Db::name('store_member')->where('id',$uid)->update($up);
  107. $field = 'phone,name,headimg,status,decode_password,password';
  108. $user_info = Db::name('store_member')->field($field)->where('id',$this->uid)->find();
  109. if($res !==false){
  110. Db::name('store_member_sms')->where('id',$store_member_sms['id'])->update(['used'=>1]);
  111. $this->success('绑定成功',$user_info);
  112. }else{
  113. $this->error('绑定失败');
  114. }
  115. }
  116. /**
  117. * @title 发送短信验证码
  118. * @desc 发送短信验证码
  119. * @author QGF
  120. * @url /api/Usercenter/sendSms
  121. * @method POST
  122. * @tag 短信验证码
  123. * @param name:phone type:int require:1 default:-- desc:要获取验证码的手机号
  124. * @return name:code type:string default:-- desc:验证码
  125. */
  126. public function sendSms(){
  127. $phone = input('post.phone');
  128. if(empty($phone)) $this ->error('参数错误');
  129. $code = rand(0,9).rand(0,9).rand(0,9).rand(0,9).rand(0,9).rand(0,9);
  130. AlibabaCloud::accessKeyClient('LTAI5tKATi9QpdtaBpEHeCP4', 'F8B77fPPitlfRScTuPmQxfphLRpt6a')
  131. ->regionId('cn-hangzhou')->asDefaultClient();
  132. try {
  133. $result = AlibabaCloud::rpc()
  134. ->product('Dysmsapi')
  135. ->version('2017-05-25')
  136. ->action('SendSms')
  137. ->method('POST')
  138. ->host('dysmsapi.aliyuncs.com')
  139. ->options([
  140. 'query' => [
  141. 'RegionId' => "cn-hangzhou",
  142. 'PhoneNumbers' => $phone,
  143. 'SignName' => "火星帝界",
  144. 'TemplateCode' => "SMS_223135158",
  145. 'TemplateParam' => json_encode(array("code"=>$code)),
  146. ],
  147. ])->request();
  148. $result = $result->toArray();
  149. if($result['Code'] == "OK")
  150. {
  151. $sms_data = array(
  152. 'phone'=>$phone,
  153. 'code'=>$code,
  154. 'result'=>$result['Message']
  155. );
  156. Db::name('store_member_sms')->insert($sms_data);
  157. $this->error('发送成功',$code);
  158. }else{
  159. $this->error('发送失败');
  160. }
  161. } catch (ClientException $e) {
  162. echo $e->getErrorMessage() . PHP_EOL;
  163. } catch (ServerException $e) {
  164. echo $e->getErrorMessage() . PHP_EOL;
  165. }
  166. }
  167. /**
  168. * @title 获取我的留言
  169. * @desc 获取我的留言
  170. * @author qc
  171. * @url /api/Usercenter/getMyMessage
  172. * @method GET
  173. * @header name:Authorization require:1 desc:Token
  174. * @param name:page type:int : default:1 desc:页数
  175. * @param name:page_num type:int : default:20 desc:每页数
  176. * @return name:message type:string default:-- desc:留言内容
  177. * @return name:images type:string default:-- desc:留言图片,多张有逗号(,)隔开
  178. * @return name:create_at type:string default:-- desc:留言时间
  179. * @return name:headimg type:string default:-- desc:留言人头像
  180. * @return name:name type:string default:-- desc:留言人名称
  181. */
  182. public function getMyMessage()
  183. {
  184. $page = input('page',1);
  185. $page_num = input('page_num',20);
  186. $off_set = $page*$page_num - $page_num;
  187. $list = Db::table('ticket_note')->alias('n')
  188. ->field('n.id,n.message,n.images,n.create_at,m.headimg,m.name')
  189. ->join('store_member m','n.from_uid = m.id','LEFT')
  190. ->where(['from_uid'=>$this->uid,'n.status'=>1])
  191. ->order('n.id desc')
  192. ->limit($off_set,$page_num)
  193. ->select();
  194. $this->success('获取成功',$list);
  195. }
  196. /**
  197. * @title 留言
  198. * @desc 留言
  199. * @author qc
  200. * @url /api/Usercenter/leaveMessage
  201. * @method POST
  202. * @header name:Authorization require:1 desc:Token
  203. * @param name:message type:string require:1 default:-- desc:留言内容
  204. * @param name:images type:string require:0 default:-- desc:影评图片(逗号隔开)
  205. * @param name:tel type:string require:0 default:-- desc:电话
  206. */
  207. public function leaveMessage()
  208. {
  209. $insert_data = [
  210. 'from_uid'=>$this->uid,
  211. 'to_uid'=>input('post.to_uid',0),
  212. 'message'=>input('post.message'),
  213. 'images'=>input('post.images'),
  214. 'tel'=>input('post.tel'),
  215. 'create_at'=>date('Y-m-d H:i:s')
  216. ];
  217. Db::table('ticket_note')->insert($insert_data);
  218. $this->success('留言成功',Db::getLastInsID());
  219. }
  220. }