RegisterService.php 13 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347
  1. <?php
  2. namespace App\Services\Auth;
  3. use App\Exceptions\ResponseException;
  4. use App\Models\LotteryWin;
  5. use App\Models\Thirdlogin;
  6. use App\Repositories\CompanyRepository;
  7. use App\Repositories\MemberInfoRepository;
  8. use App\Repositories\MemberLogRepository;
  9. use App\Repositories\MemberRepository;
  10. use App\Repositories\OrganizationRepository;
  11. use App\Repositories\TplRepository;
  12. use Illuminate\Support\Facades\Auth;
  13. use Illuminate\Support\Facades\Hash;
  14. use Illuminate\Support\Facades\Session;
  15. use Illuminate\Support\Str;
  16. class RegisterService
  17. {
  18. /**
  19. * @var MemberRepository
  20. */
  21. protected $memberRepository;
  22. /**
  23. * @var CompanyRepository
  24. */
  25. protected $companyRepository;
  26. protected $organizationRepository;
  27. /**
  28. * @var MemberLogRepository
  29. */
  30. private $memberLogRepository;
  31. private $memberInfoRepository;
  32. /**
  33. * AuthService constructor.
  34. * @param MemberRepository $memberRepository
  35. * @param CompanyRepository $companyRepository
  36. * @param MemberLogRepository $memberLogRepository
  37. */
  38. public function __construct(MemberRepository $memberRepository, CompanyRepository $companyRepository, OrganizationRepository $organizationRepository, MemberLogRepository $memberLogRepository, MemberInfoRepository $memberInfoRepository)
  39. {
  40. $this->memberRepository = $memberRepository;
  41. $this->companyRepository = $companyRepository;
  42. $this->memberLogRepository = $memberLogRepository;
  43. $this->memberInfoRepository = $memberInfoRepository;
  44. $this->organizationRepository = $organizationRepository;
  45. }
  46. /**
  47. * 检查字段惟一
  48. * @param $utype 1企业,2个人
  49. * @param $key
  50. * @param $value
  51. * @return bool
  52. */
  53. public function checkUnique($utype, $key, $value)
  54. {
  55. if (empty($value)) {
  56. return true;
  57. }
  58. if ($utype == 1) {
  59. if (config('aix.companyset.comset.other_set.company_repeat', 0) == 1 && $key == 'companyname') {
  60. return true;
  61. }
  62. return $this->companyRepository->checkUniaue($key, $value);
  63. }
  64. if ($utype == 2 && $key == 'id_card') {
  65. if (isset(request()->vail) && !empty(request()->vail)) {
  66. if (isCreditNo($value)) {
  67. return true;
  68. }
  69. } else {
  70. if ($this->memberInfoRepository->checkUniaue($key, $value)) {
  71. return true;
  72. }
  73. }
  74. } else {
  75. if ($this->memberRepository->checkUniaue($key, $value)) {
  76. return true;
  77. }
  78. }
  79. return false;
  80. }
  81. /**
  82. * 企业注册
  83. * @param array $data
  84. * @return mixed
  85. * @throws \ErrorException
  86. * @throws \Prettus\Validator\Exceptions\ValidatorException
  87. */
  88. public function registerCompany(array $data)
  89. {
  90. $data = array_only($data, ['companyname', 'contact', 'company_mobile', 'username',
  91. 'email', 'company_password', 'utype', 'reg_type', 'reg_source', 'landline_tel','company_type']);
  92. switch (intval($data['company_type'])){
  93. case 1:
  94. $data['is_renshe'] = 1;
  95. break;
  96. case 2:
  97. $data['is_ic'] = 1;
  98. break;
  99. case 3:
  100. $data['is_health'] = 1;
  101. break;
  102. case 4:
  103. $data['is_edu'] = 1;
  104. break;
  105. default:
  106. $data['is_renshe'] = 1;
  107. }
  108. $data['reg_source_cn'] = $this->getRegSource($data['reg_source']);
  109. $data['reg_time'] = time();
  110. $data['short_name'] = \Illuminate\Support\Str::substr($data['companyname'], 0, 25);
  111. $data['last_login_time'] = time();
  112. $data['refresh_time'] = time();
  113. $data['mobile'] = $data['company_mobile'];
  114. unset($data['company_mobile']);
  115. $data['reg_ip'] = ip2long(request()->ip());
  116. $data['password'] = Hash::make($data['company_password']);
  117. unset($data['company_password']);
  118. $data['subsite_id'] = get_subsite_id();
  119. $company = $this->companyRepository->create($data);
  120. $this->memberLogRepository->createLog($company, 1000, []);
  121. return $company;
  122. }
  123. public function registerCompany1(array $data)
  124. {
  125. $data = array_only($data, ['orgname', 'contact', 'mobile', 'username',
  126. 'email', 'password', 'utype', 'reg_type', 'reg_source', 'landline_tel']);
  127. $data['reg_source_cn'] = $this->getRegSource($data['reg_source']);
  128. $data['reg_time'] = time();
  129. $data['short_name'] = \Illuminate\Support\Str::substr($data['orgname'], 0, 25);
  130. $data['companyname'] = $data['orgname'];
  131. unset($data['orgname']);
  132. $data['last_login_time'] = time();
  133. $data['refresh_time'] = time();
  134. $data['reg_ip'] = ip2long(request()->ip());
  135. $data['subsite_id'] = get_subsite_id();
  136. $data['utype'] = 1;
  137. $data['mobile_audit'] = 1;
  138. $company = $this->companyRepository->create($data);
  139. $this->memberLogRepository->createLog($company, 1000, []);
  140. return $company;
  141. }
  142. /**
  143. * 机构注册 zmw
  144. * @param array $data
  145. * @return mixed
  146. * @throws \ErrorException
  147. * @throws \Prettus\Validator\Exceptions\ValidatorException
  148. */
  149. public function registerOrg(array $data)
  150. {
  151. $data = array_only($data, ['orgname', 'contact', 'org_mobile', 'username',
  152. 'email', 'org_password', 'utype', 'reg_type', 'reg_source', 'landline_tel']);
  153. $data['reg_source_cn'] = $this->getRegSource($data['reg_source']);
  154. $data['reg_time'] = time();
  155. $data['short_name'] = \Illuminate\Support\Str::substr($data['orgname'], 0, 25);
  156. $data['last_login_time'] = time();
  157. $data['refresh_time'] = time();
  158. $data['mobile'] = $data['org_mobile'];
  159. unset($data['org_mobile']);
  160. $data['reg_ip'] = ip2long(request()->ip());
  161. $data['password'] = Hash::make($data['org_password']);
  162. unset($data['org_password']);
  163. $data['subsite_id'] = get_subsite_id();
  164. $org = $this->organizationRepository->create($data);
  165. $this->memberLogRepository->createLog($org, 1000, []);
  166. return $org;
  167. }
  168. /**
  169. * 个人注册
  170. * @param array $data
  171. * @return mixed
  172. * @throws \Prettus\Validator\Exceptions\ValidatorException
  173. * @throws \ErrorException
  174. */
  175. public function registerPerson(array $data)
  176. {
  177. $talent = $data;
  178. if ($data['reg_type'] == 1) {//手机号码注册
  179. // $id_card = $data['id_card'];
  180. $data = array_only($data, ['mobile', 'password', 'utype', 'reg_type', 'reg_source', 'member_status']);
  181. $data['reg_source_cn'] = $this->getRegSource($data['reg_source']);
  182. $data['mobile_audit'] = 1;
  183. $data['username'] = $this->getRandomName();
  184. $data['reg_time'] = time();
  185. $data['last_login_time'] = time();
  186. $data['reg_ip'] = ip2long(request()->ip());
  187. $data['password'] = Hash::make($data['password']);
  188. // $data['subsite_id']=get_subsite_id();
  189. // unset($data['id_card']);
  190. $member = $this->memberRepository->create($data);
  191. if (false != $member) {
  192. // $member_info_data['id_card'] = $id_card;
  193. $member_info_data['card_t_cn'] = 306;
  194. // $sex = get_sex($id_card);
  195. // $member_info_data['sex'] = $sex == '男' ? 1 : 2;
  196. // $member_info_data['sex_cn'] = $sex;
  197. // $member_info_data['birthday'] = get_birthday($id_card);
  198. $member_info_data['uid'] = $member->id;
  199. $member_info_data['phone'] = $data['mobile'];
  200. $this->memberInfoRepository->createInfo($member_info_data);
  201. }
  202. } elseif ($data['reg_type'] == 2) {//邮箱注册
  203. // $id_card = $data['id_card'];
  204. $data = array_only($data, ['username', 'email', 'password', 'utype', 'reg_type', 'reg_source', 'member_status']);
  205. $data['reg_source_cn'] = $this->getRegSource($data['reg_source']);
  206. $data['reg_time'] = time();
  207. $data['username'] = $this->getRandomName();
  208. $data['reg_ip'] = ip2long(request()->ip());
  209. $data['password'] = Hash::make($data['password']);
  210. // $data['subsite_id']=get_subsite_id();
  211. // unset($data['id_card']);
  212. $member = $this->memberRepository->create($data);
  213. if (false != $member) {
  214. // $member_info_data['id_card'] = $id_card;
  215. $member_info_data['card_t_cn'] = 306;
  216. // $sex = get_sex($id_card);
  217. // $member_info_data['sex'] = $sex == '男' ? 1 : 2;
  218. // $member_info_data['sex_cn'] = $sex;
  219. // $member_info_data['birthday'] = get_birthday($id_card);
  220. $member_info_data['uid'] = $member->id;
  221. $member_info_data['email'] = $data['email'];
  222. $this->memberInfoRepository->createInfo($member_info_data);
  223. }
  224. } elseif ($data['reg_type'] == 3) {//身份证注册--平板。
  225. $data = array_only($data, ['username', 'password', 'utype', 'reg_type', 'reg_source', 'member_status']);
  226. $data['reg_source_cn'] = $this->getRegSource($data['reg_source']);
  227. $data['reg_time'] = time();
  228. $data['reg_ip'] = ip2long(request()->ip());
  229. $data['password'] = Hash::make($data['password']);
  230. // $data['subsite_id']=get_subsite_id();
  231. $member = $this->memberRepository->create($data);
  232. }
  233. //人才注册
  234. if (!empty($data['member_status']) && $data['member_status'] == 3) {
  235. $talent = array_only($talent, ['realname', 'card_t_cn', 'id_card']);
  236. $this->memberInfoRepository->updateInfo($talent, $member->id);
  237. }
  238. //绑定微信和中奖
  239. $open_id = Session::get('open_id');
  240. if (!empty($open_id)) {
  241. $union_id = Session::get('union_id', '');
  242. $data = [
  243. 'uid' => $member->id,
  244. 'utype' => 2,
  245. 'type' => 3,
  246. 'openid' => $open_id,
  247. 'unionid' => $union_id,
  248. ];
  249. Thirdlogin::create($data);
  250. $prize_id = Session::get('prize_id', 0);
  251. if (!empty($prize_id)) {
  252. $win = new LotteryWin();
  253. $win->member_id = $member->id;
  254. $win->prize_id = $prize_id;
  255. $win->created_at = date('Y-m-d H:i:s');
  256. $win->save();
  257. }
  258. Session::forget('open_id');
  259. Session::forget('union_id');
  260. Session::forget('prize_id');
  261. Session::save();
  262. }
  263. $this->memberLogRepository->createLog($member, 1000, []);
  264. return $member;
  265. }
  266. public function registerPersonScrm(array $data){
  267. $data = array_only($data, ['mobile', 'avatars', 'email', 'realname', 'sex','weixin','cid']);
  268. $member_data = [
  269. 'mobile' => $data['mobile'],
  270. 'avatars' => $data['avatars'],
  271. 'email' => $data['email'],
  272. 'reg_type' => 1,
  273. 'utype' => 2,
  274. 'reg_source_cn' => 'SCRM注册',
  275. 'mobile_audit' => 0,
  276. 'username' => $this->getRandomName(),
  277. 'reg_time' => time(),
  278. 'last_login_time' => time(),
  279. 'reg_ip' => ip2long(request()->ip()),
  280. 'password' => Hash::make(time()),
  281. 'scrm_id' => $data['cid']
  282. ];
  283. $member = $this->memberRepository->create($member_data);
  284. if (false != $member) {
  285. $member_info_data['card_t_cn'] = 306;
  286. $member_info_data['uid'] = $member->id;
  287. $member_info_data['phone'] = $data['mobile'];
  288. $member_info_data['email'] = $data['email'];
  289. $member_info_data['realname'] = array_key_exists('realname',$data) ? $data['realname'] : '';
  290. if(array_key_exists('sex',$data)){
  291. $member_info_data['sex'] = $data['sex'] == '男' ? 1 : 0;
  292. $member_info_data['sex_cn'] = $data['sex'];
  293. }
  294. $member_info_data['weixin'] = array_key_exists('weixin',$data) ? $data['weixin'] : '';
  295. $this->memberInfoRepository->createInfo($member_info_data);
  296. }
  297. return $member;
  298. }
  299. /**
  300. * @param $source_id
  301. * @return mixed
  302. */
  303. private function getRegSource($source_id)
  304. {
  305. $data = [
  306. 1 => '网页端',
  307. 2 => '手机端',
  308. 3 => '微信小程序',
  309. ];
  310. return $data[$source_id];
  311. }
  312. private function getRandomName()
  313. {
  314. //str_replace(substr($data['mobile'], 3, 4), "****", $data['mobile']);
  315. return uniqid();
  316. }
  317. public function valiLand($company_mobile, $landline_tel)
  318. {
  319. if (is_null($company_mobile) && is_null($landline_tel)) {
  320. return false;
  321. }
  322. return true;
  323. }
  324. }