用户管理

说明:
超级管理员可以看到所有的用户列表。普通用户只能看见自己
超级管理员只拥有删除权限

用户列表

该功能也在User.php中实现

//用户列表
 public function userList()
 {
     //1、获取当前用户的id和权限级别
     $data['admin_id'] = Session::get('admin_id');
     $data['admin_power'] = Session::get('admin_power');
     // dump($data);
     //2、获取当前用户信息
     $userList = ModelUser::where('id', $data['admin_id'])->select();

     //3、如果是超级管理员则获取所有用户
     if ($data['admin_power'] == 1) {
         $userList = ModelUser::select();
     }

     //4、模板赋值
     $this->view->assign('title', '用户管理');
     $this->view->assign('empty', '<span style="color:red">没有任何数据</span>');
     $this->view->assign('userList', $userList);

     //5、渲染模板
     $this->view->fetch('userList');
 }

列表模板

{layout name="public/layout" /}

<h3 class="text-center">用户列表</h3>

<table class="table table-striped table-hover text-center">
  <tr>
    <td>ID</td>
    <td>用户名</td>
    <td>邮箱</td>
    <td>手机号</td>
    <td>注册时间</td>
    <td>状态</td>
    <td>操作</td>
  </tr>
  {volist name="userList" id="user" empty="$empty"}
  <tr>
    <td>{$user.id}</td>
    <td>{$user.name}</td>
    <td>{$user.email}</td>
    <td>{$user.mobile}</td>
    <td>{$user.create_time}</td>
    <td>{$user.status==1?'启用':'弃用'}</td>
    <td>
      <!-- 非当前用户是不允许编辑其它用户的 -->
      {eq name="$user.id" value="$Think.session.admin_id"}
      <a href=""><span class="glyphicon glyphicon-edit"></span></a>
      {/eq} {neq name="$user.id" value="$Think.session.admin_id"}
      <a href=""><span class="glyphicon glyphicon-trash"></span></a>
      {/neq}
    </td>
  </tr>
  {/volist}
</table>

编辑操作

//用户编辑
public function edit()
{
    //1、获取要编辑的用户id
    $id = Request::param('id');
    //2、获取当前用户的信息
    $info = ModelUser::where('id', $id)->find();
    //3、编辑界面的模板变量
    $this->view->assign('title', '用户编辑');
    $this->view->assign('userInof', $info);
    //4、渲染页面
    return $this->view->fetch('edit');
}

更新编辑操作

//保存用户编辑
public function editSave()
{
    $data = Request::param();
    //dump($data);
    //取出主键,并删除主键
    $id = $data['id'];
    unset($data['id']);
    //加密密码
    $data['password'] = sha1($data['password']);
    //更新数据库
    if (ModelUser::where('id',$id)->data($data)->update()) {
        //修改session中的用户名
        Session::set('admin_name',$data['name']);
        return $this->success('更新成功', 'admin/user/userlist');
    }

    return $this->error('没有更新或更新失败');
}

删除操作
删除操作需要给用户提示,防止错删

<!-- 删除 -->
<a href=""  id="del" onclick="del('{$user.id}');return false"
 ><span class="glyphicon glyphicon-trash"></span
></a>

<script>
  function del(){
    if(confirm('是否要删除该用户?')==true){
        window.location.href="{:url('admin/user/del',['id'=>$user.id])}"
    }
  }
</script>

根据传递来的id,删除数据库中的用户,并跳转到列表页

//删除用户
 public function del(){
     $id = Request::param('id');
     //dump($id);
     if(ModelUser::where('id',$id)->delete()){
           return $this->success('删除成功!','admin/user/userlist');
     }
     return $this->error('删除失败!');
 }

文章管理

分类管理

该功能只对管理原开发,普通用户无法使用,因此对之前的菜单进行修改

