胖虎 3 жил өмнө
parent
commit
38df751636

+ 65 - 0
app/Http/Controllers/AdminApi/ConfigController.php

@@ -0,0 +1,65 @@
+<?php
+
+namespace App\Http\Controllers\AdminApi;
+
+use App\Models\SysModels\Config;
+use App\Http\Controllers\AdminController;
+
+class ConfigController extends AdminController
+{
+    public function __construct()
+    {
+        parent::__construct();
+    }
+
+    /**
+     * 获取&更新消费金奖励规则
+     * @return \Illuminate\Http\JsonResponse
+     */
+    function setConsume(){
+        if(request()->isMethod('post')){
+            $data = request()->all();
+            //更新config数据
+            $this->update($data);
+
+            return $this->apiResponseSuccess('更新成功');
+        }else{
+            $configs = Config::whereIn('key',['consume_money','consume_for','consume_give'])->pluck('value','key');
+            return $this->apiResponseSuccess('获取成功',$configs);
+        }
+    }
+
+    /**
+     *获取&更新振合豆使用规则
+     * @return \Illuminate\Http\JsonResponse
+     */
+    function setBean(){
+        if(request()->isMethod('post')){
+            $data = request()->all();
+            //金额固定为1
+            $data['use_bean'] = 1;
+            $data['bean_money'] = 1;
+            //更新config数据
+            $this->update($data);
+
+            return $this->apiResponseSuccess('更新成功');
+        }else{
+            $configs = Config::whereIn('key',['is_bean','bean_money','bean_give','use_bean','offset_bean_money','is_bean_expense'])->pluck('value','key');
+            return $this->apiResponseSuccess('获取成功',$configs);
+        }
+    }
+
+    /**
+     * 更新config数据
+     * @param $data
+     * @return bool
+     */
+    function update($data){
+        foreach ($data as $key => $value ){
+            // 查找当前数据是否存在
+            if( Config::where('key', $key)->where('value', $value)->count() ){ continue; }
+            Config::where('key', $key)->update([ 'value' => $value ]);
+        }
+        return true;
+    }
+}

+ 181 - 0
app/Http/Controllers/AdminApi/RoleController.php

