RegisterService.php 13 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324
  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']);
  92. $data['reg_source_cn'] = $this->getRegSource($data['reg_source']);
  93. $data['reg_time'] = time();
  94. $data['short_name'] = \Illuminate\Support\Str::substr($data['companyname'], 0, 25);
  95. $data['last_login_time'] = time();
  96. $data['refresh_time'] = time();
  97. $data['mobile'] = $data['company_mobile'];
  98. unset($data['company_mobile']);
  99. $data['reg_ip'] = ip2long(request()->ip());
  100. $data['password'] = Hash::make($data['company_password']);
  101. unset($data['company_password']);
  102. $data['subsite_id'] = get_subsite_id();
  103. $company = $this->companyRepository->create($data);
  104. $this->memberLogRepository->createLog($company, 1000, []);
  105. return $company;
  106. }
  107. public function registerCompany1(array $data)
  108. {
  109. $data = array_only($data, ['orgname', 'contact', 'mobile', 'username',
  110. 'email', 'password', 'utype', 'reg_type', 'reg_source', 'landline_tel']);
  111. $data['reg_source_cn'] = $this->getRegSource($data['reg_source']);
  112. $data['reg_time'] = time();
  113. $data['short_name'] = \Illuminate\Support\Str::substr($data['orgname'], 0, 25);
  114. $data['companyname'] = $data['orgname'];
  115. unset($data['orgname']);
  116. $data['last_login_time'] = time();
  117. $data['refresh_time'] = time();
  118. $data['reg_ip'] = ip2long(request()->ip());
  119. $data['subsite_id'] = get_subsite_id();
  120. $data['utype'] = 1;
  121. $data['mobile_audit'] = 1;
  122. $company = $this->companyRepository->create($data);
  123. $this->memberLogRepository->createLog($company, 1000, []);
  124. return $company;
  125. }
  126. /**
  127. * 机构注册 zmw
  128. * @param array $data
  129. * @return mixed
  130. * @throws \ErrorException
  131. * @throws \Prettus\Validator\Exceptions\ValidatorException
  132. */
  133. public function registerOrg(array $data)
  134. {
  135. $data = array_only($data, ['orgname', 'contact', 'org_mobile', 'username',
  136. 'email', 'org_password', 'utype', 'reg_type', 'reg_source', 'landline_tel']);
  137. $data['reg_source_cn'] = $this->getRegSource($data['reg_source']);
  138. $data['reg_time'] = time();
  139. $data['short_name'] = \Illuminate\Support\Str::substr($data['orgname'], 0, 25);
  140. $data['last_login_time'] = time();
  141. $data['refresh_time'] = time();
  142. $data['mobile'] = $data['org_mobile'];
  143. unset($data['org_mobile']);
  144. $data['reg_ip'] = ip2long(request()->ip());
  145. $data['password'] = Hash::make($data['org_password']);
  146. unset($data['org_password']);
  147. $data['subsite_id'] = get_subsite_id();
  148. $org = $this->organizationRepository->create($data);
  149. $this->memberLogRepository->createLog($org, 1000, []);
  150. return $org;
  151. }
  152. /**
  153. * 个人注册
  154. * @param array $data
  155. * @return mixed
  156. * @throws \Prettus\Validator\Exceptions\ValidatorException
  157. * @throws \ErrorException
  158. */
  159. public function registerPerson(array $data)
  160. {
  161. $talent = $data;
  162. if ($data['reg_type'] == 1) {//手机号码注册
  163. // $id_card = $data['id_card'];
  164. $data = array_only($data, ['mobile', 'password', 'utype', 'reg_type', 'reg_source', 'member_status']);
  165. $data['reg_source_cn'] = $this->getRegSource($data['reg_source']);
  166. $data['mobile_audit'] = 1;
  167. $data['username'] = $this->getRandomName();
  168. $data['reg_time'] = time();
  169. $data['last_login_time'] = time();
  170. $data['reg_ip'] = ip2long(request()->ip());
  171. $data['password'] = Hash::make($data['password']);
  172. // $data['subsite_id']=get_subsite_id();
  173. // unset($data['id_card']);
  174. $member = $this->memberRepository->create($data);
  175. if (false != $member) {
  176. // $member_info_data['id_card'] = $id_card;
  177. $member_info_data['card_t_cn'] = 306;
  178. // $sex = get_sex($id_card);
  179. // $member_info_data['sex'] = $sex == '男' ? 1 : 2;
  180. // $member_info_data['sex_cn'] = $sex;
  181. // $member_info_data['birthday'] = get_birthday($id_card);
  182. $member_info_data['uid'] = $member->id;
  183. $member_info_data['phone'] = $data['mobile'];
  184. $this->memberInfoRepository->createInfo($member_info_data);
  185. }
  186. } elseif ($data['reg_type'] == 2) {//邮箱注册
  187. // $id_card = $data['id_card'];
  188. $data = array_only($data, ['username', 'email', 'password', 'utype', 'reg_type', 'reg_source', 'member_status']);
  189. $data['reg_source_cn'] = $this->getRegSource($data['reg_source']);
  190. $data['reg_time'] = time();
  191. $data['username'] = $this->getRandomName();
  192. $data['reg_ip'] = ip2long(request()->ip());
  193. $data['password'] = Hash::make($data['password']);
  194. // $data['subsite_id']=get_subsite_id();
  195. // unset($data['id_card']);
  196. $member = $this->memberRepository->create($data);
  197. if (false != $member) {
  198. // $member_info_data['id_card'] = $id_card;
  199. $member_info_data['card_t_cn'] = 306;
  200. // $sex = get_sex($id_card);
  201. // $member_info_data['sex'] = $sex == '男' ? 1 : 2;
  202. // $member_info_data['sex_cn'] = $sex;
  203. // $member_info_data['birthday'] = get_birthday($id_card);
  204. $member_info_data['uid'] = $member->id;
  205. $member_info_data['email'] = $data['email'];
  206. $this->memberInfoRepository->createInfo($member_info_data);
  207. }
  208. } elseif ($data['reg_type'] == 3) {//身份证注册--平板。
  209. $data = array_only($data, ['username', 'password', 'utype', 'reg_type', 'reg_source', 'member_status']);
  210. $data['reg_source_cn'] = $this->getRegSource($data['reg_source']);
  211. $data['reg_time'] = time();
  212. $data['reg_ip'] = ip2long(request()->ip());
  213. $data['password'] = Hash::make($data['password']);
  214. // $data['subsite_id']=get_subsite_id();
  215. $member = $this->memberRepository->create($data);
  216. }
  217. //人才注册
  218. if (!empty($data['member_status']) && $data['member_status'] == 3) {
  219. $talent = array_only($talent, ['realname', 'card_t_cn', 'id_card']);
  220. $this->memberInfoRepository->updateInfo($talent, $member->id);
  221. }
  222. //绑定微信和中奖
  223. $open_id = Session::get('open_id');
  224. if (!empty($open_id)) {
  225. $union_id = Session::get('union_id', '');
  226. $data = [
  227. 'uid' => $member->id,
  228. 'utype' => 2,
  229. 'type' => 3,
  230. 'openid' => $open_id,
  231. 'unionid' => $union_id,
  232. ];
  233. Thirdlogin::create($data);
  234. $prize_id = Session::get('prize_id', 0);
  235. if (!empty($prize_id)) {
  236. $win = new LotteryWin();
  237. $win->member_id = $member->id;
  238. $win->prize_id = $prize_id;
  239. $win->created_at = date('Y-m-d H:i:s');
  240. $win->save();
  241. }
  242. Session::forget('open_id');
  243. Session::forget('union_id');
  244. Session::forget('prize_id');
  245. Session::save();
  246. }
  247. $this->memberLogRepository->createLog($member, 1000, []);
  248. return $member;
  249. }
  250. public function registerPersonScrm(array $data){
  251. $data = array_only($data, ['mobile', 'avatars', 'email', 'realname', 'sex','weixin']);
  252. $data['reg_type'] = 1;
  253. $data['utype'] = 2;
  254. $data['reg_source_cn'] = 'SCRM注册';
  255. $data['mobile_audit'] = 0;
  256. $data['username'] = $this->getRandomName();
  257. $data['reg_time'] = time();
  258. $data['last_login_time'] = time();
  259. $data['reg_ip'] = ip2long(request()->ip());
  260. $data['password'] = Hash::make(time());
  261. $member = $this->memberRepository->create($data);
  262. if (false != $member) {
  263. $member_info_data['card_t_cn'] = 306;
  264. $member_info_data['uid'] = $member->id;
  265. $member_info_data['phone'] = $data['mobile'];
  266. $member_info_data['email'] = $data['email'];
  267. $member_info_data['realname'] = array_key_exists('realname',$data) ? $data['realname'] : '';
  268. if(array_key_exists('sex',$data)){
  269. $member_info_data['sex'] = $data['sex'] == '男' ? 1 : 0;
  270. $member_info_data['sex_cn'] = $data['sex'];
  271. }
  272. $member_info_data['weixin'] = array_key_exists('weixin',$data) ? $data['weixin'] : '';
  273. $this->memberInfoRepository->createInfo($member_info_data);
  274. }
  275. return $member;
  276. }
  277. /**
  278. * @param $source_id
  279. * @return mixed
  280. */
  281. private function getRegSource($source_id)
  282. {
  283. $data = [
  284. 1 => '网页端',
  285. 2 => '手机端',
  286. 3 => '微信小程序',
  287. ];
  288. return $data[$source_id];
  289. }
  290. private function getRandomName()
  291. {
  292. //str_replace(substr($data['mobile'], 3, 4), "****", $data['mobile']);
  293. return uniqid();
  294. }
  295. public function valiLand($company_mobile, $landline_tel)
  296. {
  297. if (is_null($company_mobile) && is_null($landline_tel)) {
  298. return false;
  299. }
  300. return true;
  301. }
  302. }