Browse Source

创建pacsonline微信患者段微信后台

刘韬 6 years ago
parent
commit
552be3e9cd

+ 92 - 0
.gitignore

@@ -0,0 +1,92 @@
+### Java template
+*.class
+
+# Mobile Tools for Java (J2ME)
+.mtj.tmp/
+
+# Package Files #
+*.jar
+*.war
+*.ear
+
+# virtual machine crash logs, see http://www.java.com/en/download/help/error_hotspot.xml
+hs_err_pid*
+### JetBrains template
+# Covers JetBrains IDEs: IntelliJ, RubyMine, PhpStorm, AppCode, PyCharm, CLion, Android Studio and Webstorm
+# Reference: https://intellij-support.jetbrains.com/hc/en-us/articles/206544839
+
+# User-specific stuff:
+.idea/workspace.xml
+.idea/tasks.xml
+.idea/dictionaries
+.idea/vcs.xml
+.idea/jsLibraryMappings.xml
+
+# Sensitive or high-churn files:
+.idea/dataSources.ids
+.idea/dataSources.xml
+.idea/dataSources.local.xml
+.idea/sqlDataSources.xml
+.idea/dynamic.xml
+.idea/uiDesigner.xml
+
+# Gradle:
+.idea/gradle.xml
+.idea/
+
+# Mongo Explorer plugin:
+.idea/mongoSettings.xml
+
+## File-based project format:
+*.iws
+
+## Plugin-specific files:
+
+# IntelliJ
+/out/
+
+# mpeltonen/sbt-idea plugin
+.idea_modules/
+
+# JIRA plugin
+atlassian-ide-plugin.xml
+
+# Crashlytics plugin (for Android Studio and IntelliJ)
+com_crashlytics_export_strings.xml
+crashlytics.properties
+crashlytics-build.properties
+fabric.properties
+### Windows template
+# Windows image file caches
+Thumbs.db
+ehthumbs.db
+
+# Folder config file
+Desktop.ini
+
+# Recycle Bin used on file shares
+$RECYCLE.BIN/
+
+# Windows Installer files
+*.cab
+*.msi
+*.msm
+*.msp
+
+# Windows shortcuts
+*.lnk
+### Maven template
+target/
+pom.xml.tag
+pom.xml.releaseBackup
+pom.xml.versionsBackup
+pom.xml.next
+release.properties
+dependency-reduced-pom.xml
+buildNumber.properties
+.mvn/timing.properties
+# ignore eclipse files
+.project
+.classpath
+.settings
+.metadata

+ 55 - 0
PacsOnline_Wechat_Patient/log/jfinal_demo_for_maven.log

@@ -0,0 +1,55 @@
+
+2019-03-15 15:21:08
+[ERROR]-[Thread: JFinal-Scanner]-[com.jfinal.kit.LogKit.error()]: Operation timed out (Connection timed out)
+java.net.ConnectException: Operation timed out (Connection timed out)
+	at java.base/java.net.PlainSocketImpl.socketConnect(Native Method)
+	at java.base/java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:399)
+	at java.base/java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:242)
+	at java.base/java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:224)
+	at java.base/java.net.Socket.connect(Socket.java:591)
+	at java.base/java.net.Socket.connect(Socket.java:540)
+	at java.base/sun.net.NetworkClient.doConnect(NetworkClient.java:182)
+	at java.base/sun.net.www.http.HttpClient.openServer(HttpClient.java:474)
+	at java.base/sun.net.www.http.HttpClient.openServer(HttpClient.java:569)
+	at java.base/sun.net.www.http.HttpClient.<init>(HttpClient.java:242)
+	at java.base/sun.net.www.http.HttpClient.New(HttpClient.java:341)
+	at java.base/sun.net.www.http.HttpClient.New(HttpClient.java:362)
+	at java.base/sun.net.www.protocol.http.HttpURLConnection.getNewHttpClient(HttpURLConnection.java:1242)
+	at java.base/sun.net.www.protocol.http.HttpURLConnection.plainConnect0(HttpURLConnection.java:1181)
+	at java.base/sun.net.www.protocol.http.HttpURLConnection.plainConnect(HttpURLConnection.java:1075)
+	at java.base/sun.net.www.protocol.http.HttpURLConnection.connect(HttpURLConnection.java:1009)
+	at java.base/sun.net.www.protocol.http.HttpURLConnection.followRedirect0(HttpURLConnection.java:2768)
+	at java.base/sun.net.www.protocol.http.HttpURLConnection.followRedirect(HttpURLConnection.java:2680)
+	at java.base/sun.net.www.protocol.http.HttpURLConnection.getInputStream0(HttpURLConnection.java:1843)
+	at java.base/sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1509)
+	at java.xml/com.sun.org.apache.xerces.internal.impl.XMLEntityManager.setupCurrentEntity(XMLEntityManager.java:678)
+	at java.xml/com.sun.org.apache.xerces.internal.impl.XMLEntityManager.startEntity(XMLEntityManager.java:1401)
+	at java.xml/com.sun.org.apache.xerces.internal.impl.XMLEntityManager.startDTDEntity(XMLEntityManager.java:1367)
+	at java.xml/com.sun.org.apache.xerces.internal.impl.XMLDTDScannerImpl.setInputSource(XMLDTDScannerImpl.java:257)
+	at java.xml/com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl$DTDDriver.dispatch(XMLDocumentScannerImpl.java:1152)
+	at java.xml/com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl$DTDDriver.next(XMLDocumentScannerImpl.java:1040)
+	at java.xml/com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl$PrologDriver.next(XMLDocumentScannerImpl.java:943)
+	at java.xml/com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl.next(XMLDocumentScannerImpl.java:605)
+	at java.xml/com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl.next(XMLNSDocumentScannerImpl.java:112)
+	at java.xml/com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument(XMLDocumentFragmentScannerImpl.java:534)
+	at java.xml/com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:888)
+	at java.xml/com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:824)
+	at java.xml/com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(XMLParser.java:141)
+	at java.xml/com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(AbstractSAXParser.java:1216)
+	at java.xml/com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl$JAXPSAXParser.parse(SAXParserImpl.java:635)
+	at java.xml/com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl.parse(SAXParserImpl.java:324)
+	at org.eclipse.jetty.xml.XmlParser.parse(XmlParser.java:255)
+	at org.eclipse.jetty.webapp.Descriptor.parse(Descriptor.java:55)
+	at org.eclipse.jetty.webapp.WebDescriptor.parse(WebDescriptor.java:212)
+	at org.eclipse.jetty.webapp.MetaData.setWebXml(MetaData.java:194)
+	at org.eclipse.jetty.webapp.WebXmlConfiguration.preConfigure(WebXmlConfiguration.java:60)
+	at org.eclipse.jetty.webapp.WebAppContext.preConfigure(WebAppContext.java:506)
+	at org.eclipse.jetty.webapp.WebAppContext.doStart(WebAppContext.java:544)
+	at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:68)
+	at com.jfinal.server.jetty.JettyServer$1.onChange(JettyServer.java:140)
+	at com.jfinal.server.jetty.Scanner.compare(Scanner.java:94)
+	at com.jfinal.server.jetty.Scanner.working(Scanner.java:57)
+	at com.jfinal.server.jetty.Scanner.access$000(Scanner.java:31)
+	at com.jfinal.server.jetty.Scanner$1.run(Scanner.java:101)
+	at java.base/java.util.TimerThread.mainLoop(Timer.java:556)
+	at java.base/java.util.TimerThread.run(Timer.java:506)

