From d97fedd09ef0d768fe97f803b6568dbb96f74071 Mon Sep 17 00:00:00 2001
From: yuxc <653031404@qq.com>
Date: 星期四, 15 六月 2023 11:09:59 +0800
Subject: [PATCH] 1、主要完成密级服务的编写

---
 Source/UBCS/ubcs-service-api/ubcs-util-api/src/main/java/com/vci/ubcs/starter/web/constant/FrameWorkBusLangCodeConstant.java |  519 +++++++++++++++++++
 Source/UBCS/ubcs-service-api/ubcs-omd-api/pom.xml                                                                            |    6 
 Source/UBCS/ubcs-service-api/ubcs-omd-api/src/main/java/com/vci/ubcs/omd/feign/IWebSecretFallback.java                       |  101 +++
 Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/MdmEngineServiceImpl.java                    |   27 
 Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/service/IWebSecretService.java                              |  120 ++++
 Source/UBCS/ubcs-service-api/ubcs-omd-api/src/main/java/com/vci/ubcs/omd/feign/IWebSecretClient.java                         |  184 +++++++
 Source/UBCS/ubcs-service-api/ubcs-omd-api/src/main/java/com/vci/ubcs/omd/utils/VciOmdUtil.java                               |   25 
 Source/UBCS/ubcs-service-api/ubcs-util-api/src/main/java/com/vci/ubcs/starter/web/enumpck/DataSecretEnum.java                |   76 ++
 Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/feign/WebSecretClient.java                                  |  111 ++++
 Source/UBCS/ubcs-service/ubcs-omd/pom.xml                                                                                    |    6 
 Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/service/impl/WebSecretServiceImpl.java                      |  376 ++++++++++++++
 11 files changed, 1,537 insertions(+), 14 deletions(-)

diff --git a/Source/UBCS/ubcs-service-api/ubcs-omd-api/pom.xml b/Source/UBCS/ubcs-service-api/ubcs-omd-api/pom.xml
index 69dc113..d44c9e9 100644
--- a/Source/UBCS/ubcs-service-api/ubcs-omd-api/pom.xml
+++ b/Source/UBCS/ubcs-service-api/ubcs-omd-api/pom.xml
@@ -20,6 +20,12 @@
             <artifactId>ubcs-util-api</artifactId>
             <version>3.0.1.RELEASE</version>
         </dependency>
+        <dependency>
+            <groupId>com.vci.ubcs</groupId>
+            <artifactId>ubcs-user-api</artifactId>
+            <version>3.0.1.RELEASE</version>
+            <scope>compile</scope>
+        </dependency>
     </dependencies>
 
 </project>
