田源
2024-06-26 34640adf8a1d16f4202edcad644081b28bf61f1d
Merge remote-tracking branch 'origin/master'
已修改8个文件
已重命名2个文件
已添加2个文件
1002 ■■■■ 文件已修改
Source/plt-web/plt-web-parent/plt-web-base/src/main/java/com/vci/starter/web/pagemodel/BaseQueryObject.java 30 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/frameworkcore/compatibility/OrgDeptQueryServiceI.java 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/frameworkcore/compatibility/SmPwdStrategyQueryServiceI.java 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/frameworkcore/compatibility/SmUserQueryServiceI.java 4 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/frameworkcore/compatibility/impl/OrgDeptQueryServiceImpl.java 59 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/frameworkcore/compatibility/impl/SmPwdStrategyQueryServiceImpl.java 13 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/frameworkcore/compatibility/impl/SmUserQueryServiceImpl.java 222 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/frameworkcore/controller/SmUserQueryController.java 38 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/frameworkcore/model/SmPasswordStrategyDO.java 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/frameworkcore/model/SmUserDO.java 37 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/frameworkcore/model/dto/SmUserDTO.java 545 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/config/TomcatConfig.java 31 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/plt-web/plt-web-parent/plt-web-base/src/main/java/com/vci/starter/web/pagemodel/BaseQueryObject.java
@@ -1,6 +1,5 @@
package com.vci.starter.web.pagemodel;
import com.alibaba.fastjson.annotation.JSONField;
import org.apache.commons.lang3.StringUtils;
@@ -56,32 +55,32 @@
    /**
     * æŸ¥è¯¢æ¡ä»¶çš„æ˜ å°„关系
     */
    @JSONField()
    private Map<String,String> conditionMap = new HashMap<String, String>();
    @JSONField
    private Map<String,String> conditionMap = new HashMap<>();
    /**
     * å½“前页
     */
    @JSONField()
    @JSONField
    private int page = 1;
    // å½“前页
    /**
     * æŽ’序字段
     */
    @JSONField()
    @JSONField
    private String sort;
    // æŽ’序字段  ---前端只支持使用一个字段来排序,但是后台实际可以使用多个字段来排序,所以可以使用逗号分割
    /**
     * æŽ’序类型
     */
    @JSONField()
    @JSONField
    private String order;
    // asc/desc,如果有多个排序字段时,这里也需要用逗号分割,且与sort的位置对应
    /**
     * æ¯é¡µæ˜¾ç¤ºé¡µæ•°
     */
    @JSONField()
    @JSONField
    private int limit = 25;//每页显示的条数
    /**
@@ -90,6 +89,14 @@
     */
    public Map<String, String> getConditionMap() {
        return conditionMap;
    }
    /**
     * è®¾ç½®æŸ¥è¯¢æ¡ä»¶
     * @param conditionMap æŸ¥è¯¢æ¡ä»¶çš„æ˜ å°„关系
     */
    public void setConditionMap(Map<String, String> conditionMap) {
        this.conditionMap = conditionMap;
    }
    /**
@@ -110,14 +117,6 @@
            return conditionMapHasNick;
        }
        return null;
    }
    /**
     * è®¾ç½®æŸ¥è¯¢æ¡ä»¶
     * @param conditionMap æŸ¥è¯¢æ¡ä»¶çš„æ˜ å°„关系
     */
    public void setConditionMap(Map<String, String> conditionMap) {
        this.conditionMap = conditionMap;
    }
    public int getPage() {
@@ -236,4 +235,5 @@
                ", limit=" + limit +
                '}';
    }
}
Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/frameworkcore/compatibility/OrgDeptQueryServiceI.java
@@ -1,5 +1,6 @@
package com.vci.frameworkcore.compatibility;
import com.vci.corba.common.PLException;
import com.vci.frameworkcore.pagemodel.OrgDepartmentVO;
import com.vci.starter.web.exception.VciBaseException;
import com.vci.starter.web.pagemodel.DataGrid;
@@ -56,7 +57,7 @@
     * @param queryMap æŸ¥è¯¢æ¡ä»¶ï¼Œå¦‚果需要使用用户的属性来查询可以使用pkUser.xxxx
     * @return éƒ¨é—¨çš„æ˜¾ç¤ºå¯¹è±¡
     */
    OrgDepartmentVO listDeptByUserOid(String userOid, Map<String, String> queryMap);
    List<OrgDepartmentVO> listDeptByUserOid(String userOid, Map<String, String> queryMap);
    /**
     * èŽ·å–æœªå…³è”æŸä¸ªç”¨æˆ·çš„éƒ¨é—¨
@@ -113,4 +114,12 @@
     */
    DataGrid refTreeGridDept(TreeQueryObject treeQueryObject);
    /**
     * ä¿å­˜éƒ¨é—¨è§’色关联信息,带查重功能
     * @param userId ç”¨æˆ·id
     * @param deptIds éƒ¨é—¨oid
     * @return
     */
    boolean saveUserDepts(String userId, List<String> deptIds) throws PLException;
}
Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/frameworkcore/compatibility/SmPwdStrategyQueryServiceI.java
@@ -1,17 +1,8 @@
package com.vci.frameworkcore.compatibility;
import com.vci.corba.common.PLException;
import com.vci.corba.omd.data.BusinessObject;
import com.vci.frameworkcore.pagemodel.OrgDepartmentVO;
import com.vci.frameworkcore.pagemodel.SmPasswordStrategyVO;
import com.vci.frameworkcore.pagemodel.SmRoleVO;
import com.vci.starter.web.exception.VciBaseException;
import com.vci.starter.web.util.BeanUtil;
import com.vci.starter.web.wrapper.VciQueryWrapperForDO;
import com.vci.web.model.SmPasswordStrategyDO;
import com.vci.web.util.WebUtil;
import org.apache.commons.lang3.StringUtils;
import org.springframework.util.CollectionUtils;
import java.util.Collection;
import java.util.List;
Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/frameworkcore/compatibility/SmUserQueryServiceI.java
@@ -1,15 +1,13 @@
package com.vci.frameworkcore.compatibility;
import com.vci.corba.common.PLException;
import com.vci.frameworkcore.dto.SmUserDTO;
import com.vci.frameworkcore.pagemodel.SmPasswordStrategyVO;
import com.vci.frameworkcore.model.dto.SmUserDTO;
import com.vci.frameworkcore.pagemodel.SmUserVO;
import com.vci.starter.web.exception.VciBaseException;
import com.vci.starter.web.pagemodel.DataGrid;
import com.vci.starter.web.pagemodel.PageHelper;
import com.vci.starter.web.pagemodel.Tree;
import com.vci.starter.web.pagemodel.TreeQueryObject;
import com.vci.web.model.SmUserDO;
import java.util.Collection;
import java.util.List;
Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/frameworkcore/compatibility/impl/OrgDeptQueryServiceImpl.java
@@ -1,5 +1,6 @@
package com.vci.frameworkcore.compatibility.impl;
import com.vci.corba.common.PLException;
import com.vci.corba.omd.data.BusinessObject;
import com.vci.frameworkcore.compatibility.OrgDeptQueryServiceI;
import com.vci.frameworkcore.lcstatuspck.FrameworkDataLCStatus;
@@ -20,10 +21,13 @@
import com.vci.starter.web.util.VciBaseUtil;
import com.vci.starter.web.wrapper.VciQueryWrapperForDO;
import com.vci.web.service.WebBoServiceI;
import com.vci.web.util.Func;
import com.vci.web.util.PlatformClientUtil;
import com.vci.web.util.WebUtil;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.CollectionUtils;
import java.util.*;
@@ -43,6 +47,12 @@
     */
    @Autowired
    private WebBoServiceI boService;
    /**
     * å¹³å°è°ƒç”¨å®¢æˆ·ç«¯
     */
    @Autowired
    private PlatformClientUtil platformClientUtil;
    /**
     * å¯¹è±¡æ“ä½œå·¥å…·ç±»
@@ -179,7 +189,7 @@
        if(queryMap == null){
            queryMap = new HashMap<>();
        }
        List<OrgDeptForPlatform1> roles = new ArrayList<>();
        List<OrgDeptForPlatform1> deptForPlatform1s = new ArrayList<>();
        if(userOid.contains(",")){
            Map<String, String> finalQueryMap = queryMap;
            WebUtil.switchCollectionForOracleIn(WebUtil.str2List(userOid)).stream().forEach(userOids->{
@@ -191,7 +201,7 @@
                VciQueryWrapperForDO queryWrapper = new VciQueryWrapperForDO(conditionMap,OrgDeptForPlatform1.class);
                List<OrgDeptForPlatform1> roleForPlatform1s = boService.selectByQueryWrapper(queryWrapper, OrgDeptForPlatform1.class);
                if(!CollectionUtils.isEmpty(roleForPlatform1s)){
                    roles.addAll(roleForPlatform1s);
                    deptForPlatform1s.addAll(roleForPlatform1s);
                }
            });
        }else {
@@ -200,9 +210,9 @@
        VciQueryWrapperForDO queryWrapper = new VciQueryWrapperForDO(queryMap,OrgDeptForPlatform1.class);
        List<OrgDeptForPlatform1> roleForPlatform1s = boService.selectByQueryWrapper(queryWrapper, OrgDeptForPlatform1.class);
        if(!CollectionUtils.isEmpty(roleForPlatform1s)){
            roles.addAll(roleForPlatform1s);
            deptForPlatform1s.addAll(roleForPlatform1s);
        }
        return deptDO2VOs(roles);
        return deptDO2VOs(deptForPlatform1s);
    }
    /**
@@ -212,13 +222,13 @@
     * @return éƒ¨é—¨çš„æ˜¾ç¤ºå¯¹è±¡
     */
    @Override
    public OrgDepartmentVO listDeptByUserOid(String userOid,
    public List<OrgDepartmentVO> listDeptByUserOid(String userOid,
            Map<String, String> queryMap) {
        List<OrgDepartmentVO> departmentVOS = listDeptByUserOid(userOid, queryMap, false);
        if(CollectionUtils.isEmpty(departmentVOS)){
            return null;
            return new ArrayList<>();
        }
        return departmentVOS.get(0);
        return departmentVOS;
    }
    /**
@@ -412,4 +422,39 @@
        return dataGrid;
    }
    /**
     * ä¿å­˜éƒ¨é—¨è§’色关联信息,带查重功能
     * @param userId ç”¨æˆ·id
     * @param deptIds éƒ¨é—¨id
     * @return
     */
    @Override
    @Transactional(rollbackFor = Exception.class)
    public boolean saveUserDepts(String userId, List<String> deptIds) throws PLException {
        if(Func.isBlank(userId) || Func.isEmpty(deptIds)){
            return false;
        }
        List<String> repeatDeptOidList = new ArrayList<>();
        //循环进行查重,避免in大于1000
        WebUtil.switchCollectionForOracleIn(deptIds).stream().forEach(deptoids->{
            String sql = "select pluseruid,pldeptuid from pluserdept where pluseruid = " + userId
                    + " and " + "pldeptuid in ("+WebUtil.toInSql(deptoids.toArray(new String[0]))+")";
            List<BusinessObject> cbos = boService.queryBySql(sql, null);
            if(!CollectionUtils.isEmpty(cbos)){
                cbos.stream().forEach(cbo->{
                    repeatDeptOidList.add(ObjectTool.getNewBOAttributeValue(cbo,"pldeptuid"));
                });
            }
        });
        //从即将要执行保存的部门oid中移除当前用户已经存在关联关系的的部门oid
        deptIds.removeAll(repeatDeptOidList);
        if(Func.isNotEmpty(deptIds)){
            for (String deptId : deptIds){
                platformClientUtil.getFrameworkService().saveUserDept(new String[]{userId}, deptId,null);
            }
        }
        return true;
    }
}
Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/frameworkcore/compatibility/impl/SmPwdStrategyQueryServiceImpl.java
@@ -4,17 +4,12 @@
import com.vci.corba.omd.data.BusinessObject;
import com.vci.frameworkcore.compatibility.SmPwdStrategyQueryServiceI;
import com.vci.frameworkcore.compatibility.SmUserQueryServiceI;
import com.vci.frameworkcore.model.OrgDeptForPlatform1;
import com.vci.frameworkcore.pagemodel.OrgDepartmentVO;
import com.vci.frameworkcore.model.SmPasswordStrategyDO;
import com.vci.frameworkcore.pagemodel.SmPasswordStrategyVO;
import com.vci.frameworkcore.pagemodel.SmRoleVO;
import com.vci.frameworkcore.pagemodel.SmUserVO;
import com.vci.omd.utils.ObjectTool;
import com.vci.starter.web.constant.QueryOptionConstant;
import com.vci.starter.web.exception.VciBaseException;
import com.vci.starter.web.util.BeanUtil;
import com.vci.starter.web.wrapper.VciQueryWrapperForDO;
import com.vci.web.model.SmPasswordStrategyDO;
import com.vci.web.service.WebBoServiceI;
import com.vci.web.util.Func;
import com.vci.web.util.WebUtil;
@@ -24,9 +19,7 @@
import org.springframework.util.CollectionUtils;
import java.util.*;
import java.util.function.Function;
import java.util.stream.Collectors;
import static com.vci.frameworkcore.constant.FrameWorkBusLangCodeConstant.DATA_OID_NOT_EXIST;
/**
@@ -163,10 +156,10 @@
    @Override
    public SmPasswordStrategyVO getPasswordStrategyVOByUserOid(String userOid) throws PLException {
        WebUtil.alertNotNull(userOid,"用户的主键");
        if(smUserQueryService.checkUserExist(null,userOid)){
        if(!smUserQueryService.checkUserExist(null,userOid)){
            throw new VciBaseException(DATA_OID_NOT_EXIST);
        }
        String sql = "select plpasswordstrategyuid,pluseruid from pluserpasswordstrategy where pluseruid = '"+ userOid +"')";
        String sql = "select plpasswordstrategyuid,pluseruid from pluserpasswordstrategy where pluseruid = '"+ userOid +"'";
        List<BusinessObject> cbos = boService.queryBySql(sql, null);
        if(Func.isNotEmpty(cbos)){
            return getPasswordStrategyVOByOid(ObjectTool.getNewBOAttributeValue(cbos.get(0), "plpasswordstrategyuid"));
Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/frameworkcore/compatibility/impl/SmUserQueryServiceImpl.java
@@ -1,16 +1,17 @@
package com.vci.frameworkcore.compatibility.impl;
import com.vci.client.common.objects.UserObject;
import com.vci.client.common.providers.ClientServiceProvider;
import com.vci.common.util.ThreeDES;
import com.vci.corba.common.PLException;
import com.vci.corba.common.data.UserEntityInfo;
import com.vci.corba.framework.data.UserInfo;
import com.vci.corba.omd.data.BusinessObject;
import com.vci.frameworkcore.compatibility.OrgDeptQueryServiceI;
import com.vci.frameworkcore.compatibility.SmPwdStrategyQueryServiceI;
import com.vci.frameworkcore.compatibility.SmRoleQueryServiceI;
import com.vci.frameworkcore.compatibility.SmUserQueryServiceI;
import com.vci.frameworkcore.dto.SmUserDTO;
import com.vci.frameworkcore.model.dto.SmUserDTO;
import com.vci.frameworkcore.model.SmUserDO;
import com.vci.frameworkcore.pagemodel.OrgDepartmentVO;
import com.vci.frameworkcore.pagemodel.SmPasswordStrategyVO;
import com.vci.frameworkcore.pagemodel.SmRoleVO;
@@ -26,11 +27,8 @@
import com.vci.starter.web.util.BeanUtil;
import com.vci.starter.web.util.VciBaseUtil;
import com.vci.starter.web.util.VciDateUtil;
import com.vci.starter.web.util.WebThreadLocalUtil;
import com.vci.starter.web.wrapper.VciQueryWrapperForDO;
import com.vci.web.enumpck.UserTypeEnum;
import com.vci.web.model.SmPasswordStrategyDO;
import com.vci.web.model.SmUserDO;
import com.vci.web.service.WebBoServiceI;
import com.vci.web.util.Func;
import com.vci.web.util.PlatformClientUtil;
@@ -38,9 +36,11 @@
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.CollectionUtils;
import java.util.*;
import java.util.regex.Pattern;
import java.util.stream.Collectors;
import static com.vci.frameworkcore.constant.FrameWorkBusLangCodeConstant.DATA_OID_NOT_EXIST;
@@ -171,7 +171,7 @@
     * @throws VciBaseException æŸ¥è¯¢å‡ºé”™çš„æ—¶å€™ä¼šæŠ›å‡ºå¼‚常
     */
    private SmUserVO getUserByField(String queryField,String queryValue) throws VciBaseException{
        VciQueryWrapperForDO queryWrapper = new VciQueryWrapperForDO(null,SmUserDO.class,null,true);
        VciQueryWrapperForDO queryWrapper = new VciQueryWrapperForDO(null, SmUserDO.class,null,true);
        queryWrapper.eq(queryWrapper.getTableNick() + "." +queryField,queryValue);
        queryWrapper.setDistinct(true);
        queryWrapper.wrapperSql();
@@ -277,7 +277,7 @@
     * @param userInfoArr ä¸šåŠ¡æ•°æ®æ•°ç»„
     * @return æ˜¾ç¤ºå¯¹è±¡é›†åˆ
     */
    private List<SmUserVO> userInfoArr2VO(UserInfo[] userInfoArr) {
    private List<SmUserVO> userInfoArr2VO(UserInfo[] userInfoArr) throws PLException {
        List<SmUserVO> userVOList = new ArrayList<>();
        for(UserInfo userInfo : userInfoArr){
            userVOList.add(userInfo2VO(userInfo));
@@ -290,7 +290,10 @@
     * @param userInfo å¹³å°è¿”回的业务数据
     * @return ç”¨æˆ·æ˜¾ç¤ºå¯¹è±¡
     */
    private SmUserVO userInfo2VO(UserInfo userInfo) {
    private SmUserVO userInfo2VO(UserInfo userInfo) throws PLException {
        if(Func.isBlank(userInfo.id)){
            return new SmUserVO();
        }
        SmUserVO smUserVO = new SmUserVO();
        smUserVO.setOid(userInfo.id);
        smUserVO.setId(userInfo.userName);
@@ -302,7 +305,13 @@
        smUserVO.setDescription(userInfo.desc);
        smUserVO.setEmail(userInfo.email);
        //用户所属部门的查询设置
        List<OrgDepartmentVO> orgDepartmentVOList = orgDepartmentVOMap.get(userInfo.id);
        List<OrgDepartmentVO> orgDepartmentVOList;
        //查看全局变量中是否存在部门信息,存在的情况最主要是针对多条用户查询的时候避免重复查询的
        if(Func.isNotEmpty(orgDepartmentVOMap)){
            orgDepartmentVOList = orgDepartmentVOMap.get(userInfo.id);
        }else {
            orgDepartmentVOList = orgDeptQueryService.listDeptByUserOid(userInfo.id,null);
        }
        smUserVO.setPkDepartment(
                Func.isEmpty(orgDepartmentVOList) ?
                        null:orgDepartmentVOList.stream().map(OrgDepartmentVO::getOid).collect(Collectors.joining(","))
@@ -312,11 +321,23 @@
                        null:orgDepartmentVOList.stream().map(OrgDepartmentVO::getName).collect(Collectors.joining(","))
        );
        //密码策略查询设置
        SmPasswordStrategyVO smPasswordStrategyVO = smPwdStrategyVOMap.getOrDefault(userInfo.id,new SmPasswordStrategyVO());
        SmPasswordStrategyVO smPasswordStrategyVO;
        if(Func.isNotEmpty(smPwdStrategyVOMap)){
            smPasswordStrategyVO = smPwdStrategyVOMap.getOrDefault(userInfo.id,new SmPasswordStrategyVO());
        }else {
            smPasswordStrategyVO = smPwdStrategyQueryService.getPasswordStrategyVOByUserOid(userInfo.id);
            //如果不存在就获取默认的
            smPasswordStrategyVO = Func.isNotEmpty(smPasswordStrategyVO) ? smPasswordStrategyVO:smPwdStrategyQueryService.getPasswordStrategyVOByDefault();
        }
        smUserVO.setPkPasswordStrategy(smPasswordStrategyVO.getOid());
        smUserVO.setPkPasswordStrategyName(smPasswordStrategyVO.getName());
        //角色查询设置
        List<SmRoleVO> smRoleVOList = smRoleVOMap.get(userInfo.id);
        List<SmRoleVO> smRoleVOList;
        if (Func.isNotEmpty(smRoleVOMap)) {
            smRoleVOList = smRoleVOMap.get(userInfo.id);
        }else {
            smRoleVOList = smRoleQueryService.listRoleByUserOid(userInfo.id,null);
        }
        smUserVO.setPkPerson(
                Func.isEmpty(smRoleVOList) ?
                        null:smRoleVOList.stream().map(SmRoleVO::getOid).collect(Collectors.joining(","))
@@ -495,6 +516,7 @@
            pageHelper = new PageHelper(-1);
        }
        pageHelper.addDefaultAsc("PLTRUENAME");
        //TODO:为了方便调试,所以这儿先注释写死后面记得更改
        //String userName = WebThreadLocalUtil.getCurrentUserSessionInfoInThread().getUserName();
        //分页查询
        UserInfo[] userInfos = platformClientUtil.getFrameworkService().fetchUserInfoByCondition(
@@ -557,6 +579,7 @@
        SmUserVO userVO = getUserByUserId(userId);
        return userVO == null?"":userVO.getName();
    }
     /**
     * æ ¹æ®ç”¨æˆ·ä¸»é”®èŽ·å–ç”¨æˆ·çš„å§“å
     * @param userOid ç”¨æˆ·ä¸»é”®
@@ -928,7 +951,6 @@
        return false;
    }
    /**
     * è®¾ç½®æŸä¸ªç”¨æˆ·æ˜¯é”å®šçŠ¶æ€
     * @param userId ç”¨æˆ·å
@@ -960,6 +982,7 @@
     * @param confirmPassword ç¡®è®¤å¯†ç 
     */
    @Override
    @Transactional(rollbackFor = Exception.class)
    public void changePassword(String userOid, String password,
            String confirmPassword) throws VciBaseException {
        WebUtil.alertNotNull(userOid,"用户主键",password,"密码",confirmPassword,"确认密码");
@@ -1017,40 +1040,38 @@
     * @return
     */
    @Override
    @Transactional(rollbackFor = Exception.class)
    public boolean addUser(SmUserDTO smUserDTO) throws PLException {
        //判空
        VciBaseUtil.alertNotNull(
                smUserDTO,"添加的用户对象",
                smUserDTO.getId(),"账号",
                smUserDTO.getId(),"用户名",
                smUserDTO.getPassword(),"密码",
                smUserDTO.getConfirmPassword(),"确认密码",
                smUserDTO.getName(),"姓名"
        );
        //确认密码
        String confirmPassword = smUserDTO.getConfirmPassword();
        //比对密码是是否一致
        if(!smUserDTO.getPassword().equals(confirmPassword)){
            throw new VciBaseException("两次密码不一致,请重新填写!");
        }
        //先用户名(账号)查重
        SmUserVO dbSmUserVO = getUserByUserId(smUserDTO.getId());
        if(Func.isNotEmpty(dbSmUserVO) && Func.isNotBlank(dbSmUserVO.getOid())){
            throw new VciBaseException("该用户名在系统中已经存在,请修改!");
        }
        //密码加密
        ThreeDES des = new ThreeDES();
        des.getKey("daliantan0v0");// ç”Ÿæˆå¯†åŒ™
        //第二次MD5加密
        String md5Password2 = des.getEncString(smUserDTO.getPassword());
        //校验
        check(smUserDTO,true);
        //生成存储的DO对象
        smUserDTO.setOid(VciBaseUtil.getPk());
        smUserDTO.setPassword(md5Password2);
        smUserDTO.setLockFlag("0");
        BusinessObject user = ClientServiceProvider.getBOFService().initBusinessObject("user");
        SmUserDO smUserDO = new SmUserDO();
        BeanUtil.convert(user,smUserDO);
        UserInfo userInfo = new UserInfo();
        BeanUtil.convert(smUserDO,userInfo);
        return platformClientUtil.getFrameworkService().saveOrUpdateUser(userInfo, null);
        Date date = new Date();
        smUserDTO.setPwdUpdateTime(date);
        smUserDTO.setStatus((short) 0);
        smUserDTO.setCreateTime(date);
        smUserDTO.setLastModifyTime(date);
        //userObject.setCreateUser(WebThreadLocalUtil.getCurrentUserSessionInfoInThread().getUserName());
        smUserDTO.setCreator("developer");
        //userObject.setUpdateUser(WebThreadLocalUtil.getCurrentUserSessionInfoInThread().getUserName());
        smUserDTO.setLastModifier("developer");
        UserInfo userInfo = changeUserObjectToUserInfo(smUserDTO);
        UserEntityInfo userEntityInfo = new UserEntityInfo("developer", "");
        String oid = platformClientUtil.getFrameworkService().saveUser(userInfo, userEntityInfo);
        if (Func.isEmpty(oid)) {
            return false;
        }
        if(Func.isNotBlank(smUserDTO.getPkDepartment())){
            platformClientUtil.getFrameworkService().saveUserDept(new String[]{oid}, smUserDTO.getPkDepartment(), userEntityInfo);
        }
        return true;
    }
    /**
@@ -1059,10 +1080,129 @@
     * @return
     */
    @Override
    @Transactional(rollbackFor = Exception.class)
    public boolean updateUser(SmUserDTO smUserDTO) throws PLException {
        //判空
        VciBaseUtil.alertNotNull(
                smUserDTO,"修改的用户对象",
                smUserDTO.getOid(),"用户主键",
                smUserDTO.getId(),"用户名",
                smUserDTO.getPassword(),"密码",
                smUserDTO.getConfirmPassword(),"确认密码",
                smUserDTO.getName(),"姓名"
        );
        //校验
        check(smUserDTO,false);
        //查询数据库中的
        SmUserVO dbSmUserVO = getUserByUserId(smUserDTO.getId());
        //根据用户名查询到了用户,但是oid不是当前修改的用户的oid,说明修改的用户名重复
        if(Func.isNotEmpty(dbSmUserVO)
            && !dbSmUserVO.getOid().equals(smUserDTO.getOid())
        ){
            throw new PLException("用户名已存在,不能将当前用户的用户名修改为" + dbSmUserVO.getId(),new String[0]);
        }
        smUserDTO.setLastModifyTime(new Date());
        //userObject.setUpdateUser(WebThreadLocalUtil.getCurrentUserSessionInfoInThread().getUserName());
        smUserDTO.setLastModifier("developer");
        UserInfo userInfo = changeUserObjectToUserInfo(smUserDTO);
        boolean updateBoolean = platformClientUtil.getFrameworkService().updateUser(userInfo, new UserEntityInfo("developer", null));
        //用户关联部门有所更改
        if(Func.isNotEmpty(smUserDTO.getPkDepartment()) && !smUserDTO.getPkDepartment().equals(dbSmUserVO.getPkDepartment())){
            //界面传递过来的已关联的部门oid
            List<String> updatePkDept = Func.toStrList(smUserDTO.getPkDepartment(), ",");
            //用户已关联的部门oid
            List<String> associatedPkDept = Func.toStrList(dbSmUserVO.getPkDepartment(), ",");
            //移除
            updatePkDept.removeAll(associatedPkDept);
            //执行保存用户部门关联关系
            orgDeptQueryService.saveUserDepts(dbSmUserVO.getOid(),updatePkDept);
        }
        return updateBoolean;
    }
    /**
     * æ£€æŸ¥ç”¨æˆ·ä¿¡æ¯æ˜¯å¦ç¬¦åˆè§„范
     * @param smUserDTO
     * @param isAdd
     */
    private void check(SmUserDTO smUserDTO, boolean isAdd){
        if(!smUserDTO.getPassword().equals(smUserDTO.getConfirmPassword())){
            throw new VciBaseException("密码和确认密码不相等");
        }
        if(smUserDTO.getId().getBytes().length > 128){
            throw new VciBaseException("用户名长度超过上限");
        }
        if(smUserDTO.getPassword().getBytes().length > 128){
            throw new VciBaseException("密码长度超过上限");
        }
        if(smUserDTO.getName().getBytes().length > 64){
            throw new VciBaseException("姓名长度超过上限");
        }
        if (Func.isNotBlank(smUserDTO.getSpecialties()) && smUserDTO.getSpecialties().getBytes().length > 255){
            throw new VciBaseException("专业长度超过上限");
        }
        if (Func.isNotBlank(smUserDTO.getEmail()) && smUserDTO.getEmail().getBytes().length > 128){
            throw new VciBaseException("电子邮箱长度超过上限");
        }
        if (Func.isNotBlank(smUserDTO.getDescription()) && smUserDTO.getDescription().getBytes().length > 255 ){
            throw new VciBaseException("描述长度超过上限");
        }
        if (!smUserDTO.getName().matches("^[A-Za-z0-9_]+$")) {
            throw new VciBaseException("用户名必须是由A-Z a-z 0-9 _组成");
        }
        if (Func.isNotBlank(smUserDTO.getEmail()) && !smUserDTO.getEmail().matches("^([a-z0-9A-Z]+[-|\\.]?)+[a-z0-9A-Z]@([a-z0-9A-Z]+(-[a-z0-9A-Z]+)?\\.)+[a-zA-Z]{2,}$")){
            throw new VciBaseException("电子邮箱格式错误");
        }
        //是新增才做用户名查重处理
        if(isAdd){
            //根据用户名(账号)查重
            SmUserVO dbSmUserVO = getUserByUserId(smUserDTO.getId());
            if(Func.isNotEmpty(dbSmUserVO) && Func.isNotBlank(dbSmUserVO.getOid())){
                throw new VciBaseException("该用户名在系统中已经存在,请修改!");
            }
        }
        //根据当前创建这个用户的人所绑定密码策略来进行密码校验
        try {
            //TODO:为了方便调试,所以这儿先注释写死后面记得更改
            //String userName = WebThreadLocalUtil.getCurrentUserSessionInfoInThread().getUserName();
            String userName = "developer";
            String error = platformClientUtil.getFrameworkService().checkPasswordStrategyByUserId(userName, smUserDTO.getPassword(),null);
            if (!StringUtils.isBlank(error)) {
                throw new VciBaseException("当前设置的密码,密码策略校验未通过");
            }
        } catch (PLException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
            throw new VciBaseException("检查密码策略符合情况失败!2");
        }
    }
    /***
     * ç”¨æˆ·ä»ŽDTO对象到corba对象
     * @param user
     * @return
     */
    public UserInfo changeUserObjectToUserInfo(SmUserDTO user) {
        UserInfo userInfo = new UserInfo();
        BeanUtil.convert(smUserDTO,userInfo);
        return platformClientUtil.getFrameworkService().updateUser(userInfo, null);
        userInfo.id = user.getOid() == null ? "" : user.getOid();
        userInfo.userName = user.getId() == null ? "" : user.getId();
        userInfo.pwd = user.getPassword() == null ? "" : user.getPassword();
        userInfo.trueName = user.getName() == null ? "" : user.getName();
        userInfo.specialties = user.getSpecialties() == null ? "" : user.getSpecialties();
        userInfo.email = user.getEmail() == null ? "" : user.getEmail();
        userInfo.desc = user.getDescription() == null ? "" : user.getDescription();
        userInfo.userType = user.getUserType();
        userInfo.status = user.getStatus();
        userInfo.createTime = user.getCreateTime().getTime();
        userInfo.createUser = user.getCreator() == null ? "" : user.getCreator();
        userInfo.updateTime = user.getLastModifyTime().getTime();
        userInfo.updateUser = user.getLastModifier() == null ? "" : user.getLastModifier();
        userInfo.pwdUpdateTime = user.getPwdUpdateTime().getTime();
        userInfo.grantor = user.getGrantor() == null ? "" : user.getGrantor();
        userInfo.isDeptLeader = user.getIsDeptLeader() == null ? "0" : user.getIsDeptLeader();
        return userInfo;
    }
    /***
@@ -1098,6 +1238,7 @@
     * @return
     */
    @Override
    @Transactional(rollbackFor = Exception.class)
    public boolean deleteUser(String[] ids) throws PLException {
        VciBaseUtil.alertNotNull(ids,"待删除的用户id列表不能为空!");
        return platformClientUtil.getFrameworkService().deleteUser(ids, null);
@@ -1110,6 +1251,7 @@
     * @return
     */
    @Override
    @Transactional(rollbackFor = Exception.class)
    public boolean disableOrEnableUsers(String[] ids, boolean flag) throws PLException {
        VciBaseUtil.alertNotNull(ids,"停用/启用的用户id列表");
        return platformClientUtil.getFrameworkService().stopUsers(ids, flag,null);
Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/frameworkcore/controller/SmUserQueryController.java
@@ -1,20 +1,15 @@
package com.vci.frameworkcore.controller;
import com.vci.frameworkcore.compatibility.SmUserQueryServiceI;
import com.vci.frameworkcore.dto.SmUserDTO;
import com.vci.frameworkcore.model.dto.SmUserDTO;
import com.vci.frameworkcore.pagemodel.SmUserVO;
import com.vci.starter.web.annotation.controller.VciUnCheckRight;
import com.vci.starter.web.exception.VciBaseException;
import com.vci.starter.web.pagemodel.*;
import com.vci.web.model.SmUserDO;
import com.zeroc.IceInternal.Ex;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.*;
import java.util.List;
@@ -23,7 +18,7 @@
 * @author weidy
 * @date 2020/3/4
 */
@Controller
@RestController
@RequestMapping("/userQueryController")
@Slf4j
public class SmUserQueryController {
@@ -41,7 +36,6 @@
     * @throws VciBaseException æŸ¥è¯¢å‡ºé”™çš„æ—¶å€™ä¼šæŠ›å‡ºå¼‚常,如果是老的项目里不抛出异常
     */
    @RequestMapping(value = "/refDataGrid",method = RequestMethod.GET)
    @ResponseBody
    public BaseResult<SmUserVO> refDataGrid(BaseQueryObject queryObject) throws VciBaseException {
        //代码示例
        if(queryObject == null){
@@ -60,7 +54,6 @@
     * @throws VciBaseException æŸ¥è¯¢å‡ºé”™çš„æ—¶å€™ä¼šæŠ›å‡ºå¼‚常,如果是老的项目里不抛出异常
     */
    @RequestMapping(value = "/refTree",method = RequestMethod.GET)
    @ResponseBody
    public BaseResult<Tree> refTree(TreeQueryObject treeQueryObject) throws VciBaseException{
        List<Tree> userTreeList = userQueryService.refTreeUsers(treeQueryObject);
        return  BaseResult.tree(userTreeList);
@@ -76,7 +69,6 @@
     * @throws VciBaseException éƒ¨é—¨ä¸»é”®ä¸ºç©ºã€æŸ¥è¯¢å‡ºé”™çš„æ—¶å€™ä¼šæŠ›å‡ºå¼‚常,如果是老的项目里不抛出异常
     */
    @RequestMapping(value = "/refDataGridByPkDepartment",method = RequestMethod.GET)
    @ResponseBody
    public BaseResult<SmUserVO> refDataGridByPkDepartment(String pkDepartment,BaseQueryObject queryObject) throws VciBaseException{
        if(queryObject == null){
            queryObject = new BaseQueryObject();
@@ -95,7 +87,6 @@
     * @throws VciBaseException è§’色的主键为空、查询出错的时候会抛出异常,如果是老的项目里不抛出异常
     */
    @RequestMapping(value = "/refDataGridByPkRole",method = RequestMethod.GET)
    @ResponseBody
    public BaseResult<SmUserVO> refDataGridByPkRole(String pkRole,BaseQueryObject queryObject) throws VciBaseException{
        if(queryObject == null){
            queryObject = new BaseQueryObject();
@@ -113,20 +104,18 @@
     * @param confirmPassword ç¡®è®¤å¯†ç 
     */
    @RequestMapping(value = "/changePassword",method = RequestMethod.POST)
    @ResponseBody
    public BaseResult changePassword(String userOid, String password, String confirmPassword) {
        userQueryService.changePassword(userOid, password, confirmPassword);
        return BaseResult.success("修改密码成功");
    }
    /**
     * ç”¨æˆ·ç®¡ç†åˆ—表分页查询,平台是不查plusertype=0的成员,也就是developer和admin
     * ç”¨æˆ·ç®¡ç†åˆ—表分页查询,平台是不查plusertype=0的成员,也就是developer和admin之类的账号
     * @param queryObject æŸ¥è¯¢å¯¹è±¡ï¼ŒåŒ…含了查询条件,分页,排序等,即允许使用SmUserVO里的所有属性作为查询条件,也可以使用pkRole.xxx,pkDepartment.xxx,pkDuty.xxx这样来查询
     * @return å…¨éƒ¨ç”¨æˆ·æ˜¾ç¤ºå¯¹è±¡åˆ—表数据,请获取其中的data属性
     * @throws VciBaseException æŸ¥è¯¢å‡ºé”™çš„æ—¶å€™ä¼šæŠ›å‡ºå¼‚常,如果是老的项目里不抛出异常
     */
    @RequestMapping(value = "/getDataGridUsers",method = RequestMethod.GET)
    @ResponseBody
    @VciUnCheckRight
    public BaseResult<SmUserVO> getDataGridUsers(BaseQueryObject queryObject) throws VciBaseException {
        try {
@@ -145,7 +134,6 @@
     * @return
     */
    @RequestMapping(value = "/addUser",method = RequestMethod.POST)
    @ResponseBody
    @VciUnCheckRight
    public BaseResult addUser(@RequestBody SmUserDTO smUserDTO){
        try {
@@ -163,7 +151,6 @@
     * @return
     */
    @RequestMapping(value = "/updateUser",method = RequestMethod.PUT)
    @ResponseBody
    @VciUnCheckRight
    public BaseResult updateUser(@RequestBody SmUserDTO smUserDTO){
        try {
@@ -181,7 +168,6 @@
     * @return
     */
    @RequestMapping(value = "/deleteUser",method = RequestMethod.DELETE)
    @ResponseBody
    //@VciUnCheckRight
    public BaseResult deleteUser(String[] ids){
        try {
@@ -200,7 +186,6 @@
     * @return
     */
    @RequestMapping(value = "/stopUsers",method = RequestMethod.POST)
    @ResponseBody
    //@VciUnCheckRight
    public BaseResult disableOrEnableUsers(String[] ids,boolean flag){
        try {
@@ -213,5 +198,20 @@
        }
    }
    /**
     * ä¸‹è½½äººå‘˜å¯¼å…¥æ¨¡æ¿
     */
    @RequestMapping(value = "/downloadImportTemplate",method = RequestMethod.POST)
    public void downloadImportTemplate(){
    }
    /**
     * äººå‘˜å¯¼å…¥
     */
    @RequestMapping(value = "/importUser",method = RequestMethod.POST)
    public void importUser(){
    }
}
Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/frameworkcore/model/SmPasswordStrategyDO.java
ÎļþÃû´Ó Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/model/SmPasswordStrategyDO.java ÐÞ¸Ä
@@ -1,4 +1,4 @@
package com.vci.web.model;
package com.vci.frameworkcore.model;
import com.vci.starter.web.annotation.Column;
import com.vci.starter.web.annotation.Transient;
@@ -6,7 +6,6 @@
import com.vci.starter.web.annotation.VciFieldType;
import com.vci.starter.web.constant.FrameWorkLcStatusConstant;
import com.vci.starter.web.enumpck.VciFieldTypeEnum;
import com.vci.starter.web.model.BaseModel;
import java.util.Date;
Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/frameworkcore/model/SmUserDO.java
ÎļþÃû´Ó Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/model/SmUserDO.java ÐÞ¸Ä
@@ -1,4 +1,4 @@
package com.vci.web.model;
package com.vci.frameworkcore.model;
import com.vci.starter.web.annotation.*;
import com.vci.starter.web.constant.FrameWorkLcStatusConstant;
@@ -100,6 +100,7 @@
            name = "plcreateuser"
    )
    private String creator;
    /**
     * åˆ›å»ºæ—¶é—´
     */
@@ -119,6 +120,7 @@
            name = "plupdateuser"
    )
    private String lastModifier;
    /**
     * æœ€åŽä¿®æ”¹æ—¶é—´
     */
@@ -127,6 +129,14 @@
            name = "plupdatetime"
    )
    private Date lastModifyTime;
    /**
     * å¯†ç æœ€åŽä¿®æ”¹æ—¶é—´
     */
    @Column(
            name = "plpwdupdatetime"
    )
    public Date pwdUpdateTime;
    /**
     * æ‰€å±žéƒ¨é—¨
@@ -151,6 +161,22 @@
     */
    @Transient(referColumn = "pkUserPassword.plpasswordstrategyuid")
    private String pkPasswordStrategy;
    /**
     * ä¸“业
     */
    @Column(
            name = "plspecialties"
    )
    private String specialties;
    public void setSpecialties(String specialties) {
        this.specialties = specialties;
    }
    public String getSpecialties() {
        return specialties;
    }
    public String getOid() {
        return oid;
@@ -304,6 +330,14 @@
        this.pkPasswordStrategy = pkPasswordStrategy;
    }
    public void setPwdUpdateTime(Date pwdUpdateTime) {
        this.pwdUpdateTime = pwdUpdateTime;
    }
    public Date getPwdUpdateTime() {
        return pwdUpdateTime;
    }
    @Override
    public String toString() {
        return "SmUserDO{" +
@@ -328,4 +362,5 @@
                ", pkPasswordStrategy='" + pkPasswordStrategy + '\'' +
                '}';
    }
}
Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/frameworkcore/model/dto/SmUserDTO.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,545 @@
package com.vci.frameworkcore.model.dto;
import com.vci.starter.web.model.BaseModel;
import com.vci.starter.web.pagemodel.BaseModelVO;
import java.util.Date;
/**
 * ç”¨æˆ·æ•°æ®ä¼ è¾“对象
 * @author ludc
 * @date 2024/6/25 17:33
 */
public class SmUserDTO extends BaseModelVO {
    /**
     * ç¦æ­¢ä¿®æ”¹è¿™ä¸ªå€¼
     */
    private static final long serialVersionUID = -2239512786206928200L;
    /**
     * ç”¨æˆ·å
     */
    private String id;
    /**
     * ç”¨æˆ·å§“名
     */
    private String name;
    /**
     * ç”¨æˆ·ç±»åž‹
     */
    private short userType;
    /**
     * ç”¨æˆ·ç±»åž‹æ˜¾ç¤ºæ–‡æœ¬
     */
    private String userTypeText;
    /**
     * ç”¨æˆ·å¯†ç 
     */
    private String password;
    /**
     * ç¡®è®¤å¯†ç 
     */
    private String confirmPassword;
    /**
     * æ‰€å±žäººå‘˜
     */
    private String pkPerson;
    /**
     * æ‰€å±žäººå‘˜åç§°
     */
    private String pkPersonName;
    /**
     * å¤±æ•ˆæ—¥æœŸ
     */
    private Date disabledate;
    /**
     * é‚®ä»¶åœ°å€
     */
    private String email;
    /**
     * ç”µè¯
     */
    private String tel;
    /**
     * RTX联系号
     */
    private String rtxNo;
    /**
     * å®žæ—¶é€šè®¯è½¯ä»¶è´¦å·
     */
    private String IMNo;
    /**
     * æ‰€å±žéƒ¨é—¨
     */
    private String pkDepartment;
    /**
     * æ‰€å±žéƒ¨é—¨åç§°
     */
    private String pkDepartmentName;
    /**
     * æ˜¯å¦éƒ¨é—¨é¢†å¯¼
     */
    private String isDeptLeader;
    /**
     * æ‰€å±žèŒåŠ¡
     */
    private String pkDuty;
    /**
     * æ‰€å±žèŒåŠ¡åç§°
     */
    private String pkDutyName;
    /**
     * æ‰€å±žå¯†ç å®‰å…¨ç­–ç•¥
     */
    private String pkPasswordStrategy;
    /**
     * æ‰€å±žå¯†ç å®‰å…¨ç­–ç•¥
     */
    private String pkPasswordStrategyName;
    /**
     * æœ€åŽç™»å½•æ—¶é—´
     */
    private Date lastLoginTime;
    /**
     * å¯†ç æœ€åŽä¿®æ”¹æ—¶é—´
     */
    public Date pwdUpdateTime;
    /**
     * å¯†ç é”™è¯¯æ¬¡æ•°
     */
    private Integer pwdWrongCount;
    /**
     * æ€§åˆ«
     */
    private String sex;
    /**
     * æ€§åˆ«æ˜¾ç¤ºåç§°
     */
    private String sexText;
    /**
     * é»˜è®¤çš„语言编码
     */
    private String langCode;
    /**
     * ç”¨æˆ·çŠ¶æ€
     */
    private short status;
    /**
     * è¯­è¨€åç§°
     */
    private String langCodeText;
    /**
     * æ˜¯å¦é”å®š
     */
    private String lockFlag;
    /**
     * å¤´åƒæ–‡ä»¶ä¸»é”®
     */
    private String photo;
    /**
     * æ‰€å±žè§’色
     */
    private String pkRole;
    /**
     * å·¥ç§
     */
    private String pkWorkType;
    /**
     * æ‰€å±žå·¥ç§åç§°
     */
    private String pkWorkTypeText;
    /**
     * å·¥å·(短号)
     */
    private String workNo;
    /**
     * ä¸æ ¡éªŒå¯†ç å®‰å…¨ç­–ç•¥
     */
    private Boolean unCheckPasswordStrategy;
    /**
     * ä¸“业
     */
    private String specialties;
    /**
     * æŽˆæƒè€…
     */
    private String grantor;
    public String getIsDeptLeader() {
        return isDeptLeader;
    }
    public void setIsDeptLeader(String isDeptLeader) {
        this.isDeptLeader = isDeptLeader;
    }
    public String getGrantor() {
        return grantor;
    }
    public void setGrantor(String grantor) {
        this.grantor = grantor;
    }
    public String getSpecialties() {
        return specialties;
    }
    public void setSpecialties(String specialties) {
        this.specialties = specialties;
    }
    public void setStatus(short status) {
        this.status = status;
    }
    public short getStatus() {
        return status;
    }
    public String getPkRole() {
        return pkRole;
    }
    public void setPkRole(String pkRole) {
        this.pkRole = pkRole;
    }
    @Override
    public String getId() {
        return id;
    }
    @Override
    public void setId(String id) {
        this.id = id;
    }
    @Override
    public String getName() {
        return name;
    }
    @Override
    public void setName(String name) {
        this.name = name;
    }
    public short getUserType() {
        return userType;
    }
    public void setUserType(short userType) {
        this.userType = userType;
    }
    public String getUserTypeText() {
        return userTypeText;
    }
    public void setUserTypeText(String userTypeText) {
        this.userTypeText = userTypeText;
    }
    public String getPassword() {
        return password;
    }
    public void setPassword(String password) {
        this.password = password;
    }
    public String getPkPerson() {
        return pkPerson;
    }
    public void setPkPerson(String pkPerson) {
        this.pkPerson = pkPerson;
    }
    public String getPkPersonName() {
        return pkPersonName;
    }
    public void setPkPersonName(String pkPersonName) {
        this.pkPersonName = pkPersonName;
    }
    public Date getDisabledate() {
        return disabledate;
    }
    public void setDisabledate(Date disabledate) {
        this.disabledate = disabledate;
    }
    public String getEmail() {
        return email;
    }
    public void setEmail(String email) {
        this.email = email;
    }
    public String getTel() {
        return tel;
    }
    public void setTel(String tel) {
        this.tel = tel;
    }
    public String getRtxNo() {
        return rtxNo;
    }
    public void setRtxNo(String rtxNo) {
        this.rtxNo = rtxNo;
    }
    public String getIMNo() {
        return IMNo;
    }
    public void setIMNo(String IMNo) {
        this.IMNo = IMNo;
    }
    public String getPkDepartment() {
        return pkDepartment;
    }
    public void setPkDepartment(String pkDepartment) {
        this.pkDepartment = pkDepartment;
    }
    public String getPkDepartmentName() {
        return pkDepartmentName;
    }
    public void setPkDepartmentName(String pkDepartmentName) {
        this.pkDepartmentName = pkDepartmentName;
    }
    public String getPkDuty() {
        return pkDuty;
    }
    public void setPkDuty(String pkDuty) {
        this.pkDuty = pkDuty;
    }
    public String getPkDutyName() {
        return pkDutyName;
    }
    public void setPkDutyName(String pkDutyName) {
        this.pkDutyName = pkDutyName;
    }
    public String getPkPasswordStrategy() {
        return pkPasswordStrategy;
    }
    public void setPkPasswordStrategy(String pkPasswordStrategy) {
        this.pkPasswordStrategy = pkPasswordStrategy;
    }
    public String getPkPasswordStrategyName() {
        return pkPasswordStrategyName;
    }
    public void setPkPasswordStrategyName(String pkPasswordStrategyName) {
        this.pkPasswordStrategyName = pkPasswordStrategyName;
    }
    public Date getLastLoginTime() {
        return lastLoginTime;
    }
    public void setLastLoginTime(Date lastLoginTime) {
        this.lastLoginTime = lastLoginTime;
    }
    public Date getPwdUpdateTime() {
        return pwdUpdateTime;
    }
    public void setPwdUpdateTime(Date pwdUpdateTime) {
        this.pwdUpdateTime = pwdUpdateTime;
    }
    public Integer getPwdWrongCount() {
        return pwdWrongCount;
    }
    public void setPwdWrongCount(Integer pwdWrongCount) {
        this.pwdWrongCount = pwdWrongCount;
    }
    public String getSex() {
        return sex;
    }
    public void setSex(String sex) {
        this.sex = sex;
    }
    public String getSexText() {
        return sexText;
    }
    public void setSexText(String sexText) {
        this.sexText = sexText;
    }
    public String getLangCode() {
        return langCode;
    }
    public void setLangCode(String langCode) {
        this.langCode = langCode;
    }
    public String getLangCodeText() {
        return langCodeText;
    }
    public void setLangCodeText(String langCodeText) {
        this.langCodeText = langCodeText;
    }
    public String getLockFlag() {
        return lockFlag;
    }
    public void setLockFlag(String lockFlag) {
        this.lockFlag = lockFlag;
    }
    public String getPhoto() {
        return photo;
    }
    public void setPhoto(String photo) {
        this.photo = photo;
    }
    public String getPkWorkType() {
        return pkWorkType;
    }
    public void setPkWorkType(String pkWorkType) {
        this.pkWorkType = pkWorkType;
    }
    public String getPkWorkTypeText() {
        return pkWorkTypeText;
    }
    public void setPkWorkTypeText(String pkWorkTypeText) {
        this.pkWorkTypeText = pkWorkTypeText;
    }
    public String getWorkNo() {
        return workNo;
    }
    public void setWorkNo(String workNo) {
        this.workNo = workNo;
    }
    public String getConfirmPassword() {
        return confirmPassword;
    }
    public void setConfirmPassword(String confirmPassword) {
        this.confirmPassword = confirmPassword;
    }
    public Boolean getUnCheckPasswordStrategy() {
        return unCheckPasswordStrategy;
    }
    public void setUnCheckPasswordStrategy(Boolean unCheckPasswordStrategy) {
        this.unCheckPasswordStrategy = unCheckPasswordStrategy;
    }
    @Override
    public String toString() {
        return "SmUserDTO{" +
                "id='" + id + '\'' +
                ", name='" + name + '\'' +
                ", userType='" + userType + '\'' +
                ", userTypeText='" + userTypeText + '\'' +
                ", password='" + password + '\'' +
                ", confirmPassword='" + confirmPassword + '\'' +
                ", pkPerson='" + pkPerson + '\'' +
                ", pkPersonName='" + pkPersonName + '\'' +
                ", disabledate=" + disabledate +
                ", email='" + email + '\'' +
                ", tel='" + tel + '\'' +
                ", rtxNo='" + rtxNo + '\'' +
                ", IMNo='" + IMNo + '\'' +
                ", pkDepartment='" + pkDepartment + '\'' +
                ", pkDepartmentName='" + pkDepartmentName + '\'' +
                ", pkDuty='" + pkDuty + '\'' +
                ", pkDutyName='" + pkDutyName + '\'' +
                ", pkPasswordStrategy='" + pkPasswordStrategy + '\'' +
                ", pkPasswordStrategyName='" + pkPasswordStrategyName + '\'' +
                ", lastLoginTime=" + lastLoginTime +
                ", pwdUpdateTime=" + pwdUpdateTime +
                ", pwdWrongCount=" + pwdWrongCount +
                ", sex='" + sex + '\'' +
                ", sexText='" + sexText + '\'' +
                ", langCode='" + langCode + '\'' +
                ", langCodeText='" + langCodeText + '\'' +
                ", lockFlag='" + lockFlag + '\'' +
                ", photo='" + photo + '\'' +
                ", pkRole='" + pkRole + '\'' +
                ", pkWorkType='" + pkWorkType + '\'' +
                ", pkWorkTypeText='" + pkWorkTypeText + '\'' +
                ", workNo='" + workNo + '\'' +
                ", unCheckPasswordStrategy=" + unCheckPasswordStrategy +
                ", specialties='" + specialties + '\'' +
                '}';
    }
}
Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/config/TomcatConfig.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,31 @@
package com.vci.web.config;
import org.apache.catalina.connector.Connector;
import org.springframework.boot.web.embedded.tomcat.TomcatConnectorCustomizer;
import org.springframework.boot.web.embedded.tomcat.TomcatServletWebServerFactory;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
/**
 * Tomcat-9.x的高版本会拦截一些特殊字符,所以这儿做配置处理
 * @author ludc
 * @date 2024/6/26 11:20
 */
@Configuration
public class TomcatConfig {
    /**
     * \"<>[\\]^`{|}这些符号,处理
     * @return
     */
    @Bean
    public TomcatServletWebServerFactory webServerFactory() {
        TomcatServletWebServerFactory factory = new TomcatServletWebServerFactory();
        factory.addConnectorCustomizers((Connector connector) -> {
            connector.setProperty("relaxedPathChars", "\"<>[\\]^`{|}");
            connector.setProperty("relaxedQueryChars", "\"<>[\\]^`{|}");
        });
        return factory;
    }
}