Share a SSM mall management system for free, very beautiful

Hello everyone, I am Brother Feng, I saw a good SSM mall management system, please share it.

Project Introduction

This is a project developed based on the SSM framework. The front-end user interface is developed with Html+css+JavaScript+Ajax, and the background management page is developed with Easyui technology.

Project display

1. Main interface
insert image description here

2. Product details page
insert image description here

3. Login interface
insert image description here

4. Administrator login
insert image description here

5. Background management - menu management
insert image description here

6. Background management - order management
insert image description here

7. Background management - commodity classification management
insert image description here

Database Design

insert image description here

part of the code

package com.ischoolbar.programmer.controller.admin;

import java.io.File;
import java.io.IOException;
import java.util.Date;
import java.util.HashMap;
import java.util.Map;

import javax.servlet.http.HttpServletRequest;

import org.apache.commons.lang.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.multipart.MultipartFile;
import org.springframework.web.servlet.ModelAndView;

import com.ischoolbar.programmer.entity.admin.Role;
import com.ischoolbar.programmer.entity.admin.User;
import com.ischoolbar.programmer.page.admin.Page;
import com.ischoolbar.programmer.service.admin.RoleService;
import com.ischoolbar.programmer.service.admin.UserService;

/**
 * 用户管理控制器
 * @author llq
 *
 */
@RequestMapping("/admin/user")
@Controller
public class UserController {
    
    
	@Autowired
	private UserService userService;
	@Autowired
	private RoleService roleService;
	
	/**
	 * 用户列表页面
	 * @param model
	 * @return
	 */
	@RequestMapping(value="/list",method=RequestMethod.GET)
	public ModelAndView list(ModelAndView model){
    
    
		Map<String, Object> queryMap = new HashMap<String, Object>();
		model.addObject("roleList", roleService.findList(queryMap));
		model.setViewName("user/list");
		return model;
	}
	
	/**
	 * 获取用户列表
	 * @param page
	 * @param username
	 * @param roleId
	 * @param sex
	 * @return
	 */
	@RequestMapping(value="/list",method=RequestMethod.POST)
	@ResponseBody
	public Map<String, Object> getList(Page page,
			@RequestParam(name="username",required=false,defaultValue="") String username,
			@RequestParam(name="roleId",required=false) Long roleId,
			@RequestParam(name="sex",required=false) Integer sex
			){
    
    
		Map<String, Object> ret = new HashMap<String, Object>();
		Map<String, Object> queryMap = new HashMap<String, Object>();
		queryMap.put("username", username);
		queryMap.put("roleId", roleId);
		queryMap.put("sex", sex);
		queryMap.put("offset", page.getOffset());
		queryMap.put("pageSize", page.getRows());
		ret.put("rows", userService.findList(queryMap));
		ret.put("total", userService.getTotal(queryMap));
		return ret;
	}
	
	/**
	 * 添加用户
	 * @param user
	 * @return
	 */
	@RequestMapping(value="/add",method=RequestMethod.POST)
	@ResponseBody
	public Map<String, String> add(User user){
    
    
		Map<String, String> ret = new HashMap<String, String>();
		if(user == null){
    
    
			ret.put("type", "error");
			ret.put("msg", "请填写正确的用户信息!");
			return ret;
		}
		if(StringUtils.isEmpty(user.getUsername())){
    
    
			ret.put("type", "error");
			ret.put("msg", "请填写用户名!");
			return ret;
		}
		if(StringUtils.isEmpty(user.getPassword())){
    
    
			ret.put("type", "error");
			ret.put("msg", "请填写密码!");
			return ret;
		}
		if(user.getRoleId() == null){
    
    
			ret.put("type", "error");
			ret.put("msg", "请选择所属角色!");
			return ret;
		}
		if(isExist(user.getUsername(), 0l)){
    
    
			ret.put("type", "error");
			ret.put("msg", "该用户名已经存在,请重新输入!");
			return ret;
		}
		if(userService.add(user) <= 0){
    
    
			ret.put("type", "error");
			ret.put("msg", "用户添加失败,请联系管理员!");
			return ret;
		}
		ret.put("type", "success");
		ret.put("msg", "角色添加成功!");
		return ret;
	}
	