diff --git a/Source/UBCS/ubcs-service-api/ubcs-omd-api/src/main/java/com/vci/ubcs/omd/feign/IWebSecretClient.java b/Source/UBCS/ubcs-service-api/ubcs-omd-api/src/main/java/com/vci/ubcs/omd/feign/IWebSecretClient.java
new file mode 100644
index 0000000..0241c11
--- /dev/null
+++ b/Source/UBCS/ubcs-service-api/ubcs-omd-api/src/main/java/com/vci/ubcs/omd/feign/IWebSecretClient.java
@@ -0,0 +1,184 @@
+/*
+ *      Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ *  Redistribution and use in source and binary forms, with or without
+ *  modification, are permitted provided that the following conditions are met:
+ *
+ *  Redistributions of source code must retain the above copyright notice,
+ *  this list of conditions and the following disclaimer.
+ *  Redistributions in binary form must reproduce the above copyright
+ *  notice, this list of conditions and the following disclaimer in the
+ *  documentation and/or other materials provided with the distribution.
+ *  Neither the name of the dreamlu.net developer nor the names of its
+ *  contributors may be used to endorse or promote products derived from
+ *  this software without specific prior written permission.
+ *  Author: Chill 搴勯獮 (smallchill@163.com)
+ */
+package com.vci.ubcs.omd.feign;
+
+import com.vci.ubcs.omd.entity.Enum;
+import com.vci.ubcs.omd.entity.EnumItem;
+import com.vci.ubcs.omd.vo.EnumVO;
+import com.vci.ubcs.starter.exception.VciBaseException;
+import com.vci.ubcs.system.user.vo.UserVO;
+import io.swagger.models.auth.In;
+import org.springblade.core.launch.constant.AppConstant;
+import org.springblade.core.mp.support.BladePage;
+import org.springblade.core.tool.api.R;
+import org.springframework.cloud.openfeign.FeignClient;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestParam;
+
+import java.util.List;
+
+/**
+ * 鏋氫妇瀹氫箟 Feign鎺ュ彛绫�
+ *
+ * @author yuxc
+ * @since 2023-05-08
+ */
+@FeignClient(
+    value = AppConstant.APPLICATION_NAME_OMD,
+	fallback = IWebSecretFallback.class
+)
+public interface IWebSecretClient {
+
+    String API_PREFIX = "/client";
+    String MINUSER = API_PREFIX + "/secret/min-user";
+	String MINDATA = API_PREFIX + "/secret/min-data";
+	String MINIP = API_PREFIX + "/secret/min-ip";
+	String USER = API_PREFIX + "/secret/user";
+	String USERVO = API_PREFIX + "/secret/uservo";
+	String CHECKDATA = API_PREFIX + "/secret/check-data";
+	String CHECKUSERDATA = API_PREFIX + "/secret/chec-user-data";
+	String CHECKUSERIDDATA = API_PREFIX + "/secret/chec-userid-data";
+	String CHECKVO = API_PREFIX + "/secret/checkvo";
+	String IP = API_PREFIX + "/secret/ip";
+	String IPUSER = API_PREFIX + "/secret/ip-user";
+	String IPSECRET = API_PREFIX + "/secret/ip-secret";
+	String IPUSERID = API_PREFIX + "/secret/ip-userid";
+	String IPUSERVO = API_PREFIX + "/secret/ip-uservo";
+
+	/**
+	 * 鑾峰彇鐢ㄦ埛瀵嗙骇鐨勬渶灏忓��
+	 * @return 瀵嗙骇鐨勫��
+	 * @throws VciBaseException 鏌ヨ鍑洪敊浼氭姏鍑哄紓甯�
+	 */
+	@GetMapping(MINUSER)
+	R<Integer> getMinUserSecret() throws VciBaseException;
+
+	/**
+	 * 鑾峰彇鏁版嵁瀵嗙骇鐨勯粯璁ゅ��
+	 * @return 瀵嗙骇鐨勫��
+	 * @throws VciBaseException 鏌ヨ鍑洪敊浼氭姏鍑哄紓甯�
+	 */
+	@GetMapping(MINDATA)
+	R<Integer> getMinDataSecret() throws VciBaseException;
+
+	/**
+	 * 鑾峰彇IP瀵嗙骇鐨勯粯璁ゅ��
+	 * @return 瀵嗙骇鐨勫��
+	 * @throws VciBaseException 鏌ヨ鍑洪敊浼氭姏鍑哄紓甯�
+	 */
+	@GetMapping(MINIP)
+	R<Integer> getMinIpSecret() throws VciBaseException;
+
+	/**
+	 * 鑾峰彇鐢ㄦ埛瀵嗙骇
+	 * @param userId 鐢ㄦ埛涓婚敭
+	 * @return 鐢ㄦ埛鐨勫瘑绾�
+	 * @throws VciBaseException 鍙傛暟閿欒锛岀敤鎴蜂笉瀛樺湪浼氭姏鍑哄紓甯�
+	 */
+	@GetMapping(USER)
+	R<Integer> getUserSecret(@RequestParam("userId") String userId) throws VciBaseException ;
+
+	/**
+	 * 鑾峰彇鐢ㄦ埛瀵嗙骇
+	 * @param userVO 鐢ㄦ埛鐨勬樉绀哄璞�
+	 * @return 鐢ㄦ埛鐨勫瘑绾�
+	 * @throws VciBaseException 鍙傛暟閿欒锛岀敤鎴蜂笉瀛樺湪浼氭姏鍑哄紓甯�
+	 */
+	@GetMapping(USERVO)
+	R<Integer> getUserSecret(@RequestBody UserVO userVO) throws VciBaseException;
+
+	/**
+	 * 鏍¢獙褰撳墠鐢ㄦ埛鏄惁鏈夋潈闄愯闂暟鎹�
+	 * @param secret 鏁版嵁鐨勫瘑绾�
+	 * @return true琛ㄧず鍏佽璁块棶
+	 */
+	@GetMapping(CHECKDATA)
+	R<Boolean> checkDataSecret(@RequestParam("secret") int secret);
+
+	/**
+	 * 鏍¢獙鐢ㄦ埛鐨勫瘑绾ф槸鍚︽槸鍚︽湁鏉冮檺璁块棶鏁版嵁
+	 * @param secret 鏁版嵁鐨勫瘑绾�
+	 * @param userSecret 鐢ㄦ埛瀵嗙骇
+	 * @return true琛ㄧず鍏佽璁块棶
+	 */
+	@GetMapping(CHECKUSERDATA)
+	R<Boolean> checkDataSecret(@RequestParam("secret") int secret, @RequestParam("userSecret") int userSecret) ;
+
+	/**
+	 * 鏍规嵁鐢ㄦ埛鍚嶆潵鏍¢獙鏁版嵁瀵嗙骇
+	 * @param secret 鏁版嵁鐨勫瘑绾�
+	 * @param userId 鐢ㄦ埛鍚�
+	 * @return true琛ㄧず鍏佽璁块棶
+	 * @throws VciBaseException 鍙傛暟閿欒锛岀敤鎴蜂笉瀛樺湪浼氭姏鍑哄紓甯�
+	 */
+	@GetMapping(CHECKUSERIDDATA)
+	R<Boolean> checkDataSecret(@RequestParam("secret") int secret, @RequestParam("userId") String userId) throws VciBaseException;
+
+	/**
+	 * 鏍规嵁鐢ㄦ埛瀵硅薄鏉ユ牎楠屾暟鎹瘑绾�
+	 * @param secret  鏁版嵁鐨勫瘑绾�
+	 * @param userVO 鐢ㄦ埛鐨勬樉绀哄璞�
+	 * @return true琛ㄧず鍏佽璁块棶
+	 */
+	@GetMapping(CHECKVO)
+	R<Boolean> checkDataSecret(@RequestParam("secret") int secret,@RequestBody UserVO userVO) ;
+
+	/**
+	 * 鑾峰彇IP鍦板潃鐨勫瘑绾�
+	 * @param ip ip鍦板潃
+	 * @return 瀵嗙骇鐨勫��
+	 * @throws VciBaseException 鏌ヨ鍑洪敊鐨勬椂鍊欎細鎶涘嚭寮傚父
+	 */
+	@GetMapping(IP)
+	R<Integer> getIpSecret(@RequestParam("ip") String ip) throws VciBaseException;
+	/**
+	 * 妫�鏌ユ満鍣ㄥ瘑绾�
+	 * @param ipSecret 鏈哄櫒瀵嗙骇
+	 * @param userSecret 鐢ㄦ埛鐨勫瘑绾�
+	 * @return 瀵嗙骇鐨勫��
+	 */
+	@GetMapping(IPUSER)
+	R<Boolean> checkIpSecret(@RequestParam("ipSecret") int ipSecret, @RequestParam("userSecret") int userSecret);
+
+	/**
+	 * 妫�鏌ュ綋鍓嶇敤鎴锋槸鍚︾鍚堟満鍣ㄥ瘑绾�
+	 * @param ipSecret 鏈哄櫒瀵嗙骇
+	 * @return true琛ㄧず鍏佽璁块棶
+	 */
+	@GetMapping(IPSECRET)
+	R<Boolean> checkIpSecret(@RequestParam("ipSecret") int ipSecret) ;
+
+	/**
+	 * 鏍¢獙鎸囧畾ip鍜岀敤鎴锋槸鍚︾鍚堟満鍣ㄥ瘑绾�
+	 * @param ip ip鍦板潃
+	 * @param userId 鐢ㄦ埛鍚�
+	 * @return true琛ㄧず鍏佽璁块棶
+	 * @throws VciBaseException 鍙傛暟閿欒锛岀敤鎴蜂笉瀛樺湪浼氭姏鍑哄紓甯�
+	 */
+	@GetMapping(IPUSERID)
+	R<Boolean> checkIpSecret(@RequestParam("ip") String ip, @RequestParam("userId") String userId) throws VciBaseException;
+
+	/**
+	 * 鏍¢獙鎸囧畾IP鍜岀敤鎴峰璞$鍚堟満鍣ㄥ瘑绾�
+	 * @param ip ip鍦板潃
+	 * @param userVO 鐢ㄦ埛瀵硅薄
+	 * @return  true琛ㄧず鍏佽璁块棶
+	 */
+	@GetMapping(IPUSERVO)
+	R<Boolean> checkIpSecret(@RequestParam("ip") String ip,@RequestBody UserVO userVO) ;
+}
diff --git a/Source/UBCS/ubcs-service-api/ubcs-omd-api/src/main/java/com/vci/ubcs/omd/feign/IWebSecretFallback.java b/Source/UBCS/ubcs-service-api/ubcs-omd-api/src/main/java/com/vci/ubcs/omd/feign/IWebSecretFallback.java
new file mode 100644
index 0000000..f63660c
--- /dev/null
+++ b/Source/UBCS/ubcs-service-api/ubcs-omd-api/src/main/java/com/vci/ubcs/omd/feign/IWebSecretFallback.java
@@ -0,0 +1,101 @@
+/*
+ *      Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ *  Redistribution and use in source and binary forms, with or without
+ *  modification, are permitted provided that the following conditions are met:
+ *
+ *  Redistributions of source code must retain the above copyright notice,
+ *  this list of conditions and the following disclaimer.
+ *  Redistributions in binary form must reproduce the above copyright
+ *  notice, this list of conditions and the following disclaimer in the
+ *  documentation and/or other materials provided with the distribution.
+ *  Neither the name of the dreamlu.net developer nor the names of its
+ *  contributors may be used to endorse or promote products derived from
+ *  this software without specific prior written permission.
+ *  Author: Chill 搴勯獮 (smallchill@163.com)
+ */
+package com.vci.ubcs.omd.feign;
+import com.vci.ubcs.starter.exception.VciBaseException;
+import com.vci.ubcs.system.user.vo.UserVO;
+import org.springblade.core.tool.api.R;
+import org.springframework.stereotype.Component;
+
+/**
+ * Feign澶辫触閰嶇疆
+ *
+ * @author Chill
+ */
+@Component
+public class IWebSecretFallback implements IWebSecretClient {
+
+
+	@Override
+	public R<Integer> getMinUserSecret() throws VciBaseException {
+		return R.fail("鑾峰彇鏁版嵁澶辫触");
+	}
+
+	@Override
+	public R<Integer> getMinDataSecret() throws VciBaseException {
+		return R.fail("鑾峰彇鏁版嵁澶辫触");
+	}
+
+	@Override
+	public R<Integer> getMinIpSecret() throws VciBaseException {
+		return R.fail("鑾峰彇鏁版嵁澶辫触");
+	}
+
+	@Override
+	public R<Integer> getUserSecret(String userId) throws VciBaseException {
+		return R.fail("鑾峰彇鏁版嵁澶辫触");
+	}
+
+	@Override
+	public R<Integer> getUserSecret(UserVO userVO) throws VciBaseException {
+		return R.fail("鑾峰彇鏁版嵁澶辫触");
+	}
+
+	@Override
+	public R<Boolean> checkDataSecret(int secret) {
+		return R.fail("鑾峰彇鏁版嵁澶辫触");
+	}
+
+	@Override
+	public R<Boolean> checkDataSecret(int secret, int userSecret) {
+		return R.fail("鑾峰彇鏁版嵁澶辫触");
+	}
+
+	@Override
+	public R<Boolean> checkDataSecret(int secret, String userId) throws VciBaseException {
+		return R.fail("鑾峰彇鏁版嵁澶辫触");
+	}
+
+	@Override
+	public R<Boolean> checkDataSecret(int secret, UserVO userVO) {
+		return R.fail("鑾峰彇鏁版嵁澶辫触");
+	}
+
+	@Override
+	public R<Integer> getIpSecret(String ip) throws VciBaseException {
+		return R.fail("鑾峰彇鏁版嵁澶辫触");
+	}
+
+	@Override
+	public R<Boolean> checkIpSecret(int ipSecret, int userSecret) {
+		return R.fail("鑾峰彇鏁版嵁澶辫触");
+	}
+
+	@Override
+	public R<Boolean> checkIpSecret(int ipSecret) {
+		return R.fail("鑾峰彇鏁版嵁澶辫触");
+	}
+
+	@Override
+	public R<Boolean> checkIpSecret(String ip, String userId) throws VciBaseException {
+		return R.fail("鑾峰彇鏁版嵁澶辫触");
+	}
+
+	@Override
+	public R<Boolean> checkIpSecret(String ip, UserVO userVO) {
+		return R.fail("鑾峰彇鏁版嵁澶辫触");
+	}
+}
diff --git a/Source/UBCS/ubcs-service-api/ubcs-omd-api/src/main/java/com/vci/ubcs/omd/utils/VciOmdUtil.java b/Source/UBCS/ubcs-service-api/ubcs-omd-api/src/main/java/com/vci/ubcs/omd/utils/VciOmdUtil.java
new file mode 100644
index 0000000..e681dc8
--- /dev/null
+++ b/Source/UBCS/ubcs-service-api/ubcs-omd-api/src/main/java/com/vci/ubcs/omd/utils/VciOmdUtil.java
@@ -0,0 +1,25 @@
+package com.vci.ubcs.omd.utils;
+
+import com.vci.ubcs.omd.vo.EnumVO;
+import com.vci.ubcs.starter.web.pagemodel.KeyValue;
+
+import java.util.ArrayList;
+import java.util.List;
+
+public class VciOmdUtil {
+	/**
+	 * 灏哃ist<EnumVO> 杞崲涓篕eyValue 绫诲瀷
+	 * @param enums 鏋氫妇闆嗗悎
+	 * @return KeyValue闆嗗悎
+	 */
+	public static List<KeyValue> enumsToListKeyVale(List<EnumVO> enums) {
+		List<KeyValue> keyValues = new ArrayList<>();
+		for (EnumVO anEnum : enums) {
+			KeyValue keyValue = new KeyValue();
+			keyValue.setKey(anEnum.getItemName());
+			keyValue.setValue(anEnum.getItemValue());
+			keyValues.add(keyValue);
+		}
+		return keyValues;
+	}
+}
diff --git a/Source/UBCS/ubcs-service-api/ubcs-util-api/src/main/java/com/vci/ubcs/starter/web/constant/FrameWorkBusLangCodeConstant.java b/Source/UBCS/ubcs-service-api/ubcs-util-api/src/main/java/com/vci/ubcs/starter/web/constant/FrameWorkBusLangCodeConstant.java
new file mode 100644
index 0000000..4396f43
--- /dev/null
+++ b/Source/UBCS/ubcs-service-api/ubcs-util-api/src/main/java/com/vci/ubcs/starter/web/constant/FrameWorkBusLangCodeConstant.java
@@ -0,0 +1,519 @@
+package com.vci.ubcs.starter.web.constant;
+
+/**
+ * 鍩虹妗嗘灦涓笟鍔¢儴鍒嗙殑澶氳瑷�浠g爜
+ * @author weidy
+ * @date 2020/4/25
+ */
+public class FrameWorkBusLangCodeConstant {
+
+	//鐧婚檰閮ㄥ垎鐨�
+	/**
+	 * 鐢ㄦ埛宸茬粡鐧诲綍
+	 */
+	public static final String USER_IS_LOGINED = "userIsLogined";
+
+	/**
+	 * 鐢ㄦ埛娌℃湁鎵惧埌
+	 */
+	public static final String USER_NOT_FOUND = "userNotFound";
+
+	/**
+	 * 鐢ㄦ埛宸茬粡鍋滅敤
+	 */
+	public static final String USER_IS_DISABLED = "userIsDisabled";
+
+	/**
+	 * 鐢ㄦ埛宸茬粡琚攣瀹�
+	 */
+	public static final String USER_IS_LOCK = "userIsLocked";
+
+	/**
+	 * 鐢ㄦ埛宸茬粡瓒呰繃澶辨晥鏃堕棿
+	 */
+	public static final String USER_MORE_THAN_DISABLE_DATE = "moreDisableDate";
+
+	/**
+	 * 鐢ㄦ埛瀵嗙爜閿欒琚攣瀹�
+	 */
+	public static final String USER_PWD_LOCK = "userPwdErrorLock";
+
+	/**
+	 * 鐢ㄦ埛瀵嗙爜涓嶇浉绛�
+	 */
+	public static final String USER_PWD_NOT_EQUAL = "userPwdNotEqual";
+
+
+	//瀵嗙爜鐩稿叧
+
+	/**
+	 * 纭瀵嗙爜涓嶇浉鍚�
+	 */
+	public static final String CHANGE_PWD_NOT_EQUAL="changePwdNotEqual";
+
+	/**
+	 * 娌℃湁瀵嗙爜绛栫暐
+	 */
+	public static final String HAS_NOT_PWD_STRATEGY="hasNotPasswordStrategy";
+
+	/**
+	 * 瀵嗙爜瀹夊叏绛栫暐鏈壘鍒�
+	 */
+	public static final String PASSWORD_STRATEGY_NOT_FOUND = "passwordStrategyNotFound";
+
+	/**
+	 * 瀵嗙爜鎵�闇�瀛楃绫诲瀷涓虹┖
+	 */
+	public static final String REQUIRE_CHAR_TYPE_NULL = "requireCharTypeNull";
+
+	/**
+	 * 瀵嗙爜鐨勫瓧绗︾被鍨嬩笉绗﹀悎瑕佹眰
+	 */
+	public static final String REQUIRE_CHAR_TYPE_NOT_EXIST = "requireCharTypeNotExist";
+
+	/**
+	 * 瀵嗙爜澶嶆潅搴︿笉绗﹀悎瑕佹眰
+	 */
+	public static final String LESS_CHAR_TYPE = "lessCharType";
+
+	/**
+	 * 瀵嗙爜涓嶅寘鍚皬鍐欏瓧姣�
+	 */
+	public static final String NOT_HAS_LOW_LETTER= "notHasLowLetter";
+
+	/**
+	 * 瀵嗙爜涓嶅寘鍚暟瀛�
+	 */
+	public static final String NOT_HAS_NUMBER = "notHasNumber";
+
+	/**
+	 * 瀵嗙爜涓嶅寘鍚壒娈婂瓧姣�
+	 */
+	public static final String NOT_HAS_SPECIAL ="notHasSpecial";
+
+	/**
+	 * 瀵嗙爜涓嶇鍚堟渶灏忛暱搴﹁姹�
+	 */
+	public static final String LESS_MIN_LENGTH = "lessMinLength";
+
+	/**
+	 * 瀵嗙爜涓嶇鍚堟渶澶ч暱搴﹁姹�
+	 */
+	public static final String MORE_MAX_lENGTH ="moreMaxLength";
+	/**
+	 * 瀵嗙爜鍗冲皢杩囨湡
+	 */
+	public static final String PASSWORD_REMAIN_DAY = "passwordRemainDay";
+
+	//缁勭粐
+
+
+	//閮ㄩ棬
+
+	//鑱屽姟
+
+
+	//鑱岀骇
+
+	//鐢ㄦ埛
+
+	//瑙掕壊
+
+	//鏉冮檺
+
+	//鍦板尯鍒嗙被
+
+	//鍦扮偣
+
+	//鑱旂郴浜�
+
+	//鐗╂枡鍩烘湰淇℃伅
+
+	//鐗╂枡
+
+	/**
+	 * 鐗╂枡鐨勫簭鍒楀彿
+	 */
+	public static final String BD_MATERIAL_SERIAL_NUMBER_REPEAT = "materialSerialNumberRepeat";
+
+	//搴撴埧绫诲瀷
+
+	/**
+	 * 搴撴埧鍒嗙被鐨勫唴閮ㄦ爣璇嗕笉鍏ㄦ槸鑻辨枃
+	 */
+	public static final String BD_WAREHOUSE_CLASSIFY_ID_NOT_LETTER = "warehouseClassifyIdNotLetter";
+
+	/**
+	 * 鍥犱负宸茬粡鏈夊瓨鍦ㄤ娇鐢ㄥ綋鍓嶅垎绫荤殑搴撴埧锛屾墍浠ュ彧鏄慨鏀瑰悕绉帮紝鎻忚堪鍜屼笂绾у垎绫�
+	 */
+	public static final String BD_WAREHOUSE_CLASSIFY_LINK_BY_WAREHOUSE ="warehouseClassifyLinkByWarehouse" ;
+
+	/**
+	 * 涓庝笂绾у簱鎴垮熀鏈垎绫荤殑搴撴埧绫诲瀷涓嶇浉鍚�
+	 */
+	public static final String BD_WAREHOUSE_CLASSIFY_TYPE_NOT_EQUAL_PARENT = "warehouseClassifyParentNotEqualType";
+
+	//搴撴埧绠$悊
+
+	/**
+	 * 涓庝笂绾у簱鎴跨殑搴撴埧鍒嗙被涓嶇浉鍚�
+	 */
+	public static final String BD_WAREHOUSE_PARENT_WAREHOUSE_NOT_EQUAL_CLASSIFY = "warehouseParentNotEqualClassify";
+
+	/**
+	 * 鏈夋暟鎹笉鑳戒慨鏀瑰簱鎴跨殑鎵�灞炲熀鏈垎绫�
+	 */
+	public static final String BD_WAREHOUSE_HAS_DATA_NOT_EDIT_CLASSIFY = "warehouseHasDataNotEditClassify";
+
+	/**
+	 * 娌℃湁浼犻�掔敤鎴风殑涓婚敭锛屼笉鑳借缃鐞嗗憳
+	 */
+	public static final String BD_WAREHOUSE_ADMIN_USEROID_NOT_HAS = "warehouseAdminUserOidNotHas";
+
+	/**
+	 * 涓哄簱鎴胯缃鐞嗗憳鎴愬姛
+	 */
+	public static final String BD_WAREHOUSE_ADMIN_LINK_SUCCESS = "warehouseAdminLinkSuccess";
+
+	/**
+	 * 搴撴埧鍒嗙被鐨勪富閿笉瀛樺湪
+	 */
+	public static final String BD_WAREHOUSE_CLASSIFY_OID_NOT_EXIST = "warehouseClassifyOidNotExsit";
+
+	/**
+	 * 褰撳墠鐢ㄦ埛娌℃湁搴撴埧鐨勬潈闄�
+	 */
+	public static final String BD_WAREHOUSE_NOT_RIGHT = "warehouseNotRight";
+
+
+	//璐т綅
+
+	/**
+	 * 涓婄骇涓嶆槸涓�涓揣鏋�
+	 */
+	public static final String BD_GOODS_LOCATION_PARENT_NOT_SHELF = "goodsLocationParentNotShelf";
+
+	//Feign
+
+	/**
+	 * 褰撳墠鐢ㄦ埛娌℃湁瀵硅搴撴埧鐨勬搷浣滄潈闄�
+	 */
+	public static final String BD_FEIGN_WAREHOUSEADMIN_NOT_PERMISSION = "feignCheckWareHouseAdminPermissions";
+
+	//璁¢噺鍗曚綅
+	/**
+	 * 璁¢噺鍗曚綅涓嶅瓨鍦�
+	 */
+	public static final String UNIT_NOT_EXIST_BY_IDS = "unitNotExistByIds";
+
+	/**
+	 * 娣诲姞鎴愬姛
+	 */
+	public static final String ADD_SUCCESS ="addSuccess";
+
+	/**
+	 * 娣诲姞澶辫触
+	 */
+	public static final String ADD_FAIL = "addFailInDB";
+
+	/**
+	 * 淇敼鎴愬姛
+	 */
+	public static final String EDIT_SUCCESS = "editSuccess";
+
+	/**
+	 * 淇敼澶辫触
+	 */
+	public static final String EDIT_FAIL = "editFail";
+
+	/**
+	 * 鍒犻櫎鎴愬姛
+	 */
+	public static final String DELETE_SUCCESS = "deleteSuccess";
+
+	/**
+	 * 绾ц仈鍒犻櫎鎴愬姛
+	 */
+	public static final String DELETE_SUCCESS_CASCADE = "deleteSuccessCascade";
+
+	/**
+	 * 鍒犻櫎澶辫触
+	 */
+	public static final String DELETE_FAIL = "deleteFail";
+
+	/**
+	 * 鍚敤鎴愬姛
+	 */
+	public static final String ENABLE_SUCCESS ="enableSuccess";
+
+	/**
+	 * 閿佸畾鎴愬姛
+	 */
+	public static final String LOCK_SUCCESS = "lockSuccess";
+
+	/**
+	 * 閿佸畾澶辫触
+	 */
+	public static final String LOCK_FAIL = "lockFail";
+
+	/**
+	 * 瑙i攣鎴愬姛
+	 */
+	public static final String UNLOCK_SUCCESS = "unlockSuccess";
+
+	/**
+	 * 瑙i攣澶辫触
+	 */
+	public static final String UNLOCK_FAIL = "unlockFail";
+
+	/**
+	 * 绾ц仈鍚敤鎴愬姛
+	 */
+	public static final String ENABLE_SUCCESS_CASCADE = "enableSuccessCascade";
+
+	/**
+	 * 鍚敤澶辫触
+	 */
+	public static final String ENABLE_FAIL = "enableFail";
+
+	/**
+	 * 鍋滅敤鎴愬姛
+	 */
+	public static final String DISABLE_SUCCESS = "disableSuccess";
+
+	/**
+	 * 绾ц仈鍋滅敤鎴愬姛
+	 */
+	public static final String DISABLE_SUCCESS_CASCADE = "disableSuccessCascade";
+
+	/**
+	 * 鍋滅敤澶辫触
+	 */
+	public static final String DISABLE_FAIL = "disableFail";
+
+	/**
+	 * 鍗囩増鏈彿鎴愬姛
+	 */
+	public static final String UP_REVISION_SUCCESS = "dataUpRevisionSuccess";
+
+	/**
+	 * 鍗囩増鏈彿澶辫触
+	 */
+	public static final String UP_REVISION_FAIL = "dataUpRevisionFail";
+
+	/**
+	 * 鍗囩増娆℃垚鍔�
+	 */
+	public static final String UP_VERSION_SUCCESS = "dataUpVersionSuccess";
+
+	/**
+	 * 鍗囩増娆″け璐�
+	 */
+	public static final String UP_VERSION_FAIL = "dataUpVersionFail";
+
+	/**
+	 * 鎻愪氦鎴愬姛
+	 */
+	public static final String SUBMIT_SUCCESS= "submitSuccess";
+
+	/**
+	 * 鎻愪氦澶辫触
+	 */
+	public static final String SUBMIR_FAIL = "submitFail";
+
+	/**
+	 * 鍙戝竷鎴愬姛
+	 */
+	public static final String RELEASE_SUCCESS = "releaseSuccess";
+
+	/**
+	 * 鍙戝竷澶辫触
+	 */
+	public static final String RELEASE_FAIL = "releaseFail";
+
+	/**
+	 * 鐗堟湰鍙烽噸澶�
+	 */
+	public static final String REVISION_REPEAT = "revisionRepeat";
+
+	/**
+	 * 鐗堟鍙烽噸澶�
+	 */
+	public static final String VERSION_REPEAT= "versionRepeat";
+
+	/**
+	 * 鏍规嵁涓婚敭鏌ヨ鏁版嵁涓嶅瓨鍦�
+	 */
+	public static final String DATA_OID_NOT_EXIST = "dataOidNotExist";
+
+	/**
+	 * 鏍规嵁涓婚敭鏌ヨ鐨勬暟鎹笉瀛樺湪
+	 */
+	public static final String DATA_ID_NOT_EXIST = "dataIdNotExist";
+
+	/**
+	 * 鏍规嵁鍚嶇О鏌ヨ鐨勬暟鎹笉瀛樺湪
+	 */
+	public static final String DATA_NAME_NOT_EXIST = "dataNameNotExist";
+
+	/**
+	 * 灞炴�у�奸噸澶�
+	 */
+	public static final String DATA_ATTR_REPEAT = "dataRepeat";
+
+	/**
+	 * 鑰佺増鏈殑鏁版嵁涓嶅瓨鍦�
+	 */
+	public static final String OLD_REVISION_DATA_NOT_EXIST = "oldRevsionDataNotExist";
+
+	/**
+	 * 涓婄骇涓婚敭瀹為檯鏄綋鍓嶈妭鐐圭殑涓嬬骇鑺傜偣锛屼細寮曡捣姝诲惊鐜�
+	 */
+	public static final String PARENT_OID_IS_CHILD ="parentIsChild";
+
+	/**
+	 * 鏁版嵁琚紩鐢紝涓嶅厑璁稿垹闄�
+	 */
+	public static final String DATA_LINKED_NOT_DELETE = "dataLinkedNotDelete";
+
+	/**
+	 * 鏁版嵁鐨勫瓙鑺傜偣涔熻寮曠敤锛屼笉鍏佽鍒犻櫎
+	 */
+	public static final String DATA_CASCADE_LINKED_NOT_DELETE = "dataCascadeLinkedNotDelete";
+
+	/**
+	 * 鏁版嵁琚紩鐢紝涓嶅厑璁镐慨鏀�
+	 */
+	public static final String DATA_LINKED_NOT_EDIT ="dataLinkedNotEdit";
+
+	/**
+	 * 鏁版嵁涓嶅紩鐢紝涓嶅厑璁镐慨鏀规煇涓睘鎬�
+	 */
+	public static final String DATA_LINKED_NOT_EDIT_ATTR="dataLinkedNotEditAttr";
+
+	/**
+	 * 涓婄骇妗f涓嶅瓨鍦�
+	 */
+	public static final String DATA_PARENT_NOT_EXIST = "parentNotExist";
+
+	/**
+	 * 鍒嗙被鏁版嵁涓嶅瓨鍦�
+	 */
+	public static final String DATA_CLASSIFY_NOT_EXIST = "classifyNotExist";
+
+	/**
+	 * 褰撳墠鐘舵�佷笅涓嶅厑璁镐慨鏀规暟鎹�
+	 */
+	public static final String LCSTATUS_CAN_NOT_EDIT = "lcStatusCannotEditData";
+
+	/**
+	 * 褰撳墠鐘舵�佷笅涓嶅厑璁稿垹闄ゆ暟鎹�
+	 */
+	public static final String LCSTATUS_CAN_NOT_DELETE = "lcStatusCannotDeleteData";
+
+	/**
+	 * 瀵煎叆鎴愬姛
+	 */
+	public static final String IMPORT_SUCCESS = "importSuccess";
+
+	/**
+	 * 瀵煎叆澶辫触
+	 */
+	public static final String IMPORT_FAIL = "importFail";
+
+	/**
+	 * 瀵煎叆鐨勬ā鏉挎枃浠朵笉瀛樺湪
+	 */
+	public static final String IMPORT_TEMPLATE_FILE_NOT_FOUND = "importTemplateFileNotFound";
+
+	/**
+	 * 瀵煎嚭鎴愬姛
+	 */
+	public static final String EXPORT_SUCCESS = "exportSuccess";
+
+	/**
+	 * 瀵煎嚭澶辫触
+	 */
+	public static final String EXPORT_FAIL = "exportFail";
+
+	/**
+	 * 涓婁紶鎴愬姛
+	 */
+	public static final String UPLOAD_SUCCESS = "uploadSuccess";
+
+	/**
+	 * 涓婁紶澶辫触
+	 */
+	public static final String UPLOAD_FAIL = "uploadFail";
+
+	/**
+	 * 涓嬭浇鎴愬姛
+	 */
+	public static final String DOWNLOAD_SUCCESS = "downloadSuccess";
+
+	/**
+	 * 涓嬭浇澶辫触
+	 */
+	public static final String DOWNLOAD_FAIL = "downloadFail";
+
+	/**
+	 * 鏂囦欢涓嶅瓨鍦�
+	 */
+	public static final String FILE_NOT_EXIST = "fileNotExist";
+
+	/**
+	 * 瀹℃壒鎴愬姛
+	 */
+	public static final String AUDIT_SUCCESS = "auditSuccess";
+
+	/**
+	 * 瀹℃壒澶辫触
+	 */
+	public static final String AUDIT_FAIL = "auditFail";
+
+	/**
+	 * 涓嬪彂鎴愬姛
+	 */
+	public static final String ISSUED_SUCCESS = "issuedSuccess";
+
+	/**
+	 * 涓嬪彂澶辫触
+	 */
+	public static final String ISSUED_FAIL = "issuedFail";
+
+	/**
+	 * 鎺ユ敹鎴愬姛
+	 */
+	public static final String RECEIVE_SUCCESS = "receiveSuccess";
+
+	/**
+	 * 鎺ユ敹澶辫触
+	 */
+	public static final String RECEIVE_FAIL = "receiveFail";
+
+	/**
+	 * 璁″垝鐨勫埗閫犱緷鎹笉瀛樺湪
+	 */
+	public static final String PLAN_SOURCE_NOT_EXIST = "planSourceNotExist";
+
+	/**
+	 * 璁″垝鐨勫埗閫犵洰鏍囦笉瀛樺湪
+	 */
+	public static final String PLAN_TARGET_NOT_EXIST = "planTargetNotExist";
+
+	/**
+	 * 娲惧彂鎴愬姛
+	 */
+	public static final String DISPATCH_SUCCESS = "dispatchSuccess";
+
+	/**
+	 * 娲惧彂澶辫触
+	 */
+	public static final String DISPATCH_FAIL = "dispatchFail";
+
+	/**
+	 * 璇ヨ鍒掍笅涓嶅瓨鍦ㄦ淳鍙戣繃鐨勪换鍔�
+	 */
+	public static final String DISPATCH_TASK_NOT_EXIST_BY_PLAN = "dispatchTaskNotExistByPlan";
+
+}
diff --git a/Source/UBCS/ubcs-service-api/ubcs-util-api/src/main/java/com/vci/ubcs/starter/web/enumpck/DataSecretEnum.java b/Source/UBCS/ubcs-service-api/ubcs-util-api/src/main/java/com/vci/ubcs/starter/web/enumpck/DataSecretEnum.java
new file mode 100644
index 0000000..472a7c7
--- /dev/null
+++ b/Source/UBCS/ubcs-service-api/ubcs-util-api/src/main/java/com/vci/ubcs/starter/web/enumpck/DataSecretEnum.java
@@ -0,0 +1,76 @@
+package com.vci.ubcs.starter.web.enumpck;
+
+
+public enum DataSecretEnum implements BaseEnumInt {
+	NONE(10, "闈炲瘑"),
+	INNER(15, "鍐呴儴"),
+	SECRET(20, "绉樺瘑"),
+	PRIVACY(30, "鏈哄瘑");
+
+	private int value;
+	private String text;
+
+	public int getValue() {
+		return this.value;
+	}
+
+	public void setValue(int value) {
+		this.value = value;
+	}
+
+	public String getText() {
+		return this.text;
+	}
+
+	public void setText(String text) {
+		this.text = text;
+	}
+
+	private DataSecretEnum(int secret, String secretText) {
+		this.value = secret;
+		this.text = secretText;
+	}
+
+	public static String getSecretText(int secret) {
+		DataSecretEnum[] var1 = values();
+		int var2 = var1.length;
+
+		for(int var3 = 0; var3 < var2; ++var3) {
+			DataSecretEnum eu = var1[var3];
+			if (eu.value == secret) {
+				return eu.text;
+			}
+		}
+
+		return NONE.text;
+	}
+
+	public static int getSecretValueByText(String text) {
+		DataSecretEnum[] var1 = values();
+		int var2 = var1.length;
+
+		for(int var3 = 0; var3 < var2; ++var3) {
+			DataSecretEnum eu = var1[var3];
+			if (eu.text.equalsIgnoreCase(text)) {
+				return eu.value;
+			}
+		}
+
+		return NONE.value;
+	}
+
+	public static boolean isValid(int secret) {
+		DataSecretEnum[] var1 = values();
+		int var2 = var1.length;
+
+		for(int var3 = 0; var3 < var2; ++var3) {
+			DataSecretEnum eu = var1[var3];
+			if (eu.value == secret) {
+				return true;
+			}
+		}
+
+		return false;
+	}
+}
+
diff --git a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/MdmEngineServiceImpl.java b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/MdmEngineServiceImpl.java
index 9280f3a..097b294 100644
--- a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/MdmEngineServiceImpl.java
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/MdmEngineServiceImpl.java
@@ -24,10 +24,9 @@
 import com.vci.ubcs.code.vo.pagemodel.*;
 import com.vci.ubcs.omd.constant.BtmTypeLcStatusConstant;
 import com.vci.ubcs.omd.entity.BtmTypeAttribute;
