MemberController.php 2.1 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. if (empty($code)){
  22. return $this->apiResponseError('缺少必要信息');
  23. }
  24. $openInfo = WeixinServer::creatServer()->getAppletsOpenId($code);
  25. if(!isset($openInfo['openid'])){
  26. return $this->apiResponseError(empty($openInfo['msg'])?'openid获取失败':$openInfo['msg']);
  27. }
  28. DB::beginTransaction();
  29. try {
  30. //检查openid是否存在
  31. $m_id = MemberOpenServer::creatServer()->getUserId(4,$openInfo['openid']);
  32. if($m_id){
  33. //重置token
  34. $token_str = PassServer::creatServer()->getMemberToken($m_id);
  35. Member::where('id', $m_id)->update(['token_str' => $token_str]);
  36. $member = ['m_id' => $m_id, 'token' => $token_str];
  37. }else{
  38. $member=MemberServer::creatServer()->register();
  39. if (empty($member)){
  40. DB::rollBack();
  41. return $this->apiResponseError('注册失败');
  42. }
  43. $memberOpen=MemberOpenServer::creatServer()->setUserOpenid($member['m_id'],4,$openInfo['openid']);
  44. if(empty($memberOpen)){
  45. DB::rollBack();
  46. return $this->apiResponseError('注册失败');
  47. }
  48. }
  49. //清除会员缓存
  50. MemberServer::creatServer()->delMemberCache($member['m_id']);
  51. DB::commit();
  52. return $this->apiResponseSuccess('成功',$member);
  53. }catch (\Exception $e){
  54. DB::rollBack();
  55. return $this->apiResponseError('注册失败');
  56. }
  57. }
  58. }