news 2026/4/16 12:41:36

客户报备系统实战手记

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
客户报备系统实战手记

客户报备小程序,nodejs开发 成品源码 部署即可用 配置有python开发的服务端监控程序,客户管理 客户报备跟进 销售管理 渠道管理 分销提成 类型小程序 数据库mysql

最近折腾了个客户报备小程序,用Node.js搭的后端,顺手配了个Python监控服务。整个系统跑在MySQL上,客户管理、分销提成这些业务模块都实打实用代码堆出来的。给大伙儿看看几个关键点的实现,代码都是生产环境跑着的,直接扒下来改改就能用。

权限验证这块儿,用JWT做了个带角色的token验证中间件。特别加了操作日志记录,谁在什么时候干了啥门儿清:

// 中间件/auth.js const traceAction = (req, res, next) => { const actionMap = { '/api/client': '查看客户', '/api/follow': '新增跟进' }; if (actionMap[req.path]) { await ActionLog.create({ userId: req.user.id, action: `${actionMap[req.path]}:${req.method}` }); } next(); };

这小段代码把路由路径映射成中文操作,销售经理点开客户列表的时候,数据库里就自动记一笔"查看客户:GET"。审计的时候直接查日志表,比翻服务器日志快得多。

客户分页查询用了Sequelize的游标分页,比传统limit offset性能高不少。特别是客户数据上十万之后,效果明显:

// 控制器/client.js const getClients = async (lastId = 0) => { return await Client.findAll({ where: { id: { [Op.gt]: lastId } }, limit: 15, include: [{ model: FollowRecord, attributes: ['content'] }] }); };

这里有个门道:用id做游标而不是page参数,避免深度分页的性能问题。前端拿到最后一条记录的id,下次请求带上就行。关联查询跟进记录的时候注意控制字段数量,别把整个客户对象都返回给前端。

客户报备小程序,nodejs开发 成品源码 部署即可用 配置有python开发的服务端监控程序,客户管理 客户报备跟进 销售管理 渠道管理 分销提成 类型小程序 数据库mysql

分销提成计算用了MySQL的存储过程,算钱的事儿还是交给数据库靠谱:

DELIMITER $$ CREATE PROCEDURE CalculateCommission(IN orderAmount DECIMAL(10,2)) BEGIN DECLARE level1_rate DECIMAL(4,3) DEFAULT 0.1; DECLARE level2_rate DECIMAL(4,3) DEFAULT 0.05; UPDATE users SET commission = commission + orderAmount * level1_rate WHERE id = level1_user; INSERT INTO commission_log VALUES (level1_user, orderAmount * level1_rate, NOW()); -- 二级分销同理 END$$ DELIMITER ;

存储过程里把提成比例写死,避免业务代码里乱改。每次订单完成时call这个存储过程,钱自动进账,日志也记了,比在Node层算更不容易出错。

Python监控服务用APScheduler做定时任务,每五分钟检查一次Node服务状态:

# monitor/service_check.py from requests.exceptions import ConnectionError def check_node_alive(): try: resp = requests.get('http://api:3000/health', timeout=3) if resp.json()['status'] != 'UP': send_alert('Node服务异常') except ConnectionError: send_alert('API服务不可达') scheduler.add_job(check_node_alive, 'interval', minutes=5)

这里有个坑:别直接在Docker容器里用localhost访问,得用服务名。监控到异常时调用企业微信机器人发报警,比邮件通知及时得多。

部署方面准备了两套方案:小规模用PM2托管Node服务,配个Nginx反代;客户量上来后用Docker Compose编排,数据库单独放云服务。特别注意把.env文件加到.gitignore,配置项通过环境变量注入,别把数据库密码打包进镜像里。

源码里埋了几个彩蛋:比如连续三天没跟进客户会自动发提醒,渠道二维码带统计参数,分销关系用闭包表存储实现无限级。这些细节回头单开一篇细说,先跑起来看效果最重要。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/14 9:18:52

基于PWM整流器的三电平模型与NPC整流器中点钳位技术研究

NPC整流器,三电平,中点钳位。 PWM整流器三电平模型。三电平NPC整流器的拓扑结构像极了电路设计界的俄罗斯套娃,总能在有限的空间里玩出意想不到的层次感。中点钳位这个看似简单的动作,实际上是个精妙的力学平衡游戏——当上下电容…

作者头像 李华
网站建设 2026/4/15 14:46:32

揭秘Dify Nginx证书配置痛点:5步实现本地HTTPS安全部署

第一章:Dify本地HTTPS部署的背景与意义 在现代企业级AI应用开发中,安全性已成为不可忽视的核心要素。Dify作为一个开源的低代码LLM(大语言模型)应用开发平台,支持快速构建和部署生成式AI应用。然而,在本地环…

作者头像 李华
网站建设 2026/4/15 20:23:57

Z-Image-Turbo文字渲染强?中英文LOGO生成实战案例演示

Z-Image-Turbo文字渲染强?中英文LOGO生成实战案例演示 1. Z-Image-Turbo:阿里通义实验室开源的高效文生图模型 你有没有遇到过这样的问题:想做个品牌LOGO,或者设计一张带中文标题的海报,结果AI生成的文字要么模糊、要…

作者头像 李华
网站建设 2026/4/7 9:55:41

Glyph自动驾驶应用:道路标识识别系统部署案例

Glyph自动驾驶应用:道路标识识别系统部署案例 1. 让AI“看懂”交通标志:Glyph在自动驾驶中的实际应用 你有没有想过,自动驾驶汽车是怎么认出路边的限速牌、停车标志或者转弯指示的?这背后其实是一套复杂的视觉识别系统在工作。今…

作者头像 李华
网站建设 2026/4/13 9:03:07

YOLO11镜像功能详解:预装依赖库一览

YOLO11镜像功能详解:预装依赖库一览 YOLO11 是当前目标检测领域中备受关注的新一代算法版本,虽然官方尚未正式发布“YOLOv11”这一命名,但在社区和工程实践中,“YOLO11”常被用于指代基于最新改进架构的高效目标检测模型。它在保…

作者头像 李华