Comjobs.php 17 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486
  1. <?php
  2. namespace app\mainapp\controller;
  3. use think\facade\Session;
  4. use app\mainapp\BaseController;
  5. use app\common\model\User as UserModel;
  6. use app\common\model\UserFollow as UserFollowModel;
  7. use app\common\model\Comjobs as ComjobsModel;
  8. use app\common\model\ComjobsCate as ComjobsCateModel;
  9. use app\common\model\ComjobsLog as ComjobsLogModel;
  10. use app\common\model\ComjobsStar as ComjobsStarModel;
  11. use app\common\model\ComjobsShare as ComjobsShareModel;
  12. use app\common\model\Param as ParamModel;
  13. use app\common\model\WorkerLog as WorkerLogModel;
  14. use app\common\model\Worker as WorkerModel;
  15. use app\common\model\Broker as BrokerModel;
  16. use app\common\model\ComjobsReport as ComjobsReportModel;
  17. use echowx\WxProgram;
  18. class Comjobs extends BaseController
  19. {
  20. // 报备信息
  21. public function setReport()
  22. {
  23. $comjobsid = input('comjobsid/d', 0);
  24. $comjobs = ComjobsModel::with('worker')->where('status','in','3,4')->where('id','=',$comjobsid)->findOrEmpty();
  25. if ($comjobs->isEmpty()){
  26. page_result(1, "招聘信息不存在。");
  27. }
  28. $userid = input('userid/d', 0);
  29. $brokerall = BrokerModel::where('userid','=',$userid)->where('status','=',1)->where('powerreport','=',1)->select();
  30. page_result(0, "", array(
  31. 'comjobs' => $comjobs,
  32. 'brokerall' => $brokerall,
  33. 'arrivetime' => date("Y-m-d", strtotime("+1 day"))
  34. ));
  35. }
  36. public function getUserList()
  37. {
  38. $ppage = input('ppage/d', 1);
  39. $psize = input('psize/d', 20);
  40. $map = array();
  41. $userid = input('userid/d', 0);
  42. $brokeridarr = BrokerModel::where('userid','=',$userid)->column('id');
  43. if (empty($brokeridarr)){
  44. page_result(1, "职业顾问信息不存在。");
  45. }
  46. $map[] = ['brokerid','IN',$brokeridarr];
  47. $searchval = input('searchval/s', "");
  48. if (!empty($searchval)){
  49. $map[] =['nickname|realname|mobile', 'like', '%'.$searchval.'%'];
  50. }
  51. $plist = UserModel::where($map)->order(['id'=>'desc'])->page($ppage)->limit($psize)->select();
  52. page_result(0, "", array(
  53. 'plist' => $plist,
  54. 'pstatus' => $psize > count($plist) ? 'noMore' : 'more'
  55. ));
  56. }
  57. public function disIdcard()
  58. {
  59. $picpath = input('picpath/s',"");
  60. $picpath = root_path()."public".$picpath;
  61. $idcard = aliyun_ocr_idcard( $picpath );
  62. if ($idcard==false){
  63. page_result(1, "身份证信息识别失败。");
  64. }
  65. page_result(0, "", array(
  66. 'idcard' => $idcard
  67. ));
  68. }
  69. public function addReport()
  70. {
  71. $comjobsid = input('comjobsid/d', 0);
  72. $comjobs = ComjobsModel::where('id','=',$comjobsid)->findOrEmpty();
  73. if ($comjobs->isEmpty()){
  74. page_result(1, "招聘信息不存在。");
  75. }
  76. $brokerid = input('brokerid/d', 0);
  77. $broker = BrokerModel::where('id','=',$brokerid)->findOrEmpty();
  78. if ($broker->isEmpty()){
  79. page_result(1, "职业顾问信息不存在。");
  80. }
  81. $data = array(
  82. 'comjobsid' => $comjobsid,
  83. 'workerid' => $comjobs->workerid,
  84. 'agentid' => $broker->agentid,
  85. 'brokerid' => $brokerid,
  86. 'realname' => input('realname/s', ""),
  87. 'mobile' => input('mobile/s', ""),
  88. 'idcard' => input('idcard/s', ""),
  89. 'arrivetime' => input('arrivetime/s', ""),
  90. 'status' => 1,
  91. 'remark' => input('remark/s', ""),
  92. 'retremark' => "",
  93. 'createtime' => date("Y-m-d H:i:s")
  94. );
  95. ComjobsReportModel::create($data);
  96. page_result(0, "", array());
  97. }
  98. // 招聘总列表
  99. public function pageComjobs()
  100. {
  101. $searchval = trim(input('searchval/s', ""));
  102. $map = array();
  103. if (!empty($searchval)){
  104. $map[] =['title', 'like', '%'.$searchval.'%'];
  105. }
  106. $catelist = ComjobsCateModel::field('id as value, title, priority')->where($map)->order(['priority'=>'desc','id'=>'desc'])
  107. ->select()->toArray();
  108. array_unshift( $catelist, array('value'=>0,'title'=>'全部') );
  109. $wtypelist = array(['value'=>0,'title'=>'全部'], ['value'=>1,'title'=>'月薪'], ['value'=>2,'title'=>'日薪'], ['value'=>3,'title'=>'时薪'], ['value'=>4,'title'=>'面议'] );
  110. $rectypelist = array(['value'=>0,'title'=>'全部'], ['value'=>1,'title'=>'普通招聘'], ['value'=>2,'title'=>'无忧聘'] );
  111. page_result(0, "", array(
  112. 'catelist' => $catelist,
  113. 'wtypelist' => $wtypelist,
  114. 'rectypelist' => $rectypelist,
  115. 'provincelist' => $this->provincelist
  116. ));
  117. }
  118. public function listComjobs()
  119. {
  120. $ppage = input('ppage/d', 1);
  121. $psize = input('psize/d', 20);
  122. $map = array();
  123. $map[] = ['createtime','<=',time()];
  124. $map[] = ['status','in','3,4'];
  125. $searchval = input('searchval/s', "");
  126. $whereor=[];
  127. if (!empty($searchval)){
  128. $whereor[] =['title', 'like', '%'.$searchval.'%'];
  129. $lmap= array();
  130. $lmap[]=['title', 'like', '%'.$searchval.'%'];
  131. $worklike=WorkerModel::where($lmap)->select();
  132. $wkids=array();
  133. foreach ($worklike as $lk=>$v){
  134. $wkids[]=$v["id"];
  135. }
  136. //var_dump($wkids);
  137. $whereor[] = ['workerid', 'in', $wkids];
  138. }
  139. $cateid = input('cateid/s', "");
  140. if (!empty($cateid)){
  141. $map[] = ['cateid', 'IN', $cateid];
  142. }
  143. $wtype = input('wtype/d', 0);
  144. if ($wtype!=0){
  145. $map[] = ['wtype', '=', $wtype];
  146. }
  147. $rectype = input('rectype/d', 0);
  148. if ($rectype!=0){
  149. $map[] = ['recruitment_cate', '=', $rectype];
  150. }
  151. $district = input('district/s', "");
  152. if (!empty($district)){
  153. $map[] = ['district', '=', $district];
  154. }
  155. $orderby = array('status'=>'asc', 'updatetime'=>'desc', 'id'=>'desc');
  156. $plist = ComjobsModel::with(['worker'])->where($map)->where(function ($q) use($whereor){$q->whereOr($whereor);})->order($orderby)->page($ppage)->limit($psize)->select();
  157. page_result(0, "", array(
  158. 'plist' => $plist,
  159. 'pstatus' => $psize > count($plist) ? 'noMore' : 'more'
  160. ));
  161. }
  162. // 招聘详情
  163. public function getComjobs()
  164. {
  165. $comjobsid = input('comjobsid/d', 0);
  166. $comjobs = ComjobsModel::with('worker')->where('status','in','3,4')->where('id','=',$comjobsid)->findOrEmpty();
  167. if (!empty($comjobs['company_name'])) {
  168. $comjobs['worker']['title'] = $comjobs['company_name'];
  169. $comjobs['worker']['city'] = $comjobs['city'];
  170. $comjobs['worker']['district'] = $comjobs['district'];
  171. $comjobs['worker']['address'] = $comjobs['address'];
  172. }
  173. if ($comjobs->isEmpty()){
  174. page_result(1, "招聘信息不存在。");
  175. }
  176. $comjobs->inc('volume', 1)->update();
  177. $comjobslist = ComjobsModel::with('worker')->where(['status'=>3,'workerid'=>$comjobs->workerid])->where('createtime','<=',time())->order(['updatetime'=>'desc','createtime'=>'desc','id'=>'desc'])->limit(5)->select();
  178. $userid = input('userid/d', 0);
  179. $comjobsstar = ComjobsStarModel::where(['userid'=>$userid,'comjobsid'=>$comjobsid])->count();
  180. $workerlog = WorkerLogModel::where(['workerid'=>$comjobs->workerid,'userid'=>$userid])->whereDay('createtime')->findOrEmpty();
  181. $comjobsshare = ComjobsShareModel::where(['status'=>1])->order(['priority'=>'desc','id'=>'desc'])->select();
  182. if ($workerlog->isEmpty()){
  183. WorkerLogModel::create([
  184. 'workerid' => $comjobs->workerid,
  185. 'userid' => $userid,
  186. 'ltotal' => 1,
  187. 'createtime' => date("Y-m-d")
  188. ]);
  189. }else{
  190. $workerlog->inc('ltotal', 1)->update();
  191. }
  192. if($userid==0){
  193. $brokertol = 0;
  194. }else{
  195. $brokertol = BrokerModel::where('userid','=',$userid)->where('status','=',1)->where('powerreport','=',1)->count();
  196. }
  197. page_result(0, "", array(
  198. 'comjobs' => $comjobs,
  199. 'comjobslist' => $comjobslist,
  200. 'comjobsstar' => $comjobsstar,
  201. 'comjobsshare' => $comjobsshare,
  202. 'brokertol' => $brokertol
  203. ));
  204. }
  205. // 招聘海报
  206. public function getComjobsImage()
  207. {
  208. $comjobsid = input('comjobsid/d', 0);
  209. $shareid = input('shareid/d',0);
  210. $userid = input('userid/d',0);
  211. $share = ComjobsShareModel::findOrEmpty($shareid);
  212. $user = UserModel::findOrEmpty($userid);
  213. $comjobs = ComjobsModel::findOrEmpty($comjobsid);
  214. if ($share->isEmpty() || $user->isEmpty() || $comjobs->isEmpty()){
  215. page_result(1, "招聘、海报或用户信息不存在");
  216. }
  217. $filename = $comjobsid."_".$userid."_".md5(time()).".jpg";
  218. $dst_comjobspic = root_path("public/attachment/comjobspic").$filename;
  219. $url_comjobspic = request()->domain()."/attachment/comjobspic/".$filename;
  220. $wxprogram = new WxProgram();
  221. $comjobspic = $wxprogram->wxacode_get_unlimited($comjobsid."&".$userid, "pages/comjobs/detail", 430, "attachment/comjobspic/".md5(time()).".jpg");
  222. image_copy_image($share->tilpic, $comjobspic, 500,1270,200,200,$dst_comjobspic);
  223. image_copy_image($url_comjobspic, $user->avatar, 50, 1040,90,90,$dst_comjobspic);
  224. $font = root_path("public/static/images")."msyh.ttf";
  225. $fnickname = subtext($user->nickname, 16);
  226. image_copy_text($dst_comjobspic, $fnickname, $font, 24, 0, 170, 1070, 0x00, 0x00, 0x00);
  227. $ftitle = subtext($comjobs->title, 20);
  228. image_copy_text($dst_comjobspic, $ftitle, $font, 20, 0, 60, 1200, 0x66, 0x66, 0x66);
  229. $texttil = "";
  230. if ($comjobs->wtype==1){
  231. $texttil .= $comjobs->bwagall."~".$comjobs->zwagall."元/月";
  232. }elseif($comjobs->wtype==2){
  233. $texttil .= $comjobs->bwagall."元/日";
  234. }elseif($comjobs->wtype==3){
  235. $texttil .= $comjobs->bwagall."元/时";
  236. }elseif($comjobs->wtype==4){
  237. $texttil .= "面议";
  238. }
  239. $texttil .= " | ".$comjobs->city." | ".$comjobs->agegroup;
  240. $texttil = subtext($texttil, 35);
  241. image_copy_text($dst_comjobspic, $texttil, $font, 20, 0, 60, 1255, 0x66, 0x66, 0x66);
  242. page_result(0, "", array(
  243. 'comjobspic' => $url_comjobspic
  244. ));
  245. }
  246. // public function getComjobsImage()
  247. // {
  248. // $comjobsid = input('comjobsid/d', 0);
  249. // $comjobs = ComjobsModel::where('status','in','3,4')->where('id','=',$comjobsid)->findOrEmpty()->toArray();
  250. // if (empty($comjobs)){
  251. // page_result(1, "招聘信息不存在。");
  252. // }
  253. // $userid = input('userid/d',0);
  254. // $user = UserModel::findOrEmpty($userid);
  255. // $filename = $comjobsid."_".$userid."_".md5(time()).".jpg";
  256. // $dst_comjobspic = root_path("public/attachment/comjobspic").$filename;
  257. // $url_comjobspic = request()->domain()."/attachment/comjobspic/".$filename;
  258. // $shareid = input('shareid/d',0);
  259. // $share = WorkerShareModel::findOrEmpty($shareid);
  260. // $bg_image = request()->domain() ."/static/images/comjobs_bg.jpg";
  261. // image_copy_image($bg_image, $user->avatar, 55,170,640,320,$dst_comjobspic);
  262. // $scene = $comjobsid."&".$userid;
  263. // $wxprogram = new WxProgram();
  264. // $comjobscode = $wxprogram->wxacode_get_unlimited($scene, "pages/comjobs/detail", 430, "attachment/comjobspic/".md5(time()).".jpg");
  265. // image_copy_image($url_comjobspic, $comjobscode, 285,940,180,180,$dst_comjobspic);
  266. // $font = root_path("public/static/images")."msyh.ttf";
  267. // $title = subtext($comjobs['title'], 12);
  268. // image_copy_text($dst_comjobspic, $title, $font, 32, 750, 580, 0x2c, 0xac, 0x3f);
  269. // $tags = @implode(" ", $comjobs['tags']);
  270. // $tags = subtext($tags, 12);
  271. // image_copy_text($dst_comjobspic, $tags, $font, 24, 740, 650, 0x03, 0x32, 0xa4);
  272. // if ($comjobs['wtype']==1){
  273. // $wagall = '薪资待遇:'. $comjobs['bwagall'].'-'.$comjobs['zwagall'].'元/月';
  274. // }elseif ($comjobs['wtype']==2){
  275. // $wagall = '薪资待遇:'. $comjobs['bwagall'].'元/日';
  276. // }elseif ($comjobs['wtype']==3){
  277. // $wagall = '薪资待遇:'. $comjobs['bwagall'].'元/时';
  278. // }elseif ($comjobs['wtype']==4){
  279. // $wagall = '薪资待遇:面议';
  280. // }
  281. // image_copy_text($dst_comjobspic, $wagall, $font, 24, 750, 710, 0x03, 0x32, 0xa4);
  282. // image_copy_text($dst_comjobspic, config('wxconfig.appName'), $font, 36, 750, 90, 0xff, 0xff, 0xff);
  283. // page_result(0, "", array(
  284. // 'comjobspic' => $url_comjobspic
  285. // ));
  286. // }
  287. // 招聘海报
  288. public function getComjobsCode()
  289. {
  290. $comjobsid = input('comjobsid/d', 0);
  291. $comjobs = ComjobsModel::where('status','in','3,4')->where('id','=',$comjobsid)->findOrEmpty()->toArray();
  292. if (empty($comjobs)){
  293. page_result(1, "招聘信息不存在。");
  294. }
  295. $userid = input('userid/d',0);
  296. $user = UserModel::findOrEmpty($userid);
  297. $filename = $comjobsid."_".$userid."_".md5(time()).".jpg";
  298. $dst_comjobspic = root_path("public/attachment/comjobspic").$filename;
  299. $url_comjobspic = request()->domain()."/attachment/comjobspic/".$filename;
  300. $bg_image = request()->domain() ."/static/images/comjobs_bg.jpg";
  301. image_copy_image($bg_image, $user->avatar, 55,170,640,320,$dst_comjobspic);
  302. $scene = $comjobsid."&".$userid;
  303. $wxprogram = new WxProgram();
  304. $comjobscode = $wxprogram->wxacode_get_unlimited($scene, "pages/comjobs/detail", 430, "attachment/comjobspic/".md5(time()).".jpg");
  305. image_copy_image($url_comjobspic, $comjobscode, 285,940,180,180,$dst_comjobspic);
  306. $font = root_path("public/static/images")."msyh.ttf";
  307. $title = subtext($comjobs['title'], 12);
  308. image_copy_text($dst_comjobspic, $title, $font, 32, 750, 580, 0x2c, 0xac, 0x3f,0x00);
  309. $tags = @implode(" ", $comjobs['tags']);
  310. $tags = subtext($tags, 12);
  311. image_copy_text($dst_comjobspic, $tags, $font, 24, 740, 650, 0x03, 0x32, 0xa4,0x00);
  312. if ($comjobs['wtype']==1){
  313. $wagall = '薪资待遇:'. $comjobs['bwagall'].'-'.$comjobs['zwagall'].'元/月';
  314. }elseif ($comjobs['wtype']==2){
  315. $wagall = '薪资待遇:'. $comjobs['bwagall'].'元/日';
  316. }elseif ($comjobs['wtype']==3){
  317. $wagall = '薪资待遇:'. $comjobs['bwagall'].'元/时';
  318. }elseif ($comjobs['wtype']==4){
  319. $wagall = '薪资待遇:面议';
  320. }
  321. image_copy_text($dst_comjobspic, $wagall, $font, 24, 750, 710, 0x03, 0x32, 0xa4,0x00);
  322. image_copy_text($dst_comjobspic, config('wxconfig.appName'), $font, 36, 750, 90, 0xff, 0xff, 0xff,0x00);
  323. page_result(0, "", array(
  324. 'comjobspic' => $url_comjobspic
  325. ));
  326. }
  327. // 关注招聘信息
  328. public function delStar()
  329. {
  330. $starid = input('starid/d', 0);
  331. $userid = input('userid/d', 0);
  332. $star = ComjobsStarModel::where(['id'=>$starid, 'userid'=>$userid])->findOrEmpty();
  333. if ($star->isEmpty()){
  334. page_result(1, "关注信息不存在或已被删除。");
  335. }
  336. $star->delete();
  337. page_result(0, "", array());
  338. }
  339. public function setComjobsStar()
  340. {
  341. $comjobsid = input('comjobsid/d', 0);
  342. $comjobs = ComjobsModel::findOrEmpty($comjobsid);
  343. if ($comjobs->isEmpty()){
  344. page_result(1, "招聘信息不存在");
  345. }
  346. $userid = input('userid/d', 0);
  347. $user = UserModel::findOrEmpty($userid);
  348. if ($user->isEmpty()){
  349. page_result(1, "用户信息不存在");
  350. }
  351. $star = ComjobsStarModel::where(['userid'=>$userid,'comjobsid'=>$comjobsid])->findOrEmpty();
  352. if ($star->isEmpty()){
  353. $star->save([
  354. 'comjobsid' => $comjobsid,
  355. 'userid' => $userid,
  356. 'createtime' => time()
  357. ]);
  358. page_result(0, "", array('comjobsstar'=>1));
  359. }else{
  360. $star->delete();
  361. page_result(0, "", array('comjobsstar'=>0));
  362. }
  363. }
  364. public function listStar()
  365. {
  366. $ppage = input('ppage/d', 1);
  367. $psize = input('psize/d', 20);
  368. $userid = input('userid/d', 0);
  369. $map[] = ['userid','=',$userid];
  370. $plist = ComjobsStarModel::with(['comjobs.worker'])->where($map)->order(['createtime'=>'desc','id'=>'desc'])->page($ppage)->limit($psize)->select();
  371. page_result(0, "", array(
  372. 'plist' => $plist,
  373. 'pstatus' => $psize > count($plist) ? 'noMore' : 'more'
  374. ));
  375. }
  376. // 报名招聘信息
  377. public function delLog()
  378. {
  379. $logid = input('logid/d', 0);
  380. $userid = input('userid/d', 0);
  381. $log = ComjobsLogModel::where(['id'=>$logid, 'userid'=>$userid])->findOrEmpty();
  382. if ($log->isEmpty()){
  383. page_result(1, "报名记录信息不存在或已被删除。");
  384. }
  385. $log->delete();
  386. page_result(0, "", array());
  387. }
  388. public function listLog()
  389. {
  390. $ppage = input('ppage/d', 1);
  391. $psize = input('psize/d', 20);
  392. $userid = input('userid/d', 0);
  393. $map[] = ['userid','=',$userid];
  394. $plist = ComjobsLogModel::with(['comjobs.worker'])->where($map)->order(['createtime'=>'desc','id'=>'desc'])->page($ppage)->limit($psize)->append(['status_text'])->select();
  395. page_result(0, "", array(
  396. 'plist' => $plist,
  397. 'pstatus' => $psize > count($plist) ? 'noMore' : 'more'
  398. ));
  399. }
  400. public function setComjobsLog()
  401. {
  402. $comjobsid = input('comjobsid/d', 0);
  403. $comjobs = ComjobsModel::findOrEmpty($comjobsid);
  404. if ($comjobs->isEmpty()){
  405. page_result(1, "招聘信息不存在");
  406. }
  407. if ( strtotime($comjobs->enddate)+86400 < time() ){
  408. page_result(1, "该招聘信息报名已截止,不能再报名了。");
  409. }
  410. $userid = input('userid/d', 0);
  411. $user = UserModel::findOrEmpty($userid);
  412. if ($user->isEmpty()){
  413. page_result(1, "用户信息不存在");
  414. }
  415. $log = ComjobsLogModel::where(['comjobsid'=>$comjobsid,'userid'=>$userid])->findOrEmpty();
  416. if ($log->isEmpty()){
  417. $log->save([
  418. 'workerid' => $comjobs->workerid,
  419. 'comjobsid' => $comjobsid,
  420. 'userid' => $userid,
  421. 'status' => 1,
  422. 'remark' => "",
  423. 'createtime' => time()
  424. ]);
  425. UserFollowModel::create([
  426. 'userid' => $userid,
  427. 'ftype' => "招聘报名",
  428. 'fstatus' => 1,
  429. 'remark' => $comjobs->title,
  430. 'createtime' => time()
  431. ]);
  432. page_result(0, "", array());
  433. }else{
  434. page_result(1, "你已报名过了,无需重复报名。");
  435. }
  436. }
  437. }