Merge branch 'main' of ssh://192.168.1.205:9922/cf_devdept2/cf_imes_server

This commit is contained in:
lym
2024-04-28 16:14:14 +08:00
146 changed files with 7612 additions and 84 deletions
@@ -1,10 +1,12 @@
package com.cf.imes.module.system.controller.admin.process.vo.group;
import com.cf.imes.module.system.controller.admin.process.vo.process.ProcessRespVO;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.*;
import javax.validation.constraints.NotEmpty;
import javax.validation.constraints.NotNull;
import java.util.List;
@Schema(description = "管理后台 - 工序组表 process_group新增/修改 Request VO")
@Data
@@ -33,4 +35,8 @@ public class ProcessGroupSaveReqVO {
@NotEmpty(message = "描述不能为空")
private String description;
public List<ProcessRespVO> getLists() {
return null;
}
}
@@ -199,9 +199,12 @@ public class UserController {
})
@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 {
@RequestParam(value = "updateSupport", required = false, defaultValue = "false") Boolean updateSupport,
@RequestParam(value = "organId", required = false) Long organId
) throws Exception {
List<UserImportExcelVO> list = ExcelUtils.read(file, UserImportExcelVO.class);
return success(userService.importUserList(list, updateSupport));
organId = organId==null? OrganContextHolder.getOrganId() : organId;
return success(userService.importUserList(list, updateSupport, organId));
}
@GetMapping("/list-terms-simple")
@@ -64,6 +64,10 @@ public class UserSaveReqVO {
|| (ObjectUtil.isAllNotEmpty(password)); // 新增时,必须都传递 password
}
@Schema(description = "帐号状态(0正常 1停用)")
@NotNull(message = "账号状态不能空")
private Integer status;
private Long organId;
}
@@ -8,6 +8,7 @@ import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.extension.handlers.JacksonTypeHandler;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import lombok.EqualsAndHashCode;
@@ -90,4 +91,8 @@ public class OAuth2AccessTokenDO extends BaseDO {
* 用户昵称
*/
private String nickname;
/**
* 是否超级管理员
*/
private Boolean isSupAdmin;
}
@@ -83,5 +83,9 @@ public class OAuth2RefreshTokenDO extends BaseDO {
* 用户昵称
*/
private String nickname;
/**
* 是否超级管理员
*/
private Boolean isSupAdmin;
}
@@ -130,7 +130,7 @@ public class AdminAuthServiceImpl implements AdminAuthService {
throw exception(ORGAN_DATA_CODE_NOT_EXISTS);
}
// 创建 Token 令牌,记录登录日志
return createTokenAfterLoginSuccess(user.getId(), reqVO.getUsername(), LoginLogTypeEnum.LOGIN_USERNAME, dataSourceCode, user.getOrganId(), user.getNickname());
return createTokenAfterLoginSuccess(user.getId(), reqVO.getUsername(), LoginLogTypeEnum.LOGIN_USERNAME,organ.getLarge(), dataSourceCode, user.getOrganId(), user.getNickname());
}
@Override
@@ -161,7 +161,7 @@ public class AdminAuthServiceImpl implements AdminAuthService {
}
// 创建 Token 令牌,记录登录日志
return createTokenAfterLoginSuccess(user.getId(), reqVO.getMobile(), LoginLogTypeEnum.LOGIN_MOBILE, dataSourceCode, organId, user.getNickname());
return createTokenAfterLoginSuccess(user.getId(), reqVO.getMobile(), LoginLogTypeEnum.LOGIN_MOBILE, organ.getLarge(), dataSourceCode, organId, user.getNickname());
}
private void createLoginLog(Long userId, String username,
@@ -206,7 +206,7 @@ public class AdminAuthServiceImpl implements AdminAuthService {
}
// 创建 Token 令牌,记录登录日志
return createTokenAfterLoginSuccess(user.getId(), user.getUsername(), LoginLogTypeEnum.LOGIN_SOCIAL, dataSourceCode, organId, user.getNickname());
return createTokenAfterLoginSuccess(user.getId(), user.getUsername(), LoginLogTypeEnum.LOGIN_SOCIAL, organ.getLarge(), dataSourceCode, organId, user.getNickname());
}
@VisibleForTesting
@@ -228,7 +228,7 @@ public class AdminAuthServiceImpl implements AdminAuthService {
}
}
private AuthLoginRespVO createTokenAfterLoginSuccess(Long userId, String username, LoginLogTypeEnum logType, String dataCode, Long organId, String nickname) {
private AuthLoginRespVO createTokenAfterLoginSuccess(Long userId, String username, LoginLogTypeEnum logType, Boolean large, String dataCode, Long organId, String nickname) {
// 插入登陆日志
createLoginLog(userId, username, logType, LoginResultEnum.SUCCESS);
/*Long organId = OrganContextHolder.getOrganId();
@@ -238,7 +238,7 @@ public class AdminAuthServiceImpl implements AdminAuthService {
}*/
// 创建访问令牌
OAuth2AccessTokenDO accessTokenDO = oauth2TokenService.createAccessToken(userId, getUserType().getValue(),
OAuth2ClientConstants.CLIENT_ID_DEFAULT, null, null, null, null, dataCode, organId, nickname);
OAuth2ClientConstants.CLIENT_ID_DEFAULT, null, large, null, null, dataCode, organId, nickname);
// 构建返回结果
return AuthConvert.INSTANCE.convert(accessTokenDO);
}
@@ -7,6 +7,7 @@ import com.cf.imes.framework.common.exception.enums.GlobalErrorCodeConstants;
import com.cf.imes.framework.common.pojo.PageResult;
import com.cf.imes.framework.common.util.date.DateUtils;
import com.cf.imes.framework.organ.core.context.OrganContextHolder;
import com.cf.imes.framework.security.core.service.SecurityFrameworkService;
import com.cf.imes.module.system.controller.admin.oauth2.vo.token.OAuth2AccessTokenPageReqVO;
import com.cf.imes.module.system.dal.dataobject.oauth2.OAuth2AccessTokenDO;
import com.cf.imes.module.system.dal.dataobject.oauth2.OAuth2ClientDO;
@@ -43,6 +44,9 @@ public class OAuth2TokenServiceImpl implements OAuth2TokenService {
@Resource
private OAuth2ClientService oauth2ClientService;
@Resource
private SecurityFrameworkService securityFrameworkService;
@Override
@Transactional
public OAuth2AccessTokenDO createAccessToken(Long userId, Integer userType, String clientId, List<String> scopes,Boolean large, Integer dbNo, Integer tableNo, String dataCode, Long organId, String nickname) {
@@ -140,7 +144,7 @@ public class OAuth2TokenServiceImpl implements OAuth2TokenService {
.setExpiresTime(LocalDateTime.now().plusSeconds(clientDO.getAccessTokenValiditySeconds()))
.setLarge(refreshTokenDO.getLarge()).setDbNo(refreshTokenDO.getDbNo()).setTableNo(refreshTokenDO.getTableNo())
.setDataCode(refreshTokenDO.getDataCode()).setOrganId(refreshTokenDO.getOrganId())
.setNickname(refreshTokenDO.getNickname())
.setNickname(refreshTokenDO.getNickname()).setIsSupAdmin(refreshTokenDO.getIsSupAdmin())
;
//accessTokenDO.setOrganId(OrganContextHolder.getOrganId()); // 手动设置组织编号,避免缓存到 Redis 的时候,无对应的组织编号
oauth2AccessTokenMapper.insert(accessTokenDO);
@@ -157,6 +161,8 @@ public class OAuth2TokenServiceImpl implements OAuth2TokenService {
.setLarge(large).setDbNo(dbNo).setTableNo(tableNo).setDataCode(dataCode)
.setOrganId(organId).setNickname(nickname)
;
boolean b = securityFrameworkService.hasAnyRoles(userId,"super_admin");
refreshToken.setIsSupAdmin(b);
oauth2RefreshTokenMapper.insert(refreshToken);
return refreshToken;
}
@@ -5,7 +5,6 @@ import com.cf.imes.module.system.controller.admin.process.vo.group.ProcessGroupP
import com.cf.imes.module.system.controller.admin.process.vo.group.ProcessGroupSaveReqVO;
import com.cf.imes.module.system.controller.admin.process.vo.group.ProcessListSaveReqVO;
import com.cf.imes.module.system.controller.admin.process.vo.process.ProcessRespVO;
import com.cf.imes.module.system.dal.dataobject.process.ProcessDO;
import com.cf.imes.module.system.dal.mysql.process.ProcessMapper;
import org.jetbrains.annotations.NotNull;
import org.springframework.stereotype.Service;
@@ -198,7 +198,7 @@ public interface AdminUserService {
* @param isUpdateSupport 是否支持更新
* @return 导入结果
*/
UserImportRespVO importUserList(List<UserImportExcelVO> importUsers, boolean isUpdateSupport);
UserImportRespVO importUserList(List<UserImportExcelVO> importUsers, boolean isUpdateSupport, Long organId);
/**
* 获得指定状态的用户们
@@ -107,7 +107,7 @@ public class AdminUserServiceImpl implements AdminUserService {
// 插入用户
AdminUserDO user = BeanUtils.toBean(createReqVO, AdminUserDO.class);
user.setOrganId(createReqVO.getOrganId());
user.setStatus(CommonStatusEnum.ENABLE.getStatus()); // 默认开启
//user.setStatus(CommonStatusEnum.ENABLE.getStatus()); // 默认开启
user.setPassword(encodePassword(createReqVO.getPassword())); // 加密密码
String pinyinFull = PinYinUtils.convertToPinyin(user.getNickname());
@@ -128,10 +128,11 @@ public class AdminUserServiceImpl implements AdminUserService {
@Override
@Transactional(rollbackFor = Exception.class)
public void updateUser(UserSaveReqVO updateReqVO) {
Long organId = updateReqVO.getOrganId() == null ? OrganContextHolder.getOrganId(): updateReqVO.getOrganId();
updateReqVO.setPassword(null); // 特殊:此处不更新密码
// 校验正确性
validateUserForCreateOrUpdate(updateReqVO.getId(), updateReqVO.getUsername(),
updateReqVO.getMobile(), updateReqVO.getEmail(), updateReqVO.getDeptId(), updateReqVO.getPostIds(), updateReqVO.getOrganId());
updateReqVO.getMobile(), updateReqVO.getEmail(), updateReqVO.getDeptId(), updateReqVO.getPostIds(), organId);
// 更新用户
AdminUserDO updateObj = BeanUtils.toBean(updateReqVO, AdminUserDO.class);
@@ -174,10 +175,11 @@ public class AdminUserServiceImpl implements AdminUserService {
@Override
public void updateUserProfile(Long id, UserProfileUpdateReqVO reqVO) {
Long organId = reqVO.getOrganId() == null ? OrganContextHolder.getOrganId() : reqVO.getOrganId();
// 校验正确性
validateUserExists(id);
validateEmailUnique(id, reqVO.getEmail());
validateMobileUnique(id, reqVO.getMobile());
validateEmailUnique(id, reqVO.getEmail(), organId);
validateMobileUnique(id, reqVO.getMobile(), organId);
// 执行更新
userMapper.updateById(BeanUtils.toBean(reqVO, AdminUserDO.class).setId(id));
}
@@ -356,9 +358,9 @@ public class AdminUserServiceImpl implements AdminUserService {
// 校验用户名唯一
validateUsernameUnique(id, username, organId);
// 校验手机号唯一
validateMobileUnique(id, mobile);
validateMobileUnique(id, mobile, organId);
// 校验邮箱唯一
validateEmailUnique(id, email);
validateEmailUnique(id, email, organId);
// 校验部门处于开启状态
deptService.validateDeptList(CollectionUtils.singleton(deptId));
// 校验岗位处于开启状态
@@ -397,11 +399,11 @@ public class AdminUserServiceImpl implements AdminUserService {
}
@VisibleForTesting
void validateEmailUnique(Long id, String email) {
void validateEmailUnique(Long id, String email, Long organId) {
if (StrUtil.isBlank(email)) {
return;
}
AdminUserDO user = userMapper.selectByEmail(email);
AdminUserDO user = userMapper.selectOne(AdminUserDO::getOrganId, organId, AdminUserDO::getEmail, email);
if (user == null) {
return;
}
@@ -415,11 +417,11 @@ public class AdminUserServiceImpl implements AdminUserService {
}
@VisibleForTesting
void validateMobileUnique(Long id, String mobile) {
void validateMobileUnique(Long id, String mobile, Long organId) {
if (StrUtil.isBlank(mobile)) {
return;
}
AdminUserDO user = userMapper.selectByMobile(mobile);
AdminUserDO user = userMapper.selectOne(AdminUserDO::getOrganId, organId, AdminUserDO::getMobile, mobile);
if (user == null) {
return;
}
@@ -451,7 +453,7 @@ public class AdminUserServiceImpl implements AdminUserService {
@Override
@Transactional(rollbackFor = Exception.class) // 添加事务,异常则回滚所有导入
public UserImportRespVO importUserList(List<UserImportExcelVO> importUsers, boolean isUpdateSupport) {
public UserImportRespVO importUserList(List<UserImportExcelVO> importUsers, boolean isUpdateSupport, Long organId) {
if (CollUtil.isEmpty(importUsers)) {
throw ServiceExceptionUtil.exception(ErrorCodeConstants.USER_IMPORT_LIST_IS_EMPTY);
}
@@ -461,12 +463,11 @@ public class AdminUserServiceImpl implements AdminUserService {
// 校验,判断是否有不符合的原因
try {
validateUserForCreateOrUpdate(null, null, importUser.getMobile(), importUser.getEmail(),
importUser.getDeptId(), null, null);
importUser.getDeptId(), null, organId);
} catch (ServiceException ex) {
respVO.getFailureUsernames().put(importUser.getUsername(), ex.getMessage());
return;
}
Long organId = SecurityFrameworkUtils.getLoginUser().getOrganId();
// 判断如果不存在,在进行插入
AdminUserDO existUser = userMapper.selectByUsername(importUser.getUsername(), organId);
if (existUser == null) {
@@ -158,6 +158,7 @@ chenfeng:
- /admin-api/system/machine-template/*
- /admin-api/system/data-source/*
- /admin-api/system/auth/login
- /admin-api/system/auth/logout
- /rpc-api/**
#- /admin-api/system/**
#- /rpc-api/system/organ/valid # 防止递归。避免调用 /rpc-api/system/organ/valid 接口时,又去触发 /rpc-api/system/organ/valid 去校验