Merge remote-tracking branch 'origin/main' into main

main
SondonYong 2025-11-28 15:39:15 +08:00
commit 5c57c12ea4
17 changed files with 133 additions and 14 deletions

View File

@ -4,7 +4,7 @@ nacos:
application: application:
name: jjb-saas-zcloud-basic-info name: jjb-saas-zcloud-basic-info
version: version:
gateway: basic-info gateway: basicInfo
cn-name: 统一用户管理 cn-name: 统一用户管理
spring: spring:
application: application:

View File

@ -143,5 +143,11 @@ public class UserController {
return userService.updatePassword(userUpdatePassWordCmd); return userService.updatePassword(userUpdatePassWordCmd);
} }
@ApiOperation("根据登录人密码获取查询人手机号和身份证号")
@PostMapping("/getEncryInfo")
public SingleResponse<UserCO> getEncryInfo(@Validated @RequestBody UserCheckPassWordCmd userCheckPassWordCmd) {
return userService.getEncryInfo(userCheckPassWordCmd);
}
} }

View File

@ -10,6 +10,7 @@ import com.zcloud.basic.info.domain.gateway.DepartmentSuperviseGateway;
import com.zcloud.basic.info.domain.model.DepartmentE; import com.zcloud.basic.info.domain.model.DepartmentE;
import com.zcloud.basic.info.domain.model.DepartmentSuperviseE; import com.zcloud.basic.info.domain.model.DepartmentSuperviseE;
import com.zcloud.basic.info.dto.DepartmentAddCmd; import com.zcloud.basic.info.dto.DepartmentAddCmd;
import com.zcloud.basic.info.persistence.repository.DepartmentRepository;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.apache.dubbo.config.annotation.DubboReference; import org.apache.dubbo.config.annotation.DubboReference;
@ -34,13 +35,16 @@ public class DepartmentAddExe {
private final DepartmentGateway departmentGateway; private final DepartmentGateway departmentGateway;
private final DepartmentSuperviseGateway departmentSuperviseGateway; private final DepartmentSuperviseGateway departmentSuperviseGateway;
private final DepartmentSuperviseCoConvertor departmentSuperviseCoConvertor; private final DepartmentRepository departmentRepository;
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public Long execute(DepartmentAddCmd cmd) { public Long execute(DepartmentAddCmd cmd) {
DepartmentE examTypeE = new DepartmentE(); DepartmentE examTypeE = new DepartmentE();
//名字校验重复
if (departmentRepository.existsByName(cmd.getName())) {
throw new BizException("部门名称已存在");
}
BeanUtils.copyProperties(cmd, examTypeE); BeanUtils.copyProperties(cmd, examTypeE);
Long id = null; Long id = null;
try { try {

View File

@ -83,6 +83,7 @@ public class UserAddExe {
userE.setRoleId(roleId); userE.setRoleId(roleId);
} }
try { try {
res = userGateway.add(userE); res = userGateway.add(userE);
if(corpInfoDO != null && !ObjectUtils.isEmpty(corpInfoDO.getCorpName())){ if(corpInfoDO != null && !ObjectUtils.isEmpty(corpInfoDO.getCorpName())){
corpName = corpInfoDO.getCorpName(); corpName = corpInfoDO.getCorpName();

View File

@ -53,6 +53,9 @@ public class DepartmentQueryExe {
if (departmentPageQry.getEqCorpinfoId() == null) { if (departmentPageQry.getEqCorpinfoId() == null) {
departmentPageQry.setEqCorpinfoId(AuthContext.getTenantId()); departmentPageQry.setEqCorpinfoId(AuthContext.getTenantId());
} }
if(departmentPageQry.getEqParentId() == null){
departmentPageQry.setEqParentId(AuthContext.getTenantId());
}
Map<String, Object> parmas = PageQueryHelper.toHashMap(departmentPageQry); Map<String, Object> parmas = PageQueryHelper.toHashMap(departmentPageQry);
PageResponse<DepartmentDO> pageResponse = departmentRepository.listPage(parmas); PageResponse<DepartmentDO> pageResponse = departmentRepository.listPage(parmas);
List<DepartmentCO> examCenterCOS = departmentCoConvertor.converDOsToCOs(pageResponse.getData()); List<DepartmentCO> examCenterCOS = departmentCoConvertor.converDOsToCOs(pageResponse.getData());

View File

@ -10,6 +10,7 @@ import com.jjb.saas.framework.auth.utils.AuthContext;
import com.zcloud.basic.info.command.convertor.UserCoConvertor; import com.zcloud.basic.info.command.convertor.UserCoConvertor;
import com.zcloud.basic.info.domain.gateway.UserGateway; import com.zcloud.basic.info.domain.gateway.UserGateway;
import com.zcloud.basic.info.domain.model.UserE; import com.zcloud.basic.info.domain.model.UserE;
import com.zcloud.basic.info.dto.UserCheckPassWordCmd;
import com.zcloud.basic.info.dto.UserPageQry; import com.zcloud.basic.info.dto.UserPageQry;
import com.zcloud.basic.info.dto.UserQryCmd; import com.zcloud.basic.info.dto.UserQryCmd;
import com.zcloud.basic.info.dto.UserVerifyQryCmd; import com.zcloud.basic.info.dto.UserVerifyQryCmd;
@ -17,6 +18,7 @@ import com.zcloud.basic.info.dto.clientobject.UserCO;
import com.zcloud.basic.info.persistence.dataobject.UserDO; import com.zcloud.basic.info.persistence.dataobject.UserDO;
import com.zcloud.basic.info.persistence.repository.UserRepository; import com.zcloud.basic.info.persistence.repository.UserRepository;
import com.zcloud.gbscommon.excelEntity.UserExcelExportEntity; import com.zcloud.gbscommon.excelEntity.UserExcelExportEntity;
import com.zcloud.gbscommon.utils.DesensitizationUtils;
import com.zcloud.gbscommon.utils.PageQueryHelper; import com.zcloud.gbscommon.utils.PageQueryHelper;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;
import org.springframework.beans.BeanUtils; import org.springframework.beans.BeanUtils;
@ -66,6 +68,9 @@ public class UserQueryExe {
Map<String, Object> params = PageQueryHelper.toHashMap(userQryCmd); Map<String, Object> params = PageQueryHelper.toHashMap(userQryCmd);
List<UserDO> imgFilesDOList = userRepository.listAll(params); List<UserDO> imgFilesDOList = userRepository.listAll(params);
List<UserCO> imgFilesCOList = userCoConvertor.converDOsToCOs(imgFilesDOList); List<UserCO> imgFilesCOList = userCoConvertor.converDOsToCOs(imgFilesDOList);
//手机号脱敏
//身份照脱敏
imgFilesCOList.forEach(this::desensitize);
return MultiResponse.of(imgFilesCOList); return MultiResponse.of(imgFilesCOList);
} }
@ -80,6 +85,7 @@ public class UserQueryExe {
UserDO userDO = userRepository.getInfoById(id); UserDO userDO = userRepository.getInfoById(id);
UserCO userCO = new UserCO(); UserCO userCO = new UserCO();
BeanUtils.copyProperties(userDO, userCO); BeanUtils.copyProperties(userDO, userCO);
desensitize(userCO);
return SingleResponse.of(userCO); return SingleResponse.of(userCO);
} }
@ -101,17 +107,28 @@ public class UserQueryExe {
QueryWrapper<UserDO> userDOQueryWrapper = new QueryWrapper<>(); QueryWrapper<UserDO> userDOQueryWrapper = new QueryWrapper<>();
userDOQueryWrapper.in("id",collection); userDOQueryWrapper.in("id",collection);
List<UserDO> list = userRepository.list(userDOQueryWrapper); List<UserDO> list = userRepository.list(userDOQueryWrapper);
return userCoConvertor.converDOsToCOs(list); List<UserCO> userCOS = userCoConvertor.converDOsToCOs(list);
userCOS.forEach(this::desensitize);
return userCOS;
} }
public List<UserCO> getUserList() { public List<UserCO> getUserList() {
List<UserDO> list = userRepository.list(); List<UserDO> list = userRepository.list();
return userCoConvertor.converDOsToCOs(list); List<UserCO> userCOS = userCoConvertor.converDOsToCOs(list);
userCOS.forEach(this::desensitize);
return userCOS;
}
private void desensitize(UserCO userCO) {
userCO.setUserIdCard(DesensitizationUtils.idCardDesensitize(userCO.getUserIdCard()));
userCO.setPhone(DesensitizationUtils.mobileDesensitize(userCO.getPhone()));
} }
public UserCO getInfoByUserId(Long aLong) { public UserCO getInfoByUserId(Long aLong) {
UserDO byId = userRepository.getById(aLong); UserDO byId = userRepository.getById(aLong);
return userCoConvertor.converDOToCO(byId); UserCO userCO = userCoConvertor.converDOToCO(byId);
desensitize(userCO);
return userCO;
} }
/** /**
@ -124,6 +141,9 @@ public class UserQueryExe {
params.put("userIdList", Arrays.asList(ids)); params.put("userIdList", Arrays.asList(ids));
} }
List<UserDO> userDOList = userRepository.listAll(params); List<UserDO> userDOList = userRepository.listAll(params);
//手机号脱敏
//身份照脱敏
userDOList.forEach(userDO -> desensitize(userCoConvertor.converDOToCO(userDO)));
List<UserExcelExportEntity> userExcelExportEntities = userCoConvertor.converDOsToExcelEntitys(userDOList); List<UserExcelExportEntity> userExcelExportEntities = userCoConvertor.converDOsToExcelEntitys(userDOList);
UserE userE = new UserE(); UserE userE = new UserE();
userE.exportUserTable(httpServletResponse, userExcelExportEntities); userE.exportUserTable(httpServletResponse, userExcelExportEntities);
@ -143,7 +163,16 @@ public class UserQueryExe {
UserDO userDO = userRepository.getInfoById(id); UserDO userDO = userRepository.getInfoById(id);
UserCO userCO = new UserCO(); UserCO userCO = new UserCO();
BeanUtils.copyProperties(userDO, userCO); BeanUtils.copyProperties(userDO, userCO);
desensitize(userCO);
return SingleResponse.of(userCO); return SingleResponse.of(userCO);
} }
public SingleResponse<UserCO> getEncryInfo(UserCheckPassWordCmd userCheckPassWordCmd) {
UserE userE = new UserE();
BeanUtils.copyProperties(userCheckPassWordCmd, userE);
userE.encryptionPassword();
UserDO userDO = userRepository.getEncryInfo(userE);
return SingleResponse.of(userCoConvertor.converDOToCO(userDO));
}
} }

View File

@ -124,5 +124,9 @@ public class UserServiceImpl implements UserServiceI {
return userUpdateExe.executeUpdatePassword(userUpdatePassWordCmd); return userUpdateExe.executeUpdatePassword(userUpdatePassWordCmd);
} }
@Override
public SingleResponse<UserCO> getEncryInfo(UserCheckPassWordCmd userCheckPassWordCmd) {
return userQueryExe.getEncryInfo(userCheckPassWordCmd);
}
} }

View File

@ -50,5 +50,7 @@ public interface UserServiceI {
UserCO getInfoByUserId(Long aLong); UserCO getInfoByUserId(Long aLong);
void changePassword(Long id); void changePassword(Long id);
Response updatePassword(UserUpdatePassWordCmd userUpdatePassWordCmd); Response updatePassword(UserUpdatePassWordCmd userUpdatePassWordCmd);
SingleResponse<UserCO> getEncryInfo(UserCheckPassWordCmd userCheckPassWordCmd);
} }

View File

@ -25,7 +25,6 @@ public class UserAddCmd extends Command {
private String userId; private String userId;
@ApiModelProperty(value = "登录账号", name = "username", required = true) @ApiModelProperty(value = "登录账号", name = "username", required = true)
@NotEmpty(message = "登录账号不能为空")
private String username; private String username;
@ApiModelProperty(value = "姓名", name = "name", required = true) @ApiModelProperty(value = "姓名", name = "name", required = true)
@ -60,11 +59,9 @@ public class UserAddCmd extends Command {
private String phone; private String phone;
@ApiModelProperty(value = "人员类型编码(主要负责人等)", name = "personnelType", required = true) @ApiModelProperty(value = "人员类型编码(主要负责人等)", name = "personnelType", required = true)
@NotEmpty(message = "人员类型不能为空")
private String personnelType; private String personnelType;
@ApiModelProperty(value = "人员类型翻译", name = "personnelTypeName", required = true) @ApiModelProperty(value = "人员类型翻译", name = "personnelTypeName", required = true)
@NotEmpty(message = "人员类型不能为空")
private String personnelTypeName; private String personnelTypeName;
@ApiModelProperty(value = "民族编码", name = "nation") @ApiModelProperty(value = "民族编码", name = "nation")

View File

@ -0,0 +1,32 @@
package com.zcloud.basic.info.dto;
import com.alibaba.cola.dto.Command;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;
import javax.validation.constraints.NotEmpty;
import javax.validation.constraints.NotNull;
/**
* web-client
*
* @Author zhangyue
* @Date 2025-11-04 14:07:38
*/
@EqualsAndHashCode(callSuper = true)
@Data
@NoArgsConstructor
@AllArgsConstructor
public class UserCheckPassWordCmd extends Command {
@ApiModelProperty(value = "GBS用户id", name = "id", required = true)
@NotNull(message = "GBS用户id不能为空")
private Long id;
@ApiModelProperty(value = "原密码", name = "password")
@NotEmpty(message = "原密码不能为空")
private String password;
}

View File

@ -25,7 +25,6 @@ public class UserXgfAddCmd extends Command {
private String userId; private String userId;
@ApiModelProperty(value = "登录账号", name = "username", required = true) @ApiModelProperty(value = "登录账号", name = "username", required = true)
@NotEmpty(message = "登录账号不能为空")
private String username; private String username;
@ApiModelProperty(value = "姓名", name = "name", required = true) @ApiModelProperty(value = "姓名", name = "name", required = true)

View File

@ -221,8 +221,12 @@ public class UserE extends BaseE {
} }
public void encryptionPassword() { public void encryptionPassword() {
this.setPassword(Sm2Util.encryptHex(MD5.md5(password), publicKey)); this.setPassword(Sm2Util.encryptHex(MD5.md5(password), publicKey));
this.setNewPassword(Sm2Util.encryptHex(MD5.md5(newPassword), publicKey)); if(StringUtils.isNotEmpty(newPassword)){
this.setNewPassword(Sm2Util.encryptHex(MD5.md5(newPassword), publicKey));
}
} }
} }

View File

@ -6,6 +6,7 @@ import com.zcloud.basic.info.domain.model.DepartmentE;
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 javax.validation.constraints.NotEmpty;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
@ -33,5 +34,7 @@ public interface DepartmentRepository extends BaseRepository<DepartmentDO> {
List<DepartmentDO> listAllTree(); List<DepartmentDO> listAllTree();
boolean existsByName(@NotEmpty(message = "名称不能为空") String name);
} }

View File

@ -11,6 +11,8 @@ import com.zcloud.basic.info.domain.model.UserE;
import com.zcloud.basic.info.persistence.dataobject.UserDO; import com.zcloud.basic.info.persistence.dataobject.UserDO;
import org.apache.catalina.User; import org.apache.catalina.User;
import javax.validation.constraints.NotEmpty;
import javax.validation.constraints.NotNull;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
@ -60,5 +62,6 @@ public interface UserRepository extends BaseRepository<UserDO> {
Response updatePassword(UserDO userDO); Response updatePassword(UserDO userDO);
UserDO getEncryInfo(UserE userE);
} }

View File

@ -123,5 +123,13 @@ public class DepartmentRepositoryImpl extends BaseRepositoryImpl<DepartmentMappe
public List<DepartmentDO> listAllTree() { public List<DepartmentDO> listAllTree() {
return departmentMapper.listAllTree(); return departmentMapper.listAllTree();
} }
@Override
public boolean existsByName(String name) {
QueryWrapper<DepartmentDO> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("name", name);
queryWrapper.eq("corpinfo_id", AuthContext.getTenantId());
return departmentMapper.selectCount(queryWrapper) > 0;
}
} }

