自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(31)
  • 收藏
  • 关注

原创 CRMEB商品采集二开:把外部商品映射进商城的三层结构

做商品采集功能,第一版往往写成"调接口 → 把返回的 JSON 丢给前端"。跑通一个平台没问题,接第二个平台就开始崩:规格对不上、SKU 价格丢了、详情图是相对地址、保存后一片空白。问题不在 HTTP 调用,而在——外部平台的商品结构和管理端表单结构之间,隔着三套彼此冗余的表示。这篇按仓库里的真实实现,把这条链路拆开:驱动契约长什么样、itemsskuinfo三层怎么互相咬合、新增一个采集源要落哪些文件、以及几处踩过就忘不掉的坑。

2026-11-06 15:49:28 31

原创 CRMEB V8 产品类型插件接入指南

面向需要在 CRMEB 中新增一种商品形态(课程、卡密、虚拟权益等)的研发同学。本文以当前仓库代码为准,说明产品类型的领域边界、三维注册、Handler / 订单适配器 / 售后规则契约、Installer 与前端扩展,以及从建表到实单验收的接入步骤。

2026-11-06 15:48:31 17

原创 CRMEB V8 云打印机驱动接入指南

面向需要在 CRMEB 中新增或改造云打印服务商的研发同学。本文以当前仓库代码为准,说明云打印驱动的分层边界、清单契约、配置分层、出票调用链、幂等语义,以及把一家新服务商真正接到订单小票流程里要改哪些地方。精简字段速查见;驱动通用机制见。

2026-11-06 15:15:32 35

原创 菜单即权限:CRMEB V8 后台从菜单树到按钮的鉴权链路

在后台加了一个接口,代码写得规规矩矩,超管能调,子账号也能调。你以为是角色配错了,去「身份管理」里翻权限树,发现新接口压根不在树里——因为没人告诉系统"这个接口是一个权限"。CRMEB 后台没有独立的 RBAC 表。一行既可以是左侧导航的一个节点,也可以是一条接口权限,还可以是一个按钮的权限标识。角色表用一列逗号分隔的菜单 ID 把两者串起来。这个设计的好处是新增功能时"顺手就把权限做了",代价是权限的语义完全依赖字段约定,约定一破,权限就静默失效。

2026-11-03 10:47:23 211

原创 给 CRMEB V8 给 MCP 服务加一个分销工具

环境:PHP 8.2+、ThinkPHP 8、表前缀eb_。文中php think命令在backend/目录下执行;MCP 端点为。

2026-11-03 10:46:42 183

原创 给 CRMEB V8 接一个 S3 兼容存储驱动

启用接口是。

2026-11-03 10:46:05 155

原创 给 CRMEB v8 商品中台加一个「课程」商品类型

环境:PHP 8.2+、backend/为 ThinkPHP 多应用结构、表前缀eb_。文中命令均在backend/目录下执行。

2026-11-02 09:37:29 170

原创 CRMEB 事件分级与异常隔离

事情本身很简单:系统在订单支付成功后触发,核心层挂了自己的监听器推进订单状态,几个插件也各自挂了自己的监听器去发通知、记流水、同步渠道。问题出在第三方代码上。假设某个通知类监听器在调用外部接口时抛了异常,异常会顺着 ThinkPHP 的事件调度往上走,穿过服务层、穿过事务边界,把整个支付回调变成 500。此时钱已经付了,订单状态却没推进——这就是需要在调度层解决,而不是在调用层解决的那类问题。这类事故的解法通常有三种:让所有插件作者都写 try/catch;在事件触发处包 try/catch;

2026-11-02 09:34:23 69

原创 CRMEB 电子面单驱动接入说明

环境:PHP 8.2+、ThinkPHP 8、表前缀eb_。文中命令均在backend/目录下执行;接口前缀为/adminapi与/api。

2026-11-02 09:33:44 280

原创 CRMEB V8 支付驱动二开指南

