智慧社区电商后台管理系统

作者主页:编程千纸鹤

作者简介:Java、前端、Pythone开发多年,做过高程,项目经理,架构师

主要内容:Java项目开发、毕业设计开发、面试技术整理、最新技术分享

一,项目简介

      在当前社会上,许多的各种类型的电子商务类网站纷纷建立,可以很大程度上的解决人们信息资源的闭塞以及地域上的限制[1]。随着时间的推移并伴随着用户的购买能力的提高和新型互联网技术的应用,网络购物己经十分普及,上至八十岁老人,下至五六岁小朋友,大都已经学会了如何利用网络购物,使用电子交易的机制。

      目前网络购物的方式主要有两种,一种是通过PC端的网站,如淘宝、京东的网页版购物平台;另一种是通过像手机APP和微信小程序商城等手机端平台来进行购物操作。但无论前端购物的形式如何,都需要一个强大的后台数据管理系统,以便于对相关的交易数据、商品数据、用户数据等进行相应的管理。相反,如果有一套通用的智慧社区电商后台管理系统,那么我们在实现购物系统时,只需要开发相应的前端展示和购物系统,就可以有效的对接后台管理数据,具有十分普遍的可移植性和通用性,所以从这个层面来讲,本系统的开发和研究是十分有价值和意义的。

      本系统主要是为了开发一套通用的电商后台数据管理系统,以便于将来为大多数电商平台提供一个通用的交易数据管理和数据统计系统。通过本智慧社区电商后台管理系统,可以实现对用户、商品、订单进行相应的数据管理,并可以实现对用户的不同角色授予不同的权限。同时可以统计相应的交易数据,为平台的运营者提供决策的数据支撑。电商后台数据管理系统具体功能如下:

(1)用户管理:实现用户数据查看、搜索、状态设置、信息编辑、数据删除等操作。

(2)权限管理:实现对身份角色、权限功能进行设定,为不同的角色分配相关权限。

(3)商品管理:实现对前台展示的商品信息的管理、商品分类的管理、商品具体参数的设定等。

(4)订单管理:主要实现对前台用户实现的交易订单数据进行管理,并可以查看己付款、未付款状态的用户,同时对已经付款的用户设定发货等功能。

(5) 报表统计:统计不同区域、不同时间相关商品的销售额,并以图形报表的形式展现出来,以便于根据市场销售情况及时调整营销策略。

二,环境介绍

语言环境:Java:  jdk1.8

数据库:Mysql: mysql5.7

应用服务器:Tomcat:  tomcat8.5.31

开发工具:IDEA或eclipse

开发技术:前后端分离开发

后台开发:VUE+NODEJS

前端开发:VUE

三,系统展示

3.1后台功能模块的展示

3.1.1用户登录功能

    智慧社区智慧社区电商后台管理系统后台用户如果想要对商城的相关信息进行管理操作,首先要登录系统,才可展开相关的操作。用户登陆界面如下图6-1所示。

图3-1用户登录操作界面

3.1.2用户管理功能

    智慧社区智慧社区电商后台管理系统管理员用户登陆系统后,可以进入用户管理菜单进行相应的用户信息管理。用户管理主要实现对用户的添加、查询、状态设置、修改和删除等操作。用户管理操作界面如下图3-2所示:

图3-2后台用户管理功能界面图

3.1.3产品分类管理功能

    智慧社区智慧社区电商后台管理系统管理员用户登陆系统后,可以进入产品分类管理菜单进行相应的分类信息管理。分类操作界面如下图6-3所示。

图3-3产品分类管理功能UI界面

3.1.4 后台商品管理操作UI

    智慧社区智慧社区电商后台管理系统管理员用户登陆系统后,可以进入商品管理菜单进行相应的商品信息管理。其中主要包含商品的添加、修改、查询、删除操作等,添加商品时可以上传商品的图片进行展示。商品信息管理操作界面如下图3-4所示。

图3-4后台商品管理功能UI界面

