lihang
2023-06-15 0503632c55fe32f358b8b9b7afeedf37faf4f495
Merge branch 'master' of http://dev.vci-tech.com:1065/r/ubcs
已修改4个文件
已添加8个文件
1553 ■■■■■ 文件已修改
Source/UBCS/ubcs-service-api/ubcs-omd-api/pom.xml 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service-api/ubcs-omd-api/src/main/java/com/vci/ubcs/omd/feign/IWebSecretClient.java 184 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service-api/ubcs-omd-api/src/main/java/com/vci/ubcs/omd/feign/IWebSecretFallback.java 101 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service-api/ubcs-omd-api/src/main/java/com/vci/ubcs/omd/utils/VciOmdUtil.java 25 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service-api/ubcs-util-api/src/main/java/com/vci/ubcs/starter/web/constant/FrameWorkBusLangCodeConstant.java 519 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service-api/ubcs-util-api/src/main/java/com/vci/ubcs/starter/web/enumpck/DataSecretEnum.java 76 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/MdmEngineServiceImpl.java 27 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-omd/pom.xml 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/feign/WebSecretClient.java 111 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/service/IWebSecretService.java 120 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/service/impl/WebSecretServiceImpl.java 376 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-user/src/main/java/com/vci/ubcs/system/user/wrapper/UserWrapper.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
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>
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) ;
}
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("获取数据失败");
    }
}
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 {
    /**
     * å°†List<EnumVO> è½¬æ¢ä¸ºKeyValue ç±»åž‹
     * @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;
    }
}
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;
/**
 * åŸºç¡€æ¡†æž¶ä¸­ä¸šåŠ¡éƒ¨åˆ†çš„å¤šè¯­è¨€ä»£ç 
 * @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";
    /**
     * è§£é”æˆåŠŸ
     */
    public static final String UNLOCK_SUCCESS = "unlockSuccess";
    /**
     * è§£é”å¤±è´¥
     */
    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";
    /**
     * ä¸Šçº§æ¡£æ¡ˆä¸å­˜åœ¨
     */
    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";
}
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;
    }
}
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;
@@ -101,8 +100,6 @@
    @Resource
    private CodeClstemplateServiceImpl templateService;
    @Resource
    private IAttributeClient attributeClient;
    /**
     * ç”Ÿæˆç¼–码的服务
@@ -120,6 +117,11 @@
     */
    @Resource
    ISysClient iSysClient;
    /**
     * ç³»ç»Ÿçš„æœåŠ¡
     */
    @Resource
    private IWebSecretClient secretService;
    /**
     * ç”¨æˆ·æœåŠ¡
     */
@@ -846,9 +848,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);
@@ -1238,8 +1238,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);
            }
        }
        //看是否有参照
@@ -1741,7 +1741,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 + ") ";
        }
@@ -2963,12 +2963,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<>();
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>
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));
    }
}
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) ;
}
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));
    }
}
Source/UBCS/ubcs-service/ubcs-user/src/main/java/com/vci/ubcs/system/user/wrapper/UserWrapper.java
@@ -47,7 +47,7 @@
        List<String> roleName = SysCache.getRoleNames(user.getRoleId());
        List<String> deptName = SysCache.getDeptNames(user.getDeptId());
        List<String> postName = SysCache.getPostNames(user.getPostId());
        userVO.setTenantName(tenant.getTenantName());
        userVO.setTenantName(tenant==null?"":tenant.getTenantName());
        userVO.setRoleName(Func.join(roleName));
        userVO.setDeptName(Func.join(deptName));
        userVO.setPostName(Func.join(postName));