赞
踩
用户管理功能实现
前端:
views/user/index.vue
<template> <el-card> <el-row :gutter="20" class="header"> <el-col :span="7"> <el-input placeholder="请输入用户昵称..." clearable v-model="queryForm.query"></el-input> </el-col> <el-button type="button" :icon="Search" @click="initUserList">搜索</el-button> </el-row> <el-table :data="tableData" stripe style="width: 100%"> <el-table-column prop="id" label="#ID" width="80" /> <el-table-column prop="nickName" label="用户昵称" width="200" /> <el-table-column prop="avatarUrl" label="头像" width="200"> <template v-slot="scope"> <img :src="scope.row.avatarUrl" width="50" height="50"/> </template> </el-table-column> <el-table-column prop="openid" label="openID" /> <el-table-column prop="registerDate" label="注册日期" width="200"/> <el-table-column prop="lastLoginDate" label="最后登录日期" width="200"/> </el-table> <el-pagination v-model:currentPage="queryForm.pageNum" v-model:page-size="queryForm.pageSize" :page-sizes="[10, 20, 30, 40,50]" layout="total, sizes, prev, pager, next, jumper" :total="total" @size-change="handleSizeChange" @current-change="handleCurrentChange" /> </el-card> </template> <script setup> import {Search} from '@element-plus/icons-vue' import { ref } from 'vue' import axios from "@/util/axios"; const queryForm=ref({ query:'', pageNum:1, pageSize:10 }) const total=ref(0) const tableData =ref([]) const initUserList=async()=>{ const res=await axios.post("admin/user/list",queryForm.value); tableData.value=res.data.userList; total.value=res.data.total; } initUserList(); const handleSizeChange = (pageSize) => { queryForm.value.pageNum=1; queryForm.value.pageSize=pageSize; initUserList(); } const handleCurrentChange = (pageNum) => { queryForm.value.pageNum=pageNum; initUserList(); } </script> <style lang="scss" scoped> .header{ padding-bottom: 16px; box-sizing: border-box; } .el-pagination{ padding-top: 15px; box-sizing: border-box; } </style>
后端:
@RestController @RequestMapping("/admin/user") public class AdminUserController { @Autowired private IWxUserInfoService wxUserInfoService; /** * 根据条件分页查询用户信息 * @param pageBean * @return */ @RequestMapping("/list") public R list(@RequestBody PageBean pageBean){ System.out.println(pageBean); String query=pageBean.getQuery().trim(); Page<WxUserInfo> page=new Page<>(pageBean.getPageNum(),pageBean.getPageSize()); Page<WxUserInfo> pageResult = wxUserInfoService.page(page, new QueryWrapper<WxUserInfo>().like(StringUtil.isNotEmpty(query),"nickName", query)); Map<String,Object> map=new HashMap<>(); map.put("userList",pageResult.getRecords()); map.put("total",pageResult.getTotal()); return R.ok(map); } }
管理员请求鉴权
package com.java1234.interceptor; import com.java1234.util.JwtUtils; import com.java1234.util.StringUtil; import io.jsonwebtoken.Claims; import org.springframework.web.method.HandlerMethod; import org.springframework.web.servlet.HandlerInterceptor; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; /** * @author java1234_小锋 * @site www.java1234.com * @company 南通小锋网络科技有限公司 * @create 2022-04-06 9:14 */ public class SysInterceptor implements HandlerInterceptor { @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { String path=request.getRequestURI(); System.out.println("path="+path); if(handler instanceof HandlerMethod){ // 判断token是否为空 String token=request.getHeader("token"); System.out.println("token="+token); if(StringUtil.isEmpty(token)){ System.out.println("token为空!"); throw new RuntimeException("签名验证不存在!"); }else{ // 如果token不为空 Claims claims = JwtUtils.validateJWT(token).getClaims(); if(claims==null){ System.out.println("鉴权失败"); throw new RuntimeException("鉴权失败!"); }else{ System.out.println("鉴权成功"); return true; } } }else{ return true; } } }
PageBean
package com.java1234.entity; /** * 分页Model类 * @author java1234_小锋 * @site www.java1234.com * @company Java知识分享网 * @create 2020-02-16 上午 11:05 */ public class PageBean { private int pageNum; // 第几页 private int pageSize; // 每页记录数 private int start; // 起始页 private String query; // 查询参数 public PageBean() { } public PageBean(int pageNum, int pageSize, String query) { this.pageNum = pageNum; this.pageSize = pageSize; this.query = query; } public PageBean(int pageNum, int pageSize) { super(); this.pageNum = pageNum; this.pageSize = pageSize; } public int getPageNum() { return pageNum; } public void setPageNum(int pageNum) { this.pageNum = pageNum; } public int getPageSize() { return pageSize; } public void setPageSize(int pageSize) { this.pageSize = pageSize; } public int getStart() { return (pageNum-1)*pageSize; } public String getQuery() { return query; } public void setQuery(String query) { this.query = query; } }
package com.java1234.controller.admin; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.java1234.entity.PageBean; import com.java1234.entity.R; import com.java1234.entity.WxUserInfo; import com.java1234.service.IWxUserInfoService; import com.java1234.util.StringUtil; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import java.util.HashMap; import java.util.Map; /** * 后台管理-用户Controller控制器 */ @RestController @RequestMapping("/admin/user") public class AdminUserController { @Autowired private IWxUserInfoService wxUserInfoService; /** * 根据条件分页查询用户信息 * @param pageBean * @return */ @RequestMapping("/list") public R list(@RequestBody PageBean pageBean){ System.out.println(pageBean); String query=pageBean.getQuery().trim(); Page<WxUserInfo> page=new Page<>(pageBean.getPageNum(),pageBean.getPageSize()); Page<WxUserInfo> pageResult=wxUserInfoService.page(page,new QueryWrapper<WxUserInfo>().like(StringUtil.isNotEmpty(query),"nickName",query)); Map<String,Object> map=new HashMap<>(); map.put("userList",pageResult.getRecords()); map.put("total",pageResult.getTotal()); return R.ok(map); } }
path: ‘/user’,
import { createRouter, createWebHashHistory } from 'vue-router' const routes = [ { path: '/', name: '首页', component: () => import('../views/layout'), redirect:'/home', children:[ { path: '/home', name: '首页', component: () => import('../views/home/index') }, { path: '/bigType', name: '商品大类', component: () => import('../views/bigType/index') }, { path: '/user', name: '用户管理', component: () => import('../views/user/index') } ] }, { path: '/login', name: 'login', component: () => import('../views/login') } ] const router = createRouter({ history: createWebHashHistory(), routes }) export default router
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。