executor模块查询新增组织ID,删除排单接口逻辑修改

This commit is contained in:
liuzhaotian
2024-06-14 15:46:25 +08:00
parent e8e2052be6
commit 350c6c940a
41 changed files with 350 additions and 360 deletions
@@ -114,4 +114,22 @@ public class ProcessController {
BeanUtils.toBean(list, ProcessRespVO.class));
}
@GetMapping("/select")
@Operation(summary = "查看当前登录用户的组织的工序信息")
@Parameter(name = "userId", description = "当前登录的用户ID", required = true, example = "1")
@PreAuthorize("@ss.hasPermission('manage:process:select')")
public CommonResult<List<ProcessDO>> getUserPage(@Valid @RequestParam("userId") Long userId) {
return success(processService.getUserProcess(userId));
}
}
@@ -4,8 +4,10 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
import com.cf.imes.framework.common.pojo.PageResult;
import com.cf.imes.framework.mybatis.core.query.LambdaQueryWrapperX;
import com.cf.imes.framework.mybatis.core.mapper.BaseMapperX;
import com.cf.imes.framework.mybatis.core.query.MPJLambdaWrapperX;
import com.cf.imes.module.system.controller.admin.process.vo.process.ProcessPageReqVO;
import com.cf.imes.module.system.dal.dataobject.process.ProcessDO;
import com.cf.imes.module.system.dal.dataobject.process.ProcessUserDO;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
@@ -50,4 +52,16 @@ public interface ProcessMapper extends BaseMapperX<ProcessDO> {
}
int deleteById(@Param("id") Long id);
default List<ProcessDO> selectProcessList(Long organId,Long userId) {
return selectJoinList(ProcessDO.class, new MPJLambdaWrapperX<ProcessDO>()
.leftJoin(ProcessUserDO.class, ProcessUserDO::getProcessId, ProcessDO::getId)
.eq(ProcessUserDO::getUserId, userId)
.eq(ProcessDO::getOrganId, organId)
.eq(ProcessDO::getIsEnabled,true)
.selectAll(ProcessDO.class)
.orderByDesc(ProcessDO::getId));
}
}
@@ -51,8 +51,9 @@ public class OAuth2TokenServiceImpl implements OAuth2TokenService {
@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) {
OAuth2ClientDO clientDO = oauth2ClientService.validOAuthClientFromCache(clientId);
// 创建刷新令牌
OAuth2RefreshTokenDO refreshTokenDO = createOAuth2RefreshToken(userId, userType, clientDO, scopes, large, dbNo, tableNo, dataCode, organId, nickname);
// 填入访问令牌包含的字段
OAuth2AccessTokenDO refreshTokenDO = createOAuth2ReToken(userId, userType, clientDO, scopes, large, dbNo, tableNo, dataCode, organId, nickname);
// 创建访问令牌
return createOAuth2AccessToken(refreshTokenDO, clientDO);
}
@@ -84,25 +85,34 @@ public class OAuth2TokenServiceImpl implements OAuth2TokenService {
throw exception0(GlobalErrorCodeConstants.UNAUTHORIZED.getCode(), "刷新令牌已过期");
}
// 创建访问令牌
return createOAuth2AccessToken(refreshTokenDO, clientDO);
// // 创建访问令牌
// return createOAuth2AccessToken(refreshTokenDO, clientDO);
return null;
}
@Override
public OAuth2AccessTokenDO getAccessToken(String accessToken) {
// 优先从 Redis 中获取
OAuth2AccessTokenDO accessTokenDO = oauth2AccessTokenRedisDAO.get(accessToken);
if (accessTokenDO != null) {
return accessTokenDO;
}
// // 优先从 Redis 中获取
// OAuth2AccessTokenDO accessTokenDO = oauth2AccessTokenRedisDAO.get(accessToken);
// if (accessTokenDO != null) {
// return accessTokenDO;
// }
//
// // 获取不到,从 MySQL 中获取
// accessTokenDO = oauth2AccessTokenMapper.selectByAccessToken(accessToken);
// // 如果在 MySQL 存在,则往 Redis 中写入
// if (accessTokenDO != null && !DateUtils.isExpired(accessTokenDO.getExpiresTime())) {
// oauth2AccessTokenRedisDAO.set(accessTokenDO);
// }
// 因数据库不在存入缓存数据,所以直接从缓存中获取
// 获取不到,从 MySQL 中获取
accessTokenDO = oauth2AccessTokenMapper.selectByAccessToken(accessToken);
// 如果在 MySQL 存在,则往 Redis 中写入
if (accessTokenDO != null && !DateUtils.isExpired(accessTokenDO.getExpiresTime())) {
oauth2AccessTokenRedisDAO.set(accessTokenDO);
}
return accessTokenDO;
// 数据库移除令牌存入,所以直接从缓存中获取
OAuth2AccessTokenDO accessTokenDO = oauth2AccessTokenRedisDAO.get(accessToken);
// 有令牌的校验,代表有接口访问,延长令牌的过期时间(30分钟)
oauth2AccessTokenRedisDAO.set(accessTokenDO.setExpiresTime(LocalDateTime.now().plusSeconds(1800)));
return oauth2AccessTokenRedisDAO.get(accessToken);
}
@Override
@@ -136,7 +146,24 @@ public class OAuth2TokenServiceImpl implements OAuth2TokenService {
return oauth2AccessTokenMapper.selectPage(reqVO);
}
private OAuth2AccessTokenDO createOAuth2AccessToken(OAuth2RefreshTokenDO refreshTokenDO, OAuth2ClientDO clientDO) {
// 填入访问令牌包含的字段
private OAuth2AccessTokenDO createOAuth2ReToken(Long userId, Integer userType, OAuth2ClientDO clientDO, List<String> scopes, Boolean large, Integer dbNo, Integer tableNo, String dataCode, Long organId, String nickname) {
OAuth2AccessTokenDO refreshToken = new OAuth2AccessTokenDO().setRefreshToken(generateRefreshToken())
.setUserId(userId).setUserType(userType)
.setClientId(clientDO.getClientId()).setScopes(scopes)
.setExpiresTime(LocalDateTime.now().plusSeconds(clientDO.getRefreshTokenValiditySeconds()))
.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;
}
// 在Redis中新增Token,除去刷新Token字段
private OAuth2AccessTokenDO createOAuth2AccessToken(OAuth2AccessTokenDO refreshTokenDO, OAuth2ClientDO clientDO) {
OAuth2AccessTokenDO accessTokenDO = new OAuth2AccessTokenDO().setAccessToken(generateAccessToken())
.setUserId(refreshTokenDO.getUserId()).setUserType(refreshTokenDO.getUserType())
.setClientId(clientDO.getClientId()).setScopes(refreshTokenDO.getScopes())
@@ -147,25 +174,13 @@ public class OAuth2TokenServiceImpl implements OAuth2TokenService {
.setNickname(refreshTokenDO.getNickname()).setIsSupAdmin(refreshTokenDO.getIsSupAdmin())
;
//accessTokenDO.setOrganId(OrganContextHolder.getOrganId()); // 手动设置组织编号,避免缓存到 Redis 的时候,无对应的组织编号
oauth2AccessTokenMapper.insert(accessTokenDO);
// oauth2AccessTokenMapper.insert(accessTokenDO);
// 记录到 Redis 中
oauth2AccessTokenRedisDAO.set(accessTokenDO);
return accessTokenDO;
}
private OAuth2RefreshTokenDO createOAuth2RefreshToken(Long userId, Integer userType, OAuth2ClientDO clientDO, List<String> scopes, Boolean large, Integer dbNo, Integer tableNo, String dataCode, Long organId, String nickname) {
OAuth2RefreshTokenDO refreshToken = new OAuth2RefreshTokenDO().setRefreshToken(generateRefreshToken())
.setUserId(userId).setUserType(userType)
.setClientId(clientDO.getClientId()).setScopes(scopes)
.setExpiresTime(LocalDateTime.now().plusSeconds(clientDO.getRefreshTokenValiditySeconds()))
.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;
}
private static String generateAccessToken() {
return IdUtil.fastSimpleUUID();
@@ -67,4 +67,5 @@ public interface ProcessService {
*/
List<ProcessDO> getAllProcess();
List<ProcessDO> getUserProcess(Long userId);
}
@@ -189,4 +189,13 @@ public class ProcessServiceImpl implements ProcessService {
}
@Override
public List<ProcessDO> getUserProcess(Long userId) {
// 获取组织id
Long organId = OrganContextHolder.getOrganId();
return processMapper.selectProcessList(organId,userId);
}
}