博客目录
10个用户管理框架demo系统
为什么要开发这个呢?
这次我梳理了下java的框架,看过好多教程和框架成品系统后,发现:
1、视频知识点太细、课程量太多,无法很好吸收
2、开源的框架成品业务功能都太系统,无法专注的来学习框架
所以,我把java从开始到进阶:
console–swing–servlet–structs–ssh–ssm–springboot
加上涉及到maven的,一共10个框架系统,一个一个都撸了出来,这10套框架的好处是:
1、比较系统,可以从入门到进阶,完成一个java核心知识的掌握
2、实操性比较强,可以直接在此基础上,扩展自己想实现的功能
3、每个框架涉及的功能模块极少,只有一个用户管理模块,但是也是个完整的系统,有登陆。这样可以让想学习框架的同学,集中精力去研究。
废话不多说,下面我开始一一介绍这些框架:
Console控制台用户管理系统
实现的功能截图:
实现的功能点:
1、登录
2、用户管理:
新增、修改、查询、删除用户
3、成绩管理:待扩展
核心代码:
Login.java:
package com.code2life.console;
import com.code2life.console.dao.DbConnection;
import com.code2life.console.dao.UserDao;
import com.code2life.console.entity.User;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;
public class Login {
public static String username;
public static String password;
public static String realname;
public static int age;
public static int role;
public static int id;
public static List<User> userList;
static Connection connection;
static ResultSet resultSet;
static PreparedStatement statement;
static Scanner scanner=new Scanner(System.in);
static UserDao userDao;
public static void main(String[] args) throws Exception {
connection = DbConnection.getConnect();
System.out.println("欢迎到来!请先登录!");
System.out.println("输入1进行登录");
while(true){
int i=scanner.nextInt();
switch (i) {
case 1:
login();
break;
default:
System.out.println("输入有误,请重新输入:");
// System.exit(0);
break;
}
}
}
/**
* console系统首页
*/
public static void home(){
System.out.println(" ");
System.out.println(" ");
System.out.println("*****************欢迎登录console-system控制台系统 *************************");
System.out.println("* 功能模块: *");
System.out.println("* 1.用户管理 *");
System.out.println("* 2.成绩管理 *");
System.out.println("* 操作:键盘输入1进入用户管理,2进入成绩管理,3退出系统 *");
System.out.println("************************* ***********************************************");
}
private static void login() throws Exception {
System.out.println("请输入用户名:");
username=scanner.next();
System.out.println("请输入密码:");
password=scanner.next();
userDao = new UserDao();
// 查询用户名、密码
User user = userDao.findUserByNameAndPassWord(username, password);
if (user.getUserName() != null) {
System.out.println("登录成功!");
while(true){
// 进入系统首页
home();
int i=scanner.nextInt();
switch (i) {
case 1:
UserManage.query_user();
while (true){
int j=scanner.nextInt();
switch (j) {
case 1:
UserManage.query_user();
break;
case 2:
UserManage.add_user();
break;
case 3:
UserManage.update_user();
break;
case 4:
UserManage.del_user();
break;
case 5:
break;
default:
System.out.println("输入有误,请重新输入:");
break;
}
break;
}
break;
case 2:
System.exit(0);
case 3:
System.exit(0);
default:
System.out.println("输入有误,请重新输入:");
// System.exit(0);
break;
}
}
}else {
System.out.println("登陆失败!请重新登录:");
login();
}
}
}
UserManage.java
package com.code2life.console;
import com.code2life.console.dao.UserDao;
import com.code2life.console.entity.User;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;
//用户管理模块逻辑类
public class UserManage {
public static List<User> userList;
public static String username;
public static String password;
public static String realname;
public static int age;
public static int role;
public static int id;
static Scanner scanner=new Scanner(System.in);
static UserDao userDao;
/**
* 用户查询
*/
public static void query_user(){
userDao = new UserDao();
userList = new ArrayList<User>();
userList = userDao.queryUserList();
System.out.println("---用户管理-----------------------------------------------------|");
System.out.println("|id |username |password |realname |age |role|");
for (User user1 : userList) {
System.out.println(user1.toString());
}
System.out.println("---1:查询用户 2:新增用户 3:编辑用户 4:删除用户------------------|");
}
/**
* 用户新增
*/
public static void add_user(){
System.out.println("请输入新增的用户信息:");
System.out.println("请输入用户名:");
username=scanner.next();
System.out.println("请输入密码:");
password=scanner.next();
System.out.println("请输入真名:");
realname=scanner.next();
System.out.println("请输入年龄:");
age=Integer.parseInt(scanner.next());
System.out.println("请输入角色:");
role=Integer.parseInt(scanner.next());
userDao = new UserDao();
User add_user = new User(1,username, password, realname, age, role);
userDao.addUserInfo(add_user);
}
/**
* 用户修改
*/
public static void update_user(){
System.out.println("请输入修改的用户信息:");
System.out.println("请输入要修改的用户ID:");
id=Integer.parseInt(scanner.next());
System.out.println("请输入新用户名:");
username=scanner.next();
System.out.println("请输入新密码:");
password=scanner.next();
System.out.println("请输入新真名:");
realname=scanner.next();
System.out.println("请输入新年龄:");
age=Integer.parseInt(scanner.next());
System.out.println("请输入新角色:");
role=Integer.parseInt(scanner.next());
User update_user = new User(id,username, password, realname, age, role);
userDao = new UserDao();
userDao.updateUser(update_user);
}
/**
* 用户删除
*/
public static void del_user(){
System.out.println("请输入删除的用户信息:");
System.out.println("请输入要删除的用户ID:");
id=Integer.parseInt(scanner.next());
userDao = new UserDao();
userDao.deleteUser(id);
}
}
Swing用户管理系统
实现的功能截图:
实现的功能点:
1、登录
2、用户管理:
新增、修改、查询、删除用户
3、成绩管理:待扩展
核心代码:
MainView.java(主窗口):
package com.code2life.swing.view;
import java.awt.EventQueue;
import javax.swing.JFrame;
import javax.swing.JButton;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;
import java.awt.Font;
import javax.swing.JLabel;
import javax.swing.SwingConstants;
import java.awt.SystemColor;
import javax.swing.JPanel;
public class MainView{
private JFrame frame;
private JButton btnNewButton;
private JButton button;
private final JPanel panel = new JPanel();
/**
* Launch the application.
*/
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
public void run() {
try {
MainView window = new MainView();
window.frame.setVisible(true);
} catch (Exception e) {
e.printStackTrace();
}
}
});
}
/**
* Create the application.
*/
public MainView() {
super();
initialize();
}
public MainView(boolean reload) {
initialize();
}
/**
* Initialize the contents of the frame.
*/
private void initialize() {
frame = new JFrame();
frame.setTitle("Swing管理系统");
frame.setBounds(100, 100, 729, 517);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.getContentPane().setLayout(null);
frame.setVisible(true);
panel.setBounds(10, 0, 691, 468);
frame.getContentPane().add(panel);
btnNewButton = new JButton("用户信息管理");
button = new JButton("成绩信息管理");
panel.setLayout(null);
btnNewButton.setBounds(63, 97, 272, 58);
panel.add(btnNewButton);
btnNewButton.setFont(new Font("宋体", Font.PLAIN, 24));
button.setBounds(387, 97, 272, 58);
panel.add(button);
button.setFont(new Font("宋体", Font.PLAIN, 24));
JLabel lblNewLabel = new JLabel("Swing 管 理 系 统");
lblNewLabel.setBounds(63, 20, 596, 40);
panel.add(lblNewLabel);
lblNewLabel.setForeground(SystemColor.text);
lblNewLabel.setHorizontalAlignment(SwingConstants.CENTER);
lblNewLabel.setFont(new Font("宋体", Font.BOLD, 34));
BtnListener btn = new BtnListener();
button.addActionListener(btn);
btnNewButton.addActionListener(btn);
}
public class BtnListener implements ActionListener {
public void actionPerformed(ActionEvent e) {
if (e.getSource() == btnNewButton) {
// frame.dispose();
UserView carInfoView = new UserView();
} else if (e.getSource() == button) {
//RentalCarInfoView carInfoView = new RentalCarInfoView();
// System.exit(0);
}
}
}
}
UserView.java(用户管理窗口):
package com.code2life.swing.view;
import java.awt.EventQueue;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.List;
import java.util.Vector;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.ScrollPaneConstants;
import javax.swing.event.ListSelectionEvent;
import javax.swing.event.ListSelectionListener;
import javax.swing.table.DefaultTableModel;
import javax.swing.table.TableModel;
import com.code2life.swing.entity.User;
import com.code2life.swing.dao.UserDao;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JTextField;
import javax.swing.ListSelectionModel;
import javax.swing.JButton;
public class UserView {
private JFrame frame;
private JTable table;
private JTextField textField;
private JTextField textField_1;
private JTextField textField_2;
private JTextField textField_3;
private JTextField textField_4;
private JTextField textField_5;
JScrollPane scrollPane;
private JButton button_1;
private JButton button_2;
private JButton button_3;
private JButton button_4;
private TableModel model;
private UserDao userDao;
/**
* Launch the application.
*/
private Vector<String> columnName = new Vector();
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
public void run() {
try {
UserView window = new UserView();
window.frame.setVisible(true);
} catch (Exception e) {
e.printStackTrace();
}
}
});
}
/**
* Create the application.
*/
public UserView() {
initialize();
}
/**
* Initialize the contents of the frame.
*/
private void initialize() {
frame = new JFrame();
frame.setTitle("swing管理系统");
frame.setBounds(100, 100, 567, 504);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
JPanel panel_1 = new JPanel();
panel_1.setBounds(422, 10, 129, 455);
frame.getContentPane().setLayout(null);
frame.getContentPane().add(panel_1);
panel_1.setLayout(null);
JLabel label = new JLabel("ID");
label.setBounds(38, 0, 54, 15);
panel_1.add(label);
textField = new JTextField();
textField.setBounds(27, 20, 77, 21);
panel_1.add(textField);
textField.setColumns(10);
JLabel lblNewLabel = new JLabel("用户名");
lblNewLabel.setBounds(38, 50, 54, 15);
panel_1.add(lblNewLabel);
textField_1 = new JTextField();
textField_1.setBounds(27, 70, 77, 21);
panel_1.add(textField_1);
textField_1.setColumns(10);
JLabel lblNewLabel_1 = new JLabel("密码");
lblNewLabel_1.setBounds(38, 100, 54, 15);
panel_1.add(lblNewLabel_1);
textField_2 = new JTextField();
textField_2.setBounds(27, 120, 77, 21);
panel_1.add(textField_2);
textField_2.setColumns(10);
JLabel lblNewLabel_2 = new JLabel("真实姓名");
lblNewLabel_2.setBounds(38, 150, 54, 15);
panel_1.add(lblNewLabel_2);
textField_3 = new JTextField();
textField_3.setBounds(27, 170, 77, 21);
panel_1.add(textField_3);
textField_3.setColumns(10);
JLabel lblNewLabel_3 = new JLabel("年龄");
lblNewLabel_3.setBounds(38, 200, 54, 15);
panel_1.add(lblNewLabel_3);
textField_4 = new JTextField();
textField_4.setBounds(27, 220, 77, 21);
panel_1.add(textField_4);
textField_4.setColumns(10);
JLabel lblNewLabel_4 = new JLabel("角色");
lblNewLabel_4.setBounds(38, 250, 54, 15);
panel_1.add(lblNewLabel_4);
textField_5 = new JTextField();
textField_5.setBounds(27, 270, 77, 21);
panel_1.add(textField_5);
textField_5.setColumns(10);
// 操作按钮
button_1 = new JButton("添加");
button_1.setBounds(27, 307, 77, 23);
panel_1.add(button_1);
button_2 = new JButton("修改");
button_2.setBounds(27, 340, 77, 23);
panel_1.add(button_2);
button_3 = new JButton("删除");
button_3.setBounds(27, 373, 77, 23);
panel_1.add(button_3);
button_4 = new JButton("刷新");
button_4.setBounds(27, 406, 77, 23);
panel_1.add(button_4);
scrollPane = new JScrollPane();
scrollPane.setBounds(0, 0, 393, 455);
frame.getContentPane().add(scrollPane);
scrollPane.setHorizontalScrollBarPolicy(ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER);
scrollPane.setToolTipText("用户信息");
// 初始化表格数据
columnName.add("用户ID");
columnName.add("用户名");
columnName.add("密码");
columnName.add("真实姓名");
columnName.add("年龄");
columnName.add("角色");
Vector rowData = new Vector();
userDao = new UserDao();
List<User> list = userDao.queryUserList();
if (list != null && list.size() > 0) {
for (int i=0;i<list.size();i++) {
User user = list.get(i);
Vector vector = new Vector();
vector.add(user.getId());
vector.add(user.getUserName());
vector.add(user.getPassWord());
vector.add(user.getRealName());
vector.add(user.getAge());
vector.add(user.getRole());
rowData.add(vector);
}
}
model = new DefaultTableModel(rowData, columnName) {
// 设置表格中的数据不可以编辑
public boolean isCellEditable(int r,int c) {
return false;
}
};
table = new JTable(model);
scrollPane.setViewportView(table);
// 只可单选
table.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
table.getTableHeader().setReorderingAllowed(false);
// 表格监听事件
table.getSelectionModel().addListSelectionListener(new ListSelectionListener() {
@Override
public void valueChanged(ListSelectionEvent e) {
// TODO Auto-generated method stub
if (!e.getValueIsAdjusting()) {
//支持拖动多选
// int[]rows = table.getSelectedRows();
// int[]cols = table.getSelectedColumns();//选中的列
//for (int i : rows) {
//System.out.println("#方法一:\t" + table.getValueAt(i, 0) + "\t" + table.getValueAt(i, 1));
//}
//支持单选
int row=table.getSelectedRow();//选中行
int col=table.getSelectedColumn();//选中列
System.out.println("方法一:"+table.getValueAt(row, 0)+"\t"+table.getValueAt(row,4));
// 綁定值
textField.setText(String.valueOf(table.getValueAt(row, 0)));
textField_1.setText(String.valueOf(table.getValueAt(row, 1)));
textField_2.setText(String.valueOf(table.getValueAt(row, 2)));
textField_3.setText(String.valueOf(table.getValueAt(row, 3)));
textField_4.setText(String.valueOf(table.getValueAt(row, 4)));
}
}
});
BtnListener btn = new BtnListener();
button_3.addActionListener(btn);
button_2.addActionListener(btn);
button_1.addActionListener(btn);
button_4.addActionListener(btn);
}
public class BtnListener implements ActionListener {
public void actionPerformed(ActionEvent e) {
if (e.getSource() == button_1) {
// 添加事件
String username = textField_1.getText();
String password = textField_2.getText().trim();
String realname = textField_3.getText().trim();
String t_age = textField_4.getText().trim();
String t_role = textField_5.getText().trim();
if (username == null || "".equals(username)) {
JOptionPane.showMessageDialog(null, "用户名不能为空");
return;
}
if (password == null || "".equals(password)) {
JOptionPane.showMessageDialog(null, "密码不能为空");
return;
}
if (realname == null || "".equals(realname)) {
JOptionPane.showMessageDialog(null, "真实姓名不能为空");
return;
}
if (t_age == null || "".equals(t_age)) {
JOptionPane.showMessageDialog(null, "年龄不能为空");
return;
}
if (t_role == null || "".equals(t_role)) {
JOptionPane.showMessageDialog(null, "角色不能为空");
return;
}
int age = Integer.parseInt(t_age);
int role = Integer.parseInt(t_role);
User add_user = new User(1,username,password,realname,age,role);
userDao = new UserDao();
userDao.addUserInfo(add_user);
JOptionPane.showMessageDialog(null, "添加成功");
} else if (e.getSource() == button_2) {
// 修改事件
int row = table.getSelectedRow();
if (row <= 0) {
JOptionPane.showMessageDialog(null, "请选择一条记录再执行修改操作");
return;
}
int id = (int) table.getValueAt(row, 0);
String username = textField_1.getText().trim();
if (username == null || "".equals(username)) {
JOptionPane.showMessageDialog(null, "用户名不能为空");
return;
}
String password = textField_2.getText().trim();
String realname = textField_3.getText().trim();
String t_age = textField_4.getText().trim();
String t_role = textField_5.getText().trim();
int age = 1;
if (t_age != null || t_age != "") {
age = Integer.parseInt(t_age);
}
int role = 1;
if (t_role != null || t_role != "") {
role = Integer.parseInt(t_role);
}
User update_user = new User(id,username,password,realname,age,role);
userDao = new UserDao();
userDao.updateUser(update_user);
JOptionPane.showMessageDialog(null, "修改成功");
} else if (e.getSource() == button_3) {
// 删除事件
int row = table.getSelectedRow();
if (row <= 0) {
JOptionPane.showMessageDialog(null, "请选择一条记录再执行删除操作");
return;
}
int id = (int) table.getValueAt(row, 0);
userDao = new UserDao();
userDao.deleteUser(id);
JOptionPane.showMessageDialog(null, "删除成功");
} else if (e.getSource() == button_4) {
// 刷新表格数据事件
Object carInfos[][] = {};
Vector rowData = new Vector();
userDao = new UserDao();
List<User> list = userDao.queryUserList();
if (list != null && list.size() > 0) {
for (int i = 0; i < list.size(); i++) {
User user = list.get(i);
Vector vector = new Vector();
vector.add(user.getId());
vector.add(user.getUserName());
vector.add(user.getPassWord());
vector.add(user.getRealName());
vector.add(user.getAge());
vector.add(user.getRole());
rowData.add(vector);
}
}
model = new DefaultTableModel(rowData, columnName) {
// 设置表格中的数据不可以编辑
public boolean isCellEditable(int r,int c) {
return false;
}
};
table = new JTable(model);
scrollPane.setViewportView(table);
// 表格监听事件
table.getSelectionModel().addListSelectionListener(new ListSelectionListener() {
@Override
public void valueChanged(ListSelectionEvent e) {
// TODO Auto-generated method stub
if (!e.getValueIsAdjusting()) {
//支持拖动多选
// int[]rows = table.getSelectedRows();
// int[]cols = table.getSelectedColumns();//选中的列
//for (int i : rows) {
//System.out.println("#方法一:\t" + table.getValueAt(i, 0) + "\t" + table.getValueAt(i, 1));
//}
//支持单选
int row=table.getSelectedRow();//选中行
int col=table.getSelectedColumn();//选中列
System.out.println("方法一:"+table.getValueAt(row, 0)+"\t"+table.getValueAt(row,4));
// 綁定值
textField.setText(String.valueOf(table.getValueAt(row, 0)));
textField_1.setText(String.valueOf(table.getValueAt(row, 1)));
textField_2.setText(String.valueOf(table.getValueAt(row, 2)));
textField_3.setText(String.valueOf(table.getValueAt(row, 3)));
textField_4.setText(String.valueOf(table.getValueAt(row, 4)));
}
}
});
}
}
}
}
Servlet用户管理系统
实现的功能截图:
实现的功能点:
1、登录
2、用户管理:
新增、修改、查询、删除用户
3、成绩管理:待扩展
核心代码:
用户列表Servlet
UserViewServlet.java:
package com.code2life.servlet.view;
import java.io.IOException;
import java.util.List;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import com.code2life.servlet.dao.UserDao;
import com.code2life.servlet.entity.User;
/**
* 用户列表servlet类
* @author whm
*
*/
public class UserViewServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
private static UserDao userDao;
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
System.out.println("进来了UserView。。。。。");
int id = Integer.parseInt(request.getParameter("id"));
// 查询当前用户数据
User user = queryUserByID(id);
if (user == null) {
response.sendRedirect(request.getContextPath()+"/user_list.jsp");
}else {
request.setAttribute("user", user);
request.getRequestDispatcher("/user_view.jsp").forward(request, response);
}
}
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
// TODO Auto-generated method stub
this.doPost(req, resp);
}
/**
* 查看当前用户信息
* @param id
* @return
*/
protected User queryUserByID(Integer id){
System.out.println("进来了queryUserByID。。。。。");
// 查询数据库,验证登录用户名密码
userDao = new UserDao();
User user = userDao.findUserByPK(id);
return user;
}
}
用户新增Servlet
UserAddServlet.java:
package com.code2life.servlet.view;
import java.io.IOException;
import java.util.List;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import com.code2life.servlet.dao.UserDao;
import com.code2life.servlet.entity.User;
/**
* 用户列表servlet类
* @author whm
*
*/
public class UserAddServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
private static UserDao userDao;
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
System.out.println("进来了UserAdd。。。。。");
String userName = request.getParameter("userName");
String passWord = request.getParameter("passWord");
String realName = request.getParameter("realName");
int age = Integer.parseInt(request.getParameter("age"));
int role = Integer.parseInt(request.getParameter("role"));
User user = new User(1, userName, passWord, realName, age, role);
//新增用户
int result = addUser(user);
if (result <= 0) {
response.sendRedirect(request.getContextPath()+"/user_add.jsp");
}else {
//新增数据后查询
List<User> userList = new UserDao().queryUserList();
request.setAttribute("userList", userList);
request.getRequestDispatcher("/user_list.jsp").forward(request, response);
}
}
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
// TODO Auto-generated method stub
this.doPost(req, resp);
}
/**
* 新增用户
*/
protected int addUser(User user) {
System.out.println("进来了userAdd。。。。。");
// 查询数据库,验证登录用户名密码
userDao = new UserDao();
int result = userDao.addUserInfo(user);
return result;
}
}
structs用户管理系统
实现的功能截图:
实现的功能点:
1、登录
2、用户管理:
新增、修改、查询、删除用户
3、成绩管理:待扩展
核心代码:
用户列表action
SelectUserAction.java:
package com.code2life.structs.action.operation;
import java.util.List;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import com.code2life.structs.action.SuperAction;
import com.code2life.structs.dao.UserDao;
import com.code2life.structs.entity.User;
import com.opensymphony.xwork2.ActionContext;
public class SelectUserAction extends SuperAction {
/**
*
*/
private static final long serialVersionUID = 117714108782554234L;
private String userName;
public HttpServletResponse response;
public HttpServletRequest request;
@Override
public String execute() {
request = (HttpServletRequest)ActionContext.getContext().get(org.apache.struts2.StrutsStatics.HTTP_REQUEST);
System.out.println("userName:");
System.out.println(userName);
//查询指定用户信息
List<User> selectList = new UserDao().findUserByName(userName);
mapRequest.put("selectList", selectList);
System.out.println("selectList.size():");
System.out.println(selectList.size());
// request.setAttribute("selectList", selectList);
if(!selectList.equals(null)) {
return SUCCESS;
} else {
return ERROR;
}
}
public String selectAllUser() {
//查询所有用户信息
List<User> selectAllList = new UserDao().queryUserList();
mapRequest.put("selectList", selectAllList);
return SUCCESS;
}
public String toSelectPage() {
return "toSelectPage";
}
public String getUserName() {
return userName;
}
public void setUserName(String userName) {
this.userName = userName;
}
}
SSH用户管理系统
实现的功能截图:
实现的功能点:
1、登录
2、用户管理:
新增、修改、查询、删除用户
3、成绩管理:待扩展
核心代码:
UserAction.java
package com.code2life.ssh.action;
import java.util.ArrayList;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;
import org.apache.struts2.ServletActionContext;
import com.code2life.ssh.entity.User;
import com.code2life.ssh.util.Constant;
import com.code2life.ssh.service.UserService;
import com.opensymphony.xwork2.ActionSupport;
public class UserAction extends ActionSupport{
private UserService userService;
private Map<String, Object> jsonMap=null;
public void setJsonMap(Map<String, Object> jsonMap) {
this.jsonMap = jsonMap;
}
public Map<String, Object> getJsonMap() {
return jsonMap;
}
public void setUserService(UserService userService){
this.userService=userService;
}
public UserService getUserService(){
return userService;
}
/**
* 登录
* @return
*/
public String login() {
System.out.println("inLogin!!!");
HttpServletRequest request = ServletActionContext.getRequest();
HttpSession session = request.getSession();
String account = request.getParameter("account");
String password = request.getParameter("password");
if(userService.loginCheck(account,password)==true){
Integer userId=userService.loadUserId(account);
session.setAttribute("userId", userId);
// UserInfo userInfo=userInfoService.getUserInfoByUserId(userId);
// userInfo.setUserRecentLoginTime(new Date());
// userInfoService.update(userInfo);
return Constant.SUCCESS;
}else {
return Constant.FAIL;
}
}
/**
* 校验密码
* @return
*/
public String passwordCheck(){
HttpServletRequest request = ServletActionContext.getRequest();
jsonMap=new HashMap<String, Object>();
String password=request.getParameter("password");
String account=request.getParameter("account");
Boolean match=userService.loginCheck(account,password);
jsonMap.put("valid", match);
return "jsonMap";
}
/**
* 新增用户
*/
public void createUser(){
HttpServletRequest request = ServletActionContext.getRequest();
HttpSession session = request.getSession();
jsonMap=new HashMap<String,Object>();
Integer userId=(Integer)session.getAttribute("userId");
String username=request.getParameter("username");
String password=request.getParameter("password");
String realname=request.getParameter("realname");
Integer age=Integer.valueOf(request.getParameter("age"));
Integer role=Integer.valueOf(request.getParameter("role"));
userService.saveUser(username, password, realname, age, role);
}
/**
* 获取总的分页数
* @return
*/
public String getUserTotalPages(){
HttpServletRequest request = ServletActionContext.getRequest();
HttpSession session = request.getSession();
jsonMap=new HashMap<String,Object>();
Integer userId=(Integer)session.getAttribute("userId");
Integer totalPages=userService.getUserTotalPages(userId);
System.out.println("userId:"+userId+"totalPages"+totalPages);
jsonMap.put("totalPages", totalPages);
return "jsonMap";
}
/**
* 获取用户信息
* @return
*/
public String getUser(){
HttpServletRequest request = ServletActionContext.getRequest();
HttpSession session = request.getSession();
jsonMap=new HashMap<String,Object>();
Integer pageNum=Integer.parseInt(request.getParameter("Page"));
Integer userId=(Integer)session.getAttribute("userId");
List<User> userList=userService.getUserList(userId, pageNum, Constant.USER_SIZE);
Integer showSize=userList.size();
jsonMap.put("showSize", showSize);
jsonMap.put("userList", userList);
return "jsonMap";
}
/**
* 编辑用户
*/
public String updateUser(){
HttpServletRequest request = ServletActionContext.getRequest();
Integer userId=Integer.valueOf(request.getParameter("edit_user_id"));
String username=(String)request.getParameter("edit_user_name");
String password=(String)request.getParameter("edit_pass_word");
String realname=(String)request.getParameter("edit_real_name");
Integer age=Integer.valueOf(request.getParameter("edit_age"));
Integer role=Integer.valueOf(request.getParameter("edit_role"));
System.out.println(userId+" "+username+" "+password);
userService.updateUser(userId,username,password,realname,age,role);
return Constant.SUCCESS;
}
public String getUserInfo(Integer userId){
HttpServletRequest request = ServletActionContext.getRequest();
HttpSession session = request.getSession();
jsonMap = new HashMap<String, Object>();
System.out.println("!!!22222"+userId);
User userInfo= userService.getUserByUserId(userId);
jsonMap.put("userInfo", userInfo);
return "jsonMap";
}
public String deleteUser(){
HttpServletRequest request = ServletActionContext.getRequest();
HttpSession session = request.getSession();
Integer userId=(Integer)Integer.valueOf(request.getParameter("id"));
System.out.println("!!!333333333"+userId);
userService.deleteUser(userId);
return Constant.SUCCESS;
}
public String execute(){
System.out.println("111222333");
return Constant.SUCCESS;
}
}
SSH+Maven用户管理系统
实现的功能截图:
实现的功能点:
1、登录
2、用户管理:
新增、修改、查询、删除用户
3、成绩管理:待扩展
核心代码:
和SSH框架的代码差不多,可复用
SSM用户管理系统
实现的功能截图:
实现的功能点:
1、登录
2、用户管理:
新增、修改、查询、删除用户
3、成绩管理:待扩展
核心代码:
这里使用了注解,可以看下:
UserController.java:
package com.code2life.ssm.controller;
import java.lang.reflect.Method;
import java.util.List;
import com.code2life.ssm.domain.User;
import com.code2life.ssm.service.AllService;
import com.code2life.ssm.vo.Page;
import com.code2life.ssm.vo.RespEntity;
import com.google.gson.Gson;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.servlet.ModelAndView;
@Controller
@Transactional
public class UserController extends BaseAction {
@Autowired
private AllService allService;
/**
* 跳转到用户管理页面
*
* @param model
* @return
*/
@RequestMapping("/goUserMange")
public ModelAndView goUserMange(Model model) {
ModelAndView mav = new ModelAndView("user-manage");
return mav;
}
/**
* 查询用户列表
*
* @param page
* @return
*/
@RequestMapping(value = "/user/list", method = {RequestMethod.POST, RequestMethod.GET}, produces = "application/json;charset=UTF-8")
@ResponseBody
public String getUserList(Page page) {
int count = allService.getUserService().countUser();
List<User> list = allService.getUserService().queryUserList(page);
page.caculatestart();
RespEntity respEntity = new RespEntity(0, "成功");
respEntity.setCount(count);
respEntity.setData(list);
Gson gson = new Gson();
return gson.toJson(respEntity);
}
/**
* 删除用户信息
* @param id
* @return
*/
@RequestMapping("/user/delete")
public ModelAndView delstu(Integer id) {
allService.getUserService().deleteUser(id);
ModelAndView mav = new ModelAndView("user-manage");
return mav;
}
/**
* 跳转到修改页面,初始化数据
* @param id
* @param model
* @return
*/
@RequestMapping("/goUpdateUser")
public String goUpdate(Integer id,Model model) {
User user = allService.getUserService().queryUserByPK(id);
model.addAttribute("user",user);
return "user-update";
}
/**
* 修改用户信息
* @param id
* @param user
* @return
*/
@RequestMapping(value = "/user/update", method = RequestMethod.POST)
public String updateUser(Integer id, User user) {
user.setId(id);
allService.getUserService().updateUser(user);
ModelAndView mav = new ModelAndView("user-manage");
return "user-manage";
}
/**
* 跳转到新增用户界面
* @param model
* @return
*/
@RequestMapping("/goAddUser")
public ModelAndView goAddUser(Model model) {
ModelAndView mav = new ModelAndView("user-add");
return mav;
}
/**
* 新增用户
* @param user
* @return
*/
@RequestMapping(value = "/user/add")
public String addUserInfo(User user) {
this.getAllService().getUserService().addUserInfo(user);
return "user-manage";
}
}
SSM+Maven用户管理系统
实现的功能截图:
实现的功能点:
1、登录
2、用户管理:
新增、修改、查询、删除用户
3、成绩管理:待扩展
核心代码:
和SSM的代码差不多,可以服用
springBoot用户管理系统
实现的功能截图:
实现的功能点:
1、登录
2、用户管理:
新增、修改、查询、删除用户
3、成绩管理:待扩展
核心代码:
UserApi.java:
package com.code2life.sp.api;
import com.code2life.sp.domain.User;
import com.code2life.sp.service.UserService;
import com.code2life.sp.utils.PageBean;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.ModelMap;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
@Controller
@RequestMapping("/user")
public class UserApi {
@Autowired
private UserService userService;
/**
* 跳转到用户管理页面
*
* @param model
* @return
*/
/**
* 用户管理列表
* @return
*/
@RequestMapping("index")
public String index(ModelMap mp, PageBean pageBean){
pageBean = userService.findByPageBean(pageBean);
mp.put("pageBean", pageBean);
return "user/index";
}
/**
* 根据id删除一条求用户记录
* @return
*/
@RequestMapping("delete")
@ResponseBody
public Boolean deleteUser(String id ){
return userService.deleteUser(Integer.parseInt(id));
}
/**
* @description: 编辑用户时回显用户信息
* @return String
*/
@RequestMapping("view")
@ResponseBody
public User viewUser(String id){
User user = userService.queryUserByPK(Integer.parseInt(id));
return user;
}
/**
* @description: 更新用户记录
* @return boolean
*/
@RequestMapping("update")
@ResponseBody
public boolean updateUser(User tUser){
boolean result = userService.updateUser(tUser);
if(result){
return true;
}else{
return false;
}
}
/**
* 验证账号是否重复
* @return boolean
*/
@RequestMapping("findIsReAccouont")
@ResponseBody
public boolean findIsReAccouont(String account){
boolean bool = userService.findIsReAccouont(account);
return bool;
}
/**
* 新增用户
* @param user
* @return
*/
@RequestMapping(value = "add")
@ResponseBody
public boolean addUserInfo(User user) {
return userService.addUserInfo(user);
}
}
数据库表映射类
UserMapper.java
package com.code2life.sp.dao;
import com.code2life.sp.domain.User;
import org.apache.ibatis.annotations.Param;
import java.util.List;
public interface UserMapper {
int deleteByPrimaryKey(Integer id);
int insert(User record);
int insertSelective(User record);
User selectByPrimaryKey(Integer id);
int updateByPrimaryKeySelective(User record);
int updateByPrimaryKey(User record);
/** 注意: 以下为自己生成的方法,防止覆盖 */
List<User> findByPageBean();
/**
* 查询用户数据量
* @return
*/
int countUser();
/**
* 根据用户名、密码查询
* @param userName
* @param passWord
* @return
*/
List<User> findUserByNameAndPassWord(@Param("userName") String userName, @Param("passWord") String passWord);
/**
* 校验账号是否已经存在
* @param account
* @return
*/
Integer findIsReAccouont(String account);
}
springBoot+vue前后端分离用户管理系统
实现的功能截图:
实现的功能点:
1、登录
2、用户管理:
新增、修改、查询、删除用户
3、成绩管理:待扩展
核心代码:
springBoot后端:
UserApi.java:
package com.code2life.admin.api;
import com.code2life.admin.bcrypt.BCryptPasswordEncoder;
import com.code2life.admin.domain.User;
import com.code2life.admin.service.UserService;
import com.code2life.admin.utils.JacksonUtil;
import com.code2life.admin.utils.ResponseUtil;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiResponse;
import io.swagger.annotations.ApiResponses;
import org.apache.shiro.authz.annotation.RequiresPermissions;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.util.StringUtils;
import org.springframework.web.bind.annotation.*;
import javax.validation.constraints.NotNull;
import java.util.ArrayList;
import java.util.List;
import static com.code2life.admin.utils.SysResponseCode.*;
/**
* @Author: wen
* @Date: 2021/3/19 11:11
* @Description: 用户管理接口控制器
* @Version: 1.0
*/
@RestController
@RequestMapping("/sys/user")
@Api(value = "系统用户操作接口API")
@CrossOrigin
public class UserApi {
@Autowired
private UserService userService;
/**
* 用户信息校验
* @param user
* @return
*/
private Object validate(User user) {
if(user==null){
return ResponseUtil.vueBadArgument();
}
if(StringUtils.isEmpty(user.getUserName())) {
return ResponseUtil.vueBadArgument();
}
String name = user.getRealName();
if (StringUtils.isEmpty(name)) {
return ResponseUtil.vueBadArgument();
}
String password = user.getPassWord();
if (StringUtils.isEmpty(password) || password.length() < 6) {
return ResponseUtil.vueFail(SYS_INVALID_PASSWORD, "管理员密码长度不能小于6");
}
return null;
}
/**
* 查询系统用户列表
* @param userName
* @param page
* @param limit
* @return
*/
@ApiOperation(value = "查询用户列表接口", notes = "code返回0时请求成功")
@ApiResponses(value = {
@ApiResponse(code = 0, message = "请求成功"),
@ApiResponse(code = -1, message = "请求错误")
})
@GetMapping("/list")
public Object list(String userName, @RequestParam(defaultValue = "1") Integer page,
@RequestParam(defaultValue = "10") Integer limit){
List<User> list = userService.querySelective(userName, page, limit);
return ResponseUtil.vueOkList(list);
}
/**
* 新增系统用户
* @param body
* @return
*/
@PostMapping("/add")
public Object addSysUser(@RequestBody String body){
User user = JacksonUtil.parseObject(body, "user", User.class);
//用户数据校验及处理
Object error = validate(user);
if (error != null) {
return error;
}
String userName = user.getUserName();
List<User> userList = userService.findByUserCode(userName);
if(userList!=null && userList.size()>0){
return ResponseUtil.vueFail(SYS_CODE_EXIST, "系统用户已经存在");
}
String rawPassword = user.getPassWord();
// BCryptPasswordEncoder encoder = new BCryptPasswordEncoder();
// String encodedPassword = encoder.encode(rawPassword);
user.setPassWord(rawPassword);
userService.add(user);
return ResponseUtil.vueOk(user);
}
/**
* 查看用户详情信息
* @param id
* @return
*/
@GetMapping("/view")
public Object view(@NotNull Integer id){
User sysUser = userService.findById(id);
return ResponseUtil.vueOk(sysUser);
}
/**
* 删除用户
* @param user
* @return
*/
@PostMapping("/delete")
public Object delete(@RequestBody User user) {
if(user==null || StringUtils.isEmpty(user.getId())){
return ResponseUtil.vueBadArgument();
}
userService.deleteById(user.getId());
return ResponseUtil.vueOk();
}
/**
* 更新用户信息
* @param body
* @return
*/
@PostMapping("/update")
public Object update(@RequestBody String body) {
User user = JacksonUtil.parseObject(body, "user", User.class);
userService.updateById(user);
return ResponseUtil.vueOk();
}
}
Vue前端:
User.js:
import request from '@/utils/request'
export function fetchList(query) {
return request({
url: '/sys/user/list',
method: 'get',
params: query
})
}
export function createSysUser(data) {
return request({
url: '/sys/user/add',
method: 'post',
data
})
}
export function deleteSysUser(data) {
return request({
url: '/sys/user/delete',
method: 'post',
data
})
}
export function updateSysUser(data) {
return request({
url: '/sys/user/update',
method: 'post',
data
})
}
// 获取用户拥有权限
export function getUserRoles(data) {
return request({
url: '/sys/user/roles',
method: 'get',
params: { id: data }
})
}
export function getMallUserList(token) {
return request({
url: '/mall/user/list',
method: 'get',
params: { token }
})
}
export function addMallUser() {
return request({
url: '/mall/user/add',
method: 'post'
})
}
用户管理页面:
index.vue:
<template>
<div class="app-container">
<div class="filter-container">
<el-input v-model="listQuery.userName" :placeholder="$t('user.name')" style="width: 200px;" class="filter-item"
@keyup.enter.native="handleFilter"/>
<el-button v-waves class="filter-item" type="primary" icon="el-icon-search" @click="handleFilter">
{{ $t('table.search') }}
</el-button>
<el-button class="filter-item" style="margin-left: 10px;" type="primary" icon="el-icon-edit"
@click="handleCreate">
{{ $t('table.add') }}
</el-button>
<el-button v-waves :loading="downloadLoading" class="filter-item" type="primary" icon="el-icon-download"
@click="handleDownload">
{{ $t('table.export') }}
</el-button>
</div>
<el-table
:key="tableKey"
v-loading="listLoading"
:data="list"
border
fit
highlight-current-row
style="width: 100%;">
<!-- @sort-change="sortChange"-->
<el-table-column :label="$t('table.id')" prop="id" sortable="custom" width="80">
<template slot-scope="scope">
<span>{{ scope.row.id }}</span>
</template>
</el-table-column>
<el-table-column :label="$t('common.usercode')" width="80px" align="center">
<template slot-scope="scope">
<span>{{ scope.row.userName }}</span>
</template>
</el-table-column>
<el-table-column :label="$t('common.username')" min-width="100px" align="center">
<template slot-scope="scope">
<span>{{ scope.row.realName}}</span>
</template>
</el-table-column>
<el-table-column :label="$t('user.age')" width="135px" align="center">
<template slot-scope="scope">
<span>{{ scope.row.age}}</span>
</template>
</el-table-column>
<el-table-column :label="$t('user.roles')" class-name="status-col" width="80">
<template slot-scope="scope">
<el-tag :type="scope.row.role | statusFilter">
{{scope.row.role | formatStatus}}
</el-tag>
</template>
</el-table-column>
<el-table-column :label="$t('table.actions')" align="center" width="200" class-name="small-padding fixed-width">
<template slot-scope="{row}">
<el-button type="primary" size="mini" @click="handleUpdate(row)">
{{ $t('table.edit') }}
</el-button>
<el-button v-if="row.status!='deleted'" size="mini" type="danger" @click="handleDelete(row)">
{{ $t('table.delete') }}
</el-button>
</template>
</el-table-column>
</el-table>
<pagination v-show="total>0" :total="total" :page.sync="listQuery.page" :limit.sync="listQuery.limit"
@pagination="getList"/>
<!--此处为用户信息弹出框-->
<el-dialog :title="textMap[dialogStatus]" :visible.sync="dialogFormVisible" width="578px">
<el-form ref="dataForm" :rules="rules" :model="temp" label-position="right" label-width="100px"
style="margin-left:20px;">
<el-form-item :label="$t('common.usercode')" prop="userName">
<el-input v-model="temp.userName"/>
</el-form-item>
<el-form-item :label="$t('common.username')" prop="realName">
<el-input v-model="temp.realName"/>
</el-form-item>
<el-form-item :label="$t('user.password')" prop="passWord">
<el-input v-model="temp.passWord"/>
</el-form-item>
<el-form-item :label="$t('user.age')">
<el-input v-model="temp.age" style="margin-top:8px;"/>
</el-form-item>
<el-form-item :label="$t('user.roles')">
<el-select v-model="temp.role" class="filter-item" placeholder="Please select">
<el-option v-for="item in ageMap" :key="item.key" :label="item.display_name" :value="item.key"/>
</el-select>
</el-form-item>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button @click="dialogFormVisible = false">
{{ $t('table.cancel') }}
</el-button>
<el-button type="primary" @click="dialogStatus==='create'?createData():updateData()">
{{ $t('table.confirm') }}
</el-button>
</div>
</el-dialog>
<el-dialog :visible.sync="dialogPvVisible" title="Reading statistics">
<el-table :data="pvData" border fit highlight-current-row style="width: 100%">
<el-table-column prop="key" label="Channel"/>
<el-table-column prop="pv" label="Pv"/>
</el-table>
<span slot="footer" class="dialog-footer">
<el-button type="primary" @click="dialogPvVisible = false">{{ $t('table.confirm') }}</el-button>
</span>
</el-dialog>
</div>
</template>
<script>
import {fetchList, deleteSysUser, createSysUser, updateSysUser, getUserRoles} from '@/api/user'
import waves from '@/directive/waves' // Waves directive
import Pagination from '@/components/Pagination' // Secondary package based on el-pagination
const ageMap = [
{key: 0, display_name: '普通用户'},
{key: 1, display_name: '管理员'},
]
const statusMap = [
{key: 1, display_name: '生效'},
{key: 0, display_name: '锁定'},
{key: 2, display_name: '注销'}
]
export default {
name: 'User',
components: {Pagination},
directives: {waves},
filters: {
statusFilter(status) {
const statusMap = {
1: 'success',
0: 'warning',
}
return statusMap[status]
},
formatStatus(status) {
const statusMap = {
1: '管理员',
0: '普通用户',
}
return statusMap[status]
},
},
data() {
return {
tableKey: 0,
list: null,
total: 0,
roleOptions: null,
listLoading: true,
listQuery: {
page: 1,
limit: 10,
userName: undefined,
},
ageMap,
statusOptions: ['0', '1', '2'],
showValid: true,
temp: {
id: undefined,
userName: '',
realName: '',
passWord: '',
age: '',
role: 0
},
userDataForm: {
user: null
},
dialogFormVisible: false,
dialogStatus: '',
textMap: {
update: 'Update',
create: 'Create'
},
dialogPvVisible: false,
pvData: [],
rules: {
usercode: [{required: true, message: 'usercode is required', trigger: 'blur'}],
username: [{required: true, message: 'username is required', trigger: 'blur'}],
password: [{required: true, message: 'password is required', trigger: 'blur'}],
status: [{required: true, message: 'status is required', trigger: 'change'}]
},
downloadLoading: false,
updateVisible: false
}
},
created() {
this.getList()
},
methods: {
formatRole(column) {
return column == '1' ? "管理员" : column == '0' ? "普通户" : "未知";
},
getList() {
this.listLoading = true
fetchList(this.listQuery).then(response => {
console.info(JSON.stringify(response))
this.list = response.data.list
this.total = response.data.total
// Just to simulate the time of the request
setTimeout(() => {
this.listLoading = false
}, 1.5 * 1000)
})
.catch(() => {
this.list = []
this.total = 0
this.listLoading = false
})
},
handleFilter() {
this.listQuery.page = 1
this.getList()
},
resetTemp() {
this.temp = {
id: undefined,
userName: '',
realName: '',
passWord: '',
age: '',
role: 0
},
this.userDataForm = {
user: null
}
},
handleCreate() {
this.resetTemp()
this.dialogStatus = 'create'
this.dialogFormVisible = true
this.updateVisible = false;
this.$nextTick(() => {
this.$refs['dataForm'].clearValidate()
})
},
createData() {
this.$refs['dataForm'].validate((valid) => {
if (valid) {
this.userDataForm.user = this.temp;
console.info(JSON.stringify(this.userDataForm))
createSysUser(this.userDataForm)
.then(response => {
console.info(JSON.stringify(response.data))
console.info(JSON.stringify(this.list))
this.list.unshift(response.data)
this.dialogFormVisible = false
this.$notify({
title: '成功',
message: '创建成功',
type: 'success',
duration: 2000
})
})
.catch(response => {
console.info(JSON.stringify(response))
this.$notify.error({
title: '失败',
message: response.msg,
duration: 2000
})
})
}
})
},
handleUpdate(row) {
this.temp = Object.assign({}, row) // copy obj
console.info(JSON.stringify(this.temp))
this.userDataForm = Object.assign({}, row)
this.dialogStatus = 'update'
this.dialogFormVisible = true
this.$nextTick(() => {
this.$refs['dataForm'].clearValidate()
})
},
updateData() {
this.$refs['dataForm'].validate((valid) => {
if (valid) {
const tempData = Object.assign({}, this.temp)
const tempUserData = Object.assign({}, this.userDataForm);
tempUserData.user = tempData;
updateSysUser(tempUserData).then(() => {
for (const v of this.list) {
if (v.id === this.temp.id) {
const index = this.list.indexOf(v)
this.list.splice(index, 1, this.temp)
break
}
}
this.dialogFormVisible = false
this.updateVisible = true;
this.$notify({
title: '成功',
message: '更新成功',
type: 'success',
duration: 2000
})
})
}
})
},
handleDelete(row) {
deleteSysUser(row)
.then(response => {
this.$notify({
title: '成功',
message: '删除成功',
type: 'success',
duration: 2000
})
const index = this.list.indexOf(row)
this.list.splice(index, 1)
})
.catch(response => {
this.$notify.error({
title: '失败',
message: response.msg,
duration: 2000
})
})
},
handleFetchPv(pv) {
fetchPv(pv).then(response => {
this.pvData = response.data.pvData
this.dialogPvVisible = true
})
},
handleDownload() {
this.downloadLoading = true
import('@/vendor/Export2Excel').then(excel => {
const tHeader = ['用户工号', '用户名称', '拥有角色', '用户年龄']
const filterVal = ['userName', 'realName', 'role', 'age']
const data = this.formatJson(filterVal, this.list)
excel.export_json_to_excel({
header: tHeader,
data,
filename: 'table-list'
})
this.downloadLoading = false
})
},
formatJson(filterVal, jsonData) {
return jsonData.map(v => filterVal.map(j => {
if (j === 'role') {
return this.formatRole(v[j])
} else {
return v[j]
}
}))
},
}
}
</script>
写在最后
爆肝4万多字,写完了这10套系统介绍,觉得不错的伙伴记得一键三连!
由于代码不能都贴出来,需要的伙伴可以加博主V交流:Code2Life2
拜!