面向需要在 CRMEB 中新增或改造第三方支付通道的研发同学。本文以当前仓库代码为准,说明支付驱动的注册机制、清单契约、配置存储、发起/回调/退款三条链路,以及上线检查项。精简字段速查见;驱动通用机制见。

2026-10-30 15:53:46 229

原创 php think make:module:模块骨架与 arch:check 实测

打开->addArgument('name', Argument::REQUIRED, '模块名(小写字母/数字/下划线,如 demo)')->addOption('label', null, Option::VALUE_REQUIRED, '模块中文名(展示名,默认为「{Name}模块」)')

2026-10-30 11:24:47 185

原创 AI能替你点鼠标了,但商城的数据敢让它随便点吗

工具一共 23 个,全是查询类,分五组:商品与分类 5 个、订单与物流 5 个、用户与商户 3 个、营销与财务 6 个、经营统计 4 个。能查销售和访问统计、待发货订单、退款中的单子、库存预警、待审提现,也能拉商品列表、评价、优惠券和秒杀拼团砍价的活动配置。要给 AI 加权限、要接自建模型网关、要改订单流程,动的是自己手里的代码,不用等厂商排期。自动化任务同样保守。默认是一号通 AI,想换可以填 OpenAI 兼容地址和密钥,接 DeepSeek、通义千问、Kimi 或者自建网关,保存前会先试连一次。

2026-10-26 15:37:23 104

原创 扒一扒CRMEB系统的隐藏玩法:这几个功能用好了,能省70%人工费!

做电商,表面上看是光鲜亮丽的老板,背地里其实是全天候的打杂工人。每天一睁眼:上新商品要一个个填参数、传图片,眼睛都看花了;想给商城换个装修效果,找人设计费用高,自己做的效果又不行…面对这些运营效率低下的困扰,真正高效的团队,早就不是靠摇人来硬扛了,而是靠系统的降本增效功能。作为深耕电商领域的品牌,CRMEB的开源商城系统里面藏着很多专为运营人设计的“偷懒”神器。今天我们就来盘点一下,这些能帮你省下一半人工的实用功能,你用过几个?

2026-06-11 16:57:58 190

原创 CRMEB BZ v6.0 二开:增加邮箱登录注册功能

给 CRMEB BZ v6.0 增加邮箱登录注册,本质上不是简单加两个接口,而是对账号体系做一次平滑扩展。比较稳的做法是:保留原手机号体系,新增独立 email 字段,增加邮箱验证码发送、邮箱注册和邮箱登录查询能力,再同步调整前端输入校验。这样改造的好处是兼容性强。老用户仍然可以手机号登录,新用户可以邮箱注册,微信、小程序、手机号验证码等原有链路也不会被破坏。后续如果要继续做海外化、多语言商城、企业采购账户体系,也能在这个基础上继续扩展。

2026-06-10 10:50:21 286

原创 六年了,我们为什么坚持代码100%开源、免费商用

2019年,我们把第一行代码推到Gitee上,用的是Apache-2.0协议。当时的开源电商圈,有两种主流玩法。一种叫"开源引流,付费卖授权",代码给你看,商用请交钱。另一种叫"核心加密,插件收费",基础版免费,想要拼团功能?1999。想要分销?再加2999。我们选了第三种:代码全部放出来,一分钱不收,Apache-2.0,你拿去商用、二开、给客户部署,随意。当时团队内部有分歧。一个做市场的同事说:你们这是把饭碗端出去给人吃。六年过去,那个"饭碗"不仅没被吃完,反而越吃越大。

2026-06-09 17:24:47 230

原创 开源不是噱头——一套真正可商用的开源商城系统应该长什么样

"月薪1万,副业2万":2026年程序员靠什么破局?

2026-06-09 17:22:43 347

原创 AI越强,程序员反而越需要“抱大腿”?

AI变强了,程序员反而更难了

2026-05-29 10:14:50 243

原创 uniapp踩坑-组件嵌套子组件不触发onReachBottom事件

组件嵌套子组件不触发onReachBottom事件

