TestController.php 21 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590
  1. <?php
  2. namespace App\Http\Controllers\Api\Wechat;
  3. use App\Http\Controllers\Api\ApiBaseController;
  4. use App\Services\Common\WechatService;
  5. use App\Wechat\Official\EventHandle;
  6. use EasyWeChat\Kernel\Messages\Message;
  7. use Illuminate\Support\Facades\Cache;
  8. use Illuminate\Support\Facades\DB;
  9. use Illuminate\Support\Facades\Hash;
  10. class TestController extends ApiBaseController
  11. {
  12. /**
  13. * @var WechatService
  14. */
  15. private $wechatService;
  16. /**
  17. * OfficialController constructor.
  18. * @param WechatService $wechatService
  19. */
  20. public function __construct(WechatService $wechatService)
  21. {
  22. $this->wechatService = $wechatService;
  23. }
  24. public function index()
  25. {
  26. $official = $this->wechatService->getOfficialAccount();
  27. $official->server->push(EventHandle::class, Message::EVENT);
  28. return $official->server->serve();
  29. }
  30. public function pushMenu()
  31. {
  32. $official = $this->wechatService->getOfficialAccount();
  33. $menu = [
  34. [
  35. "name" => "个人服务",
  36. "sub_button" => [
  37. [
  38. "type" => "click",
  39. "name" => "刷新简历",
  40. "key" => "PersonResumeRefresh",
  41. ],
  42. [
  43. "type" => "view",
  44. "name" => "面试邀请",
  45. "url" => route('mobile.auth.thirdlogin.official')
  46. . '?redirect_url=' . urlencode(route('mobile.person.jobs_interview')),
  47. ],
  48. [
  49. "type" => "view",
  50. "name" => "投递反馈",
  51. "url" => route('mobile.auth.thirdlogin.official')
  52. . '?redirect_url=' . urlencode(route('mobile.person.apply_jobs')),
  53. ],
  54. [
  55. "type" => "view",
  56. "name" => "职位搜索",
  57. "url" => route('mobile.auth.thirdlogin.official')
  58. . '?redirect_url=' . urlencode(route('mobile.jobs')),
  59. ],
  60. [
  61. "type" => "view",
  62. "name" => "个人中心",
  63. "url" => route('mobile.auth.thirdlogin.official')
  64. . '?redirect_url=' . urlencode(route('mobile.person.index')),
  65. ],
  66. ],
  67. ],
  68. [
  69. "name" => "企业服务",
  70. "sub_button" => [
  71. [
  72. "type" => "click",
  73. "name" => "刷新职位",
  74. "key" => "CompanyJobRefresh",
  75. ],
  76. [
  77. "type" => "view",
  78. "name" => "职位管理",
  79. "url" => route('mobile.auth.thirdlogin.official')
  80. . '?redirect_url=' . urlencode(route('mobile.firm.jobs.list')),
  81. ],
  82. [
  83. "type" => "view",
  84. "name" => "应聘简历",
  85. "url" => route('mobile.auth.thirdlogin.official')
  86. . '?redirect_url=' . urlencode(route('mobile.firm.resume.apply')),
  87. ],
  88. [
  89. "type" => "view",
  90. "name" => "简历搜索",
  91. "url" => route('mobile.auth.thirdlogin.official')
  92. . '?redirect_url=' . urlencode(route('mobile.resumes')),
  93. ],
  94. ],
  95. ],
  96. [
  97. "name" => "更多精彩",
  98. "sub_button" => [
  99. [
  100. "type" => "click",
  101. "name" => "每日签到",
  102. "key" => "EverydaySignIn",
  103. ],
  104. [
  105. "type" => "view",
  106. "name" => "账号绑定",
  107. "url" => route('mobile.auth.thirdlogin.official'),
  108. ],
  109. [
  110. "type" => "view",
  111. "name" => "最近招聘会",
  112. "url" => route('mobile.auth.thirdlogin.official')
  113. . '?redirect_url=' . urlencode(route('mobile.jobfair.index')),
  114. ],
  115. [
  116. "type" => "view",
  117. "name" => "进入官网",
  118. "url" => route('mobile.home'),
  119. ],
  120. ],
  121. ],
  122. ];
  123. $official->menu->create($menu);
  124. }
  125. public function importCompany()
  126. {
  127. $reader = \PhpOffice\PhpSpreadsheet\IOFactory::createReader("Xls"); // 指定为xlsx格式
  128. $spreadsheet = $reader->load(public_path() . "/company.xls");
  129. $sheet = $spreadsheet->getActiveSheet();
  130. $res = [];
  131. foreach ($sheet->getRowIterator(2) as $row) {
  132. $tmp = [];
  133. foreach ($row->getCellIterator() as $cell) {
  134. $tmp[] = trim($cell->getFormattedValue());
  135. }
  136. $res[$row->getRowIndex()] = $tmp;
  137. }
  138. foreach ($res as $v) {
  139. $this->_company($v);
  140. }
  141. return '成功';
  142. }
  143. private $_citys = [
  144. 624 => '青阳街道',
  145. 625 => '梅岭街道',
  146. 626 => '西园街道',
  147. 627 => '罗山街道',
  148. 628 => '新塘街道',
  149. 629 => '灵源街道',
  150. 630 => '安海街道',
  151. 631 => '磁灶镇',
  152. 632 => '陈埭镇',
  153. 633 => '池店镇',
  154. 634 => '东石镇',
  155. 635 => '内坑镇',
  156. 636 => '深沪镇',
  157. 637 => '金井镇',
  158. 638 => '龙湖镇',
  159. 639 => '永和镇',
  160. 640 => '英林镇',
  161. 641 => '紫帽镇',
  162. 642 => '西滨镇',
  163. 643 => '经济开发区',
  164. ];
  165. private function _company($v)
  166. {
  167. //公司信息
  168. $date = date('Y-m-d H:i:s');
  169. $info = [
  170. 'username' => $v[0],
  171. 'mobile' => $v[1],
  172. 'mobile_audit' => 1,
  173. 'email' => $v[2],
  174. 'reg_time' => time(),
  175. 'reg_ip' => ip2long('127.0.0.1'),
  176. 'reg_type' => 1,
  177. 'reg_source' => 1,
  178. 'reg_source_cn' => '网页端',
  179. 'companyname' => $v[3],
  180. 'password' => Hash::make($v[4]),
  181. 'nature' => 54,
  182. 'trade' => 45,
  183. 'district' => '623.' . $v[5],
  184. 'district_cn' => '晋江市/' . $this->_citys[$v[5]],
  185. 'scale' => $v[6],
  186. 'registered' => $v[7] ?: 0,
  187. 'address' => $v[8],
  188. 'contact' => $v[3],
  189. 'landline_tel' => $v[10],
  190. 'organization_code' => $v[11],
  191. 'contents' => $v[3],
  192. 'short_name' => $v[3],
  193. 'setmeal_id' => 1,
  194. 'setmeal_name' => '免费会员',
  195. 'audit' => 1,
  196. 'map_open' => 0,
  197. 'robot' => 1,
  198. 'short_desc' => $v[3],
  199. 'created_at' => $date,
  200. 'updated_at' => $date,
  201. 'certificate_img' => 'company/certificate/JE0IhhkErSZ1Zofzmynl9FPitkOHmGzHuaTORFAr.png',
  202. 'certificate_img_audit' => 1,
  203. ];
  204. $company_id = DB::table('companys')->insertGetId($info);
  205. //操作日志
  206. $log = [
  207. 'log_uid' => $company_id,
  208. 'log_username' => $info['companyname'],
  209. 'log_value' => '注册成功',
  210. 'log_ip' => ip2long('127.0.0.1'),
  211. 'log_address' => '未知',
  212. 'log_utype' => 1,
  213. 'log_source' => '网页版',
  214. 'type' => 1000,
  215. 'status' => 1,
  216. 'created_at' => $date,
  217. 'updated_at' => $date,
  218. ];
  219. DB::table('members_logs')->insert($log);
  220. //任务表
  221. $task = [];
  222. $task_item = [
  223. 'uid' => $company_id,
  224. 'task_id' => 17,
  225. 'utype' => 1,
  226. 'points' => 50,
  227. 'once' => 1,
  228. 'created_at' => $date,
  229. 'updated_at' => $date,
  230. ];
  231. $task[] = $task_item;
  232. $task_item['task_id'] = 29;
  233. $task_item['points'] = 20;
  234. $task[] = $task_item;
  235. $task_item['task_id'] = 27;
  236. $task_item['points'] = 50;
  237. $task[] = $task_item;
  238. $task_item['task_id'] = 30;
  239. $task[] = $task_item;
  240. DB::table('task_logs')->insert($task);
  241. //注册赠送套餐
  242. $members_setmeals = [
  243. 'uid' => $company_id,
  244. 'utype' => 1,
  245. 'setmeal_id' => 1,
  246. 'setmeal_name' => '免费会员',
  247. 'jobs_meanwhile' => 999,
  248. 'refresh_jobs_free' => 9999,
  249. 'download_resume' => 9999,
  250. 'starttime' => time(),
  251. 'setmeal_img' => 'admin/images/QQ截图20200107164132.png',
  252. 'show_apply_contact' => 0,
  253. 'created_at' => $date,
  254. 'updated_at' => $date,
  255. ];
  256. DB::table('members_setmeals')->insert($members_setmeals);
  257. $members_setmeals_record = [
  258. 'uid' => $company_id,
  259. 'setmeal_id' => 1,
  260. 'setmeal_name' => '免费会员',
  261. 'jobs_meanwhile' => 999,
  262. 'refresh_jobs_free' => 9999,
  263. 'download_resume' => 9999,
  264. 'starttime' => time(),
  265. 'show_apply_contact' => 0,
  266. 'created_at' => $date,
  267. 'updated_at' => $date,
  268. ];
  269. DB::table('members_setmeals_record')->insert($members_setmeals_record);
  270. $members_points = [
  271. 'uid' => $company_id,
  272. 'utype' => 1,
  273. 'points' => 170,
  274. 'created_at' => $date,
  275. 'updated_at' => $date,
  276. ];
  277. DB::table('members_points')->insert($members_points);
  278. $members_handsels = [];
  279. $members_handsels_item = [
  280. 'uid' => $company_id,
  281. 'utype' => 1,
  282. 'htype' => 'reg',
  283. 'htype_cn' => '注册账号',
  284. 'operate' => 1,
  285. 'points' => 50,
  286. 'created_at' => $date,
  287. 'updated_at' => $date,
  288. ];
  289. $members_handsels[] = $members_handsels_item;
  290. $members_handsels_item['htype'] = 'set_map';
  291. $members_handsels_item['htype_cn'] = '开通电子地图';
  292. $members_handsels_item['points'] = 20;
  293. $members_handsels[] = $members_handsels_item;
  294. $members_handsels_item['htype'] = 'done_profile';
  295. $members_handsels_item['htype_cn'] = '完善企业资料';
  296. $members_handsels_item['points'] = 50;
  297. $members_handsels[] = $members_handsels_item;
  298. $members_handsels_item['htype'] = 'license_audit';
  299. $members_handsels_item['htype_cn'] = '上传营业执照并通过认证';
  300. $members_handsels_item['points'] = 50;
  301. $members_handsels[] = $members_handsels_item;
  302. DB::table('members_handsels')->insert($members_handsels);
  303. //增加审核记录
  304. $audit_reasons = [
  305. 'type' => 8,
  306. 'status' => 1,
  307. 'type_id' => $company_id,
  308. 'audit_man' => 'admin',
  309. 'created_at' => $date,
  310. 'updated_at' => $date,
  311. ];
  312. DB::table('audit_reasons')->insert($audit_reasons);
  313. //增加站内信
  314. $pms = [
  315. 'utype' => 1,
  316. 'msgtype' => 1,
  317. 'msgfromuid' => 1,
  318. 'msgfrom' => 'admin',
  319. 'msgtoname' => $info['companyname'],
  320. 'msgtouid' => $company_id,
  321. 'message' => '企业通过审核【备注】',
  322. 'started_at' => 0,
  323. 'ended_at' => 0,
  324. 'new' => 1,
  325. 'created_at' => $date,
  326. 'updated_at' => $date,
  327. ];
  328. DB::table('pms')->insert($pms);
  329. }
  330. public function importJob()
  331. {
  332. $reader = \PhpOffice\PhpSpreadsheet\IOFactory::createReader("Xls"); // 指定为xlsx格式
  333. $spreadsheet = $reader->load(public_path() . "/job.xls");
  334. $sheet = $spreadsheet->getActiveSheet();
  335. $res = [];
  336. foreach ($sheet->getRowIterator(2) as $row) {
  337. $tmp = [];
  338. foreach ($row->getCellIterator() as $cell) {
  339. $tmp[] = trim($cell->getFormattedValue());
  340. }
  341. $item = array_filter($tmp);
  342. if (!empty($item)) {
  343. $res[$row->getRowIndex()] = $tmp;
  344. }
  345. }
  346. foreach ($res as $v) {
  347. $this->_job($v);
  348. }
  349. return '成功';
  350. }
  351. private function _job($v)
  352. {
  353. //职位信息
  354. $date = date('Y-m-d H:i:s');
  355. $company = DB::table('companys')->where('id', $v[0])->first();
  356. $company = json_decode(json_encode($company), true);
  357. $info = [
  358. 'valid' => 1,
  359. 'jobs_name' => $v[1],
  360. 'company_id' => $company['id'],
  361. 'company_name' => $company['companyname'],
  362. 'company_addtime' => $company['reg_time'],
  363. 'company_audit' => $company['audit'],
  364. 'nature' => $v[2],
  365. 'sex' => 0,
  366. 'age' => '-',
  367. 'amount' => $v[10],
  368. 'topclass' => $v[3],
  369. 'category' => $v[4],
  370. 'subclass' => $v[5],
  371. 'trade' => $company['trade'],
  372. 'scale' => $company['scale'],
  373. 'district' => '623.' . $v[6],
  374. 'wage' => $v[7],
  375. 'wage_max' => $v[9] ?: 0,
  376. 'wage_min' => $v[8] ?: 0,
  377. 'jobs_content' => $v[11],
  378. 'deadline' => 1644311483,
  379. 'refresh_time' => time(),
  380. 'setmeal_id' => 1,
  381. 'setmeal_name' => '免费会员',
  382. 'audit' => 1,
  383. 'robot' => 1,
  384. 'created_at' => $date,
  385. 'updated_at' => $date,
  386. ];
  387. $info = array_filter($info);
  388. $job_id = DB::table('jobs')->insertGetId($info);
  389. //记录套餐使用
  390. $members_setmeal_logs = [
  391. 'log_uid' => $company['id'],
  392. 'log_utype' => 1,
  393. 'log_username' => $company['companyname'],
  394. 'log_value' => '发布了职位' . $info['jobs_name'],
  395. 'log_ip' => ip2long('127.0.0.1'),
  396. 'log_address' => '未知',
  397. 'log_leave' => 998,
  398. 'log_source' => '网页版',
  399. 'created_at' => $date,
  400. 'updated_at' => $date,
  401. ];
  402. $members_setmeal_logs = array_filter($members_setmeal_logs);
  403. DB::table('members_setmeal_logs')->insert($members_setmeal_logs);
  404. //分站
  405. $subsite_jobs = [
  406. 'subsite_id' => 0,
  407. 'jobs_id' => $job_id,
  408. 'created_at' => $date,
  409. 'updated_at' => $date,
  410. ];
  411. $subsite_jobs = array_filter($subsite_jobs);
  412. DB::table('subsite_jobs')->insert($subsite_jobs);
  413. //添加联系人信息
  414. $jobs_contact = [
  415. 'job_id' => $job_id,
  416. 'contact' => $company['contact'],
  417. 'telephone' => $company['mobile'],
  418. 'email' => $company['email'],
  419. 'landline_tel' => $company['landline_tel'],
  420. 'address' => $company['address'],
  421. 'contact_show' => 1,
  422. 'telephone_show' => 1,
  423. 'email_show' => 1,
  424. 'landline_tel_show' => 1,
  425. 'created_at' => $date,
  426. 'updated_at' => $date,
  427. ];
  428. $jobs_contact = array_filter($jobs_contact);
  429. DB::table('jobs_contacts')->insert($jobs_contact);
  430. //添加日志
  431. $members_log = [
  432. 'log_uid' => $company['id'],
  433. 'log_username' => $company['companyname'],
  434. 'log_value' => '发布了职位(id:' . $job_id . ')',
  435. 'log_ip' => ip2long('127.0.0.1'),
  436. 'log_address' => '未知',
  437. 'log_utype' => 1,
  438. 'log_source' => '网页版',
  439. 'subsite_id' => 0,
  440. 'type' => 1002,
  441. 'status' => 1,
  442. 'created_at' => $date,
  443. 'updated_at' => $date,
  444. ];
  445. $members_log = array_filter($members_log);
  446. DB::table('members_logs')->insert($members_log);
  447. //增加审核记录
  448. $audit_reasons = [
  449. 'type' => 3,
  450. 'status' => 2,
  451. 'type_id' => $job_id,
  452. 'audit_man' => 'admin',
  453. 'created_at' => $date,
  454. 'updated_at' => $date,
  455. ];
  456. $audit_reasons = array_filter($audit_reasons);
  457. DB::table('audit_reasons')->insert($audit_reasons);
  458. //增加站内信
  459. $pms = [
  460. 'utype' => 1,
  461. 'msgtype' => 1,
  462. 'msgfromuid' => 1,
  463. 'msgfrom' => 'admin',
  464. 'msgtoname' => $company['companyname'],
  465. 'msgtouid' => $company['id'],
  466. 'message' => '职位ID:' . $job_id . ',职位名称:' . $info['jobs_name'] . ',通过审核,【备注】',
  467. 'started_at' => 0,
  468. 'ended_at' => 0,
  469. 'new' => 1,
  470. 'created_at' => $date,
  471. 'updated_at' => $date,
  472. ];
  473. $pms = array_filter($pms);
  474. DB::table('pms')->insert($pms);
  475. }
  476. public function importData()
  477. {
  478. $reader = \PhpOffice\PhpSpreadsheet\IOFactory::createReader("Xlsx"); // 指定为xlsx格式
  479. $spreadsheet = $reader->load(public_path() . "/1.xlsx");
  480. $sheet = $spreadsheet->getActiveSheet();
  481. $res = [];
  482. foreach ($sheet->getRowIterator(2) as $row) {
  483. $tmp = [];
  484. foreach ($row->getCellIterator() as $cell) {
  485. $tmp[] = trim($cell->getFormattedValue());
  486. }
  487. $item = array_filter($tmp);
  488. if (!empty($item)) {
  489. $res[$row->getRowIndex()] = $tmp;
  490. }
  491. }
  492. foreach ($res as $v) {
  493. $this->_dealData($v);
  494. }
  495. return '成功';
  496. }
  497. private function _dealData($v)
  498. {
  499. $arr = [
  500. 'avatar' => '头像',
  501. 'idcard_just' => '身份证正面',
  502. 'idcard_back' => '身份证反面',
  503. 'graduate' => '毕业证书',
  504. 'degree' => '学位证书',
  505. 'el_degree' => '学信网《教育部学历证书电子注册备案表》',
  506. 'qualification1' => '职(执)业资格证书、专业技术资格(职务)证书扫描件1',
  507. 'qualification2' => '职(执)业资格证书、专业技术资格(职务)证书扫描件2',
  508. 'prove1' => '工作经历证明1',
  509. 'prove2' => '工作经历证明2',
  510. 'prove3' => '工作经历证明3',
  511. 'prove4' => '工作经历证明4',
  512. 'prove5' => '工作经历证明5',
  513. 'prove6' => '工作经历证明6',
  514. 'prove7' => '工作经历证明7',
  515. 'prove8' => '工作经历证明8',
  516. 'prove9' => '工作经历证明9',
  517. 'prove10' => '工作经历证明10',
  518. ];
  519. $info = [
  520. 'name' => $v[0],
  521. 'avatar' => $v[3],
  522. 'idcard_just' => $v[28],
  523. 'idcard_back' => $v[29],
  524. 'graduate' => $v[31],
  525. 'degree' => $v[32],
  526. 'el_degree' => $v[33],
  527. 'qualification1' => $v[34],
  528. 'qualification2' => $v[35],
  529. 'prove1' => $v[36],
  530. 'prove2' => $v[37],
  531. 'prove3' => $v[38],
  532. 'prove4' => $v[39],
  533. 'prove5' => $v[40],
  534. 'prove6' => $v[41],
  535. 'prove7' => $v[42],
  536. 'prove8' => $v[43],
  537. 'prove9' => $v[44],
  538. 'prove10' => $v[45],
  539. ];
  540. $path = storage_path('a/' . $info['name']);
  541. foreach ($arr as $key => $value) {
  542. if (!empty($info[$key])) {
  543. $file_nane = $path . '/' . $value . '.png';
  544. file_put_contents($file_nane, file_get_contents($info[$key]));
  545. }
  546. }
  547. }
  548. }