Recruit.php 6.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232
  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. /**
  84. * 编辑
  85. */
  86. public function postForm()
  87. {
  88. $id = input('id/d, 0');
  89. $info = RecruitModel::find($id);
  90. if (empty($info)) {
  91. return '该招考不存在';
  92. }
  93. $list = RecruitPostModel::field(['id', 'code', 'name', 'number', 'limit', 'special'])
  94. ->where('recruit_id', $id)
  95. ->select();
  96. if ($list->isEmpty()) {
  97. $list = json_encode([['id' => 0, 'code' => '', 'name' => '', 'number' => 1, 'limit' => '{}', 'special' => '{}']]);
  98. }
  99. return view('', [
  100. 'info' => $info,
  101. 'list' => $list,
  102. ]);
  103. }
  104. public function editPost()
  105. {
  106. $data = input('post.');
  107. $recruit_id = $data['recruit_id'];
  108. $list = $data['list'];
  109. if (empty($recruit_id)) {
  110. ajax_return(1, '请选择招考场次');
  111. }
  112. if (empty($list)) {
  113. ajax_return(1, '请添加岗位');
  114. }
  115. //数据分离
  116. $insert = [];
  117. $update = [];
  118. $ids = RecruitPostModel::where('recruit_id', $recruit_id)->column('id');
  119. $data_ids = array_column($list, 'id');
  120. $delete_ids = array_diff($ids, $data_ids);
  121. $check = RecruitAppointInfoModel::whereIn('post_id', $delete_ids)->find();
  122. if (!empty($check)) {
  123. ajax_return(1, "删除的岗位已有人报名,无法删除,请刷新页面重新录入");
  124. }
  125. foreach ($list as $v) {
  126. if (empty($v['id'])) {
  127. $insert[] = $v;
  128. } else {
  129. if (!in_array($v['id'], $delete_ids))
  130. $update[] = $v;
  131. }
  132. }
  133. if (!empty($insert)) {
  134. foreach ($insert as $v) {
  135. $v['recruit_id'] = $recruit_id;
  136. RecruitPostModel::create($v);
  137. }
  138. }
  139. if (!empty($update)) {
  140. foreach ($update as $v) {
  141. RecruitPostModel::update($v);
  142. }
  143. }
  144. if (!empty($delete_ids)) {
  145. RecruitPostModel::destroy(array_values($delete_ids));
  146. }
  147. ajax_return();
  148. }
  149. /**
  150. * 列表
  151. */
  152. public function news()
  153. {
  154. return view('', [
  155. 'status_list' => RecruitNewsModel::STATUS,
  156. ]);
  157. }
  158. public function newsForm()
  159. {
  160. $id = input('id/d, 0');
  161. $info = RecruitNewsModel::with('recruit')->find($id)->toArray();
  162. return view('', [
  163. 'info' => $info,
  164. 'status_list' => RecruitNewsModel::STATUS,
  165. ]);
  166. }
  167. public function listNews()
  168. {
  169. $map = $this->dealEqualInput(['status','recruit_id'], $this->dealLikeInput(['title']));
  170. $list = RecruitNewsModel::with('recruit')
  171. ->where($map)
  172. ->order(['priority' => 'desc', 'id' => 'desc'])
  173. ->limit(input('limit'))
  174. ->page(input('page'))
  175. ->append(['status_text'])
  176. ->select();
  177. $count = RecruitNewsModel::where($map)->count();
  178. if ($count == 0) {
  179. ajax_return(1, '未查询到数据');
  180. }
  181. list_return($list, $count);
  182. }
  183. public function delNews()
  184. {
  185. $id_arr = input('id_arr/a');
  186. RecruitNewsModel::destroy($id_arr);
  187. ajax_return();
  188. }
  189. public function editNews()
  190. {
  191. $data = input('post.');
  192. try {
  193. validate(RecruitNewsValidate::class)->check($data);
  194. } catch (ValidateException $e) {
  195. ajax_return(1, $e->getError());
  196. }
  197. if (empty($data['id'])) {
  198. RecruitNewsModel::create($data);
  199. } else {
  200. RecruitNewsModel::update($data, ['id' => $data['id']]);
  201. }
  202. ajax_return();
  203. }
  204. }