	/**
	 * 编辑用户
	 * @param user
	 * @return
	 */
	@RequestMapping(value="/edit",method=RequestMethod.POST)
	@ResponseBody
	public Map<String, String> edit(User user){
    
    
		Map<String, String> ret = new HashMap<String, String>();
		if(user == null){
    
    
			ret.put("type", "error");
			ret.put("msg", "请填写正确的用户信息!");
			return ret;
		}
		if(StringUtils.isEmpty(user.getUsername())){
    
    
			ret.put("type", "error");
			ret.put("msg", "请填写用户名!");
			return ret;
		}
//		if(StringUtils.isEmpty(user.getPassword())){
    
    
//			ret.put("type", "error");
//			ret.put("msg", "请填写密码!");
//			return ret;
//		}
		if(user.getRoleId() == null){
    
    
			ret.put("type", "error");
			ret.put("msg", "请选择所属角色!");
			return ret;
		}
		if(isExist(user.getUsername(), user.getId())){
    
    
			ret.put("type", "error");
			ret.put("msg", "该用户名已经存在,请重新输入!");
			return ret;
		}
		if(userService.edit(user) <= 0){
    
    
			ret.put("type", "error");
			ret.put("msg", "用户添加失败,请联系管理员!");
			return ret;
		}
		ret.put("type", "success");
		ret.put("msg", "角色添加成功!");
		return ret;
	}
	
	/**
	 * 批量删除用户
	 * @param ids
	 * @return
	 */
	@RequestMapping(value="/delete",method=RequestMethod.POST)
	@ResponseBody
	public Map<String, String> delete(String ids){
    
    
		Map<String, String> ret = new HashMap<String, String>();
		if(StringUtils.isEmpty(ids)){
    
    
			ret.put("type", "error");
			ret.put("msg", "选择要删除的数据!");
			return ret;
		}
		if(ids.contains(",")){
    
    
			ids = ids.substring(0,ids.length()-1);
		}
		if(userService.delete(ids) <= 0){
    
    
			ret.put("type", "error");
			ret.put("msg", "用户删除失败,请联系管理员!");
			return ret;
		}
		ret.put("type", "success");
		ret.put("msg", "用户删除成功!");
		return ret;
	}
	
