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

本文涉及的产品
数据管理 DMS,安全协同 3个实例 3个月
推荐场景:
学生管理系统数据库
简介: 智慧社区电商后台管理系统

一,项目简介

     在当前社会上,许多的各种类型的电子商务类网站纷纷建立,可以很大程度上的解决人们信息资源的闭塞以及地域上的限制[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) 通知管理:下辖两个子模块疫情通知和公告通知,疫情通知主要发布疫情相关的一些通知和新闻,公告通知主要发布一些平台相关的一些通知信息。

相关实践学习
MySQL基础-学生管理系统数据库设计
本场景介绍如何使用DMS工具连接RDS,并使用DMS图形化工具创建数据库表。
相关文章
|
4天前
|
移动开发 小程序 前端开发
几千怎么部署搭建校园服务平台,校园圈子论坛系统小程序搭建,校园系统源码,多种功能一体的综合性校园平台
校园圈子论坛是一款集交友、二手市场、聊天等多功能于一体的校园社交平台,支持App、小程序和H5三端交付。学生可处理闲置物品、结识新朋友,通过算法匹配兴趣相投的用户。平台提供分享邀请机制,支持自动绑定推荐关系,并设有奖励机制。开发过程中需注重数据安全与系统稳定性,确保功能兼容及性能优化。
35 5
|
1月前
|
缓存 NoSQL JavaScript
布谷社交系统V6.0:新版同城陌生人交友软件源码开发技术栈
新版布谷社交V6.0同城陌生人交友软件源码开发技术栈!
|
1月前
|
机器人
布谷直播App系统源码开发之后台管理功能详解
直播系统开发搭建管理后台功能详解!
|
4月前
|
小程序
微信小程序开发---购物商城系统。【详细业务需求描述+实现效果】
这篇文章详细介绍了作者开发的微信小程序购物商城系统,包括功能列表、项目结构、具体页面展示和部分源码,涵盖了从首页、商品分类、商品列表、商品详情、购物车、支付、订单查询、个人中心到商品收藏和意见反馈等多个页面的实现效果和业务需求描述。
微信小程序开发---购物商城系统。【详细业务需求描述+实现效果】
|
7月前
|
SQL JavaScript 前端开发
开源!!!自习室在线选座系统!!!
开源!!!自习室在线选座系统!!!
113 0
|
数据采集 自然语言处理 监控
基于.Net开发的、支持多平台、多语言餐厅点餐系统
基于.Net开发的、支持多平台、多语言餐厅点餐系统
148 0
|
消息中间件 NoSQL Java
81分布式电商项目 - 用户注册
81分布式电商项目 - 用户注册
64 0
|
新零售 小程序 安全
社区拼团商城系统开发介绍及模式解析
随着新零售时代的到来,社区拼团已进入快速发展时期。据艾媒咨询数据显示,2020年国内社区团购市场将快速发展。预计今年市场规模将达到720亿元,同比增长112%。 预计到2022年,中国社区团体购买市场将达到1000亿元。
泰山众筹商城系统模式开发解读
模式说明: 众筹是100U 众筹第一期价格为商品首次上架的价格。 比如:商品A每天17:00-19:00开放众筹。用户每期参与最低最高参与众筹:1-10U。 第二期众筹价格(商品价格),增加30%,以此类推,每个商品每轮增加XX%
视频交友源码开发搭建平台用户资料功能:小功能有大用处!
视频交友源码平台用户资料功能不仅仅对于视频交友平台是重要的,它对于很多源码搭建的平台都是非常重要的,这样的源码功能还有很多,我会为大家讲解,喜欢的可以留个关注来问我。
视频交友源码开发搭建平台用户资料功能:小功能有大用处!