news 2026/5/2 14:09:14

客户报备系统实战手记

作者头像

张小明

前端开发工程师

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/30 18:40:45

2026制造业考勤选型实战指南:匹配企业阶段的精准方案

【导读】 在制造企业中,考勤远非简单的“打卡记时”,它实质上是联动排班计划、工时统计、薪酬计算与合规管理的价值链路中枢,因此这一环节的数字化是一项牵一发而动全身的系统性工程。然而,实践表明超过60%的企业因初期选型不当&a…

作者头像 李华
网站建设 2026/4/28 6:17:53

当Dify遇到飞书审批流:从手动审核到AI预审+人工兜底的7层安全校验架构(含GDPR/等保2.0合规要点)

第一章:从手动审核到AI驱动的智能审批变革 在传统企业运营中,审批流程长期依赖人工操作,导致效率低下、错误率高且难以追溯。随着人工智能技术的发展,越来越多组织开始引入AI驱动的智能审批系统,实现自动化决策与风险识…

作者头像 李华
网站建设 2026/4/30 22:32:11

【限时开源】Dify-Feishu-Approval-Connector v2.3.0(支持多级会签、抄送人LLM摘要生成、超时自动升级)

第一章:Dify接入飞书审批流自动化流程的演进与价值定位在企业数字化转型不断深化的背景下,Dify 作为低代码 AI 应用开发平台,逐步探索与主流办公协作工具的深度集成。其中,与飞书审批流的自动化对接,成为提升组织效率的…

作者头像 李华
网站建设 2026/4/28 7:30:31

Python基于Vue的宾馆客房管理系统 django flask pycharm

这里写目录标题项目介绍项目展示详细视频演示技术栈文章下方名片联系我即可~解决的思路开发技术介绍性能/安全/负载方面python语言Django框架介绍技术路线关键代码详细视频演示收藏关注不迷路!!需要的小伙伴可以发链接或者截图给我 项目介绍 在旅游行业…

作者头像 李华
网站建设 2026/5/1 6:25:02

Unsloth显存占用过高?70%压缩技巧实战分享

Unsloth显存占用过高?70%压缩技巧实战分享 你是否在使用大语言模型进行微调时,被高昂的显存消耗困扰?训练Llama、Qwen、Gemma等主流模型动辄需要40GB以上的显存,让许多开发者望而却步。今天要介绍的 Unsloth,正是为解…

作者头像 李华
网站建设 2026/4/28 7:09:12

夫妻创业为何总“中魔咒”? 从亲密无间到反目成仇,只差这3步

目录 第一阶段:矛盾积累期——日常的压抑与无声的裂痕 1. 信息差与相互轻视: 2. 贡献感失衡: 3. “一言堂”与“失语症”: 第二阶段:矛盾爆发点——引爆信任的“关键事件” 1.重大战略分歧: 2.情感背…

作者头像 李华