	/**
	 * 上传图片
	 * @param photo
	 * @param request
	 * @return
	 */
	@RequestMapping(value="/upload_photo",method=RequestMethod.POST)
	@ResponseBody
	public Map<String, String> uploadPhoto(MultipartFile photo,HttpServletRequest request){
    
    
		Map<String, String> ret = new HashMap<String, String>();
		if(photo == null){
    
    
			ret.put("type", "error");
			ret.put("msg", "选择要上传的文件!");
			return ret;
		}
		if(photo.getSize() > 1024*1024*1024){
    
    
			ret.put("type", "error");
			ret.put("msg", "文件大小不能超过10M!");
			return ret;
		}
		//获取文件后缀
		String suffix = photo.getOriginalFilename().substring(photo.getOriginalFilename().lastIndexOf(".")+1,photo.getOriginalFilename().length());
		if(!"jpg,jpeg,gif,png".toUpperCase().contains(suffix.toUpperCase())){
    
    
			ret.put("type", "error");
			ret.put("msg", "请选择jpg,jpeg,gif,png格式的图片!");
			return ret;
		}
		String savePath = request.getServletContext().getRealPath("/") + "/resources/upload/";
		File savePathFile = new File(savePath);
		if(!savePathFile.exists()){
    
    
			//若不存在改目录,则创建目录
			savePathFile.mkdir();
		}
		String filename = new Date().getTime()+"."+suffix;
		try {
    
    
			//将文件保存至指定目录
			photo.transferTo(new File(savePath+filename));
		}catch (Exception e) {
    
    
			// TODO Auto-generated catch block
			ret.put("type", "error");
			ret.put("msg", "保存文件异常!");
			e.printStackTrace();
			return ret;
		}
		ret.put("type", "success");
		ret.put("msg", "用户删除成功!");
		ret.put("filepath",request.getServletContext().getContextPath() + "/resources/upload/" + filename );
		return ret;
	}
	/**
	 * 判断该用户名是否存在
	 * @param username
	 * @param id
	 * @return
	 */
	private boolean isExist(String username,Long id){
    
    
		User user = userService.findByUsername(username);
		if(user == null)return false;
		if(user.getId().longValue() == id.longValue())return false;
		return true;
	}
}

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<%@include file="../common/header.jsp"%>
<div class="easyui-layout" data-options="fit:true">
    <!-- Begin of toolbar -->
    <div id="wu-toolbar">
        <div class="wu-toolbar-button">
            <%@include file="../common/menus.jsp"%>
        </div>
        <div class="wu-toolbar-search">
            <label>客户名称:</label><input id="search-name" class="wu-text" style="width:100px">
            <label>客户性别:</label>
            <select id="search-sex" class="easyui-combobox" style="width:100px">
            	<option value="-1">全部</option>
            	<option value="0">未知</option>
            	<option value="1"></option>
            	<option value="2"></option>
            </select>
            <label>客户状态:</label>
            <select id="search-status" class="easyui-combobox" style="width:100px">
            	<option value="-1">全部</option>
            	<option value="1">正常</option>
            	<option value="0">冻结</option>
            </select>	
            <a href="#" id="search-btn" class="easyui-linkbutton" iconCls="icon-search">搜索</a>
        </div>
    </div>
    <!-- End of toolbar -->
    <table id="data-datagrid" class="easyui-datagrid" toolbar="#wu-toolbar"></table>
</div>
<!-- Begin of easyui-dialog -->
<div id="add-dialog" class="easyui-dialog" data-options="closed:true,iconCls:'icon-save'" style="width:420px; padding:10px;">
	<form id="add-form" method="post">
        <table>
            <tr>
                <td width="60" align="right">客户名:</td>
                <td><input type="text" name="name" class="wu-text easyui-validatebox" data-options="required:true, missingMessage:'请填写客户名称'" /></td>
            </tr>
            <tr>
                <td width="60" align="right">密码:</td>
                <td><input type="password" name="password" class="wu-text easyui-validatebox" data-options="required:true, missingMessage:'请填写客户密码'" /></td>
            </tr>
            <tr>
                <td width="60" align="right">邮箱:</td>
                <td><input type="text" name="email" class="wu-text" /></td>
            </tr>
            <tr>
                <td width="60" align="right">真实姓名:</td>
                <td><input type="text" name="trueName" class="wu-text" /></td>
            </tr>
            <tr>
                <td width="60" align="right">性别:</td>
                <td>
                	<select name="sex" class="easyui-combobox" style="width:268px">
		            	<option value="0">未知</option>
		            	<option value="1"></option>
		            	<option value="2"></option>
		            </select>	
                </td>
            </tr>
           <tr>
                <td width="60" align="right">状态:</td>
                <td>
                	<select name="status" class="easyui-combobox" style="width:268px">
		            	<option value="1">正常</option>
		            	<option value="0">冻结</option>
		            </select>	
                </td>
            </tr>
        </table>
    </form>
