MemberController.php 2.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
  1. <?php
  2. namespace App\Http\Controllers\Api;
  3. use App\Http\Controllers\ApiController;
  4. use App\Models\Member;
  5. use App\Servers\MemberOpenServer;
  6. use App\Servers\MemberServer;
  7. use App\Servers\PassServer;
  8. use App\Servers\WeixinServer;
  9. use Illuminate\Support\Facades\DB;
  10. /**
  11. * 会员信息
  12. */
  13. class MemberController extends ApiController
  14. {
  15. /**
  16. * 微信小程序注册登录
  17. */
  18. function appletLogin()
  19. {
  20. $code = request()->input('code');
  21. $openInfo = WeixinServer::creatServer()->getAppletsOpenId($code);
  22. if(!isset($openInfo['openid'])){
  23. return $this->apiResponseError(empty($openInfo['msg'])?'openid获取失败':$openInfo['msg']);
  24. }
  25. DB::beginTransaction();
  26. try {
  27. //检查openid是否存在
  28. $m_id = MemberOpenServer::creatServer()->getUserId(2,$openInfo['openid']);
  29. if($m_id){
  30. //重置token
  31. $token_str = PassServer::creatServer()->getMemberToken($m_id);
  32. Member::where('id', $m_id)->update(['token_str' => $token_str]);
  33. $member = ['m_id' => $m_id, 'token' => $token_str];
  34. }else{
  35. $member=MemberServer::creatServer()->register();
  36. if (empty($member)){
  37. DB::rollBack();
  38. return $this->apiResponseError('注册失败');
  39. }
  40. $memberOpen=MemberOpenServer::creatServer()->setUserOpenid($member['m_id'],2,$openInfo['openid']);
  41. if(empty($memberOpen)){
  42. DB::rollBack();
  43. return $this->apiResponseError('注册失败');
  44. }
  45. }
  46. //清除会员缓存
  47. MemberServer::creatServer()->delMemberCache($member['m_id']);
  48. DB::commit();
  49. return $this->apiResponseSuccess('成功',$member);
  50. }catch (\Exception $e){
  51. DB::rollBack();
  52. return $this->apiResponseError('注册失败');
  53. }
  54. }
  55. }