post(); $data['user_id'] = $userId; $result = validate('UserMenuGroup')->check($data,[],''); if(true !== $result){ $this->error = validate('UserMenuGroup')->getError(); return false; } $id = $data['id']; unset($data['id']); Db::startTrans(); try{ if($id > 0){ $data['update_time'] = date('Y-m-d H:i:s'); $ret = $this->allowField(true)->save($data,['id'=>$id]); }else{ $data['create_time'] = date('Y-m-d H:i:s'); $ret = $this->allowField(true)->save($data); $id = $this->id; } if(!$ret){ exception('操作失败'); } $menus = $data['menus']?explode(',',$data['menus']):[]; if($menus){ $map[] = ['user_id','=',$data['user_id']]; $map[] = ['id','<>',$id]; $lists = Db::name('user_menu_group')->where($map)->select(); $lists = $lists?$lists:[]; foreach ($lists as $k=>$v){ $omenus = $v['menus']?explode(',',$v['menus']):[]; if(empty($omenus)){ continue; } $nmenus = []; foreach ($omenus as $kk=>$vv){ if(!in_array($vv,$menus)){ $nmenus[] = $vv; } } if(count($nmenus) != count($nmenus)){ $mes = $nmenus?implode(',',$nmenus):''; $res = Db::name('user_menu_group')->where('id',$v['id'])->setField('menus',$mes); if(!$res){ exception('操作失败'); } } } } Db::commit(); }catch (\Exception $e){ Db::rollback(); $this->error = '操作失败'; return false; } return true; } }