<!-- 只有管理员才能操作网站 -->
{if ($Think.session.admin_power == '1') ||($Think.session.admin_power =='管理员')}
<ul class="nav nav-pills nav-stacked">
  <li class="nav-header h3">系统管理</li>
  <li>
    <a href="#"> <span class="glyphicon glyphicon-cog">&nbsp;网站管理</span></a>
  </li>
</ul>
{/if}
<ul class="nav nav-pills nav-stacked">
  <li class="nav-header h3">用户管理</li>
  <li>
    <a href="{:url('admin/user/userlist')}"> <span class="glyphicon glyphicon-user">&nbsp;用户列表</span></a>
  </li>
</ul>

<ul class="nav nav-pills nav-stacked">
  <li class="nav-header h3">文章管理</li>
  {if ($Think.session.admin_power == '1') ||($Think.session.admin_power =='管理员')}
  <li>
    <a href="#"> <span class="glyphicon glyphicon-list">&nbsp;分类管理</span></a>
  </li>
  {/if}
  <li>
    <a href="#"> <span class="glyphicon glyphicon-edit">&nbsp;文章管理</span></a>
  </li>
</ul>

分类模型

class Cate extends Model{
protected $pk='id';
protected $table='zh_article_category';
}

分类控制器

//分类管理的首页
 public function index(){
     //判断是否登录
    $this->isLogin();
    //登录后直接跳转到分类界面
    $this->redirect('admin/cate/catelist');
 }

 //分类列表
 public function cateList(){
     //1、检测是否登录
     $this->isLogin();
     //2、获取所有分类
     $cate=ModelCate::all();
     //3、设置模板变量
     $this->view->assign('title','分类列表');
     $this->view->assign('empty','<span>当前无分类</span>');
     $this->view->assign('cateList',$cate);
     //4、渲染模板
     return $this->view->fetch('catelist');
 }
 
//编辑界面
  public function edit(){
      //获取当前分类的id
      $id=Request::param('id');
      //2、获取当前用户的信息
      $info = ModelCate::where('id', $id)->find();
      //3、编辑界面的模板变量
      $this->view->assign('title', '分类编辑');
      $this->view->assign('cateInof', $info);
      //4、渲染页面
      return $this->view->fetch('edit');
  }

//保存栏目编辑
 public function editSave()
 {
     $data = Request::param();
     //dump($data);
     //取出主键,并删除主键
     $id = $data['id'];
     unset($data['id']);
     //更新数据库
     if (ModelCate::where('id', $id)->data($data)->update()) {
         return $this->success('更新成功', 'admin/cate/catelist');
     }
     return $this->error('没有更新或更新失败');
 }

注: 分类列表界面、编辑界面参照用户管理进行简单修改

增加分类添加功能
在分类列表中增加添加区域

<!-- 分类添加 -->
<a class="btn btn-info" href="{:url('admim/cate/add')}" role="button">添加分类</a>

创建添加界面,根据编辑界面简单修改

功能实现

//保存添加信息
public function addSave(){
    //获取要保存的信息
     $data=Request::param();
      //更新数据库
     if(ModelCate::create($data)){
         return $this->success('添加成功','admin/cate/catelist');
     }
     return $this->error('更新失败,请重试');
}

文章列表

创建文章对应的模型

<?php 

namespace app\admin\common\model;

use think\Model;

class Article extends Model{
    protected $pk='id';
    protected $table='zh_article';
}

控制器

class Article extends Base
{

    //文章列表的首页
    public function index()
    {
        //判断是否登录
        $this->isLogin();
        //登录后直接跳转到分类界面
        $this->redirect('admin/article/articlelist');
    }

