diff --git a/web-app/src/main/java/com/zcloud/basic/info/command/UserUpdateExe.java b/web-app/src/main/java/com/zcloud/basic/info/command/UserUpdateExe.java index 5b282768..9e4a7e9a 100644 --- a/web-app/src/main/java/com/zcloud/basic/info/command/UserUpdateExe.java +++ b/web-app/src/main/java/com/zcloud/basic/info/command/UserUpdateExe.java @@ -41,6 +41,7 @@ import java.util.ArrayList; import java.util.Arrays; import java.util.Collections; import java.util.List; +import java.util.stream.Collectors; /** @@ -99,16 +100,32 @@ public class UserUpdateExe { } - ; CorpInfoDO corpInfoDO = corpInfoRepository.getById(userDO.getCorpinfoId()); if(corpInfoDO != null){ if(corpInfoDO.getType() == CorpTypeEnum.serviceProvider.getCode() || corpInfoDO.getType() == CorpTypeEnum.cargoOwner.getCode() || corpInfoDO.getType() == CorpTypeEnum.portUnit.getCode()){ - // 相关方 - boolean res = userGateway.updateByPhone(userE); - // 保存履职记录 - if (!res) { + // 先把其他相关方的账号找出来 + List userByPhoneList = userRepository.listByPhone(userDO.getPhone()); + List userIds = userByPhoneList.stream().map(UserDO::getId).collect(Collectors.toList()); + + // pc端当前相关方企业修改 + boolean res = userGateway.update(userE); + if(!userE.getPhone().equals(userDO.getPhone())){ + // 调用底座修改账号 + userGateway.updateByGBS(userE); + // 重置密码 + UserE u = new UserE(); + u.resetPassword(); + for (Long userId : userIds) { + userRepository.changePassword(userId, u.getPassword()); + } + } + + // 相关方同步修改 + boolean res2 = userGateway.updateByIds(userE, userIds); + + if (!res || !res2) { throw new BizException("修改失败"); } }else { diff --git a/web-domain/src/main/java/com/zcloud/basic/info/domain/gateway/UserGateway.java b/web-domain/src/main/java/com/zcloud/basic/info/domain/gateway/UserGateway.java index aec1720a..9965453c 100644 --- a/web-domain/src/main/java/com/zcloud/basic/info/domain/gateway/UserGateway.java +++ b/web-domain/src/main/java/com/zcloud/basic/info/domain/gateway/UserGateway.java @@ -4,6 +4,7 @@ package com.zcloud.basic.info.domain.gateway; import com.alibaba.cola.dto.Response; import com.zcloud.basic.info.domain.model.UserE; +import java.util.List; import java.util.Map; /** @@ -28,6 +29,10 @@ public interface UserGateway { Boolean updateByPhone(UserE userE); + Boolean updateByIds(UserE userE, List ids); + + Boolean updateByGBS(UserE userE); + /** * 删除 */ diff --git a/web-infrastructure/src/main/java/com/zcloud/basic/info/gatewayimpl/UserGatewayImpl.java b/web-infrastructure/src/main/java/com/zcloud/basic/info/gatewayimpl/UserGatewayImpl.java index c2fd40f9..43d5c973 100644 --- a/web-infrastructure/src/main/java/com/zcloud/basic/info/gatewayimpl/UserGatewayImpl.java +++ b/web-infrastructure/src/main/java/com/zcloud/basic/info/gatewayimpl/UserGatewayImpl.java @@ -1,7 +1,10 @@ package com.zcloud.basic.info.gatewayimpl; +import cn.hutool.json.JSONUtil; import com.alibaba.cola.dto.Response; import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; +import com.jjb.saas.system.client.user.facade.UserFacade; +import com.jjb.saas.system.client.user.request.RoleDeptAddCmd; import com.zcloud.basic.info.domain.enums.UserEmploymentFlagEnum; import com.zcloud.basic.info.domain.gateway.UserGateway; import com.zcloud.basic.info.domain.model.UserE; @@ -9,13 +12,18 @@ import com.zcloud.basic.info.persistence.dataobject.UserDO; import com.zcloud.basic.info.persistence.repository.UserRepository; import com.zcloud.gbscommon.utils.PageQueryHelper; import lombok.AllArgsConstructor; +import org.apache.dubbo.config.annotation.DubboReference; import org.springframework.beans.BeanUtils; import org.springframework.stereotype.Service; import org.springframework.util.ObjectUtils; import java.util.Arrays; +import java.util.Collections; +import java.util.List; import java.util.Map; +import static dm.jdbc.util.DriverUtil.log; + /** * web-infrastructure * @Author zhangyue @@ -25,6 +33,8 @@ import java.util.Map; @AllArgsConstructor public class UserGatewayImpl implements UserGateway { private final UserRepository userRepository; + @DubboReference + private UserFacade userFacade; @Override public Boolean add(UserE userE) { @@ -94,6 +104,57 @@ public class UserGatewayImpl implements UserGateway { return true; } + @Override + public Boolean updateByIds(UserE userE, List ids) { + UserDO d = new UserDO(); + + d.setUsername(userE.getPhone()); + d.setPhone(userE.getPhone()); + + d.setUserAvatarUrl(userE.getUserAvatarUrl()); + d.setName(userE.getName()); + d.setUserIdCard(userE.getUserIdCard()); + d.setNation(userE.getNation()); + d.setNationName(userE.getNationName()); + d.setCurrentAddress(userE.getCurrentAddress()); + d.setLocationAddress(userE.getLocationAddress()); + d.setCulturalLevel(userE.getCulturalLevel()); + d.setCulturalLevelName(userE.getCulturalLevelName()); + d.setPoliticalAffiliation(userE.getPoliticalAffiliation()); + d.setPoliticalAffiliationName(userE.getPoliticalAffiliationName()); + d.setMaritalStatus(userE.getMaritalStatus()); + d.setMaritalStatusName(userE.getMaritalStatusName()); + if(userE.getFlowFlag() != null){ + d.setFlowFlag(userE.getFlowFlag()); + } + d.setEmail(userE.getEmail()); + + UpdateWrapper updateWrapper = new UpdateWrapper<>(); + updateWrapper.in("id", ids); + + userRepository.update(d, updateWrapper); + return true; + } + + @Override + public Boolean updateByGBS(UserE userE) { + com.jjb.saas.system.client.user.request.UserUpdateCmd updateCmd = new com.jjb.saas.system.client.user.request.UserUpdateCmd(); + updateCmd.setId(userE.getId()); + updateCmd.setAccount(userE.getPhone()); + updateCmd.setMobile(userE.getPhone()); + updateCmd.setName(userE.getName()); + updateCmd.setEmail(userE.getEmail()); + RoleDeptAddCmd roleDeptAddCmd = new RoleDeptAddCmd(); + roleDeptAddCmd.setRoleId(userE.getRoleId()); + roleDeptAddCmd.setDeptId(userE.getDepartmentId()); + List roleDeptAddCmdList = Collections.singletonList(roleDeptAddCmd); + updateCmd.setRoleDepts(roleDeptAddCmdList); + log.info("GBS修改用户开始,用户信息:{}", JSONUtil.toJsonStr(updateCmd)); + Response response = userFacade.update(updateCmd); + log.info("GBS修改用户结束,用户id:{},结果:{}", JSONUtil.toJsonStr(response)); + return true; + } + @Override public void deletedUserById(Long id) { userRepository.deleteUserById(id);