</div>
<!-- 修改窗口 -->
<div id="edit-dialog" class="easyui-dialog" data-options="closed:true,iconCls:'icon-save'" style="width:450px; padding:10px;">
	<form id="edit-form" method="post">
        <input type="hidden" name="id" id="edit-id">
        <table>
           <tr>
                <td width="60" align="right">客户名:</td>
                <td><input type="text" id="edit-name" name="name" class="wu-text easyui-validatebox" data-options="required:true, missingMessage:'请填写客户名称'" /></td>
            </tr>
            <tr>
                <td width="60" align="right">密码:</td>
                <td><input type="password" id="edit-password" name="password" class="wu-text easyui-validatebox" data-options="required:true, missingMessage:'请填写客户密码'" /></td>
            </tr>
            <tr>
                <td width="60" align="right">邮箱:</td>
                <td><input type="text" id="edit-email" name="email" class="wu-text" /></td>
            </tr>
            <tr>
                <td width="60" align="right">真实姓名:</td>
                <td><input type="text" id="edit-trueName" name="trueName" class="wu-text" /></td>
            </tr>
            <tr>
                <td width="60" align="right">性别:</td>
                <td>
                	<select id="edit-sex" name="sex" class="easyui-combobox" style="width:268px">
		            	<option value="0">未知</option>
		            	<option value="1"></option>
		            	<option value="2"></option>
		            </select>	
                </td>
            </tr>
           <tr>
                <td width="60" align="right">状态:</td>
                <td>
                	<select id="edit-status" name="status" class="easyui-combobox" style="width:268px">
		            	<option value="1">正常</option>
		            	<option value="0">冻结</option>
		            </select>	
                </td>
            </tr>
        </table>
    </form>
</div>
<%@include file="../common/footer.jsp"%>