@@ -0,0 +1,181 @@
+<?php
+
+namespace App\Http\Controllers\AdminApi;
+
+use App\Models\SysModels\Menu;
+use App\Models\SysModels\Role;
+use App\Models\SysModels\User;
+use App\Http\Controllers\AdminController;
+use App\Servers\Common\MenuServer;
+use App\Servers\Common\RedisDataServer;
+
+class RoleController extends AdminController
+{
+
+    /**
+     * 后台账号列表
+     * @return \Illuminate\Http\JsonResponse
+     */
+    function getList(){
+        $status = request()->input('status', 0);//是否通过 1启用 2停用
+        $search = request()->input('search', '');//搜索的内容
+        $start = request()->input('start', '');//获取开始时间
+        $end = request()->input('end', '');//获取结束时间
+
+        //获取店铺角色列表
+        $where = [['is_del',0]];
+        if(in_array($status,[1,2])) $where[] = ['status','=',$status];
+
+        if ($search) $where[] = ['name', 'like', "%$search%"];
+        if ($start) $where[] = ['created_at', '>=', $start . ' 00:00:00'];
+        if ($end) $where[] = ['created_at', '<=', $end . ' 23:59:59'];
+
+        $list = Role::where($where)
+            ->select(['id','name','status','created_at'])
+            ->orderBy('created_at','desc')
+            ->paginate(10);
+        foreach ($list as $value){
+            $value['count'] = User::where('role_id',$value['id'])->where('is_del',0)->count();
+        }
+        return $this->apiResponseSuccess('获取信息成功', [
+            'list' => $list->items(),
+            'total' => $list->total(),
+            'limit' => 10
+        ]);
+    }
+
+    /**
+     * 新增&编辑店铺角色
+     * @return \Illuminate\Http\JsonResponse
+     */
+    function saveRole(){
+        $id = request()->input('id','');//记录id
+        $name = request()->input('name','');//名称
+        $status = request()->input('status',1);//状态1启用 2停用
+        $permission_ids = request()->input('ids','');//权限节点id
+
+        if (empty($name))  return $this->apiResponseError( '角色名称必填');
+        if (empty($permission_ids))  return $this->apiResponseError( '请选择权限节点');
+        if(!in_array($status,[1,2])) return $this->apiResponseError( '状态错误');
+
+        if(is_array($permission_ids)){
+            $permission_ids = implode(',',$permission_ids);
+        }
+        $data = compact('name','status','permission_ids');
+        if(empty($id)){
+
+            $count = Role::where('name', '=', $name)->where('is_del',0)->count();
+            if ($count > 0 ) {
+                return $this->apiResponseError( '该角色已存在');
+            }
+
+            $res = Role::create($data);
+        }else{
+            if (empty($id))  return $this->apiResponseError( '缺少必要参数');
+
+            $info = Role::where('id',$id)->first();
+            if(!$info) return $this->apiResponseError( '记录不存在');
+
+            $count = Role::where('name', '=', $name)->where('id', '<>', $id)->where('is_del',0)->count();
+            if ($count > 0 ) {
+                return $this->apiResponseError( '该角色已存在');
+            }
+            $res = $info->update($data);
+            //更新该角色redis节点信息
+            RedisDataServer::creatServer()->delData('gw_role_ids_' . $id);
+        }
+        if ($res) {
+            return $this->apiResponseSuccess('成功');
+        } else {
+            return $this->apiResponseError('失败');
+        }
+    }
+
+    /**
+     * 获取记录详情
+     * @return \Illuminate\Http\JsonResponse
+     */
+    function getInfo()
+    {
+        $id = request()->input('id', '');//获取需要查询的记录id
+        if (empty($id)) return $this->apiResponseError('缺少必要参数');
+
+        //查询数据
+        $where = [['id', $id], ['is_del',0]];
+        $info = Role::where($where)->select(['id','name','status'])->first();
+
+        if (empty($info)) return $this->apiResponseError('没有找到该记录');
+        return $this->apiResponseSuccess('获取成功', $info);
+    }
+
+    /**
+     * 获取后台菜单
+     * @return \Illuminate\Http\JsonResponse
+     */
+    function getMenuList(){
+        $role_id = request()->input('role_id','');
+
+        $list = MenuServer::creatServer()->getMenuList($role_id);
+
+        return $this->apiResponseSuccess('获取列表成功', [
+            'items' => $list,
+        ]);
+    }
+
+    /**
+     * 获取导航栏目
+     * @return \Illuminate\Http\JsonResponse
+     */
+    function getSideMenu(){
+        $role_id = $this->getRoleId();//获取登录物流公司id
+        //获取该角色的权限节点
+        $permission_ids =Role::where('id', $role_id)->value('permission_ids');
+        $url_ids = explode(',', $permission_ids);
+
+        //获取导航栏数据
+
+        $data = Menu::where([['status',1], ['is_del',0]])
+            ->where(function ($q) use ($role_id,$url_ids){
+                if($role_id){
+                    $q->whereIn('id',$url_ids);
+                }
+            })
+            ->where(function ($q){
+
+                $q->orWhere('level',1);
+                $q->orWhere('level',2);
+            })
+            ->orderBy('id','asc')
+            ->pluck('id')
+            ->toArray();
+
+        return $this->apiResponseSuccess('获取信息成功', $data);
+    }
+
+    /**
+     * 删除(批量)角色
+     * @return \Illuminate\Http\JsonResponse
+     */
+    function destroys(){
+        $ids = request()->input('ids','');//获取需要删除的id
+        if(empty($ids)) return $this->apiResponseError('请选择需要删除的数据');
+        //数据条件
+        if(!is_array($ids)){
+            $ids = array_filter(explode(',', $ids));
+        }
+        foreach ($ids as $value){
+            //检查每一个角色下面是否有使用
+            $where = [['is_del',0], ['role_id',$value]];
+            $count = User::where($where)->count();
+            if($count > 0){
+                return $this->apiResponseError('所选角色还有管理员使用,不能删除');
+            }
+        }
+        $res = Role::whereIn('id',$ids)->update(['is_del' => 1,'status'=>2]);
+        if ($res) {
+            return $this->apiResponseSuccess('删除成功');
+        } else {
+            return $this->apiResponseError('删除失败');
+        }
+    }
+}

+ 249 - 0
app/Http/Controllers/AdminApi/UserController.php

