解忧云SMS云通信短信平台功能模块全解析:门户展示、用户注册充值套餐、单条与批量短信群发、多SMPP通道、密钥接口、后台管理


一、这个项目是干什么的

这是一套「短信云通信平台」,通俗说就是一个卖短信、帮人发短信的网站系统。它把业务拆成四块:

第一块是给外面人看的官网门户,讲产品、讲优势、讲行业方案,让访客了解这个平台并注册;

第二块是给客户用的用户中心,客户注册登录之后,可以充钱、买套餐、自己发单条短信、也能成批地群发短信、还能申请自己专属的调用密钥,用程序对接平台来发短信;

第三块是给平台自己人用的后台管理系统,管网站内容、管客户、管套餐、管账单、管签名、管短信记录,最要紧的是管短信通道——也就是短信到底从哪条线路发出去;

第四块是对外的API 接口,让客户用代码调用,实现无人值守自动发短信。

整套系统在宝塔面板的 Linux 服务器上运行,用的是 PHP 语言加 ThinkPHP 框架,数据存在 MySQL 数据库里。域名是 yuntianji.show99.xyz。


二、技术底座(简单说)

  • 后端语言:PHP 8.2
  • 开发框架:ThinkPHP 6(国内常用的 PHP 框架)
  • 数据库:MySQL,库名 yuntianji_show99,一共 12 张表
  • 服务器面板:宝塔(负责网站、数据库、PHP 的日常运维)
  • 前端界面:网页模板 + jQuery + Bootstrap 样式,桌面和手机上都能看
  • 网址风格:所有页面都是「控制器名/方法名.html」这种形式,对搜索引擎和用户都算友好

整个项目的代码分几大块:控制器目录放业务逻辑,视图目录放页面,扩展目录放短信通道的对接程序,配置文件目录放数据库连接、网站参数等,运行目录放框架自动生成的缓存。


三、四大功能模块详解

模块一:官网门户(对外展示)

访客打开网站首页,看到的是一个标准的云通信企业官网。内容包括:顶部宣传语和「一站式云通信平台」的定位介绍、面向教育、电商、游戏、政府公共事业等不同行业的解决方案展示、平台数据处理能力、送达率、客服响应等核心优势的数据看板、产品体系与使用指南、合作伙伙伴展示,以及引导新用户注册的区块。

门户页面上只有两个去处:登录和注册。也就是访客看完介绍,要么直接注册成为客户,要么用已有账号登录进用户中心。

模块二:用户中心(客户自助服务)

这是客户注册登录后的大本营,左侧一排菜单对应各个功能:

账号相关:注册(填手机号、密码、QQ 等)、登录、找回密码、修改密码、退出登录。

短信发送:一条是「在线短信」,适合零星几条的手工发送,填号码和内容点发送就行;另一条是「短信群发」,也就是本项目的重头戏,后面单独细讲。此外还有「短信列表」,把客户自己发过的短信都列出来,方便查账。

密钥与对接:「密钥管理」给客户看自己的接口 ID(KeyID)和接口秘钥(KeySecret),这是程序调用平台接口的凭证;「接口文档」是一份通俗的说明页,把平台对外开放的几个接口、要传什么参数、返回什么结果、怎么用命令行测试,全都写清楚,客户照着抄就能对接。

钱和账:「余额充值」用在线支付给账户充钱;「账单记录」列出每一笔充值的时间、金额、支付方式、状态;「套餐购买」让客户用余额买短信条数套餐。钱和条数是分开记的,账户里有「余额」也有「剩余短信条数」,发短信扣条数,买套餐花余额。

其他:「签名管理」用来提交短信签名(就是短信开头那个【某某】)等待平台审核;界面上还有「清空缓存」这类维护小按钮。

模块三:后台管理系统(平台方运维)

后台是给平台管理员用的,左侧菜单同样分几块:

网站配置:改站点名称、网站描述、logo、关键词、注册赠送的金额、网站底部代码、客服 QQ、站点公告,还能配支付接口的地址、商户号、密钥,以及平台自己的短信接口账号。这里分「基本配置」和「支付配置」两个标签页。

用户管理:列出所有客户,能看到每个客户的余额、剩余条数、注册时间、注册 IP、在线状态,可以查统计数字、启停某个客户、删除客户、编辑客户资料。

签名管理:管客户提交的短信签名,能看列表、统计数量、审核通过或驳回、删除。

套餐管理:管平台上卖的短信套餐,能看列表、统计、新增、修改、删除。系统里目前有两档示例套餐:基本套餐 100 元 700 条,高级套餐 300 元 6000 条。

