Эх сурвалжийг харах

【Mod】商业公司添加编辑优化

liuxiangxin 4 сар өмнө
parent
commit
31a5375a8d

+ 119 - 96
app/Http/Controllers/Admin/Business.php

@@ -66,21 +66,21 @@ class Business extends Auth{
                                 ->paginate(config('page_num',10));
 		// 循环处理数据
 		foreach ($list as $key => $value) {
-            $value['username']      = $value['admin_uid'] ? (string) $AdminUser->getOne($value['admin_uid'],'username') : '';
-            $value['phone']         = $value['admin_uid'] ? (string) $AdminUser->getOne($value['admin_uid'],'phone') : '';
-			// id转编号
+            // id转编号
 			$value['business_code'] = $Model->idToCode($value['id']);
+            $value['username']      = $value['admin_uid'] ? (string) $AdminUser->getOne($value['admin_uid'],'username') : '';
+            $value['admin_phone']   = $value['admin_uid'] ? (string) $AdminUser->getOne($value['admin_uid'],'phone') : '';
             $value['logopic']		= $value['logopic'] ? path_compat($value['logopic']) : '';
             $addHistory             = AdminHistory::query()
-                ->join('admin','admin.uid','=','admin_history.admin_uid')
-                ->where(['admin_history.primary_id'=>$value['id'],'admin_history.notes_type'=>1,'admin_history.table_name'=>$Model->getTable()])
-                ->select('admin_history.insert_time','admin.username as username')
-                ->first();
+                                    ->join('admin','admin.uid','=','admin_history.admin_uid')
+                                    ->where(['admin_history.primary_id'=>$value['id'],'admin_history.notes_type'=>1,'admin_history.table_name'=>$Model->getTable()])
+                                    ->select('admin_history.insert_time','admin.username as username')
+                                    ->first();
             $editHistory            = AdminHistory::query()
-                ->join('admin','admin.uid','=','admin_history.admin_uid')
-                ->where(['admin_history.primary_id'=>$value['id'],'admin_history.notes_type'=>2,'admin_history.table_name'=>$Model->getTable()])
-                ->select('admin_history.update_time','admin.username as username')
-                ->orderByDesc('id')->first();
+                                        ->join('admin','admin.uid','=','admin_history.admin_uid')
+                                        ->where(['admin_history.primary_id'=>$value['id'],'admin_history.notes_type'=>2,'admin_history.table_name'=>$Model->getTable()])
+                                        ->select('admin_history.update_time','admin.username as username')
+                                        ->orderByDesc('id')->first();
             $value['add_history_username']  = $addHistory   ? $addHistory->username : '';
             $value['add_history_time']      = $addHistory   ? $addHistory->insert_time : 0;
             $value['edit_history_username'] = $editHistory  ? $editHistory->username : '';
@@ -115,87 +115,96 @@ class Business extends Auth{
 	 * 
 	 * */
 	public function add(Request $request,Model $Model,City $City,AdminUser $AdminUser,AdminRule $AdminRule){
-        $session				= session('userRule') ? session('userRule') : ['menu_type'=>0,'company_id'=>0,'business_id'=>0];
+        // 当前用户角色
+        $session				= session('userRule') ? session('userRule') : ['menu_type'=>0,'company_id'=>1,'business_id'=>0];
+        // 添加
 		if( request()->isMethod('post') ){
 			// 验证参数
 			$request->scene('add')->validate();
 			// 接收数据
-			$data['name']			= request('name','');
-			$data['phone']			= request('phone','');
-			$data['logopic']		= request('logopic','');
-			$data['desc']			= request('desc','');
-			$data['leader_uid']		= request('leader_uid','');
-            $data['address']		= request('address','');
-            $data['city_ids']		= request('city_ids','');
-            if ($data['city_ids']){
-                $data['city_ids']		= implode(',',$data['city_ids']);
-            }
-			$custom_name		    = request('custom_name','');
-			$phone		            = request('phone','');
-			$custom_password		= request('custom_password','');
-            if ($session['company_id']){
-                $data['company_id']	        = $session['company_id'];
-                $ruleData['company_id']     = $session['company_id'];
-            }
-            $userData['username']		= $custom_name;
-            $userData['phone']			= $phone;
-            $userData['password']		= md5($custom_password);
+			$data['name']			    = request('name','');
+			$data['phone']			    = request('phone','');
+			$data['logopic']		    = request('logopic','');
+			$data['desc']			    = request('desc','');
+			$data['leader_uid']		    = request('leader_uid','');
+            $data['address']		    = request('address','');
+            $data['city_ids']		    = request('city_ids',[]);
+            $data['city_ids']		    = implode(',',$data['city_ids']);
+            // 店铺管理员
+			$userData['username']		= request('custom_name','');
+			$userData['phone']		    = request('phone','');
+			$userData['password']		= request('custom_password','');
+            $userData['password']		= md5($userData['password']);
+            // 如果有公司ID
+            $data['company_id']	        = empty($session['company_id'])? 1 : $session['company_id'];
+            // 查询店铺管理员
+            $oldAdmin                   = $AdminUser->query()->where([['username','=',$userData['username']]])->first();
+            // 如果存在的话
+            if( $oldAdmin )             return json_send(['code'=>'error','msg'=>'管理员账号不可重复']);
             // 开启事务
             DB::beginTransaction();
             try {
                 // 写入数据表
                 $id						= $Model->add($data);
                 // 如果操作失败
-                if( !$id ){
-                    return json_send(['code'=>'error','msg'=>'新增店铺失败']);
+                if( !$id )              {
+                    // 回滚事务
+                    DB::rollBack();
+                    // 失败提示
+                    return json_send(['code'=>'error','msg'=>'新增商业公司失败']);
                 }
                 // 写入数据表
-                $uid					= $AdminUser->add($userData);
+                $uid					 = $AdminUser->add($userData);
                 // 如果操作失败
                 if( !$uid ){
                     // 回滚事务
                     DB::rollBack();
-                    return json_send(['code'=>'error','msg'=>'新增管理员失败']);
+                    // 提示
+                    return              json_send(['code'=>'error','msg'=>'新增管理员失败']);
                 }
-                $ruleData['admin_uid']      =   $uid;
-                $ruleData['business_id']        =   $id;
-                $ruleData['menu_type']      =   2;
+                // 角色数据
+                $ruleData['admin_uid']  = $uid;
+                $ruleData['business_id']= $id;
+                $ruleData['menu_type']  = 2;
                 // 写入数据表
-                $ruleUid					=   $AdminRule->add($ruleData);
+                $ruleUid				= $AdminRule->add($ruleData);
                 // 如果操作失败
                 if( !$ruleUid ){
                     // 回滚事务
                     DB::rollBack();
-                    return json_send(['code'=>'error','msg'=>'新增管理员角色失败']);
+                    // 提示
+                    return              json_send(['code'=>'error','msg'=>'新增管理员角色失败']);
                 }
                 // 写入数据表
-                $re					= $Model->edit($id,['admin_uid'=>$uid]);
+                $re					    = $Model->edit($id,['admin_uid'=>$uid]);
                 // 如果操作失败
                 if( !$re ){
                     // 回滚事务
                     DB::rollBack();
-                    return json_send(['code'=>'error','msg'=>'新增失败','data'=>'新增店铺管理员']);
+                    // 提示
+                    return              json_send(['code'=>'error','msg'=>'新增失败','data'=>'新增店铺管理员']);
                 }
                 // 写入数据表
-                $re					= DB::table('auth_group_access')->insert(['group_id'=>5,'user_uid'=>$uid]);
+                $re					    = DB::table('auth_group_access')->insert(['group_id'=>5,'user_uid'=>$uid]);
                 // 如果操作失败
                 if( !$re ){
                     // 回滚事务
                     DB::rollBack();
-                    return json_send(['code'=>'error','msg'=>'新增失败','data'=>'新增店铺管理员']);
+                    // 提示
+                    return              json_send(['code'=>'error','msg'=>'新增失败','data'=>'新增店铺管理员']);
                 }
+                // 提交事务
+                DB::commit();
+                // 记录行为
+                $this->addAdminHistory(admin('uid'),$Model->getTable(),$id,1,[],$data);
+                // 告知结果
+                return					json_send(['code'=>'success','msg'=>'新增成功','action'=>'add']);
             }catch (\Exception $e){
                 // 回滚事务
                 DB::rollBack();
                 // 告知错误
                 return				json_send(['code'=>'error','msg'=>'新增失败','data'=>json_encode($e->getMessage())]);
             }
-            // 提交事务
-            DB::commit();
-			// 记录行为
-			$this->addAdminHistory(admin('uid'),$Model->getTable(),$id,1,[],$data);
-			// 告知结果
-			return					json_send(['code'=>'success','msg'=>'新增成功','action'=>'add']);
 		}
         // 获取列表
         $cityList					= $City->getCityList();
@@ -230,65 +239,80 @@ class Business extends Auth{
 		$id							= request('id',0);
 		// 查询用户
 		$oldData					= $Model->where(['id'=>$id])->first();
+        // 当前用户角色
+        $session				    = session('userRule') ? session('userRule') : ['menu_type'=>0,'company_id'=>0,'business_id'=>0];
 		// 修改
 		if(request()->isMethod('post')){
 			// 验证参数
 			$request->scene('edit')->validate();
 			// 接收数据
-			$data['name']			= request('name','');
-			$data['phone']			= request('phone','');
-			$data['logopic']		= request('logopic','');
-			$data['desc']			= request('desc','');
-            $data['leader_uid']		= request('leader_uid','');
-            $data['address']		= request('address','');
-            $data['city_ids']		= request('city_ids','');
-            $custom_name		    = request('custom_name','');
-            $phone		            = request('phone','');
-            $custom_password		= request('custom_password','');
-            if ($data['city_ids']){
-                $data['city_ids']		= implode(',',$data['city_ids']);
-            }
-            //事务
+			$data['name']			    = request('name','');
+			$data['phone']			    = request('phone','');
+			$data['logopic']		    = request('logopic','');
+			$data['desc']			    = request('desc','');
+            $data['leader_uid']		    = request('leader_uid','');
+            $data['address']		    = request('address','');
+            $data['city_ids']		    = request('city_ids',[]);
+            $data['city_ids']		    = implode(',',$data['city_ids']);
+            // 店铺管理员
+			$userData['username']		= request('custom_name','');
+			$userData['phone']		    = request('phone','');
+            // 是否修改密码
+            if( request('custom_password','') ) $userData['password'] = md5(request('custom_password',''));
+            // 如果有公司ID
+            $data['company_id']	        = empty($session['company_id'])? 1 : $session['company_id'];
+            // 查询店铺管理员
+            $oldAdmin                   = $AdminUser->query()->where([['username','=',$userData['username']]])->value('uid');
+            // 如果存在的话,而且不是当前的管理员
+            if( $oldAdmin && $oldAdmin != $oldData['admin_uid'] ) return json_send(['code'=>'error','msg'=>'管理员账号不可重复']);
+            // 事务
             DB::beginTransaction();
+            // 尝试执行
             try {
-                // 写入数据表
-                $result					= $Model->edit($id,$data);
+                // 修改或者新增
+                $data['admin_uid']          = $oldData['admin_uid'] ? $AdminUser->edit($oldData['admin_uid'],$userData) : $AdminUser->add($userData);
                 // 如果操作失败
-                if( !$result ) 			return json_send(['code'=>'error','msg'=>'新增失败']);
-                $userData['username']	= $custom_name;
-                $userData['phone']		= $phone;
-                if ($custom_password){
-                    $userData['password']	= md5($custom_password);
+                if( !$data['admin_uid'] )   {
+                    // 回滚事务
+                    DB::rollBack();
+                    // 提示
+                    return                  json_send(['code'=>'error','msg'=>'编辑失败']);
                 }
-                //获取用户信息
-                $userInfo               = $AdminUser->getOne($oldData['admin_uid']);
                 // 写入数据表
-                if (!$userInfo){
-                    $result					= $AdminUser->add($userData);
-                    if( !$result ){
-                        DB::rollBack();
-                        return json_send(['code'=>'error','msg'=>'编辑失败']);
-                    }
-                    $result					= $Model->edit($id,['admin_uid'=>$result['admin_uid']]);
-                    if( !$result ){
-                        DB::rollBack();
-                        return json_send(['code'=>'error','msg'=>'编辑失败']);
-                    }
-                }else{
-                    $result					= $AdminUser->edit($oldData['admin_uid'],$userData);
-                    if( !$result ){
+                $result					    = $Model->edit($id,$data);
+                // 如果操作失败
+                if( !$result )              {
+                    // 回滚事务
+                    DB::rollBack();
+                    // 提示
+                    return                  json_send(['code'=>'error','msg'=>'编辑失败']);
+                }
+                // 如果新增的话,绑定角色关系
+                if( !$oldData['admin_uid'] ){
+                    // 角色数据
+                    $ruleData['admin_uid']  = $data['admin_uid'];
+                    $ruleData['business_id']= $id;
+                    $ruleData['menu_type']  = 2;
+                    // 写入数据表
+                    $ruleUid				= $AdminRule->add($ruleData);
+                    // 如果操作失败
+                    if( !$ruleUid )         {
+                        // 回滚事务
                         DB::rollBack();
-                        return json_send(['code'=>'error','msg'=>'编辑失败']);
+                        // 提示
+                        return              json_send(['code'=>'error','msg'=>'新增管理员角色失败']);
                     }
                 }
-            }catch (\Exception $e){
+                // 提交事务
+                DB::commit();
+                // 记录行为
+                $this->addAdminHistory(admin('uid'),$Model->getTable(),$id,2,$oldData,$data);
+                // 告知结果
+                return					    json_send(['code'=>'success','msg'=>'修改成功','action'=>'edit']);
+            }catch (\Exception $e)  {
                 DB::rollBack();
-                return				json_send(['code'=>'error','msg'=>'编辑失败','data'=>json_encode($e->getMessage())]);
+                return				    json_send(['code'=>'error','msg'=>'编辑失败','data'=>json_encode($e->getMessage())]);
             }
-			// 记录行为
-			$this->addAdminHistory(admin('uid'),$Model->getTable(),$id,2,$oldData,$data);
-			// 告知结果
-			return					json_send(['code'=>'success','msg'=>'修改成功','action'=>'edit']);
 		}
 		// 错误告知
 		if( !$oldData )				return $this->error('查无数据');
@@ -298,7 +322,6 @@ class Business extends Auth{
         $oldData['city_ids']		= explode(',',$oldData['city_ids']);
         // 获取列表
         $cityList					= $City->getCityList();
-        $session				    = session('userRule') ? session('userRule') : ['menu_type'=>0,'company_id'=>0,'business_id'=>0];
         $mp                         =   [];
         if ($session){
             $mp[]                   =   ['admin_rule.company_id','=',$session['company_id']];

+ 3 - 3
app/Models/AdminUser.php

@@ -32,7 +32,7 @@ class AdminUser extends Model
         // 写入数据表
         $id						            = $this->query()->insertGetId($data);
         // 如果操作失败
-        if( !$id )                          return $id;
+        if( !$id )                          return 0;
         // 更新缓存
         $this->getList(true);
         // 返回结果
@@ -50,11 +50,11 @@ class AdminUser extends Model
         // 写入数据表
         $result						        = $this->query()->where(['uid'=>$id])->update($data);
         // 如果操作失败
-        if( !$result )                      return $result;
+        if( !$result )                      return 0;
         // 更新缓存
         $this->getList(true);
         // 返回结果
-        return                              $result;
+        return                              $id;
     }
 
     /**