    //文章列表
    public function articleList()
    {
        //1、检测是否登录
        $this->isLogin();
        /**
         * 2、获取文章列表
         * 管理员可以查看所有文章,用户只能查看自己的文章,通过用户权限判断
         */
        //获取用户id、权限
        $pow = Session::get('admin_power');
        $id = Session::get('admin_id');
        //dump($pow);
        if ($pow == 1) {
            $list = ModelArticle::paginate(3);
        } else {
            $list = ModelArticle::where('user_id', $id)->paginate(3);
        }

        //3、设置模板变量
        $this->view->assign('title', '文章列表');
        $this->view->assign('empty', '<span>文章列表为空</span>');
        $this->view->assign('artList', $list);
        //4、渲染模板
        return $this->view->fetch('artlist');
    }

	   //文章编辑界面
    public function edit()
    {
        //获取当前文章的id
        $id = Request::param('id');
        //2、获取当前文章的信息
        $info = ModelArticle::where('id', $id)->find();
        //文章分类
        $cate = Cate::all();
        //3、编辑界面的模板变量
        $this->view->assign('title', '文章编辑');
        $this->view->assign('artInof', $info);
        $this->view->assign('catelist',$cate);
        //4、渲染页面
        return $this->view->fetch('edit');
    }
    
//保存文章编辑
   public function editSave()
   {
       $data = Request::param();
       // dump($data);
       //更新数据库
       if (ModelArticle::where('id', $data['id'])->data($data)->update()) {
           return $this->success('更新成功', 'admin/article/articlelist');
       }
       return $this->error('没有更新或更新失败');
   }

}

站点管理

创建模型

控制器

<?php

namespace app\admin\controller;

use app\admin\common\controller\Base;
use app\admin\common\model\Site as ModelSite;

class Site extends Base{
    //站点的管理首页
    public function index(){
        //1、获取以下站点信息
        $siteInfo=ModelSite::get(['status'=>1]);
        //2、模板赋值
        $this->view->assign('siteInfo',$siteInfo);
        //dump($siteInfo);
        $this->view->assign('title','站点管理');
        //3、渲染模板
        return $this->view->fetch('index');
    }
    
   //保存站点更新数据
    public function siteSave()
    {
        //获取数据
        $data = Request::param();
        // dump($data);
        //更新数据
        $res = ModelSite::update($data);
        if ($res) {
            return $this->success('站点更新成功', 'admin/site.index');
        } else {
            return $this->error('更新失败,请重试');
        }
    }
}

关于网站的关闭,网站关闭只能是关闭网站前台。因此在前台模块的common目录下的公共控制器(Base.php),添加关闭和开启的方法

该方法在初始化方法里进行调用

/**
 * 是否开启网站前台
 */

protected function is_open()
{
   //1、获取当前站点的状态
   $is_open = Site::where('status', 1)->value('is_open');
   /**
    * 2、判断站点是否关闭
    * 关闭:只允许关闭前台,后台不允许关闭
    */
   if ($is_open == 0 && Request::module() == 'index') {
//关闭网站
       $info = <<<info
           <body style="background:#333">
              <h1 style="color:red;text-align: center;margin-top: 50px;">抱歉,网站正在维护,请稍后重试</h1>
           <body>
info;
       exit($info);
   }
}

热门排序

主要根据文章阅读数来判断文章是否热门。该部分在前台的base.php中完成

/**
   * 根据文章阅读量来获取热门文章
   */
  public function getHotArt()
  {
      $info = Article::where('status', 1)->order('read_count')->limit(6)->select();
      $this->view->assign('hotArt', $info);
  }

该方法在初始化方法中进行调用

修改right.html

<div class="col-md-4">
  <div class="page-header">
    <h2>热门排行</h2>
  </div>
  <!-- 列表组 -->
  <div class="list-group">
    {volist name="hotArt" id="item"}
    {if $i==1}
    <a href="#" class="list-group-item active"> {$item.title} <span class="badge">{$item.read_count}</span></a>
    {else /}
    <a href="#" class="list-group-item"> {$item.title} <span class="badge">{$item.read_count}</span></a>
    {/if}
    {/volist}
  </div>
</div>
Logo

瓜分20万奖金 获得内推名额 丰厚实物奖励 易参与易上手

更多推荐