-import com.vci.ubcs.omd.feign.IAttributeClient;
-import com.vci.ubcs.omd.feign.IBtmTypeClient;
-import com.vci.ubcs.omd.feign.IEnumClient;
-import com.vci.ubcs.omd.feign.IRevisionRuleClient;
+import com.vci.ubcs.omd.cache.EnumCache;
+import com.vci.ubcs.omd.feign.*;
+import com.vci.ubcs.omd.utils.VciOmdUtil;
 import com.vci.ubcs.omd.vo.BtmTypeAttributeVO;
 import com.vci.ubcs.omd.vo.BtmTypeVO;
 import com.vci.ubcs.omd.vo.EnumVO;
@@ -108,8 +107,6 @@
 	@Resource
 	private CodeClstemplateServiceImpl templateService;
 
-	@Resource
-	private IAttributeClient attributeClient;
 
 	/**
 	 * 鐢熸垚缂栫爜鐨勬湇鍔�
@@ -127,6 +124,11 @@
 	 */
 	@Resource
 	ISysClient iSysClient;
+	/**
+	 * 绯荤粺鐨勬湇鍔�
+	 */
+	@Resource
+	private IWebSecretClient secretService;
 	/**
 	 * 鐢ㄦ埛鏈嶅姟
 	 */
@@ -853,9 +855,7 @@
 			}
 
 			int secret = VciBaseUtil.getInt(String.valueOf(cbo.getSecretGrade()));
