diff --git a/parent/core.sdk/pom.xml b/parent/core.sdk/pom.xml
index c5c38c7..8566bd0 100644
--- a/parent/core.sdk/pom.xml
+++ b/parent/core.sdk/pom.xml
@@ -27,7 +27,7 @@
httpmime
${httpclient.version}
-
+
1.0
diff --git a/parent/core.sdk/src/main/java/com/lyms/util/TokenUtils.java b/parent/core.sdk/src/main/java/com/lyms/util/TokenUtils.java
new file mode 100644
index 0000000..24b2362
--- /dev/null
+++ b/parent/core.sdk/src/main/java/com/lyms/util/TokenUtils.java
@@ -0,0 +1,58 @@
+package com.lyms.util;
+
+import com.google.common.base.Charsets;
+import com.google.common.hash.Hashing;
+import org.apache.commons.lang.time.FastDateFormat;
+
+import java.util.Date;
+import com.google.common.base.Charsets;
+import com.google.common.hash.Hashing;
+import org.apache.commons.lang.time.FastDateFormat;
+/**
+ * Created by riecard on 15/9/21.
+ */
+public class TokenUtils {
+
+ private static final String privateKey = "fdas34ljfr濂絪ja@#8$%dfkl;js&4*daklfjsdl;jb1324";
+ public static String getToken(String password, String date) {
+ return Hashing.md5().newHasher().
+ putString(password, Charsets.UTF_8).
+ putString(privateKey, Charsets.UTF_8).
+ putString(date, Charsets.UTF_8).hash().toString();
+ }
+
+ public static String getToken(String password, Date date) {
+ return Hashing.md5().newHasher().
+ putString(password, Charsets.UTF_8).
+ putString(privateKey, Charsets.UTF_8).
+ putString(getDate(date), Charsets.UTF_8).hash().toString();
+ }
+
+ public static String getToken(String password) {
+ return Hashing.md5().newHasher().
+ putString(password, Charsets.UTF_8).
+ putString(privateKey, Charsets.UTF_8).putString(getDate(), Charsets.UTF_8).hash().toString();
+ }
+ public static boolean validToken(String token, String password) {
+ String confirm = getToken(password);
+ if (confirm.equals(token)) {
+ return true;
+ } else {
+ return false;
+ }
+ }
+ public static String getDate() {
+ Date date = new Date(System.currentTimeMillis());
+ return FastDateFormat.getInstance("yyyyMMddHH").format(date);
+ }
+ public static String getDate(Date now) {
+
+ return FastDateFormat.getInstance("yyyyMMddHH").format(now);
+ }
+ public static String getNextHour(Date now) {
+ Date date = new Date(now.getTime()+60*60*1000);
+
+ return FastDateFormat.getInstance("yyyyMMddHH").format(date);
+ }
+
+}
diff --git a/parent/hospital.mac/src/main/java/com/lyms/hospital/service/token/impl/TokenService.java b/parent/hospital.mac/src/main/java/com/lyms/hospital/service/token/impl/TokenService.java
new file mode 100644
index 0000000..a4fd4b5
--- /dev/null
+++ b/parent/hospital.mac/src/main/java/com/lyms/hospital/service/token/impl/TokenService.java
@@ -0,0 +1,65 @@
+package com.lyms.hospital.service.token;
+/**
+ * Created by riecard on 15/9/22.
+ */
+public interface TokenService
+{
+
+ /**
+ * 创建token
+ *
+ * @return
+ */
+ String createToken(Integer userId);
+
+ /**
+ * 创建token
+ *
+ * @return
+ */
+ String createToken(Integer userId, Integer second);
+
+ /**
+ * 重置token有效时间(默认重置为7天)
+ *
+ * @param token
+ * @return
+ */
+ boolean resetToken(String token);
+
+ /**
+ * 检查token是否存在
+ *
+ * @param token
+ * @return
+ */
+ boolean validToken(String token);
+
+ /**
+ * 检查token是否存在
+ *
+ * @param token
+ * @return
+ */
+ boolean validToken(String token, Integer second);
+
+ /**
+ * 根据token取userId,失败返回null
+ *
+ * @param token
+ * @return
+ */
+ Integer getUserId(String token);
+
+ void deleteAllToken(Integer userId);
+
+ void deleteAllToken(Integer userId, String prefix);
+
+ /**
+ * 销毁token
+ *
+ * @param token
+ */
+ void deleteToken(String token);
+
+}
\ No newline at end of file
diff --git a/parent/hospital.mac/src/main/java/com/lyms/hospital/service/token/impl/TokenServiceImpl.java b/parent/hospital.mac/src/main/java/com/lyms/hospital/service/token/impl/TokenServiceImpl.java
new file mode 100644
index 0000000..7e4cf9b
--- /dev/null
+++ b/parent/hospital.mac/src/main/java/com/lyms/hospital/service/token/impl/TokenServiceImpl.java
@@ -0,0 +1,156 @@
+package com.lyms.hospital.service.token.impl;
+
+import com.lyms.hospital.service.token.TokenService;
+import com.lyms.util.SerializeUtils;
+import com.lyms.util.TokenUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.data.redis.core.RedisTemplate;
+import org.springframework.stereotype.Service;
+
+import java.io.Serializable;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.UUID;
+
+/**
+ * Created by riecard on 15/9/22.
+ */
+@Service
+public class TokenServiceImpl implements TokenService
+{
+
+ static final Integer seconds = 7 * 24 * 60 * 60;
+ static final Integer ams_seconds = 60 * 60;
+ @Value("${}")
+ private String tokenPrefix;
+
+ @Autowired
+ private RedisTemplate redisTemplate;
+
+ private String prefix = null;
+
+ private String getPrefix()
+ {
+ return tokenPrefix;
+ }
+
+ private Integer getSeconds()
+ {
+ if ("ams".equals(prefix))
+ {
+ return ams_seconds;
+ } else
+ {
+ return seconds;
+ }
+ }
+
+ @Override
+ public String createToken(Integer userId, Integer second)
+ {
+ String token = getPrefix() + TokenUtils.getToken(UUID.randomUUID().toString());
+
+ redisTemplate.opsForValue().set(token, userId, second);
+
+ List list = new ArrayList();
+ List delList = new ArrayList();
+ String tempKey = getPrefix() + "_tokenlist_" + userId;
+ Object obj = redisTemplate.opsForValue().get(tempKey);
+ if (obj != null)
+ {
+ list = (List) obj;
+ }
+ for (Serializable key : list)
+ {
+ if (!redisTemplate.hasKey(key))
+ {
+ delList.add(key);
+ }
+ }
+ list.removeAll(delList);
+ list.add(token);
+ redisTemplate.opsForValue().set(tempKey, SerializeUtils.serialize(list), second);
+ return token;
+ }
+
+ @Override
+ public String createToken(Integer userId)
+ {
+ return createToken(userId, seconds);
+ }
+
+ @Override
+ public boolean resetToken(String token)
+ {
+ Object obj = redisTemplate.opsForValue().get(token);
+ if (obj != null)
+ {
+ redisTemplate.opsForValue().set(token, SerializeUtils.serialize(obj), seconds);
+ return true;
+ }
+ return false;
+ }
+
+ @Override
+ public boolean validToken(String token)
+ {
+ return validToken(token, seconds);
+ }
+
+ @Override
+ public boolean validToken(String token, Integer second)
+ {
+ Object obj = redisTemplate.opsForValue().get(token);
+ if (obj != null)
+ {
+ redisTemplate.opsForValue().set(token, SerializeUtils.serialize(obj), second);
+ return true;
+ }
+ return false;
+ }
+
+ @Override
+ public Integer getUserId(String token)
+ {
+ Object obj = redisTemplate.opsForValue().get(token);
+ if (obj != null)
+ {
+ redisTemplate.opsForValue().set(token, SerializeUtils.serialize(obj), getSeconds());
+ return (Integer) obj;
+ }
+ return null;
+ }
+
+ @Override
+ public void deleteToken(String token)
+ {
+ redisTemplate.delete(token);
+ }
+
+ @Override
+ public void deleteAllToken(Integer userId)
+ {
+ String tempKey = getPrefix() + "_tokenlist_" + userId;
+ Object obj = redisTemplate.opsForValue().get(tempKey);
+ if (obj != null)
+ {
+ List list = (List) obj;
+ redisTemplate.delete(list);
+ redisTemplate.delete(tempKey);
+ }
+ }
+
+ @Override
+ public void deleteAllToken(Integer userId, String prefix)
+ {
+ String tempKey = prefix + "_tokenlist_" + userId;
+ Object obj = redisTemplate.opsForValue().get(tempKey);
+ if (obj != null)
+ {
+ List list = (List) obj;
+ redisTemplate.delete(list);
+ redisTemplate.delete(tempKey);
+ }
+ }
+}
\ No newline at end of file
diff --git a/parent/pom.xml b/parent/pom.xml
index e9d9be6..3cec51f 100644
--- a/parent/pom.xml
+++ b/parent/pom.xml
@@ -273,6 +273,11 @@
qiniu-java-sdk
${qiniu-java-sdk.version}
+
+ com.google.guava
+ guava
+ 19.0-rc2
+
${project.artifactId}