|
@@ -12,7 +12,6 @@ import com.jfinal.config.Interceptors;
|
|
|
import com.jfinal.config.JFinalConfig;
|
|
|
import com.jfinal.config.Plugins;
|
|
|
import com.jfinal.config.Routes;
|
|
|
-import com.jfinal.core.JFinal;
|
|
|
import com.jfinal.kit.PropKit;
|
|
|
import com.jfinal.plugin.activerecord.ActiveRecordPlugin;
|
|
|
import com.jfinal.plugin.druid.DruidPlugin;
|
|
@@ -22,129 +21,136 @@ import com.jfinal.template.Engine;
|
|
|
import com.jfinal.weixin.sdk.api.ApiConfig;
|
|
|
import com.jfinal.weixin.sdk.api.ApiConfigKit;
|
|
|
import com.jfinal.weixin.sdk.cache.RedisAccessTokenCache;
|
|
|
+import com.zskk.service.ServiceFactory;
|
|
|
import com.zskk.controller.WeixinApiController;
|
|
|
import com.zskk.controller.WeixinMsgController;
|
|
|
+import com.zskk.controller.WeixinWebController;
|
|
|
|
|
|
public class ZskkConfig extends JFinalConfig {
|
|
|
- // 本地开发模式
|
|
|
- private boolean isLocalDev = false;
|
|
|
-
|
|
|
- /**
|
|
|
- * 如果生产环境配置文件存在,则优先加载该配置,否则加载开发环境配置文件
|
|
|
- * @param pro 生产环境配置文件
|
|
|
- * @param dev 开发环境配置文件
|
|
|
- */
|
|
|
- public void loadProp(String pro, String dev) {
|
|
|
- try {
|
|
|
- PropKit.use(pro);
|
|
|
- }
|
|
|
- catch (Exception e) {
|
|
|
- PropKit.use(dev);
|
|
|
- isLocalDev = true;
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- public void configConstant(Constants me) {
|
|
|
- loadProp("config.properties", "a_little_config.txt");
|
|
|
- me.setDevMode(PropKit.getBoolean("devMode", false));
|
|
|
-
|
|
|
- // ApiConfigKit 设为开发模式可以在开发阶段输出请求交互的 xml 与 json 数据
|
|
|
- ApiConfigKit.setDevMode(me.getDevMode());
|
|
|
- }
|
|
|
-
|
|
|
- public void configRoute(Routes me) {
|
|
|
- /**
|
|
|
- * jfinal 3.6 新添加的配置项,如果有控制器继承了 MsgController 就必须
|
|
|
- * 要添加下面的配置,该配置才能将超类 MsgController 中的 index() 方法
|
|
|
- * 映射为 action
|
|
|
- *
|
|
|
- * 使用 jfinal 3.6 之前的版本不必理会这项配置
|
|
|
- */
|
|
|
- me.setMappingSuperClass(true);
|
|
|
-
|
|
|
- me.add("/msg", WeixinMsgController.class);
|
|
|
- me.add("/api", WeixinApiController.class, "/api");
|
|
|
-// me.add("/pay", WeixinPayController.class);
|
|
|
-// me.add("/wxa/user", WxaUserApiController.class);
|
|
|
-// me.add("/subscribemsg", SubscribeMsgController.class);
|
|
|
- }
|
|
|
-
|
|
|
- public void configPlugin(Plugins me) {
|
|
|
-
|
|
|
- DruidPlugin druidPlugin = new DruidPlugin(PropKit.get("jdbcUrl"), PropKit.get("user"), PropKit.get("password").trim());
|
|
|
+ // 本地开发模式
|
|
|
+ private boolean isLocalDev = false;
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 如果生产环境配置文件存在,则优先加载该配置,否则加载开发环境配置文件
|
|
|
+ *
|
|
|
+ * @param pro 生产环境配置文件
|
|
|
+ * @param dev 开发环境配置文件
|
|
|
+ */
|
|
|
+ public void loadProp(String pro, String dev) {
|
|
|
+ try {
|
|
|
+ PropKit.use(pro);
|
|
|
+ } catch (Exception e) {
|
|
|
+ PropKit.use(dev);
|
|
|
+ isLocalDev = true;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ public void configConstant(Constants me) {
|
|
|
+ loadProp("config.properties", "a_little_config.txt");
|
|
|
+ me.setDevMode(PropKit.getBoolean("devMode", false));
|
|
|
+
|
|
|
+ // ApiConfigKit 设为开发模式可以在开发阶段输出请求交互的 xml 与 json 数据
|
|
|
+ ApiConfigKit.setDevMode(me.getDevMode());
|
|
|
+ }
|
|
|
+
|
|
|
+ public void configRoute(Routes me) {
|
|
|
+ /**
|
|
|
+ * jfinal 3.6 新添加的配置项,如果有控制器继承了 MsgController 就必须 要添加下面的配置,该配置才能将超类
|
|
|
+ * MsgController 中的 index() 方法 映射为 action
|
|
|
+ *
|
|
|
+ * 使用 jfinal 3.6 之前的版本不必理会这项配置
|
|
|
+ */
|
|
|
+ me.setMappingSuperClass(true);
|
|
|
+
|
|
|
+ me.add("/msg", WeixinMsgController.class);
|
|
|
+ me.add("/api", WeixinApiController.class, "/api");
|
|
|
+ me.add("/web", WeixinWebController.class);
|
|
|
+ }
|
|
|
+
|
|
|
+ public void configPlugin(Plugins me) {
|
|
|
+
|
|
|
+ DruidPlugin druidPlugin = new DruidPlugin(PropKit.get("jdbcUrl"), PropKit.get("user"),
|
|
|
+ PropKit.get("password").trim());
|
|
|
me.add(druidPlugin);
|
|
|
-
|
|
|
+
|
|
|
ActiveRecordPlugin arp = new ActiveRecordPlugin(druidPlugin);
|
|
|
me.add(arp);
|
|
|
|
|
|
// 使用redis分布accessToken
|
|
|
- RedisPlugin redisPlugin = new RedisPlugin("weixin_patient", "127.0.0.1", 6379);
|
|
|
- redisPlugin.setSerializer(JdkSerializer.me); // 需要使用fst高性能序列化的用户请删除这一行(Fst jar依赖请查看WIKI)
|
|
|
- me.add(redisPlugin);
|
|
|
- }
|
|
|
+ RedisPlugin redisPlugin = new RedisPlugin("weixin_patient", "127.0.0.1", 6379);
|
|
|
+ redisPlugin.setSerializer(JdkSerializer.me); // 需要使用fst高性能序列化的用户请删除这一行(Fst jar依赖请查看WIKI)
|
|
|
+ me.add(redisPlugin);
|
|
|
+ }
|
|
|
|
|
|
- public void configInterceptor(Interceptors me) {
|
|
|
- // 设置默认的 appId 规则,默认值为appId,可采用url挂参数 ?appId=xxx 切换多公众号
|
|
|
+ public void configInterceptor(Interceptors me) {
|
|
|
+ // 设置默认的 appId 规则,默认值为appId,可采用url挂参数 ?appId=xxx 切换多公众号
|
|
|
// ApiInterceptor.setAppIdParser(new AppIdParser.DefaultParameterAppIdParser("appId")); 默认无需设置
|
|
|
// MsgInterceptor.setAppIdParser(new AppIdParser.DefaultParameterAppIdParser("appId")); 默认无需设置
|
|
|
- }
|
|
|
-
|
|
|
- public void configHandler(Handlers me) {
|
|
|
-
|
|
|
- }
|
|
|
-
|
|
|
- public void afterJFinalStart() {
|
|
|
- // 1.5 之后支持redis存储access_token、js_ticket,需要先启动RedisPlugin
|
|
|
-// ApiConfigKit.setAccessTokenCache(new RedisAccessTokenCache());
|
|
|
- // 1.6新增的2种初始化
|
|
|
-// ApiConfigKit.setAccessTokenCache(new RedisAccessTokenCache(Redis.use("weixin")));
|
|
|
- ApiConfigKit.setAccessTokenCache(new RedisAccessTokenCache("weixin_patient"));
|
|
|
-
|
|
|
- ApiConfig ac = new ApiConfig();
|
|
|
-// // 配置微信 API 相关参数
|
|
|
- ac.setToken(PropKit.get("token"));
|
|
|
- ac.setAppId(PropKit.get("appId"));
|
|
|
- ac.setAppSecret(PropKit.get("appSecret"));
|
|
|
-//
|
|
|
-// /**
|
|
|
-// * 是否对消息进行加密,对应于微信平台的消息加解密方式:
|
|
|
-// * 1:true进行加密且必须配置 encodingAesKey
|
|
|
-// * 2:false采用明文模式,同时也支持混合模式
|
|
|
-// */
|
|
|
- ac.setEncryptMessage(Boolean.FALSE);
|
|
|
-// ac.setEncodingAesKey(PropKit.get("encodingAesKey", "setting it in config file"));
|
|
|
-//
|
|
|
-// /**
|
|
|
-// * 多个公众号时,重复调用ApiConfigKit.putApiConfig(ac)依次添加即可,第一个添加的是默认。
|
|
|
-// */
|
|
|
- ApiConfigKit.putApiConfig(ac);
|
|
|
-
|
|
|
- /**
|
|
|
- * 1.9 新增LocalTestTokenCache用于本地和线上同时使用一套appId时避免本地将线上AccessToken冲掉
|
|
|
- *
|
|
|
- * 设计初衷:https://www.oschina.net/question/2702126_2237352
|
|
|
- *
|
|
|
- * 注意:
|
|
|
- * 1. 上线时应保证此处isLocalDev为false,或者注释掉该不分代码!
|
|
|
- *
|
|
|
- * 2. 为了安全起见,此处可以自己添加密钥之类的参数,例如:
|
|
|
- * http://localhost/weixin/api/getToken?secret=xxxx
|
|
|
- * 然后在WeixinApiController#getToken()方法中判断secret
|
|
|
- *
|
|
|
- * @see WeixinApiController#getToken()
|
|
|
- */
|
|
|
-// if (isLocalDev) {
|
|
|
-// String onLineTokenUrl = "http://localhost/weixin/api/getToken";
|
|
|
-// ApiConfigKit.setAccessTokenCache(new LocalTestTokenCache(onLineTokenUrl));
|
|
|
-// }
|
|
|
- }
|
|
|
-//
|
|
|
+ }
|
|
|
+
|
|
|
+ public void configHandler(Handlers me) {
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public void onStart() {
|
|
|
+ // TODO Auto-generated method stub
|
|
|
+ super.onStart();
|
|
|
+ // 支持redis存储access_token、js_ticket,需要先启动RedisPlugin
|
|
|
+ ApiConfigKit.setAccessTokenCache(new RedisAccessTokenCache("weixin_patient"));
|
|
|
+
|
|
|
+ ApiConfig ac = new ApiConfig();
|
|
|
+ // 配置微信 API 相关参数
|
|
|
+ ac.setToken(PropKit.get("token"));
|
|
|
+ ac.setAppId(PropKit.get("appId"));
|
|
|
+ ac.setAppSecret(PropKit.get("appSecret"));
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 是否对消息进行加密,对应于微信平台的消息加解密方式: 1:true进行加密且必须配置 encodingAesKey
|
|
|
+ * 2:false采用明文模式,同时也支持混合模式
|
|
|
+ */
|
|
|
+ ac.setEncryptMessage(Boolean.FALSE);
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 多个公众号时,重复调用ApiConfigKit.putApiConfig(ac)依次添加即可,第一个添加的是默认。
|
|
|
+ */
|
|
|
+ ApiConfigKit.putApiConfig(ac);
|
|
|
+
|
|
|
+ ApiConfig ac2 = new ApiConfig();
|
|
|
+// 配置微信 API 相关参数
|
|
|
+ ac2.setToken(PropKit.get("token"));
|
|
|
+ ac2.setAppId("wxee1c68f8944d357b");
|
|
|
+ ac2.setAppSecret("1bc0128b6bbb3907c3bcf4a1704f2a1f");
|
|
|
+ ac2.setEncryptMessage(Boolean.FALSE);
|
|
|
+ ApiConfigKit.putApiConfig(ac2);
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 1.9 新增LocalTestTokenCache用于本地和线上同时使用一套appId时避免本地将线上AccessToken冲掉
|
|
|
+ *
|
|
|
+ * 设计初衷:https://www.oschina.net/question/2702126_2237352
|
|
|
+ *
|
|
|
+ * 注意: 1. 上线时应保证此处isLocalDev为false,或者注释掉该不分代码!
|
|
|
+ *
|
|
|
+ * 2. 为了安全起见,此处可以自己添加密钥之类的参数,例如:
|
|
|
+ * http://localhost/weixin/api/getToken?secret=xxxx
|
|
|
+ * 然后在WeixinApiController#getToken()方法中判断secret
|
|
|
+ *
|
|
|
+ * @see WeixinApiController#getToken()
|
|
|
+ */
|
|
|
+// if (isLocalDev) {
|
|
|
+// String onLineTokenUrl = "http://localhost/weixin/api/getToken";
|
|
|
+// ApiConfigKit.setAccessTokenCache(new LocalTestTokenCache(onLineTokenUrl));
|
|
|
+// }
|
|
|
+ ServiceFactory.init();
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
// public static void main(String[] args) {
|
|
|
// JFinal.start("src/main/webapp", 80, "/", 5);
|
|
|
// }
|
|
|
|
|
|
@Override
|
|
|
public void configEngine(Engine engine) {
|
|
|
-
|
|
|
+
|
|
|
}
|
|
|
}
|