-			//鍚庣画鐪嬪瘑绾ф湇鍔℃槸鍚﹀彲鐢�
-//			if (secret == 0 || !secretService.checkDataSecret(secret)) {
-			if (secret == 0 ) {
+			if (secret == 0 || !secretService.checkDataSecret(secret).getData()) {
 				Integer userSecret = VciBaseUtil.getCurrentUserSecret();
 //				cbo.setAttributeValue(SECRET_FIELD, String.valueOf((userSecret == null || userSecret == 0) ? UserSecretEnum.NONE.getValue() : userSecret));
 				cbo.setSecretGrade(userSecret == null || userSecret == 0 ? UserSecretEnum.NONE.getValue() : userSecret);
@@ -1245,8 +1245,8 @@
 					fieldVO.setComboxKey(fieldVO.getField() + "_data");
 				}
 			} else {
-//				List<KeyValue> osEnumItemVOList= enumService.getEnum(attrVO.getEnumId());
-//				fieldVO.setData(osEnumItemVOList);
+				List<KeyValue> osEnumItemVOList= VciOmdUtil.enumsToListKeyVale(EnumCache.getList(attrVO.getEnumId()));
+				fieldVO.setData(osEnumItemVOList);
 			}
 		}
 		//鐪嬫槸鍚︽湁鍙傜収