View File

@ -5,6 +5,7 @@ import com.alibaba.cola.dto.MultiResponse;
import com.alibaba.cola.dto.PageResponse; 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.alibaba.cola.exception.BizException;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.metadata.IPage;
@ -36,6 +37,7 @@ import org.apache.dubbo.config.annotation.DubboReference;
import org.springframework.beans.BeanUtils; import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.util.ObjectUtils; import org.springframework.util.ObjectUtils;
import org.springframework.util.StringUtils;
import java.util.Collections; import java.util.Collections;
import java.util.HashMap; import java.util.HashMap;
@ -67,9 +69,9 @@ public class UserRepositoryImpl extends BaseRepositoryImpl<UserMapper, UserDO> i
IPage<UserDO> iPage = new Query<UserDO>().getPage(params); IPage<UserDO> iPage = new Query<UserDO>().getPage(params);
QueryWrapper<UserDO> queryWrapper = new QueryWrapper<>(); QueryWrapper<UserDO> queryWrapper = new QueryWrapper<>();
queryWrapper = PageQueryHelper.createPageQueryWrapper(queryWrapper, params, "u."); queryWrapper = PageQueryHelper.createPageQueryWrapper(queryWrapper, params, "u.");
queryWrapper.orderByDesc("u.sort");
queryWrapper.eq("u.delete_enum", "FALSE"); queryWrapper.eq("u.delete_enum", "FALSE");
queryWrapper.apply("u.id != u.corpinfo_id"); queryWrapper.apply("u.id != u.corpinfo_id");
queryWrapper.orderByAsc("u.sort").orderByDesc("u.create_time");
IPage<UserDO> result = userMapper.selectUserPage(iPage, queryWrapper); IPage<UserDO> result = userMapper.selectUserPage(iPage, queryWrapper);
return PageHelper.pageToResponse(result, result.getRecords()); return PageHelper.pageToResponse(result, result.getRecords());
} }
@ -153,9 +155,10 @@ public class UserRepositoryImpl extends BaseRepositoryImpl<UserMapper, UserDO> i
@Override @Override
public List<UserDO> listByPostId(Long postId) { public List<UserDO> listByPostId(Long postId) {
QueryWrapper queryWrapper = new QueryWrapper(); QueryWrapper<UserDO> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("post_id", postId); queryWrapper.eq("post_id", postId);
queryWrapper.eq("delete_enum", "FALSE"); queryWrapper.eq("delete_enum", "FALSE");
queryWrapper.orderByAsc("u.sort").orderByDesc("u.create_time");
List userPostList = this.list(queryWrapper); List userPostList = this.list(queryWrapper);
return userPostList; return userPostList;
} }
@ -165,6 +168,7 @@ public class UserRepositoryImpl extends BaseRepositoryImpl<UserMapper, UserDO> i
QueryWrapper<UserDO> queryWrapper = new QueryWrapper(); QueryWrapper<UserDO> queryWrapper = new QueryWrapper();
queryWrapper.in("post_id", postIds); queryWrapper.in("post_id", postIds);
queryWrapper.eq("delete_enum", "FALSE"); queryWrapper.eq("delete_enum", "FALSE");
queryWrapper.orderByAsc("u.sort").orderByDesc("u.create_time");
List<UserDO> userPostList = this.list(queryWrapper); List<UserDO> userPostList = this.list(queryWrapper);
return userPostList; return userPostList;
} }
@ -174,6 +178,7 @@ public class UserRepositoryImpl extends BaseRepositoryImpl<UserMapper, UserDO> i
QueryWrapper<UserDO> queryWrapper = new QueryWrapper(); QueryWrapper<UserDO> queryWrapper = new QueryWrapper();
queryWrapper.eq("corpinfo_id", corpInfoId); queryWrapper.eq("corpinfo_id", corpInfoId);
queryWrapper.eq("delete_enum", "FALSE"); queryWrapper.eq("delete_enum", "FALSE");
queryWrapper.orderByAsc("u.sort").orderByDesc("u.create_time");
return list(queryWrapper); return list(queryWrapper);
} }
@ -190,6 +195,9 @@ public class UserRepositoryImpl extends BaseRepositoryImpl<UserMapper, UserDO> i
@Override @Override
public void saveUser(UserDO userDO) { public void saveUser(UserDO userDO) {
if(StringUtils.isEmpty(userDO.getUsername())){
userDO.setUsername(userDO.getPhone());
}
UserAddCmd userAddCmd = new UserAddCmd(); UserAddCmd userAddCmd = new UserAddCmd();
userAddCmd.setAccount(userDO.getUsername()); userAddCmd.setAccount(userDO.getUsername());
userAddCmd.setName(userDO.getName()); userAddCmd.setName(userDO.getName());
@ -201,6 +209,9 @@ public class UserRepositoryImpl extends BaseRepositoryImpl<UserMapper, UserDO> i
SingleResponse<Long> gbsResult = userFacade.add(userAddCmd); SingleResponse<Long> gbsResult = userFacade.add(userAddCmd);
userDO.setId(gbsResult.getData()); userDO.setId(gbsResult.getData());
if(userDO.getSort() == null){
userDO.setSort(9999);
}
save(userDO); save(userDO);
} }
@ -293,5 +304,18 @@ public class UserRepositoryImpl extends BaseRepositoryImpl<UserMapper, UserDO> i
userUpdatePasswordCmd.setPassword(userDO.getNewPassword()); userUpdatePasswordCmd.setPassword(userDO.getNewPassword());
return userFacade.updatePassword(userUpdatePasswordCmd); return userFacade.updatePassword(userUpdatePasswordCmd);
} }
@Override
public UserDO getEncryInfo(UserE userE) {
// TODO 验证老密码是否正确
AccountPasswordCheckCmd accountPasswordCheckCmd = new AccountPasswordCheckCmd();
accountPasswordCheckCmd.setUserId(AuthContext.getUserId());
accountPasswordCheckCmd.setPassword(userE.getPassword());
SingleResponse<Long> response = accountFacade.checkPassword(accountPasswordCheckCmd);
if(!response.isSuccess()){
throw new BizException("密码错误");
}
return getById(userE.getId());
}
} }

View File

@ -89,7 +89,7 @@
</foreach> </foreach>
</if> </if>
</where> </where>
order by order by u.sort ,
u.create_time desc u.create_time desc
</select> </select>