2026-05-29 10:12:10 383

原创 Swoole定时器实现毫秒级任务调度

Timer毫秒精度的定时器,底层基于epoll_wait和setitimer实现,数据结构使用最小堆,可支持添加大量定时器,使用最小堆数据结构实现的定时器,类似 JavaScript 的Swoole定时器的添加和删除,全部为内存操作,因此性能是非常高的。Swoole 中的Timer与PHP本身的是不同的。是基于时钟信号 + tick函数实现,一个是最大仅支持到秒,另一个是不支持同时设定多个定时器程序,性能相对来说会比较差。

2025-09-30 09:41:07 395

原创 轮询和长轮询的区别

如果有更新,则进行响应,如果一直没有数据,则会 hold 住请求,直到服务端的数据发生变化,或者等待一定时间超时才会返回。由客户端发送请求,服务器接收请求的过程,通过客户端不断请求,使得客户端能够模拟达到类似实时收到服务器的效果。优点:消息即时到达,和短轮询比起来,明显减少了很多不必要的HTTP请求次数,在无消息的情况下不会频繁的请求,相比之下节约了资源,在无消息的情况下不会频繁的请求。缺点:连接挂起会导致资源的浪费,长轮询会造出非常多的请求,不断的请求可能会造成的影响是数据顺序无法得到保证。

2025-09-30 09:36:45 221

原创 针对前端项目node版本问题导致依赖安装异常的处理办法

比如: node 16.xx 大多都会遇到依赖版本与node版本不适配导致安装报错等问题,并且你不管如何更新还是使用稳定版本的node.js都不起作用,此时你需要修改node版本。5. 进入个人主文件夹,检查各种 local、lib、include 文件夹,删除名字含有node和node_modules的文件和文件夹。这里给出的是我目前使用的14.19.1版本 地址(个人觉得14.x的版本对各个依赖支持都比较稳定),大家可以根据自身的系统进行下载。最后进入node官网下载指定版本node版本,重新安装。

2025-09-30 09:32:35 422

原创 本地化视频分片上传-基于CRMEB的开发思路

上述工具函数中,uploadChunk 函数的具体实现(如请求后端的配置和发送逻辑)以及一些变量的后续处理在提供的文档中未完整呈现,但整体思路是先计算文件 MD5,然后将文件按分片大小分割成多个分片,最后依次上传这些分片,并在上传过程中处理进度和结果。在上述后端代码中,首先接收前端传递的分片相关信息,将分片文件保存到服务器指定目录,然后判断当前上传的分片是否为最后一个分片,如果是则将所有分片文件合并成一个完整的文件,并删除分片文件,最后根据上传情况返回相应的结果信息(包括状态码、消息和文件路径等)。

2025-09-30 09:27:31 1123

原创 phpstorm 配置Xdebug调试

对有有经验的程序员,使用echo()、print_r()、print_f()、var_dump()等函数足以调试php代码,如果你不喜欢这样的话,xdebug就是一个非常好的php调试工具。3. 打开https://xdebug.org/wizard站点将复制的内容全部填写进去,点击 “Analyse my phpinfo() output”按钮进行检测php对应扩展。12.设置断点,开启debug监听,点击绿色的甲壳虫进行开始调试,这个小电话一定的是接通的状态,才可以的。

2025-04-18 09:14:08 941 1

原创 CRMEB从创建数据表到实现最基础增删改查的实现过程

对应控制器中的五个方法,控制器需要先注入StudentServices,才能使用services中的方法,控制器中,获取参数使用request中的getMore或者postMore来获取,到此调用对应的接口,就可以实现数据库简单的增删改查了。总结:CRMEB系统中,每个层级是非常清楚的,controller用来接受和发送数据,services用来组合数据逻辑处理,dao层是用来对数据库的增删改查,model是数据库的模型类,弄懂了这些逻辑和文件层级,以后在在开发中会更方便和快捷。可以实现单条查询的逻辑,

2025-04-18 09:04:15 1340

