MemberTjpCpsService.php 5.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155
  1. <?php
  2. /**
  3. * Created by PhpStorm.
  4. * User: dingran
  5. * Date: 2019/7/9
  6. * Time: 上午11:03
  7. */
  8. namespace app\frontend\modules\member\services;
  9. use app\backend\modules\charts\modules\phone\models\PhoneAttribution;
  10. use app\backend\modules\charts\modules\phone\services\PhoneAttributionService;
  11. use app\common\exceptions\AppException;
  12. use app\common\exceptions\ShopException;
  13. use app\common\facades\Setting;
  14. use app\common\helpers\Client;
  15. use app\common\helpers\Url;
  16. use app\common\models\AccountWechats;
  17. use app\common\models\MemberGroup;
  18. use app\common\models\Store;
  19. use app\common\models\SynchronizedBinder;
  20. use app\common\services\api\WechatApi;
  21. use app\frontend\models\Member;
  22. use app\frontend\models\MemberShopInfo;
  23. use app\frontend\modules\member\models\McMappingFansModel;
  24. use app\frontend\modules\member\models\MemberModel;
  25. use app\frontend\modules\member\models\MemberUniqueModel;
  26. use app\frontend\modules\member\models\MemberWechatModel;
  27. use app\frontend\modules\member\models\SubMemberModel;
  28. use Illuminate\Support\Str;
  29. use app\common\services\Session;
  30. use Yunshop\AggregationCps\services\FreeLoginSign;
  31. use Yunshop\AggregationCps\services\SettingManageService;
  32. class MemberTjpCpsService extends MemberService
  33. {
  34. private $appId;
  35. private $appSecret;
  36. private $uniqueCode;
  37. private $expires = 120;
  38. private $error = false;
  39. /**
  40. * @throws ShopException
  41. */
  42. public function login()
  43. {
  44. $this->verify(request()->input());
  45. }
  46. /**
  47. * 验证登录状态
  48. * @return bool
  49. * @throws ShopException
  50. */
  51. public function checkLogged()
  52. {
  53. return $this->verify(request()->input());
  54. }
  55. /**
  56. * @param $data
  57. * @return bool
  58. * @throws ShopException
  59. */
  60. public function verify($data)
  61. {
  62. $this->getAppData();
  63. if ($this->error) {
  64. return false;
  65. }
  66. $hfSign = new FreeLoginSign();
  67. $hfSign->setKey($this->appSecret);
  68. $hfSign->setUniqueCode($this->uniqueCode ? : '');
  69. $yzMember = MemberShopInfo::getMemberShopInfo($data['mob_user']);
  70. if (!$yzMember) {
  71. $bind_member = SynchronizedBinder::uniacid()->where('old_uid', $data['mob_user'])->first();
  72. if (!$bind_member) {
  73. return false;
  74. }
  75. $yzMember = MemberShopInfo::getMemberShopInfo($bind_member->new_uid);
  76. if (!$yzMember) {
  77. return false;
  78. }
  79. }
  80. if (!$data['app_token'] || $data['app_token'] != $yzMember->access_token_2) {
  81. return false;
  82. }
  83. $uid = $yzMember->member_id;
  84. Session::set('member_id', $uid);
  85. return true;
  86. }
  87. private function getAppData()
  88. {
  89. $appData = \Setting::get('plugin.aggregation-cps');
  90. if (is_null($appData) || !app('plugins')->isEnabled('aggregation-cps')) {
  91. $this->error = true;
  92. throw new ShopException('应用未启用');
  93. }
  94. if (!empty($appData['plat_unique_code']) && $appData['unique_mode']) {
  95. $appData['app_key'] = SettingManageService::getDefaultKey();
  96. $appData['app_secret'] = SettingManageService::getDefaultSecret();
  97. $this->uniqueCode = trim($appData['plat_unique_code']) ?: '';
  98. } elseif (empty($appData['app_key']) || empty($appData['app_secret'])) {
  99. $this->error = true;
  100. throw new ShopException('应用未启用');
  101. }
  102. if ($appData['app_key'] != request()->input('appid')) {
  103. $this->error = true;
  104. throw new ShopException('访问身份异常');
  105. }
  106. $this->appId = $appData['app_key'];
  107. $this->appSecret = $appData['app_secret'];
  108. }
  109. public function addMcMember($data)
  110. {
  111. $member_model = new MemberModel();
  112. $member_model->uniacid = $data['i'];
  113. $member_model->email = '';
  114. $member_model->mobile = $data['mob_user'];
  115. $member_model->groupid = 0;
  116. $member_model->createtime = time();
  117. $member_model->nickname = stripslashes($data['nickname']);
  118. $member_model->avatar = isset($data['headimgurl']) ? $data['headimgurl'] : Url::shopUrl('static/images/photo-mr.jpg');;
  119. $member_model->gender = isset($data['sex']) ? $data['sex'] : -1;
  120. $member_model->nationality = isset($data['country']) ? $data['country'] : '';
  121. $member_model->resideprovince = isset($data['province']) ? $data['province'] : '' . '省';
  122. $member_model->residecity = isset($data['city']) ? $data['city'] : '' . '市';
  123. $member_model->credit1 = isset($data['credit1']) ? $data['credit1'] : 0;
  124. $member_model->credit2 = isset($data['credit2']) ? $data['credit2'] : 0;
  125. $member_model->salt = Str::random(8);
  126. $member_model->password = md5(mt_rand());
  127. if ($member_model->save()) {
  128. return $member_model->uid;
  129. } else {
  130. return 0;
  131. }
  132. }
  133. public function addYzMember($member_id, $uniacid)
  134. {
  135. SubMemberModel::insertData(array(
  136. 'member_id' => $member_id,
  137. 'uniacid' => $uniacid,
  138. 'group_id' => 0,
  139. 'level_id' => 0,
  140. 'pay_password' => '',
  141. 'salt' => '',
  142. 'yz_openid' => '',
  143. ));
  144. }
  145. }