@@ -0,0 +1,249 @@
+<?php
+
+namespace App\Http\Controllers\AdminApi;
+
+use App\Models\SysModels\Role;
+use App\Models\SysModels\User;
+use App\Http\Controllers\AdminController;
+use App\Servers\Common\CommonServer;
+use App\Servers\Common\PassServer;
+
+class UserController extends AdminController
+{
+
+    /**
+     * 后台账号列表
+     * @return \Illuminate\Http\JsonResponse
+     */
+    function getList(){
+        $name = request()->input('name','');//获取搜索名称
+        $phone = request()->input('phone','');//获取搜索手机号
+        $status = request()->input('status',0);//获取状态
+        $roles_id = request()->input('roles_id','');//获取角色id
+        $start = request()->input('start','');//获取开始时间
+        $end = request()->input('end','');//获取结束时间
+
+        //查询数据条件
+        $where = [['is_del',0]];
+        if ($name) $where[] = ['name', 'like', "%$name%"];
+        if ($phone) $where[] = ['phone', 'like', "%$phone%"];
+        if(in_array($status,[1,2])) $where[] = ['status','=',$status];
+        if ($roles_id) $where[] = ['roles_id', '=', $roles_id];
+        if ($start) $where[] = ['created_at', '>=', $start];
+        if ($end) $where[] = ['created_at', '<=', $end];
+
+        //获取数据
+        $list = User::where($where)
+            ->orderBy('id','desc')
+            ->select(['id','name','phone','status','roles_id','created_at'])
+            ->paginate(10);
+
+        foreach ($list as $value){
+            if($value['id'] == 1){
+                $value['roles_name'] = '超级管理员';
+            }else{
+                $value['roles_name'] = Role::where('id',$value['roles_id'])->where('is_del',0)->value('name');
+            }
+        }
+        return $this->apiResponseSuccess('获取信息成功', [
+            'list' => $list->items(),
+            'total' => $list->total(),
+            'limit' => 10
+        ]);
+    }
+
+    /**
+     * 获取记录详情
+     * @return \Illuminate\Http\JsonResponse
+     */
+    function getInfo()
+    {
+        $id = request()->input('id', '');//获取需要查询的记录id
+        if (empty($id)) return $this->apiResponseError('缺少必要参数');
+
+        //查询数据
+        $where = [['id', $id], ['is_del',0]];
+        $info = User::where($where)->select(['id', 'name', 'phone', 'roles_id', 'status'])->first();
+
+        if (empty($info)) return $this->apiResponseError('没有找到该记录');
+
+        if($info['id'] == 1){
+            $info['roles_name'] = '超级管理员';
+        }else{
+            $info['roles_name'] = Role::where('id',$info['roles_id'])->where('is_del',0)->value('name');
+        }
+        return $this->apiResponseSuccess('获取成功', $info);
+    }
+
+    /**
+     * 更新&编辑后台账号
+     * @return false|\Illuminate\Http\JsonResponse
+     */
+    function save(){
+        $id = request()->input('id', '');//记录id,更新时必须
+        $phone = request()->input('phone', '');//登录手机号
+        $name = request()->input('name', '');//姓名
+        $roles_id = request()->input('roles_id', 0);//角色id
+        $password = request()->input('password', '');//密码
+        $again_password = request()->input('again_password', '');//确认密码
+        if (empty($phone))  return $this->apiResponseError( '登录手机号必填');
+
+        if(!CommonServer::creatServer()->verifyPhoneNumber($phone)){
+            return $this->apiResponseError( '手机号不正确');
+        }
+        if ($roles_id < 0 ) {
+            return $this->apiResponseError( '请选择角色');
+        }
+
+        if(empty($id)){
+            if (empty($password) || empty($again_password)) {
+                return $this->apiResponseError( '请输入新密码');
+            }
+            if(strlen($password) < 6 || strlen($password) > 12){
+                return $this->apiResponseError( '密码在6至12位');
+            }
+            if($password != $again_password){
+                return $this->apiResponseError( '两次密码不一致');
+            }
+
+            $count = User::where('phone', '=', $phone)->where('is_del',0)->count();
+            if ($count > 0 ) {
+                return $this->apiResponseError( '账号已注册');
+            }
+            //生成密码
+            $pass_server = PassServer::creatServer($password);
+            $new_pass = $pass_server->creatPassword();
+
+            $res = User::create([
+                'name'      => $name,
+                'phone'     => $phone,
+                'password'  => $new_pass['password'],
+                'roles_id'   => $roles_id,
+                'encrypt'   => $new_pass['encrypt']
+            ]);
+        }else{
+            if (empty($id))  return $this->apiResponseError( '缺少必要参数');
+
+            $info = User::where('id',$id)->where('is_del',0)->first();
+            if(!$info) return $this->apiResponseError( '记录不存在');
+
+            $count = User::where('phone', '=', $phone)->where('is_del',0)->where('id', '<>', $id)->count();
+            if ($count > 0 ) {
+                return $this->apiResponseError( '账号已注册');
+            }
+
+            if (!empty($password) ) {
+                if(strlen($password) < 6 || strlen($password) > 12){
+                    return $this->apiResponseError( '密码在6至12位');
+                }
+                if($password != $again_password){
+                    return $this->apiResponseError( '两次密码不一致');
+                }
+                //生成密码
+                $pass_server = PassServer::creatServer($password, $info->{'encrypt'});
+                $new_pass = $pass_server->creatPassword();
+                $update['password'] = $new_pass['password'];
+                $update['encrypt'] = $new_pass['encrypt'];
+            }
+            //获取当前操作用户类型,不是超级管理员不可以编辑超级管理
+            $admin_id = request()->admin_user['id'];
+            if($admin_id != 1 && $info['id'] == 1){
+                return $this->apiResponseError( '您不可以编辑超级管理员');
+            }
+
+            $update['phone'] = $phone;
+            $update['name'] = $name;
+            $update['roles_id'] = $roles_id;
+            $res = $info->update($update);
+        }
+
+        if ($res) {
+            return $this->apiResponseSuccess('成功');
+        } else {
+            return $this->apiResponseError('失败');
+        }
+    }
+
+    /**
+     * 快速更新是否启用
+     * @return \Illuminate\Http\JsonResponse
+     */
+    function setStatus(){
+        $id = request()->input('id','');//记录id
+        $status = request()->input('status', 0);//是否显示
+        if(empty($id) || !in_array($status,[1,2])){
+            return $this->apiResponseError('缺少必要参数');
+        }
+
+        $info = User::where('id',$id)->where('is_del',0)->select(['id'])->first();
+        if (empty($info)) {
+            return $this->apiResponseError('没有找到该记录');
+        }
+        if($info['id'] == 1){
+            return $this->apiResponseError('超级管理员不能关闭');
+        }
+
+        $res = $info->update(['status'=>$status]);
+
+        if($status == 1){
+            $msg = '开启';
+        }else{
+            $msg = '关闭';
+        }
+        if ($res) {
+            return $this->apiResponseSuccess($msg.'成功');
+        } else {
+            return $this->apiResponseError($msg.'失败');
+        }
+    }
+
+    /**
+     * 重置密码
+     * @return \Illuminate\Http\JsonResponse
+     */
+    function resetPassword(){
+        $id = request()->input('id', '');//重置密码的记录id
+        if(empty($id)) return $this->apiResponseError('缺少必要参数');
+
+        $info = User::where('id',$id)->where('is_del',0)->select(['id','encrypt'])->first();
+        if (empty($info)) {
+            return $this->apiResponseError('没有找到该记录');
+        }
+        $password = '123456';
+        //生成密码
+        $pass_server = PassServer::creatServer($password, $info->{'encrypt'});
+        $new_pass = $pass_server->creatPassword();
+        $update['password'] = $new_pass['password'];
+        $update['encrypt'] = $new_pass['encrypt'];
+
+        $res = $info->update($update);
+        if ($res) {
+            return $this->apiResponseSuccess('密码已重置,新密码为'.$password);
+        } else {
+            return $this->apiResponseError('密码重置失败');
+        }
+    }
+
+
+    /**
+     * 删除(批量)账号
+     * @return \Illuminate\Http\JsonResponse
+     */
+    function destroys(){
+        $ids = request()->input('ids','');//获取需要删除的id
+        if(empty($ids)) return $this->apiResponseError('缺少必要参数');
+
+        //数据条件
+        if(!is_array($ids)) return $this->apiResponseError('数据格式错误');
+        if(in_array(1,$ids)){
+            return $this->apiResponseError('超级管理员不能删除');
+        }
+
+        $res = User::whereIn('id',$ids)->where('id','<>',1)->update(['is_del' => 1,'status'=>2]);
+        if ($res) {
+            return $this->apiResponseSuccess('删除成功');
+        } else {
+            return $this->apiResponseError('删除失败');
+        }
+    }
+}

