SystemUserController.php 7.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255
  1. <?php
  2. namespace App\Http\Controllers\Admins;
  3. use App\Modes\AdminArea;
  4. use App\Modes\MsgTemplate;
  5. use App\Modes\SystemUser;
  6. use App\Modes\User;
  7. use Illuminate\Http\Request;
  8. use App\Http\Controllers\Controller;
  9. use Illuminate\Support\Facades\Auth;
  10. use Illuminate\Support\Facades\DB;
  11. use Illuminate\Support\Facades\Validator;
  12. use Spatie\Permission\Models\Role;
  13. class SystemUserController extends Controller
  14. {
  15. /*
  16. * 消息模板列表
  17. * wsl 20190812
  18. * */
  19. public function msgTemplateList(Request $request){
  20. $list=MsgTemplate::get();
  21. return showJsonSucc('数据获取成功',$list);
  22. }
  23. /*
  24. * 编辑消息模板
  25. * wsl20190812
  26. * */
  27. public function editMsgTemplate(Request $request){
  28. $params=$request->all();
  29. if(empty($params['id']))return showJsonErr('模板id不能为空');
  30. if(empty($params['content']))return showJsonErr('模板内容不能为空');
  31. if(empty($params['title']))return showJsonErr('模板标题不能为空');
  32. $r=MsgTemplate::editById($params['id'],$params['content'],$params['title']);
  33. if($r['code']==false) return showJsonErr($r['message']);
  34. return showJsonSucc($r['message']);
  35. }
  36. /**
  37. * 管理员列表
  38. * @author fatty
  39. * @date 2019/1/8
  40. * @description
  41. */
  42. public function index(Request $request)
  43. {
  44. $param = $request->all();
  45. $res = User::whereIsFrontend(0);
  46. if (Auth::user()->is_super == 3) {
  47. $res = $res->whereIn('id', getIds());
  48. }
  49. if (!empty($param['mobile'])) {
  50. $res->where('mobile', 'like', "%{$param['mobile']}%");
  51. }
  52. if (!empty($param['real_name'])) {
  53. $res->where('real_name', 'like', "%{$param['real_name']}%");
  54. }
  55. $res->with(['roles' => function () {
  56. }]);
  57. $res = $res->paginate(perPage());
  58. if ($res->isNotEmpty()) {
  59. collect($res->items())->each(function ($item, $key) {
  60. $adminarea=AdminArea::where('admin_id','=',$item->id)->first();
  61. // $adminarea=DB::table('admin_area')->where('admin_id', $item->id)->first();
  62. if(!empty($adminarea)){
  63. $item->manageProvince=$adminarea->province;
  64. $item->manageCity=$adminarea->city;
  65. $item->manageDistrict=$adminarea->district;
  66. }
  67. });
  68. }
  69. return showJson(101, 1001, $res);
  70. }
  71. /**
  72. *系统日志 wsl 20190806
  73. *
  74. */
  75. public function operationLogs(Request $request){
  76. $logs=DB::table('system_operation_log as s')->join('user as u','s.operator','=','u.id')
  77. ->select('s.*','u.mobile','u.nick_name')
  78. ->orderBy('s.id','desc')
  79. ->groupBy('s.id')
  80. ->paginate(perPage());
  81. return showJsonSucc('数据读取成功',$logs);
  82. }
  83. /**
  84. * 用户拥有的权限
  85. * @author fatty
  86. * @date 2019/1/8
  87. * @return \Illuminate\Contracts\Routing\ResponseFactory|\Symfony\Component\HttpFoundation\Response
  88. * @description
  89. */
  90. public function userPermission()
  91. {
  92. return showJson(101, 1001, \Auth::user()->permissions);
  93. }
  94. /**
  95. * 添加管理员
  96. * @author fatty
  97. * @date 2019/1/8
  98. * @param Request $request
  99. * @description
  100. */
  101. public function create(Request $request)
  102. {
  103. $validator = Validator::make($param = $request->all(), [
  104. 'mobile' => [
  105. 'required',
  106. 'string',
  107. ],
  108. 'password' => 'required|min:6',
  109. 'real_name' => 'required',
  110. ]);
  111. if ($validator->fails()) {
  112. return showJson(102, $validator->errors()->first());
  113. }
  114. // 判断是否存在账号
  115. if (User::whereMobile($param['mobile'])->whereIsFrontend(0)->exists() !== false) {
  116. return showJsonErr('当前账号已存在');
  117. }
  118. // 如果当前用户是代理管理员,则创建的用户是影子用户
  119. if (Auth::user()->is_super == 3) {
  120. $shadow = 1;
  121. $is_super = 3;
  122. }
  123. $users = User::create([
  124. 'mobile' => $param['mobile'],
  125. 'real_name' => $param['real_name'],
  126. 'password' => bcrypt($param['password']),
  127. 'is_super' => isset($is_super) ? $is_super : 2,
  128. 'invitor' => Auth::id(),
  129. 'shadow' => isset($shadow) ? $shadow : 0
  130. ]);
  131. if (is_int($users)) {
  132. return showJson(102, $users);
  133. }
  134. return showJson(101, '添加成功', $users);
  135. }
  136. /**
  137. * 当前用户的权限
  138. * @author fatty
  139. * @date 2019/1/8
  140. * @description
  141. */
  142. public function permission()
  143. {
  144. return showJson(101, 1001, Auth::user()->getAllPermissions());
  145. }
  146. /**
  147. * 编辑管理员信息
  148. * @author fatty
  149. * @date 2019/1/8
  150. * @description
  151. */
  152. public function edit(Request $request)
  153. {
  154. $validator = Validator::make($param = $request->all(), [
  155. 'mobile' => [
  156. 'string',
  157. function ($attribute, $value, $fail) { // 判断是否存在账号
  158. if (SystemUser::where('mobile', $value)->exists() !== false) {
  159. return $fail(lang(10001));
  160. }
  161. },
  162. ],
  163. 'password' => 'min:6',
  164. 'id' => 'required|exists:user,id',
  165. 'role' => 'string',
  166. 'status' => 'integer|between:1,2'
  167. ]);
  168. if ($validator->fails()) {
  169. return showJson(102, $validator->errors()->first());
  170. }
  171. if (isset($param['password'])) {
  172. $param['password'] = bcrypt($param['password']);
  173. }
  174. // if (isset($param['role'])) {
  175. // SystemUser::givePermissionTo('edit articles');
  176. // }
  177. $users = User::whereId($param['id'])->update($param);
  178. if (empty($users)) {
  179. return showJson(102, '编辑失败');
  180. }
  181. return showJson(101, '编辑成功');
  182. }
  183. /**
  184. * 删除管理员
  185. * @author fatty
  186. * @date 2019/1/8
  187. * @param $id
  188. * @description
  189. */
  190. public function del($id)
  191. {
  192. $user = User::find($id);
  193. if (empty($user)) {
  194. return showJsonErr('管理员记录不存在');
  195. }
  196. // 如果待删除的管理员是超管则不可删除
  197. if ($user->is_super == 1) {
  198. return showJson(101, '抱歉您没有权限删除该管理员');
  199. }
  200. // 如果待删除的用户是影子代理商可删除
  201. if ($user->is_super == 3 && $user->shadow == 0) {
  202. return showJson(101, '抱歉,该用户是地区代理,不能删除');
  203. }
  204. $role = $user->getRoleNames();
  205. foreach ($role as $item) {
  206. $user->removeRole($item);
  207. }
  208. if (!$user->delete()) {
  209. return showJson(102, '删除管理员失败');
  210. }
  211. return showJson(101, '删除管理员成功');
  212. }
  213. /**
  214. * 更新密码
  215. * @author fatty
  216. * @date 2019/3/11
  217. * @param Request $request
  218. * @return \Illuminate\Contracts\Routing\ResponseFactory|\Symfony\Component\HttpFoundation\Response
  219. * @description
  220. */
  221. public function update(Request $request)
  222. {
  223. $password = $request->post('password', null);
  224. if (empty($password)) {
  225. return showJson(102, '修改密码失败');
  226. }
  227. if (!SystemUser::whereId(Auth::id())->update(['password' => User::encodePassword($password)])) {
  228. return showJson(102, '修改密码失败');
  229. }
  230. return showJson(101, '修改密码成功');
  231. }
  232. }