3.1.5 后台商品订单管理操作UI

    智慧社区智慧社区电商后台管理系统管理员用户登陆系统后,可以进入商品订单管理菜单进行相应的商品订单信息管理。电商后台管理的商品信息管理操作界面如下图3-5所示。

图3-5后台商品管理功能UI界面

3.1.6后台商品销量统计管理操作UI

    智慧社区智慧社区电商后台管理系统管理员用户登陆系统后,可以进入销量统计管理菜单进行相应的商品销售情况进行统计查看。主要以图形报表方式进行展示,其中主要以折线图的形态进行展示。电商后台商品信息统计查看界面如下图3-6所示。

图3-6折线图展示销售统计功能UI界面

3.1.7后台权限管理操作UI

    智慧社区电商后台管理系统有着完备的用户权限角色设计功能,可以根据不同的用户分配不同的角色权限功能,下面展示一下部分权限列表,如图3-7所示:

图3-6权限管理功能UI界面

四,核心代码展示

var path = require("path");
daoModule = require("./DAO");
databaseModule = require(path.join(process.cwd(),"modules/database"));

/**
 * 获取参数列表数据
 * 
 * @param  {[type]}   cat_id 分类ID
 * @param  {[type]}   sel    类型
 * @param  {Function} cb     回调函数
 */
module.exports.list = function(cat_id,sel,cb) {
	db = databaseModule.getDatabase();
	sql = "SELECT * FROM sp_attribute WHERE cat_id = ? AND attr_sel = ? AND delete_time is NULL";
	database.driver.execQuery(
			sql
		,[cat_id,sel],function(err,attributes){
			if(err) return cb("查询执行出错");
			cb(null,attributes);
		});
}

var path = require("path");

// 获取数据库模型
databaseModule = require(path.join(process.cwd(),"modules/database")); 
var logger = require('../modules/logger').logger();

/**
 * 创建对象数据
 * 
 * @param  {[type]}   modelName 模型名称
 * @param  {[type]}   obj       模型对象
 * @param  {Function} cb        回调函数
 */
module.exports.create = function(modelName,obj,cb) {
	var db = databaseModule.getDatabase();
	var Model = db.models[modelName];
	Model.create(obj,cb);
}

/**
 * 获取所有数据
 * 
 * @param  {[type]}   conditions 查询条件
 * 查询条件统一规范
 * conditions
	{
		"columns" : {
			字段条件
			"字段名" : "条件值"
		},
		"offset" : "偏移",
		"omit" : ["字段"],
		"only" : ["需要字段"],
		"limit" : "",
		"order" :[ 
			"字段" , A | Z,
			...
		]
	}
 * @param  {Function} cb         回调函数
 */
module.exports.list = function(modelName,conditions,cb) {
	var db = databaseModule.getDatabase();

	var model = db.models[modelName];

	if(!model) return cb("模型不存在",null);



	if(conditions) {
		if(conditions["columns"]) {
			model = model.find(conditions["columns"]);
		} else {
			model = model.find();
		}

		if(conditions["offset"]) {
			model = model.offset(parseInt(conditions["offset"]));
		}

		if(conditions["limit"]) {
			model = model.limit(parseInt(conditions["limit"]));
		}

		if(conditions["only"]) {
			model = model.only(conditions["only"]);
		}

		if(conditions["omit"]) {
			model = model.omit(conditions["omit"]);
		}

		if(conditions["order"]) {
			model = model.order(conditions["order"]);
		}

	} else {
		model = model.find();
	}

	model.run(function(err,models) {
		
		if(err) {
			console.log(err);
			return cb("查询失败",null);
		}
		cb(null,models);
	});
};

module.exports.countByConditions = function(modelName,conditions,cb) {
	var db = databaseModule.getDatabase();

	var model = db.models[modelName];

	if(!model) return cb("模型不存在",null);

	var resultCB = function(err,count){
		if(err) {
			return cb("查询失败",null);
		}
		cb(null,count);
	}

	if(conditions) {
		if(conditions["columns"]) {
			model = model.count(conditions["columns"],resultCB);
		} else {
			model = model.count(resultCB);
		}

	} else {
		model = model.count(resultCB);
	}

};

