Recruit.php 7.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282
  1. <?php
  2. namespace app\admin\controller;
  3. use app\admin\AdminBaseController;
  4. use app\admin\validate\RecruitNewsValidate;
  5. use app\common\model\RecruitAppointInfoModel;
  6. use app\common\model\RecruitModel;
  7. use app\common\model\RecruitNewsModel;
  8. use app\common\model\RecruitPostModel;
  9. use think\exception\ValidateException;
  10. class Recruit extends AdminBaseController
  11. {
  12. /**
  13. * 列表
  14. */
  15. public function index()
  16. {
  17. return view('', [
  18. 'status_list' => RecruitModel::STATUS_INT,
  19. ]);
  20. }
  21. public function listRecruit()
  22. {
  23. $map = $this->dealEqualInput(['status'], $this->dealLikeInput(['name']));
  24. $list = RecruitModel::where($map)
  25. ->order(['priority' => 'desc', 'update_time' => 'desc'])
  26. ->limit(input('limit'))
  27. ->page(input('page'))
  28. ->append(['status_text'])
  29. ->select();
  30. $count = RecruitModel::where($map)->count();
  31. if ($count == 0) {
  32. ajax_return(1, '未查询到数据');
  33. }
  34. list_return($list, $count);
  35. }
  36. public function delRecruit()
  37. {
  38. $id_arr = input('id_arr/a');
  39. RecruitModel::destroy($id_arr);
  40. ajax_return();
  41. }
  42. /**
  43. * 编辑
  44. */
  45. public function recruitForm()
  46. {
  47. $id = input('id/d', 0);
  48. $info = RecruitModel::find($id);
  49. return view('', [
  50. 'info' => $info,
  51. 'forms' => RecruitModel::FORMS,
  52. 'status_list' => RecruitModel::STATUS_INT,
  53. 'status_step_list' => RecruitModel::STATUS_STEP,
  54. 'status_ticket_type_list' => RecruitModel::STATUS_TICKET_TYPE,
  55. 'status_ticket_status_list' => RecruitModel::STATUS_TICKET_STATUS,
  56. 'status_score_list' => RecruitModel::STATUS_SCORE,
  57. ]);
  58. }
  59. public function editRecruit()
  60. {
  61. $data = input('post.');
  62. if (empty($data['forms'])) {
  63. ajax_return(1, '请选择表单模块');
  64. }
  65. if (empty($data['introduction'])) {
  66. ajax_return(1, '请输入招考正文');
  67. }
  68. if ($data['pen_confirm'] == RecruitModel::STATUS_YES) {
  69. if (empty($data['pen_confirm_start']) || empty($data['pen_confirm_end'])) {
  70. ajax_return(1, '请选择确认笔试时间');
  71. }
  72. }
  73. $data['step'] = array_values($data['step']);
  74. $data = del_empty($data);
  75. if (empty($data['id'])) {
  76. $data['name_en'] = uniqid();
  77. RecruitModel::create($data);
  78. } else {
  79. RecruitModel::update($data, ['id' => $data['id']]);
  80. }
  81. ajax_return();
  82. }
  83. public function postList()
  84. {
  85. $id = input('id/d', 0);;
  86. $info = RecruitModel::find($id);
  87. if (empty($info)) {
  88. return '该招考不存在';
  89. }
  90. return view('', [
  91. 'id' => $id,
  92. ]);
  93. }
  94. public function listPost()
  95. {
  96. $id = input('id/d', 0);;
  97. $map = [
  98. ['recruit_id', '=', $id],
  99. ];
  100. $list = RecruitPostModel::where($map)
  101. ->limit(input('limit'))
  102. ->page(input('page'))
  103. ->select();
  104. $count = RecruitPostModel::where($map)->count();
  105. if ($count == 0) {
  106. ajax_return(1, '未查询到数据');
  107. }
  108. list_return($list, $count);
  109. }
  110. /**
  111. * 编辑
  112. */
  113. public function postForm()
  114. {
  115. $limit_condition = [
  116. ['text' => '不限', 'value' => ''],
  117. ['text' => '专科及以上', 'value' => '专科'],
  118. ['text' => '本科及以上', 'value' => '本科'],
  119. ['text' => '硕士及以上', 'value' => '硕士'],
  120. ['text' => '博士及以上', 'value' => '博士'],
  121. ];
  122. $limit_degree = [
  123. ['text' => '不限', 'value' => ''],
  124. ['text' => '学士学位及以上', 'value' => '学士学位'],
  125. ['text' => '硕士学位及以上', 'value' => '硕士学位'],
  126. ['text' => '博士学位及以上', 'value' => '博士学位'],
  127. ];
  128. $data = [
  129. 'limit_condition' => $limit_condition,
  130. 'limit_degree' => $limit_degree,
  131. ];
  132. $recruit_id = input('recruit_id/d', 0);
  133. if (!empty($recruit_id)) {
  134. $data['info'] = [
  135. 'recruit_id' => $recruit_id,
  136. 'limit' => [],
  137. 'special' => [],
  138. ];
  139. return view('', $data);
  140. }
  141. $id = input('id/d', 0);
  142. $info = RecruitPostModel::where('id', $id)
  143. ->find();
  144. $info['limit'] = empty($info['limit']) ? [] : json_decode($info['limit'], true);
  145. $info['special'] = empty($info['special']) ? [] : json_decode($info['special'], true);
  146. $data['info'] = $info;
  147. return view('', $data);
  148. }
  149. public function editPost()
  150. {
  151. //基础数据
  152. $post = input('post.');
  153. $data = [
  154. 'recruit_id' => $post['recruit_id'],
  155. 'code' => $post['code'],
  156. 'name' => $post['name'],
  157. 'number' => $post['number'],
  158. ];
  159. //限制条件
  160. $limit = [];
  161. foreach ($post['limit'] as $k => $v) {
  162. if (!empty($v)) {
  163. $limit[$k] = $v;
  164. }
  165. }
  166. $data['limit'] = json_encode($limit);
  167. //加分项目
  168. $data['special'] = '[]';
  169. if (!empty($post['special_list'])) {
  170. $data['special'] = json_encode(['multi' => $post['special']['multi'], 'list' => $post['special_list']]);
  171. }
  172. //数据库操作
  173. if (empty($post['id'])) {
  174. RecruitPostModel::create($data);
  175. } else {
  176. RecruitPostModel::update($data, ['id' => $post['id']]);
  177. }
  178. ajax_return();
  179. }
  180. public function delPost()
  181. {
  182. $id = input('id/d', 0);
  183. $check = RecruitAppointInfoModel::whereIn('post_id', $id)->find();
  184. if (!empty($check)) {
  185. ajax_return(1, "删除的岗位已有人报名,无法删除");
  186. }
  187. RecruitPostModel::destroy($id);
  188. ajax_return();
  189. }
  190. /**
  191. * 列表
  192. */
  193. public function news()
  194. {
  195. return view('', [
  196. 'status_list' => RecruitNewsModel::STATUS,
  197. ]);
  198. }
  199. public function newsForm()
  200. {
  201. $id = input('id/d', 0);
  202. $info = RecruitNewsModel::with('recruit')->find($id);
  203. return view('', [
  204. 'info' => $info,
  205. 'status_list' => RecruitNewsModel::STATUS,
  206. ]);
  207. }
  208. public function listNews()
  209. {
  210. $map = $this->dealEqualInput(['status', 'recruit_id'], $this->dealLikeInput(['title']));
  211. $list = RecruitNewsModel::with('recruit')
  212. ->where($map)
  213. ->order(['priority' => 'desc', 'id' => 'desc'])
  214. ->limit(input('limit'))
  215. ->page(input('page'))
  216. ->append(['status_text'])
  217. ->select();
  218. $count = RecruitNewsModel::where($map)->count();
  219. if ($count == 0) {
  220. ajax_return(1, '未查询到数据');
  221. }
  222. list_return($list, $count);
  223. }
  224. public function delNews()
  225. {
  226. $id_arr = input('id_arr/a');
  227. RecruitNewsModel::destroy($id_arr);
  228. ajax_return();
  229. }
  230. public function editNews()
  231. {
  232. $data = input('post.');
  233. try {
  234. validate(RecruitNewsValidate::class)->check($data);
  235. } catch (ValidateException $e) {
  236. ajax_return(1, $e->getError());
  237. }
  238. if (empty($data['id'])) {
  239. RecruitNewsModel::create($data);
  240. } else {
  241. RecruitNewsModel::update($data, ['id' => $data['id']]);
  242. }
  243. ajax_return();
  244. }
  245. }