User.php 4.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169
  1. <?php
  2. namespace addons\cms\controller\api;
  3. use addons\third\model\Third;
  4. use think\Config;
  5. use think\Validate;
  6. /**
  7. * 会员
  8. */
  9. class User extends Base
  10. {
  11. protected $noNeedLogin = ['getSigned', 'userInfo'];
  12. public function _initialize()
  13. {
  14. parent::_initialize();
  15. if (!Config::get('fastadmin.usercenter')) {
  16. $this->error(__('User center already closed'));
  17. }
  18. }
  19. /**
  20. * Undocumented function
  21. * 个人中心
  22. * @return void
  23. */
  24. public function index()
  25. {
  26. $info = $this->auth->getUserInfo();
  27. $info['avatar'] = cdnurl($info['avatar'], true);
  28. $vip = get_addon_info('vip');
  29. $info['is_install_vip'] = ($vip && $vip['state']);
  30. if (!$info['is_install_vip']) { //禁用
  31. $info['vip'] = 0;
  32. $info['vipInfo'] = null;
  33. } else {
  34. $info['vipInfo'] = \addons\vip\library\Service::getVipInfo($info['id']) ?? null;
  35. if (empty($info['vipInfo'])) {
  36. $info['vip'] = 0;
  37. }
  38. }
  39. $signin = get_addon_info('signin');
  40. $info['is_install_signin'] = ($signin && $signin['state']);
  41. $this->success('', [
  42. 'userInfo' => $info
  43. ]);
  44. }
  45. //用户发表的文章和评论
  46. public function userInfo()
  47. {
  48. $user_id = $this->request->param('user_id');
  49. $type = $this->request->param('type');
  50. $user = \app\common\model\User::field('id,nickname,avatar,status')->where('id', $user_id)->find();
  51. if (!$user) {
  52. $this->error("未找到指定会员");
  53. }
  54. if ($user['status'] == 'hidden') {
  55. $this->error("暂时无法浏览");
  56. }
  57. $user['avatar'] = cdnurl($user['avatar'], true);
  58. $pagesize = 10;
  59. $data = ['user' => $user];
  60. if ($type == 'archives') {
  61. $data['list'] = \addons\cms\model\Archives::with(['user'=>function($query){
  62. $query->field('id,nickname,avatar');
  63. }, 'channel'])
  64. ->where('user_id', $user['id'])
  65. ->where('status', '<>', 'hidden')
  66. ->order('id', 'desc')
  67. ->paginate($pagesize);
  68. } else {
  69. $data['list'] = \addons\cms\model\Comment::with(['user'=>function($query){
  70. $query->field('id,nickname,avatar');
  71. }, 'archives'])
  72. ->where('user_id', $user['id'])
  73. ->where('status', '<>', 'hidden')
  74. ->order('id', 'desc')
  75. ->paginate($pagesize);
  76. }
  77. $data['archives'] = \addons\cms\model\Archives::where('user_id', $user['id'])->where('status', '<>', 'hidden')->count();
  78. $data['comments'] = \addons\cms\model\Comment::where('user_id', $user['id'])->where('status', '<>', 'hidden')->count();
  79. $this->success('', $data);
  80. }
  81. /**
  82. * 个人资料
  83. */
  84. public function profile()
  85. {
  86. $user = $this->auth->getUser();
  87. $username = $this->request->post('username');
  88. $nickname = $this->request->post('nickname');
  89. $bio = $this->request->post('bio');
  90. $avatar = $this->request->post('avatar');
  91. if (!$username || !$nickname) {
  92. $this->error("用户名和昵称不能为空");
  93. }
  94. if (strlen($bio) > 100) {
  95. $this->error("签名太长了!");
  96. }
  97. $exists = \app\common\model\User::where('username', $username)->where('id', '<>', $this->auth->id)->find();
  98. if ($exists) {
  99. $this->error(__('Username already exists'));
  100. }
  101. $avatar = str_replace(cdnurl('', true), '', $avatar);
  102. $user->username = $username;
  103. $user->nickname = $nickname;
  104. $user->bio = $bio;
  105. $user->avatar = $avatar;
  106. $user->save();
  107. $this->success('修改成功!');
  108. }
  109. /**
  110. * 保存头像
  111. */
  112. public function avatar()
  113. {
  114. $user = $this->auth->getUser();
  115. $avatar = $this->request->post('avatar');
  116. if (!$avatar) {
  117. $this->error("头像不能为空");
  118. }
  119. $avatar = str_replace(cdnurl('', true), '', $avatar);
  120. $user->avatar = $avatar;
  121. $user->save();
  122. $this->success('修改成功!');
  123. }
  124. /**
  125. * 注销登录
  126. */
  127. public function logout()
  128. {
  129. $this->auth->logout();
  130. $this->success(__('Logout successful'), ['__token__' => $this->request->token()]);
  131. }
  132. /**
  133. * Undocumented function
  134. * 分享配置参数
  135. * @return void
  136. */
  137. public function getSigned()
  138. {
  139. $url = $this->request->param('url', '', 'trim');
  140. $js_sdk = new \addons\cms\library\Jssdk();
  141. $data = $js_sdk->getSignedPackage($url);
  142. $this->success('', $data);
  143. }
  144. }