账单记录:列出所有客户的充值订单,看时间、金额、订单号、支付状态。

短信列表:把全平台所有客户发出的短信汇总列出来,方便总览和排查。

SMPP 渠道管理:这是整套系统最核心的技术模块。SMPP 是国际上短信发送的通用协议,平台需要连到一条条「通道」(也就是短信线路提供商的服务器)才能把短信发出去。后台这个页面用来增删改查这些通道:通道名称、服务器地址、端口、账号、密码、协议版本、号码规则、发送间隔、启用状态、备注等等,还能给通道做「探活测试」(试试通不通)和「真实发送测试」(真发一条验证)。平台可以同时配多条通道,用哪条、怎么轮换,都由系统自动决定。

管理员自己:修改后台密码、清空缓存、退出登录。

模块四:对外 API 接口

给客户程序调用的一套接口,目前一共 6 个:

  1. 发送单条短信:传号码、内容、签名、模板编号,发一条扣一条。
  2. 查询账户信息:返回账号、QQ、余额、剩余条数。
  3. 查询短信记录:按记录编号查某一条短信的号码、内容、发送时间。
  4. 创建群发任务:一次传一批号码和内容,系统自动建任务,号码自动去重、自动补国家码 86。
  5. 任务启停与调速:让任务开始发、暂停发,或者在运行中调整发送速度。
  6. 查询任务进度:返回总条数、已提交、已送达、失败、进度百分比、任务状态、剩余条数。

这套接口的鉴权很直白:每个接口都必须带上接口 ID 和接口秘钥两个参数,对不上就直接返回错误提示,不会泄露任何数据。所有接口的返回都是统一格式的 JSON,成功是「成功标记 1 加上数据」,失败是「失败标记 0 加上原因文字」,程序解析起来很简单。


四、短信群发任务系统(本项目特色)

这是参考同类产品界面专门开发的一套功能,解决的痛点很实际:客户手里常常有几万条号码要发,而短信通道对发送速度是有限制的,不能一口气全塞过去,必须按节奏慢慢发。

任务怎么建:客户在「新建任务」页面填任务名称、粘贴或上传一大批手机号码、填写一个或多个短信内容、填写一个或多个发件人号码、设定每秒发多少条(1 到 200 条之间)、设定每批多少条,还要勾选一个「确认遵守短信法规」的选项。系统拿到号码后会先去掉重复的,再给没带国家码的号码统一补上 86,然后给每个号码在明细表里占一行位置,整个任务就算排好了队,但此时还没开始发。

任务怎么跑:客户点启动,任务进入「运行中」,系统就按设定速度,每次取出一小批号码,挨个提交给短信通道发出去。每发完一批,就把任务进度往前挪一格,记录下已经提交了多少、送达了多少、失败了多少。全部号码发完,任务自动变成「已完成」。

发送策略很讲究:如果客户填了多条内容,系统会随机挑一条来发,避免所有号码收到一模一样的文字,看起来更自然、也更抗投诉;如果客户填了多个发件人,系统会按照每批的节奏轮流切换发件人号码,比如前五百条用第一个发件人、后五百条换成第二个,轮流着来,用完了再从头绕回去。

运行中还能改:任务跑起来之后,客户随时可以调速度,觉得太慢就调快点,觉得快被通道限流了就调慢点,也可以中途停下、稍后再继续。

计费怎么算:发一条扣一条客户账户里的剩余条数,额度不够就发不动并提示。扣减是按实际提交成功的条数来的,发失败的不算,不会让客户白花钱。

为什么不用后台常驻程序:这类系统通常要装一个后台守护程序(守护进程)24 小时盯着任务跑。但本项目所在的服务器没配这类组件,所以工程上换了个巧妙的做法——任务的推进由「轮询」来驱动,也就是客户开着任务详情页时,页面每隔一小段时间就悄悄问一次服务器「该发下一批了」,服务器借这次询问顺手发一批、报一次进度。对外接口也一样,客户程序反复查进度接口,发送就被带着往前推进。好处是不需要额外装任何常驻服务,坏处是必须有人在看着或程序在轮询;也正因如此,接口文档里特别注明了一句:查进度时如果只是看看数值不想触发发送,就带一个「只看不发」的开关。


五、短信通道体系(短信从哪发出去)

平台的短信出口有两条路,一主一备:

主路是 SMPP 直连。项目里自己写了一套 SMPP 协议的对接程序,能跟通道商的服务器建立长连接、提交短信、接收状态回执,还能处理中文编码(中文短信在协议里要用专门的编码方式,否则对方收到的是乱码)。平台可以同时配置多条 SMPP 通道,发送时会自动从里面挑一条可用的、健康的通道来用,某条不通就换另一条,做到负载分摊和故障转移。

