相关方入职离职

dev_xiangguanfang
zhaokai 2025-12-29 16:38:19 +08:00
parent c141bb0c02
commit 2d45e621ba
15 changed files with 159 additions and 88 deletions

View File

@ -117,14 +117,12 @@ public class AppUserController {
} }
@ApiOperation("app获取用户在职企业") @ApiOperation("app获取用户在职企业")
@PostMapping("/getUserCorpList/{id}") @PostMapping("/getUserCorpList/{id}")
public MultiResponse<CorpInfoCO> getUserCorpList(@PathVariable("id") Long id) { public MultiResponse<UserCorpInfoCO> getUserCorpList(@PathVariable("id") Long id) {
return MultiResponse.of(userService.getUserCorpList(id)); return MultiResponse.of(userService.getUserCorpList(id));
} }
@ApiOperation("app获取图形验证码") @ApiOperation("app获取图形验证码")
@PostMapping("/generateCaptcha") @PostMapping("/generateCaptcha")
public Response generateCaptcha() { public Response generateCaptcha() {
CaptchaCO captchaCO = new CaptchaCO();
return SingleResponse.of(userService.generateCaptcha()); return SingleResponse.of(userService.generateCaptcha());
} }
} }

View File

@ -187,6 +187,7 @@ public class UserUpdateExe {
BeanUtils.copyProperties(cmd, userDO); BeanUtils.copyProperties(cmd, userDO);
return userRepository.updateFaceUrl(userDO); return userRepository.updateFaceUrl(userDO);
} }
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public void executeResignation(UserResignationCmd userResignationCmd) { public void executeResignation(UserResignationCmd userResignationCmd) {
//获取用户信息,并更新离职状态为离职 //获取用户信息,并更新离职状态为离职
@ -402,22 +403,12 @@ public class UserUpdateExe {
UserE userE = null; UserE userE = null;
Long corpinfoId = appUserResignationCmd.getCorpinfoId() == null ? AuthContext.getTenantId() : appUserResignationCmd.getCorpinfoId(); Long corpinfoId = appUserResignationCmd.getCorpinfoId() == null ? AuthContext.getTenantId() : appUserResignationCmd.getCorpinfoId();
Integer employmentFlagBefore = null; Integer employmentFlagBefore = null;
if (UserFlowFlagEnum.FLOW.getCode().equals(userDO.getFlowFlag())) {
UserCorpDO userCorpDO = userCorpRepository.getInfoByUserId(userDO.getId(), corpinfoId);
if (userCorpDO == null) {
return;
}
employmentFlagBefore = userCorpDO.getEmploymentFlag();
userE = userCorpRepository.executeResignation(userCorpDO, corpinfoId, UserEmploymentFlagEnum.RESIGNATION_AUDIT.getCode());
userCorpDO.setEmploymentFlag(UserEmploymentFlagEnum.RESIGNATION_AUDIT.getCode());
userCorpRepository.updateById(userCorpDO);
} else {
userE = new UserE(); userE = new UserE();
BeanUtils.copyProperties(userDO, userE); BeanUtils.copyProperties(userDO, userE);
employmentFlagBefore = userDO.getEmploymentFlag(); employmentFlagBefore = userDO.getEmploymentFlag();
userE.setEmploymentFlag(UserEmploymentFlagEnum.RESIGNATION_AUDIT.getCode()); userE.setEmploymentFlag(UserEmploymentFlagEnum.RESIGNATION_AUDIT.getCode());
userGateway.update(userE); userGateway.update(userE);
}
UserCorpRecordDO userCorpRecordDO = userCorpRecordRepository.getInfoByUserId(userDO.getId(), corpinfoId, UserEmploymentFlagEnum.ON.getCode()); UserCorpRecordDO userCorpRecordDO = userCorpRecordRepository.getInfoByUserId(userDO.getId(), corpinfoId, UserEmploymentFlagEnum.ON.getCode());
userCorpRecordDO.setStatus(UserChangeRecordStatusEnum.PENDING.getCode()); userCorpRecordDO.setStatus(UserChangeRecordStatusEnum.PENDING.getCode());
userCorpRecordDO.setResignationReason(appUserResignationCmd.getResignationReason()); userCorpRecordDO.setResignationReason(appUserResignationCmd.getResignationReason());

View File

@ -2,13 +2,11 @@ package com.zcloud.basic.info.command.convertor;
import com.zcloud.basic.info.domain.model.CorpDepartmentE; import com.zcloud.basic.info.domain.model.CorpDepartmentE;
import com.zcloud.basic.info.domain.model.DepartmentE; import com.zcloud.basic.info.domain.model.DepartmentE;
import com.zcloud.basic.info.dto.clientobject.CorpDepartmentCO; import com.zcloud.basic.info.dto.clientobject.*;
import com.zcloud.basic.info.dto.clientobject.CorpInfoCO;
import com.zcloud.basic.info.dto.clientobject.CorpInfoXgfItemCO;
import com.zcloud.basic.info.dto.clientobject.CorpUserMiddleCO;
import com.zcloud.basic.info.persistence.dataobject.CorpFormDO; import com.zcloud.basic.info.persistence.dataobject.CorpFormDO;
import com.zcloud.basic.info.persistence.dataobject.CorpInfoDO; import com.zcloud.basic.info.persistence.dataobject.CorpInfoDO;
import com.zcloud.basic.info.persistence.dataobject.DepartmentDO; import com.zcloud.basic.info.persistence.dataobject.DepartmentDO;
import com.zcloud.basic.info.persistence.dataobject.UserCorpInfoDO;
import com.zcloud.gbscommon.zcloudcorp.response.ZcloudCorpInfoCO; import com.zcloud.gbscommon.zcloudcorp.response.ZcloudCorpInfoCO;
import org.mapstruct.Mapper; import org.mapstruct.Mapper;
@ -40,5 +38,7 @@ public interface CorpInfoCoConvertor {
List<CorpUserMiddleCO> converDOsToMiddleCOs(List<CorpInfoDO> data); List<CorpUserMiddleCO> converDOsToMiddleCOs(List<CorpInfoDO> data);
List<CorpInfoXgfItemCO> converDOsToItemCOs(List<CorpFormDO> corpFormDOS); List<CorpInfoXgfItemCO> converDOsToItemCOs(List<CorpFormDO> corpFormDOS);
List<UserCorpInfoCO> converUserInfoDOsToCOs(List<UserCorpInfoDO> userCorpDOS);
} }

View File

@ -21,6 +21,7 @@ import com.zcloud.basic.info.dto.*;
import com.zcloud.basic.info.dto.clientobject.*; import com.zcloud.basic.info.dto.clientobject.*;
import com.zcloud.basic.info.persistence.dataobject.CorpInfoDO; import com.zcloud.basic.info.persistence.dataobject.CorpInfoDO;
import com.zcloud.basic.info.persistence.dataobject.UserCorpDO; import com.zcloud.basic.info.persistence.dataobject.UserCorpDO;
import com.zcloud.basic.info.persistence.dataobject.UserCorpInfoDO;
import com.zcloud.basic.info.persistence.dataobject.UserDO; import com.zcloud.basic.info.persistence.dataobject.UserDO;
import com.zcloud.basic.info.persistence.repository.CorpInfoRepository; import com.zcloud.basic.info.persistence.repository.CorpInfoRepository;
import com.zcloud.basic.info.persistence.repository.UserCorpRepository; import com.zcloud.basic.info.persistence.repository.UserCorpRepository;
@ -224,69 +225,47 @@ public class UserQueryExe {
if(captcha == null || !captcha.toString().equals(cmd.getCaptchaCode())){ if(captcha == null || !captcha.toString().equals(cmd.getCaptchaCode())){
throw new BizException("验证码错误"); throw new BizException("验证码错误");
} }
//返回企业列表 //返回企业列表
UserDO userDO = userRepository.getByPhone(cmd.getPhone()); //根据手机号获取用户列表
if(userDO == null){ List<UserDO> userDOList = userRepository.getListByPhone(cmd.getPhone());
throw new BizException("手机号不存在"); if(CollUtil.isEmpty(userDOList)){
throw new BizException("用户不存在");
} }
//判断密码是否正确 //判断密码是否正确
UserE userE = new UserE(); UserE userE = new UserE();
userE.setPassword(userDO.getPassword()); userE.setPassword(userDOList.get(0).getPassword());
Boolean checkUserPassword = userE.checkUserPassword(cmd.getPassword(), userDO.getPassword()); Boolean checkUserPassword = userE.checkUserPassword(cmd.getPassword(), userDOList.get(0).getPassword());
if(!checkUserPassword){ if(!checkUserPassword){
throw new BizException("密码错误"); throw new BizException("密码错误");
} }
//判断用户信息是否完善 //判断用户信息是否完善
UserE userCheck = new UserE(); UserE userCheck = new UserE();
BeanUtils.copyProperties(userDO, userCheck); BeanUtils.copyProperties(userDOList.get(0), userCheck);
Boolean b = userCheck.checkUserInfoComplete(userCheck); Boolean b = userCheck.checkUserInfoComplete(userCheck);
userLoginCO.setIsInfoComplete(b); userLoginCO.setIsInfoComplete(b);
List<CorpInfoCO> corpInfoCOList = new ArrayList<>(); List<Long> userIds = userDOList.stream().map(UserDO::getId).collect(Collectors.toList());
//判断是流动人员还是固定人员 List<UserCorpInfoDO> userCorpDOS = userCorpRepository.getListByUserIds(userIds);
if(UserFlowFlagEnum.FIXED.getCode().equals(userDO.getFlowFlag()) && userDO.getCorpinfoId() != null && UserEmploymentFlagEnum.ON.getCode().equals(userDO.getEmploymentFlag())){ List<UserCorpInfoCO> corpInfoCOS = corpInfoCoConvertor.converUserInfoDOsToCOs(userCorpDOS);
CorpInfoDO corpInfoDO = corpInfoRepository.getById(userDO.getCorpinfoId());
CorpInfoCO corpInfoCO = new CorpInfoCO();
BeanUtils.copyProperties(corpInfoDO, corpInfoCO);
corpInfoCOList.add(corpInfoCO);
}
if(UserFlowFlagEnum.FLOW.getCode().equals(userDO.getFlowFlag())){
List<UserCorpDO> userCorpDOS = userCorpRepository.getONCorpInfo(userDO.getId());
if(CollUtil.isNotEmpty(userCorpDOS)){
List<Long> corpinfoIds = userCorpDOS.stream().map(UserCorpDO::getCorpinfoId).collect(Collectors.toList());
List<CorpInfoDO> corpInfoDOList = corpInfoRepository.getByIdList(corpinfoIds);
List<CorpInfoCO> corpInfoCOS = corpInfoCoConvertor.converDOsToCOs(corpInfoDOList);
corpInfoCOList.addAll(corpInfoCOS);
}
} userLoginCO.setUserCorpInfoCOList(corpInfoCOS);
userLoginCO.setCorpInfoCOList(corpInfoCOList); UserDO userDO = userRepository.getInfoById(userDOList.get(0).getId());
userLoginCO.setUserCO(userCoConvertor.converDOToCO(userDO)); userLoginCO.setUserCO(userCoConvertor.converDOToCO(userDO));
return userLoginCO; return userLoginCO;
} }
public List<CorpInfoCO> getUserCorpList(Long id) { public List<UserCorpInfoCO> getUserCorpList(Long id) {
//返回企业列表 //返回企业列表
UserDO userDO = userRepository.getById(id); UserDO userDO = userRepository.getById(id);
//判断是流动人员还是固定人员 //根据手机号获取用户列表
if(UserFlowFlagEnum.FIXED.getCode().equals(userDO.getFlowFlag()) && userDO.getCorpinfoId() != null){ List<UserDO> userDOList = userRepository.getListByPhone(userDO.getPhone());
CorpInfoDO corpInfoDO = corpInfoRepository.getById(userDO.getCorpinfoId());
CorpInfoCO corpInfoCO = new CorpInfoCO(); List<Long> userIds = userDOList.stream().map(UserDO::getId).collect(Collectors.toList());
BeanUtils.copyProperties(corpInfoDO, corpInfoCO); List<UserCorpInfoDO> userCorpDOS = userCorpRepository.getListByUserIds(userIds);
return Arrays.asList(corpInfoCO); List<UserCorpInfoCO> corpInfoCOS = corpInfoCoConvertor.converUserInfoDOsToCOs(userCorpDOS);
}
if(UserFlowFlagEnum.FLOW.getCode().equals(userDO.getFlowFlag())){
List<UserCorpDO> userCorpDOS = userCorpRepository.getONCorpInfo(userDO.getId());
if(CollUtil.isEmpty(userCorpDOS)){
return null;
}
List<Long> corpinfoIds = userCorpDOS.stream().map(UserCorpDO::getCorpinfoId).collect(Collectors.toList());
List<CorpInfoDO> corpInfoDOList = corpInfoRepository.getByIdList(corpinfoIds);
List<CorpInfoCO> corpInfoCOS = corpInfoCoConvertor.converDOsToCOs(corpInfoDOList);
return corpInfoCOS; return corpInfoCOS;
}
return null;
} }
public CaptchaCO generateCaptcha() { public CaptchaCO generateCaptcha() {

View File

@ -11,10 +11,7 @@ import com.zcloud.basic.info.command.UserRemoveExe;
import com.zcloud.basic.info.command.UserUpdateExe; import com.zcloud.basic.info.command.UserUpdateExe;
import com.zcloud.basic.info.command.query.UserQueryExe; import com.zcloud.basic.info.command.query.UserQueryExe;
import com.zcloud.basic.info.dto.*; import com.zcloud.basic.info.dto.*;
import com.zcloud.basic.info.dto.clientobject.CorpInfoCO; import com.zcloud.basic.info.dto.clientobject.*;
import com.zcloud.basic.info.dto.clientobject.UserCO;
import com.zcloud.basic.info.dto.clientobject.UserLoginCO;
import com.zcloud.basic.info.dto.clientobject.UserXmfCO;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.web.multipart.MultipartFile; import org.springframework.web.multipart.MultipartFile;
@ -217,7 +214,7 @@ public class UserServiceImpl implements UserServiceI {
} }
@Override @Override
public List<CorpInfoCO> getUserCorpList(Long id) { public List<UserCorpInfoCO> getUserCorpList(Long id) {
return userQueryExe.getUserCorpList(id); return userQueryExe.getUserCorpList(id);
} }

View File

@ -6,10 +6,7 @@ import com.alibaba.cola.dto.PageResponse;
import com.alibaba.cola.dto.Response; import com.alibaba.cola.dto.Response;
import com.alibaba.cola.dto.SingleResponse; import com.alibaba.cola.dto.SingleResponse;
import com.zcloud.basic.info.dto.*; import com.zcloud.basic.info.dto.*;
import com.zcloud.basic.info.dto.clientobject.CorpInfoCO; import com.zcloud.basic.info.dto.clientobject.*;
import com.zcloud.basic.info.dto.clientobject.UserCO;
import com.zcloud.basic.info.dto.clientobject.UserLoginCO;
import com.zcloud.basic.info.dto.clientobject.UserXmfCO;
import org.springframework.web.multipart.MultipartFile; import org.springframework.web.multipart.MultipartFile;
import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpServletResponse;
@ -86,7 +83,7 @@ public interface UserServiceI {
UserLoginCO login(UserAppLoginCmd cmd); UserLoginCO login(UserAppLoginCmd cmd);
List<CorpInfoCO> getUserCorpList(Long id); List<UserCorpInfoCO> getUserCorpList(Long id);
CaptchaCO generateCaptcha(); CaptchaCO generateCaptcha();
} }

View File

@ -0,0 +1,41 @@
package com.zcloud.basic.info.dto.clientobject;
import com.alibaba.cola.dto.ClientObject;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.io.Serializable;
import java.math.BigDecimal;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.util.List;
/**
* web-client
*
* @Author zhaokai
* @Date 2025-10-30 15:12:49
*/
@Data
public class UserCorpInfoCO implements Serializable {
//用户id
@ApiModelProperty(value = "用户id")
private Long userId;
//主键
@ApiModelProperty(value = "企业id")
private Long corpinfoId;
//企业名称
@ApiModelProperty(value = "企业名称")
private String corpName;
//企业类型(0-普通企业1-集团单位2-股份单位3-相关方企业4-货主单位5-驻港单位)
@ApiModelProperty(value = "企业类型(0-普通企业1-集团单位2-股份单位3-相关方企业4-货主单位5-驻港单位)")
private Integer type;
}

View File

@ -22,7 +22,7 @@ public class UserLoginCO extends ClientObject {
private Boolean isInfoComplete; private Boolean isInfoComplete;
@ApiModelProperty(value = "用户关联的公司列表") @ApiModelProperty(value = "用户关联的公司列表")
private List<CorpInfoCO> corpInfoCOList; private List<UserCorpInfoCO> userCorpInfoCOList;
private UserCO userCO; private UserCO userCO;
} }

