Skip to main content

Module wx_open_component_service_impl

Module wx_open_component_service_impl 

Source
Expand description

组件服务实现。

对应 Java me.chanjar.weixin.open.api.impl.WxOpenComponentServiceImpl: 持有门面服务引用(Java 强引用构造 new WxOpenComponentServiceImpl(this), Rust 以 Weak<dyn WxOpenService> 打破循环),实现 component_access_token 双检锁刷新、带 token 注入的 get/post、 verify ticket 推送启动、预授权码与预授权链接,以及 Wave 2 补齐的 授权方信息/选项/列表、代码模板、open 帐号、快速创建、minishop、tcb、 oauth2、服务器域名等全部接口方法(Wave 2 待定清单见各方法注释)。

镜像约定:

  • Java getWxOpenService().post(url, json)(裸 post,URL 已带 access_token 或无需 token)→ [Self::bare_post](直调执行器,不做 token 注入);Java 组件层 post(url, json) → [Self::post]。
  • minishop 入参 bean 的 Java toJsonObject() 均为手工拼装 snake_case JSON,与 Rust bean 的 serde(camelCase)不一致,故在 [minishop_json] 中以 serde_json::json! 逐键镜像 Java 线格式。
  • Java WxOpenMinishopService.UPLOAD_IMG_MINISHOP_FILE_URL 与接口常量 UPLOAD_IMAGE_URL 同值,统一为 [urls::upload_image_url]。
  • 未实现(待依赖接线)清单:getWxMpServiceByAppid/ getWxMaServiceByAppid/getWxFastMaServiceByAppid/ getWxMinishopServiceByAppid(恒 None)与依赖其 post 的 createOpenAccount/bindOpenAccount/unbindOpenAccount/ getOpenAccount(Err(-99));Java 恒 return nullminishopGetCouponList/minishopCommonPostOk(None) 镜像。

Wave 4 更新(代 mp/ma 桥接接线,对应本文件 WxOpenComponentServiceImpl):

  • getWxMpServiceByAppid/getWxMaServiceByAppid/ getWxFastMaServiceByAppid 由恒 None 改为按 appId 双检锁缓存装配 [crate::api::r#impl::WxOpenMpService] / [crate::api::r#impl::WxOpenMaService](镜像 Java 静态 ConcurrentHashMap + synchronized 双检锁;Rust 以实例级 Mutex<HashMap> 表达),返回值仍为 Arc<dyn Any + Send + Sync>, 调用方经 downcast_mp_service/downcast_ma_service 下转;
  • createOpenAccount/bindOpenAccount/unbindOpenAccount/ getOpenAccount 解锁:镜像 Java 私有方法 openAccountServicePost (switch appIdType:mp → 代 mp 服务 post;mini → 代 ma 服务 post; 其余抛「appIdType类型异常」);
  • getWxMinishopServiceByAppid 接线(Wave 5):双检锁缓存装配 WxOpenMinishopServiceImpl(此前恒 None)。
  • Ma*/Minishop 子域服务(Wave 5)见 api/wx_open_ma_*_service.rs / api/impl/wx_open_ma_*_service_impl.rs,由代 ma 桥接 WxOpenMaService 按 Java 语义装配七个子服务;组件层 getWxMaServiceByAppid 取回的桥接实例自带全部子服务 getter。

Structs§

WxOpenComponentServiceImpl
组件服务实现。