PersonalServiceStickLogController.php 9.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296
  1. <?php
  2. namespace App\Admin\Controllers\Person;
  3. use App\Http\Controllers\Controller;
  4. use App\Models\MemberInfo;
  5. use App\Models\Resume;
  6. use App\Models\PersonalServiceStickLog;
  7. use Encore\Admin\Controllers\HasResourceActions;
  8. use Encore\Admin\Facades\Admin;
  9. use Encore\Admin\Form;
  10. use Encore\Admin\Grid;
  11. use Encore\Admin\Layout\Content;
  12. use Encore\Admin\Show;
  13. use Illuminate\Http\Request;
  14. use Illuminate\Support\Facades\Input;
  15. class PersonalServiceStickLogController extends Controller
  16. {
  17. use HasResourceActions;
  18. /**
  19. * Index interface.
  20. *
  21. * @param Content $content
  22. * @return Content
  23. */
  24. public function index(Content $content)
  25. {
  26. return $content
  27. ->header('简历置顶推广')
  28. ->description('列表')
  29. ->body($this->grid());
  30. }
  31. /**
  32. * Show interface.
  33. *
  34. * @param mixed $id
  35. * @param Content $content
  36. * @return Content
  37. */
  38. public function show($id, Content $content)
  39. {
  40. return $content
  41. ->header('Detail')
  42. ->description('description')
  43. ->body($this->detail($id));
  44. }
  45. /**
  46. * Edit interface.
  47. *
  48. * @param mixed $id
  49. * @param Content $content
  50. * @return Content
  51. */
  52. public function edit($id, Content $content)
  53. {
  54. return $content
  55. ->header('简历置顶推广')
  56. ->description('修改')
  57. ->body($this->editForm($id)->edit($id));
  58. }
  59. /**
  60. * Create interface.
  61. *
  62. * @param Content $content
  63. * @return Content
  64. */
  65. public function create(Content $content)
  66. {
  67. return $content
  68. ->header('简历置顶推广')
  69. ->description('新增')
  70. ->body(view('admin.service.sticklog')->with('createForm', $this->createForm()->render()));
  71. }
  72. /**
  73. * Make a grid builder.
  74. *
  75. * @return Grid
  76. */
  77. protected function grid()
  78. {
  79. $grid = new Grid(new PersonalServiceStickLog);
  80. $grid->model()->whereHas('member')->orderBy('created_at', 'desc');
  81. $grid->column('memberInfo.realname', '姓名')->width(200);;
  82. $grid->resume_uid('会员ID');
  83. $grid->days('推广天数')->width(100);
  84. $grid->addtime('开始时间')->display(function ($addtime) {
  85. return date('Y-m-d H:i:s', $addtime);
  86. });
  87. $grid->endtime('结束时间')->display(function ($endtime) {
  88. return date('Y-m-d H:i:s', $endtime);
  89. });
  90. $grid->disableExport();
  91. $grid->actions(function ($actions) {
  92. if (Admin::user()->can('person_promotion_stick_edit')) {
  93. $actions->disableEdit(false);
  94. }
  95. if (Admin::user()->can('person_promotion_stick_delete')) {
  96. $actions->disableDelete(false);
  97. }
  98. });
  99. //新增按钮
  100. if (Admin::user()->can('person_promotion_stick_create')) {
  101. $grid->disableCreateButton(false);
  102. }
  103. //批量删除
  104. if (Admin::user()->can('person_promotion_stick_delete')) {
  105. $grid->tools(function ($tools) {
  106. $tools->batch(function ($batch) {
  107. $batch->disableDelete(false);
  108. });
  109. });
  110. }
  111. $grid->filter(function ($filter) {
  112. $filter->disableIdFilter();
  113. $filter->like('memberInfo.realname', '姓名');
  114. $filter->equal('resume_uid', '会员ID');
  115. $filter->equal('resume_id', '简历ID');
  116. // $filter->equal('tag_id', '标签')->select(Category::categoryType('AIX_personaltag'));
  117. });
  118. return $grid;
  119. }
  120. /**
  121. * Make a show builder.
  122. *
  123. * @param mixed $id
  124. * @return Show
  125. */
  126. protected function detail($id)
  127. {
  128. $show = new Show(PersonalServiceStickLog::findOrFail($id));
  129. $show->id('ID');
  130. $show->resume_id('简历ID');
  131. $show->resume_uid('用户名')->as(function ($resume_uid) {
  132. $member_info = MemberInfo::where(['uid'=>$resume_uid])->first();
  133. if ($member_info) {
  134. return $member_info->realname;
  135. }
  136. return '';
  137. });
  138. $show->days('置顶天数')->as(function ($days) {
  139. return $days.' 天';
  140. });
  141. $show->points('消耗积分')->as(function ($points) {
  142. return $points.' 积分';
  143. });
  144. $show->addtime('开始时间')->as(function ($addtime) {
  145. return date('Y-m-d H:i:s', $addtime);
  146. });
  147. $show->endtime('结束时间')->as(function ($endtime) {
  148. return date('Y-m-d H:i:s', $endtime);
  149. });
  150. $show->created_at('创建时间');
  151. $show->updated_at('更新时间');
  152. $show->panel()
  153. ->tools(function ($tools) {
  154. $tools->disableEdit();
  155. $tools->disableDelete();
  156. });
  157. return $show;
  158. }
  159. /**
  160. * Make a form builder.
  161. *
  162. * @return Form
  163. */
  164. protected function form()
  165. {
  166. $form = new Form(new PersonalServiceStickLog);
  167. $form->display('ID');
  168. $form->display('Created at');
  169. $form->display('Updated at');
  170. return $form;
  171. }
  172. protected function editForm($id)
  173. {
  174. $form = new Form(new PersonalServiceStickLog);
  175. $form->display('id')->setWidth(2);
  176. $form->display('memberInfo.realname', '姓名')->setWidth(2)->with(function ($name) use ($id){
  177. $res = PersonalServiceStickLog::find($id);
  178. $MemberInfo = MemberInfo::where('uid',$res->resume_uid)->first();
  179. return $MemberInfo ? $MemberInfo->realname : '';
  180. });
  181. $form->display('resume_uid', '会员ID')->setWidth(2);
  182. $form->display('ptype', '推广方案')->setWidth(2)->with(function ($ptype) {
  183. return "简历置顶";
  184. });
  185. $form->hidden('endtime', '结束时间');
  186. $form->display('days', '推广天数')->setWidth(2);
  187. $form->hidden('days');
  188. $form->text('day', '延迟推广天数')->setWidth(2)->setMustMark();
  189. $form->display('dead_line', '推广期限')->setWidth(3);
  190. $form->saved(function (Form $form) {
  191. $resume = Resume::where(['id'=>$form->model()->resume_id])->first();
  192. $resume->stime = $form->model()->endtime;
  193. $resume->save();
  194. event_search_update(Resume::class, $resume->id.'', 'update');
  195. });
  196. return $form;
  197. }
  198. /**
  199. * @param $id
  200. * @return \Symfony\Component\HttpFoundation\Response
  201. */
  202. public function update($id)
  203. {
  204. if (!Input::get('day')) {
  205. admin_toastr('请填写延迟推广天数', 'error');
  206. return back();
  207. }
  208. $old_days = (int)Input::get('days');
  209. $day = (int)Input::get('day');
  210. $days = $old_days + $day;
  211. $data = [
  212. 'endtime' =>Input::get('endtime')+Input::get('day')*86400,
  213. 'days' =>$days,
  214. ];
  215. return $this->editForm($id)->update($id, $data);
  216. }
  217. protected function createForm()
  218. {
  219. $form = new \Encore\Admin\Widgets\Form();
  220. $form->text('id', '简历ID')->setWidth(3);
  221. $form->text('fullname', '真实姓名')->setWidth(3);
  222. $form->text('uid', '会员ID')->setWidth(3);
  223. $form->disableReset();
  224. $form->disableSubmit();
  225. return $form;
  226. }
  227. public function addStick(Request $request)
  228. {
  229. $data['resume_id'] = $request->resume_id;
  230. $data['resume_uid'] = $request->resume_uid;
  231. $data['days'] = $request->days;
  232. $where = array(
  233. array('resume_id','=',$data['resume_id']),
  234. array('endtime','>=',time()),
  235. );
  236. if (PersonalServiceStickLog::where($where)->first()) {
  237. //admin_error('error', '该简历正在执行此推广,请选择其他简历');
  238. admin_toastr('该简历正在执行此推广,请选择其他简历', 'error');
  239. return back();
  240. }
  241. if (!$data['resume_id'] || !$data['resume_uid']) {
  242. //admin_error('error', '请填写置顶的简历');
  243. admin_toastr('请填写置顶的简历', 'error');
  244. return back();
  245. }
  246. if (!$data['days']) {
  247. //admin_error('error', '请填写置顶的天数');
  248. admin_toastr('请填写置顶的天数', 'error');
  249. return back();
  250. }
  251. $data['points'] = 0;
  252. $data['addtime'] = time();
  253. $data['endtime'] = $data['addtime']+$data['days']*86400;
  254. if (!PersonalServiceStickLog::create($data)) {
  255. //admin_error('error', '保存失败');
  256. admin_toastr('保存失败', 'error');
  257. return back();
  258. }
  259. $resume = Resume::where(['id'=>$request->resume_id])->first();
  260. $resume->stick = 1;
  261. $resume->stime = strtotime("+".$data['days']." day");
  262. $resume->save();
  263. event_search_update(Resume::class, $request->resume_id, 'update');
  264. admin_toastr('保存成功', 'success');
  265. return redirect(admin_base_path().'/personal/promotion/personalstick');
  266. }
  267. }