基于web的网上购物商城,在线购物商城系统,购物网站系统

本文介绍了使用Node.js、Vue和Express构建的前后端分离的在线购物商城系统,包括管理员和用户功能,如用户登录验证和文件上传处理。源码获取需关注作者并私信。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

项目源码获取方式放在文章末尾

一、技术栈

基于nodejs+vue 在线购物商城系统,前后端分离项目,角色分为管理员和用户,含源码

前端:vue框架

后端:nodejs express框架,数据库:mysql。

二、系统功能介绍

管理员功能

11db4cb5b4604a82a4e2a9334359435c.png

6b531a16217341bcb5a2fb8e7bbcf8f8.png

7abd0273ca374dd9801286ab2a23285e.png

 用户功能

5c321093023f4bd3b877e16ca3f570db.jpg

 e9302df305134029b77032bda5b939b3.jpg

28fe5a92649e47ca9b63571f84cf83ea.jpg

 59a571094a814b24b87f5ad798314351.jpg

1a0f7a4a678e401480b69d190e5d4145.jpg

7b45d63cb12943b7a3156efdb99fc563.jpg

fa4ebbceee394dcc8eb8301cc247055d.jpg

f81c473bbebb498f9e1e595c4016e003.jpg

三、部分代码

用户登录

exports.register = (req, res) => {

const userInfo = req.body;

if (!userInfo.username) {

return res.response("用户名不能为空");

};

const performRegistration = () => {

const sql = "insert into user set ?";

const min = 1000;

const max = 9999;

const randomNum = Math.floor(Math.random() * (max - min + 1)) + min;

const nickname = 'pet' + randomNum;

const avatar = '/public/avatar.png'

const created = dayjs().format("YYYY-MM-DD HH:mm:ss");

database.query(

sql,

{

...userInfo,

nickname,

avatar,

created,

},

function (err, results) {

if (err) return res.response(err);

login()

}

);

};

const login = () => {

const sql1 = "select * from user where username=?";

database.query(sql1, [userInfo.username], function (err, results) {

if (err) {

return res.response(err);

};

// 如果查询到用户,则返回用户信息

if (results.length > 0) {

const { id, username } = results[0];

let user = {

id,

username,

};

const token = jwt.sign(user, config.jwtSecretKey, {

expiresIn: config.expiresIn, // token 有效期为 10 个小时

});

setTimeout(() => {

res.send({

code: 0,

message: "登录成功!",

result: {

token: "Bearer " + token,

userInfo: results[0],

},

});

}, 100);

return

};

// 如果未查询到用户,执行注册逻辑

performRegistration();

});

}

login();

};

文件上传

const multer = require("multer");

const path = require("path"); //

const resolve = (dir) => {

return path.join(__dirname, "./", dir);

};

let temp = multer.diskStorage({


destination: function (req, file, cb) {

if (file.mimetype.match('image.*') || file.mimetype.match('video.*')) {

cb(null, resolve("../public/images"));

} else {

cb({ error: "Mime type not supported" });

}

},


filename: function (req, file, cb) {

let fileFormat = file.originalname.split(".");

const min = 1000;

const max = 9999;

const randomNum = Math.floor(Math.random() * (max - min + 1)) + min;

cb(null, new Date().getTime() + "" + randomNum + "." + fileFormat[fileFormat.length - 1]);

},

});


const multerConfig = multer({

storage: temp,

});

module.exports = multerConfig;

四、获取源码

关注,点赞,私信我吧

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值