从零开始,搭建一个简单的购物平台(八)

简介: 从零开始,搭建一个简单的购物平台(八)

从零开始,搭建一个简单的购物平台(七):https://blog.csdn.net/time_____/article/details/105448383

项目源码(持续更新):https://gitee.com/DieHunter/myCode/tree/master/shopping


后端管理的界面与前端不同,在样式上可以没有前端精细,毕竟是给内部管理员看的,所以我们就不做的那么仔细了(其实还是因为我懒),这期主要讲讲前后端冻结,激活用户状态和删除用户功能


首先在上篇已实现用户列表分页查找功能上,在表格配置的文件中添加两个按钮,冻结(激活)和删除用户

{
        align: "center",
        title: "操作",
        width: 230,
        fixed: "right",
        render: (record) => {
          return (
            <div>
              <Popconfirm
                title="是否删除?"
                onConfirm={_this.clickHandler.bind(_this, record, "delete")}
                okText="是"
                cancelText="否"
                disabled={record.userType == "admin" ? true : false}
              >
                <Button
                  type="danger"
                  disabled={record.userType == "admin" ? true : false}
                >
                  删除
                </Button>
              </Popconfirm>
              <Button
                disabled={record.userType == "admin" ? true : false}
                type={record.isactive ? "danger" : "primary"}
                onClick={_this.clickHandler.bind(_this, record, "allow")}
              >
                {record.isactive ? "禁止" : "允许"}
              </Button>
            </div>
          );
        },
      },

下一步,在ListTable组件上添加删除和冻结用户方法,由于删除是比较敏感操作,所以就不做批量删除了

 

    <ListTable
          tableType="user"
          onTableRef={(child) => {
            this.tableChild = child;
          }}
          showDrawer={this.showDrawer}
          deleteUser={this.deleteUser}
          freezeUser={this.freezeUser}
          changeInfo={this.changeInfo}
          changePage={this.changePage}
    ></ListTable>

在table组件中添加clickHandler事件监听

clickHandler(record, type) {
    switch (type) {
      case "change": //修改
        this.props.changeInfo(record);
        break;
      case "delete": //删除
        this.props.deleteUser(record);
        break;
      case "allow": //冻结
        this.props.freezeUser(record);
        break;
      default:
        break;
    }
  }

在userList界面中进行两个功能的请求,通过用户_id查找用户并操作

冻结,将用户状态设置为false(true)更新数据库并重新渲染:

freezeUser = (record) => {//record是用户在表格内的所有信息,主要获取数据库自动生成的_id就行
    let data = {
      token: this.$utils.getStorage(StorageName.token),
      _id: record._id,
      isactive: !record.isactive,
    };
    this.$axios
      .get(ServerApi.user.freezeUser, {
        params: { crypto: this.$crypto.setCrypto(data) },
      })
      .then((res) => {
        message.success(res.msg);
        this.getUserList();//操作成功后刷新列表
      });
  };

删除,将头像源文件删除,并删除用户信息,更新页面:

 deleteUser = (record) => {
    let data = {
      token: this.$utils.getStorage(StorageName.token),
      _id: record._id,
      headPic: record.headPic,//上传用户头像地址减少服务端二次查找数据库
    };
    this.$axios
      .get(ServerApi.user.delUser, {
        params: { crypto: this.$crypto.setCrypto(data) },
      })
      .then((res) => {
        message.success(res.msg);
        this.getUserList();
      })
      .catch((err) => {});
  };

在服务端新增两个接口,分别做冻结用户和删除用户功能


冻结用户

router.get(Config.ServerApi.freezeUser, Util.checkToken, async (req, res) => {
  if (res._data.userTokenType != "admin") {
    //非管理员
    res.send({
      result: -999,
      msg: "请用管理员账号登录",
    });
    return;
  }
  let freezeRes = await updateData(Mod, res._data._id, {
    isactive: res._data.isactive,
  });
  if (freezeRes) {
    res.send({
      result: 1,
      msg: res._data.isactive ? "激活成功" : "冻结成功",
    });
    return;
  }
  res.send({
    result: 0,
    msg: res._data.isactive ? "激活失败" : "冻结失败",
  });
});


完成后,我们测试一下效果

1.gif


删除用户

router.get(Config.ServerApi.delUser, Util.checkToken, async (req, res) => {
  if (res._data.userTokenType != "admin") {
    //非管理员
    res.send({
      result: -999,
      msg: "请用管理员账号登录",
    });
    return;
  }
  if (
    res._data.headPic &&
    res._data.headPic.length > 0 &&
    res._data.headPic != "public/assets/img/default.gif"
  ) {//判断是否有图片,或者使用了默认图片,默认图片不删
    Util.delPicFile(res._data.headPic);
  }
  deleteRes = await delData(Mod, res._data._id);
  if (deleteRes) {
    res.send({
      result: 1,
      msg: "删除成功",
    });
    return;
  }
  res.send({
    result: 0,
    msg: "删除失败",
  });
});

最后,我们也试试删除功能

1.gif


到此为止,项目的用户管理已经实现90%,剩余一个修改用户的实现留在下一篇,商品管理与用户管理功能实现类似,所以不做过多的说明


相关文章
|
7月前
|
安全 JavaScript 前端开发
购物全返商城平台系统开发步骤流程/需求设计/教程指南/源码功能
开发购物全返商城平台系统涉及多个步骤和考虑因素。
|
监控 Serverless 持续交付
小试牛刀,一键部署电商商城
SAE 仅需一键,极速部署一个微服务电商商城,体验 Serverless 带给您的全托管体验,一起来部署吧!
2504 44
|
前端开发 数据管理
从零开始,搭建一个简单的购物平台(五)
从零开始,搭建一个简单的购物平台(五)
320 1
从零开始,搭建一个简单的购物平台(五)
|
前端开发 数据库连接 数据库
从零开始,搭建一个简单的购物平台(二)
从零开始,搭建一个简单的购物平台(二)
191 1
从零开始,搭建一个简单的购物平台(二)
|
前端开发 测试技术 数据库
从零开始,搭建一个简单的购物平台(三)
从零开始,搭建一个简单的购物平台(三)
110 1
从零开始,搭建一个简单的购物平台(三)
|
前端开发 JavaScript 数据库
从零开始,搭建一个简单的购物平台(十五)前端商城部分
从零开始,搭建一个简单的购物平台(十五)前端商城部分
221 1
从零开始,搭建一个简单的购物平台(十五)前端商城部分
|
前端开发
从零开始,搭建一个简单的购物平台(十六)前端商城部分
从零开始,搭建一个简单的购物平台(十六)前端商城部分
242 1
从零开始,搭建一个简单的购物平台(十六)前端商城部分
|
前端开发 数据库
从零开始,搭建一个简单的购物平台(七)
从零开始,搭建一个简单的购物平台(七)
153 0
从零开始,搭建一个简单的购物平台(七)
|
JavaScript 前端开发
从零开始,搭建一个简单的购物平台(六)
从零开始,搭建一个简单的购物平台(六)
161 0
从零开始,搭建一个简单的购物平台(六)
|
前端开发
从零开始,搭建一个简单的购物平台(九)
从零开始,搭建一个简单的购物平台(九)
232 0
从零开始,搭建一个简单的购物平台(九)
下一篇
DataWorks