<!-- End of easyui-dialog -->
<script type="text/javascript">
	
	
	
	/**
	*  添加记录
	*/
	function add(){
      
      
		var validate = $("#add-form").form("validate");
		if(!validate){
      
      
			$.messager.alert("消息提醒","请检查你输入的数据!","warning");
			return;
		}
		var data = $("#add-form").serialize();
		$.ajax({
      
      
			url:'add',
			dataType:'json',
			type:'post',
			data:data,
			success:function(data){
      
      
				if(data.type == 'success'){
      
      
					$.messager.alert('信息提示','添加成功!','info');
					$('#add-dialog').dialog('close');
					$('#data-datagrid').datagrid('reload');
				}else{
      
      
					$.messager.alert('信息提示',data.msg,'warning');
				}
			}
		});
	}
	
	/**
	*  添加记录
	*/
	function edit(){
      
      
		var validate = $("#edit-form").form("validate");
		if(!validate){
      
      
			$.messager.alert("消息提醒","请检查你输入的数据!","warning");
			return;
		}
		var data = $("#edit-form").serialize();
		$.ajax({
      
      
			url:'edit',
			dataType:'json',
			type:'post',
			data:data,
			success:function(data){
      
      
				if(data.type == 'success'){
      
      
					$.messager.alert('信息提示','编辑成功!','info');
					$('#edit-dialog').dialog('close');
					$('#data-datagrid').datagrid('reload');
				}else{
      
      
					$.messager.alert('信息提示',data.msg,'warning');
				}
			}
		});
	}
	
	/**
	* 删除记录
	*/
	function remove(){
      
      
		$.messager.confirm('信息提示','确定要删除该记录?', function(result){
      
      
			if(result){
      
      
				var item = $('#data-datagrid').datagrid('getSelected');
				if(item == null || item.length == 0){
      
      
					$.messager.alert('信息提示','请选择要删除的数据!','info');
					return;
				}
				$.ajax({
      
      
					url:'delete',
					dataType:'json',
					type:'post',
					data:{
      
      id:item.id},
					success:function(data){
      
      
						if(data.type == 'success'){
      
      
							$.messager.alert('信息提示','删除成功!','info');
							$('#data-datagrid').datagrid('reload');
						}else{
      
      
							$.messager.alert('信息提示',data.msg,'warning');
						}
					}
				});
			}	
		});
	}
	
	/**
	* Name 打开编辑窗口
	*/
	function openEdit(){
      
      
		//$('#add-form').form('clear');
		var item = $('#data-datagrid').datagrid('getSelected');
		if(item == null || item.length == 0){
      
      
			$.messager.alert('信息提示','请选择要编辑的数据!','info');
			return;
		}
		$('#edit-dialog').dialog({
      
      
			closed: false,
			modal:true,
            title: "编辑客户信息",
            buttons: [{
      
      
                text: '确定',
                iconCls: 'icon-ok',
                handler: edit
            }, {
      
      
                text: '取消',
                iconCls: 'icon-cancel',
                handler: function () {
      
      
                    $('#edit-dialog').dialog('close');                    
                }
            }],
            onBeforeOpen:function(){
      
      
            	//$("#add-form input").val('');
            	$("#edit-id").val(item.id);
            	$("#edit-sex").combobox('setValue',item.sex);
            	$("#edit-status").combobox('setValue',item.status);
            	$("#edit-name").val(item.name);
            	$("#edit-password").val(item.password);
            	$("#edit-email").val(item.email);
            	$("#edit-trueName").val(item.trueName);
            }
        });
	}
	
	/**
	* Name 打开添加窗口
	*/
	function openAdd(){
      
      
		//$('#add-form').form('clear');
		$('#add-dialog').dialog({
      
      
			closed: false,
			modal:true,
            title: "添加客户信息",
            buttons: [{
      
      
                text: '确定',
                iconCls: 'icon-ok',
                handler: add
            }, {
      
      
                text: '取消',
                iconCls: 'icon-cancel',
                handler: function () {
      
      
                    $('#add-dialog').dialog('close');                    
                }
            }],
            onBeforeOpen:function(){
      
      
            	//$("#add-form input").val('');
            }
        });
	}
	
	//搜索按钮监听
	$("#search-btn").click(function(){
      
      
		var option = {
      
      name:$("#search-name").val()};
		var sex = $("#search-sex").combobox('getValue');
		if(sex != -1){
      
      
			option.sex = sex;
		}
		var status = $("#search-status").combobox('getValue');
		if(status != -1){
      
      
			option.status = status;
		}
		$('#data-datagrid').datagrid('reload',option);
	});
	
	function add0(m){
      
      return m<10?'0'+m:m }
	function format(shijianchuo){
      
      
	//shijianchuo是整数,否则要parseInt转换
		var time = new Date(shijianchuo);
		var y = time.getFullYear();
		var m = time.getMonth()+1;
		var d = time.getDate();
		var h = time.getHours();
		var mm = time.getMinutes();
		var s = time.getSeconds();
		return y+'-'+add0(m)+'-'+add0(d)+' '+add0(h)+':'+add0(mm)+':'+add0(s);
	}
	
	/** 
	* 载入数据
	*/
	$('#data-datagrid').datagrid({
      
      
		url:'list',
		rownumbers:true,
		singleSelect:true,
		pageSize:20,           
		pagination:true,
		multiSort:true,
		fitColumns:true,
		idField:'id',
	    treeField:'name',
		fit:true,
		columns:[[
			{
      
       field:'chk',checkbox:true},
			{
      
       field:'name',title:'客户名称',width:180,sortable:true},
			{
      
       field:'password',title:'登录密码',width:200},
			{
      
       field:'email',title:'邮箱',width:200},
			{
      
       field:'trueName',title:'真实姓名',width:200},
			{
      
       field:'sex',title:'性别',width:200,formatter:function(value,index,row){
      
      
				if(value == 0)return '未知';
				if(value == 1)return '男';
				if(value == 2)return '女';
				return (value);
			}},
			{
      
       field:'status',title:'状态',width:200,formatter:function(value,index,row){
      
      
				if(value == 0)return '冻结';
				if(value == 1)return '正常';
				return (value);
			}},
			{
      
       field:'createTime',title:'注册时间',width:200,formatter:function(value,index,row){
      
      
				return format(value);
			}},
		]]
	});
</script>

Source code download

(CSDN 1 point download): https://download.csdn.net/download/caofeng891102/87302541

Or Jiafeng brother WX: java9266 (backup: java8822) can be received directly

popular recommendation

I wrote a set of SpringBoot+SpringSecurity+Vue permission system practical courses, and shared it with CSDN friends for free

I wrote a set of SpringBoot WeChat applet e-commerce full-stack employment practical courses, and shared it with CSDN friends for free

springboot+vue front-end music network system, very beautiful

Share a springboot+vue campus dormitory management system for free, very beautiful

Guess you like

Origin blog.csdn.net/caoli201314/article/details/128348627