原创 CRMEB多门店 公众号渠道码详解

与线下连锁零售店(如便利店、美妆集合店、母婴店等)绑定的线上商城。

2025-04-15 11:50:05 369

原创 MySQL安装实战分享

• 勾选“Configure as Windows Service”并设为手动启动以节省资源。:以管理员身份停止服务,启动安全模式并重置密码(具体步骤可参考知识星球文档)。• 使用MySQL Workbench连接本地实例,测试管理功能。(冲突可改为3307),设置root用户强密码(如。• 下载源码包并解压,编译时指定安装路径(如。(安装时选“Custom”模式)。文件,选择安装路径(建议非C盘)。• 修改字符集为UTF-8(编辑。• 若需图形化管理工具,勾选。• 调整内存参数(如。为物理内存70%)。

2025-04-15 10:09:09 772

原创 CRMEB标准版自定义定时任务功能详解

CRMEB标准版的自定义定时任务模块,基于ThinkPHP6框架深度优化,通过可视化配置界面实现零代码任务管理。该功能支持秒级到年度的多维度执行周期设定,并允许开发者直接注入业务逻辑代码,实现如自动发券、数据同步等高频操作。相较于传统开发模式,可节省80%的二次开发时间。步骤1:基础配置点击添加定时任务→ 填写表单字段:•任务名称:赠送优惠券(需语义化命名)•执行周期:支持秒/分/时/天/周/月/年七种粒度示例:选择"每10秒执行" → 系统自动显示周期说明文字•开发密码:需在。

2025-04-14 10:27:21 1456

原创 CRMEB标准版自定义事件功能深度解析

CRMEB自定义事件功能重新定义了电商系统的扩展边界。通过事件驱动架构与低代码注入的结合,开发者能够以“外科手术式”的精度实现业务逻辑扩展,彻底告别“牵一发而动全身”的硬编码困局。无论是精准营销、数据协同还是用户体验优化,这一功能都将成为企业数字化转型的强力助推器。

2025-04-14 10:26:21 789

转载 还不懂Redis?看完这个故事就明白了!

文章目录前言一、Redis的诞生二、缓存过期 && 缓存淘汰三、缓存穿透 && 布隆过滤器四、缓存击穿 && 缓存雪崩前言本文转载:原文链接在这里推荐一个开源的代码,注释清晰,适合新手学习。地址:开源代码一、Redis的诞生你好,我是Redis,一个叫Antirez的男人把我带到了这个世界上。说起我的诞生,跟关系数据库MySQL还挺有渊源的。在我还没来到这个世界上的时候,MySQL过的很辛苦,互联网发展的越来越快,它容纳的数据也越来越多,用

2021-05-03 12:29:20 223

原创 REDIS 持久化 RDB快照

REDIS 持久化 RDB快照Redis 的数据全部在内存里,如果突然宕机,数据就会全部丢失,因此必须有一种机制来保证 Redis 的数据不会因为故障而丢失,这种机制就是Redis的持久化机制。RDB 持久化生成的 RDB 文件是一个经过压缩的二进制文件,也可以称之为快照文件,通过该文件可以还原生成 RDB 文件时的数据库状态。在指定的时间间隔内,Redis 会自动将内存中的所有数据生成一份副本并存储在硬盘上,这个过程就是「快照」。自动触发(bgsave)执行时,Redis会创建一个子进程进行执行RD

2021-04-22 18:39:04 295

原创 CRMEB 单商户系统,配置人人分销之后,在分销员管理列表中不显示推广员

开源链接:点击获取开源代码CRMEB 单商户系统,配置人人分销之后,在分销员管理列表中不显示推广员的问题。修复办法: 在app/services/user/UserService.php中修改下方代码,将红色代码改为绿色代码getAgentUserList 方法中if (sys_config('store_brokerage_statu') != 2) $where_data['is_promoter'] = 1;getAgentUserIds 方法中if (sys_config('store

2021-04-19 14:19:17 442

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除