Browse Source

用户上传接口修改。

master
刘忱 2 years ago
parent
commit
6e52535627
  1. 8
      win-module-system/win-module-system-biz/src/main/java/com/win/module/system/controller/user/UserController.java
  2. 15
      win-module-system/win-module-system-biz/src/main/java/com/win/module/system/service/user/AdminUserService.java
  3. 36
      win-module-system/win-module-system-biz/src/main/java/com/win/module/system/service/user/AdminUserServiceImpl.java

8
win-module-system/win-module-system-biz/src/main/java/com/win/module/system/controller/user/UserController.java

@ -180,13 +180,13 @@ public class UserController {
@Operation(summary = "导入用户")
@Parameters({
@Parameter(name = "file", description = "Excel 文件", required = true),
@Parameter(name = "updateSupport", description = "是否支持更新,默认为 false", example = "true")
@Parameter(name = "mode", description = "导入模式1更新2追加3覆盖", example = "1"),
@Parameter(name = "updatePart", description = "部分更新,默认为 true", example = "true")
})
@PreAuthorize("@ss.hasPermission('system:user:import')")
public CommonResult<UserImportRespVO> importExcel(@RequestParam("file") MultipartFile file,
@RequestParam(value = "updateSupport", required = false, defaultValue = "false") Boolean updateSupport) throws Exception {
public CommonResult<UserImportRespVO> importExcel(@RequestParam("file") MultipartFile file, @RequestParam(value = "mode") Integer mode, @RequestParam(value = "updatePart") Boolean updatePart) throws Exception {
List<UserImportExcelVO> list = ExcelUtils.read(file, UserImportExcelVO.class);
return success(userService.importUserList(list, updateSupport));
return success(userService.importUserList(list, mode, updatePart));
}
}

15
win-module-system/win-module-system-biz/src/main/java/com/win/module/system/service/user/AdminUserService.java

@ -37,7 +37,7 @@ public interface AdminUserService {
/**
* 更新用户的最后登陆信息
*
* @param id 用户编号
* @param id 用户编号
* @param loginIp 登陆 IP
*/
void updateUserLogin(Long id, String loginIp);
@ -45,7 +45,7 @@ public interface AdminUserService {
/**
* 修改用户个人信息
*
* @param id 用户编号
* @param id 用户编号
* @param reqVO 用户个人信息
*/
void updateUserProfile(Long id, @Valid UserProfileUpdateReqVO reqVO);
@ -53,7 +53,7 @@ public interface AdminUserService {
/**
* 修改用户个人密码
*
* @param id 用户编号
* @param id 用户编号
* @param reqVO 更新用户个人密码
*/
void updateUserPassword(Long id, @Valid UserProfileUpdatePasswordReqVO reqVO);
@ -186,11 +186,12 @@ public interface AdminUserService {
/**
* 批量导入用户
*
* @param importUsers 导入用户列表
* @param isUpdateSupport 是否支持更新
* @param importUsers 导入用户列表
* @param mode 模式
* @param updatePart 是否部分更新
* @return 导入结果
*/
UserImportRespVO importUserList(List<UserImportExcelVO> importUsers, boolean isUpdateSupport);
UserImportRespVO importUserList(List<UserImportExcelVO> importUsers, Integer mode, boolean updatePart);
/**
* 获得指定状态的用户们
@ -203,7 +204,7 @@ public interface AdminUserService {
/**
* 判断密码是否匹配
*
* @param rawPassword 未加密的密码
* @param rawPassword 未加密的密码
* @param encodedPassword 加密后的密码
* @return 是否匹配
*/

36
win-module-system/win-module-system-biz/src/main/java/com/win/module/system/service/user/AdminUserServiceImpl.java

@ -4,6 +4,7 @@ import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.collection.CollectionUtil;
import cn.hutool.core.io.IoUtil;
import cn.hutool.core.util.StrUtil;
import com.google.common.annotations.VisibleForTesting;
import com.win.framework.common.enums.CommonStatusEnum;
import com.win.framework.common.exception.ServiceException;
import com.win.framework.common.pojo.PageResult;
@ -23,13 +24,13 @@ import com.win.module.system.service.dept.DeptService;
import com.win.module.system.service.dept.PostService;
import com.win.module.system.service.permission.PermissionService;
import com.win.module.system.service.tenant.TenantService;
import com.google.common.annotations.VisibleForTesting;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Lazy;
import org.springframework.security.crypto.password.PasswordEncoder;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.transaction.interceptor.TransactionAspectSupport;
import javax.annotation.Resource;
import java.io.InputStream;
@ -397,39 +398,36 @@ public class AdminUserServiceImpl implements AdminUserService {
@Override
@Transactional(rollbackFor = Exception.class) // 添加事务,异常则回滚所有导入
public UserImportRespVO importUserList(List<UserImportExcelVO> importUsers, boolean isUpdateSupport) {
public UserImportRespVO importUserList(List<UserImportExcelVO> importUsers, Integer mode, boolean updatePart) {
if (CollUtil.isEmpty(importUsers)) {
throw exception(USER_IMPORT_LIST_IS_EMPTY);
}
UserImportRespVO respVO = UserImportRespVO.builder().createUsernames(new ArrayList<>())
.updateUsernames(new ArrayList<>()).failureUsernames(new LinkedHashMap<>()).build();
UserImportRespVO respVO = UserImportRespVO.builder().createUsernames(new ArrayList<>()).updateUsernames(new ArrayList<>()).failureUsernames(new LinkedHashMap<>()).build();
importUsers.forEach(importUser -> {
// 校验,判断是否有不符合的原因
try {
validateUserForCreateOrUpdate(null, null, importUser.getMobile(), importUser.getEmail(),
importUser.getDeptId(), null);
validateUserForCreateOrUpdate(null, null, importUser.getMobile(), importUser.getEmail(), importUser.getDeptId(), null);
} catch (ServiceException ex) {
respVO.getFailureUsernames().put(importUser.getUsername(), ex.getMessage());
return;
}
// 判断如果不存在,在进行插入
AdminUserDO existUser = userMapper.selectByUsername(importUser.getUsername());
if (existUser == null) {
userMapper.insert(UserConvert.INSTANCE.convert(importUser)
.setPassword(encodePassword(userInitPassword)).setPostIds(new HashSet<>())); // 设置默认密码及空岗位编号数组
//不存在并非覆盖类型
if (existUser == null && mode != 3) {
userMapper.insert(UserConvert.INSTANCE.convert(importUser).setPassword(encodePassword(userInitPassword)).setPostIds(new HashSet<>())); // 设置默认密码及空岗位编号数组
respVO.getCreateUsernames().add(importUser.getUsername());
return;
} else if (existUser != null && mode != 2) {// 如果存在,判断是否允许更新
AdminUserDO updateUser = UserConvert.INSTANCE.convert(importUser);
updateUser.setId(existUser.getId());
userMapper.updateById(updateUser);
respVO.getUpdateUsernames().add(importUser.getUsername());
}
// 如果存在,判断是否允许更新
if (!isUpdateSupport) {
respVO.getFailureUsernames().put(importUser.getUsername(), USER_USERNAME_EXISTS.getMsg());
return;
}
AdminUserDO updateUser = UserConvert.INSTANCE.convert(importUser);
updateUser.setId(existUser.getId());
userMapper.updateById(updateUser);
respVO.getUpdateUsernames().add(importUser.getUsername());
});
//错误不为空并非部分更新,手工回滚
if(respVO.getUpdateUsernames().isEmpty() && !updatePart) {
TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
}
return respVO;
}

Loading…
Cancel
Save