/**
 * 获取一条数据
 * @param  {[type]}   modelName  模型名称
 * @param  {[数组]}   conditions  条件集合
 * @param  {Function} cb         回调函数
 */
module.exports.findOne = function(modelName,conditions,cb) {
	var db = databaseModule.getDatabase();

	var Model = db.models[modelName];

	if(!Model) return cb("模型不存在",null);

	if(!conditions) return  cb("条件为空",null);

	Model.one(conditions,function(err,obj){
		logger.debug(err);
		if(err) {
			return cb("查询失败",null);
		}
		return cb(null,obj);
	});
}

/**
 * 更新对象数据
 * 
 * @param  {[type]}   modelName 模型名称
 * @param  {[type]}   id        数据关键ID
 * @param  {[type]}   updateObj 更新对象数据
 * @param  {Function} cb        回调函数
 */
module.exports.update = function(modelName,id,updateObj,cb) {
	var db = databaseModule.getDatabase();
	var Model = db.models[modelName];
	Model.get(id,function(err,obj){
		if(err) return cb("更新失败",null);
		obj.save(updateObj,cb);
	});
}

/**
 * 通过主键ID获取对象
 * @param  {[type]}   modelName 模型名称
 * @param  {[type]}   id        主键ID
 * @param  {Function} cb        回调函数
 */
module.exports.show = function(modelName,id,cb) {
	var db = databaseModule.getDatabase();
	var Model = db.models[modelName];
	Model.get(id,function(err,obj){
		cb(err,obj);
	});
}

/**
 * 通过主键ID删除对象
 * 
 * @param  {[type]}   modelName 模型名称
 * @param  {[type]}   id        主键ID
 * @param  {Function} cb        回调函数
 */
module.exports.destroy = function(modelName,id,cb) {
	var db = databaseModule.getDatabase();
	var Model = db.models[modelName];
	Model.get(id,function(err,obj){
		if(err) return cb("无模型ID");
		obj.remove(function(err) {
			if(err) return cb("删除失败");
			return cb(null);
		});
	});
}

/**
 * 通过模型名称获取数据库数量
 * 
 * @param  {[type]}   modelName 模型名称
 * @param  {Function} cb        回调函数
 */
module.exports.count = function(modelName,cb) {
	var db = databaseModule.getDatabase();
	var Model = db.models[modelName];
	Model.count(cb);
}

/**
 * 通过条件判断数据是否存在
 * 
 * @param  {[type]}   modelName  模块名
 * @param  {[type]}   conditions 条件
 * @param  {Function} cb         回调函数
 */
module.exports.exists = function(modelName,conditions,cb) {
	var db = databaseModule.getDatabase();
	var Model = db.models[modelName];
	Model.exists(conditions,function(err,isExists){
		if(err) return cb("查询失败");
		 cb(null,isExists);
	});
}

module.exports.getModel = function(modelName) {
	var db = databaseModule.getDatabase();
	return db.models[modelName];
}
var path = require("path");
daoModule = require("./DAO");
databaseModule = require(path.join(process.cwd(),"modules/database"));


module.exports.clearGoodAttributes = function(goods_id,cb) {
	db = databaseModule.getDatabase();
	sql = "DELETE FROM sp_goods_attr WHERE goods_id = ?";
	database.driver.execQuery(
			sql
		,[goods_id],function(err){
			if(err) return cb("删除出错");
			cb(null);
		});
}

module.exports.list = function(goods_id,cb) {
	db = databaseModule.getDatabase();
	sql = "SELECT good_attr.goods_id,good_attr.attr_id,good_attr.attr_value,good_attr.add_price,attr.attr_name,attr.attr_sel,attr.attr_write,attr.attr_vals FROM sp_goods_attr as good_attr LEFT JOIN sp_attribute as attr ON attr.attr_id = good_attr.attr_id WHERE good_attr.goods_id = ?";
	database.driver.execQuery(
			sql
		,[goods_id],function(err,attrs){
			if(err) return cb("删除出错");
			cb(null,attrs);
		});
}

