BaseController.php 3.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495
  1. <?php
  2. /**
  3. * 入口
  4. * @author wesmiler
  5. */
  6. namespace app\api\controller;
  7. use app\weixin\model\Fans;
  8. use app\weixin\model\Member;
  9. use app\weixin\model\Wechat;
  10. use app\weixin\service\PRedis;
  11. use cmf\controller\HomeBaseController;
  12. use think\Request;
  13. class BaseController extends HomeBaseController
  14. {
  15. public $userId = 0;
  16. public $needRegProfile = false;
  17. public $userInfo = [];
  18. public function __construct(Request $request = null)
  19. {
  20. parent::__construct($request);
  21. $this->userInfo = session('userInfo');
  22. $debug = config('weixin.debug');
  23. $field = 'id,openid,user_login,mobile,real_name,is_reg_profile,user_nickname,avatar,user_status,is_follow,is_heart,freezing_choose';
  24. if (empty($this->userInfo) || $debug) {
  25. // 调试模式
  26. $curOpenId = session('openid');
  27. $openid = $curOpenId ? $curOpenId : config('weixin.openid');
  28. if($openid){
  29. $this->userInfo = Member::getInfo(['openid' => $openid, 'user_type'=> 2], $field);
  30. }
  31. $wxInfo = Fans::getInfo(['openid' => $openid]);
  32. session('openid', $openid);
  33. session('wxInfo', $wxInfo);
  34. session('userInfo', $this->userInfo);
  35. }
  36. $action = request()->action();
  37. $this->userId = isset($this->userInfo['id']) ? intval($this->userInfo['id']) : 0;
  38. if(empty($this->userId) && $action != 'loginbymobile'){
  39. showJson(1007,2103,['url'=> Wechat::makeRedirectUrl(url('/weixin/match/index','','',true))]);
  40. }
  41. // 更新登录时间
  42. if(!PRedis::get("members:login")){
  43. Member::where(['id'=> $this->userId])->update(['last_login_time'=> time()]);
  44. PRedis::set("members:login", $this->userId, rand(120, 300));
  45. }
  46. // $realname = isset($this->userInfo['real_name'])? $this->userInfo['real_name'] : '';
  47. $mobile = isset($this->userInfo['mobile'])? $this->userInfo['mobile'] : '';
  48. $isReg = isset($this->userInfo['is_reg_profile'])? $this->userInfo['is_reg_profile'] : 0;
  49. if(empty($mobile) || $isReg != 1){
  50. $this->needRegProfile = true;
  51. session('needRegProfile', true);
  52. }else{
  53. session('needRegProfile', false);
  54. }
  55. // $this->userId = 100002;
  56. }
  57. /**
  58. * 验证用户
  59. */
  60. public function checkUser(){
  61. $debug = config('weixin.debug');
  62. $memberInfo = Member::where(['id'=> $this->userId, 'user_type'=> 2])
  63. ->field('user_status,is_reg_profile,freezing_choose')
  64. ->find();
  65. $needRegProfile = isset($memberInfo['is_reg_profile'])? intval($memberInfo['is_reg_profile']) : 0;
  66. $userStatus = isset($memberInfo['user_status'])? intval($memberInfo['user_status']) : -1;
  67. if($userStatus == -1) {
  68. showJson(1006, 1016, ['url' => 'https://mp.weixin.qq.com/mp/profile_ext?action=home&__biz=Mzg3ODEzNjMzMQ==&scene=124#wechat_redirect']);
  69. }
  70. // 用户冻结
  71. if($userStatus != 1){
  72. $freezingChoose = isset($memberInfo['freezing_choose']) ? intval($memberInfo['freezing_choose']) : 0;
  73. showJson(1006, $freezingChoose? ($freezingChoose + 1020) : 1011, ['url' => url('/weixin/page/custom', '', '', true)]);
  74. }
  75. // 未完善资料
  76. if($needRegProfile != 1 && !$debug){
  77. $referer = request()->server('HTTP_REFERER');
  78. $rebackurl = $referer? $referer : url('/weixin/match/index','','',true);
  79. showJson(1006, 2132, ['url'=> Wechat::makeRedirectUrl(url('/weixin/index/entry?rebackurl='.$rebackurl,'','',true))]);
  80. }
  81. }
  82. }
  83. ?>