InfoController.php 8.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224
  1. <?php
  2. /**
  3. * 用户表
  4. * @author system
  5. * @version 1.0
  6. * @date 2017-05-30 12:16:56
  7. *
  8. */
  9. namespace App\Http\Controllers\Admin\User;
  10. use App\Http\Controllers\Admin\Controller;
  11. use App\Models\BaseAttachmentModel;
  12. use App\Models\MeetInfoModel;
  13. use App\Models\SearchInfoModel;
  14. use App\Models\Suggest;
  15. use App\Models\SupportDreamModel;
  16. use App\Models\SystemInfoModel;
  17. use App\Models\UserBanksModel;
  18. use App\Models\UserCareDream;
  19. use App\Models\UserCashOut;
  20. use App\Models\UserInfoModel;
  21. use Illuminate\Http\Request;
  22. use App\Repositories\Base\Criteria\OrderBy;
  23. use App\Repositories\User\Criteria\MultiWhere;
  24. use App\Repositories\User\InfoRepository;
  25. class InfoController extends Controller
  26. {
  27. private $repository;
  28. public function __construct(InfoRepository $repository) {
  29. if(!$this->repository) $this->repository = $repository;
  30. }
  31. function index(Request $reqeust) {
  32. $search['keyword'] = $reqeust->input('keyword');
  33. $query = $this->repository->pushCriteria(new MultiWhere($search));
  34. $request = $reqeust->all();
  35. if(isset($request['sort_field']) && $request['sort_field'] && isset($request['sort_field_by'])) {
  36. $query = $query->pushCriteria(new OrderBy($request['sort_field'],$request['sort_field_by']));
  37. }
  38. $list = $query->paginate();
  39. foreach ($list as $item) {
  40. $dream_number = count($item->dreams);
  41. $score_array = SupportDreamModel::where('user_id',$item->id)->select('score')->get()->toArray();
  42. $coin_array = $item->dreams->toArray();
  43. if (count($coin_array) > 0) {
  44. $coin_list = array_column($coin_array,'get_coin');
  45. $get_coin = array_sum($coin_list);
  46. }else{
  47. $get_coin = 0;
  48. }
  49. if (count($score_array) > 0) {
  50. $score_list = array_column($score_array,'score');
  51. $sup_score = array_sum($score_list);
  52. }else{
  53. $sup_score = 0;
  54. }
  55. $item->dream_number = $dream_number; //梦想数量
  56. $item->sup_score = $sup_score; //捐赠分数
  57. $item->get_coin = $get_coin; //收到的梦想币
  58. }
  59. return view('admin.user.info.index',compact('list'));
  60. }
  61. function check(Request $reqeust) {
  62. $request = $reqeust->all();
  63. $search['keyword'] = $reqeust->input('keyword');
  64. $orderby = array();
  65. if(isset($request['sort_field']) && $request['sort_field'] && isset($request['sort_field_by'])) {
  66. $orderby[$request['sort_field']] = $request['sort_field_by'];
  67. }
  68. $list = $this->repository->search($search,$orderby);
  69. return view('admin.user.info.check',compact('list'));
  70. }
  71. /**
  72. * 添加
  73. *
  74. */
  75. public function create(Request $reqeust)
  76. {
  77. if($reqeust->method() == 'POST') {
  78. $validator = \Validator::make($reqeust->all(),
  79. [
  80. 'data.address' => 'required',
  81. 'data.phone' => 'required|unique:user_info,phone',
  82. 'data.sex' => 'required',
  83. 'data.emotion' => 'required',
  84. // 'avatar' => 'dimensions:width=100,height=100'
  85. ],
  86. [
  87. 'data.address.required' => '请选择省市区地址',
  88. 'data.sex.required' => '请选择性别',
  89. 'data.phone.unique' => '电话号码唯一',
  90. 'data.emotion.required' => '请选择情感状态',
  91. ]
  92. );
  93. if($validator->fails()){
  94. $url[] = array('url'=>U( 'User/Info/index'),'title'=>'返回列表');
  95. return $this->showWarning($validator->messages()->all(),$url);
  96. }
  97. $avatar = request('avatar');
  98. $data = (array) request('data');
  99. $data['avatar'] = getenv('APP_URL').$avatar;
  100. $id = $this->repository->create($data);
  101. if($id) {
  102. $url[] = array('url'=>U( 'User/Info/index'),'title'=>'返回列表');
  103. $url[] = array('url'=>U( 'User/Info/create'),'title'=>'继续添加');
  104. $this->showMessage('添加成功',$url);
  105. }else{
  106. $url[] = array('url'=>U( 'User/Info/index'),'title'=>'返回列表');
  107. return $this->showWarning('添加失败',$url);
  108. }
  109. }
  110. return view('admin.user.info.edit');
  111. }
  112. /**
  113. * 保存修改
  114. */
  115. private function _createSave(){
  116. $avatar = request('avatar');
  117. $data = (array) request('data');
  118. $data['avatar'] = getenv('APP_URL').$avatar;
  119. $id = $this->repository->create($data);
  120. if($id) {
  121. $url[] = array('url'=>U( 'User/Info/index'),'title'=>'返回列表');
  122. $url[] = array('url'=>U( 'User/Info/create'),'title'=>'继续添加');
  123. $this->showMessage('添加成功',$url);
  124. }else{
  125. $url[] = array('url'=>U( 'User/Info/index'),'title'=>'返回列表');
  126. return $this->showWarning('添加失败',$url);
  127. }
  128. }
  129. /**
  130. *
  131. * 修改
  132. *
  133. *
  134. */
  135. public function update(Request $reqeust) {
  136. if($reqeust->method() == 'POST') {
  137. return $this->_updateSave();
  138. }
  139. $data = $this->repository->find($reqeust->get('id'));
  140. return view('admin.user.info.edit',compact('data'));
  141. }
  142. /**
  143. * 保存修改
  144. */
  145. private function _updateSave() {
  146. $old_avatar = $this->repository->find(request('id'))->avatar;
  147. $data = (array) request('data');
  148. if (!empty(request('avatar'))) {
  149. if (is_file('.'.str_replace(getenv('APP_URL'),'',$old_avatar))) {
  150. unlink('.'.str_replace(getenv('APP_URL'),'',$old_avatar));
  151. }
  152. BaseAttachmentModel::where('url',$old_avatar)->delete();
  153. $data['avatar'] = getenv('APP_URL').request('avatar');
  154. }
  155. $ok = $this->repository->update(request('id'),$data);
  156. if($ok) {
  157. $url[] = array('url'=>U( 'User/Info/index'),'title'=>'返回列表');
  158. return $this->showMessage('操作成功',urldecode(request('_referer')));
  159. }else{
  160. $url[] = array('url'=>U( 'User/Info/index'),'title'=>'返回列表');
  161. return $this->showWarning('操作失败',$url);
  162. }
  163. }
  164. public function view(Request $reqeust) {
  165. $data = $this->repository->find(request('id'));
  166. return view('admin.user.info.view',compact('data'));
  167. }
  168. /**
  169. *
  170. * 状态改变
  171. *
  172. */
  173. public function status(Request $reqeust) {
  174. $ok = $this->repository->updateStatus(request('id'),request('status'));
  175. if($ok) {
  176. return $this->showMessage('操作成功');
  177. }else{
  178. return $this->showWarning('操作失败');
  179. }
  180. }
  181. /**
  182. * 删除
  183. */
  184. public function destroy(Request $reqeust) {
  185. $user_id = $reqeust->get('id');
  186. $user = UserInfoModel::find($user_id);
  187. $allImgs = $user->allImgs();
  188. if(count($allImgs) > 0) $allImgs->delete();
  189. $allInteraction = $user->allInteraction();
  190. if(count($allInteraction) > 0) $allInteraction->delete();
  191. $dreams = $user->dreams();
  192. if(count($dreams) > 0) $dreams->delete();
  193. $bool = $this->repository->destroy($reqeust->get('id'));
  194. if($bool) {
  195. // 删除用户后跟用户相关的数据全部删除
  196. UserCashOut::where('user_id',$user_id)->delete();
  197. UserCareDream::where('user_id',$user_id)->delete();
  198. UserBanksModel::where('user_id',$user_id)->delete();
  199. SystemInfoModel::where('user_id',$user_id)->delete();
  200. SupportDreamModel::where('user_id',$user_id)->delete();
  201. Suggest::where('user_id',$user_id)->delete();
  202. SearchInfoModel::where('user_id',$user_id)->delete();
  203. MeetInfoModel::where('user_id',$user_id)->delete();
  204. return $this->showMessage('操作成功');
  205. }else{
  206. return $this->showWarning("操作失败");
  207. }
  208. }
  209. }