Comjobsreport.php 15 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423
  1. <?php
  2. namespace app\worker\controller;
  3. use app\common\service\IncomeService;
  4. use app\worker\BaseController;
  5. use app\common\model\ComjobsReport as ComjobsReportModel;
  6. use app\common\model\ReportLog as ReportLogModel;
  7. use app\common\model\Comjobs as ComjobsModel;
  8. use app\common\model\Agent as AgentModel;
  9. use app\common\validate\Report as ReportValidate;
  10. use think\exception\ValidateException;
  11. use think\facade\Db;
  12. class Comjobsreport extends BaseController
  13. {
  14. // 报备记录
  15. public function reportList()
  16. {
  17. $workerid = $this->access_worker['id'];
  18. $comjobslist = ComjobsModel::where('workerid', $workerid)->select();
  19. $agentlist = Db::name('agent')
  20. ->alias('a')
  21. ->field('a.id,a.title')
  22. ->join('worker b', 'b.id = a.workerid', 'LEFT')
  23. ->where('a.workerid', $workerid)
  24. ->select()
  25. ->toArray();
  26. $statusarr = [1 => '待审核', 2 => '待面试', 3 => '已入职', 4 => '无效报备'];
  27. return view('comjobsreport/reportlist', [
  28. 'comjobslist' => $comjobslist,
  29. 'agentlist' => $agentlist,
  30. 'statusarr' => $statusarr,
  31. ]);
  32. }
  33. // 报备记录(待审核)
  34. public function reportExamine()
  35. {
  36. $workerid = $this->access_worker['id'];
  37. $comjobslist = ComjobsModel::where('workerid', $workerid)->select();
  38. $agentlist = Db::name('agent')
  39. ->alias('a')
  40. ->field('a.id,a.title')
  41. ->join('worker b', 'b.id = a.workerid', 'LEFT')
  42. ->where('a.workerid', $workerid)
  43. ->select()
  44. ->toArray();
  45. $statusarr = [1 => '待审核', 2 => '待面试', 3 => '已入职', 4 => '无效报备'];
  46. return view('comjobsreport/reportexamine', [
  47. 'comjobslist' => $comjobslist,
  48. 'agentlist' => $agentlist,
  49. 'statusarr' => $statusarr,
  50. ]);
  51. }
  52. public function listReport()
  53. {
  54. $limit = input('limit/d', 20);
  55. $page = input('page/d', 1);
  56. $workerid = $this->access_worker['id'];
  57. $map = [];
  58. $map[] = ['workerid', '=', $workerid];
  59. $date6 = input('date6');
  60. if (!empty($date6)) {
  61. $date6 = explode('~', $date6);
  62. $startTime = strtotime($date6[0]);
  63. $endTime = strtotime($date6[1]);
  64. $map[] = ['createtime', 'between', [$startTime, $endTime]];
  65. }
  66. $comjobsid = input('comjobsid/d', 0);
  67. if (!empty($comjobsid)) {
  68. $map[] = ['comjobsid', '=', $comjobsid];
  69. }
  70. $agentid = input('agentid/s', "");
  71. if ($agentid != "") {
  72. $map[] = ['agentid', '=', intval($agentid)];
  73. }
  74. $status = input('status/d', 0);
  75. if (!empty($status)) {
  76. $map[] = ['status', '=', $status];
  77. }
  78. $count = ComjobsReportModel::where($map)->count();
  79. if ($count == 0) {
  80. exit(json_encode([
  81. 'code' => 1,
  82. 'msg' => "未查询到数据",
  83. ]));
  84. }
  85. $list = ComjobsReportModel::with(['comjobs','agent','broker'])
  86. ->where($map)
  87. ->order('id', 'DESC')
  88. ->limit($limit)
  89. ->page($page)
  90. ->append(['status_text'])
  91. ->select();
  92. foreach ($list as $v) {
  93. $v['comjob_title'] = $v['comjobs']['title'];
  94. $v['agent_title'] = $v['agent']['title'];
  95. $v['broker_title'] = $v['broker']['title'];
  96. }
  97. exit(json_encode([
  98. 'code' => 0,
  99. 'msg' => "",
  100. 'count' => $count,
  101. 'data' => $list,
  102. ]));
  103. }
  104. public function exportReport()
  105. {
  106. $map = [];
  107. $comjobsid = input('comjobsid/d', 0);
  108. if (!empty($comjobsid)) {
  109. $map[] = ['comjobsid', '=', $comjobsid];
  110. }
  111. $agentid = input('agentid/d', 0);
  112. if (!empty($agentid)) {
  113. $map[] = ['agentid', '=', $agentid];
  114. }
  115. $status = input('status/d', 0);
  116. if (!empty($status)) {
  117. $map[] = ['status', '=', $status];
  118. }
  119. $xlsData = ComjobsReportModel::with(['comjobs', 'agent', 'broker'])->where($map)->order('id', 'DESC')->append(['status_text'])->select()->toArray();
  120. $xlsCell = [
  121. ['id', '表ID'],
  122. ['comjobs.title', '招聘标题'],
  123. ['agent.title', '代理门店'],
  124. ['broker.title', '经纪人'],
  125. ['realname', '姓名'],
  126. ['mobile', '手机号'],
  127. ['idcard', '身份证号'],
  128. ['arrivetime', '预计到达时间'],
  129. ['remark', '报名备注'],
  130. ['status_text', '状态'],
  131. ['createtime', '接单时间'],
  132. ];
  133. export_excel("报备记录", $xlsCell, $xlsData);
  134. }
  135. public function setComtype()
  136. {
  137. $idarr = input('idarr/a');
  138. $comjobsid = input('comjobsid/d', 0);
  139. $comjobs = ComjobsModel::with(['company'])->findOrEmpty($comjobsid);
  140. if ($comjobs->isEmpty()) {
  141. exit(json_encode([
  142. 'code' => 1,
  143. 'msg' => "请选择招聘信息和代理门店",
  144. ]));
  145. }
  146. $data = [
  147. 'comjobsid' => $comjobs->id,
  148. 'comtype' => input('comtype/s', ""),
  149. 'comprice' => input('comprice/s', ""),
  150. 'comremark' => input('comremark/s', ""),
  151. 'updatetime' => input('updatetime/s', date("Y-m-d H:i")),
  152. ];
  153. ComjobsReportModel::whereIn('id', $idarr)->update($data);
  154. $reportall = ComjobsReportModel::whereIn('id', $idarr)->select()->toArray();
  155. $logdata = [];
  156. $statusarr = [1 => '待审核', 2 => '待面试', 3 => '已入职', 4 => '无效报备'];
  157. $agentall = AgentModel::column('realname', 'id');
  158. foreach ($reportall as $key => $item) {
  159. $logdata[] = [
  160. 'reportid' => $item['id'],
  161. 'logstatus' => $statusarr[$item['status']],
  162. 'editrealname' => "管理员",
  163. 'comjobstil' => $comjobs->isEmpty() ? "" : $comjobs->title,
  164. 'agenttil' => empty($agentall[$item['agentid']]) ? "未报备" : $agentall[$item['agentid']],
  165. 'realname' => $item['realname'],
  166. 'mobile' => $item['mobile'],
  167. 'idcard' => $item['idcard'],
  168. 'comtype' => input('comtype/s', ""),
  169. 'comprice' => input('comprice/s', ""),
  170. 'comremark' => input('comremark/s', ""),
  171. 'arrivetime' => $item['arrivetime'],
  172. 'remark' => $item['remark'],
  173. 'createtime' => date("Y-m-d H:i"),
  174. ];
  175. }
  176. $reportlog = new ReportLogModel;
  177. $reportlog->saveAll($logdata);
  178. exit(json_encode([
  179. 'code' => 0,
  180. 'msg' => "",
  181. ]));
  182. }
  183. public function setStatus()
  184. {
  185. $idarr = input('idarr/a');
  186. $status = input('status/d', 1);
  187. ComjobsReportModel::whereIn('id', $idarr)->update(['status' => $status]);
  188. exit(json_encode([
  189. 'code' => 0,
  190. 'msg' => "",
  191. ]));
  192. }
  193. public function delReport()
  194. {
  195. $idarr = input('idarr/a');
  196. $ComjobsReport = ComjobsReportModel::whereIn('id', $idarr)->select();
  197. $result = $ComjobsReport->delete();
  198. if ($result) {
  199. exit(json_encode([
  200. 'code' => 0,
  201. 'msg' => "",
  202. ]));
  203. }
  204. exit(json_encode([
  205. 'code' => 1,
  206. 'msg' => "删除失败,请稍后重试",
  207. ]));
  208. }
  209. public function reportImport()
  210. {
  211. $id = input('id/d, 0');
  212. $comjobslist = ComjobsModel::with(['comjobsRefund.agentGroups'])->order(['id' => 'desc'])->select();
  213. $agentlist = AgentModel::order(['id' => 'asc'])->select();
  214. return view('comjobsreport/reportimport', [
  215. 'comjobslist' => $comjobslist,
  216. 'agentlist' => $agentlist,
  217. ]);
  218. }
  219. public function importReport()
  220. {
  221. $execlfile = input('execlfile/s', "");
  222. if (empty($execlfile)) {
  223. exit(json_encode([
  224. 'code' => 1,
  225. 'msg' => "请上传导入文件",
  226. ]));
  227. }
  228. $comjobsid = input('comjobsid/d', 0);
  229. $comjobs = ComjobsModel::findOrEmpty($comjobsid);
  230. $agentid = input('agentid/d', 0);
  231. $agent = AgentModel::findOrEmpty($agentid);
  232. $filedata = read_excel($execlfile);
  233. $sucnumber = 0;
  234. $errnumber = 0;
  235. $errarr = "";
  236. $statusarr = [1 => '待审核', 2 => '待面试', 3 => '已入职', 4 => '无效报备'];
  237. foreach ($filedata as $k => $v) {
  238. $tabcomjobsid = intval($v[1]);
  239. if (empty($tabcomjobsid)) {
  240. $tabcomjobs = $comjobs;
  241. } else {
  242. $tabcomjobs = ComjobsModel::findOrEmpty($tabcomjobsid);
  243. }
  244. $tabagentid = intval($v[2]);
  245. if (empty($tabagentid)) {
  246. $tabagent = $agent;
  247. } else {
  248. $tabagent = AgentModel::findOrEmpty($tabagentid);
  249. }
  250. if ($tabcomjobs->isEmpty()) {
  251. $errarr .= $v[0] . ",";
  252. $errnumber++;
  253. continue;
  254. } else {
  255. $data = [
  256. 'comjobsid' => $tabcomjobs->id,
  257. 'agentid' => $tabagent->isEmpty() ? 0 : $tabagent->id,
  258. 'brokerid' => 0,
  259. 'realname' => trim($v[3]),
  260. 'mobile' => trim($v[4]),
  261. 'idcard' => trim($v[5]),
  262. 'gender' => trim($v[6]) == '男' ? 1 : 2,
  263. 'comtype' => empty(trim($v[7])) ? trim($v[7]) : input('comtype/s', ""),
  264. 'comprice' => empty(trim($v[8])) ? trim($v[8]) : input('comprice/s', ""),
  265. 'comremark' => empty(trim($v[9])) ? trim($v[9]) : input('comremark/s', ""),
  266. 'arrivetime' => trim($v[10]),
  267. 'remark' => trim($v[11]),
  268. 'status' => intval($v[12]),
  269. 'updatetime' => date("Y-m-d H:i"),
  270. 'createtime' => date("Y-m-d H:i"),
  271. ];
  272. try {
  273. validate(ReportValidate::class)->check($data);
  274. } catch (ValidateException $e) {
  275. $errarr .= $v[0] . ",";
  276. $errnumber++;
  277. continue;
  278. }
  279. $report = new ComjobsReportModel;
  280. $report->save($data);
  281. $logdata = [
  282. 'reportid' => $report->id,
  283. 'logstatus' => $statusarr[$report->status],
  284. 'editrealname' => "管理员",
  285. 'comjobstil' => $tabcomjobs->title,
  286. 'agenttil' => $tabagent->isEmpty() ? "未报备" : $tabagent->title,
  287. 'realname' => trim($v[3]),
  288. 'mobile' => trim($v[4]),
  289. 'idcard' => trim($v[5]),
  290. 'comtype' => empty(trim($v[7])) ? trim($v[7]) : input('comtype/s', ""),
  291. 'comprice' => empty(trim($v[8])) ? trim($v[8]) : input('comprice/s', ""),
  292. 'comremark' => empty(trim($v[9])) ? trim($v[9]) : input('comremark/s', ""),
  293. 'arrivetime' => trim($v[10]),
  294. 'remark' => trim($v[11]),
  295. 'createtime' => date("Y-m-d H:i"),
  296. ];
  297. ReportLogModel::create($logdata);
  298. $sucnumber++;
  299. }
  300. }
  301. exit(json_encode([
  302. 'code' => 0,
  303. 'sucnumber' => $sucnumber,
  304. 'errnumber' => $errnumber,
  305. 'errarr' => $errarr,
  306. ]));
  307. }
  308. public function reportForm()
  309. {
  310. $id = input('id/d, 0');
  311. $report = Db::name('comjobs_report')
  312. ->alias('a')
  313. ->field('a.id,a.realname,a.mobile,a.idcard,a.status,a.remark,a.retremark,b.title')
  314. ->join('comjobs b', 'b.id = a.comjobsid', 'LEFT')
  315. ->where('a.id', $id)
  316. ->find();
  317. $statusarr = [1 => '待审核', 2 => '待面试', 3 => '已入职', 4 => '无效报备'];
  318. return view('comjobsreport/reportform', [
  319. 'report' => $report,
  320. 'title' => $this->access_worker['title'],
  321. 'statusarr' => $statusarr,
  322. ]);
  323. }
  324. public function editReport()
  325. {
  326. $id = input('id/d', 0);
  327. $workerid = $this->access_worker['id'];
  328. $data = [
  329. 'retremark' => input('retremark/s', ""),
  330. 'status' => input('status/d', 1),
  331. 'updatetime' => time(),
  332. ];
  333. if (empty($id)) {
  334. $report = new ComjobsReportModel;
  335. $report->save($data);
  336. } else {
  337. $report = ComjobsReportModel::with('comjobs')->find($id);
  338. if ($data['status'] < $report['status']) {
  339. exit(json_encode([
  340. 'code' => 1,
  341. 'msg' => "状态只能往后选",
  342. ]));
  343. }
  344. //悬赏金
  345. if ($report['status'] != 3 && $data['status'] == 3) {
  346. $incomeService = new IncomeService();
  347. $incomeService->add($report['brokerid'], $report['comjobs']['retmoney'], '悬赏招聘', '悬赏招聘推荐入职成功后奖励');
  348. }
  349. $report->save($data);
  350. }
  351. exit(json_encode([
  352. 'code' => 0,
  353. ]));
  354. }
  355. // 记录
  356. public function logList()
  357. {
  358. $reportid = input('reportid/d', 0);
  359. $report = ComjobsReportModel::findOrEmpty($reportid);
  360. return view('comjobsreport/loglist', [
  361. 'reportid' => $reportid,
  362. 'report' => $report,
  363. ]);
  364. }
  365. public function listLog()
  366. {
  367. $limit = input('limit/d', 50);
  368. $page = input('page/d', 1);
  369. $map = [];
  370. $map[] = ['reportid', '=', input('reportid/d', 0)];
  371. $map[] = ['delstatus', '<>', 2];
  372. $list = ReportLogModel::with(['report'])->where($map)->order(['id' => 'desc'])->limit($limit)->page($page)->select();
  373. $count = ReportLogModel::where($map)->count();
  374. if ($count == 0) {
  375. exit(json_encode([
  376. 'code' => 1,
  377. 'msg' => "未查询到数据",
  378. ]));
  379. }
  380. exit(json_encode([
  381. 'code' => 0,
  382. 'msg' => "",
  383. 'count' => $count,
  384. 'data' => $list,
  385. ]));
  386. }
  387. }