@@ -1748,7 +1748,7 @@
 		if (attrVOMap.keySet().contains("secretgrade")) {
 			Integer userSecret = VciBaseUtil.getCurrentUserSecret();
 			if (userSecret == null || userSecret == 0) {
-//				userSecret = secretService.getMinUserSecret();
+				userSecret = secretService.getMinUserSecret().getData();
 			}
 			whereSql += " and ( t.secretGrade <= " + userSecret + ") ";
 		}
@@ -2970,12 +2970,11 @@
 	@Override
 	public MdmUIInfoVO getUIInfoByClassifyOid(String codeClassifyOid, String functionId) {
 		VciBaseUtil.alertNotNull(codeClassifyOid, "涓婚搴撳垎绫讳富閿�");
+
 		MdmUIInfoVO uiInfoVO = getTableDefineByTemplateVO(getUsedTemplateByClassifyOid(codeClassifyOid));
 		uiInfoVO.setLeaf(classifyService.countChildrenByClassifyOid(codeClassifyOid) == 0);
 		if (StringUtils.isNotBlank(functionId) && !"~".equalsIgnoreCase(functionId)) {
 			List<Menu> buttonVOS = iSysClient.getMenuButtonByType(uiInfoVO.getTemplateVO().getBtmTypeId()).getData();
-
-			//鍔熻兘鎸夐挳鏈嶅姟杩樻湭瀹炵幇锛岀瓑瀹炵幇浜嗭紝鍦ㄨ繘琛岃皟鐢�
 //			List<SmOperationVO> operationVOS = operationService.listButtonByFunctionId(functionId);
 //			if (operationVOS == null) {
 //				operationVOS = new ArrayList<>();
diff --git a/Source/UBCS/ubcs-service/ubcs-omd/pom.xml b/Source/UBCS/ubcs-service/ubcs-omd/pom.xml
index 5b2fc51..43686d4 100644
--- a/Source/UBCS/ubcs-service/ubcs-omd/pom.xml
+++ b/Source/UBCS/ubcs-service/ubcs-omd/pom.xml
@@ -75,6 +75,12 @@
             <version>3.0.1.RELEASE</version>
             <scope>compile</scope>
         </dependency>
+        <dependency>
+            <groupId>com.vci.ubcs</groupId>
+            <artifactId>ubcs-user-api</artifactId>
+            <version>3.0.1.RELEASE</version>
+            <scope>compile</scope>
+        </dependency>
     </dependencies>
 
     <build>
diff --git a/Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/feign/WebSecretClient.java b/Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/feign/WebSecretClient.java
new file mode 100644
index 0000000..116f24a
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/feign/WebSecretClient.java
@@ -0,0 +1,111 @@
+/*
+ *      Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ *  Redistribution and use in source and binary forms, with or without
+ *  modification, are permitted provided that the following conditions are met:
+ *
+ *  Redistributions of source code must retain the above copyright notice,
+ *  this list of conditions and the following disclaimer.
+ *  Redistributions in binary form must reproduce the above copyright
+ *  notice, this list of conditions and the following disclaimer in the
+ *  documentation and/or other materials provided with the distribution.
+ *  Neither the name of the dreamlu.net developer nor the names of its
+ *  contributors may be used to endorse or promote products derived from
+ *  this software without specific prior written permission.
+ *  Author: Chill 搴勯獮 (smallchill@163.com)
+ */
+package com.vci.ubcs.omd.feign;
+
+import com.vci.ubcs.omd.service.IWebSecretService;
+import com.vci.ubcs.starter.exception.VciBaseException;
+import com.vci.ubcs.system.user.vo.UserVO;
+import lombok.AllArgsConstructor;
+import org.springblade.core.tool.api.R;
+import org.springframework.web.bind.annotation.RestController;
+import springfox.documentation.annotations.ApiIgnore;
+
+
+/**
+ * 鏋氫妇瀹氫箟 Feign瀹炵幇绫�
+ *
+ * @author yuxc
+ * @since 2023-05-08
+ */
+@ApiIgnore()
+@RestController
+@AllArgsConstructor
+public class WebSecretClient implements IWebSecretClient {
+
+	IWebSecretService webSecretService;
+
+
+	@Override
+	public R<Integer> getMinUserSecret() throws VciBaseException {
+		return R.data(webSecretService.getMinUserSecret());
+	}
+
+	@Override
+	public R<Integer> getMinDataSecret() throws VciBaseException {
+		return R.data(webSecretService.getMinDataSecret());
+	}
+
+	@Override
+	public R<Integer> getMinIpSecret() throws VciBaseException {
+		return R.data(webSecretService.getMinIpSecret());
+	}
+
+	@Override
+	public R<Integer> getUserSecret(String userId) throws VciBaseException {
+		return R.data(webSecretService.getUserSecret(userId));
+	}
+
+	@Override
+	public R<Integer> getUserSecret(UserVO userVO) throws VciBaseException {
+		return R.data(webSecretService.getUserSecret(userVO));
+	}
+
+	@Override
+	public R<Boolean> checkDataSecret(int secret) {
+		return R.data(webSecretService.checkDataSecret(secret));
+	}
+
+	@Override
+	public R<Boolean> checkDataSecret(int secret, int userSecret) {
+		return R.data(webSecretService.checkDataSecret(secret,userSecret));
+	}
+
+	@Override
+	public R<Boolean> checkDataSecret(int secret, String userId) throws VciBaseException {
+		return R.data(webSecretService.checkDataSecret(secret,userId));
+	}
+
+	@Override
+	public R<Boolean> checkDataSecret(int secret, UserVO userVO) {
+		return R.data(webSecretService.checkDataSecret(secret,userVO));
+	}
+
+	@Override
+	public R<Integer> getIpSecret(String ip) throws VciBaseException {
+		return R.data(webSecretService.getIpSecret(ip));
+	}
+
+	@Override
+	public R<Boolean> checkIpSecret(int ipSecret, int userSecret) {
+		return R.data(webSecretService.checkIpSecret(ipSecret,userSecret));
+	}
+
+	@Override
+	public R<Boolean> checkIpSecret(int ipSecret) {
+		return R.data(webSecretService.checkIpSecret(ipSecret));
+	}
+
+	@Override
+	public R<Boolean> checkIpSecret(String ip, String userId) throws VciBaseException {
+		return R.data(webSecretService.checkIpSecret(ip,userId));
+	}
+
+	@Override
+	public R<Boolean> checkIpSecret(String ip, UserVO userVO) {
+		return R.data(webSecretService.checkIpSecret(ip,userVO));
+	}
+}
diff --git a/Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/service/IWebSecretService.java b/Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/service/IWebSecretService.java
new file mode 100644
index 0000000..228f575
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/service/IWebSecretService.java
@@ -0,0 +1,120 @@
+package com.vci.ubcs.omd.service;
+
+import com.vci.ubcs.code.vo.pagemodel.SmUserVO;
+import com.vci.ubcs.starter.exception.VciBaseException;
+import com.vci.ubcs.system.user.vo.UserVO;
+
+/**
+ * web绔殑瀵嗙骇鏈嶅姟
+ */
+public interface IWebSecretService {
+
+
+	/**
+	 * 鑾峰彇鐢ㄦ埛瀵嗙骇鐨勬渶灏忓��
+	 * @return 瀵嗙骇鐨勫��
+	 * @throws VciBaseException 鏌ヨ鍑洪敊浼氭姏鍑哄紓甯�
+	 */
+	int getMinUserSecret() throws VciBaseException;
+
+	/**
+	 * 鑾峰彇鏁版嵁瀵嗙骇鐨勯粯璁ゅ��
+	 * @return 瀵嗙骇鐨勫��
+	 * @throws VciBaseException 鏌ヨ鍑洪敊浼氭姏鍑哄紓甯�
+	 */
+	int getMinDataSecret() throws VciBaseException;
+
+	/**
+	 * 鑾峰彇IP瀵嗙骇鐨勯粯璁ゅ��
+	 * @return 瀵嗙骇鐨勫��
+	 * @throws VciBaseException 鏌ヨ鍑洪敊浼氭姏鍑哄紓甯�
+	 */
+	int getMinIpSecret() throws VciBaseException;
+
+	/**
+	 * 鑾峰彇鐢ㄦ埛瀵嗙骇
+	 * @param userId 鐢ㄦ埛涓婚敭
+	 * @return 鐢ㄦ埛鐨勫瘑绾�
+	 * @throws VciBaseException 鍙傛暟閿欒锛岀敤鎴蜂笉瀛樺湪浼氭姏鍑哄紓甯�
+	 */
+	int getUserSecret(String userId) throws VciBaseException ;
+
+	/**
+	 * 鑾峰彇鐢ㄦ埛瀵嗙骇
+	 * @param userVO 鐢ㄦ埛鐨勬樉绀哄璞�
+	 * @return 鐢ㄦ埛鐨勫瘑绾�
+	 * @throws VciBaseException 鍙傛暟閿欒锛岀敤鎴蜂笉瀛樺湪浼氭姏鍑哄紓甯�
+	 */
+	int getUserSecret(UserVO userVO) throws VciBaseException;
+
+	/**
+	 * 鏍¢獙褰撳墠鐢ㄦ埛鏄惁鏈夋潈闄愯闂暟鎹�
+	 * @param secret 鏁版嵁鐨勫瘑绾�
+	 * @return true琛ㄧず鍏佽璁块棶
+	 */
+	boolean checkDataSecret(int secret);
+
+	/**
+	 * 鏍¢獙鐢ㄦ埛鐨勫瘑绾ф槸鍚︽槸鍚︽湁鏉冮檺璁块棶鏁版嵁
+	 * @param secret 鏁版嵁鐨勫瘑绾�
+	 * @param userSecret 鐢ㄦ埛瀵嗙骇
+	 * @return true琛ㄧず鍏佽璁块棶
+	 */
+	boolean checkDataSecret(int secret, int userSecret) ;
+
+	/**
+	 * 鏍规嵁鐢ㄦ埛鍚嶆潵鏍¢獙鏁版嵁瀵嗙骇
+	 * @param secret 鏁版嵁鐨勫瘑绾�
+	 * @param userId 鐢ㄦ埛鍚�
+	 * @return true琛ㄧず鍏佽璁块棶
+	 * @throws VciBaseException 鍙傛暟閿欒锛岀敤鎴蜂笉瀛樺湪浼氭姏鍑哄紓甯�
+	 */
+	boolean checkDataSecret(int secret, String userId) throws VciBaseException;
+
+	/**
+	 * 鏍规嵁鐢ㄦ埛瀵硅薄鏉ユ牎楠屾暟鎹瘑绾�
+	 * @param secret  鏁版嵁鐨勫瘑绾�
+	 * @param userVO 鐢ㄦ埛鐨勬樉绀哄璞�
+	 * @return true琛ㄧず鍏佽璁块棶
+	 */
+	boolean checkDataSecret(int secret, UserVO userVO) ;
+
+	/**
+	 * 鑾峰彇IP鍦板潃鐨勫瘑绾�
+	 * @param ip ip鍦板潃
+	 * @return 瀵嗙骇鐨勫��
+	 * @throws VciBaseException 鏌ヨ鍑洪敊鐨勬椂鍊欎細鎶涘嚭寮傚父
+	 */
+	int getIpSecret(String ip) throws VciBaseException;
+	/**
+	 * 妫�鏌ユ満鍣ㄥ瘑绾�
+	 * @param ipSecret 鏈哄櫒瀵嗙骇
+	 * @param userSecret 鐢ㄦ埛鐨勫瘑绾�
+	 * @return 瀵嗙骇鐨勫��
+	 */
+	boolean checkIpSecret(int ipSecret, int userSecret);
+
+	/**
+	 * 妫�鏌ュ綋鍓嶇敤鎴锋槸鍚︾鍚堟満鍣ㄥ瘑绾�
+	 * @param ipSecret 鏈哄櫒瀵嗙骇
+	 * @return true琛ㄧず鍏佽璁块棶
+	 */
+	boolean checkIpSecret(int ipSecret) ;
+
+	/**
+	 * 鏍¢獙鎸囧畾ip鍜岀敤鎴锋槸鍚︾鍚堟満鍣ㄥ瘑绾�
+	 * @param ip ip鍦板潃
+	 * @param userId 鐢ㄦ埛鍚�
+	 * @return true琛ㄧず鍏佽璁块棶
+	 * @throws VciBaseException 鍙傛暟閿欒锛岀敤鎴蜂笉瀛樺湪浼氭姏鍑哄紓甯�
+	 */
+	boolean checkIpSecret(String ip, String userId) throws VciBaseException;
+
+	/**
+	 * 鏍¢獙鎸囧畾IP鍜岀敤鎴峰璞$鍚堟満鍣ㄥ瘑绾�
+	 * @param ip ip鍦板潃
+	 * @param userVO 鐢ㄦ埛瀵硅薄
+	 * @return  true琛ㄧず鍏佽璁块棶
+	 */
+	boolean checkIpSecret(String ip, UserVO userVO) ;
+}
diff --git a/Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/service/impl/WebSecretServiceImpl.java b/Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/service/impl/WebSecretServiceImpl.java
new file mode 100644
index 0000000..0d8bbe9
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/service/impl/WebSecretServiceImpl.java
@@ -0,0 +1,376 @@
+package com.vci.ubcs.omd.service.impl;
+
+import com.vci.ubcs.common.utils.CommonUtil;
+import com.vci.ubcs.omd.cache.EnumCache;
+import com.vci.ubcs.omd.service.IWebSecretService;
+import com.vci.ubcs.omd.utils.VciOmdUtil;
+import com.vci.ubcs.starter.exception.VciBaseException;
+import com.vci.ubcs.starter.web.constant.EnumIdConstant;
+import com.vci.ubcs.starter.web.enumpck.DataSecretEnum;
+import com.vci.ubcs.starter.web.enumpck.UserSecretEnum;
+import com.vci.ubcs.starter.web.pagemodel.KeyValue;
+import com.vci.ubcs.starter.web.util.VciBaseUtil;
+import com.vci.ubcs.starter.web.util.WebUtil;
+import com.vci.ubcs.system.user.entity.User;
+import com.vci.ubcs.system.user.feign.IUserClient;
+import com.vci.ubcs.system.user.vo.UserVO;
+import net.logstash.logback.encoder.org.apache.commons.lang3.StringUtils;
+import org.springblade.core.tool.api.R;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.context.annotation.Lazy;
+import org.springframework.stereotype.Service;
+import org.springframework.util.CollectionUtils;
+
+import java.util.Arrays;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
+
+import static com.vci.ubcs.starter.web.constant.FrameWorkBusLangCodeConstant.DATA_ID_NOT_EXIST;
+
+/**
+ * 瀵嗙骇鐨勬湇鍔�
+ * @author weidy
+ * @date 2021-2-16
+ */
+@Service
+public class WebSecretServiceImpl implements IWebSecretService {
+
+
+	/**
+	 * 鐢ㄦ埛鏌ヨ鏈嶅姟
+	 */
+	@Autowired
+	private IUserClient userClient;
+
+	/**
+	 * 涓氬姟绫诲瀷鏈嶅姟
+	 */
+//	@Autowired
+//	private WebBoServiceI boService;
+
+	/**
+	 * 灞炴�х殑瀵硅薄
+	 */
+//	@Autowired
+//	private WebProperties properties;
+
+	/**
+	 * 鑾峰彇鐢ㄦ埛瀵嗙骇鐨勬渶灏忓��
+	 *
+	 * @return 瀵嗙骇鐨勫��
+	 * @throws VciBaseException 鏌ヨ鍑洪敊浼氭姏鍑哄紓甯�
+	 */
+	@Override
+	public int getMinUserSecret() throws VciBaseException {
+		List<KeyValue> enumKeyValueList = VciOmdUtil.enumsToListKeyVale(EnumCache.getList(EnumIdConstant.USERSECRET_ENUMNAME));
+//			enumService.getEnum(EnumIdConstant.USERSECRET_ENUMNAME);
+		//閲嶆柊璁剧疆鏋氫妇鐨勫��
+		if(!CollectionUtils.isEmpty(enumKeyValueList)){
+			List<KeyValue> keyValues = enumKeyValueList.stream().sorted((a, b) -> ((Integer) VciBaseUtil.getInt(a.getKey())).compareTo((Integer) VciBaseUtil.getInt(b.getKey()))).collect(Collectors.toList());
+			for(int i = 0 ; i < keyValues.size() ; i++){
+				KeyValue keyValue = keyValues.get(i);
+				if(i ==0){
+					UserSecretEnum.NONE.setValue(VciBaseUtil.getInt(keyValue.getKey()));
+					UserSecretEnum.NONE.setText(keyValue.getValue());
+				}else if(i ==1){
+					UserSecretEnum.SECRET.setValue(VciBaseUtil.getInt(keyValue.getKey()));
+					UserSecretEnum.SECRET.setText(keyValue.getValue());
+				}else{
+					UserSecretEnum.PRIVACY.setValue(VciBaseUtil.getInt(keyValue.getKey()));
+					UserSecretEnum.PRIVACY.setText(keyValue.getValue());
+				}
+			}
+		}
+		return getMinValueInKeyValueList(enumKeyValueList,UserSecretEnum.NONE.getValue());
+	}
+
+	/**
+	 * 鑾峰彇鏋氫妇涓殑鏈�灏忓��
+	 * @param enumKeyValueList 鏋氫妇K-V鍒楄〃
+	 * @param minValue 鏈�灏忓��
+	 * @return 鏈�灏忓��
+	 */
+	private int getMinValueInKeyValueList(  List<KeyValue> enumKeyValueList,int minValue){
+		for(KeyValue ec : enumKeyValueList){
+			int value = VciBaseUtil.getInt(ec.getKey());
+			if(minValue> value){
+				minValue = value;
+			}
+		}
+		return minValue;
+	}
+
+	/**
+	 * 鑾峰彇鏁版嵁瀵嗙骇鐨勯粯璁ゅ��
+	 *
+	 * @return 鏈�灏忓瘑绾х殑鍊�
+	 * @throws VciBaseException  鏌ヨ鍑洪敊浼氭姏鍑哄紓甯�
+	 */
+	@Override
+	public int getMinDataSecret() throws VciBaseException {
+		List<KeyValue> enumKeyValueList = VciOmdUtil.enumsToListKeyVale(EnumCache.getList(EnumIdConstant.DATASECRET_ENUMNAME));
+		//閲嶆柊璁剧疆鏋氫妇鐨勫��
+		if(!CollectionUtils.isEmpty(enumKeyValueList)){
+			List<KeyValue> keyValues = enumKeyValueList.stream().sorted((a, b) -> ((Integer) VciBaseUtil.getInt(a.getKey())).compareTo((Integer) VciBaseUtil.getInt(b.getKey()))).collect(Collectors.toList());
+			for(int i = 0 ; i < keyValues.size() ; i++){
+				KeyValue keyValue = keyValues.get(i);
+				if(i ==0){
+					DataSecretEnum.NONE.setValue(VciBaseUtil.getInt(keyValue.getKey()));
+					DataSecretEnum.NONE.setText(keyValue.getValue());
+				}else if(i ==1){
+					DataSecretEnum.INNER.setValue(VciBaseUtil.getInt(keyValue.getKey()));
+					DataSecretEnum.INNER.setText(keyValue.getValue());
+				}else if(i ==2){
+					DataSecretEnum.SECRET.setValue(VciBaseUtil.getInt(keyValue.getKey()));
+					DataSecretEnum.SECRET.setText(keyValue.getValue());
+				}else{
+					DataSecretEnum.PRIVACY.setValue(VciBaseUtil.getInt(keyValue.getKey()));
+					DataSecretEnum.PRIVACY.setText(keyValue.getValue());
+				}
+			}
+		}
+		return getMinValueInKeyValueList(enumKeyValueList,DataSecretEnum.NONE.getValue());
+	}
+
+	/**
+	 * 鑾峰彇IP瀵嗙骇鐨勯粯璁ゅ��
+	 *
+	 * @return 鏈�灏忓瘑绾х殑鍊�
+	 * @throws VciBaseException 鏌ヨ鍑洪敊浼氭姏鍑哄紓甯�
+	 */
+	@Override
+	public int getMinIpSecret() throws VciBaseException {
+		List<KeyValue> enumKeyValueList = VciOmdUtil.enumsToListKeyVale(EnumCache.getList(EnumIdConstant.IPSECRET_ENUMNAME));
+		return getMinValueInKeyValueList(enumKeyValueList,10);
+	}
+
+	/**
+	 * 鑾峰彇鐢ㄦ埛瀵嗙骇
+	 *
+	 * @param userId 鐢ㄦ埛鍚�
+	 * @return 鐢ㄦ埛瀵嗙骇鐨勫�硷紝濡傛灉娌℃湁瀵嗙骇锛岄粯璁や负鏈�灏忓瘑绾�
+	 * @throws VciBaseException 鏌ヨ鍑洪敊浼氭姏鍑哄紓甯�
+	 */
+	@Override
+	public int getUserSecret(String userId) throws VciBaseException {
+		WebUtil.alertNotNull(userId,"鐢ㄦ埛鍚�");
+		R<User> userR = userClient.userInfoById(Long.valueOf(userId));
+		if(userR.getData() == null){
+			throw new VciBaseException(DATA_ID_NOT_EXIST,new String[]{userId});
+		}
+		return userR.getData().getSecretGrade()==null?getMinUserSecret():Integer.parseInt(userR.getData().getSecretGrade());
+	}
+
+	/**
+	 * 鑾峰彇鐢ㄦ埛瀵嗙骇
+	 *
+	 * @param userVO 鐢ㄦ埛鐨勫璞�
+	 * @return 瀵嗙骇锛屼笉瀛樺湪鐨勬椂鍊欎负鏈�浣庡瘑绾�
+	 * @throws VciBaseException 鏌ヨ鍑洪敊浼氭姏鍑哄紓甯�
+	 */
+	@Override
+	public int getUserSecret(UserVO userVO) throws VciBaseException {
+		if(userVO == null){
+			throw new VciBaseException(DATA_ID_NOT_EXIST,new String[0]);
+		}
+		return userVO.getSecretGrade()==null?getMinUserSecret(): Integer.valueOf(userVO.getSecretGrade());
+	}
+
+
+	/**
+	 * 鏍¢獙褰撳墠鐢ㄦ埛鏄惁鏈夋潈闄愯闂暟鎹�
+	 *
+	 * @param secret 鏁版嵁鐨勫瘑绾�
+	 * @return true琛ㄧず鍙互璁块棶
+	 */
+	@Override
+	public boolean checkDataSecret(int secret) {
+		return checkDataSecret(secret,WebUtil.getCurrentUserSecret()==null?getMinUserSecret():WebUtil.getCurrentUserSecret());
+	}
+
+	/**
+	 * 鑾峰彇鏁版嵁鏉冮檺
+	 * @param secret 鏁版嵁鐨勫瘑绾х殑鍊�
+	 * @return 鏁版嵁瀵嗙骇
+	 */
+	private DataSecretEnum dataSecretForValue(int secret){
+		for(DataSecretEnum de : DataSecretEnum.values()){
+			if(de.getValue() == secret){
+				return de;
+			}
+		}
+		return null;
+	}
+
+	/**
+	 * 鐢ㄦ埛鐨勫瘑绾�
+	 * @param userSecret 鐢ㄦ埛鐨勫瘑绾�
+	 * @return 瀵嗙骇鐨勫璞�
+	 */
+	private UserSecretEnum userSecretForValue(int userSecret){
+		for(UserSecretEnum ue : UserSecretEnum.values()){
+			if(ue.getValue() == userSecret){
+				return  ue;
+			}
+		}
+		return null;
+	}
+
+	/**
+	 * 鏍¢獙鐢ㄦ埛鐨勫瘑绾ф槸鍚︽槸鍚︽湁鏉冮檺璁块棶鏁版嵁
+	 *
+	 * @param secret     鏁版嵁鐨勫瘑绾�
+	 * @param userSecret 鐢ㄦ埛瀵嗙骇
+	 * @return true琛ㄧず鍙互璁块棶
+	 */
+	@Override
+	public boolean checkDataSecret(int secret, int userSecret){
+		//鍙兘琚浆鎹簡涓�
+		DataSecretEnum de = dataSecretForValue(secret);
+		if(de == null){
+			de = DataSecretEnum.NONE;
+		}
+		UserSecretEnum ue = userSecretForValue(userSecret);
+		if(ue == null){
+			ue = UserSecretEnum.NONE;
+		}
+		int reaySecret = 0;
+		switch (de){
+			case NONE:
+				reaySecret=1;
+				break;
+			case INNER:
+				reaySecret = 2;
+				break;
+			case SECRET:
+				reaySecret = 3;
+				break;
+			default:
+				reaySecret = 4;
+				break;
+		}
+
+		int userReaySecret = 0;
+		switch (ue){
+			case NONE:
+				userReaySecret = 1;
+				break;
+			case SECRET:
+				userReaySecret = 3;
+				break;
+			default:
+				userReaySecret = 4;
+				break;
+		}
+		if(reaySecret> userReaySecret){
+			return false;
+		}else{
+			return true;
+		}
+	}
+
+	/**
+	 * 鏍规嵁鐢ㄦ埛鍚嶆潵鏍¢獙鏁版嵁瀵嗙骇
+	 *
+	 * @param secret 鏁版嵁鐨勫瘑绾�
+	 * @param userId 鐢ㄦ埛鍚�
+	 * @return true琛ㄧず鍙互璁块棶
+	 * @throws VciBaseException 鏌ヨ鍑洪敊浼氭姏鍑哄紓甯�
+	 */
+	@Override
+	public boolean checkDataSecret(int secret, String userId) throws VciBaseException {
+		return checkDataSecret(secret,getUserSecret(userId));
+	}
+
+	/**
+	 * 鏍规嵁鐢ㄦ埛瀵硅薄鏉ユ牎楠屾暟鎹瘑绾�
+	 *
+	 * @param secret 鏁版嵁瀵嗙骇
+	 * @param userVO 鐢ㄦ埛鐨勫璞�
+	 * @return true琛ㄧず鍙互璁块棶
+	 */
+	@Override
+	public boolean checkDataSecret(int secret, UserVO userVO)  {
+		return checkDataSecret(secret,getUserSecret(userVO));
+	}
+
+	/**
+	 * 鑾峰彇IP鍦板潃鐨勫瘑绾� 鏆傛椂杩樻湭浣跨敤锛屾暟鎹簱琛ㄤ篃杩樻湭绉绘銆�
+	 *
+	 * @param ip ip鍦板潃
+	 * @return 瀵嗙骇鐨勫��
+	 * @throws VciBaseException 鏌ヨ鍑洪敊鐨勬椂鍊欎細鎶涘嚭寮傚父
+	 */
+	@Override
+	public int getIpSecret(String ip) throws VciBaseException {
+		if(StringUtils.isBlank(ip)){
+			return getMinIpSecret();
+		}
+		Map<String,String> conditionMap = new HashMap<String, String>();
+		conditionMap.put("startip",ip.trim());
+
+//		List<ClientBusinessObject> ipCbos = boService.queryCBO(EnumIdConstant.IPSECRET_BTMNAME,conditionMap,null, Arrays.asList(new String[]{"ipsecret"}));
+		int ipSecret = 0;
+//		if(ipCbos!=null&& ipCbos.size()>0){
+//			ipSecret = WebUtil.getInt(ipCbos.get(0).getAttributeValue("ipsecret"));
+//		}
+		if(ipSecret == 0){
+			ipSecret = getMinIpSecret();
+		}
+		return ipSecret;
+	}
+
+	/**
+	 * 妫�鏌ユ満鍣ㄥ瘑绾�
+	 *
+	 * @param ipSecret   鏈哄櫒瀵嗙骇
+	 * @param userSecret 鐢ㄦ埛鐨勫瘑绾�
+	 * @return true琛ㄧず璁稿彲
+	 */
+	@Override
+	public boolean checkIpSecret(int ipSecret, int userSecret)  {
+		if(ipSecret> userSecret){
+			return false;
+		}else{
+			return true;
+		}
+	}
+
+	/**
+	 * 妫�鏌ュ綋鍓嶇敤鎴锋槸鍚︾鍚堟満鍣ㄥ瘑绾�
+	 *
+	 * @param ipSecret 鏈哄櫒瀵嗙骇
+	 * @return true琛ㄧず璁稿彲
+	 */
+	@Override
+	public boolean checkIpSecret(int ipSecret) {
+		return checkIpSecret(ipSecret,WebUtil.getCurrentUserSecret()==null?getMinUserSecret():WebUtil.getCurrentUserSecret());
+	}
+
+	/**
+	 * 鏍¢獙鎸囧畾ip鍜岀敤鎴锋槸鍚︾鍚堟満鍣ㄥ瘑绾�
+	 *
+	 * @param ip     ip鍦板潃
+	 * @param userId 鐢ㄦ埛鍚�
+	 * @return true琛ㄧず璁稿彲
+	 * @throws VciBaseException 鏌ヨ鍑洪敊浼氭姏鍑哄紓甯�
+	 */
+	@Override
+	public boolean checkIpSecret(String ip, String userId) throws VciBaseException {
+		return checkIpSecret(getIpSecret(ip),getUserSecret(userId));
+	}
+
+	/**
+	 * 鏍¢獙鎸囧畾IP鍜岀敤鎴峰璞$鍚堟満鍣ㄥ瘑绾�
+	 *
+	 * @param ip         ip鍦板潃
+	 * @param userVO 鐢ㄦ埛瀵硅薄
+	 * @return true琛ㄧず璁稿彲
+	 */
+	@Override
+	public boolean checkIpSecret(String ip, UserVO userVO) {
+		return checkIpSecret(getIpSecret(ip),getUserSecret(userVO));
+	}
+}

--
Gitblit v1.9.3