MarketBaseController.php 4.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111
  1. <?php
  2. /**
  3. * 入口
  4. * @author wesmiler
  5. */
  6. namespace app\weixin\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 MarketBaseController extends HomeBaseController
  14. {
  15. public $userId = 0;
  16. public $userInfo = [];
  17. public $agentType = 2;
  18. public $agentStatus = 0;
  19. public function __construct(Request $request = null)
  20. {
  21. parent::__construct($request);
  22. // AJAX请求 不验证授权
  23. $field = 'id,openid,user_login,mobile,real_name,user_status,agent_type,agent_status,is_reg_profile,user_nickname,avatar,is_heart,is_follow,freezing_choose';
  24. if($this->request->isAjax()){
  25. $this->userInfo = session('agentInfo');
  26. $debug = config('weixin.debug');
  27. if(empty($this->userInfo) || $debug){
  28. // 调试模式
  29. $curOpenId = session('openid');
  30. $openid = $curOpenId? $curOpenId : config('weixin.openid');
  31. if($openid){
  32. $this->userInfo = Member::getInfo(['openid'=> $openid, 'agent_type'=> 1],$field);
  33. }
  34. $wxInfo = Fans::getInfo(['openid' => $openid]);
  35. session('openid', $openid);
  36. session('wxInfo', $wxInfo);
  37. session('agentInfo', $this->userInfo);
  38. }
  39. $this->userId = isset($this->userInfo['id'])? intval($this->userInfo['id']) : 0;
  40. $this->userType = isset($this->userInfo['user_type'])? intval($this->userInfo['user_type']) : 2;
  41. $agentStatus = isset($this->userInfo['agent_status'])? intval($this->userInfo['agent_status']) : -1;
  42. if(empty($this->userId) || $agentStatus == 2){
  43. showJson(1005,2103,['url'=> Wechat::makeRedirectUrl(url('/weixin/market/entry','','',true))]);
  44. }
  45. return true;
  46. }
  47. // 调用微信授权校验
  48. $openid = '';
  49. $debug = config('weixin.debug');
  50. if(empty($debug)){
  51. $this->userInfo = session('agentInfo');
  52. $openid = session('openid');
  53. $cacheKey = "weixin:auth_agent:".$openid;
  54. if(empty($openid) || empty($this->userInfo) || !PRedis::get($cacheKey)){
  55. Wechat::auth();
  56. if($openid){
  57. PRedis::set($cacheKey, session('agentInfo'), 7 * 24 * 3600);
  58. }
  59. }
  60. }else{
  61. $curOpenId = session('openid');
  62. $openid = $curOpenId? $curOpenId : config('weixin.openid');
  63. $this->userInfo = session('agentInfo');
  64. $cacheKey = "weixin:test:".$openid;
  65. if(empty($this->userInfo) || !PRedis::get($cacheKey)){
  66. if($openid){
  67. $this->userInfo = Member::getInfo(['openid'=> $openid, 'user_type'=> 2],$field);
  68. }
  69. $wxInfo = Fans::getInfo(['openid' => $openid]);
  70. session('openid', $openid);
  71. session('wxInfo', $wxInfo);
  72. session('agentInfo', $this->userInfo);
  73. if($openid){
  74. PRedis::set($cacheKey, session('agentInfo'), 7 * 24 * 3600);
  75. }
  76. }
  77. $this->userId = isset($this->userInfo['id'])? $this->userInfo['id'] : 0;
  78. }
  79. $this->agentType = isset($this->userInfo['agent_type'])? intval($this->userInfo['agent_type']) : 0;
  80. $this->agentStatus = isset($this->userInfo['agent_status'])? intval($this->userInfo['agent_status']) : 2;
  81. }
  82. /**
  83. * 验证用户状态
  84. */
  85. public function checkUserStatus(){
  86. // 验证用户是否冻结
  87. $agentStatus = Member::where(['id'=> $this->userId, 'agent_type'=> 1])->value('agent_status');
  88. if($agentStatus == 2) {
  89. Wechat::redirectUrl(url('/weixin/market/entry', '', '', true));
  90. exit;
  91. }else if($agentStatus != 1){
  92. Wechat::redirectUrl(url('/weixin/page/custom', '', '', true));
  93. exit;
  94. }
  95. }
  96. }
  97. ?>