校园二手交易平台 二手商城

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

一、技术栈

基于nodejs+vue 了+微信小程序,前后端分离项目,角色分为管理员和用户,含源码

前端:vue框架 原生微信小程序

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

二、系统功能介绍

管理员功能

64eb0c56247d4776984668901125ab27.png

 

ad3c4abddeed466a99a68da4f4890f05.png

 

 

 用户功能

f4fcc0092fd3454ab00b96047209b836.jpg

df92de27663349678c0ae7abec0b42ad.jpg 

c16cbfe8d69f4202b4e4bbf5eec3ae46.jpg 

7619b09777ac498588ca2bb85d370fb6.jpg 

cd3771dcf48244ff9b39f2a648c5c410.jpg 

 

三、部分代码

用户登录

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

  2. const userInfo = req.body;

  3. if (!userInfo.username) {

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

  5. };

  6. const performRegistration = () => {

  7. const sql = "insert into user set ?";

  8. const min = 1000;

  9. const max = 9999;

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

  11. const nickname = 'pet' + randomNum;

  12. const avatar = '/public/avatar.png'

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

  14. database.query(

  15. sql,

  16. {

  17. ...userInfo,

  18. nickname,

  19. avatar,

  20. created,

  21. },

  22. function (err, results) {

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

  24. login()

  25. }

  26. );

  27. };

  28. const login = () => {

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

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

  31. if (err) {

  32. return res.response(err);

  33. };

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

  35. if (results.length > 0) {

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

  37. let user = {

  38. id,

  39. username,

  40. };

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

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

  43. });

  44. setTimeout(() => {

  45. res.send({

  46. code: 0,

  47. message: "登录成功!",

  48. result: {

  49. token: "Bearer " + token,

  50. userInfo: results[0],

  51. },

  52. });

  53. }, 100);

  54. return

  55. };

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

  57. performRegistration();

  58. });

  59. }

  60. login();

  61. };

文件上传

 
  1. const multer = require("multer");

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

  3. const resolve = (dir) => {

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

  5. };

  6. let temp = multer.diskStorage({

  7.  
  8. destination: function (req, file, cb) {

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

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

  11. } else {

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

  13. }

  14. },

  15.  
  16. filename: function (req, file, cb) {

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

  18. const min = 1000;

  19. const max = 9999;

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

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

  22. },

  23. });

  24.  
  25. const multerConfig = multer({

  26. storage: temp,

  27. });

  28. module.exports = multerConfig;

四、获取源码

关注,点赞,私信我吧

 

  • 17
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值