MemberController.php 7.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235
  1. <?php
  2. namespace App\Admin\Controllers\Recycle;
  3. use App\Http\Controllers\Controller;
  4. use App\Models\Company;
  5. use App\Models\Member;
  6. use App\Models\MemberInfo;
  7. use App\Models\Resume;
  8. use App\Repositories\MemberRepository;
  9. use App\Services\SubsiteService;
  10. use Encore\Admin\Controllers\HasResourceActions;
  11. use Encore\Admin\Grid;
  12. use Encore\Admin\Layout\Content;
  13. use Encore\Admin\Show;
  14. use App\Models\Subsite;
  15. use App\Models\Setmeal;
  16. use Encore\Admin\Facades\Admin as userAdmin;
  17. class MemberController extends Controller
  18. {
  19. use HasResourceActions;
  20. public $memberRepository;
  21. public $subsiteService;
  22. public function __construct(SubsiteService $subsiteService, MemberRepository $memberRepository)
  23. {
  24. $this->memberRepository = $memberRepository;
  25. $this->subsiteService = $subsiteService;
  26. }
  27. /**
  28. * Index interface.
  29. *
  30. * @param Content $content
  31. * @return Content
  32. */
  33. public function index(Content $content)
  34. {
  35. $grid = $this->grid()->render();
  36. return $content
  37. ->header('个人会员')
  38. ->description('列表')
  39. ->body(view('admin.recycle.member')->with('grid', $grid));
  40. }
  41. /**
  42. * Show interface.
  43. *
  44. * @param mixed $id
  45. * @param Content $content
  46. * @return Content
  47. */
  48. public function show($id, Content $content)
  49. {
  50. return $content
  51. ->header('个人会员')
  52. ->description(' ')
  53. ->body($this->detail($id));
  54. }
  55. /**
  56. * Make a show builder.
  57. *
  58. * @param mixed $id
  59. * @return Show
  60. */
  61. protected function detail($id)
  62. {
  63. $show = new Show(Member::withTrashed()->findOrFail($id));
  64. $show->id('ID');
  65. $show->username('用户名');
  66. $show->mobile('mobile', '手机号');
  67. $show->email('email', '邮箱');
  68. $show->image('avatars', '用户头像');
  69. $show->reg_address('注册地址');
  70. if(get_subsite_open()){
  71. $show->subsite_id('分站')->as(function ($subsite_id) {
  72. if ($subsite_id) {
  73. $Subsite = Subsite::find($subsite_id);
  74. return isset($Subsite->sitename) ? $Subsite->sitename : '未知';
  75. }
  76. return '总站';
  77. });
  78. }
  79. $show->created_at('创建时间');
  80. $show->deleted_at('删除时间');
  81. return $show;
  82. }
  83. /**
  84. * Make a grid builder.
  85. *
  86. * @return Grid
  87. */
  88. protected function grid()
  89. {
  90. $grid = new Grid(new Member);
  91. $grid->model()->onlyTrashed()->orderBy('deleted_at', 'DESC');
  92. $grid->id('ID');
  93. $grid->username('用户名')->width(200);;
  94. $grid->mobile('手机')->width(100);
  95. $grid->email('Email')->width(150);
  96. if(get_subsite_open()){
  97. $grid->subsite_id('所属分站')->display(function ($subsite_id) {
  98. if ($subsite_id) {
  99. $Subsite = Subsite::find($subsite_id);
  100. return isset($Subsite->sitename) ? $Subsite->sitename : '未知';
  101. }
  102. return '总站';
  103. })->width(150);
  104. }
  105. $grid->reg_time('注册时间')->display(function ($reg_time) {
  106. return date('Y-m-d H:i:s', $reg_time);
  107. })->sortable();
  108. $grid->deleted_at('删除时间')->display(function ($deleted_at) {
  109. return $deleted_at;
  110. })->sortable();
  111. $grid->actions(function ($actions) {
  112. if (userAdmin::user()->can('recycle_person_delete')) {
  113. $actions->disableDelete(false);
  114. }
  115. if (userAdmin::user()->can('recycle_person_restore')) {
  116. $actions->append("<button class='btn btn-primary btn-xs restore_person' data-id=" . $actions->row['id'] . "><i class='fa fa-audio-description'></i>还原</button>");
  117. }
  118. });
  119. if (userAdmin::user()->can('recycle_person_restore') || userAdmin::user()->can('recycle_person_delete')) {
  120. $grid->tools(function ($tools) {
  121. if (userAdmin::user()->can('recycle_person_restore')) {
  122. $but = <<<EOT
  123. <div class="btn-group" data-toggle="buttons">
  124. <label class="btn btn-sm grid-batch-restore btn-primary" title="还原">
  125. <i class="fa fa-audio-description"></i>
  126. <input type="radio" class="user-gender">还原
  127. </label>
  128. </div>
  129. EOT;
  130. $tools->append($but);
  131. }
  132. if (userAdmin::user()->can('recycle_person_delete')) {
  133. $tools->batch(function ($batch) {
  134. $batch->disableDelete(false);
  135. });
  136. }
  137. });
  138. } else {
  139. $grid->disableRowSelector();
  140. }
  141. $grid->filter(function ($filter) {
  142. $filter->column(1/2, function ($filter) {
  143. $filter->equal('id', '会员ID');
  144. $filter->like('username', '用户名');
  145. $filter->between('created_at', '注册时间')->datetime();
  146. });
  147. $filter->column(1/2, function ($filter) {
  148. $filter->like('email', 'Email');
  149. $filter->like('mobile', '手机号码');
  150. });
  151. });
  152. return $grid;
  153. }
  154. //还原个人。---meminfo需要加软删除。
  155. public function restore($id)
  156. {
  157. $ids = array();
  158. if ($id) {
  159. $ids = explode(',', $id);
  160. }
  161. if (!$ids) {
  162. return admin_toastr('请勾选需要还原的个人会员', 'error');
  163. }
  164. \DB::beginTransaction();
  165. try {
  166. Member::whereIn('id', $ids)->restore();
  167. MemberInfo::whereIn('uid', $ids)->restore();
  168. Resume::whereIn('uid', $ids)->restore();
  169. $data = [
  170. 'status' => true,
  171. 'message' => '还原成功!',
  172. ];
  173. $condition = [['whereIn','uid', $ids]];
  174. event_search_update(Resume::class, $condition, 'update');
  175. \DB::commit();
  176. return response()->json($data);
  177. } catch (\Exception $e) {
  178. \DB::rollback();
  179. $data = [
  180. 'status' => false,
  181. 'message' => $e->getMessage(),
  182. ];
  183. return response()->json($data);
  184. }
  185. }
  186. public function destroy($id)
  187. {
  188. $ids = array();
  189. if ($id) {
  190. $ids = explode(',', $id);
  191. }
  192. if (!$ids) {
  193. return admin_toastr('请勾选需要删除的个人会员', 'error');
  194. }
  195. \DB::beginTransaction();
  196. try {
  197. Member::withTrashed()->whereIn('id', $ids)->forceDelete();
  198. MemberInfo::withTrashed()->whereIn('uid', $ids)->forceDelete();
  199. Resume::withTrashed()->whereIn('uid', $ids)->forceDelete();
  200. $data = [
  201. 'status' => true,
  202. 'message' => '删除成功!',
  203. ];
  204. \DB::commit();
  205. return response()->json($data);
  206. } catch (\Exception $e) {
  207. \DB::rollback();
  208. $data = [
  209. 'status' => false,
  210. 'message' => '删除失败!',
  211. ];
  212. return response()->json($data);
  213. }
  214. }
  215. }