WechatUser.php 4.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133
  1. <?php
  2. /**
  3. *
  4. * @author: xaboy<365615158@qq.com>
  5. * @day: 2017/12/21
  6. */
  7. namespace app\ebapi\model\user;
  8. use basic\ModelBasic;
  9. use traits\ModelTrait;
  10. use app\core\util\SystemConfigService;
  11. use app\core\model\routine\RoutineQrcode;
  12. use app\ebapi\model\store\StoreCouponUser;
  13. /**
  14. * 用户附加表
  15. * Class WechatUser
  16. * @package app\ebapi\model\user
  17. */
  18. class WechatUser extends ModelBasic
  19. {
  20. use ModelTrait;
  21. public static function getOpenId($uid = ''){
  22. if($uid == '') return false;
  23. return self::where('uid',$uid)->value('routine_openid');
  24. }
  25. /**
  26. * 用uid获得openid
  27. * @param $uid
  28. * @return mixed
  29. */
  30. public static function uidToOpenid($uid)
  31. {
  32. $openid = self::where('uid',$uid)->value('routine_openid');
  33. return $openid;
  34. }
  35. /**
  36. * 用openid获得uid
  37. * @param $uid
  38. * @return mixed
  39. */
  40. public static function openidTouid($openid)
  41. {
  42. return self::where('routine_openid',$openid)->value('uid');
  43. }
  44. public static function userTakeOrderGiveCoupon($uid)
  45. {
  46. $couponId = SystemConfigService::get('store_order_give_coupon');
  47. if($couponId) StoreCouponUser::addUserCoupon($uid,$couponId);
  48. }
  49. /**
  50. * 小程序创建用户后返回uid
  51. * @param $routineInfo
  52. * @return mixed
  53. */
  54. public static function routineOauth($routine){
  55. $routineInfo['nickname'] = filterEmoji($routine['nickName']);//姓名
  56. $routineInfo['sex'] = $routine['gender'];//性别
  57. $routineInfo['language'] = $routine['language'];//语言
  58. $routineInfo['city'] = $routine['city'];//城市
  59. $routineInfo['province'] = $routine['province'];//省份
  60. $routineInfo['country'] = $routine['country'];//国家
  61. $routineInfo['headimgurl'] = $routine['avatarUrl'];//头像
  62. // $routineInfo[''] = $routine['code'];//临时登录凭证 是获取用户openid和session_key(会话密匙)
  63. $routineInfo['routine_openid'] = $routine['openId'];//openid
  64. $routineInfo['session_key'] = $routine['session_key'];//会话密匙
  65. $routineInfo['unionid'] = $routine['unionId'];//用户在开放平台的唯一标识符
  66. $routineInfo['user_type'] = 'routine';//用户类型
  67. $page = '';//跳转小程序的页面
  68. $spid = 0;//绑定关系uid
  69. $isCOde=false;
  70. //获取是否有扫码进小程序
  71. if($routine['code']){
  72. $info = RoutineQrcode::getRoutineQrcodeFindType($routine['code']);
  73. if($info){
  74. $spid = $info['third_id'];
  75. $page = $info['page'];
  76. $isCOde=true;
  77. }else{
  78. $spid = $routine['spid'];
  79. }
  80. }else if($routine['spid']) $spid = $routine['spid'];
  81. // 判断unionid 存在根据unionid判断
  82. if($routineInfo['unionid'] != '' && self::be(['unionid'=>$routineInfo['unionid']])){
  83. self::edit($routineInfo,$routineInfo['unionid'],'unionid');
  84. $uid = self::where('unionid',$routineInfo['unionid'])->value('uid');
  85. $routineInfo['code']=$spid;
  86. $routineInfo['isPromoter']=$isCOde;
  87. User::updateWechatUser($routineInfo,$uid);
  88. }else if(self::be(['routine_openid'=>$routineInfo['routine_openid']])){ //根据小程序openid判断
  89. self::edit($routineInfo,$routineInfo['routine_openid'],'routine_openid');
  90. $uid = self::where('routine_openid',$routineInfo['routine_openid'])->value('uid');
  91. $routineInfo['code']=$spid;
  92. $routineInfo['isPromoter']=$isCOde;
  93. User::updateWechatUser($routineInfo,$uid);
  94. }else{
  95. $routineInfo['add_time'] = time();//用户添加时间
  96. $routineInfo = self::set($routineInfo);
  97. // if(User::isUserSpread($spid)) {
  98. // $res = User::setRoutineUser($routineInfo,$spid); //用户上级
  99. // }else
  100. $res = User::setRoutineUser($routineInfo,$spid);
  101. $uid = $res->uid;
  102. }
  103. $data['page'] = $page;
  104. $data['uid'] = $uid;
  105. return $data;
  106. }
  107. /**
  108. * 判断是否是小程序用户
  109. * @param int $uid
  110. * @return bool|int|string
  111. */
  112. public static function isRoutineUser($uid = 0){
  113. if(!$uid) return false;
  114. return self::where('uid',$uid)->where('user_type','routine')->count();
  115. }
  116. /**
  117. * @param int $uid
  118. * @return int
  119. */
  120. public static function isUserStatus($uid = 0){
  121. if(!$uid) return 0;
  122. $user = User::getUserInfo($uid);
  123. return $user['status'];
  124. }
  125. }