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 |   97 +++++++++++++++++++++++++++++++++++++++++-------
 1 files changed, 83 insertions(+), 14 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 464be36..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,15 @@
 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;
@@ -27,9 +34,9 @@
      *
      * 鍙湁鍦ㄤ笉璋冪敤鏈嶅姟鐢熸垚ID鏃舵湁鐢�
      */
-    private static Map prefixMap = null;
+    private static Map<String,String> prefixMap = null;
     static {
-        prefixMap = new HashMap();
+        prefixMap = new HashMap<String,String>();
         //10+yyyymmdd+鍏綅搴忓垪
         prefixMap.put("oId","10");
         //锛�20+yyyymmdd+鍏綅搴忓垪锛�
@@ -86,45 +93,107 @@
         return prefixMap.get("pageTransactionId") + DateUtil.getNow(DateUtil.DATE_FORMATE_STRING_H) + nextId();
     }
 
-    public static String getOId(){
+    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 null;
+        return getCode(prefixMap.get("oId"));
     }
 
-    public static String getBId(){
+
+    /**
+     * 鏌ヨ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 null;
+        return getCode(prefixMap.get("bId"));
     }
 
-    public static String getAttrId(){
+    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 null;
+        return getCode(prefixMap.get("attrId"));
     }
 
-    public static String getDataFlowId(){
+    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 null;
+        return getCode(prefixMap.get("dataFlowId"));
 
     }
 
-    public static String getUserId(){
+    public static String getUserId()  throws GenerateCodeException{
         if(!MappingConstant.VALUE_ON.equals(MappingCache.getValue(MappingConstant.KEY_NEED_INVOKE_GENERATE_ID))){
-            return prefixMap.get("userId") + DateUtil.getNow(DateUtil.DATE_FORMATE_STRING_H) + nextId("%08d");
+            return prefixMap.get("userId") + nextId("%08d");
         }
         //璋冪敤鏈嶅姟
-        return null;
+        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
+     */
+    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