备路是第三方短信接口兜底。项目里另接了一家第三方短信服务(解忧云)的接口,当 SMPP 通道全部发不出去时,就自动改走这家第三方接口把短信发出去,保证短信不因为自己线路故障而彻底发不出去。

号码处理的小细节:用户填的号码五花八门,有的带加号、有的带 00 开头、有的是不带国家码的十一位手机号,系统会统一清洗成通道要求的格式再发,避免因为格式问题被通道拒收。


六、数据表都存了什么(通俗版)

系统数据库一共 12 张表,各管一摊:

  • 用户表:存客户的手机号账号、密码、QQ、余额、剩余短信条数、接口 ID、接口秘钥、启用状态、注册 IP 和注册时间。
  • 管理员表:存平台管理员的账号密码。
  • 登录态表:存登录令牌,配合浏览器小甜饼(Cookie)实现「登录一次保持一段时间不用重复登录」。
  • 网站配置表:一张表存下整个网站的可配置项,包括站点信息、注册赠送、客服 QQ、公告、底部代码、支付接口参数、平台自有短信接口账密。
  • 短信记录表:每发出一条短信就记一行,记号码、内容、发送时间、发送人。
  • 群发任务表:记每个群发任务的任务名、发件人、内容池、速度、每批条数、总条数、当前进度、已提交、已送达、失败数、任务状态。
  • 群发明细表:把任务里每一个号码单独记一行,记这个号码最终用的内容、用的发件人、发成功还是失败、失败原因。
  • 签名表:记短信签名,含名称、关联号码、审核状态。
  • 套餐表:记平台上卖的套餐,含名称、价格、包含条数。
  • 账单表:记每笔充值订单,含订单号、金额、支付方式、支付状态、下单与完成时间。
  • SMPP 通道表:记每条短信通道的名称、服务器地址端口、账号密码、协议参数、号码规则、发送间隔、启用状态、备注。
  • 友情链接表:留作站点友链展示用。

七、安全与权限这块怎么做的

三套入口各管各的:访客只能看官网首页,进不去用户中心和后台;客户登录后只能看到和管理自己的数据,看不到别人的短信、账单、任务;管理员登录后才能进入后台改全站的东西。

客户的身份靠登录令牌加浏览器小甜饼来识别,每次请求都会校验令牌是否有效;对外接口则靠接口 ID 加接口秘钥来识别,两个都对得上才放行。客户只能操作自己的任务和订单,系统在查询时会带上客户身份做限制,防止有人猜别人的任务编号去偷看或乱操作。另外任务还有状态守卫:已经停下的任务不会被旧的轮询请求带着继续发送,已经发完的任务也不会重复发送。


八、当前状态与已知局限

已经跑通的:官网、注册登录、找回密码、用户中心各页面、短信单条发送、短信群发任务全流程(建任务、去重、补国家码、内容随机、发件人轮换、限速、调速、启停、进度统计、额度扣减)、密钥管理、接口文档页、后台的网站配置、用户管理、套餐管理、账单、短信列表、SMPP 通道的增删改查与探活、6 个对外接口。

已知局限,需要说明白:

一是「已送达」这个数字的可靠性取决于通道是否回传状态回执。如果对接的通道不回执,这个数字就会停在零,此时「已提交」是准的,「已送达」不能当真。

二是连接真实运营商通道需要一个属于本机的账号密码,目前配的那条真实线路的账号在别的服务器上,验证时会报账号密码错误,所以线上实际是靠第三方接口兜底发送的;后台里还留了两条模拟通道,方便演示和联调。

三是群发任务推进依赖轮询,没有常驻服务,所以任务不会自己在没人管的情况下 24 小时跑完,需要客户页面开着或者程序持续查询。


九、一句话总结

这是一个功能完整的短信云通信平台:对外是官网门户,对内是客户自助中心,对平台是后台管理系统,对程序是成品 API 接口;既能发单条短信,也能跑成千上万条的群发任务;背后的短信出口支持多条 SMPP 通道自动挑选、失败还能兜底;客户的钱和短信条数分开记账,一目了然;整个系统不需要额外安装常驻服务,用轮询驱动任务推进,部署简单、维护省心。


暂无优惠

已有0人支付


我爱数钱钱 » 解忧云SMS云通信短信平台功能模块全解析:门户展示、用户注册充值套餐、单条与批量短信群发、多SMPP通道、密钥接口、后台管理

常见问题FAQ

发表评论