Enterprise.php 19 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456
  1. <?php
  2. namespace app\admin\controller;
  3. use app\admin\common\AdminController;
  4. use app\common\api\ChuanglanSmsApi;
  5. use app\common\api\DictApi;
  6. use app\common\api\EnterpriseApi;
  7. use app\common\model\MessageRecord;
  8. use app\common\model\TalentChecklog;
  9. use app\common\api\TalentState;
  10. use app\common\api\CompanyApi;
  11. use think\facade\Db;
  12. class Enterprise extends AdminController {
  13. public function gotoEnterprisePage() {
  14. return view("", []);
  15. }
  16. public function findEnterpriseByPage() {
  17. $res = EnterpriseApi::getList($this->request);
  18. return json($res);
  19. }
  20. public function gotoEnterpriseDetailPage() {
  21. $id = trim($this->request['id']);
  22. $ep = EnterpriseApi::getOne($id);
  23. if (!$ep) {
  24. return "无此企业";
  25. }
  26. //--------设置 审核状态---------------------------------------------------
  27. switch ($ep['checkState']) {
  28. case 1:
  29. $ep['checkStateName'] = "待审核";
  30. break;
  31. case 2:
  32. $ep['checkStateName'] = "审核驳回";
  33. break;
  34. case 3:
  35. $ep['checkStateName'] = "审核通过";
  36. break;
  37. case 4:
  38. $ep['checkStateName'] = "重新提交";
  39. break;
  40. }
  41. //-------设置账号状态----------------------------------------------------
  42. switch ($ep['active']) {
  43. case 1:
  44. $ep['activeName'] = "账号有效";
  45. break;
  46. case 2:
  47. $ep['activeName'] = "冻结/拉黑";
  48. break;
  49. }
  50. //---------设置 街道-----------------------------------------------------
  51. if (\StrUtil::isNotEmpAndNull($ep['street'])) {
  52. $street_info = DictApi::findByParentCodeAndCode('street', $ep['street']);
  53. if ($street_info != null) {
  54. $ep['streetName'] = $street_info['name'];
  55. }
  56. }
  57. if (\StrUtil::isNotEmpAndNull($ep['agencyType'])) {
  58. $agencyType = DictApi::findByParentCodeAndCode('agency_type', $ep['agencyType']);
  59. $ep["agencyTypeName"] = $agencyType["name"];
  60. }
  61. //---------设置产业领域 --------------------------------------------------
  62. if (\StrUtil::isNotEmpAndNull($ep['industryFieldNew'])) {
  63. $industryFieldNew = DictApi::findByParentCodeAndCode('industry_field', $ep['industryFieldNew']);
  64. if ($industryFieldNew != null) {
  65. $ep['industryFieldNewName'] = $industryFieldNew['name'];
  66. }
  67. }
  68. //---------设置行业领域 --------------------------------------------------
  69. if (\StrUtil::isNotEmpAndNull($ep['industryFieldOld'])) {
  70. $industryFieldOld = DictApi::findByParentCodeAndCode($ep['industryFieldNew'] . "_field", $ep['industryFieldOld']);
  71. if ($industryFieldOld != null) {
  72. $ep['industryFieldOldName'] = $industryFieldOld['name'];
  73. }
  74. }
  75. //---------设置单位标签 --------------------------------------------------
  76. if (\StrUtil::isNotEmpAndNull($ep['enterpriseTag'])) {
  77. $enterpriseTag = DictApi::findByParentCodeAndCode("enterprise_tag", $ep['enterpriseTag']);
  78. if ($enterpriseTag != null) {
  79. $ep['enterpriseTagName'] = $enterpriseTag['name'];
  80. }
  81. }
  82. //---------设置单位类型 --------------------------------------------------
  83. if (\StrUtil::isNotEmpAndNull($ep['enterpriseType'])) {
  84. $enterpriseType = DictApi::findByParentCodeAndCode("enterprise_type", $ep['enterpriseType']);
  85. if ($enterpriseType != null) {
  86. $ep['enterpriseTypeName'] = $enterpriseType['name'];
  87. }
  88. }
  89. $imgurl_info = pathinfo($ep['imgurl']);
  90. if (in_array($imgurl_info['extension'], ["jpeg", "jpg", "png", "gif"])) {
  91. $ep['imgurl_is_img'] = 1;
  92. } else {
  93. $ep['imgurl_is_img'] = 0;
  94. }
  95. $bankImg_info = pathinfo($ep['bankImg']);
  96. if (in_array($bankImg_info['extension'], ["jpeg", "jpg", "png", "gif"])) {
  97. $ep['bankImg_is_img'] = 1;
  98. } else {
  99. $ep['bankImg_is_img'] = 0;
  100. }
  101. $domainImg_info = pathinfo($ep['domainImg']);
  102. if (in_array($domainImg_info['extension'], ["jpeg", "jpg", "png", "gif"])) {
  103. $ep['domainImg_is_img'] = 1;
  104. } else {
  105. $ep['domainImg_is_img'] = 0;
  106. }
  107. $typeImg_info = pathinfo($ep['typeImg']);
  108. if (in_array($typeImg_info['extension'], ["jpeg", "jpg", "png", "gif"])) {
  109. $ep['typeImg_is_img'] = 1;
  110. } else {
  111. $ep['typeImg_is_img'] = 0;
  112. }
  113. $beian_info = pathinfo($ep['beian']);
  114. if (in_array($beian_info['extension'], ["jpeg", "jpg", "png", "gif"])) {
  115. $ep['beian_is_img'] = 1;
  116. } else {
  117. $ep['beian_is_img'] = 0;
  118. }
  119. return view("", ['ep' => $ep]);
  120. }
  121. public function gotoExaminePage() {
  122. $id = trim($this->request['id']);
  123. $ep = EnterpriseApi::getOne($id);
  124. if (!$ep) {
  125. return "无此企业";
  126. }
  127. //---------设置产业领域 --------------------------------------------------
  128. if (\StrUtil::isNotEmpAndNull($ep['industryFieldNew'])) {
  129. $industryFieldNew = DictApi::findByParentCodeAndCode('industry_field', $ep['industryFieldNew']);
  130. if ($industryFieldNew != null) {
  131. $ep['industryFieldNewName'] = $industryFieldNew['name'];
  132. }
  133. }
  134. return view("", ['ep' => $ep, 'checkUser' => session('user')['name']]);
  135. }
  136. public function doExamine() {
  137. $id = trim($this->request['id']);
  138. if (!$id) {
  139. return json(["msg" => 'ID不能为空!']);
  140. }
  141. $ep = EnterpriseApi::getOne($id);
  142. if (!$ep) {
  143. return json(["msg" => '无此企业!']);
  144. }
  145. $checkState = $this->request['checkState'];
  146. if ($checkState == null || ($checkState != 2 && $checkState != 3)) {
  147. return json(["msg" => '请选择审核状态!']);
  148. }
  149. $checkMsg = $this->request['checkMsg'];
  150. if ($checkState == 2) {
  151. if (\StrUtil::isEmpOrNull($checkMsg)) {
  152. return json(["msg" => '请填写审核意见!']);
  153. }
  154. if (strlen($checkMsg) > 200) {
  155. return json(["msg" => '审核意见最多200个字符!']);
  156. }
  157. }
  158. try {
  159. $checkData = [
  160. 'id' => $id,
  161. 'checkState' => $checkState,
  162. 'checkMsg' => $checkMsg,
  163. 'checkUser' => session('user')['name'],
  164. 'updateUser' => session('user')['uid'],
  165. 'updateTime' => date("Y-m-d H:i:s")
  166. ];
  167. $res = EnterpriseApi::updateById($checkData);
  168. //短信入库数据
  169. $record_data = [
  170. 'id' => getStringId(),
  171. 'bizId' => getStringId(),
  172. 'userId' => $id,
  173. 'type' => 2,
  174. 'smsType' => 2,
  175. 'name' => $ep['name'],
  176. 'phone' => $ep['agentPhone'],
  177. 'params' => '机构注册信息',
  178. 'state' => 1,
  179. 'sendingDate' => date("Y-m-d H:i:s", time()),
  180. 'createTime' => date("Y-m-d H:i:s", time())
  181. ];
  182. if ($checkState == 2) {
  183. $record_data['templateCode'] = "【晋江市人才服务平台】您好!您提交的晋江市现代产业体系人才机构注册信息因信息填写错误或上传不完整已被退回,请及时登录“晋江市人才综合服务申报平台”根据审核意见修改并重新提交。退订回复TD。";
  184. }
  185. if ($checkState == 3) {
  186. $record_data['templateCode'] = "【晋江市人才服务平台】您好!您提交的晋江市现代产业体系人才机构注册信息已审核通过,可登录“晋江市人才综合服务申报平台”做相关事宜申报。退订回复TD。";
  187. }
  188. $smsapi = new ChuanglanSmsApi();
  189. $result = $smsapi->sendSMS($ep['agentPhone'], $record_data['templateCode']);
  190. MessageRecord::create($record_data);
  191. $company = CompanyApi::getOne(session('user')['companyId']);
  192. TalentChecklog::create([
  193. 'id' => getStringId(),
  194. 'mainId' => $id,
  195. 'type' => 10,
  196. 'typeField' => null,
  197. 'active' => 1,
  198. 'state' => $checkState,
  199. 'step' => 101,
  200. 'stateChange' => TalentState::stateEnum($checkState),
  201. 'description' => $checkMsg,
  202. 'createTime' => date("Y-m-d H:i:s", time()),
  203. 'createUser' => session('user')['name'] . "({$company['name']})"
  204. ]);
  205. return json(["msg" => '操作成功!', "code" => 200]);
  206. } catch (\Exception $e) {
  207. return json(["msg" => $e->getMessage()]);
  208. }
  209. }
  210. public function GotoActivePage() {
  211. $id = trim($this->request['id']);
  212. $ep = EnterpriseApi::getOne($id);
  213. return view("", ['ep' => $ep]);
  214. }
  215. public function setActive() {
  216. if (!$id = trim($this->request['id'])) {
  217. return json(["msg" => 'ID不能为空!', "code" => 500]);
  218. }
  219. $ep = EnterpriseApi::getOne($id);
  220. $active = $this->request['active'];
  221. if ($ep['active'] == null || ($ep['active'] != 1 && $ep['active'] != 2)) {
  222. return json(["msg" => '状态有误!', "code" => 500]);
  223. }
  224. if ($ep['active'] == 2) {
  225. $msg = trim($this->request['activeMsg']);
  226. if (empty($msg)) {
  227. return json(["msg" => '请填写拉黑/冻结原因!', "code" => 500]);
  228. }
  229. if (strlen($msg) > 100) {
  230. return json(["msg" => '拉黑/冻结原因 最多100个字符!', "code" => 500]);
  231. }
  232. }
  233. $company = CompanyApi::getOne(session('user')['companyId']);
  234. $ep->active = $active;
  235. $ep->activeMsg = $msg;
  236. $ep->updateUser = session('user')['uid'] . "";
  237. $ep->updateTime = date('y-m-d H:i:s');
  238. try {
  239. $ep->save();
  240. //添加日志
  241. TalentChecklog::create([
  242. 'id' => getStringId(),
  243. 'mainId' => $ep['id'],
  244. 'type' => 10,
  245. 'typeField' => null,
  246. 'active' => 1,
  247. 'state' => TalentState::RCRD_BASEIC_FROZEN,
  248. 'step' => 102,
  249. 'stateChange' => TalentState::stateEnum(10),
  250. 'description' => $msg,
  251. 'createTime' => date("Y-m-d H:i:s", time()),
  252. 'createUser' => session('user')['name'] . "({$company['name']})"
  253. ]);
  254. return json(["msg" => '操作成功!', "code" => 200]);
  255. } catch (\Exception $e) {
  256. return json(["msg" => $e->getMessage()]);
  257. }
  258. }
  259. public function resetPassword() {
  260. if (!$id = trim($this->request['id'])) {
  261. return json(["msg" => 'ID不能为空!', "code" => 500]);
  262. }
  263. $ep = EnterpriseApi::getOne($id);
  264. if (!$ep) {
  265. return json(["msg" => '找不到该用户!', "code" => 500]);
  266. }
  267. $ep->password = hash("md5", 'JJrc@123'); //默认密码
  268. $ep->updateUser = session('user')['uid'] . "";
  269. $ep->updateTime = date("Y-m-d H:i:s");
  270. $ep->save();
  271. $company = CompanyApi::getOne(session('user')['companyId']);
  272. TalentChecklog::create([
  273. 'id' => getStringId(),
  274. 'mainId' => $ep['id'],
  275. 'type' => 10,
  276. 'typeField' => null,
  277. 'active' => 1,
  278. 'state' => null,
  279. 'step' => 103,
  280. 'stateChange' => '重置密码',
  281. 'description' => '重置密码',
  282. 'createTime' => date("Y-m-d H:i:s", time()),
  283. 'createUser' => session('user')['name'] . "({$company['name']})"
  284. ]);
  285. return json(["msg" => '重置密码成功!', "code" => 200]);
  286. }
  287. public function export() {
  288. $res = EnterpriseApi::getList($this->request);
  289. $objPHPExcel = new \PhpOffice\PhpSpreadsheet\Spreadsheet();
  290. //创建人
  291. $objPHPExcel->getProperties()->setCreator("System");
  292. //最后修改人
  293. $objPHPExcel->getProperties()->setLastModifiedBy("System");
  294. //标题
  295. $objPHPExcel->getProperties()->settitle("企业用户信息" . date("ymdHis"));
  296. $objPHPExcel->getDefaultStyle()->getAlignment()->setHorizontal(\PhpOffice\PhpSpreadsheet\Style\Alignment::HORIZONTAL_CENTER);
  297. $objPHPExcel->getDefaultStyle()->getAlignment()->setVertical(\PhpOffice\PhpSpreadsheet\Style\Alignment::HORIZONTAL_CENTER);
  298. //设置当前的sheet
  299. $sheet = $objPHPExcel->getActiveSheet();
  300. //设置sheet的name
  301. $sheet->settitle('企业用户信息');
  302. // 所有单元格默认高度
  303. $sheet->getDefaultRowDimension()->setRowHeight(30);
  304. $sheet->getDefaultColumnDimension()->setWidth(30);
  305. $sheet->getstyle('A1:O1')->getFill()->setFillType(\PhpOffice\PhpSpreadsheet\Style\Fill::FILL_SOLID)->getStartColor()->setRGB("87CEEB");
  306. $header = ["单位名称", " 统一社会信用代码", "产业领域", "单位标签", " 所属街道", "单位地址", " 法人代表", " 单位电话", "人才联络员", "人才联络员电话", "人才联络员邮箱", "审核状态", "账号状态", "注册时间", "备注"];
  307. foreach ($header as $key => $value) {
  308. $sheet->setCellValueByColumnAndRow($key + 1, 1, $value);
  309. }
  310. if ($res['total'] > 0) {
  311. $row = 2;
  312. foreach ($res['rows'] as $k => $v) {
  313. for ($i = 0; $i < count($header); $i++) {
  314. switch ($i) {
  315. case 0:
  316. $sheet->setCellValueByColumnAndRow($i + 1, $row, $v['name']);
  317. break;
  318. case 1:
  319. $sheet->setCellValueByColumnAndRow($i + 1, $row, $v['idCard']);
  320. break;
  321. case 2:
  322. $sheet->setCellValueByColumnAndRow($i + 1, $row, $v['industryFieldNewName']);
  323. break;
  324. case 3:
  325. $sheet->setCellValueByColumnAndRow($i + 1, $row, $v['enterpriseTagName']);
  326. break;
  327. case 4:
  328. $sheet->setCellValueByColumnAndRow($i + 1, $row, $v['streetName']);
  329. break;
  330. case 5:
  331. $sheet->setCellValueByColumnAndRow($i + 1, $row, $v['address']);
  332. break;
  333. case 6:
  334. $sheet->setCellValueByColumnAndRow($i + 1, $row, $v['legal']);
  335. break;
  336. case 7:
  337. $sheet->setCellValueExplicitByColumnAndRow($i + 1, $row, $v['ephone'], \PhpOffice\PhpSpreadsheet\Cell\DataType::TYPE_STRING);
  338. break;
  339. case 8:
  340. $sheet->setCellValueByColumnAndRow($i + 1, $row, $v['agentName']);
  341. break;
  342. case 9:
  343. $sheet->setCellValueExplicitByColumnAndRow($i + 1, $row, $v['agentPhone'], \PhpOffice\PhpSpreadsheet\Cell\DataType::TYPE_STRING);
  344. break;
  345. case 10:
  346. $sheet->setCellValueByColumnAndRow($i + 1, $row, $v['agentEmail']);
  347. break;
  348. case 11:
  349. switch ($v['checkState']) {
  350. case 1:
  351. $sheet->setCellValueByColumnAndRow($i + 1, $row, "未审核");
  352. break;
  353. case 2:
  354. $sheet->setCellValueByColumnAndRow($i + 1, $row, "审核驳回");
  355. break;
  356. case 3:
  357. $sheet->setCellValueByColumnAndRow($i + 1, $row, "审核通过");
  358. break;
  359. case 4:
  360. $sheet->setCellValueByColumnAndRow($i + 1, $row, "重新提交");
  361. break;
  362. default:
  363. $sheet->setCellValueByColumnAndRow($i + 1, $row, "");
  364. break;
  365. }
  366. break;
  367. case 12:
  368. switch ($v['active']) {
  369. case 1:
  370. $sheet->setCellValueByColumnAndRow($i + 1, $row, "账号有效");
  371. break;
  372. case 2:
  373. $sheet->setCellValueByColumnAndRow($i + 1, $row, "拉黑/冻结");
  374. break;
  375. default:
  376. $sheet->setCellValueByColumnAndRow($i + 1, $row, "");
  377. break;
  378. }
  379. break;
  380. case 13:
  381. $sheet->setCellValueByColumnAndRow($i + 1, $row, $v['createTime']);
  382. break;
  383. case 14:
  384. $sheet->setCellValueByColumnAndRow($i + 1, $row, $v['description']);
  385. break;
  386. }
  387. }
  388. $row++;
  389. }
  390. }
  391. header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');
  392. header('Content-Disposition: attachment;filename="' . "企业用户信息" . date("ymdHis") . '.xlsx"');
  393. header('Cache-Control: max-age=0');
  394. // If you're serving to IE 9, then the following may be needed
  395. header('Cache-Control: max-age=1');
  396. // If you're serving to IE over SSL, then the following may be needed
  397. header('Expires: Mon, 26 Jul 1997 05:00:00 GMT'); // Date in the past
  398. header('Last-Modified: ' . gmdate('D, d M Y H:i:s') . ' GMT'); // always modified
  399. header('Cache-Control: cache, must-revalidate'); // HTTP/1.1
  400. header('Pragma: public'); // HTTP/1.0
  401. $writer = \PhpOffice\PhpSpreadsheet\IOFactory::createWriter($objPHPExcel, 'Xlsx');
  402. $writer->save('php://output');
  403. }
  404. }