yuxc
2024-06-19 663878fdcd0d44c105888014f4cdf7fc926f609f
Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/frameworkcore/compatibility/impl/SmUserQueryServiceImpl.java
@@ -1,12 +1,15 @@
package com.vci.frameworkcore.compatibility.impl;
import com.vci.client.common.providers.ServiceProvider;
import com.vci.common.util.ThreeDES;
import com.vci.corba.common.PLException;
import com.vci.corba.framework.data.UserInfo;
import com.vci.corba.omd.data.BusinessObject;
import com.vci.frameworkcore.compatibility.SmUserQueryServiceI;
import com.vci.frameworkcore.pagemodel.SmPasswordStrategyVO;
import com.vci.frameworkcore.pagemodel.SmUserVO;
import com.vci.omd.utils.ObjectTool;
import com.vci.starter.web.enumpck.BooleanEnum;
import com.vci.starter.web.enumpck.UserSecretEnum;
import com.vci.starter.web.exception.VciBaseException;
import com.vci.starter.web.pagemodel.DataGrid;
import com.vci.starter.web.pagemodel.PageHelper;
@@ -14,7 +17,9 @@
import com.vci.starter.web.pagemodel.TreeQueryObject;
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.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;
@@ -22,7 +27,6 @@
import com.vci.web.util.WebUtil;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Lazy;
import org.springframework.stereotype.Service;
import org.springframework.util.CollectionUtils;
@@ -30,7 +34,7 @@
import java.util.stream.Collectors;
import static com.vci.frameworkcore.constant.FrameWorkBusLangCodeConstant.DATA_OID_NOT_EXIST;
import static com.vci.web.util.WebUtil.arryAndSqlToClientBusinessObject;
import static com.vci.web.util.WebUtil.arryAndSqlToBusinessObject;
/**
 * 用户的查询相关的服务,可以兼容老平台和老的pdm
@@ -80,13 +84,6 @@
   public static final String QUERY_FIELD_ROLE = "roleUser.plroleuid";
   /**
    * 自引用
    */
   @Autowired(required = false)
   @Lazy
   private SmUserQueryServiceI self;
   /**
     *  根据用户名获取用户的对象,不区分大小写
     * @param userId 用户名
     * @return 用户的显示对象,如果用户不存在则返回null,不会抛出异常
@@ -95,7 +92,41 @@
   @Override
   public SmUserVO getUserByUserId(String userId) throws VciBaseException {
      WebUtil.alertNotNull(userId,"用户名");
      return getUserByField("plusername",userId);
        try {
            UserInfo userInfo = platformClientUtil.getFrameworkService().getUserObjectByUserName(userId);
         return userInfo2VO(userInfo);
        } catch (PLException e) {
            throw new VciBaseException("登录时,获取用户信息失败:"+e.getMessage());
        }
   }
   /**
    * 业务数据转换为显示对象
    * @param userInfo 平台返回的业务数据
    * @return 用户显示对象
    */
   private SmUserVO userInfo2VO(UserInfo userInfo) {
      SmUserVO smUserVO = new SmUserVO();
      smUserVO.setOid(userInfo.id);
      smUserVO.setId(userInfo.userName);
      smUserVO.setName(userInfo.trueName);
      smUserVO.setSecretGrade(userInfo.secretGrade);
      smUserVO.setSecretGradeText(UserSecretEnum.getSecretText(smUserVO.getSecretGrade()));
      smUserVO.setUserType(String.valueOf(userInfo.userType));
      smUserVO.setUserTypeText(UserTypeEnum.getTextByValue(smUserVO.getUserType()));
      smUserVO.setDescription(userInfo.desc);
      smUserVO.setEmail(userInfo.email);
      if(userInfo.status == 0){
         smUserVO.setLockFlag(false);
      }else{
         smUserVO.setLockFlag(true);
      }
      smUserVO.setCreator(userInfo.createUser);
      smUserVO.setCreateTime(VciDateUtil.long2Date(userInfo.createTime));
      smUserVO.setLastModifier(userInfo.updateUser);
      smUserVO.setLastLoginTime(VciDateUtil.long2Date(userInfo.updateTime));
      smUserVO.setLastModifyPasswordTime(VciDateUtil.long2Date(userInfo.pwdUpdateTime));
      return smUserVO;
   }
   /**
@@ -117,9 +148,9 @@
            " left join PLUSERPASSWORDSTRATEGY pkUserPassword on  " +queryWrapper.getTableNick() + ".pluid = pkUserPassword.pluseruid " +
            queryWrapper.getLinkTableSql() + (StringUtils.isNotBlank(queryWrapper.getWhereSql())?(" where " + queryWrapper.getWhereSql()):"");
      try{
         String[][] sqlQueryResult = ServiceProvider.getBOFService().getSqlQueryResult(sql + fromSql, null);
         String[][] sqlQueryResult = platformClientUtil.getBOFService().getSqlQueryResult(sql + fromSql, null);
         if(sqlQueryResult.length>0){
            com.vci.client.bof.ClientBusinessObject cbo = arryAndSqlToClientBusinessObject(queryWrapper.getSelectFieldSql(),sqlQueryResult[0]);
            BusinessObject cbo = arryAndSqlToBusinessObject(queryWrapper.getSelectFieldSql(),sqlQueryResult[0]);
            return cbo2VO(cbo);
         }
      }catch (Exception e){
@@ -147,7 +178,7 @@
               + " left join pluserdept up on " + queryWrapper.getTableNick() + ".pluid = up.pluseruid left join pldept pkDepartment on  up.pldeptuid = pkDepartment.pluid " +
               " left join PLUSERPASSWORDSTRATEGY pkUserPassword on  " +queryWrapper.getTableNick() + ".pluid = pkUserPassword.pluseruid " +
               queryWrapper.getLinkTableSql() + (StringUtils.isNotBlank(queryWrapper.getWhereSql())?(" where " + queryWrapper.getWhereSql()):"");
         List<com.vci.client.bof.ClientBusinessObject> dataList = boService.queryBySql(sql + fromSql, null);
         List<BusinessObject> dataList = boService.queryBySql(sql + fromSql, null);
         if(!CollectionUtils.isEmpty(dataList)){
            dataList.stream().forEach(cbo->{
               userVOList.add(cbo2VO(cbo));
@@ -166,7 +197,12 @@
   @Override
   public List<SmUserVO> listUserByUserIds(Collection<String> userIdCollections)throws VciBaseException {
      WebUtil.alertNotNull(userIdCollections,"用户名集合");
      return listUserByField("plusername",userIdCollections);
      try {
         UserInfo[] userInfo = platformClientUtil.getFrameworkService().fetchUserInfoByNames(VciBaseUtil.collection2StrArr(userIdCollections));
         return userInfoArr2VO(userInfo);
      } catch (PLException e) {
         throw new VciBaseException("获取用户失败:"+e.getMessage());
      }
   }
   /**
     * 根据用户主键获取用户的信息
@@ -177,7 +213,12 @@
   @Override
   public SmUserVO getUserByUserOid(String userOid) throws VciBaseException {
      WebUtil.alertNotNull(userOid,"用户主键");
      return getUserByField("pluid",userOid);
        try {
            UserInfo userInfo = platformClientUtil.getFrameworkService().getUserObjectByoid(userOid);
         return userInfo2VO(userInfo);
        } catch (PLException e) {
            throw new VciBaseException("获取用户失败:"+e.getMessage());
        }
   }
    /**
     * 批量获取用户的信息 (根据用户主键)
@@ -189,7 +230,25 @@
   public List<SmUserVO> listUserByUserOids(
         Collection<String> userOidCollections) throws VciBaseException {
      WebUtil.alertNotNull(userOidCollections,"用户主键集合");
      return listUserByField("pluid",userOidCollections);
        try {
            UserInfo[] userInfoArr = platformClientUtil.getFrameworkService().getUserObjectByoids(VciBaseUtil.collection2StrArr(userOidCollections));
         return userInfoArr2VO(userInfoArr);
        } catch (PLException e) {
            throw new VciBaseException("获取用户信息失败:"+e.getMessage());
        }
   }
   /**
    * 业务数据数组转显示对象集合
    * @param userInfoArr 业务数据数组
    * @return 显示对象集合
    */
   private List<SmUserVO> userInfoArr2VO(UserInfo[] userInfoArr) {
      List<SmUserVO> userVOList = new ArrayList<>();
      for(UserInfo userInfo : userInfoArr){
         userVOList.add(userInfo2VO(userInfo));
      }
      return userVOList;
   }
   /**
@@ -228,7 +287,7 @@
            + " left join pluserdept up on " + queryWrapper.getTableNick() + ".pluid = up.pluseruid left join pldept pkDepartment on  up.pldeptuid = pkDepartment.pluid " +
            " left join PLUSERPASSWORDSTRATEGY pkUserPassword on  " +queryWrapper.getTableNick() + ".pluid = pkUserPassword.pluseruid " + (QUERY_FIELD_ROLE.equalsIgnoreCase(queryField)?roleSql:"") +
            queryWrapper.getLinkTableSql() + (StringUtils.isNotBlank(queryWrapper.getWhereSql())?(" where " + queryWrapper.getWhereSql()):"");
      List<com.vci.client.bof.ClientBusinessObject> dataList = boService.queryBySql(sql + fromSql, null);
      List<BusinessObject> dataList = boService.queryBySql(sql + fromSql, null);
      if(!CollectionUtils.isEmpty(dataList)){
         dataList.stream().forEach(cbo->{
            userVOList.add(cbo2VO(cbo));
@@ -242,7 +301,7 @@
    * @param cbo 业务数据
    * @return 显示对象
    */
   private SmUserVO cbo2VO(com.vci.client.bof.ClientBusinessObject cbo){
   private SmUserVO cbo2VO(BusinessObject cbo){
      SmUserDO userDO = new SmUserDO();
      SmUserVO userVO = new SmUserVO();
      WebUtil.copyValueToObjectFromCbos(cbo,userDO);
@@ -296,7 +355,7 @@
            }
         }
      }
      List<com.vci.client.bof.ClientBusinessObject> dataList = boService.queryBySql((isPage?("select " + pageSelectList.stream().collect(Collectors.joining(","))+ " from (select A.*,rownum RN from ( "):"") + sql + fromSql + (isPage?pageSubfix:""), null);
      List<BusinessObject> dataList = boService.queryBySql((isPage?("select " + pageSelectList.stream().collect(Collectors.joining(","))+ " from (select A.*,rownum RN from ( "):"") + sql + fromSql + (isPage?pageSubfix:""), null);
      if(!CollectionUtils.isEmpty(dataList)){
         dataList.stream().forEach(cbo->{
            userVOList.add(cbo2VO(cbo));
@@ -351,7 +410,7 @@
     */
   @Override
   public String getUserNameByUserId(String userId) {
      SmUserVO userVO = self.getUserByUserId(userId);
      SmUserVO userVO = getUserByUserId(userId);
      return userVO == null?"":userVO.getName();
   }
    /**
@@ -361,7 +420,7 @@
     */
   @Override
   public String getUserNameByUserOid(String userOid) {
      SmUserVO userVO = self.getUserByUserOid(userOid);
      SmUserVO userVO = getUserByUserOid(userOid);
      return userVO.getName();
   }
@@ -612,13 +671,13 @@
            + " left join pluserdept up on " + queryWrapper.getTableNick() + ".pluid = up.pluseruid left join pldept pkDepartment on  up.pldeptuid = pkDepartment.pluid " +
            " left join PLUSERPASSWORDSTRATEGY pkUserPassword on  " +queryWrapper.getTableNick() + ".pluid = pkUserPassword.pluseruid " +
            queryWrapper.getLinkTableSql() + (StringUtils.isNotBlank(queryWrapper.getWhereSql())?(" where " + queryWrapper.getWhereSql()):"");
      List<com.vci.client.bof.ClientBusinessObject> dataList = boService.queryBySql(sql + fromSql, null);
      List<BusinessObject> dataList = boService.queryBySql(sql + fromSql, null);
      List<Tree> treeList = new ArrayList<>();
      if(!CollectionUtils.isEmpty(dataList)){
         dataList.stream().forEach(cbo->{
            Tree tree = new Tree();
            tree.setOid(cbo.getOid());
            tree.setText(cbo.getId() + " " + cbo.getName());
            tree.setOid(cbo.oid);
            tree.setText(cbo.id + " " + cbo.name);
            Map<String,String> attributeMap = new HashMap<>();
            WebUtil.copyValueToCboFromMap(cbo,attributeMap);
            tree.setAttributes(attributeMap);
@@ -642,15 +701,15 @@
      String sql = " select plpassword from pluser where pluid = :userOid";
      Map<String,String> conditionMap = new HashMap<>();
      conditionMap.put("userOid",userOid.trim());
      List<com.vci.client.bof.ClientBusinessObject> clientBusinessObjectList = boService.queryBySql(sql, conditionMap);
      if(CollectionUtils.isEmpty(clientBusinessObjectList)){
      List<BusinessObject> BusinessObjectList = boService.queryBySql(sql, conditionMap);
      if(CollectionUtils.isEmpty(BusinessObjectList)){
         return  false;
      }
      ThreeDES des = new ThreeDES();// 实例化一个对�?
      des.getKey("daliantan0v0");// 生成密匙
      md5Password = des.getEncString(md5Password);
      if(md5Password.equals(clientBusinessObjectList.get(0).getAttributeValue("plpassword"))){
      if(md5Password.equals(ObjectTool.getNewBOAttributeValue(BusinessObjectList.get(0),"plpassword"))){
         return true;
      }
      return false;
@@ -685,7 +744,7 @@
   public SmPasswordStrategyVO getPasswordStrategyVOByOid(String oid){
      VciQueryWrapperForDO queryWrapperForDO = new VciQueryWrapperForDO(null, SmPasswordStrategyDO.class);
      queryWrapperForDO.eq("oid",oid.trim());
      List<com.vci.client.bof.ClientBusinessObject> cboList = boService.queryBySql(queryWrapperForDO.getSelectFieldSql() + " from plpasswordstrategy " +
      List<BusinessObject> cboList = boService.queryBySql(queryWrapperForDO.getSelectFieldSql() + " from plpasswordstrategy " +
            queryWrapperForDO.getTableNick() + queryWrapperForDO.getLinkTableSql() +
            (StringUtils.isBlank(queryWrapperForDO.getWhereSql()) ? "" : (" where " + queryWrapperForDO.getWhereSql())), null);
      if(!CollectionUtils.isEmpty(cboList)){