吴昊天 51f76ec771 fix(资金流水): 只记录真实资金进出,余额结算与退回余额不再记账
- PayServices 新增 isCashChannel():仅第三方在线渠道 + 线下支付为真;
  余额支付、后台代付、空支付方式(0 元单)一律为假。isRealPaymentChannel()
  保留余额支付语义(站内有结算无资金流),内部委托 isCashChannel 判定现金渠道。
- CapitalFlowServices::setFlow() 作为唯一出口统一拦截非现金渠道与未知业务类型,
  避免各业务分支各自判断导致漏过滤;nickname/phone 缺省兼容,返回是否写入。
- 退款链路:refund_type=balance(含原路退款改退余额)属于站内结转,
  RefundExecutorServices::writeFlow() 与 RefundEffectServices 均跳过记账;
  其余退款同样走 isCashChannel 判定,余额支付订单退款不再产生流水。
- 补充 .crmeb 售后文档的资金流水口径说明。
2026-10-23 14:17:15 +08:00
..
2026-09-23 15:15:02 +08:00
2026-09-23 15:15:02 +08:00
2026-09-23 15:15:02 +08:00
2026-09-23 15:15:02 +08:00
2026-09-23 15:15:02 +08:00
2026-09-23 15:15:02 +08:00

crmeb/app/services目录用于定义项目的业务服务类。

服务类的主要特征和作用包括:

  1. 服务类封装具体的业务逻辑和规则。

  2. 完成功能模块的抽象,提供统一的业务接口。

  3. 解耦项目各部分,降低他们之间的耦合度。

  4. 提供给上下文的整个环境使用。

具体来说:

  • 每个服务类对应一个独立的业务功能或规则集合。

  • 类内部可以调用其它模块完成业务需求。

  • 对外提供简单的业务接口,隐藏内部实现细节。

  • 服务类存在依赖关系,可以互相调用实现聚合服务。

使用服务层设计可以:

  • 松耦合各个模块,提高扩展和重用能力。

  • 同一个业务规则在多个场景复用。

  • 加强项目的可测试性与维护性。

所以此目录定义了项目核心业务服务模块,对外提供可复用的核心能力。