SetmealController.php 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252
  1. <?php
  2. namespace App\Admin\Controllers\Company;
  3. use App\Http\Controllers\Controller;
  4. use App\Models\Setmeal;
  5. use Encore\Admin\Auth\Permission;
  6. use Encore\Admin\Controllers\HasResourceActions;
  7. use Encore\Admin\Facades\Admin;
  8. use Encore\Admin\Form;
  9. use Encore\Admin\Grid;
  10. use Encore\Admin\Layout\Content;
  11. use Encore\Admin\Show;
  12. use Illuminate\Support\Facades\Cache;
  13. use Illuminate\Validation\Rule;
  14. class SetmealController extends Controller
  15. {
  16. use HasResourceActions;
  17. /**
  18. * Index interface.
  19. *
  20. * @param Content $content
  21. * @return Content
  22. */
  23. public function index(Content $content)
  24. {
  25. Permission::check('setmeal_manager_category');
  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('会员套餐')
  42. ->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($this->form());
  71. }
  72. /**
  73. * Make a grid builder.
  74. *
  75. * @return Grid
  76. */
  77. protected function grid()
  78. {
  79. Permission::check('setmeal_manager_category');
  80. $grid = new Grid(new Setmeal);
  81. $grid->id('ID');
  82. $grid->setmeal_name('名称');
  83. $grid->display('会员显示')->display(function ($display) {
  84. return $display==1?"显示":'不显示';
  85. });
  86. $grid->apply('允许申请')->display(function ($apply) {
  87. return $apply==1?"允许":'不允许';
  88. });
  89. $grid->expense('服务价')->display(function ($expense) {
  90. return $expense==0?"免费":$expense;
  91. });
  92. $grid->days('期限')->display(function ($days) {
  93. return $days==0?"不限制":$days;
  94. });
  95. if (Admin::user()->can('setmeal_manager_category_add')) {
  96. $grid->disableCreateButton(false);
  97. }
  98. $grid->show_order('排序');
  99. $grid->disableFilter();
  100. $grid->actions(function ($actions) {
  101. if (Admin::user()->can('setmeal_manager_category_edit')) {
  102. $actions->disableEdit(false);
  103. }
  104. if ($actions->row['id'] != 1) {
  105. if (Admin::user()->can('setmeal_manager_category_delete')) {
  106. $actions->disableDelete(false);
  107. }
  108. }
  109. });
  110. return $grid;
  111. }
  112. /**
  113. * Make a show builder.
  114. *
  115. * @param mixed $id
  116. * @return Show
  117. */
  118. protected function detail($id)
  119. {
  120. $show = new Show(Setmeal::findOrFail($id));
  121. $show->setmeal_name('名称');
  122. $show->display('会员显示')->as(function ($display) {
  123. return $display==1?"显示":'不显示';
  124. });
  125. $show->apply('会员显示')->as(function ($apply) {
  126. return $apply==1?"允许":'不允许';
  127. });
  128. $show->expense('服务价')->as(function ($expense) {
  129. return $expense==0?"免费":$expense;
  130. });
  131. $show->days('期限')->as(function ($days) {
  132. return $days==0?"不限制":$days;
  133. });
  134. $show->jobs_meanwhile('职位最大并发数');
  135. $show->refresh_jobs_free('每天免费刷新职位次数');
  136. $show->download_resume('下载简历');
  137. $show->jobfair_num('招聘会场次');
  138. $show->download_resume_max('每天下载简历数上限');
  139. $show->discount_download_resume('下载简历增值包折扣');
  140. $show->discount_sms('短信增值包折扣');
  141. $show->discount_stick('职位置顶折扣');
  142. $show->discount_emergency('职位紧急折扣');
  143. $show->discount_tpl('企业模板折扣');
  144. $show->discount_auto_refresh_jobs('职位预约刷新折扣');
  145. $show->show_order('显示顺序');
  146. $show->set_sms('赠送短信条数');
  147. $show->set_points('赠送积分');
  148. $show->show_apply_contact('收到简历的联系方式免费查看');
  149. $show->apply('允许会员申请此服务');
  150. $show->setmeal_img('修改套餐图标(png格式)')->image();
  151. $show->added('其他说明)');
  152. return $show;
  153. }
  154. /**
  155. * Make a form builder.
  156. *
  157. * @return Form
  158. */
  159. protected function form()
  160. {
  161. Permission::check('setmeal_manager_category_add');
  162. $form = new Form(new Setmeal);
  163. $form->display('id');
  164. $form->text('setmeal_name', '套餐名称')->rules(['required','unique:setmeals'], ['required'=>'请填写套餐名称','unique' => '套餐名称已经存在']);
  165. $form->number('days', '有效时间')->min(0)->rules('required', ['required'=>'请填写有效时间']);
  166. $form->number('expense', '价格')->min(0)->rules('required', ['required'=>'请填写套餐价格']);
  167. $form->number('jobs_meanwhile', '职位最大发布数')->min(0)->rules('required', ['required'=>'请填写职位最大发布数']);
  168. $form->number('refresh_jobs_free', '每天免费刷新职位次数')->min(0)->rules('required', ['required'=>'请填写每天免费刷新职位数']);
  169. $form->number('download_resume', '下载简历')->min(0)->rules('required', ['required'=>'请填写下载简历数']);
  170. $form->number('jobfair_num', '招聘会场次')->min(0)->rules('required', ['required'=>'请填写招聘会场次']);
  171. $form->number('download_resume_max', '每天下载简历数上限')->min(0)->rules('required', ['required'=>'请填写每天下载简历数上限']);
  172. $form->number('discount_download_resume', '下载简历增值包折扣')->min(0)->max(9)->rules('required', ['required'=>'请填写下载简历增值包折扣'])->help('请填写0~9之间的数字,0表示无折扣');
  173. $form->number('discount_sms', '短信增值包折扣')->min(0)->max(9)->rules('required', ['required'=>'请填写短信增值包折扣'])->help('请填写0~9之间的数字,0表示无折扣');
  174. $form->number('discount_stick', '职位置顶折扣')->min(0)->max(9)->rules('required', ['required'=>'请填写职位置顶折扣'])->help('请填写0~9之间的数字,0表示无折扣');
  175. $form->number('discount_emergency', '职位紧急折扣')->min(0)->max(9)->rules('required', ['required'=>'请填写职位紧急折扣'])->help('请填写0~9之间的数字,0表示无折扣');
  176. $form->number('discount_tpl', '企业模板折扣')->min(0)->max(9)->rules('required', ['required'=>'请填写企业模板折扣'])->help('请填写0~9之间的数字,0表示无折扣');
  177. $form->number('discount_auto_refresh_jobs', '职位预约刷新折扣')->min(0)->max(9)->rules('required', ['required'=>'请填写职位预约刷新折扣'])->help('请填写0~9之间的数字,0表示无折扣');
  178. $form->number('show_order', '显示顺序');
  179. $form->number('set_sms', '赠送短信条数')->rules('required', ['required'=>'请填写赠送短信条数']);
  180. $form->number('set_points', '赠送积分')->rules('required', ['required'=>'请填写赠送积分']);
  181. $form->switch('show_apply_contact', '收到简历的联系方式免费查看');
  182. $form->switch('apply', '允许会员申请此服务');
  183. $form->switch('display', '是否显示');
  184. $form->image('setmeal_img', '修改套餐图标(png格式)')->removable()->rules('required', ['required'=>'请上传图标'])->setMustMark();
  185. $form->text('added', '其他说明)');
  186. return $form;
  187. }
  188. protected function editform($id)
  189. {
  190. Permission::check('setmeal_manager_category_edit');
  191. $form = new Form(new Setmeal);
  192. $form->display('id');
  193. $form->text('setmeal_name', '套餐名称')->rules(['required',Rule::unique('setmeals')->ignore($id)], ['required'=>'请填写套餐名称','unique' => '套餐名称已经存在']);
  194. //2019.7.1 杨亚倩 更改免费也有到期时间
  195. $form->number('days', '有效时间')->min(0)->rules('required', ['required' => '请填写有效时间'])->help('0表示无限制');
  196. $form->number('expense', '价格')->min(0)->rules('required', ['required'=>'请填写套餐价格']);
  197. $form->number('jobs_meanwhile', '职位最大发布数')->min(0)->rules('required', ['required'=>'请填写职位最大发布数']);
  198. $form->number('refresh_jobs_free', '每天免费刷新职位次数')->min(0)->rules('required', ['required'=>'请填写每天免费刷新职位数']);
  199. $form->number('download_resume', '下载简历')->min(0)->rules('required', ['required'=>'请填写下载简历数']);
  200. $form->number('jobfair_num', '招聘会场次')->min(0)->rules('required', ['required'=>'请填写招聘会场次']);
  201. $form->number('download_resume_max', '每天下载简历数上限')->min(0)->rules('required', ['required'=>'请填写每天下载简历数上限']);
  202. $form->number('discount_download_resume', '下载简历增值包折扣')->min(0)->max(9)->rules('required', ['required'=>'请填写下载简历增值包折扣'])->help('请填写0~9之间的数字,0表示无折扣');
  203. $form->number('discount_sms', '短信增值包折扣')->min(0)->max(9)->rules('required', ['required'=>'请填写短信增值包折扣'])->help('请填写0~9之间的数字,0表示无折扣');
  204. $form->number('discount_stick', '职位置顶折扣')->min(0)->max(9)->rules('required', ['required'=>'请填写职位置顶折扣'])->help('请填写0~9之间的数字,0表示无折扣');
  205. $form->number('discount_emergency', '职位紧急折扣')->min(0)->max(9)->rules('required', ['required'=>'请填写职位紧急折扣'])->help('请填写0~9之间的数字,0表示无折扣');
  206. $form->number('discount_tpl', '企业模板折扣')->min(0)->max(9)->rules('required', ['required'=>'请填写企业模板折扣'])->help('请填写0~9之间的数字,0表示无折扣');
  207. $form->number('discount_auto_refresh_jobs', '职位预约刷新折扣')->min(0)->max(9)->rules('required', ['required'=>'请填写职位预约刷新折扣'])->help('请填写0~9之间的数字,0表示无折扣');
  208. $form->number('show_order', '显示顺序');
  209. $form->number('set_sms', '赠送短信条数')->rules('required', ['required'=>'请填写赠送短信条数']);
  210. $form->number('set_points', '赠送积分')->rules('required', ['required'=>'请填写赠送积分']);
  211. $form->switch('show_apply_contact', '收到简历的联系方式免费查看');
  212. $form->switch('apply', '允许会员申请此服务');
  213. $form->switch('display', '是否显示');
  214. $form->image('setmeal_img', '修改套餐图标(png格式)')->removable()->rules('required', ['required'=>'请上传图标'])->setMustMark();
  215. $form->text('added', '其他说明)');
  216. $form->saved(function (){
  217. $redis = Cache::getRedis();
  218. $keys = $redis->keys("*aix_cache:setmeals*");
  219. foreach ($keys as $key) {
  220. $redis->del($key);
  221. }
  222. });
  223. return $form;
  224. }
  225. public function update($id)
  226. {
  227. if (request()->has(Form\Field::FILE_DELETE_FLAG)) {
  228. return $this->editForm($id)->update($id);
  229. }
  230. return $this->editform($id)->update($id);
  231. }
  232. }