View File

@ -0,0 +1,35 @@
package com.zcloud.basic.info.persistence.dataobject;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.io.Serializable;
/**
* web-client
*
* @Author zhaokai
* @Date 2025-10-30 15:12:49
*/
@Data
public class UserCorpInfoDO implements Serializable {
//用户id
@ApiModelProperty(value = "用户id")
private Long userId;
//主键
@ApiModelProperty(value = "企业id")
private Long corpinfoId;
//企业名称
@ApiModelProperty(value = "企业名称")
private String corpinfoName;
//企业类型(0-普通企业1-集团单位2-股份单位3-相关方企业4-货主单位5-驻港单位)
@ApiModelProperty(value = "企业类型(0-普通企业1-集团单位2-股份单位3-相关方企业4-货主单位5-驻港单位)")
private Integer type;
}

View File

@ -2,8 +2,11 @@ package com.zcloud.basic.info.persistence.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.zcloud.basic.info.persistence.dataobject.UserCorpDO; import com.zcloud.basic.info.persistence.dataobject.UserCorpDO;
import com.zcloud.basic.info.persistence.dataobject.UserCorpInfoDO;
import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Mapper;
import java.util.List;
/** /**
* web-infrastructure * web-infrastructure
* *
@ -14,5 +17,7 @@ import org.apache.ibatis.annotations.Mapper;
public interface UserCorpMapper extends BaseMapper<UserCorpDO> { public interface UserCorpMapper extends BaseMapper<UserCorpDO> {
UserCorpDO getInfoByUserId(Long userId, Long corpinfoId); UserCorpDO getInfoByUserId(Long userId, Long corpinfoId);
List<UserCorpInfoDO> getListByUserIds(List<Long> userIds);
} }

View File

@ -4,6 +4,7 @@ import com.alibaba.cola.dto.PageResponse;
import com.jjb.saas.framework.repository.repo.BaseRepository; import com.jjb.saas.framework.repository.repo.BaseRepository;
import com.zcloud.basic.info.domain.model.UserE; import com.zcloud.basic.info.domain.model.UserE;
import com.zcloud.basic.info.persistence.dataobject.UserCorpDO; import com.zcloud.basic.info.persistence.dataobject.UserCorpDO;
import com.zcloud.basic.info.persistence.dataobject.UserCorpInfoDO;
import javax.validation.constraints.NotNull; import javax.validation.constraints.NotNull;
import java.util.List; import java.util.List;
@ -35,5 +36,7 @@ public interface UserCorpRepository extends BaseRepository<UserCorpDO> {
void removeByUserId(Long userId); void removeByUserId(Long userId);
List<UserCorpDO> getONCorpInfo(@NotNull(message = "用户id不能为空") Long id); List<UserCorpDO> getONCorpInfo(@NotNull(message = "用户id不能为空") Long id);
List<UserCorpInfoDO> getListByUserIds(List<Long> userIds);
} }

View File

@ -82,5 +82,7 @@ public interface UserRepository extends BaseRepository<UserDO> {
UserDO getByPhoneAndIdCard(String phone, String idCardNumber); UserDO getByPhoneAndIdCard(String phone, String idCardNumber);
void checkUserIdCard(@NotNull(message = "主键id不能为空") Long id, String userIdCard); void checkUserIdCard(@NotNull(message = "主键id不能为空") Long id, String userIdCard);
List<UserDO> getListByPhone(String phone);
} }

View File

@ -8,6 +8,7 @@ import com.jjb.saas.framework.repository.repo.impl.BaseRepositoryImpl;
import com.zcloud.basic.info.domain.enums.UserEmploymentFlagEnum; import com.zcloud.basic.info.domain.enums.UserEmploymentFlagEnum;
import com.zcloud.basic.info.domain.model.UserE; import com.zcloud.basic.info.domain.model.UserE;
import com.zcloud.basic.info.persistence.dataobject.UserCorpDO; import com.zcloud.basic.info.persistence.dataobject.UserCorpDO;
import com.zcloud.basic.info.persistence.dataobject.UserCorpInfoDO;
import com.zcloud.basic.info.persistence.dataobject.UserCorpRecordDO; import com.zcloud.basic.info.persistence.dataobject.UserCorpRecordDO;
import com.zcloud.basic.info.persistence.mapper.UserCorpMapper; import com.zcloud.basic.info.persistence.mapper.UserCorpMapper;
import com.zcloud.basic.info.persistence.repository.UserCorpRepository; import com.zcloud.basic.info.persistence.repository.UserCorpRepository;
@ -117,6 +118,9 @@ public class UserCorpRepositoryImpl extends BaseRepositoryImpl<UserCorpMapper, U
return userCorpMapper.selectList(queryWrapper); return userCorpMapper.selectList(queryWrapper);
} }
@Override
public List<UserCorpInfoDO> getListByUserIds(List<Long> userIds) {
return userCorpMapper.getListByUserIds(userIds);
}
} }

View File

@ -534,5 +534,12 @@ public class UserRepositoryImpl extends BaseRepositoryImpl<UserMapper, UserDO> i
throw new BizException("身份证号已经存在,请联系管理员"); throw new BizException("身份证号已经存在,请联系管理员");
} }
} }
@Override
public List<UserDO> getListByPhone(String phone) {
QueryWrapper<UserDO> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("phone", phone);
return list(queryWrapper);
}
} }

View File

@ -13,5 +13,17 @@
and uc.corpinfo_id = #{corpinfoId} and uc.corpinfo_id = #{corpinfoId}
and uc.delete_enum = 'FALSE' and uc.delete_enum = 'FALSE'
</select> </select>
<select id="getListByUserIds" resultType="com.zcloud.basic.info.persistence.dataobject.UserCorpInfoDO">
select u.id as userId, ci.corp_name as corpinfoName,ci.id as corpinfoId
from user u
left join corp_info ci on u.corpinfo_id = ci.id
where u.user_id in
<foreach collection="userIds" item="item" open="(" close=")" separator=",">
#{item}
</foreach>
and ci.use_flag=1
and uc.delete_enum = 'FALSE'
</select>
</mapper> </mapper>