+ 9 - 0
app/Http/Controllers/AdminController.php

@@ -25,4 +25,13 @@ class AdminController extends Controller
     }
 
 
+    /**
+     * 获取当前登陆用户权限ID
+     * @return int|mixed
+     */
+    function getRoleId()
+    {
+        $admin_user = request()->admin_user;
+        return empty($admin_user['role_id'])?0:$admin_user['role_id'];
+    }
 }

+ 3 - 1
app/Http/Middleware/AdminApiAuthMiddleware.php

@@ -65,7 +65,7 @@ class AdminApiAuthMiddleware
             ]);
         }
         //进行路由验证
-        $ret = PermissionServer::verifyAuth($user['role_id'], $clientRoute);
+        $ret = PermissionServer::verifyAuth($user['roles_id'], $clientRoute);
         if (empty($ret) && $user['id'] != 1) {
             return response()->json([
                 'msg' => '暂无权限',
@@ -74,6 +74,8 @@ class AdminApiAuthMiddleware
             ]);
         }
 
+        $request->admin_user = $user;
+
         return $next($request);
     }
 }

+ 10 - 0
routes/adminApi/user.php

@@ -0,0 +1,10 @@
+<?php
+
+use Illuminate\Support\Facades\Route;
+
+
+
+Route::group(['domain' => env('APP_HOST'), 'prefix' => 'adminApi/user'],function (){
+    Route::match(['get','post'],'list', 'UserController@getList')->name('adminApi.user.list');//获取后台账号列表
+
+});