├── JServer
├── .idea
│ ├── compiler.xml
│ ├── copyright
│ │ └── profiles_settings.xml
│ ├── deployment.xml
│ ├── description.html
│ ├── encodings.xml
│ ├── misc.xml
│ ├── modules.xml
│ ├── uiDesigner.xml
│ ├── vcs.xml
│ └── workspace.xml
├── MedServer.iml
├── README.txt
├── config
│ └── log4j.properties
├── lib
│ ├── log4j-1.2.16.jar
│ ├── mybatis-3.1.1.jar
│ ├── mysql-connector-java-5.0.8-bin.jar
│ ├── netty-all-4.1.6.Final.jar
│ └── protobuf-java-2.6.1.jar
├── res
│ └── protocol
│ │ ├── RM.BaseDefine.proto
│ │ ├── RM.File.proto
│ │ ├── RM.Login.proto
│ │ └── RM.Message.proto
└── src
│ ├── Main.java
│ ├── base
│ ├── config
│ │ ├── ConfigReader.java
│ │ └── ConfigUtil.java
│ ├── exception
│ │ └── ConfigException.java
│ ├── pdu
│ │ ├── PduBase.java
│ │ ├── PduDecoder.java
│ │ ├── PduEncoder.java
│ │ ├── PduHandler.java
│ │ ├── PduHeader.java
│ │ └── RMCommons.java
│ └── protobuf
│ │ ├── basedefine
│ │ └── RMBaseDefine.java
│ │ ├── file
│ │ └── RMFile.java
│ │ ├── login
│ │ └── RMLogin.java
│ │ └── message
│ │ └── RMMessage.java
│ ├── dbserver
│ ├── DataBaseServer.java
│ ├── DataBaseServer.properties
│ ├── dao
│ │ └── UserDao.java
│ ├── dbconfig.properties
│ ├── entity
│ │ └── UserInfoVo.java
│ ├── mapper
│ │ └── UserMapper.xml
│ └── mybatis-config.xml
│ ├── fileserver
│ ├── FileServer.java
│ ├── FileServer.properties
│ └── dfsserver
│ │ ├── HISTORY
│ │ ├── README
│ │ ├── build.xml
│ │ ├── fdfs_client.conf
│ │ └── org
│ │ └── csource
│ │ ├── common
│ │ ├── Base64.java
│ │ ├── IniFileReader.java
│ │ ├── MyException.java
│ │ └── NameValuePair.java
│ │ └── fastdfs
│ │ ├── ClientGlobal.java
│ │ ├── DownloadCallback.java
│ │ ├── DownloadStream.java
│ │ ├── FileInfo.java
│ │ ├── ProtoCommon.java
│ │ ├── ProtoStructDecoder.java
│ │ ├── ServerInfo.java
│ │ ├── StorageClient.java
│ │ ├── StorageClient1.java
│ │ ├── StorageServer.java
│ │ ├── StructBase.java
│ │ ├── StructGroupStat.java
│ │ ├── StructStorageStat.java
│ │ ├── TrackerClient.java
│ │ ├── TrackerGroup.java
│ │ ├── TrackerServer.java
│ │ ├── UploadCallback.java
│ │ ├── UploadStream.java
│ │ └── test
│ │ ├── DownloadFileWriter.java
│ │ ├── Monitor.java
│ │ ├── Test.java
│ │ ├── Test1.java
│ │ ├── TestAppender.java
│ │ ├── TestAppender1.java
│ │ ├── TestClient.java
│ │ ├── TestClient1.java
│ │ ├── TestLoad.java
│ │ └── UploadLocalFileSender.java
│ ├── loginserver
│ ├── LoginServer.java
│ ├── LoginServer.properties
│ ├── conf
│ │ ├── ClientType.java
│ │ └── LoginMsgType.java
│ ├── handler
│ │ └── channel
│ │ │ ├── CLoginInBaseHandler.java
│ │ │ └── CLoginOutBaseHandler.java
│ ├── test
│ │ └── Test1.java
│ └── vo
│ │ └── MsgServerInfo.java
│ ├── msgserver
│ ├── MsgServer.java
│ ├── MsgServer.properties
│ ├── conf
│ │ └── MsgPduType.java
│ ├── global
│ │ └── MsgGlobal.java
│ └── handler
│ │ └── channel
│ │ ├── CMsgServerInBaseHandler.java
│ │ └── CMsgServerOutBaseHandler.java
│ └── sessionserver
│ ├── SessionServer.java
│ └── SessionServer.properties
└── README.md
/JServer/.idea/compiler.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
--------------------------------------------------------------------------------
/JServer/.idea/copyright/profiles_settings.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
--------------------------------------------------------------------------------
/JServer/.idea/deployment.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
--------------------------------------------------------------------------------
/JServer/.idea/description.html:
--------------------------------------------------------------------------------
1 | Simple Java application that includes a class with main()
method
--------------------------------------------------------------------------------
/JServer/.idea/encodings.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/JServer/.idea/misc.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
24 |
25 |
26 |
--------------------------------------------------------------------------------
/JServer/.idea/modules.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/JServer/.idea/uiDesigner.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | -
6 |
7 |
8 | -
9 |
10 |
11 | -
12 |
13 |
14 | -
15 |
16 |
17 | -
18 |
19 |
20 |
21 |
22 |
23 | -
24 |
25 |
26 |
27 |
28 |
29 | -
30 |
31 |
32 |
33 |
34 |
35 | -
36 |
37 |
38 |
39 |
40 |
41 | -
42 |
43 |
44 |
45 |
46 | -
47 |
48 |
49 |
50 |
51 | -
52 |
53 |
54 |
55 |
56 | -
57 |
58 |
59 |
60 |
61 | -
62 |
63 |
64 |
65 |
66 | -
67 |
68 |
69 |
70 |
71 | -
72 |
73 |
74 | -
75 |
76 |
77 |
78 |
79 | -
80 |
81 |
82 |
83 |
84 | -
85 |
86 |
87 |
88 |
89 | -
90 |
91 |
92 |
93 |
94 | -
95 |
96 |
97 |
98 |
99 | -
100 |
101 |
102 | -
103 |
104 |
105 | -
106 |
107 |
108 | -
109 |
110 |
111 | -
112 |
113 |
114 |
115 |
116 | -
117 |
118 |
119 | -
120 |
121 |
122 |
123 |
124 |
--------------------------------------------------------------------------------
/JServer/.idea/vcs.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/JServer/MedServer.iml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
--------------------------------------------------------------------------------
/JServer/README.txt:
--------------------------------------------------------------------------------
1 | 服务器
2 |
--------------------------------------------------------------------------------
/JServer/config/log4j.properties:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mh47838704/IMJavaSparrow/f7e8d970af2996eb95f0ccdb819437242ef70f8c/JServer/config/log4j.properties
--------------------------------------------------------------------------------
/JServer/lib/log4j-1.2.16.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mh47838704/IMJavaSparrow/f7e8d970af2996eb95f0ccdb819437242ef70f8c/JServer/lib/log4j-1.2.16.jar
--------------------------------------------------------------------------------
/JServer/lib/mybatis-3.1.1.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mh47838704/IMJavaSparrow/f7e8d970af2996eb95f0ccdb819437242ef70f8c/JServer/lib/mybatis-3.1.1.jar
--------------------------------------------------------------------------------
/JServer/lib/mysql-connector-java-5.0.8-bin.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mh47838704/IMJavaSparrow/f7e8d970af2996eb95f0ccdb819437242ef70f8c/JServer/lib/mysql-connector-java-5.0.8-bin.jar
--------------------------------------------------------------------------------
/JServer/lib/netty-all-4.1.6.Final.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mh47838704/IMJavaSparrow/f7e8d970af2996eb95f0ccdb819437242ef70f8c/JServer/lib/netty-all-4.1.6.Final.jar
--------------------------------------------------------------------------------
/JServer/lib/protobuf-java-2.6.1.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mh47838704/IMJavaSparrow/f7e8d970af2996eb95f0ccdb819437242ef70f8c/JServer/lib/protobuf-java-2.6.1.jar
--------------------------------------------------------------------------------
/JServer/res/protocol/RM.BaseDefine.proto:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mh47838704/IMJavaSparrow/f7e8d970af2996eb95f0ccdb819437242ef70f8c/JServer/res/protocol/RM.BaseDefine.proto
--------------------------------------------------------------------------------
/JServer/res/protocol/RM.File.proto:
--------------------------------------------------------------------------------
1 | package RM.File;
2 | import "RM.BaseDefine.proto";
3 | option java_package = "base.protobuf.file";
4 | //option java_outer_classname = "MOBILEMedical";
5 | option optimize_for = LITE_RUNTIME;
6 |
7 | // 文件列表请求
8 | message IMFileListReq{
9 | //cmd id: 0x0501
10 | required uint32 user_id = 1;
11 | }
12 |
13 | // 文件列表返回
14 | message IMFileListRsp{
15 | //cmd id: 0x0502
16 | required uint32 result_code = 1; //0:successed 1:failed
17 | repeated RM.BaseDefine.HeartFileInfo file_list = 2; //所有文件列表信息
18 | }
19 |
20 | // 文件删除请求
21 | message IMFileDeleteReq{
22 | //cmd id: 0x0503
23 | required uint32 user_id = 1;
24 | required uint32 file_id = 2;
25 | }
26 |
27 | // 文件删除返回
28 | message IMFileDeleteRsp{
29 | //cmd id: 0x0504
30 | required uint32 user_id = 1;
31 | required uint32 result_code = 2;
32 | }
33 |
34 |
35 | // 文件上传请求
36 | message IMFileUploadReq{
37 | //cmd id: 0x0505
38 | required uint32 user_id = 1;
39 | required RM.BaseDefine.FileInfo file_info = 2;
40 | required bytes file_data = 3;
41 | }
42 |
43 | // 文件上传返回
44 | message IMFileUploadRsp{
45 | //cmd id: 0x0506
46 | required uint32 user_id = 1;
47 | required uint32 result_code = 2;
48 | }
49 |
50 | // 文件元信息保存请求
51 | message IMFileMetaDataSaveReq{
52 | //cmd id: 0x0507
53 | required uint32 user_id = 1;
54 | required string store_url = 2; //文件存储的路径
55 | required RM.BaseDefine.FileInfo file_info = 3;
56 | }
57 |
58 | // 文件元信息保存返回
59 | message IMFileMetaDataSaveRsp{
60 | //cmd id: 0x0508
61 | required uint32 user_id = 1;
62 | required uint32 result_code = 2;
63 | }
64 |
65 | // 文件下载请求
66 | message IMFileDownloadReq{
67 | //cmd id: 0x0509
68 | required uint32 user_id = 1;
69 | required string store_url = 2; //文件存储的路径
70 | }
71 |
72 | // 文件下载返回
73 | message IMFileDownloadRsp{
74 | //cmd id: 0x0510
75 | required uint32 user_id = 1;
76 | required bytes file_data = 2;
77 | }
--------------------------------------------------------------------------------
/JServer/res/protocol/RM.Login.proto:
--------------------------------------------------------------------------------
1 | package RM.Login;
2 | import "RM.BaseDefine.proto";
3 | option java_package = "base.protobuf.login";
4 | //option java_outer_classname = "MOBILEMedical";
5 | option optimize_for = LITE_RUNTIME;
6 |
7 | //service id: 0x0001
8 |
9 | // msg_server地址请求(已经废弃,改用http请求)
10 | message IMMsgServReq{
11 | //cmd id: 0x0101
12 | }
13 | // msg_server地址应答(已经废弃)
14 | message IMMsgServRsp{
15 | //cmd id: 0x0102
16 | required RM.BaseDefine.ResultType result_code = 1;
17 | optional string prior_ip = 2;
18 | optional string backip_ip = 3;
19 | optional uint32 port = 4;
20 | }
21 |
22 | // 登录请求
23 | message IMLoginReq{
24 | //cmd id: 0x0103
25 | required string user_name = 1;
26 | required string password = 2;
27 | required RM.BaseDefine.UserStatType online_status = 3;
28 | required RM.BaseDefine.ClientType client_type = 4;
29 | optional string client_version = 5;
30 | }
31 |
32 | // 登录返回
33 | message IMLoginRes{
34 | //cmd id: 0x0104
35 | required uint32 server_time = 1;
36 | required RM.BaseDefine.ResultType result_code = 2;
37 | optional string result_string = 3;
38 | optional RM.BaseDefine.UserStatType online_status = 4;
39 | optional RM.BaseDefine.UserInfo user_info = 5;
40 | }
41 |
42 | // 登出请求
43 | message IMLogoutReq{
44 | //cmd id: 0x0105
45 | }
46 |
47 | // 登出返回
48 | message IMLogoutRsp{
49 | //cmd id: 0x0106
50 | required uint32 result_code = 1;
51 | }
--------------------------------------------------------------------------------
/JServer/res/protocol/RM.Message.proto:
--------------------------------------------------------------------------------
1 | package RM.Message;
2 | import "RM.BaseDefine.proto";
3 | option java_package = "base.protobuf.message";
4 | //option java_outer_classname = "MOBILEMedical";
5 | option optimize_for = LITE_RUNTIME;
6 |
7 | //service id 0x0003
8 |
9 | // 发送消息协议。
10 | message IMMsgData{
11 | //cmd id: 0x0301
12 | required uint32 from_user_id = 1; //消息发送方
13 | required uint32 to_session_id = 2; //消息接受方
14 | required uint32 msg_id = 3;
15 | required uint32 create_time = 4;
16 | required RM.BaseDefine.MsgType msg_type = 5;
17 | required bytes msg_data = 6;
18 | optional bytes attach_data = 20;
19 | }
20 |
21 | // 消息收到回复。
22 | message IMMsgDataAck{
23 | //cmd id: 0x0302
24 | required uint32 user_id = 1; //发送此信令的用户id
25 | required uint32 session_id = 2;
26 | required uint32 msg_id = 3;
27 | required RM.BaseDefine.SessionType session_type = 4;
28 | }
29 |
30 | // 消息已读回复。
31 | message IMMsgDataReadAck{
32 | //cmd id: 0x0303
33 | required uint32 user_id = 1; //发送此信令的用户id
34 | required uint32 session_id = 2;
35 | required uint32 msg_id = 3;
36 | required RM.BaseDefine.SessionType session_type = 4;
37 | }
--------------------------------------------------------------------------------
/JServer/src/Main.java:
--------------------------------------------------------------------------------
1 | public class Main {
2 |
3 | public static void main(String[] args) {
4 | System.out.println("Hello World!");
5 | }
6 | }
7 |
--------------------------------------------------------------------------------
/JServer/src/base/config/ConfigReader.java:
--------------------------------------------------------------------------------
1 | package base.config;
2 |
3 | import base.exception.ConfigException;
4 | import org.apache.log4j.Logger;
5 |
6 | import java.io.FileInputStream;
7 | import java.io.IOException;
8 | import java.io.InputStream;
9 | import java.util.*;
10 |
11 | /**
12 | * Created by Administrator on 2017/5/15 0015.
13 | */
14 | public class ConfigReader {
15 | private Map configMap = new HashMap<>();
16 | private static Logger logger = Logger.getLogger(ConfigReader.class);
17 |
18 | public ConfigReader(String filePath){
19 | if(filePath != null){
20 | logger.debug("正在解析配置文件:"+filePath);
21 | this.read(filePath);
22 | }
23 | }
24 |
25 | public boolean read(String propFile) {
26 | Properties props = new Properties();
27 | InputStream in = null;
28 | try {
29 | in = new FileInputStream(propFile);
30 | if (in != null) {
31 | props.load(in);
32 | }else{
33 | logger.error("加载配置文件错误");
34 | return false;
35 | }
36 | // 解析properties文件
37 | Set> set = props.entrySet();
38 | Iterator> it = set.iterator();
39 | while (it.hasNext()) {
40 | Map.Entry