From 3d019610083e00f67dc460217f4bed03dc069c39 Mon Sep 17 00:00:00 2001
From: wuxw7 <wuxw7@asiainfo.com>
Date: 星期四, 07 六月 2018 15:13:49 +0800
Subject: [PATCH] 生成ID统一走codeService
---
java110-common/src/main/java/com/java110/common/util/SequenceUtil.java | 149 +++++++++++++++++++++++++++++++++++++++++++++----
1 files changed, 137 insertions(+), 12 deletions(-)
diff --git a/java110-common/src/main/java/com/java110/common/util/SequenceUtil.java b/java110-common/src/main/java/com/java110/common/util/SequenceUtil.java
index 0d1ce57..77ba1c4 100644
--- a/java110-common/src/main/java/com/java110/common/util/SequenceUtil.java
+++ b/java110-common/src/main/java/com/java110/common/util/SequenceUtil.java
@@ -1,8 +1,20 @@
package com.java110.common.util;
+import com.alibaba.fastjson.JSONObject;
+import com.java110.common.cache.MappingCache;
+import com.java110.common.constant.MappingConstant;
+import com.java110.common.constant.ResponseConstant;
+import com.java110.common.exception.GenerateCodeException;
+import com.java110.common.exception.ResponseErrorException;
+import com.java110.common.factory.ApplicationContextFactory;
+import org.springframework.web.client.RestTemplate;
+
+import java.rmi.NoSuchObjectException;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Date;
+import java.util.HashMap;
+import java.util.Map;
import java.util.concurrent.locks.Lock;
import java.util.concurrent.locks.ReentrantLock;
@@ -16,9 +28,26 @@
private static final Lock LOCK = new ReentrantLock();
private static short lastCount = 1;
private static int count = 0;
- private static DateFormat dateFormatDay = new SimpleDateFormat("yyyyMMdd");
- private static DateFormat dateFormatMinute = new SimpleDateFormat("yyyyMMddhhmmss");
private static final String first = "10";
+
+ /**
+ *
+ * 鍙湁鍦ㄤ笉璋冪敤鏈嶅姟鐢熸垚ID鏃舵湁鐢�
+ */
+ private static Map<String,String> prefixMap = null;
+ static {
+ prefixMap = new HashMap<String,String>();
+ //10+yyyymmdd+鍏綅搴忓垪
+ prefixMap.put("oId","10");
+ //锛�20+yyyymmdd+鍏綅搴忓垪锛�
+ prefixMap.put("bId","20");
+ //锛�11+yyyymmdd+鍏綅搴忓垪锛�
+ prefixMap.put("attrId","11");
+ prefixMap.put("transactionId","1000001");
+ prefixMap.put("pageTransactionId","1000002");
+ prefixMap.put("dataFlowId","2000");
+ prefixMap.put("userId","3000");
+ }
private static String PLATFORM_CODE = "0001";
@@ -49,26 +78,122 @@
//浠庡唴瀛樹腑鑾峰彇骞冲彴闅忔満鐮�
- return first + PLATFORM_CODE + dateFormatDay.format(new Date()) + nextId();
+ return prefixMap.get("transactionId") + DateUtil.getNow(DateUtil.DATE_FORMATE_STRING_H) + nextId();
}
/**
- * 鍒涘缓鑳藉姏骞冲彴浜や簰 娴佹按
- * SVC90005
+ * 鑾峰彇浜ゆ槗娴佹按ID
*
- * 90001 20170314094355 10000018
* @return
*/
- public static String getSVC90005TransactionId(){
- return "90001"+ dateFormatMinute.format(new Date()) +"99" + nextId();
+ public static String getPageTransactionId() {
+
+ //浠庡唴瀛樹腑鑾峰彇骞冲彴闅忔満鐮�
+
+ return prefixMap.get("pageTransactionId") + DateUtil.getNow(DateUtil.DATE_FORMATE_STRING_H) + nextId();
}
+ public static String getOId() throws GenerateCodeException{
+ if(!MappingConstant.VALUE_ON.equals(MappingCache.getValue(MappingConstant.KEY_NEED_INVOKE_GENERATE_ID))){
+ return prefixMap.get("oId") + DateUtil.getNow(DateUtil.DATE_FORMATE_STRING_H) + nextId("%08d");
+ }
+ return getCode(prefixMap.get("oId"));
+ }
+
+
/**
- * 6004050001201703141105137879
- * dateFormatMinute
+ * 鏌ヨCode
+ * @param prefix
+ * @return
+ * @throws GenerateCodeException
+ */
+ private static String getCode(String prefix) throws GenerateCodeException{
+ //璋冪敤鏈嶅姟
+ String code = "-1";
+ try {
+ String responseMessage = restTemplate().postForObject(MappingCache.getValue(MappingConstant.KEY_CODE_PATH),
+ createCodeRequestJson(getTransactionId(),prefix,prefix).toJSONString(), String.class);
+
+ Assert.jsonObjectHaveKey(responseMessage, "code", "缂栫爜鐢熸垚绯荤粺 杩斿洖鎶ユ枃閿欒" + responseMessage);
+
+ JSONObject resJson = JSONObject.parseObject(responseMessage);
+
+ if (!ResponseConstant.RESULT_CODE_SUCCESS.equals(resJson.getString("code"))) {
+ throw new ResponseErrorException(resJson.getString("code"), "鐢熸垚oId缂栫爜澶辫触 "
+ + resJson.getString("message"));
+ }
+ code = resJson.getString("id");
+ }catch (Exception e){
+ throw new GenerateCodeException(ResponseConstant.RESULT_CODE_ERROR,e.getMessage());
+ }
+ finally {
+ return code;
+ }
+
+ }
+
+ public static String getBId() throws GenerateCodeException{
+ if(!MappingConstant.VALUE_ON.equals(MappingCache.getValue(MappingConstant.KEY_NEED_INVOKE_GENERATE_ID))){
+ return prefixMap.get("bId") + DateUtil.getNow(DateUtil.DATE_FORMATE_STRING_H) + nextId("%08d");
+ }
+ //璋冪敤鏈嶅姟
+ return getCode(prefixMap.get("bId"));
+ }
+
+ public static String getAttrId() throws GenerateCodeException{
+ if(!MappingConstant.VALUE_ON.equals(MappingCache.getValue(MappingConstant.KEY_NEED_INVOKE_GENERATE_ID))){
+ return prefixMap.get("attrId") + DateUtil.getNow(DateUtil.DATE_FORMATE_STRING_H) + nextId("%08d");
+ }
+ //璋冪敤鏈嶅姟
+ return getCode(prefixMap.get("attrId"));
+ }
+
+ public static String getDataFlowId() throws GenerateCodeException{
+ if(!MappingConstant.VALUE_ON.equals(MappingCache.getValue(MappingConstant.KEY_NEED_INVOKE_GENERATE_ID))){
+ return prefixMap.get("dataFlowId") + DateUtil.getNow(DateUtil.DATE_FORMATE_STRING_H) + nextId("%08d");
+ }
+
+ return getCode(prefixMap.get("dataFlowId"));
+
+ }
+
+ public static String getUserId() throws GenerateCodeException{
+ if(!MappingConstant.VALUE_ON.equals(MappingCache.getValue(MappingConstant.KEY_NEED_INVOKE_GENERATE_ID))){
+ return prefixMap.get("userId") + nextId("%08d");
+ }
+ //璋冪敤鏈嶅姟
+ return getCode(prefixMap.get("userId"));
+ }
+
+
+ /**
+ * 鑾峰彇restTemplate
+ * @return
+ * @throws NoSuchObjectException
+ */
+ private static RestTemplate restTemplate() throws NoSuchObjectException{
+
+ Object bean = ApplicationContextFactory.getBean("restTemplate");
+
+ if(bean == null){
+ throw new NoSuchObjectException("娌℃湁鎵惧埌restTemplate瀵硅薄锛岃鏍稿疄");
+ }
+
+ return (RestTemplate) bean;
+ }
+
+
+ /**
+ * ID鐢熸垚璇锋眰鎶ユ枃
+ * @param transactionId
* @return
*/
- public static String getInvokeSAOPTransactionId(){
- return "6004050001"+dateFormatMinute.format(new Date())+nextId("%04d");
+ private static JSONObject createCodeRequestJson(String transactionId, String prefix, String name){
+ JSONObject paramOut = JSONObject.parseObject("{}");
+ paramOut.put("transactionId",transactionId);
+ paramOut.put("prefix",prefix);
+ paramOut.put("name",name);
+ paramOut.put("requestTime",DateUtil.getNowDefault());
+ return paramOut;
}
}
--
Gitblit v1.8.0