1
回答
关于IAccountDataProvider的默认实现
华为云4核8G,高性能云服务器,免费试用   

1、问题:DefaultAccountDataProvider中

if (_accessToken == null || (_currentTime >= _accessToken.getLong("expires_time"))) {
_accessToken = WeChat.__doCheckJsonResult(HttpClientHelper.doGet(WX_API.WX_ACCESS_TOKEN.concat("&appid=") + getAppId(accountId) + "&secret=" + getAppSecret(accountId), true));
_accessToken.put("expires_time", _currentTime + _accessToken.getIntValue("expires_in") * 1000);
__CACHES.put("WX_ACCESS_TOKEN", _accessToken);

这个 __CACHES put的 key是 WX_ACCESS_TOKEN  后面get 的时候 却是用 accountId  算是bug吧

2、建议:DefaultAccountDataProvider 中 关于多账号的 Map  __accountCahces

    目前是初始化一个,虽然重新这个方法可以 实现初始化多个,但是,如果中途需要增加 accountId  就比较麻烦

  建议  将这个接口 也封装出来, 可以 通过 Wechat 这个类 来增加 新的 accountId  

因为如果放在正式项目中用的话,如果是多账号系统 accountId  肯定是 会动态变化的


3、这个和微信无关,是本身 ymp平台的---建议将 模块配置的配置文件按照模块拆分,每个模块一个 配置文件

    在特定目录下增加一个 配置文件就增加一个模块,每个配置文件必须有一个 加载类的配置项,其他根据需要自行增加,这样会让项目更灵活。


举报
南平狼
发帖于4年前 1回/174阅
共有1个答案 最后回答: 4年前

@南平狼 您好,首先感谢您对YMP的关注和支持!

问题1:所指出的问题的确是个BUG,已修正,代码会尽快提交;

问题2:DefaultAccountDataProvider类只是一个IAccountDataProvider接口的简单实现,本意只想让它支持单一帐号,而由开发者通过重写IAccountDataProvider接口去实现多帐号管理,之所以没有在模块中没有提供多帐号实现的原因是我们不能确定开发者具体所采用的缓存机制和存储方式等,您提出的这个可以动态添加帐号的想法很好,我会结合您的想法对接口进行调整

问题3:YMP平台的模块之所以没有对配置文件进行分离是因为模块的使用是在开发阶段确定的,几乎不会有频繁变化的可能,同时也是减少配置文件数量和统一配置书写格式的一个理由哈(YMP号称就一个配置文件~:p),如果你希望加载特定目录下的模块配置等资源,可以试试YMP框架提供的Plugin机制(参考:插件模块使用),它一样非常灵活,您可以创建N多的插件工厂对象并指定任意不同的资源路径来达到让项目更灵活的目的

顶部