var path = require("path");
daoModule = require("./DAO");
databaseModule = require(path.join(process.cwd(),"modules/database"));

/**
 * 创建管理员
 * 
 * @param  {[type]}   obj 管理员信息
 * @param  {Function} cb  回调函数
 */
module.exports.create = function(obj,cb) {
	daoModule.create("ManagerModel",obj,cb);
}

/**
 * 获取管理员列表
 * 
 * @param  {[type]}   conditions 查询条件
 * @param  {Function} cb         回调函数
 */
module.exports.list = function(conditions,cb) {
	daoModule.list("ManagerModel",conditions,function(err,models) {
		if(err) return cb(err,null);
		cb(null,models);
	});
}

/**
 * 通过查询条件获取管理员对象
 * 
 * @param  {[type]}   conditions 条件
 * @param  {Function} cb         回调函数
 */
module.exports.findOne = function(conditions,cb) {
	daoModule.findOne("ManagerModel",conditions,cb);
}

/**
 * 通过关键词查询用户
 * 
 * @param  {[type]}   key    关键词
 * @param  {[type]}   offset 
 * @param  {[type]}   limit  
 * @param  {Function} cb     回调函数
 */
module.exports.findByKey = function(key,offset,limit,cb) {
	db = databaseModule.getDatabase();
	sql = "SELECT * FROM sp_manager as mgr LEFT JOIN sp_role as role ON mgr.role_id = role.role_id";

	if(key) {
		sql += " WHERE mg_name LIKE ? LIMIT ?,?";
		database.driver.execQuery(
			sql
		,["%" + key + "%",offset,limit],function(err,managers){
			if(err) return cb("查询执行出错");
			cb(null,managers);
		});
	} else {
		sql += " LIMIT ?,? ";
		database.driver.execQuery(sql,[offset,limit],function(err,managers){
			if(err) return cb("查询执行出错");
			cb(null,managers);
		});
	}
}

/**
 * 判断是否存在管理员
 * 
 * @param  {[type]}   username 用户名
 * @param  {Function} cb       回调函数
 * 
 */
module.exports.exists = function(username,cb) {
	var db = databaseModule.getDatabase();
	var Model = db.models.ManagerModel;
	Model.exists({"mg_name":username},function(err,isExists){
		if(err) return cb("查询失败");
		 cb(null,isExists);
	});
}

/**
 * 模糊查询用户数量
 * 
 * @param  {[type]}   key 关键词
 * @param  {Function} cb  回调函数
 */
module.exports.countByKey = function(key,cb) {
	db = databaseModule.getDatabase();
	sql = "SELECT count(*) as count FROM sp_manager";
	if(key) {
		sql += " WHERE mg_name LIKE ?";
		database.driver.execQuery(
			sql
		,["%" + key + "%"],function(err,result){
			if(err) return cb("查询执行出错");
			cb(null,result[0]["count"]);
		});
	} else {
		database.driver.execQuery(sql,function(err,result){
			if(err) return cb("查询执行出错");
			cb(null,result[0]["count"]);
		});
	}
	
}

/**
 * 通过ID获取管理员对象数据
 * 
 * @param  {[type]}   id 管理员主键ID
 * @param  {Function} cb 回调函数
 */
module.exports.show = function(id,cb) {
	daoModule.show("ManagerModel",id,cb);
}

/**
 * 更新管理员信息
 * 
 * @param  {[type]}   obj 管理员对象
 * @param  {Function} cb  回调函数
 */
module.exports.update = function(obj,cb) {
	daoModule.update("ManagerModel",obj.mg_id,obj,cb);
}

/**
 * 删除管理员对象数据
 * 
 * @param  {[type]}   id 主键ID
 * @param  {Function} cb 回调函数
 */
module.exports.destroy = function(id,cb) {
	daoModule.destroy("ManagerModel",id,function(err){
		if(err) return cb(err);
		return cb(null);
	});
}