+ 3 - 0
PacsOnline_Wechat_Patient/log/jfinal_demo_for_maven.log_2019-03-14.log

@@ -0,0 +1,3 @@
+
+2019-03-14 19:47:16
+[WARN]-[Thread: qtp292917034-18]-[com.jfinal.core.ActionHandler.handle()]: 404 Action Not Found: /fd

+ 86 - 0
PacsOnline_Wechat_Patient/pom.xml

@@ -0,0 +1,86 @@
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+	<modelVersion>4.0.0</modelVersion>
+	<groupId>com.zskk</groupId>
+	<artifactId>PacsOnline_Wechat_Patient</artifactId>
+	<packaging>war</packaging>
+	<version>0.0.1-SNAPSHOT</version>
+	<name>PacsOnline_Wechat_Patient Maven Webapp</name>
+	<url>http://maven.apache.org</url>
+
+	<properties>
+		<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+		<jdk.version>11</jdk.version>
+	</properties>
+
+	<dependencies>
+		<dependency>
+			<groupId>org.junit.jupiter</groupId>
+			<artifactId>junit-jupiter-api</artifactId>
+			<version>5.4.0</version>
+			<scope>test</scope>
+		</dependency>
+		<dependency>
+			<groupId>com.jfinal</groupId>
+			<artifactId>jfinal-weixin</artifactId>
+			<version>2.3</version>
+		</dependency>
+		<dependency>
+			<groupId>com.jfinal</groupId>
+			<artifactId>jfinal</artifactId>
+			<version>3.6</version>
+			<scope>provided</scope>
+		</dependency>
+		<dependency>
+			<groupId>com.alibaba</groupId>
+			<artifactId>druid</artifactId>
+			<version>1.1.14</version>
+		</dependency>
+		<dependency>
+			<groupId>log4j</groupId>
+			<artifactId>log4j</artifactId>
+			<version>1.2.17</version>
+		</dependency>
+		<dependency>
+			<groupId>com.alibaba</groupId>
+			<artifactId>fastjson</artifactId>
+			<version>1.2.56</version>
+		</dependency>
+		<dependency>
+			<groupId>com.squareup.okhttp3</groupId>
+			<artifactId>okhttp</artifactId>
+			<version>3.13.1</version>
+		</dependency>
+		<dependency>
+			<groupId>mysql</groupId>
+			<artifactId>mysql-connector-java</artifactId>
+			<version>8.0.15</version>
+		</dependency>
+		<dependency>
+    <groupId>com.jfinal</groupId>
+    <artifactId>jetty-server</artifactId>
+    <version>2019.3</version>
+    <scope>provided</scope>
+</dependency>
+	</dependencies>
+
+	<build>
+		<finalName>PacsOnline_Wechat_Patient</finalName>
+		<plugins>
+			<plugin>
+				<artifactId>maven-war-plugin</artifactId>
+				<version>3.2.2</version>
+			</plugin>
+			<plugin>
+				<groupId>org.apache.maven.plugins</groupId>
+				<artifactId>maven-compiler-plugin</artifactId>
+				<version>3.8.0</version>
+				<configuration>
+					<source>${jdk.version}</source>
+					<target>${jdk.version}</target>
+				</configuration>
+			</plugin>
+		</plugins>
+	</build>
+</project>

