Easy Promotion 的内部目录并不是多个独立站点,而是一套推广交易平台中的业务域。源码中已经形成组织与权限、服务定价、订单执行、资源池、资金结算、用户任务和运营支撑七组能力;它们共享订单与账本,因此不应拆成互不关联的项目卡。
业务域总览
flowchart LR Org[组织与数据权限] --> Price[服务与逐级定价] Price --> Order[推广订单] Order --> Execute[任务与外部执行] Execute --> Settle[检测 / 结算 / 退款] Settle --> Wallet[机构钱包与流水] Order --> UserTask[用户任务 / 积分 / 抽奖] Resource[机器人 / Cookie / 微信消息] --> Execute Ops[内容 / 渠道 / 广告 / 反馈] --> UserTask
组织与权限
Organization 和 OrganizationPath 共同表达机构树,OrganizationPrice、角色机构关系和 DataScopeService 将定价与数据范围绑定到组织。后台的机构、部门、岗位、角色和管理员页面只是不同管理视角,最终都必须经过同一份机构范围校验。
这个领域负责“谁能管理谁”,不负责订单金额。机构移动、停用和删除需要检查下级节点、管理员、价格、钱包与历史订单,不能只改一个 parent_id。
服务目录与逐级定价
PromotionService 定义服务编码、计价单位、执行方式、参数规则和总部初始价;OrganizationPrice 保存各级加价;PromotionPricingService 沿机构路径计算有效价格并生成订单快照。
当前订单页面已经区分公众号阅读互动、公众号关注、视频号任务等载荷。业务参数由 PromotionBusinessPayloadService 规范化,前端表单不应自行拼接价格或把渠道字段直接塞入通用备注。
订单与执行
| 对象 | 职责 |
|---|---|
PromotionOrder |
交易主记录与当前状态 |
PromotionOrderEvent |
创建、派发、完成、取消和异常事件 |
PromotionTaskAssignment |
拆分并分配给外部执行器或用户任务池 |
PromotionCallbackLog |
第三方回调原始摘要、验签和处理结果 |
PromotionDetectionLog |
查单、检测和实际完成数量 |
PromotionScreenshot / PromotionFeedback |
执行凭证和问题反馈 |
PromotionOrderCommission |
下单时固化的各级收益 |
PromotionOrderExecutionService、队列服务和回调服务共同驱动执行状态。网络超时只能表示结果未知,不能直接重建订单;重试前需要按业务幂等键和外部任务号查重。
执行资源池
资源中心并不是简单配置页。源码已经包含:
PromotionRobot:检测或执行机器人、支持能力、代理地址和加密令牌;PromotionMpCookie:公众号 Cookie、指纹、使用上限和停用原因;PromotionWechatOrderConfig:把微信消息来源映射到机构、管理员和机器人;PromotionWechatOrderLog:记录消息下单的解析、验签和处理结果;- 视频号检索、二维码生成、调用日志和密钥服务。
凭据只能由服务端解密后短时使用,列表接口不返回明文。资源池故障应暂停派单并保留订单冻结状态,不能绕过检测直接把订单标记完成。
机构钱包与结算
OrganizationWallet 保存可用与冻结余额,OrganizationWalletLog 保存每次变化。直属上下级划转、平台调整、订单冻结、实际结算、差额退回和收益分配都必须追加流水,并用业务类型与业务号保持幂等。
充值、退款、发票和用户提现虽然在运营页中集中展示,但属于不同状态机。审核通过、打款成功、驳回和撤销要分别留痕,不能用一个通用 status 含糊处理所有资金动作。
用户任务与增长
移动端的 promotion_tasks 对应 PromotionMember、PromotionTaskAssignment、PromotionPointsLog、抽奖记录与提现。用户领取任务后提交凭证,审核通过才发放积分;积分兑换或提现使用独立流水,任务记录不能直接充当余额事实。
PromotionAd、PromotionRaffle、每日统计和反馈属于增长与运营模块。它们依赖用户、任务和订单数据,但不能反向修改交易事实。
通用平台能力
文章、装修、公众号菜单与回复、短信、支付、对象存储、用户账户和代码生成器来自平台底座。它们是复用能力,不是 Easy Promotion 内部的小项目。后续只有出现独立团队、独立部署、独立数据所有权时,才考虑把执行器或用户任务中心拆为单独服务。