/**
 * 保存管理员信息
 * 
 * @param  {[type]}   obj 管理员对象
 * @param  {Function} cb  回调函数
 */
module.exports.save = function(obj,cb) {
	daoModule.show(obj.mg_id,function(err,oldObj){
		if(err) {
			daoModule.create("ManagerModel",obj,cb);
		} else {
			daoModule.update("ManagerModel",obj.mg_id,obj,cb);
		}
	})
}

/**
 * 获取管理员数量
 * 
 * @param  {Function} cb 回调函数
 */
module.exports.count = function(cb) {
	daoModule("ManagerModel",cb);
}

五,项目总结

       智慧社区智慧社区电商后台管理系统的使用者可以包含多种用户角色,在系统设定时,可以根据不同的角色用户分配不同的权限操作,实现灵活的权限管理功能。系统用户总的来说主要实现的功能如下:

(1)用户管理:实现用户数据查看、搜索、状态设置、信息编辑、数据删除等操作。

(2)权限管理:实现对身份角色、权限功能进行设定,为不同的角色分配相关权限。

(3)商品管理:实现对前台展示的商品信息的管理、商品分类的管理、商品具体参数的设定等。

(4)订单管理:主要实现对前台用户实现的交易订单数据进行管理,并可以查看己付款、未付款状态的用户,同时对已经付款的用户设定发货等功能。

(5) 报表统计:统计不同区域、不同时间相关商品的销售额,并以图形报表的形式展现出来,以便于根据市场销售情况及时调整营销策略。

(6) 通知管理:下辖两个子模块疫情通知和公告通知,疫情通知主要发布疫情相关的一些通知和新闻,公告通知主要发布一些平台相关的一些通知信息。

大家回想我们开发的时候搭建项目工程的时候,配置pom,各种拷贝。每次都这样是不是很麻烦。那么我们能不能整理一个基础项目基础模板出来,就这样adminstore诞生了。adminstore整合了spring,hibernate,shiro,discover等框架。不用担心每次那样麻烦的拷贝了。后台管理系统集成模板修改,菜单管理,用户管理,角色管理,友情链接,插件管理管理等功能。站在巨人的肩膀上,让我们看得更远! 环境要求 JDK6或更高版本(支持JDK7、JDK8)。建议使用JDK8,有更好的内存管理。更低版本的JDK6、JDK7可能需要设置Java内存-XX:PermSize=128M -XX:MaxPermSize=512M,否则可能出现这种类型的内存溢出:java.lang.OutOfMemoryError: PermGen space。 Servlet2.5或更高版本(如Tomcat6或更高版本)。 MySQL5.0或更高版本 Maven3.0或更高版本。 技术选型: SSH (Spring、SpringMVC、Hibernate) 安全权限 Shiro 缓存 Ehcache 视图模板 freemarker discover AdminLTE bootstrap 搭建步骤 创建数据库。如使用MySQL,字符集选择为utf8或者utf8mb4(支持更多特殊字符,推荐)。 执行数据库脚本。数据库脚本在database目录下。 在eclipse中导入maven项目。点击eclipse菜单File-Import,选择Maven-Existing Maven Projects。创建好maven项目后,会开始从maven服务器下载第三方jar包(如spring等),需要一定时间,请耐心等待。 创建mysql数据库,导入adminstore.sql 修改数据库连接。打开/web/src/main/resources/jdbc.propertis文件,根据实际情况修改jdbc.url、jdbc.username、jdbc.password的值。 运行程序。在eclipse中,右键点击项目名,选择Run as-Maven build...,Goals填入jetty:run或tomcat7:run,然后点击Run。 访问系统。前台地址:http://localhost:8080/web,手机站地址:http://127.0.0.1:8080/;后台地址:http://localhost:8080/web/login.htm,用户名:admin,密码:123456。 本篇文章来源于源码库(www.aspku.com),转载请注明出处 原文链接:http://www.aspku.com/qita/javacode/298655.html
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

编程千纸鹤

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值