+ 144 - 0
PacsOnline_Wechat_Patient/src/main/java/com/zskk/common/ZskkConfig.java

@@ -0,0 +1,144 @@
+/**
+ * Copyright (c) 2011-2014, James Zhan 詹波 (jfinal@126.com).
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ */
+
+package com.zskk.common;
+
+import com.jfinal.config.Constants;
+import com.jfinal.config.Handlers;
+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.template.Engine;
+import com.jfinal.weixin.sdk.api.ApiConfig;
+import com.jfinal.weixin.sdk.api.ApiConfigKit;
+import com.jfinal.wxaapp.WxaConfig;
+import com.jfinal.wxaapp.WxaConfigKit;
+
+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("a_little_config_pro.txt", "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) {
+        // C3p0Plugin c3p0Plugin = new C3p0Plugin(PropKit.get("jdbcUrl"), PropKit.get("user"), PropKit.get("password").trim());
+        // me.add(c3p0Plugin);
+
+        // EhCachePlugin ecp = new EhCachePlugin();
+        // me.add(ecp);
+
+        // 使用redis分布accessToken
+        // RedisPlugin redisPlugin = new RedisPlugin("weixin", "127.0.0.1");
+        // redisPlugin.setSerializer(JdkSerializer.me); // 需要使用fst高性能序列化的用户请删除这一行(Fst jar依赖请查看WIKI)
+        // me.add(redisPlugin);
+    }
+
+    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"));
+
+//        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(PropKit.getBoolean("encryptMessage", 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 static void main(String[] args) {
+        JFinal.start("src/main/webapp", 80, "/", 5);
+    }
+
+	@Override
+	public void configEngine(Engine engine) {
+		
+	}
+}

+ 9 - 0
PacsOnline_Wechat_Patient/src/main/resources/config.properties

@@ -0,0 +1,9 @@
+#Database
+jdbcUrl  = jdbc:mysql://www.pacsonline.cn:3306/pacsonline?characterEncoding=utf8&zeroDateTimeBehavior=convertToNull
+user     = pacs
+password = ZSKK@2017~!@#
+
+#Wechat
+appId=wx1f3dc2c37dce641b
+appSecret=013c469bbd9e892a693f3375fdf4537e
+token=zhongshikangkai2019

+ 12 - 0
PacsOnline_Wechat_Patient/src/main/resources/log4j.properties

@@ -0,0 +1,12 @@
+# log4j.rootLogger=WARN, stdout, file
+log4j.rootLogger=WARN, stdout, file
+log4j.appender.stdout=org.apache.log4j.ConsoleAppender
+log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
+log4j.appender.stdout.layout.ConversionPattern=%n%-d{yyyy-MM-dd HH:mm:ss}%n[%p]-[Thread: %t]-[%C.%M()]: %m%n
+
+# Output to the File
+log4j.appender.file=org.apache.log4j.DailyRollingFileAppender
+log4j.appender.file.DatePattern='_'yyyy-MM-dd'.log'
+log4j.appender.file.File=./log/jfinal_demo_for_maven.log
+log4j.appender.file.layout=org.apache.log4j.PatternLayout
+log4j.appender.file.layout.ConversionPattern=%n%-d{yyyy-MM-dd HH:mm:ss}%n[%p]-[Thread: %t]-[%C.%M()]: %m%n

+ 22 - 0
PacsOnline_Wechat_Patient/src/main/webapp/WEB-INF/web.xml

@@ -0,0 +1,22 @@
+<!DOCTYPE web-app PUBLIC
+ "-//Sun Microsystems, Inc.//DTD Web Application 4.0//EN"
+ "http://java.sun.com/dtd/web-app_4_0.dtd" >
+
+<web-app>
+  <display-name>Archetype Created Web Application</display-name>
+  <filter>
+    <filter-name>jfinal</filter-name>
+    <filter-class>com.jfinal.core.JFinalFilter</filter-class>
+    <init-param>
+      <param-name>configClass</param-name>
+      <param-value>com.zskk.common.ZskkConfig</param-value>
+    </init-param>
+  </filter>
+
+  <filter-mapping>
+    <filter-name>jfinal</filter-name>
+    <url-pattern>/*</url-pattern>
+  </filter-mapping>
+</web-app>
+
+

+ 5 - 0
PacsOnline_Wechat_Patient/src/main/webapp/index.jsp

@@ -0,0 +1,5 @@
+<html>
+<body>
+<h2>Hello World!</h2>
+</body>
+</html>