修改权限逻辑
This commit is contained in:
4
pom.xml
4
pom.xml
@ -71,7 +71,7 @@
|
|||||||
<properties>
|
<properties>
|
||||||
<!-- 环境标识,需要与配置文件的名称相对应 -->
|
<!-- 环境标识,需要与配置文件的名称相对应 -->
|
||||||
<profiles.active>dev</profiles.active>
|
<profiles.active>dev</profiles.active>
|
||||||
<nacos.server>127.0.0.1:8848</nacos.server>
|
<nacos.server>192.168.110.209:18848</nacos.server>
|
||||||
<nacos.discovery.group>DEFAULT_GROUP</nacos.discovery.group>
|
<nacos.discovery.group>DEFAULT_GROUP</nacos.discovery.group>
|
||||||
<nacos.config.group>DEFAULT_GROUP</nacos.config.group>
|
<nacos.config.group>DEFAULT_GROUP</nacos.config.group>
|
||||||
<nacos.username>nacos</nacos.username>
|
<nacos.username>nacos</nacos.username>
|
||||||
@ -87,7 +87,7 @@
|
|||||||
<id>prod</id>
|
<id>prod</id>
|
||||||
<properties>
|
<properties>
|
||||||
<profiles.active>prod</profiles.active>
|
<profiles.active>prod</profiles.active>
|
||||||
<nacos.server>127.0.0.1:8848</nacos.server>
|
<nacos.server>192.168.110.2:18848</nacos.server>
|
||||||
<nacos.discovery.group>DEFAULT_GROUP</nacos.discovery.group>
|
<nacos.discovery.group>DEFAULT_GROUP</nacos.discovery.group>
|
||||||
<nacos.config.group>DEFAULT_GROUP</nacos.config.group>
|
<nacos.config.group>DEFAULT_GROUP</nacos.config.group>
|
||||||
<nacos.username>nacos</nacos.username>
|
<nacos.username>nacos</nacos.username>
|
||||||
|
|||||||
@ -1,6 +1,9 @@
|
|||||||
package org.dromara.system.api;
|
package org.dromara.system.api;
|
||||||
|
|
||||||
import java.util.Set;
|
import org.dromara.common.core.domain.vo.SysProjectRoleMenuVo;
|
||||||
|
import org.dromara.common.core.domain.vo.SysProjectRolePermissionVo;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 用户权限处理
|
* 用户权限处理
|
||||||
@ -12,17 +15,17 @@ public interface RemotePermissionService {
|
|||||||
/**
|
/**
|
||||||
* 获取角色数据权限
|
* 获取角色数据权限
|
||||||
*
|
*
|
||||||
* @param userId 用户id
|
* @param userId 用户id
|
||||||
* @return 角色权限信息
|
* @return 角色权限信息
|
||||||
*/
|
*/
|
||||||
Set<String> getRolePermission(Long userId);
|
List<SysProjectRolePermissionVo> getRolePermission(Long userId);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 获取菜单数据权限
|
* 获取菜单数据权限
|
||||||
*
|
*
|
||||||
* @param userId 用户id
|
* @param userId 用户id
|
||||||
* @return 菜单权限信息
|
* @return 菜单权限信息
|
||||||
*/
|
*/
|
||||||
Set<String> getMenuPermission(Long userId);
|
List<SysProjectRoleMenuVo> getMenuPermission(Long userId);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@ -0,0 +1,17 @@
|
|||||||
|
package org.dromara.system.api;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author lilemy
|
||||||
|
* @date 2025-09-10 16:15
|
||||||
|
*/
|
||||||
|
public interface RemoteProjectService {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 通过项目ID查询项目名称
|
||||||
|
*
|
||||||
|
* @param projectId 项目ID
|
||||||
|
* @return 项目名称
|
||||||
|
*/
|
||||||
|
String selectProjectNameById(Long projectId);
|
||||||
|
|
||||||
|
}
|
||||||
@ -2,11 +2,12 @@ package org.dromara.system.api.model;
|
|||||||
|
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
import lombok.NoArgsConstructor;
|
import lombok.NoArgsConstructor;
|
||||||
|
import org.dromara.common.core.domain.vo.SysProjectRoleMenuVo;
|
||||||
|
import org.dromara.common.core.domain.vo.SysProjectRolePermissionVo;
|
||||||
|
|
||||||
import java.io.Serial;
|
import java.io.Serial;
|
||||||
import java.io.Serializable;
|
import java.io.Serializable;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Set;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 用户信息
|
* 用户信息
|
||||||
@ -35,6 +36,11 @@ public class LoginUser implements Serializable {
|
|||||||
*/
|
*/
|
||||||
private Long deptId;
|
private Long deptId;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 项目ID
|
||||||
|
*/
|
||||||
|
private Long projectId;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 部门类别编码
|
* 部门类别编码
|
||||||
*/
|
*/
|
||||||
@ -88,12 +94,12 @@ public class LoginUser implements Serializable {
|
|||||||
/**
|
/**
|
||||||
* 菜单权限
|
* 菜单权限
|
||||||
*/
|
*/
|
||||||
private Set<String> menuPermission;
|
private List<SysProjectRoleMenuVo> menuPermission;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 角色权限
|
* 角色权限
|
||||||
*/
|
*/
|
||||||
private Set<String> rolePermission;
|
private List<SysProjectRolePermissionVo> rolePermission;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 用户名
|
* 用户名
|
||||||
|
|||||||
@ -45,7 +45,6 @@ import java.util.HashMap;
|
|||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import java.util.concurrent.ScheduledExecutorService;
|
import java.util.concurrent.ScheduledExecutorService;
|
||||||
import java.util.concurrent.TimeUnit;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* token 控制
|
* token 控制
|
||||||
@ -99,11 +98,6 @@ public class TokenController {
|
|||||||
sysLoginService.checkTenant(loginBody.getTenantId());
|
sysLoginService.checkTenant(loginBody.getTenantId());
|
||||||
// 登录
|
// 登录
|
||||||
LoginVo loginVo = IAuthStrategy.login(body, clientVo, grantType);
|
LoginVo loginVo = IAuthStrategy.login(body, clientVo, grantType);
|
||||||
|
|
||||||
Long userId = LoginHelper.getUserId();
|
|
||||||
scheduledExecutorService.schedule(() -> {
|
|
||||||
remoteMessageService.publishMessage(List.of(userId), "欢迎登录RuoYi-Cloud-Plus微服务管理系统");
|
|
||||||
}, 5, TimeUnit.SECONDS);
|
|
||||||
return R.ok(loginVo);
|
return R.ok(loginVo);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -137,7 +137,12 @@ public class SysLoginService {
|
|||||||
String password = registerBody.getPassword();
|
String password = registerBody.getPassword();
|
||||||
// 校验用户类型是否存在
|
// 校验用户类型是否存在
|
||||||
String userType = UserType.getUserType(registerBody.getUserType()).getUserType();
|
String userType = UserType.getUserType(registerBody.getUserType()).getUserType();
|
||||||
|
// 校验密码是否符合要求
|
||||||
|
String pattern = "^(?!.*\\s)(?!^[a-zA-Z]+$)(?!^[0-9]+$)(?!^[^a-zA-Z0-9]+$)(?!^[a-zA-Z0-9]+$).{8,18}$";
|
||||||
|
boolean isValid = password.matches(pattern);
|
||||||
|
if (!isValid) {
|
||||||
|
throw new UserException("注册失败,密码需满足8–18位,包含大小写字母、数字、特殊字符中的至少三种组合");
|
||||||
|
}
|
||||||
boolean captchaEnabled = captchaProperties.getEnabled();
|
boolean captchaEnabled = captchaProperties.getEnabled();
|
||||||
// 验证码开关
|
// 验证码开关
|
||||||
if (captchaEnabled) {
|
if (captchaEnabled) {
|
||||||
|
|||||||
@ -1,8 +1,8 @@
|
|||||||
package org.dromara.auth.service.impl;
|
package org.dromara.auth.service.impl;
|
||||||
|
|
||||||
import cn.hutool.crypto.digest.BCrypt;
|
|
||||||
import cn.dev33.satoken.stp.StpUtil;
|
import cn.dev33.satoken.stp.StpUtil;
|
||||||
import cn.dev33.satoken.stp.parameter.SaLoginParameter;
|
import cn.dev33.satoken.stp.parameter.SaLoginParameter;
|
||||||
|
import cn.hutool.crypto.digest.BCrypt;
|
||||||
import lombok.RequiredArgsConstructor;
|
import lombok.RequiredArgsConstructor;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import org.apache.dubbo.config.annotation.DubboReference;
|
import org.apache.dubbo.config.annotation.DubboReference;
|
||||||
@ -23,6 +23,7 @@ import org.dromara.common.json.utils.JsonUtils;
|
|||||||
import org.dromara.common.redis.utils.RedisUtils;
|
import org.dromara.common.redis.utils.RedisUtils;
|
||||||
import org.dromara.common.satoken.utils.LoginHelper;
|
import org.dromara.common.satoken.utils.LoginHelper;
|
||||||
import org.dromara.common.tenant.helper.TenantHelper;
|
import org.dromara.common.tenant.helper.TenantHelper;
|
||||||
|
import org.dromara.system.api.RemoteProjectService;
|
||||||
import org.dromara.system.api.RemoteUserService;
|
import org.dromara.system.api.RemoteUserService;
|
||||||
import org.dromara.system.api.domain.vo.RemoteClientVo;
|
import org.dromara.system.api.domain.vo.RemoteClientVo;
|
||||||
import org.dromara.system.api.model.LoginUser;
|
import org.dromara.system.api.model.LoginUser;
|
||||||
@ -45,6 +46,9 @@ public class PasswordAuthStrategy implements IAuthStrategy {
|
|||||||
@DubboReference
|
@DubboReference
|
||||||
private RemoteUserService remoteUserService;
|
private RemoteUserService remoteUserService;
|
||||||
|
|
||||||
|
@DubboReference
|
||||||
|
private RemoteProjectService remoteProjectService;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public LoginVo login(String body, RemoteClientVo client) {
|
public LoginVo login(String body, RemoteClientVo client) {
|
||||||
PasswordLoginBody loginBody = JsonUtils.parseObject(body, PasswordLoginBody.class);
|
PasswordLoginBody loginBody = JsonUtils.parseObject(body, PasswordLoginBody.class);
|
||||||
|
|||||||
@ -1,6 +1,6 @@
|
|||||||
# Tomcat
|
# Tomcat
|
||||||
server:
|
server:
|
||||||
port: 9210
|
port: 19210
|
||||||
|
|
||||||
# Spring
|
# Spring
|
||||||
spring:
|
spring:
|
||||||
|
|||||||
@ -86,4 +86,9 @@ public interface CacheNames {
|
|||||||
*/
|
*/
|
||||||
String ONLINE_TOKEN = "online_tokens";
|
String ONLINE_TOKEN = "online_tokens";
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 项目名称
|
||||||
|
*/
|
||||||
|
String PROJECT_NAME = "project_name#30d";
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@ -0,0 +1,29 @@
|
|||||||
|
package org.dromara.common.core.domain.vo;
|
||||||
|
|
||||||
|
import lombok.AllArgsConstructor;
|
||||||
|
import lombok.Data;
|
||||||
|
import lombok.NoArgsConstructor;
|
||||||
|
|
||||||
|
import java.io.Serializable;
|
||||||
|
import java.util.Set;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author lilemy
|
||||||
|
* @date 2025-08-27 18:14
|
||||||
|
*/
|
||||||
|
@Data
|
||||||
|
@NoArgsConstructor
|
||||||
|
@AllArgsConstructor
|
||||||
|
public class SysProjectRoleMenuVo implements Serializable {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 项目id
|
||||||
|
*/
|
||||||
|
private Long projectId;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 项目菜单权限
|
||||||
|
*/
|
||||||
|
private Set<String> projectPermissions;
|
||||||
|
|
||||||
|
}
|
||||||
@ -0,0 +1,28 @@
|
|||||||
|
package org.dromara.common.core.domain.vo;
|
||||||
|
|
||||||
|
import lombok.Data;
|
||||||
|
|
||||||
|
import java.io.Serial;
|
||||||
|
import java.io.Serializable;
|
||||||
|
import java.util.Set;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author lilemy
|
||||||
|
* @date 2025-08-27 17:53
|
||||||
|
*/
|
||||||
|
@Data
|
||||||
|
public class SysProjectRolePermissionVo implements Serializable {
|
||||||
|
|
||||||
|
@Serial
|
||||||
|
private static final long serialVersionUID = -6552769878716622338L;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 项目id
|
||||||
|
*/
|
||||||
|
private Long projectId;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 项目菜单权限
|
||||||
|
*/
|
||||||
|
private Set<String> projectRoles;
|
||||||
|
}
|
||||||
@ -1,6 +1,9 @@
|
|||||||
package org.dromara.common.core.service;
|
package org.dromara.common.core.service;
|
||||||
|
|
||||||
import java.util.Set;
|
import org.dromara.common.core.domain.vo.SysProjectRoleMenuVo;
|
||||||
|
import org.dromara.common.core.domain.vo.SysProjectRolePermissionVo;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 用户权限处理
|
* 用户权限处理
|
||||||
@ -12,17 +15,17 @@ public interface PermissionService {
|
|||||||
/**
|
/**
|
||||||
* 获取角色数据权限
|
* 获取角色数据权限
|
||||||
*
|
*
|
||||||
* @param userId 用户id
|
* @param userId 用户id
|
||||||
* @return 角色权限信息
|
* @return 角色权限信息
|
||||||
*/
|
*/
|
||||||
Set<String> getRolePermission(Long userId);
|
List<SysProjectRolePermissionVo> getRolePermission(Long userId);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 获取菜单数据权限
|
* 获取菜单数据权限
|
||||||
*
|
*
|
||||||
* @param userId 用户id
|
* @param userId 用户id
|
||||||
* @return 菜单权限信息
|
* @return 菜单权限信息
|
||||||
*/
|
*/
|
||||||
Set<String> getMenuPermission(Long userId);
|
List<SysProjectRoleMenuVo> getMenuPermission(Long userId);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1,7 +1,10 @@
|
|||||||
package org.dromara.common.satoken.core.service;
|
package org.dromara.common.satoken.core.service;
|
||||||
|
|
||||||
import cn.dev33.satoken.stp.StpInterface;
|
import cn.dev33.satoken.stp.StpInterface;
|
||||||
|
import cn.hutool.core.collection.CollUtil;
|
||||||
import cn.hutool.core.util.ObjectUtil;
|
import cn.hutool.core.util.ObjectUtil;
|
||||||
|
import org.dromara.common.core.domain.vo.SysProjectRoleMenuVo;
|
||||||
|
import org.dromara.common.core.domain.vo.SysProjectRolePermissionVo;
|
||||||
import org.dromara.common.core.enums.UserType;
|
import org.dromara.common.core.enums.UserType;
|
||||||
import org.dromara.common.core.exception.ServiceException;
|
import org.dromara.common.core.exception.ServiceException;
|
||||||
import org.dromara.common.core.service.PermissionService;
|
import org.dromara.common.core.service.PermissionService;
|
||||||
@ -12,6 +15,9 @@ import org.dromara.system.api.model.LoginUser;
|
|||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
import java.util.Map;
|
||||||
|
import java.util.Set;
|
||||||
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* sa-token 权限管理实现类
|
* sa-token 权限管理实现类
|
||||||
@ -30,17 +36,21 @@ public class SaPermissionImpl implements StpInterface {
|
|||||||
PermissionService permissionService = getPermissionService();
|
PermissionService permissionService = getPermissionService();
|
||||||
if (ObjectUtil.isNotNull(permissionService)) {
|
if (ObjectUtil.isNotNull(permissionService)) {
|
||||||
List<String> list = StringUtils.splitList(loginId.toString(), ":");
|
List<String> list = StringUtils.splitList(loginId.toString(), ":");
|
||||||
return new ArrayList<>(permissionService.getMenuPermission(Long.parseLong(list.get(1))));
|
return getPermissionListByProjectId(permissionService.getMenuPermission(Long.parseLong(list.get(1))), null);
|
||||||
} else {
|
} else {
|
||||||
throw new ServiceException("PermissionService 实现类不存在");
|
throw new ServiceException("PermissionService 实现类不存在");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
UserType userType = UserType.getUserType(loginUser.getUserType());
|
UserType userType = UserType.getUserType(loginUser.getUserType());
|
||||||
if (userType == UserType.APP_USER) {
|
// 系统用户
|
||||||
|
if (userType == UserType.SYS_USER) {
|
||||||
|
Long projectId = loginUser.getProjectId();
|
||||||
|
List<SysProjectRoleMenuVo> menuPermission = loginUser.getMenuPermission();
|
||||||
|
return getPermissionListByProjectId(menuPermission, projectId);
|
||||||
|
} else if (userType == UserType.APP_USER) {
|
||||||
// 其他端 自行根据业务编写
|
// 其他端 自行根据业务编写
|
||||||
}
|
}
|
||||||
// SYS_USER 默认返回权限
|
return new ArrayList<>();
|
||||||
return new ArrayList<>(loginUser.getMenuPermission());
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -53,17 +63,21 @@ public class SaPermissionImpl implements StpInterface {
|
|||||||
PermissionService permissionService = getPermissionService();
|
PermissionService permissionService = getPermissionService();
|
||||||
if (ObjectUtil.isNotNull(permissionService)) {
|
if (ObjectUtil.isNotNull(permissionService)) {
|
||||||
List<String> list = StringUtils.splitList(loginId.toString(), ":");
|
List<String> list = StringUtils.splitList(loginId.toString(), ":");
|
||||||
return new ArrayList<>(permissionService.getRolePermission(Long.parseLong(list.get(1))));
|
return getRoleListByProjectId(permissionService.getRolePermission(Long.parseLong(list.get(1))), null);
|
||||||
} else {
|
} else {
|
||||||
throw new ServiceException("PermissionService 实现类不存在");
|
throw new ServiceException("PermissionService 实现类不存在");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
UserType userType = UserType.getUserType(loginUser.getUserType());
|
UserType userType = UserType.getUserType(loginUser.getUserType());
|
||||||
if (userType == UserType.APP_USER) {
|
// 系统用户
|
||||||
|
if (userType == UserType.SYS_USER) {
|
||||||
|
Long projectId = loginUser.getProjectId();
|
||||||
|
List<SysProjectRolePermissionVo> rolePermission = loginUser.getRolePermission();
|
||||||
|
return getRoleListByProjectId(rolePermission, projectId);
|
||||||
|
} else if (userType == UserType.APP_USER) {
|
||||||
// 其他端 自行根据业务编写
|
// 其他端 自行根据业务编写
|
||||||
}
|
}
|
||||||
// SYS_USER 默认返回权限
|
return new ArrayList<>();
|
||||||
return new ArrayList<>(loginUser.getRolePermission());
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private PermissionService getPermissionService() {
|
private PermissionService getPermissionService() {
|
||||||
@ -74,4 +88,60 @@ public class SaPermissionImpl implements StpInterface {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获取菜单权限列表
|
||||||
|
*
|
||||||
|
* @param menuPermission 菜单权限
|
||||||
|
* @param projectId 当前用户所在项目id
|
||||||
|
* @return 菜单权限列表
|
||||||
|
*/
|
||||||
|
private List<String> getPermissionListByProjectId(List<SysProjectRoleMenuVo> menuPermission, Long projectId) {
|
||||||
|
if (CollUtil.isNotEmpty(menuPermission)) {
|
||||||
|
if (projectId != null) {
|
||||||
|
Map<Long, List<SysProjectRoleMenuVo>> map = menuPermission.stream()
|
||||||
|
.collect(Collectors.groupingBy(SysProjectRoleMenuVo::getProjectId));
|
||||||
|
if (map.containsKey(projectId)) {
|
||||||
|
return map.get(projectId).stream()
|
||||||
|
.map(SysProjectRoleMenuVo::getProjectPermissions)
|
||||||
|
.flatMap(Set::stream)
|
||||||
|
.filter(s -> !s.isEmpty())
|
||||||
|
.distinct()
|
||||||
|
.toList();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
List<Set<String>> setList = menuPermission.stream().map(SysProjectRoleMenuVo::getProjectPermissions).toList();
|
||||||
|
return setList.stream().flatMap(Set::stream).filter(s -> !s.isEmpty()).distinct().toList();
|
||||||
|
} else {
|
||||||
|
return new ArrayList<>();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获取角色权限列表
|
||||||
|
*
|
||||||
|
* @param rolePermission 角色权限
|
||||||
|
* @param projectId 当前用户所在项目id
|
||||||
|
* @return 角色权限列表
|
||||||
|
*/
|
||||||
|
private List<String> getRoleListByProjectId(List<SysProjectRolePermissionVo> rolePermission, Long projectId) {
|
||||||
|
if (CollUtil.isNotEmpty(rolePermission)) {
|
||||||
|
if (projectId != null) {
|
||||||
|
Map<Long, List<SysProjectRolePermissionVo>> map = rolePermission.stream()
|
||||||
|
.collect(Collectors.groupingBy(SysProjectRolePermissionVo::getProjectId));
|
||||||
|
if (map.containsKey(projectId)) {
|
||||||
|
return map.get(projectId).stream()
|
||||||
|
.map(SysProjectRolePermissionVo::getProjectRoles)
|
||||||
|
.flatMap(Set::stream)
|
||||||
|
.filter(s -> !s.isEmpty())
|
||||||
|
.distinct()
|
||||||
|
.toList();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
List<Set<String>> list = rolePermission.stream().map(SysProjectRolePermissionVo::getProjectRoles).toList();
|
||||||
|
return list.stream().flatMap(Set::stream).filter(s -> !s.isEmpty()).distinct().toList();
|
||||||
|
} else {
|
||||||
|
return new ArrayList<>();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@ -10,9 +10,11 @@ import lombok.AccessLevel;
|
|||||||
import lombok.NoArgsConstructor;
|
import lombok.NoArgsConstructor;
|
||||||
import org.dromara.common.core.constant.SystemConstants;
|
import org.dromara.common.core.constant.SystemConstants;
|
||||||
import org.dromara.common.core.constant.TenantConstants;
|
import org.dromara.common.core.constant.TenantConstants;
|
||||||
|
import org.dromara.common.core.domain.vo.SysProjectRolePermissionVo;
|
||||||
import org.dromara.common.core.enums.UserType;
|
import org.dromara.common.core.enums.UserType;
|
||||||
import org.dromara.system.api.model.LoginUser;
|
import org.dromara.system.api.model.LoginUser;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -38,6 +40,7 @@ public class LoginHelper {
|
|||||||
public static final String DEPT_NAME_KEY = "deptName";
|
public static final String DEPT_NAME_KEY = "deptName";
|
||||||
public static final String DEPT_CATEGORY_KEY = "deptCategory";
|
public static final String DEPT_CATEGORY_KEY = "deptCategory";
|
||||||
public static final String CLIENT_KEY = "clientid";
|
public static final String CLIENT_KEY = "clientid";
|
||||||
|
public static final String PROJECT_KEY = "projectId";
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 登录系统 基于 设备类型
|
* 登录系统 基于 设备类型
|
||||||
@ -55,6 +58,7 @@ public class LoginHelper {
|
|||||||
.setExtra(DEPT_KEY, loginUser.getDeptId())
|
.setExtra(DEPT_KEY, loginUser.getDeptId())
|
||||||
.setExtra(DEPT_NAME_KEY, loginUser.getDeptName())
|
.setExtra(DEPT_NAME_KEY, loginUser.getDeptName())
|
||||||
.setExtra(DEPT_CATEGORY_KEY, loginUser.getDeptCategory())
|
.setExtra(DEPT_CATEGORY_KEY, loginUser.getDeptCategory())
|
||||||
|
.setExtra(PROJECT_KEY, loginUser.getProjectId())
|
||||||
);
|
);
|
||||||
StpUtil.getTokenSession().set(LOGIN_USER_KEY, loginUser);
|
StpUtil.getTokenSession().set(LOGIN_USER_KEY, loginUser);
|
||||||
}
|
}
|
||||||
@ -132,6 +136,13 @@ public class LoginHelper {
|
|||||||
return Convert.toStr(getExtra(DEPT_CATEGORY_KEY));
|
return Convert.toStr(getExtra(DEPT_CATEGORY_KEY));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获取项目ID
|
||||||
|
*/
|
||||||
|
public static Long getProjectId() {
|
||||||
|
return Convert.toLong(getExtra(PROJECT_KEY));
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 获取当前 Token 的扩展信息
|
* 获取当前 Token 的扩展信息
|
||||||
*
|
*
|
||||||
@ -197,7 +208,8 @@ public class LoginHelper {
|
|||||||
if (loginUser == null) {
|
if (loginUser == null) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
return Convert.toBool(isTenantAdmin(loginUser.getRolePermission()));
|
List<SysProjectRolePermissionVo> rolePermission = loginUser.getRolePermission();
|
||||||
|
return Convert.toBool(isTenantAdmin(rolePermission.getFirst().getProjectRoles()));
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@ -1,11 +1,13 @@
|
|||||||
package org.dromara.common.core.service.impl;
|
package org.dromara.common.core.service.impl;
|
||||||
|
|
||||||
import org.apache.dubbo.config.annotation.DubboReference;
|
import org.apache.dubbo.config.annotation.DubboReference;
|
||||||
|
import org.dromara.common.core.domain.vo.SysProjectRoleMenuVo;
|
||||||
|
import org.dromara.common.core.domain.vo.SysProjectRolePermissionVo;
|
||||||
import org.dromara.common.core.service.PermissionService;
|
import org.dromara.common.core.service.PermissionService;
|
||||||
import org.dromara.system.api.RemotePermissionService;
|
import org.dromara.system.api.RemotePermissionService;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
import java.util.Set;
|
import java.util.List;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 权限服务
|
* 权限服务
|
||||||
@ -19,12 +21,12 @@ public class PermissionServiceImpl implements PermissionService {
|
|||||||
private RemotePermissionService remotePermissionService;
|
private RemotePermissionService remotePermissionService;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Set<String> getRolePermission(Long userId) {
|
public List<SysProjectRolePermissionVo> getRolePermission(Long userId) {
|
||||||
return remotePermissionService.getRolePermission(userId);
|
return remotePermissionService.getRolePermission(userId);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Set<String> getMenuPermission(Long userId) {
|
public List<SysProjectRoleMenuVo> getMenuPermission(Long userId) {
|
||||||
return remotePermissionService.getMenuPermission(userId);
|
return remotePermissionService.getMenuPermission(userId);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -33,4 +33,9 @@ public interface TransConstant {
|
|||||||
*/
|
*/
|
||||||
String OSS_ID_TO_URL = "oss_id_to_url";
|
String OSS_ID_TO_URL = "oss_id_to_url";
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 项目id转名称
|
||||||
|
*/
|
||||||
|
String PROJECT_ID_TO_NAME = "project_id_to_name";
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@ -0,0 +1,37 @@
|
|||||||
|
package org.dromara.common.translation.core.impl;
|
||||||
|
|
||||||
|
import lombok.AllArgsConstructor;
|
||||||
|
import org.apache.dubbo.config.annotation.DubboReference;
|
||||||
|
import org.dromara.common.translation.annotation.TranslationType;
|
||||||
|
import org.dromara.common.translation.constant.TransConstant;
|
||||||
|
import org.dromara.common.translation.core.TranslationInterface;
|
||||||
|
import org.dromara.system.api.RemoteProjectService;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 项目名称翻译实现
|
||||||
|
*
|
||||||
|
* @author lilemy
|
||||||
|
* @date 2025-09-10 16:13
|
||||||
|
*/
|
||||||
|
@AllArgsConstructor
|
||||||
|
@TranslationType(type = TransConstant.PROJECT_ID_TO_NAME)
|
||||||
|
public class ProjectNameTranslationImpl implements TranslationInterface<String> {
|
||||||
|
|
||||||
|
@DubboReference
|
||||||
|
private RemoteProjectService remoteProjectService;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 翻译
|
||||||
|
*
|
||||||
|
* @param key 需要被翻译的键(不为空)
|
||||||
|
* @param other 其他参数
|
||||||
|
* @return 返回键对应的值
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public String translation(Object key, String other) {
|
||||||
|
if (key instanceof Long id) {
|
||||||
|
return remoteProjectService.selectProjectNameById(id);
|
||||||
|
}
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -4,3 +4,4 @@ org.dromara.common.translation.core.impl.DictTypeTranslationImpl
|
|||||||
org.dromara.common.translation.core.impl.OssUrlTranslationImpl
|
org.dromara.common.translation.core.impl.OssUrlTranslationImpl
|
||||||
org.dromara.common.translation.core.impl.UserNameTranslationImpl
|
org.dromara.common.translation.core.impl.UserNameTranslationImpl
|
||||||
org.dromara.common.translation.core.impl.NicknameTranslationImpl
|
org.dromara.common.translation.core.impl.NicknameTranslationImpl
|
||||||
|
org.dromara.common.translation.core.impl.ProjectNameTranslationImpl
|
||||||
|
|||||||
@ -1,6 +1,6 @@
|
|||||||
# 贝尔实验室 Spring 官方推荐镜像 JDK下载地址 https://bell-sw.com/pages/downloads/
|
# 贝尔实验室 Spring 官方推荐镜像 JDK下载地址 https://bell-sw.com/pages/downloads/
|
||||||
FROM bellsoft/liberica-openjdk-rocky:17.0.15-cds
|
#FROM bellsoft/liberica-openjdk-rocky:17.0.15-cds
|
||||||
#FROM bellsoft/liberica-openjdk-rocky:21.0.7-cds
|
FROM bellsoft/liberica-openjdk-rocky:21.0.7-cds
|
||||||
#FROM findepi/graalvm:java17-native
|
#FROM findepi/graalvm:java17-native
|
||||||
|
|
||||||
LABEL maintainer="Lion Li"
|
LABEL maintainer="Lion Li"
|
||||||
@ -11,7 +11,7 @@ RUN mkdir -p /ruoyi/gateway/logs \
|
|||||||
|
|
||||||
WORKDIR /ruoyi/gateway
|
WORKDIR /ruoyi/gateway
|
||||||
|
|
||||||
ENV SERVER_PORT=8080 LANG=C.UTF-8 LC_ALL=C.UTF-8 JAVA_OPTS=""
|
ENV SERVER_PORT=18899 LANG=C.UTF-8 LC_ALL=C.UTF-8 JAVA_OPTS=""
|
||||||
|
|
||||||
EXPOSE ${SERVER_PORT}
|
EXPOSE ${SERVER_PORT}
|
||||||
|
|
||||||
|
|||||||
@ -1,6 +1,6 @@
|
|||||||
# Tomcat
|
# Tomcat
|
||||||
server:
|
server:
|
||||||
port: 8080
|
port: 18899
|
||||||
servlet:
|
servlet:
|
||||||
context-path: /
|
context-path: /
|
||||||
|
|
||||||
|
|||||||
@ -1,6 +1,6 @@
|
|||||||
# 贝尔实验室 Spring 官方推荐镜像 JDK下载地址 https://bell-sw.com/pages/downloads/
|
# 贝尔实验室 Spring 官方推荐镜像 JDK下载地址 https://bell-sw.com/pages/downloads/
|
||||||
FROM bellsoft/liberica-openjdk-rocky:17.0.15-cds
|
#FROM bellsoft/liberica-openjdk-rocky:17.0.15-cds
|
||||||
#FROM bellsoft/liberica-openjdk-rocky:21.0.7-cds
|
FROM bellsoft/liberica-openjdk-rocky:21.0.7-cds
|
||||||
#FROM findepi/graalvm:java17-native
|
#FROM findepi/graalvm:java17-native
|
||||||
|
|
||||||
LABEL maintainer="Lion Li"
|
LABEL maintainer="Lion Li"
|
||||||
@ -9,7 +9,7 @@ RUN mkdir -p /ruoyi/gen/logs
|
|||||||
|
|
||||||
WORKDIR /ruoyi/gen
|
WORKDIR /ruoyi/gen
|
||||||
|
|
||||||
ENV SERVER_PORT=9202 LANG=C.UTF-8 LC_ALL=C.UTF-8 JAVA_OPTS=""
|
ENV SERVER_PORT=19202 LANG=C.UTF-8 LC_ALL=C.UTF-8 JAVA_OPTS=""
|
||||||
|
|
||||||
EXPOSE ${SERVER_PORT}
|
EXPOSE ${SERVER_PORT}
|
||||||
|
|
||||||
|
|||||||
@ -1,6 +1,6 @@
|
|||||||
# Tomcat
|
# Tomcat
|
||||||
server:
|
server:
|
||||||
port: 9202
|
port: 19202
|
||||||
|
|
||||||
# Spring
|
# Spring
|
||||||
spring:
|
spring:
|
||||||
|
|||||||
@ -11,7 +11,7 @@ RUN mkdir -p /ruoyi/resource/logs \
|
|||||||
|
|
||||||
WORKDIR /ruoyi/resource
|
WORKDIR /ruoyi/resource
|
||||||
|
|
||||||
ENV SERVER_PORT=9204 LANG=C.UTF-8 LC_ALL=C.UTF-8 JAVA_OPTS=""
|
ENV SERVER_PORT=19204 LANG=C.UTF-8 LC_ALL=C.UTF-8 JAVA_OPTS=""
|
||||||
|
|
||||||
EXPOSE ${SERVER_PORT}
|
EXPOSE ${SERVER_PORT}
|
||||||
|
|
||||||
|
|||||||
@ -1,6 +1,6 @@
|
|||||||
# Tomcat
|
# Tomcat
|
||||||
server:
|
server:
|
||||||
port: 9204
|
port: 19204
|
||||||
|
|
||||||
# Spring
|
# Spring
|
||||||
spring:
|
spring:
|
||||||
|
|||||||
@ -11,7 +11,7 @@ RUN mkdir -p /ruoyi/system/logs \
|
|||||||
|
|
||||||
WORKDIR /ruoyi/system
|
WORKDIR /ruoyi/system
|
||||||
|
|
||||||
ENV SERVER_PORT=9201 LANG=C.UTF-8 LC_ALL=C.UTF-8 JAVA_OPTS=""
|
ENV SERVER_PORT=19201 LANG=C.UTF-8 LC_ALL=C.UTF-8 JAVA_OPTS=""
|
||||||
|
|
||||||
EXPOSE ${SERVER_PORT}
|
EXPOSE ${SERVER_PORT}
|
||||||
|
|
||||||
|
|||||||
@ -0,0 +1,31 @@
|
|||||||
|
package org.dromara.system.controller.constant;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 项目常量
|
||||||
|
*
|
||||||
|
* @author lilemy
|
||||||
|
* @date 2025/5/13 10:33
|
||||||
|
*/
|
||||||
|
public interface BusProjectConstant {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 项目天气封装信息缓存的 Redis Key 前缀
|
||||||
|
*/
|
||||||
|
String PROJECT_WEATHER_LIST_VO_REDIS_KEY_PREFIX = "project:weather:list";
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 项目安全生产天数缓存的 Redis Key 前缀
|
||||||
|
*/
|
||||||
|
String PROJECT_SAFETY_DAYS_REDIS_KEY_PREFIX = "project:safetyDays";
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 项目缓存的 Redis Key 前缀
|
||||||
|
*/
|
||||||
|
String PROJECT_CACHE_REDIS_KEY_PREFIX = "project";
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 父级id
|
||||||
|
*/
|
||||||
|
Long PARENT_ID = 0L;
|
||||||
|
|
||||||
|
}
|
||||||
@ -0,0 +1,169 @@
|
|||||||
|
package org.dromara.system.controller.project;
|
||||||
|
|
||||||
|
import cn.dev33.satoken.annotation.SaCheckPermission;
|
||||||
|
import jakarta.annotation.Resource;
|
||||||
|
import jakarta.servlet.http.HttpServletResponse;
|
||||||
|
import jakarta.validation.constraints.NotEmpty;
|
||||||
|
import jakarta.validation.constraints.NotNull;
|
||||||
|
import org.dromara.common.core.constant.HttpStatus;
|
||||||
|
import org.dromara.common.core.domain.R;
|
||||||
|
import org.dromara.common.core.exception.ServiceException;
|
||||||
|
import org.dromara.common.core.validate.AddGroup;
|
||||||
|
import org.dromara.common.core.validate.EditGroup;
|
||||||
|
import org.dromara.common.excel.utils.ExcelUtil;
|
||||||
|
import org.dromara.common.idempotent.annotation.RepeatSubmit;
|
||||||
|
import org.dromara.common.log.annotation.Log;
|
||||||
|
import org.dromara.common.log.enums.BusinessType;
|
||||||
|
import org.dromara.common.mybatis.core.page.PageQuery;
|
||||||
|
import org.dromara.common.mybatis.core.page.TableDataInfo;
|
||||||
|
import org.dromara.common.web.core.BaseController;
|
||||||
|
import org.dromara.system.domain.dto.project.*;
|
||||||
|
import org.dromara.system.domain.vo.project.BusProjectSafetyDayVo;
|
||||||
|
import org.dromara.system.domain.vo.project.BusProjectVo;
|
||||||
|
import org.dromara.system.domain.vo.project.BusSubProjectVo;
|
||||||
|
import org.dromara.system.service.IBusProjectService;
|
||||||
|
import org.springframework.validation.annotation.Validated;
|
||||||
|
import org.springframework.web.bind.annotation.*;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 项目
|
||||||
|
*
|
||||||
|
* @author lilemy
|
||||||
|
* @date 2025-03-04
|
||||||
|
*/
|
||||||
|
@Validated
|
||||||
|
@RestController
|
||||||
|
@RequestMapping("/project/project")
|
||||||
|
public class BusProjectController extends BaseController {
|
||||||
|
|
||||||
|
@Resource
|
||||||
|
private IBusProjectService projectService;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 切换项目
|
||||||
|
*
|
||||||
|
* @param id 项目id
|
||||||
|
*/
|
||||||
|
@GetMapping("/changeProject/{id}")
|
||||||
|
public R<Void> changeUserProject(@NotNull(message = "项目id不能为空")
|
||||||
|
@PathVariable Long id) {
|
||||||
|
return toAjax(projectService.changeUserProject(id));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 查询项目列表
|
||||||
|
*/
|
||||||
|
@SaCheckPermission("project:project:list")
|
||||||
|
@GetMapping("/list")
|
||||||
|
public TableDataInfo<BusProjectVo> list(BusProjectQueryReq req, PageQuery pageQuery) {
|
||||||
|
return projectService.queryPageList(req, pageQuery);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 查询项目下的子项目列表
|
||||||
|
*/
|
||||||
|
@SaCheckPermission("project:project:listSub")
|
||||||
|
@GetMapping("/list/sub/{id}")
|
||||||
|
public R<List<BusSubProjectVo>> listSubProject(@NotNull(message = "项目id不能为空")
|
||||||
|
@PathVariable Long id) {
|
||||||
|
return R.ok(projectService.querySubList(id));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 导出项目列表
|
||||||
|
*/
|
||||||
|
@SaCheckPermission("project:project:export")
|
||||||
|
@Log(title = "项目", businessType = BusinessType.EXPORT)
|
||||||
|
@PostMapping("/export")
|
||||||
|
public void export(BusProjectQueryReq req, HttpServletResponse response) {
|
||||||
|
List<BusProjectVo> list = projectService.queryList(req);
|
||||||
|
ExcelUtil.exportExcel(list, "项目", BusProjectVo.class, response);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获取项目详细信息
|
||||||
|
*
|
||||||
|
* @param id 主键
|
||||||
|
*/
|
||||||
|
@SaCheckPermission("project:project:query")
|
||||||
|
@GetMapping("/{id}")
|
||||||
|
public R<BusProjectVo> getInfo(@NotNull(message = "主键不能为空")
|
||||||
|
@PathVariable Long id) {
|
||||||
|
return R.ok(projectService.queryById(id));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 新增项目
|
||||||
|
*/
|
||||||
|
@SaCheckPermission("project:project:add")
|
||||||
|
@Log(title = "项目", businessType = BusinessType.INSERT)
|
||||||
|
@RepeatSubmit()
|
||||||
|
@PostMapping()
|
||||||
|
public R<Long> add(@Validated(AddGroup.class) @RequestBody BusProjectCreateReq req) {
|
||||||
|
if (req == null) {
|
||||||
|
throw new ServiceException("参数不能为空", HttpStatus.BAD_REQUEST);
|
||||||
|
}
|
||||||
|
return R.ok(projectService.insertByBo(req));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 新增子项目
|
||||||
|
*/
|
||||||
|
@SaCheckPermission("project:project:sub")
|
||||||
|
@Log(title = "项目", businessType = BusinessType.INSERT)
|
||||||
|
@RepeatSubmit()
|
||||||
|
@PostMapping("/sub")
|
||||||
|
public R<Long> addSub(@Validated(AddGroup.class) @RequestBody BusProjectCreateSubReq req) {
|
||||||
|
if (req == null) {
|
||||||
|
throw new ServiceException("参数不能为空", HttpStatus.BAD_REQUEST);
|
||||||
|
}
|
||||||
|
return R.ok(projectService.insertSubByProject(req));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 修改项目
|
||||||
|
*/
|
||||||
|
@SaCheckPermission("project:project:edit")
|
||||||
|
@Log(title = "项目", businessType = BusinessType.UPDATE)
|
||||||
|
@RepeatSubmit()
|
||||||
|
@PutMapping()
|
||||||
|
public R<Void> edit(@Validated(EditGroup.class) @RequestBody BusProjectUpdateReq req) {
|
||||||
|
return toAjax(projectService.updateByBo(req));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 保存项目招标文件
|
||||||
|
*/
|
||||||
|
@SaCheckPermission("project:project:saveTenderFile")
|
||||||
|
@Log(title = "项目", businessType = BusinessType.UPDATE)
|
||||||
|
@RepeatSubmit()
|
||||||
|
@PutMapping("/save/tender/file")
|
||||||
|
public R<Void> uploadTenderFile(@RequestBody BusProjectSaveTenderFileReq req) {
|
||||||
|
return toAjax(projectService.saveTenderFile(req));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 删除项目
|
||||||
|
*
|
||||||
|
* @param ids 主键串
|
||||||
|
*/
|
||||||
|
@SaCheckPermission("project:project:remove")
|
||||||
|
@Log(title = "项目", businessType = BusinessType.DELETE)
|
||||||
|
@DeleteMapping("/{ids}")
|
||||||
|
public R<Void> remove(@NotEmpty(message = "主键不能为空")
|
||||||
|
@PathVariable Long[] ids) {
|
||||||
|
return toAjax(projectService.deleteWithValidByIds(List.of(ids), true));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 查询项目安全天数
|
||||||
|
*/
|
||||||
|
@GetMapping("/safetyDay/{id}")
|
||||||
|
public R<BusProjectSafetyDayVo> getSafetyDay(@NotNull(message = "主键不能为空")
|
||||||
|
@PathVariable Long id) {
|
||||||
|
return R.ok(projectService.getSafetyDay(id));
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
@ -0,0 +1,82 @@
|
|||||||
|
package org.dromara.system.controller.project;
|
||||||
|
|
||||||
|
import cn.dev33.satoken.annotation.SaCheckPermission;
|
||||||
|
import jakarta.validation.constraints.NotEmpty;
|
||||||
|
import jakarta.validation.constraints.NotNull;
|
||||||
|
import lombok.RequiredArgsConstructor;
|
||||||
|
import org.dromara.common.core.domain.R;
|
||||||
|
import org.dromara.common.core.validate.EditGroup;
|
||||||
|
import org.dromara.common.idempotent.annotation.RepeatSubmit;
|
||||||
|
import org.dromara.common.log.annotation.Log;
|
||||||
|
import org.dromara.common.log.enums.BusinessType;
|
||||||
|
import org.dromara.common.mybatis.core.page.PageQuery;
|
||||||
|
import org.dromara.common.mybatis.core.page.TableDataInfo;
|
||||||
|
import org.dromara.common.web.core.BaseController;
|
||||||
|
import org.dromara.system.domain.dto.projectfile.BusProjectFileQueryReq;
|
||||||
|
import org.dromara.system.domain.dto.projectfile.BusProjectFileUpdateReq;
|
||||||
|
import org.dromara.system.domain.vo.projectfile.BusProjectFileVo;
|
||||||
|
import org.dromara.system.service.IBusProjectFileService;
|
||||||
|
import org.springframework.validation.annotation.Validated;
|
||||||
|
import org.springframework.web.bind.annotation.*;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 项目文件存储
|
||||||
|
*
|
||||||
|
* @author lilemy
|
||||||
|
* @date 2025-04-23
|
||||||
|
*/
|
||||||
|
@Validated
|
||||||
|
@RequiredArgsConstructor
|
||||||
|
@RestController
|
||||||
|
@RequestMapping("/project/projectFile")
|
||||||
|
public class BusProjectFileController extends BaseController {
|
||||||
|
|
||||||
|
private final IBusProjectFileService busProjectFileService;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 查询项目文件存储列表
|
||||||
|
*/
|
||||||
|
@SaCheckPermission("project:projectFile:list")
|
||||||
|
@GetMapping("/list")
|
||||||
|
public TableDataInfo<BusProjectFileVo> list(BusProjectFileQueryReq req, PageQuery pageQuery) {
|
||||||
|
return busProjectFileService.queryPageList(req, pageQuery);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获取项目文件存储详细信息
|
||||||
|
*
|
||||||
|
* @param id 主键
|
||||||
|
*/
|
||||||
|
@SaCheckPermission("project:projectFile:query")
|
||||||
|
@GetMapping("/{id}")
|
||||||
|
public R<BusProjectFileVo> getInfo(@NotNull(message = "主键不能为空")
|
||||||
|
@PathVariable Long id) {
|
||||||
|
return R.ok(busProjectFileService.queryById(id));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 修改项目文件存储
|
||||||
|
*/
|
||||||
|
@SaCheckPermission("project:projectFile:edit")
|
||||||
|
@Log(title = "项目文件存储", businessType = BusinessType.UPDATE)
|
||||||
|
@RepeatSubmit()
|
||||||
|
@PutMapping()
|
||||||
|
public R<Void> edit(@Validated(EditGroup.class) @RequestBody BusProjectFileUpdateReq req) {
|
||||||
|
return toAjax(busProjectFileService.updateByBo(req));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 删除项目文件存储
|
||||||
|
*
|
||||||
|
* @param ids 主键串
|
||||||
|
*/
|
||||||
|
@SaCheckPermission("project:projectFile:remove")
|
||||||
|
@Log(title = "项目文件存储", businessType = BusinessType.DELETE)
|
||||||
|
@DeleteMapping("/{ids}")
|
||||||
|
public R<Void> remove(@NotEmpty(message = "主键不能为空")
|
||||||
|
@PathVariable Long[] ids) {
|
||||||
|
return toAjax(busProjectFileService.deleteWithValidByIds(List.of(ids), true));
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -0,0 +1,116 @@
|
|||||||
|
package org.dromara.system.controller.project;
|
||||||
|
|
||||||
|
import cn.dev33.satoken.annotation.SaCheckPermission;
|
||||||
|
import jakarta.servlet.http.HttpServletResponse;
|
||||||
|
import jakarta.validation.constraints.NotEmpty;
|
||||||
|
import jakarta.validation.constraints.NotNull;
|
||||||
|
import lombok.RequiredArgsConstructor;
|
||||||
|
import org.dromara.common.core.domain.R;
|
||||||
|
import org.dromara.common.excel.utils.ExcelUtil;
|
||||||
|
import org.dromara.common.idempotent.annotation.RepeatSubmit;
|
||||||
|
import org.dromara.common.log.annotation.Log;
|
||||||
|
import org.dromara.common.log.enums.BusinessType;
|
||||||
|
import org.dromara.common.mybatis.core.page.PageQuery;
|
||||||
|
import org.dromara.common.mybatis.core.page.TableDataInfo;
|
||||||
|
import org.dromara.common.web.core.BaseController;
|
||||||
|
import org.dromara.system.domain.dto.projectnews.BusProjectNewsCreateReq;
|
||||||
|
import org.dromara.system.domain.dto.projectnews.BusProjectNewsGisReq;
|
||||||
|
import org.dromara.system.domain.dto.projectnews.BusProjectNewsQueryReq;
|
||||||
|
import org.dromara.system.domain.dto.projectnews.BusProjectNewsUpdateReq;
|
||||||
|
import org.dromara.system.domain.vo.projectnews.BusProjectNewsGisVo;
|
||||||
|
import org.dromara.system.domain.vo.projectnews.BusProjectNewsVo;
|
||||||
|
import org.dromara.system.service.IBusProjectNewsService;
|
||||||
|
import org.springframework.validation.annotation.Validated;
|
||||||
|
import org.springframework.web.bind.annotation.*;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 项目新闻
|
||||||
|
*
|
||||||
|
* @author lilemy
|
||||||
|
* @date 2025-04-28
|
||||||
|
*/
|
||||||
|
@Validated
|
||||||
|
@RequiredArgsConstructor
|
||||||
|
@RestController
|
||||||
|
@RequestMapping("/project/projectNews")
|
||||||
|
public class BusProjectNewsController extends BaseController {
|
||||||
|
|
||||||
|
private final IBusProjectNewsService busProjectNewsService;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 查询项目新闻列表
|
||||||
|
*/
|
||||||
|
@SaCheckPermission("project:projectNews:list")
|
||||||
|
@GetMapping("/list")
|
||||||
|
public TableDataInfo<BusProjectNewsVo> list(BusProjectNewsQueryReq req, PageQuery pageQuery) {
|
||||||
|
return busProjectNewsService.queryPageList(req, pageQuery);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 导出项目新闻列表
|
||||||
|
*/
|
||||||
|
@SaCheckPermission("project:projectNews:export")
|
||||||
|
@Log(title = "项目新闻", businessType = BusinessType.EXPORT)
|
||||||
|
@PostMapping("/export")
|
||||||
|
public void export(BusProjectNewsQueryReq req, HttpServletResponse response) {
|
||||||
|
List<BusProjectNewsVo> list = busProjectNewsService.queryList(req);
|
||||||
|
ExcelUtil.exportExcel(list, "项目新闻", BusProjectNewsVo.class, response);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 查询大屏项目新闻列表
|
||||||
|
*/
|
||||||
|
@GetMapping("/list/gis")
|
||||||
|
public R<List<BusProjectNewsGisVo>> listGis(BusProjectNewsGisReq req) {
|
||||||
|
return R.ok(busProjectNewsService.queryGisList(req));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获取项目新闻详细信息
|
||||||
|
*
|
||||||
|
* @param id 主键
|
||||||
|
*/
|
||||||
|
@SaCheckPermission("project:projectNews:query")
|
||||||
|
@GetMapping("/{id}")
|
||||||
|
public R<BusProjectNewsVo> getInfo(@NotNull(message = "主键不能为空")
|
||||||
|
@PathVariable Long id) {
|
||||||
|
return R.ok(busProjectNewsService.queryById(id));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 新增项目新闻
|
||||||
|
*/
|
||||||
|
@SaCheckPermission("project:projectNews:add")
|
||||||
|
@Log(title = "项目新闻", businessType = BusinessType.INSERT)
|
||||||
|
@RepeatSubmit()
|
||||||
|
@PostMapping()
|
||||||
|
public R<Long> add(@Validated @RequestBody BusProjectNewsCreateReq req) {
|
||||||
|
return R.ok(busProjectNewsService.insertByBo(req));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 修改项目新闻
|
||||||
|
*/
|
||||||
|
@SaCheckPermission("project:projectNews:edit")
|
||||||
|
@Log(title = "项目新闻", businessType = BusinessType.UPDATE)
|
||||||
|
@RepeatSubmit()
|
||||||
|
@PutMapping()
|
||||||
|
public R<Void> edit(@Validated @RequestBody BusProjectNewsUpdateReq req) {
|
||||||
|
return toAjax(busProjectNewsService.updateByBo(req));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 删除项目新闻
|
||||||
|
*
|
||||||
|
* @param ids 主键串
|
||||||
|
*/
|
||||||
|
@SaCheckPermission("project:projectNews:remove")
|
||||||
|
@Log(title = "项目新闻", businessType = BusinessType.DELETE)
|
||||||
|
@DeleteMapping("/{ids}")
|
||||||
|
public R<Void> remove(@NotEmpty(message = "主键不能为空")
|
||||||
|
@PathVariable Long[] ids) {
|
||||||
|
return toAjax(busProjectNewsService.deleteWithValidByIds(List.of(ids), true));
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -0,0 +1,106 @@
|
|||||||
|
package org.dromara.system.controller.project;
|
||||||
|
|
||||||
|
import cn.dev33.satoken.annotation.SaCheckPermission;
|
||||||
|
import jakarta.servlet.http.HttpServletResponse;
|
||||||
|
import jakarta.validation.constraints.NotEmpty;
|
||||||
|
import jakarta.validation.constraints.NotNull;
|
||||||
|
import lombok.RequiredArgsConstructor;
|
||||||
|
import org.dromara.common.core.domain.R;
|
||||||
|
import org.dromara.common.core.validate.AddGroup;
|
||||||
|
import org.dromara.common.core.validate.EditGroup;
|
||||||
|
import org.dromara.common.excel.utils.ExcelUtil;
|
||||||
|
import org.dromara.common.idempotent.annotation.RepeatSubmit;
|
||||||
|
import org.dromara.common.log.annotation.Log;
|
||||||
|
import org.dromara.common.log.enums.BusinessType;
|
||||||
|
import org.dromara.common.mybatis.core.page.PageQuery;
|
||||||
|
import org.dromara.common.mybatis.core.page.TableDataInfo;
|
||||||
|
import org.dromara.common.web.core.BaseController;
|
||||||
|
import org.dromara.system.domain.bo.BusProjectPunchrangeBo;
|
||||||
|
import org.dromara.system.domain.vo.projectpunchrange.BusProjectPunchrangeVo;
|
||||||
|
import org.dromara.system.service.IBusProjectPunchrangeService;
|
||||||
|
import org.springframework.validation.annotation.Validated;
|
||||||
|
import org.springframework.web.bind.annotation.*;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 项目打卡范围
|
||||||
|
*
|
||||||
|
* @author Lion Li
|
||||||
|
* @date 2025-07-28
|
||||||
|
*/
|
||||||
|
@Validated
|
||||||
|
@RequiredArgsConstructor
|
||||||
|
@RestController
|
||||||
|
@RequestMapping("/project/projectPunchrange")
|
||||||
|
public class BusProjectPunchrangeController extends BaseController {
|
||||||
|
|
||||||
|
private final IBusProjectPunchrangeService busProjectPunchrangeService;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 查询项目打卡范围列表
|
||||||
|
*/
|
||||||
|
@SaCheckPermission("project:projectPunchrange:list")
|
||||||
|
@GetMapping("/list")
|
||||||
|
public TableDataInfo<BusProjectPunchrangeVo> list(BusProjectPunchrangeBo bo, PageQuery pageQuery) {
|
||||||
|
return busProjectPunchrangeService.queryPageList(bo, pageQuery);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 导出项目打卡范围列表
|
||||||
|
*/
|
||||||
|
@SaCheckPermission("project:projectPunchrange:export")
|
||||||
|
@Log(title = "项目打卡范围", businessType = BusinessType.EXPORT)
|
||||||
|
@PostMapping("/export")
|
||||||
|
public void export(BusProjectPunchrangeBo bo, HttpServletResponse response) {
|
||||||
|
List<BusProjectPunchrangeVo> list = busProjectPunchrangeService.queryList(bo);
|
||||||
|
ExcelUtil.exportExcel(list, "项目打卡范围", BusProjectPunchrangeVo.class, response);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获取项目打卡范围详细信息
|
||||||
|
*
|
||||||
|
* @param id 主键
|
||||||
|
*/
|
||||||
|
@SaCheckPermission("project:projectPunchrange:query")
|
||||||
|
@GetMapping("/{id}")
|
||||||
|
public R<BusProjectPunchrangeVo> getInfo(@NotNull(message = "主键不能为空")
|
||||||
|
@PathVariable Long id) {
|
||||||
|
return R.ok(busProjectPunchrangeService.queryById(id));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 新增项目打卡范围
|
||||||
|
*/
|
||||||
|
@SaCheckPermission("project:projectPunchrange:add")
|
||||||
|
@Log(title = "项目打卡范围", businessType = BusinessType.INSERT)
|
||||||
|
@RepeatSubmit()
|
||||||
|
@PostMapping()
|
||||||
|
public R<Void> add(@Validated(AddGroup.class) @RequestBody BusProjectPunchrangeBo bo) {
|
||||||
|
return toAjax(busProjectPunchrangeService.insertByBo(bo));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 修改项目打卡范围
|
||||||
|
*/
|
||||||
|
@SaCheckPermission("project:projectPunchrange:edit")
|
||||||
|
@Log(title = "项目打卡范围", businessType = BusinessType.UPDATE)
|
||||||
|
@RepeatSubmit()
|
||||||
|
@PutMapping()
|
||||||
|
public R<Void> edit(@Validated(EditGroup.class) @RequestBody BusProjectPunchrangeBo bo) {
|
||||||
|
return toAjax(busProjectPunchrangeService.updateByBo(bo));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 删除项目打卡范围
|
||||||
|
*
|
||||||
|
* @param ids 主键串
|
||||||
|
*/
|
||||||
|
@SaCheckPermission("project:projectPunchrange:remove")
|
||||||
|
@Log(title = "项目打卡范围", businessType = BusinessType.DELETE)
|
||||||
|
@DeleteMapping("/{ids}")
|
||||||
|
public R<Void> remove(@NotEmpty(message = "主键不能为空")
|
||||||
|
@PathVariable Long[] ids) {
|
||||||
|
return toAjax(busProjectPunchrangeService.deleteWithValidByIds(List.of(ids), true));
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -0,0 +1,165 @@
|
|||||||
|
package org.dromara.system.controller.project;
|
||||||
|
|
||||||
|
import cn.dev33.satoken.annotation.SaCheckPermission;
|
||||||
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||||
|
import jakarta.servlet.http.HttpServletResponse;
|
||||||
|
import jakarta.validation.constraints.NotEmpty;
|
||||||
|
import jakarta.validation.constraints.NotNull;
|
||||||
|
import lombok.RequiredArgsConstructor;
|
||||||
|
import org.dromara.common.core.domain.R;
|
||||||
|
import org.dromara.common.excel.utils.ExcelUtil;
|
||||||
|
import org.dromara.common.idempotent.annotation.RepeatSubmit;
|
||||||
|
import org.dromara.common.log.annotation.Log;
|
||||||
|
import org.dromara.common.log.enums.BusinessType;
|
||||||
|
import org.dromara.common.mybatis.core.page.PageQuery;
|
||||||
|
import org.dromara.common.mybatis.core.page.TableDataInfo;
|
||||||
|
import org.dromara.common.satoken.utils.LoginHelper;
|
||||||
|
import org.dromara.common.web.core.BaseController;
|
||||||
|
import org.dromara.system.domain.BusUserProjectRelevancy;
|
||||||
|
import org.dromara.system.domain.dto.project.BusProjectBatchByProjectListReq;
|
||||||
|
import org.dromara.system.domain.dto.userprojectrelevancy.BusUserProjectRelevancyCreateReq;
|
||||||
|
import org.dromara.system.domain.dto.userprojectrelevancy.BusUserProjectRelevancyQueryReq;
|
||||||
|
import org.dromara.system.domain.dto.userprojectrelevancy.BusUserProjectRelevancyUpdateReq;
|
||||||
|
import org.dromara.system.domain.vo.userprojectrelevancy.BusLoginUserProjectRelevancyVo;
|
||||||
|
import org.dromara.system.domain.vo.userprojectrelevancy.BusUserProjectRelevancyVo;
|
||||||
|
import org.dromara.system.service.IBusUserProjectRelevancyService;
|
||||||
|
import org.springframework.validation.annotation.Validated;
|
||||||
|
import org.springframework.web.bind.annotation.*;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 系统用户与项目关联
|
||||||
|
*
|
||||||
|
* @author lilemy
|
||||||
|
* @date 2025-03-04
|
||||||
|
*/
|
||||||
|
@Validated
|
||||||
|
@RequiredArgsConstructor
|
||||||
|
@RestController
|
||||||
|
@RequestMapping("/project/projectRelevancy")
|
||||||
|
public class BusUserProjectRelevancyController extends BaseController {
|
||||||
|
|
||||||
|
private final IBusUserProjectRelevancyService userProjectRelevancyService;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 查询用户与项目关联列表
|
||||||
|
*/
|
||||||
|
@SaCheckPermission("project:projectRelevancy:list")
|
||||||
|
@GetMapping("/list")
|
||||||
|
public TableDataInfo<BusUserProjectRelevancyVo> list(BusUserProjectRelevancyQueryReq req, PageQuery pageQuery) {
|
||||||
|
return userProjectRelevancyService.queryPageList(req, pageQuery);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 查询登录用户与项目关联列表
|
||||||
|
*/
|
||||||
|
@GetMapping("/login/list")
|
||||||
|
public R<List<BusLoginUserProjectRelevancyVo>> listByLoginUser() {
|
||||||
|
Long userId = LoginHelper.getUserId();
|
||||||
|
return R.ok(userProjectRelevancyService.queryListByUserId(userId));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 查询登录用户与项目关联分页
|
||||||
|
*/
|
||||||
|
@GetMapping("/login/page")
|
||||||
|
public TableDataInfo<BusUserProjectRelevancyVo> pageByLoginUser(BusUserProjectRelevancyQueryReq req, PageQuery pageQuery) {
|
||||||
|
Long userId = LoginHelper.getUserId();
|
||||||
|
return userProjectRelevancyService.queryPageByUserId(userId, req, pageQuery);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 导出用户与项目关联列表
|
||||||
|
*/
|
||||||
|
@SaCheckPermission("project:projectRelevancy:export")
|
||||||
|
@Log(title = "系统用户与项目关联", businessType = BusinessType.EXPORT)
|
||||||
|
@PostMapping("/export")
|
||||||
|
public void export(BusUserProjectRelevancyQueryReq req, HttpServletResponse response) {
|
||||||
|
List<BusUserProjectRelevancyVo> list = userProjectRelevancyService.queryList(req);
|
||||||
|
ExcelUtil.exportExcel(list, "系统用户与项目关联", BusUserProjectRelevancyVo.class, response);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获取用户与项目关联详细信息
|
||||||
|
*
|
||||||
|
* @param id 主键
|
||||||
|
*/
|
||||||
|
@SaCheckPermission("project:projectRelevancy:query")
|
||||||
|
@GetMapping("/{id}")
|
||||||
|
public R<BusUserProjectRelevancyVo> getInfo(@NotNull(message = "主键不能为空")
|
||||||
|
@PathVariable Long id) {
|
||||||
|
return R.ok(userProjectRelevancyService.queryById(id));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 新增用户与项目关联
|
||||||
|
*/
|
||||||
|
@SaCheckPermission("project:projectRelevancy:add")
|
||||||
|
@Log(title = "系统用户与项目关联", businessType = BusinessType.INSERT)
|
||||||
|
@RepeatSubmit()
|
||||||
|
@PostMapping()
|
||||||
|
public R<Long> add(@Validated @RequestBody BusUserProjectRelevancyCreateReq req) {
|
||||||
|
return R.ok(userProjectRelevancyService.insertByBo(req));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 新增用户与项目列表关联
|
||||||
|
*/
|
||||||
|
@SaCheckPermission("project:projectRelevancy:addProjectList")
|
||||||
|
@Log(title = "系统用户与项目关联", businessType = BusinessType.INSERT)
|
||||||
|
@RepeatSubmit()
|
||||||
|
@PostMapping("/add/project/list")
|
||||||
|
public R<Boolean> addBatchByProjectList(@RequestBody BusProjectBatchByProjectListReq req) {
|
||||||
|
Boolean result = userProjectRelevancyService.insertBatchByProjectList(req);
|
||||||
|
return R.ok(result);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 移除用户与项目列表关联
|
||||||
|
*/
|
||||||
|
@SaCheckPermission("project:projectRelevancy:removeProjectList")
|
||||||
|
@Log(title = "系统用户与项目关联", businessType = BusinessType.INSERT)
|
||||||
|
@RepeatSubmit()
|
||||||
|
@DeleteMapping("/remove/project/list")
|
||||||
|
public R<Boolean> removeBatchByProjectList(@RequestBody BusProjectBatchByProjectListReq req) {
|
||||||
|
Long userId = req.getUserId();
|
||||||
|
List<Long> projectIdList = req.getProjectIdList();
|
||||||
|
QueryWrapper<BusUserProjectRelevancy> wrapper = new QueryWrapper<>();
|
||||||
|
wrapper.eq("user_id", userId).in("project_id", projectIdList);
|
||||||
|
boolean result = userProjectRelevancyService.remove(wrapper);
|
||||||
|
/* List<UserProjectRelevancy> userProjectRelevancyList = Arrays.stream(projectIdList).map(projectId -> {
|
||||||
|
UserProjectRelevancy userProjectRelevancy = new UserProjectRelevancy();
|
||||||
|
userProjectRelevancy.setUserId(userId);
|
||||||
|
userProjectRelevancy.setProjectId(projectId);
|
||||||
|
return userProjectRelevancy;
|
||||||
|
}).toList();
|
||||||
|
boolean result = userProjectRelevancyService.removeBatchByIds(userProjectRelevancyList);*/
|
||||||
|
return R.ok(result);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 修改用户与项目关联
|
||||||
|
*/
|
||||||
|
@SaCheckPermission("project:projectRelevancy:edit")
|
||||||
|
@Log(title = "系统用户与项目关联", businessType = BusinessType.UPDATE)
|
||||||
|
@RepeatSubmit()
|
||||||
|
@PutMapping()
|
||||||
|
public R<Void> edit(@Validated @RequestBody BusUserProjectRelevancyUpdateReq req) {
|
||||||
|
return toAjax(userProjectRelevancyService.updateByBo(req));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 删除用户与项目关联
|
||||||
|
*
|
||||||
|
* @param ids 主键串
|
||||||
|
*/
|
||||||
|
@SaCheckPermission("project:projectRelevancy:remove")
|
||||||
|
@Log(title = "系统用户与项目关联", businessType = BusinessType.DELETE)
|
||||||
|
@DeleteMapping("/{ids}")
|
||||||
|
public R<Void> remove(@NotEmpty(message = "主键不能为空")
|
||||||
|
@PathVariable Long[] ids) {
|
||||||
|
return toAjax(userProjectRelevancyService.deleteWithValidByIds(List.of(ids), true));
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -2,6 +2,7 @@ package org.dromara.system.controller.system;
|
|||||||
|
|
||||||
import cn.dev33.satoken.annotation.SaCheckPermission;
|
import cn.dev33.satoken.annotation.SaCheckPermission;
|
||||||
import cn.hutool.core.convert.Convert;
|
import cn.hutool.core.convert.Convert;
|
||||||
|
import cn.hutool.core.lang.tree.Tree;
|
||||||
import lombok.RequiredArgsConstructor;
|
import lombok.RequiredArgsConstructor;
|
||||||
import org.dromara.common.core.constant.SystemConstants;
|
import org.dromara.common.core.constant.SystemConstants;
|
||||||
import org.dromara.common.core.domain.R;
|
import org.dromara.common.core.domain.R;
|
||||||
@ -56,6 +57,15 @@ public class SysDeptController extends BaseController {
|
|||||||
return R.ok(depts);
|
return R.ok(depts);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 根据项目id获取部门树以及岗位列表
|
||||||
|
*/
|
||||||
|
@GetMapping("/list/tree")
|
||||||
|
public R<List<Tree<Long>>> listTreeByProjectId() {
|
||||||
|
List<Tree<Long>> tree = deptService.buildDeptTree();
|
||||||
|
return R.ok(tree);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 根据部门编号获取详细信息
|
* 根据部门编号获取详细信息
|
||||||
*
|
*
|
||||||
|
|||||||
@ -4,6 +4,7 @@ import cn.dev33.satoken.annotation.SaCheckPermission;
|
|||||||
import cn.dev33.satoken.annotation.SaCheckRole;
|
import cn.dev33.satoken.annotation.SaCheckRole;
|
||||||
import cn.dev33.satoken.annotation.SaMode;
|
import cn.dev33.satoken.annotation.SaMode;
|
||||||
import cn.hutool.core.lang.tree.Tree;
|
import cn.hutool.core.lang.tree.Tree;
|
||||||
|
import jakarta.validation.constraints.NotNull;
|
||||||
import lombok.RequiredArgsConstructor;
|
import lombok.RequiredArgsConstructor;
|
||||||
import org.dromara.common.core.constant.SystemConstants;
|
import org.dromara.common.core.constant.SystemConstants;
|
||||||
import org.dromara.common.core.constant.TenantConstants;
|
import org.dromara.common.core.constant.TenantConstants;
|
||||||
@ -23,6 +24,7 @@ import org.springframework.web.bind.annotation.*;
|
|||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 菜单信息
|
* 菜单信息
|
||||||
@ -42,9 +44,15 @@ public class SysMenuController extends BaseController {
|
|||||||
*
|
*
|
||||||
* @return 路由信息
|
* @return 路由信息
|
||||||
*/
|
*/
|
||||||
@GetMapping("/getRouters")
|
@GetMapping("/getRouters/{projectId}")
|
||||||
public R<List<RouterVo>> getRouters() {
|
public R<List<RouterVo>> getRouters(@NotNull(message = "项目主键不能为空")
|
||||||
List<SysMenu> menus = menuService.selectMenuTreeByUserId(LoginHelper.getUserId());
|
@PathVariable Long projectId, String menuSource) {
|
||||||
|
List<SysMenu> menus = menuService.selectMenuTreeByUserId(LoginHelper.getUserId(), projectId);
|
||||||
|
if ("2".equals(menuSource)) {
|
||||||
|
menus = menus.stream().filter(menu -> "2".equals(menu.getMenuSource())).collect(Collectors.toList());
|
||||||
|
} else {
|
||||||
|
menus = menus.stream().filter(menu -> "1".equals(menu.getMenuSource())).collect(Collectors.toList());
|
||||||
|
}
|
||||||
return R.ok(menuService.buildMenus(menus));
|
return R.ok(menuService.buildMenus(menus));
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -94,7 +102,9 @@ public class SysMenuController extends BaseController {
|
|||||||
*/
|
*/
|
||||||
@SaCheckPermission("system:menu:query")
|
@SaCheckPermission("system:menu:query")
|
||||||
@GetMapping(value = "/roleMenuTreeselect/{roleId}")
|
@GetMapping(value = "/roleMenuTreeselect/{roleId}")
|
||||||
public R<MenuTreeSelectVo> roleMenuTreeselect(@PathVariable("roleId") Long roleId) {
|
public R<MenuTreeSelectVo> roleMenuTreeselect(@PathVariable("roleId") Long roleId, String menuSource) {
|
||||||
|
SysMenuBo sysMenuBo = new SysMenuBo();
|
||||||
|
sysMenuBo.setMenuSource(menuSource);
|
||||||
List<SysMenuVo> menus = menuService.selectMenuList(LoginHelper.getUserId());
|
List<SysMenuVo> menus = menuService.selectMenuList(LoginHelper.getUserId());
|
||||||
MenuTreeSelectVo selectVo = new MenuTreeSelectVo(
|
MenuTreeSelectVo selectVo = new MenuTreeSelectVo(
|
||||||
menuService.selectMenuListByRoleId(roleId),
|
menuService.selectMenuListByRoleId(roleId),
|
||||||
|
|||||||
@ -15,6 +15,7 @@ import org.dromara.system.domain.SysUserRole;
|
|||||||
import org.dromara.system.domain.bo.SysDeptBo;
|
import org.dromara.system.domain.bo.SysDeptBo;
|
||||||
import org.dromara.system.domain.bo.SysRoleBo;
|
import org.dromara.system.domain.bo.SysRoleBo;
|
||||||
import org.dromara.system.domain.bo.SysUserBo;
|
import org.dromara.system.domain.bo.SysUserBo;
|
||||||
|
import org.dromara.system.domain.vo.SysDeptVo;
|
||||||
import org.dromara.system.domain.vo.SysRoleVo;
|
import org.dromara.system.domain.vo.SysRoleVo;
|
||||||
import org.dromara.system.domain.vo.SysUserVo;
|
import org.dromara.system.domain.vo.SysUserVo;
|
||||||
import org.dromara.system.service.ISysDeptService;
|
import org.dromara.system.service.ISysDeptService;
|
||||||
@ -49,6 +50,15 @@ public class SysRoleController extends BaseController {
|
|||||||
return roleService.selectPageRoleList(role, pageQuery);
|
return roleService.selectPageRoleList(role, pageQuery);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获取角色信息列表(不分页)
|
||||||
|
*/
|
||||||
|
@SaCheckPermission("system:role:list")
|
||||||
|
@GetMapping("/listNoPage")
|
||||||
|
public R<List<SysRoleVo>> listNoPage(SysRoleBo role) {
|
||||||
|
return R.ok(roleService.selectRoleList(role));
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 导出角色信息列表
|
* 导出角色信息列表
|
||||||
*/
|
*/
|
||||||
@ -85,6 +95,17 @@ public class SysRoleController extends BaseController {
|
|||||||
} else if (!roleService.checkRoleKeyUnique(role)) {
|
} else if (!roleService.checkRoleKeyUnique(role)) {
|
||||||
return R.fail("新增角色'" + role.getRoleName() + "'失败,角色权限已存在");
|
return R.fail("新增角色'" + role.getRoleName() + "'失败,角色权限已存在");
|
||||||
}
|
}
|
||||||
|
Long deptId = role.getDeptId();
|
||||||
|
if (deptId == null) {
|
||||||
|
return R.fail("新增角色'" + role.getRoleName() + "'失败,请选择关联的部门");
|
||||||
|
}
|
||||||
|
SysDeptVo deptVo = deptService.selectDeptById(deptId);
|
||||||
|
if (deptVo == null) {
|
||||||
|
return R.fail("新增角色'" + role.getRoleName() + "'失败,关联的部门不存在");
|
||||||
|
}
|
||||||
|
if (deptVo.getParentId() == 0) {
|
||||||
|
return R.fail("新增角色'" + role.getRoleName() + "'失败,关联的部门不能为顶级部门");
|
||||||
|
}
|
||||||
return toAjax(roleService.insertRole(role));
|
return toAjax(roleService.insertRole(role));
|
||||||
|
|
||||||
}
|
}
|
||||||
@ -103,7 +124,17 @@ public class SysRoleController extends BaseController {
|
|||||||
} else if (!roleService.checkRoleKeyUnique(role)) {
|
} else if (!roleService.checkRoleKeyUnique(role)) {
|
||||||
return R.fail("修改角色'" + role.getRoleName() + "'失败,角色权限已存在");
|
return R.fail("修改角色'" + role.getRoleName() + "'失败,角色权限已存在");
|
||||||
}
|
}
|
||||||
|
Long deptId = role.getDeptId();
|
||||||
|
if (deptId == null) {
|
||||||
|
return R.fail("新增角色'" + role.getRoleName() + "'失败,请选择关联的部门");
|
||||||
|
}
|
||||||
|
SysDeptVo deptVo = deptService.selectDeptById(deptId);
|
||||||
|
if (deptVo == null) {
|
||||||
|
return R.fail("新增角色'" + role.getRoleName() + "'失败,关联的部门不存在");
|
||||||
|
}
|
||||||
|
if (deptVo.getParentId() == 0) {
|
||||||
|
return R.fail("新增角色'" + role.getRoleName() + "'失败,关联的部门不能为顶级部门");
|
||||||
|
}
|
||||||
if (roleService.updateRole(role) > 0) {
|
if (roleService.updateRole(role) > 0) {
|
||||||
roleService.cleanOnlineUserByRole(role.getRoleId());
|
roleService.cleanOnlineUserByRole(role.getRoleId());
|
||||||
return R.ok();
|
return R.ok();
|
||||||
|
|||||||
@ -1,14 +1,13 @@
|
|||||||
package org.dromara.system.controller.system;
|
package org.dromara.system.controller.system;
|
||||||
|
|
||||||
import cn.dev33.satoken.annotation.SaCheckPermission;
|
import cn.dev33.satoken.annotation.SaCheckPermission;
|
||||||
import cn.hutool.crypto.digest.BCrypt;
|
|
||||||
import cn.hutool.core.lang.tree.Tree;
|
import cn.hutool.core.lang.tree.Tree;
|
||||||
import cn.hutool.core.util.ArrayUtil;
|
import cn.hutool.core.util.ArrayUtil;
|
||||||
import cn.hutool.core.util.ObjectUtil;
|
import cn.hutool.core.util.ObjectUtil;
|
||||||
|
import cn.hutool.crypto.digest.BCrypt;
|
||||||
import jakarta.servlet.http.HttpServletResponse;
|
import jakarta.servlet.http.HttpServletResponse;
|
||||||
import jakarta.validation.constraints.NotNull;
|
import jakarta.validation.constraints.NotNull;
|
||||||
import lombok.RequiredArgsConstructor;
|
import lombok.RequiredArgsConstructor;
|
||||||
import org.dromara.common.core.constant.SystemConstants;
|
|
||||||
import org.dromara.common.core.domain.R;
|
import org.dromara.common.core.domain.R;
|
||||||
import org.dromara.common.core.utils.StreamUtils;
|
import org.dromara.common.core.utils.StreamUtils;
|
||||||
import org.dromara.common.core.utils.StringUtils;
|
import org.dromara.common.core.utils.StringUtils;
|
||||||
@ -25,8 +24,8 @@ import org.dromara.common.web.core.BaseController;
|
|||||||
import org.dromara.system.api.model.LoginUser;
|
import org.dromara.system.api.model.LoginUser;
|
||||||
import org.dromara.system.domain.bo.SysDeptBo;
|
import org.dromara.system.domain.bo.SysDeptBo;
|
||||||
import org.dromara.system.domain.bo.SysPostBo;
|
import org.dromara.system.domain.bo.SysPostBo;
|
||||||
import org.dromara.system.domain.bo.SysRoleBo;
|
|
||||||
import org.dromara.system.domain.bo.SysUserBo;
|
import org.dromara.system.domain.bo.SysUserBo;
|
||||||
|
import org.dromara.system.domain.dto.role.SysRoleProjectDto;
|
||||||
import org.dromara.system.domain.vo.*;
|
import org.dromara.system.domain.vo.*;
|
||||||
import org.dromara.system.listener.SysUserImportListener;
|
import org.dromara.system.listener.SysUserImportListener;
|
||||||
import org.dromara.system.service.*;
|
import org.dromara.system.service.*;
|
||||||
@ -134,7 +133,7 @@ public class SysUserController extends BaseController {
|
|||||||
userService.checkUserDataScope(userId);
|
userService.checkUserDataScope(userId);
|
||||||
SysUserVo sysUser = userService.selectUserById(userId);
|
SysUserVo sysUser = userService.selectUserById(userId);
|
||||||
userInfoVo.setUser(sysUser);
|
userInfoVo.setUser(sysUser);
|
||||||
userInfoVo.setRoleIds(roleService.selectRoleListByUserId(userId));
|
// userInfoVo.setRoleIds(roleService.selectRoleListByUserId(userId));
|
||||||
Long deptId = sysUser.getDeptId();
|
Long deptId = sysUser.getDeptId();
|
||||||
if (ObjectUtil.isNotNull(deptId)) {
|
if (ObjectUtil.isNotNull(deptId)) {
|
||||||
SysPostBo postBo = new SysPostBo();
|
SysPostBo postBo = new SysPostBo();
|
||||||
@ -142,11 +141,12 @@ public class SysUserController extends BaseController {
|
|||||||
userInfoVo.setPosts(postService.selectPostList(postBo));
|
userInfoVo.setPosts(postService.selectPostList(postBo));
|
||||||
userInfoVo.setPostIds(postService.selectPostListByUserId(userId));
|
userInfoVo.setPostIds(postService.selectPostListByUserId(userId));
|
||||||
}
|
}
|
||||||
|
userInfoVo.setProjectRoles(roleService.selectRoleProjectList(userId));
|
||||||
}
|
}
|
||||||
SysRoleBo roleBo = new SysRoleBo();
|
/* SysRoleBo roleBo = new SysRoleBo();
|
||||||
roleBo.setStatus(SystemConstants.NORMAL);
|
roleBo.setStatus(SystemConstants.NORMAL);
|
||||||
List<SysRoleVo> roles = roleService.selectRoleList(roleBo);
|
List<SysRoleVo> roles = roleService.selectRoleList(roleBo);
|
||||||
userInfoVo.setRoles(LoginHelper.isSuperAdmin(userId) ? roles : StreamUtils.filter(roles, r -> !r.isSuperAdmin()));
|
userInfoVo.setRoles(LoginHelper.isSuperAdmin(userId) ? roles : StreamUtils.filter(roles, r -> !r.isSuperAdmin()));*/
|
||||||
return R.ok(userInfoVo);
|
return R.ok(userInfoVo);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -158,8 +158,17 @@ public class SysUserController extends BaseController {
|
|||||||
@PostMapping
|
@PostMapping
|
||||||
public R<Void> add(@Validated @RequestBody SysUserBo user) {
|
public R<Void> add(@Validated @RequestBody SysUserBo user) {
|
||||||
deptService.checkDeptDataScope(user.getDeptId());
|
deptService.checkDeptDataScope(user.getDeptId());
|
||||||
|
// 去重后的所有 roleId
|
||||||
|
List<Long> roleList = user.getProjectRoles().stream()
|
||||||
|
.filter(dto -> dto.getRoleIds() != null)
|
||||||
|
.flatMap(dto -> dto.getRoleIds().stream())
|
||||||
|
.distinct()
|
||||||
|
.toList();
|
||||||
|
deptService.checkDeptMatchRole(user.getUserId(), roleList);
|
||||||
if (!userService.checkUserNameUnique(user)) {
|
if (!userService.checkUserNameUnique(user)) {
|
||||||
return R.fail("新增用户'" + user.getUserName() + "'失败,登录账号已存在");
|
return R.fail("新增用户'" + user.getUserName() + "'失败,登录账号已存在");
|
||||||
|
} else if (StringUtils.isEmpty(user.getPhonenumber())) {
|
||||||
|
return R.fail("新增用户'" + user.getUserName() + "'失败,手机号不能为空");
|
||||||
} else if (StringUtils.isNotEmpty(user.getPhonenumber()) && !userService.checkPhoneUnique(user)) {
|
} else if (StringUtils.isNotEmpty(user.getPhonenumber()) && !userService.checkPhoneUnique(user)) {
|
||||||
return R.fail("新增用户'" + user.getUserName() + "'失败,手机号码已存在");
|
return R.fail("新增用户'" + user.getUserName() + "'失败,手机号码已存在");
|
||||||
} else if (StringUtils.isNotEmpty(user.getEmail()) && !userService.checkEmailUnique(user)) {
|
} else if (StringUtils.isNotEmpty(user.getEmail()) && !userService.checkEmailUnique(user)) {
|
||||||
@ -184,8 +193,17 @@ public class SysUserController extends BaseController {
|
|||||||
userService.checkUserAllowed(user.getUserId());
|
userService.checkUserAllowed(user.getUserId());
|
||||||
userService.checkUserDataScope(user.getUserId());
|
userService.checkUserDataScope(user.getUserId());
|
||||||
deptService.checkDeptDataScope(user.getDeptId());
|
deptService.checkDeptDataScope(user.getDeptId());
|
||||||
|
// 去重后的所有 roleId
|
||||||
|
List<Long> roleList = user.getProjectRoles().stream()
|
||||||
|
.filter(dto -> dto.getRoleIds() != null)
|
||||||
|
.flatMap(dto -> dto.getRoleIds().stream())
|
||||||
|
.distinct()
|
||||||
|
.toList();
|
||||||
|
deptService.checkDeptMatchRole(user.getUserId(), roleList);
|
||||||
if (!userService.checkUserNameUnique(user)) {
|
if (!userService.checkUserNameUnique(user)) {
|
||||||
return R.fail("修改用户'" + user.getUserName() + "'失败,登录账号已存在");
|
return R.fail("修改用户'" + user.getUserName() + "'失败,登录账号已存在");
|
||||||
|
} else if (StringUtils.isEmpty(user.getPhonenumber())) {
|
||||||
|
return R.fail("修改用户'" + user.getUserName() + "'失败,手机号不能为空");
|
||||||
} else if (StringUtils.isNotEmpty(user.getPhonenumber()) && !userService.checkPhoneUnique(user)) {
|
} else if (StringUtils.isNotEmpty(user.getPhonenumber()) && !userService.checkPhoneUnique(user)) {
|
||||||
return R.fail("修改用户'" + user.getUserName() + "'失败,手机号码已存在");
|
return R.fail("修改用户'" + user.getUserName() + "'失败,手机号码已存在");
|
||||||
} else if (StringUtils.isNotEmpty(user.getEmail()) && !userService.checkEmailUnique(user)) {
|
} else if (StringUtils.isNotEmpty(user.getEmail()) && !userService.checkEmailUnique(user)) {
|
||||||
@ -268,15 +286,15 @@ public class SysUserController extends BaseController {
|
|||||||
/**
|
/**
|
||||||
* 用户授权角色
|
* 用户授权角色
|
||||||
*
|
*
|
||||||
* @param userId 用户Id
|
* @param userId 用户Id
|
||||||
* @param roleIds 角色ID串
|
* @param projectRoles 项目、角色关联列表
|
||||||
*/
|
*/
|
||||||
@SaCheckPermission("system:user:edit")
|
@SaCheckPermission("system:user:edit")
|
||||||
@Log(title = "用户管理", businessType = BusinessType.GRANT)
|
@Log(title = "用户管理", businessType = BusinessType.GRANT)
|
||||||
@PutMapping("/authRole")
|
@PutMapping("/authRole")
|
||||||
public R<Void> insertAuthRole(Long userId, Long[] roleIds) {
|
public R<Void> insertAuthRole(Long userId, List<SysRoleProjectDto> projectRoles) {
|
||||||
userService.checkUserDataScope(userId);
|
userService.checkUserDataScope(userId);
|
||||||
userService.insertUserAuth(userId, roleIds);
|
userService.insertUserAuth(userId, projectRoles);
|
||||||
return R.ok();
|
return R.ok();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -0,0 +1,159 @@
|
|||||||
|
package org.dromara.system.domain;
|
||||||
|
|
||||||
|
import com.baomidou.mybatisplus.annotation.TableId;
|
||||||
|
import com.baomidou.mybatisplus.annotation.TableLogic;
|
||||||
|
import com.baomidou.mybatisplus.annotation.TableName;
|
||||||
|
import lombok.Data;
|
||||||
|
import lombok.EqualsAndHashCode;
|
||||||
|
import org.dromara.common.mybatis.core.domain.BaseEntity;
|
||||||
|
|
||||||
|
import java.io.Serial;
|
||||||
|
import java.util.Date;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 项目对象 project
|
||||||
|
*
|
||||||
|
* @author lilemy
|
||||||
|
* @date 2025-03-04
|
||||||
|
*/
|
||||||
|
@Data
|
||||||
|
@EqualsAndHashCode(callSuper = true)
|
||||||
|
@TableName("bus_project")
|
||||||
|
public class BusProject extends BaseEntity {
|
||||||
|
|
||||||
|
@Serial
|
||||||
|
private static final long serialVersionUID = 1L;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* id
|
||||||
|
*/
|
||||||
|
@TableId(value = "id")
|
||||||
|
private Long id;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 项目名称
|
||||||
|
*/
|
||||||
|
private String projectName;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 项目简称
|
||||||
|
*/
|
||||||
|
private String shortName;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 父项目ID
|
||||||
|
*/
|
||||||
|
private Long parentId;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 状态(0正常 1停用)
|
||||||
|
*/
|
||||||
|
private String status;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 项目图片
|
||||||
|
*/
|
||||||
|
private String picUrl;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 经度
|
||||||
|
*/
|
||||||
|
private String lng;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 纬度
|
||||||
|
*/
|
||||||
|
private String lat;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 备注
|
||||||
|
*/
|
||||||
|
private String remark;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 项目类型
|
||||||
|
*/
|
||||||
|
private String projectType;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 项目阶段
|
||||||
|
*/
|
||||||
|
private String projectStage;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 删除时间
|
||||||
|
*/
|
||||||
|
private Date deletedAt;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 项目地址
|
||||||
|
*/
|
||||||
|
private String projectSite;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 负责人
|
||||||
|
*/
|
||||||
|
private String principal;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 负责人电话
|
||||||
|
*/
|
||||||
|
private String principalPhone;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 实际容量
|
||||||
|
*/
|
||||||
|
private String actual;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 计划容量
|
||||||
|
*/
|
||||||
|
private String plan;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 开工时间
|
||||||
|
*/
|
||||||
|
private String onStreamTime;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 打卡范围(09:00,18:00)
|
||||||
|
*/
|
||||||
|
private String punchRange;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 设计总量
|
||||||
|
*/
|
||||||
|
private Long designTotal;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 安全协议书
|
||||||
|
*/
|
||||||
|
private String securityAgreement;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 招标文件
|
||||||
|
*/
|
||||||
|
private String tenderFiles;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 项目概括
|
||||||
|
*/
|
||||||
|
private String projectGeneralize;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 排序字段
|
||||||
|
*/
|
||||||
|
private Long sort;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 显示隐藏(0显示 1隐藏)
|
||||||
|
*/
|
||||||
|
private String showHidden;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 是否删除(0正常 1删除)
|
||||||
|
*/
|
||||||
|
@TableLogic
|
||||||
|
private Long isDelete;
|
||||||
|
|
||||||
|
}
|
||||||
@ -0,0 +1,65 @@
|
|||||||
|
package org.dromara.system.domain;
|
||||||
|
|
||||||
|
import com.baomidou.mybatisplus.annotation.TableId;
|
||||||
|
import com.baomidou.mybatisplus.annotation.TableName;
|
||||||
|
import lombok.Data;
|
||||||
|
|
||||||
|
import java.io.Serial;
|
||||||
|
import java.io.Serializable;
|
||||||
|
import java.util.Date;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 项目文件存储对象 bus_project_file
|
||||||
|
*
|
||||||
|
* @author lilemy
|
||||||
|
* @date 2025-04-23
|
||||||
|
*/
|
||||||
|
@Data
|
||||||
|
@TableName("bus_project_file")
|
||||||
|
public class BusProjectFile implements Serializable {
|
||||||
|
|
||||||
|
@Serial
|
||||||
|
private static final long serialVersionUID = 1L;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 主键id
|
||||||
|
*/
|
||||||
|
@TableId(value = "id")
|
||||||
|
private Long id;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 项目id
|
||||||
|
*/
|
||||||
|
private Long projectId;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 文件类型
|
||||||
|
*/
|
||||||
|
private String fileType;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 文件名称
|
||||||
|
*/
|
||||||
|
private String fileName;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 文件路径
|
||||||
|
*/
|
||||||
|
private String filePath;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 备注
|
||||||
|
*/
|
||||||
|
private String remark;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 创建时间
|
||||||
|
*/
|
||||||
|
private Date createTime;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 更新时间
|
||||||
|
*/
|
||||||
|
private Date updateTime;
|
||||||
|
|
||||||
|
}
|
||||||
@ -0,0 +1,51 @@
|
|||||||
|
package org.dromara.system.domain;
|
||||||
|
|
||||||
|
import com.baomidou.mybatisplus.annotation.TableId;
|
||||||
|
import com.baomidou.mybatisplus.annotation.TableName;
|
||||||
|
import lombok.Data;
|
||||||
|
import lombok.EqualsAndHashCode;
|
||||||
|
import org.dromara.common.mybatis.core.domain.BaseEntity;
|
||||||
|
|
||||||
|
import java.io.Serial;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 项目新闻对象 bus_project_news
|
||||||
|
*
|
||||||
|
* @author lilemy
|
||||||
|
* @date 2025-04-28
|
||||||
|
*/
|
||||||
|
@Data
|
||||||
|
@EqualsAndHashCode(callSuper = true)
|
||||||
|
@TableName("bus_project_news")
|
||||||
|
public class BusProjectNews extends BaseEntity {
|
||||||
|
|
||||||
|
@Serial
|
||||||
|
private static final long serialVersionUID = 1L;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 主键id
|
||||||
|
*/
|
||||||
|
@TableId(value = "id")
|
||||||
|
private Long id;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 项目id
|
||||||
|
*/
|
||||||
|
private Long projectId;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 标题
|
||||||
|
*/
|
||||||
|
private String title;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 内容
|
||||||
|
*/
|
||||||
|
private String content;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 附件
|
||||||
|
*/
|
||||||
|
private String file;
|
||||||
|
|
||||||
|
}
|
||||||
@ -0,0 +1,50 @@
|
|||||||
|
package org.dromara.system.domain;
|
||||||
|
|
||||||
|
import com.baomidou.mybatisplus.annotation.TableId;
|
||||||
|
import com.baomidou.mybatisplus.annotation.TableName;
|
||||||
|
import lombok.Data;
|
||||||
|
|
||||||
|
import java.io.Serial;
|
||||||
|
import java.io.Serializable;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 项目打卡范围对象 bus_project_punchrange
|
||||||
|
*
|
||||||
|
* @author Lion Li
|
||||||
|
* @date 2025-07-28
|
||||||
|
*/
|
||||||
|
@Data
|
||||||
|
@TableName("bus_project_punchrange")
|
||||||
|
public class BusProjectPunchrange implements Serializable {
|
||||||
|
|
||||||
|
@Serial
|
||||||
|
private static final long serialVersionUID = 1L;
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
@TableId(value = "id")
|
||||||
|
private Long id;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 项目ID
|
||||||
|
*/
|
||||||
|
private Long projectId;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 范围名称
|
||||||
|
*/
|
||||||
|
private String punchName;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 打卡范围
|
||||||
|
*/
|
||||||
|
private String punchRange;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 颜色
|
||||||
|
*/
|
||||||
|
private String punchColor;
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
@ -0,0 +1,44 @@
|
|||||||
|
package org.dromara.system.domain;
|
||||||
|
|
||||||
|
import com.baomidou.mybatisplus.annotation.TableId;
|
||||||
|
import com.baomidou.mybatisplus.annotation.TableName;
|
||||||
|
import lombok.Data;
|
||||||
|
|
||||||
|
import java.io.Serial;
|
||||||
|
import java.io.Serializable;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 系统用户与项目关联对象 user_project_relevancy
|
||||||
|
*
|
||||||
|
* @author lilemy
|
||||||
|
* @date 2025-03-04
|
||||||
|
*/
|
||||||
|
@Data
|
||||||
|
@TableName("bus_user_project_relevancy")
|
||||||
|
public class BusUserProjectRelevancy implements Serializable {
|
||||||
|
|
||||||
|
@Serial
|
||||||
|
private static final long serialVersionUID = 1L;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 主键ID
|
||||||
|
*/
|
||||||
|
@TableId(value = "id")
|
||||||
|
private Long id;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 用户ID
|
||||||
|
*/
|
||||||
|
private Long userId;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 项目ID
|
||||||
|
*/
|
||||||
|
private Long projectId;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 用户类型(0系统管理员 1普通人员 2项目管理员)
|
||||||
|
*/
|
||||||
|
private String userType;
|
||||||
|
|
||||||
|
}
|
||||||
@ -106,6 +106,11 @@ public class SysMenu extends BaseEntity {
|
|||||||
@TableField(exist = false)
|
@TableField(exist = false)
|
||||||
private String parentName;
|
private String parentName;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 菜单类型(menu_source) 1-web2-app
|
||||||
|
*/
|
||||||
|
private String menuSource;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 子菜单
|
* 子菜单
|
||||||
*/
|
*/
|
||||||
|
|||||||
@ -26,6 +26,11 @@ public class SysRole extends TenantEntity {
|
|||||||
@TableId(value = "role_id")
|
@TableId(value = "role_id")
|
||||||
private Long roleId;
|
private Long roleId;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 部门ID
|
||||||
|
*/
|
||||||
|
private Long deptId;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 角色名称
|
* 角色名称
|
||||||
*/
|
*/
|
||||||
|
|||||||
@ -26,4 +26,9 @@ public class SysUserRole {
|
|||||||
*/
|
*/
|
||||||
private Long roleId;
|
private Long roleId;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 项目ID
|
||||||
|
*/
|
||||||
|
private Long projectId;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@ -0,0 +1,51 @@
|
|||||||
|
package org.dromara.system.domain.bo;
|
||||||
|
|
||||||
|
import io.github.linpeilie.annotations.AutoMapper;
|
||||||
|
import jakarta.validation.constraints.NotNull;
|
||||||
|
import lombok.Data;
|
||||||
|
import lombok.EqualsAndHashCode;
|
||||||
|
import org.dromara.common.core.validate.AddGroup;
|
||||||
|
import org.dromara.common.core.validate.EditGroup;
|
||||||
|
import org.dromara.common.mybatis.core.domain.BaseEntity;
|
||||||
|
import org.dromara.system.domain.BusProjectPunchrange;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 项目打卡范围业务对象 bus_project_punchrange
|
||||||
|
*
|
||||||
|
* @author Lion Li
|
||||||
|
* @date 2025-07-28
|
||||||
|
*/
|
||||||
|
@Data
|
||||||
|
@EqualsAndHashCode(callSuper = true)
|
||||||
|
@AutoMapper(target = BusProjectPunchrange.class, reverseConvertGenerate = false)
|
||||||
|
public class BusProjectPunchrangeBo extends BaseEntity {
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
@NotNull(message = "不能为空", groups = {EditGroup.class})
|
||||||
|
private Long id;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 项目ID
|
||||||
|
*/
|
||||||
|
@NotNull(message = "项目ID不能为空", groups = {AddGroup.class, EditGroup.class})
|
||||||
|
private Long projectId;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 范围名称
|
||||||
|
*/
|
||||||
|
private String punchName;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 打卡范围
|
||||||
|
*/
|
||||||
|
private String punchRange;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 颜色
|
||||||
|
*/
|
||||||
|
private String punchColor;
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
@ -0,0 +1,39 @@
|
|||||||
|
package org.dromara.system.domain.bo;
|
||||||
|
|
||||||
|
import jakarta.validation.constraints.NotNull;
|
||||||
|
import lombok.Data;
|
||||||
|
|
||||||
|
import java.io.Serializable;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @Author 铁憨憨
|
||||||
|
* @Date 2025/7/28 19:15
|
||||||
|
* @Version 1.0
|
||||||
|
*/
|
||||||
|
|
||||||
|
@Data
|
||||||
|
public class Punchrange implements Serializable {
|
||||||
|
/**
|
||||||
|
* 项目ID
|
||||||
|
*/
|
||||||
|
@NotNull(message = "项目ID不能为空")
|
||||||
|
private Long projectId;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 范围名称
|
||||||
|
*/
|
||||||
|
@NotNull(message = "范围名称不能为空")
|
||||||
|
private String punchName;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 打卡范围
|
||||||
|
*/
|
||||||
|
@NotNull(message = "打卡范围不能为空")
|
||||||
|
private String punchRange;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 颜色
|
||||||
|
*/
|
||||||
|
@NotNull(message = "颜色不能为空")
|
||||||
|
private String punchColor;
|
||||||
|
}
|
||||||
@ -7,6 +7,8 @@ import lombok.EqualsAndHashCode;
|
|||||||
import org.dromara.common.mybatis.core.domain.BaseEntity;
|
import org.dromara.common.mybatis.core.domain.BaseEntity;
|
||||||
import org.dromara.system.domain.SysDept;
|
import org.dromara.system.domain.SysDept;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 部门业务对象 sys_dept
|
* 部门业务对象 sys_dept
|
||||||
*
|
*
|
||||||
@ -33,16 +35,6 @@ public class SysDeptBo extends BaseEntity {
|
|||||||
*/
|
*/
|
||||||
private Long projectId;
|
private Long projectId;
|
||||||
|
|
||||||
/**
|
|
||||||
* 项目部门项目id
|
|
||||||
*/
|
|
||||||
private Long rowProjectId;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 分包公司ID
|
|
||||||
*/
|
|
||||||
private Long contractorId;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 部门名称
|
* 部门名称
|
||||||
*/
|
*/
|
||||||
@ -96,9 +88,8 @@ public class SysDeptBo extends BaseEntity {
|
|||||||
*/
|
*/
|
||||||
@NotBlank(message = "部门类型不能为空")
|
@NotBlank(message = "部门类型不能为空")
|
||||||
private String deptType;
|
private String deptType;
|
||||||
// /**
|
|
||||||
// * 归属部门id(部门树)
|
private List<String> deptTypes;
|
||||||
// */
|
|
||||||
// private Long belongDeptId;
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@ -107,5 +107,10 @@ public class SysMenuBo extends BaseEntity {
|
|||||||
*/
|
*/
|
||||||
private String remark;
|
private String remark;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 菜单类型(menu_source) 1-web2-app
|
||||||
|
*/
|
||||||
|
private String menuSource;
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@ -28,6 +28,16 @@ public class SysRoleBo extends BaseEntity {
|
|||||||
*/
|
*/
|
||||||
private Long roleId;
|
private Long roleId;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 部门ID
|
||||||
|
*/
|
||||||
|
private Long deptId;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 角色类型 1-web 2-app
|
||||||
|
*/
|
||||||
|
private String roleSource;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 角色名称
|
* 角色名称
|
||||||
*/
|
*/
|
||||||
|
|||||||
@ -11,6 +11,9 @@ import org.dromara.common.core.constant.SystemConstants;
|
|||||||
import org.dromara.common.core.xss.Xss;
|
import org.dromara.common.core.xss.Xss;
|
||||||
import org.dromara.common.mybatis.core.domain.BaseEntity;
|
import org.dromara.common.mybatis.core.domain.BaseEntity;
|
||||||
import org.dromara.system.domain.SysUser;
|
import org.dromara.system.domain.SysUser;
|
||||||
|
import org.dromara.system.domain.dto.role.SysRoleProjectDto;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 用户信息业务对象 sys_user
|
* 用户信息业务对象 sys_user
|
||||||
@ -98,6 +101,11 @@ public class SysUserBo extends BaseEntity {
|
|||||||
*/
|
*/
|
||||||
private Long[] postIds;
|
private Long[] postIds;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 项目角色关联
|
||||||
|
*/
|
||||||
|
private List<SysRoleProjectDto> projectRoles;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 数据权限 当前角色ID
|
* 数据权限 当前角色ID
|
||||||
*/
|
*/
|
||||||
|
|||||||
@ -0,0 +1,29 @@
|
|||||||
|
package org.dromara.system.domain.dto.project;
|
||||||
|
|
||||||
|
import lombok.Data;
|
||||||
|
|
||||||
|
import java.io.Serial;
|
||||||
|
import java.io.Serializable;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author lilemy
|
||||||
|
* @date 2025/3/5 17:16
|
||||||
|
*/
|
||||||
|
@Data
|
||||||
|
public class BusProjectBatchByProjectListReq implements Serializable {
|
||||||
|
|
||||||
|
@Serial
|
||||||
|
private static final long serialVersionUID = -3366498681076059844L;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 用户ID
|
||||||
|
*/
|
||||||
|
private Long userId;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 项目ID列表
|
||||||
|
*/
|
||||||
|
private List<Long> projectIdList;
|
||||||
|
|
||||||
|
}
|
||||||
@ -0,0 +1,127 @@
|
|||||||
|
package org.dromara.system.domain.dto.project;
|
||||||
|
|
||||||
|
import lombok.Data;
|
||||||
|
|
||||||
|
import java.io.Serial;
|
||||||
|
import java.io.Serializable;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author lilemy
|
||||||
|
* @date 2025/3/5 14:05
|
||||||
|
*/
|
||||||
|
@Data
|
||||||
|
public class BusProjectCreateReq implements Serializable {
|
||||||
|
|
||||||
|
@Serial
|
||||||
|
private static final long serialVersionUID = -7603153089205421154L;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 项目名称
|
||||||
|
*/
|
||||||
|
private String projectName;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 项目简称
|
||||||
|
*/
|
||||||
|
private String shortName;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 项目图片
|
||||||
|
*/
|
||||||
|
private String picUrl;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 经度
|
||||||
|
*/
|
||||||
|
private String lng;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 纬度
|
||||||
|
*/
|
||||||
|
private String lat;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 备注
|
||||||
|
*/
|
||||||
|
private String remark;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 项目类型
|
||||||
|
*/
|
||||||
|
private String projectType;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 项目阶段
|
||||||
|
*/
|
||||||
|
private String projectStage;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 项目地址
|
||||||
|
*/
|
||||||
|
private String projectSite;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 负责人
|
||||||
|
*/
|
||||||
|
private String principal;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 负责人电话
|
||||||
|
*/
|
||||||
|
private String principalPhone;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 实际容量
|
||||||
|
*/
|
||||||
|
private String actual;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 计划容量
|
||||||
|
*/
|
||||||
|
private String plan;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 开工时间
|
||||||
|
*/
|
||||||
|
private String onStreamTime;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 打卡时间开始
|
||||||
|
*/
|
||||||
|
private String playCardStart;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 打卡时间结束
|
||||||
|
*/
|
||||||
|
private String playCardEnd;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 设计总量
|
||||||
|
*/
|
||||||
|
private Long designTotal;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 安全协议书
|
||||||
|
*/
|
||||||
|
private String securityAgreement;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 招标文件
|
||||||
|
*/
|
||||||
|
private String tenderFiles;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 项目概括
|
||||||
|
*/
|
||||||
|
private String projectGeneralize;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 排序字段
|
||||||
|
*/
|
||||||
|
private Long sort;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 显示隐藏(0显示 1隐藏)
|
||||||
|
*/
|
||||||
|
private String showHidden;
|
||||||
|
}
|
||||||
@ -0,0 +1,28 @@
|
|||||||
|
package org.dromara.system.domain.dto.project;
|
||||||
|
|
||||||
|
import lombok.Data;
|
||||||
|
|
||||||
|
import java.io.Serial;
|
||||||
|
import java.io.Serializable;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author lilemy
|
||||||
|
* @date 2025/6/6 11:57
|
||||||
|
*/
|
||||||
|
@Data
|
||||||
|
public class BusProjectCreateSubReq implements Serializable {
|
||||||
|
|
||||||
|
@Serial
|
||||||
|
private static final long serialVersionUID = 6380055877986391291L;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 项目名称
|
||||||
|
*/
|
||||||
|
private String projectName;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 父项目ID
|
||||||
|
*/
|
||||||
|
private Long parentId;
|
||||||
|
|
||||||
|
}
|
||||||
@ -0,0 +1,67 @@
|
|||||||
|
package org.dromara.system.domain.dto.project;
|
||||||
|
|
||||||
|
import lombok.Data;
|
||||||
|
|
||||||
|
import java.io.Serial;
|
||||||
|
import java.io.Serializable;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author lilemy
|
||||||
|
* @date 2025/3/5 14:31
|
||||||
|
*/
|
||||||
|
@Data
|
||||||
|
public class BusProjectQueryReq implements Serializable {
|
||||||
|
|
||||||
|
@Serial
|
||||||
|
private static final long serialVersionUID = 5563677643070664671L;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 项目名称
|
||||||
|
*/
|
||||||
|
private String projectName;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 项目简称
|
||||||
|
*/
|
||||||
|
private String shortName;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 父项目id
|
||||||
|
*/
|
||||||
|
private Long parentId;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 状态(0正常 1停用)
|
||||||
|
*/
|
||||||
|
private String status;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 项目类型
|
||||||
|
*/
|
||||||
|
private String projectType;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 项目阶段
|
||||||
|
*/
|
||||||
|
private String projectStage;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 项目地址
|
||||||
|
*/
|
||||||
|
private String projectSite;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 负责人
|
||||||
|
*/
|
||||||
|
private String principal;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 负责人电话
|
||||||
|
*/
|
||||||
|
private String principalPhone;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 显示隐藏(0显示 1隐藏)
|
||||||
|
*/
|
||||||
|
private String showHidden;
|
||||||
|
}
|
||||||
@ -0,0 +1,31 @@
|
|||||||
|
package org.dromara.system.domain.dto.project;
|
||||||
|
|
||||||
|
import jakarta.validation.constraints.NotBlank;
|
||||||
|
import jakarta.validation.constraints.NotNull;
|
||||||
|
import lombok.Data;
|
||||||
|
|
||||||
|
import java.io.Serial;
|
||||||
|
import java.io.Serializable;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author lilemy
|
||||||
|
* @date 2025-08-19 17:34
|
||||||
|
*/
|
||||||
|
@Data
|
||||||
|
public class BusProjectSaveTenderFileReq implements Serializable {
|
||||||
|
|
||||||
|
@Serial
|
||||||
|
private static final long serialVersionUID = -8690332210810915922L;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* id
|
||||||
|
*/
|
||||||
|
@NotNull(message = "项目id不能为空")
|
||||||
|
private Long id;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 招标文件
|
||||||
|
*/
|
||||||
|
@NotBlank(message = "招标文件不能为空")
|
||||||
|
private String tenderFiles;
|
||||||
|
}
|
||||||
@ -0,0 +1,150 @@
|
|||||||
|
package org.dromara.system.domain.dto.project;
|
||||||
|
|
||||||
|
import lombok.Data;
|
||||||
|
import org.dromara.system.domain.bo.Punchrange;
|
||||||
|
|
||||||
|
import java.io.Serial;
|
||||||
|
import java.io.Serializable;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author lilemy
|
||||||
|
* @date 2025/3/5 15:04
|
||||||
|
*/
|
||||||
|
@Data
|
||||||
|
public class BusProjectUpdateReq implements Serializable {
|
||||||
|
|
||||||
|
@Serial
|
||||||
|
private static final long serialVersionUID = 3431952359907567659L;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* id
|
||||||
|
*/
|
||||||
|
private Long id;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 项目名称
|
||||||
|
*/
|
||||||
|
private String projectName;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 项目简称
|
||||||
|
*/
|
||||||
|
private String shortName;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 父项目id
|
||||||
|
*/
|
||||||
|
private Long parentId;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 状态(0正常 1停用)
|
||||||
|
*/
|
||||||
|
private String status;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 项目图片
|
||||||
|
*/
|
||||||
|
private String picUrl;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 经度
|
||||||
|
*/
|
||||||
|
private String lng;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 纬度
|
||||||
|
*/
|
||||||
|
private String lat;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 备注
|
||||||
|
*/
|
||||||
|
private String remark;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 项目类型
|
||||||
|
*/
|
||||||
|
private String projectType;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 项目阶段
|
||||||
|
*/
|
||||||
|
private String projectStage;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 项目地址
|
||||||
|
*/
|
||||||
|
private String projectSite;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 负责人
|
||||||
|
*/
|
||||||
|
private String principal;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 负责人电话
|
||||||
|
*/
|
||||||
|
private String principalPhone;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 实际容量
|
||||||
|
*/
|
||||||
|
private String actual;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 计划容量
|
||||||
|
*/
|
||||||
|
private String plan;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 开工时间
|
||||||
|
*/
|
||||||
|
private String onStreamTime;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 打卡时间开始
|
||||||
|
*/
|
||||||
|
private String playCardStart;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 打卡时间结束
|
||||||
|
*/
|
||||||
|
private String playCardEnd;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 设计总量
|
||||||
|
*/
|
||||||
|
private Long designTotal;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 安全协议书
|
||||||
|
*/
|
||||||
|
private String securityAgreement;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 招标文件
|
||||||
|
*/
|
||||||
|
private String tenderFiles;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 项目概括
|
||||||
|
*/
|
||||||
|
private String projectGeneralize;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 显示隐藏(0显示 1隐藏)
|
||||||
|
*/
|
||||||
|
private String showHidden;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 排序字段
|
||||||
|
*/
|
||||||
|
private Long sort;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 打卡范围
|
||||||
|
*/
|
||||||
|
private List<Punchrange> punchrangeList;
|
||||||
|
|
||||||
|
}
|
||||||
@ -0,0 +1,13 @@
|
|||||||
|
package org.dromara.system.domain.dto.project;
|
||||||
|
|
||||||
|
import lombok.Data;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author lilemy
|
||||||
|
* @date 2025-08-27 18:26
|
||||||
|
*/
|
||||||
|
@Data
|
||||||
|
public class ProjectPermsItem {
|
||||||
|
private Long projectId;
|
||||||
|
private String perms;
|
||||||
|
}
|
||||||
@ -0,0 +1,20 @@
|
|||||||
|
package org.dromara.system.domain.dto.project;
|
||||||
|
|
||||||
|
import lombok.Data;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author lilemy
|
||||||
|
* @date 2025-08-27 19:05
|
||||||
|
*/
|
||||||
|
@Data
|
||||||
|
public class ProjectRolesItem {
|
||||||
|
private Long projectId;
|
||||||
|
private Long roleId;
|
||||||
|
private String roleName;
|
||||||
|
private String roleKey;
|
||||||
|
private Long deptId;
|
||||||
|
private Integer roleSort;
|
||||||
|
private String dataScope;
|
||||||
|
private String status;
|
||||||
|
private String isSpecial;
|
||||||
|
}
|
||||||
@ -0,0 +1,33 @@
|
|||||||
|
package org.dromara.system.domain.dto.projectfile;
|
||||||
|
|
||||||
|
import lombok.Data;
|
||||||
|
|
||||||
|
import java.io.Serial;
|
||||||
|
import java.io.Serializable;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author lilemy
|
||||||
|
* @date 2025/4/23 14:16
|
||||||
|
*/
|
||||||
|
@Data
|
||||||
|
public class BusProjectFileQueryReq implements Serializable {
|
||||||
|
|
||||||
|
@Serial
|
||||||
|
private static final long serialVersionUID = 399401709402729491L;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 项目id
|
||||||
|
*/
|
||||||
|
private Long projectId;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 文件类型
|
||||||
|
*/
|
||||||
|
private String fileType;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 文件名称
|
||||||
|
*/
|
||||||
|
private String fileName;
|
||||||
|
|
||||||
|
}
|
||||||
@ -0,0 +1,38 @@
|
|||||||
|
package org.dromara.system.domain.dto.projectfile;
|
||||||
|
|
||||||
|
import lombok.Data;
|
||||||
|
|
||||||
|
import java.io.Serial;
|
||||||
|
import java.io.Serializable;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author lilemy
|
||||||
|
* @date 2025/4/23 14:18
|
||||||
|
*/
|
||||||
|
@Data
|
||||||
|
public class BusProjectFileUpdateReq implements Serializable {
|
||||||
|
|
||||||
|
@Serial
|
||||||
|
private static final long serialVersionUID = -5620479296452749930L;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 主键
|
||||||
|
*/
|
||||||
|
private Long id;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 项目id
|
||||||
|
*/
|
||||||
|
private Long projectId;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 文件名称
|
||||||
|
*/
|
||||||
|
private String fileName;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 备注
|
||||||
|
*/
|
||||||
|
private String remark;
|
||||||
|
|
||||||
|
}
|
||||||
@ -0,0 +1,23 @@
|
|||||||
|
package org.dromara.system.domain.dto.projectfile;
|
||||||
|
|
||||||
|
import lombok.Data;
|
||||||
|
|
||||||
|
import java.io.Serial;
|
||||||
|
import java.io.Serializable;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author lilemy
|
||||||
|
* @date 2025/4/23 11:43
|
||||||
|
*/
|
||||||
|
@Data
|
||||||
|
public class BusProjectFileUploadDxfReq implements Serializable {
|
||||||
|
|
||||||
|
@Serial
|
||||||
|
private static final long serialVersionUID = -7096688035548954702L;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 项目id
|
||||||
|
*/
|
||||||
|
private Long projectId;
|
||||||
|
|
||||||
|
}
|
||||||
@ -0,0 +1,43 @@
|
|||||||
|
package org.dromara.system.domain.dto.projectnews;
|
||||||
|
|
||||||
|
import jakarta.validation.constraints.NotBlank;
|
||||||
|
import jakarta.validation.constraints.NotNull;
|
||||||
|
import lombok.Data;
|
||||||
|
|
||||||
|
import java.io.Serial;
|
||||||
|
import java.io.Serializable;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author lilemy
|
||||||
|
* @date 2025/4/28 11:52
|
||||||
|
*/
|
||||||
|
@Data
|
||||||
|
public class BusProjectNewsCreateReq implements Serializable {
|
||||||
|
|
||||||
|
@Serial
|
||||||
|
private static final long serialVersionUID = 7116830397516873096L;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 项目id
|
||||||
|
*/
|
||||||
|
@NotNull(message = "项目id不能为空")
|
||||||
|
private Long projectId;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 标题
|
||||||
|
*/
|
||||||
|
@NotBlank(message = "标题不能为空")
|
||||||
|
private String title;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 内容
|
||||||
|
*/
|
||||||
|
@NotBlank(message = "内容不能为空")
|
||||||
|
private String content;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 附件
|
||||||
|
*/
|
||||||
|
private String file;
|
||||||
|
|
||||||
|
}
|
||||||
@ -0,0 +1,25 @@
|
|||||||
|
package org.dromara.system.domain.dto.projectnews;
|
||||||
|
|
||||||
|
import jakarta.validation.constraints.NotNull;
|
||||||
|
import lombok.Data;
|
||||||
|
|
||||||
|
import java.io.Serial;
|
||||||
|
import java.io.Serializable;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author lilemy
|
||||||
|
* @date 2025/4/28 14:07
|
||||||
|
*/
|
||||||
|
@Data
|
||||||
|
public class BusProjectNewsGisReq implements Serializable {
|
||||||
|
|
||||||
|
@Serial
|
||||||
|
private static final long serialVersionUID = -291705026028532102L;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 项目id
|
||||||
|
*/
|
||||||
|
@NotNull(message = "项目id不能为空")
|
||||||
|
private Long projectId;
|
||||||
|
|
||||||
|
}
|
||||||
@ -0,0 +1,23 @@
|
|||||||
|
package org.dromara.system.domain.dto.projectnews;
|
||||||
|
|
||||||
|
import lombok.Data;
|
||||||
|
|
||||||
|
import java.io.Serial;
|
||||||
|
import java.io.Serializable;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author lilemy
|
||||||
|
* @date 2025/4/28 11:52
|
||||||
|
*/
|
||||||
|
@Data
|
||||||
|
public class BusProjectNewsQueryReq implements Serializable {
|
||||||
|
|
||||||
|
@Serial
|
||||||
|
private static final long serialVersionUID = 1453496535743326174L;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 项目id
|
||||||
|
*/
|
||||||
|
private Long projectId;
|
||||||
|
|
||||||
|
}
|
||||||
@ -0,0 +1,40 @@
|
|||||||
|
package org.dromara.system.domain.dto.projectnews;
|
||||||
|
|
||||||
|
import jakarta.validation.constraints.NotNull;
|
||||||
|
import lombok.Data;
|
||||||
|
|
||||||
|
import java.io.Serial;
|
||||||
|
import java.io.Serializable;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author lilemy
|
||||||
|
* @date 2025/4/28 11:53
|
||||||
|
*/
|
||||||
|
@Data
|
||||||
|
public class BusProjectNewsUpdateReq implements Serializable {
|
||||||
|
|
||||||
|
@Serial
|
||||||
|
private static final long serialVersionUID = -5988430319051945969L;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 主键id
|
||||||
|
*/
|
||||||
|
@NotNull(message = "主键id不能为空")
|
||||||
|
private Long id;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 标题
|
||||||
|
*/
|
||||||
|
private String title;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 内容
|
||||||
|
*/
|
||||||
|
private String content;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 附件
|
||||||
|
*/
|
||||||
|
private String file;
|
||||||
|
|
||||||
|
}
|
||||||
@ -0,0 +1,37 @@
|
|||||||
|
package org.dromara.system.domain.dto.role;
|
||||||
|
|
||||||
|
import lombok.AllArgsConstructor;
|
||||||
|
import lombok.Data;
|
||||||
|
import lombok.NoArgsConstructor;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author lilemy
|
||||||
|
* @date 2025-08-27 15:22
|
||||||
|
*/
|
||||||
|
@Data
|
||||||
|
@NoArgsConstructor
|
||||||
|
@AllArgsConstructor
|
||||||
|
public class SysRoleProjectDto {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 项目id
|
||||||
|
*/
|
||||||
|
private Long projectId;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 项目名称
|
||||||
|
*/
|
||||||
|
private String projectName;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 项目简称
|
||||||
|
*/
|
||||||
|
private String shortName;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 角色id列表
|
||||||
|
*/
|
||||||
|
private List<Long> roleIds;
|
||||||
|
}
|
||||||
@ -0,0 +1,38 @@
|
|||||||
|
package org.dromara.system.domain.dto.userprojectrelevancy;
|
||||||
|
|
||||||
|
import jakarta.validation.constraints.NotBlank;
|
||||||
|
import jakarta.validation.constraints.NotNull;
|
||||||
|
import lombok.Data;
|
||||||
|
|
||||||
|
import java.io.Serial;
|
||||||
|
import java.io.Serializable;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author lilemy
|
||||||
|
* @date 2025/3/5 14:05
|
||||||
|
*/
|
||||||
|
@Data
|
||||||
|
public class BusUserProjectRelevancyCreateReq implements Serializable {
|
||||||
|
|
||||||
|
@Serial
|
||||||
|
private static final long serialVersionUID = -7603153089205421154L;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 用户ID
|
||||||
|
*/
|
||||||
|
@NotNull(message = "用户ID不能为空")
|
||||||
|
private Long userId;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 项目ID
|
||||||
|
*/
|
||||||
|
@NotNull(message = "项目ID不能为空")
|
||||||
|
private Long projectId;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 用户类型(0系统管理员 1普通人员 2项目管理员)
|
||||||
|
*/
|
||||||
|
@NotBlank(message = "用户类型不能为空")
|
||||||
|
private String userType;
|
||||||
|
|
||||||
|
}
|
||||||
@ -0,0 +1,32 @@
|
|||||||
|
package org.dromara.system.domain.dto.userprojectrelevancy;
|
||||||
|
|
||||||
|
import lombok.Data;
|
||||||
|
|
||||||
|
import java.io.Serial;
|
||||||
|
import java.io.Serializable;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author lilemy
|
||||||
|
* @date 2025/3/5 14:31
|
||||||
|
*/
|
||||||
|
@Data
|
||||||
|
public class BusUserProjectRelevancyQueryReq implements Serializable {
|
||||||
|
|
||||||
|
@Serial
|
||||||
|
private static final long serialVersionUID = 3252651952758479341L;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 用户ID
|
||||||
|
*/
|
||||||
|
private Long userId;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 项目ID
|
||||||
|
*/
|
||||||
|
private Long projectId;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 用户类型(0系统管理员 1普通人员 2项目管理员)
|
||||||
|
*/
|
||||||
|
private String userType;
|
||||||
|
}
|
||||||
@ -0,0 +1,42 @@
|
|||||||
|
package org.dromara.system.domain.dto.userprojectrelevancy;
|
||||||
|
|
||||||
|
import jakarta.validation.constraints.NotBlank;
|
||||||
|
import jakarta.validation.constraints.NotNull;
|
||||||
|
import lombok.Data;
|
||||||
|
|
||||||
|
import java.io.Serial;
|
||||||
|
import java.io.Serializable;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author lilemy
|
||||||
|
* @date 2025/3/5 15:04
|
||||||
|
*/
|
||||||
|
@Data
|
||||||
|
public class BusUserProjectRelevancyUpdateReq implements Serializable {
|
||||||
|
|
||||||
|
@Serial
|
||||||
|
private static final long serialVersionUID = -8022860866890925958L;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 主键ID
|
||||||
|
*/
|
||||||
|
@NotNull(message = "主键ID不能为空")
|
||||||
|
private Long id;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 用户ID
|
||||||
|
*/
|
||||||
|
private Long userId;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 项目ID
|
||||||
|
*/
|
||||||
|
private Long projectId;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 用户类型(0系统管理员 1普通人员 2项目管理员)
|
||||||
|
*/
|
||||||
|
@NotBlank(message = "用户类型不能为空")
|
||||||
|
private String userType;
|
||||||
|
|
||||||
|
}
|
||||||
@ -0,0 +1,27 @@
|
|||||||
|
package org.dromara.system.domain.enums;
|
||||||
|
|
||||||
|
import lombok.Getter;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author lilemy
|
||||||
|
* @date 2025/7/18 9:41
|
||||||
|
*/
|
||||||
|
@Getter
|
||||||
|
public enum SysDeptTypeEnum {
|
||||||
|
|
||||||
|
COMPANY("1", "总公司"),
|
||||||
|
SUB_COMPANY("2", "子公司"),
|
||||||
|
SPECIAL("3", "特殊"),
|
||||||
|
PROJECT("4", "项目"),
|
||||||
|
CONTRACT("5", "分包");
|
||||||
|
|
||||||
|
private final String code;
|
||||||
|
|
||||||
|
private final String message;
|
||||||
|
|
||||||
|
SysDeptTypeEnum(String code, String message) {
|
||||||
|
this.code = code;
|
||||||
|
this.message = message;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
@ -6,8 +6,6 @@ import io.github.linpeilie.annotations.AutoMapper;
|
|||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
import org.dromara.common.excel.annotation.ExcelDictFormat;
|
import org.dromara.common.excel.annotation.ExcelDictFormat;
|
||||||
import org.dromara.common.excel.convert.ExcelDictConvert;
|
import org.dromara.common.excel.convert.ExcelDictConvert;
|
||||||
//import org.dromara.contractor.domain.vo.SubContractorVo;
|
|
||||||
//import org.dromara.project.domain.vo.project.BusProjectVo;
|
|
||||||
import org.dromara.system.domain.SysDept;
|
import org.dromara.system.domain.SysDept;
|
||||||
|
|
||||||
import java.io.Serial;
|
import java.io.Serial;
|
||||||
@ -50,26 +48,6 @@ public class SysDeptVo implements Serializable {
|
|||||||
*/
|
*/
|
||||||
private SysDeptVo parent;
|
private SysDeptVo parent;
|
||||||
|
|
||||||
/**
|
|
||||||
* 项目id
|
|
||||||
*/
|
|
||||||
private Long projectId;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 分包公司ID
|
|
||||||
*/
|
|
||||||
private Long contractorId;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 未绑定项目信息
|
|
||||||
*/
|
|
||||||
// private List<BusProjectVo> projectList;
|
|
||||||
//
|
|
||||||
// /**
|
|
||||||
// * 未绑定分包信息
|
|
||||||
// */
|
|
||||||
// private List<SubContractorVo> contractorList;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 祖级列表
|
* 祖级列表
|
||||||
*/
|
*/
|
||||||
@ -135,9 +113,9 @@ public class SysDeptVo implements Serializable {
|
|||||||
@ExcelProperty(value = "创建时间")
|
@ExcelProperty(value = "创建时间")
|
||||||
private Date createTime;
|
private Date createTime;
|
||||||
|
|
||||||
// /**
|
/**
|
||||||
// * 子菜单
|
* 子菜单
|
||||||
// */
|
*/
|
||||||
// private List<SysDept> children = new ArrayList<>();
|
private List<SysDept> children = new ArrayList<>();
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@ -108,6 +108,11 @@ public class SysMenuVo implements Serializable {
|
|||||||
*/
|
*/
|
||||||
private Date createTime;
|
private Date createTime;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 菜单类型(menu_source) 1-web2-app
|
||||||
|
*/
|
||||||
|
private String menuSource;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 子菜单
|
* 子菜单
|
||||||
*/
|
*/
|
||||||
|
|||||||
@ -38,18 +38,34 @@ public class SysRoleVo implements Serializable {
|
|||||||
@ExcelProperty(value = "角色名称")
|
@ExcelProperty(value = "角色名称")
|
||||||
private String roleName;
|
private String roleName;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 项目ID
|
||||||
|
*/
|
||||||
|
private Long projectId;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 角色权限字符串
|
* 角色权限字符串
|
||||||
*/
|
*/
|
||||||
@ExcelProperty(value = "角色权限")
|
@ExcelProperty(value = "角色权限")
|
||||||
private String roleKey;
|
private String roleKey;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 部门ID
|
||||||
|
*/
|
||||||
|
@ExcelProperty(value = "部门")
|
||||||
|
private Long deptId;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 显示顺序
|
* 显示顺序
|
||||||
*/
|
*/
|
||||||
@ExcelProperty(value = "角色排序")
|
@ExcelProperty(value = "角色排序")
|
||||||
private Integer roleSort;
|
private Integer roleSort;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 角色类型 1-web 2-app
|
||||||
|
*/
|
||||||
|
private String roleSource;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 数据范围(1:全部数据权限 2:自定数据权限 3:本部门数据权限 4:本部门及以下数据权限 5:仅本人数据权限 6:部门及以下或本人数据权限)
|
* 数据范围(1:全部数据权限 2:自定数据权限 3:本部门数据权限 4:本部门及以下数据权限 5:仅本人数据权限 6:部门及以下或本人数据权限)
|
||||||
*/
|
*/
|
||||||
|
|||||||
@ -1,6 +1,7 @@
|
|||||||
package org.dromara.system.domain.vo;
|
package org.dromara.system.domain.vo;
|
||||||
|
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
|
import org.dromara.system.domain.dto.role.SysRoleProjectDto;
|
||||||
|
|
||||||
import java.io.Serial;
|
import java.io.Serial;
|
||||||
import java.io.Serializable;
|
import java.io.Serializable;
|
||||||
@ -42,4 +43,9 @@ public class SysUserInfoVo implements Serializable {
|
|||||||
*/
|
*/
|
||||||
private List<SysPostVo> posts;
|
private List<SysPostVo> posts;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 项目角色列表
|
||||||
|
*/
|
||||||
|
private List<SysRoleProjectDto> projectRoles;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@ -139,4 +139,9 @@ public class SysUserVo implements Serializable {
|
|||||||
*/
|
*/
|
||||||
private Long roleId;
|
private Long roleId;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 项目组
|
||||||
|
*/
|
||||||
|
private List<Long> projectIds;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1,10 +1,12 @@
|
|||||||
package org.dromara.system.domain.vo;
|
package org.dromara.system.domain.vo;
|
||||||
|
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
|
import org.dromara.common.core.domain.vo.SysProjectRoleMenuVo;
|
||||||
|
import org.dromara.common.core.domain.vo.SysProjectRolePermissionVo;
|
||||||
|
|
||||||
import java.io.Serial;
|
import java.io.Serial;
|
||||||
import java.io.Serializable;
|
import java.io.Serializable;
|
||||||
import java.util.Set;
|
import java.util.List;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 登录用户信息
|
* 登录用户信息
|
||||||
@ -25,11 +27,11 @@ public class UserInfoVo implements Serializable {
|
|||||||
/**
|
/**
|
||||||
* 菜单权限
|
* 菜单权限
|
||||||
*/
|
*/
|
||||||
private Set<String> permissions;
|
private List<SysProjectRoleMenuVo> permissions;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 角色权限
|
* 角色权限
|
||||||
*/
|
*/
|
||||||
private Set<String> roles;
|
private List<SysProjectRolePermissionVo> roles;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@ -0,0 +1,47 @@
|
|||||||
|
package org.dromara.system.domain.vo.project;
|
||||||
|
|
||||||
|
import lombok.Data;
|
||||||
|
|
||||||
|
import java.io.Serial;
|
||||||
|
import java.io.Serializable;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author lilemy
|
||||||
|
* @date 2025-08-21 19:14
|
||||||
|
*/
|
||||||
|
@Data
|
||||||
|
public class BusProjectGisVo implements Serializable {
|
||||||
|
|
||||||
|
@Serial
|
||||||
|
private static final long serialVersionUID = 7607042758858059082L;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* id
|
||||||
|
*/
|
||||||
|
private Long id;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 项目名称
|
||||||
|
*/
|
||||||
|
private String projectName;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 项目简称
|
||||||
|
*/
|
||||||
|
private String shortName;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 经度
|
||||||
|
*/
|
||||||
|
private String lng;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 纬度
|
||||||
|
*/
|
||||||
|
private String lat;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 项目地址
|
||||||
|
*/
|
||||||
|
private String projectSite;
|
||||||
|
}
|
||||||
@ -0,0 +1,23 @@
|
|||||||
|
package org.dromara.system.domain.vo.project;
|
||||||
|
|
||||||
|
import lombok.Data;
|
||||||
|
|
||||||
|
import java.io.Serial;
|
||||||
|
import java.io.Serializable;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author lilemy
|
||||||
|
* @date 2025/5/14 9:34
|
||||||
|
*/
|
||||||
|
@Data
|
||||||
|
public class BusProjectSafetyDayVo implements Serializable {
|
||||||
|
|
||||||
|
@Serial
|
||||||
|
private static final long serialVersionUID = -1479490255029878315L;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 安全生产天数
|
||||||
|
*/
|
||||||
|
private Long safetyDay;
|
||||||
|
|
||||||
|
}
|
||||||
@ -0,0 +1,204 @@
|
|||||||
|
package org.dromara.system.domain.vo.project;
|
||||||
|
|
||||||
|
import cn.idev.excel.annotation.ExcelIgnoreUnannotated;
|
||||||
|
import cn.idev.excel.annotation.ExcelProperty;
|
||||||
|
import io.github.linpeilie.annotations.AutoMapper;
|
||||||
|
import lombok.Data;
|
||||||
|
import org.dromara.common.excel.annotation.ExcelDictFormat;
|
||||||
|
import org.dromara.common.excel.convert.ExcelDictConvert;
|
||||||
|
import org.dromara.system.domain.BusProject;
|
||||||
|
import org.dromara.system.domain.bo.Punchrange;
|
||||||
|
|
||||||
|
import java.io.Serial;
|
||||||
|
import java.io.Serializable;
|
||||||
|
import java.util.Date;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 项目视图对象 project
|
||||||
|
*
|
||||||
|
* @author lilemy
|
||||||
|
* @date 2025-03-04
|
||||||
|
*/
|
||||||
|
@Data
|
||||||
|
@ExcelIgnoreUnannotated
|
||||||
|
@AutoMapper(target = BusProject.class)
|
||||||
|
public class BusProjectVo implements Serializable {
|
||||||
|
|
||||||
|
@Serial
|
||||||
|
private static final long serialVersionUID = 1L;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* id
|
||||||
|
*/
|
||||||
|
@ExcelProperty(value = "id")
|
||||||
|
private Long id;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 项目名称
|
||||||
|
*/
|
||||||
|
@ExcelProperty(value = "项目名称")
|
||||||
|
private String projectName;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 项目简称
|
||||||
|
*/
|
||||||
|
@ExcelProperty(value = "项目简称")
|
||||||
|
private String shortName;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 父项目id
|
||||||
|
*/
|
||||||
|
@ExcelProperty(value = "父项目id")
|
||||||
|
private Long parentId;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 状态(0正常 1停用)
|
||||||
|
*/
|
||||||
|
@ExcelProperty(value = "状态", converter = ExcelDictConvert.class)
|
||||||
|
@ExcelDictFormat(readConverterExp = "0=正常,1=停用")
|
||||||
|
private String status;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 项目图片
|
||||||
|
*/
|
||||||
|
@ExcelProperty(value = "项目图片")
|
||||||
|
private String picUrl;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 经度
|
||||||
|
*/
|
||||||
|
@ExcelProperty(value = "经度")
|
||||||
|
private String lng;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 纬度
|
||||||
|
*/
|
||||||
|
@ExcelProperty(value = "纬度")
|
||||||
|
private String lat;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 备注
|
||||||
|
*/
|
||||||
|
@ExcelProperty(value = "备注")
|
||||||
|
private String remark;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 项目类型
|
||||||
|
*/
|
||||||
|
@ExcelProperty(value = "项目类型", converter = ExcelDictConvert.class)
|
||||||
|
@ExcelDictFormat(dictType = "project_type")
|
||||||
|
private String projectType;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 项目阶段
|
||||||
|
*/
|
||||||
|
@ExcelProperty(value = "项目阶段", converter = ExcelDictConvert.class)
|
||||||
|
@ExcelDictFormat(dictType = "project_stage")
|
||||||
|
private String projectStage;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 项目地址
|
||||||
|
*/
|
||||||
|
@ExcelProperty(value = "项目地址")
|
||||||
|
private String projectSite;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 负责人
|
||||||
|
*/
|
||||||
|
@ExcelProperty(value = "负责人")
|
||||||
|
private String principal;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 负责人电话
|
||||||
|
*/
|
||||||
|
@ExcelProperty(value = "负责人电话")
|
||||||
|
private String principalPhone;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 实际容量
|
||||||
|
*/
|
||||||
|
@ExcelProperty(value = "实际容量")
|
||||||
|
private String actual;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 计划容量
|
||||||
|
*/
|
||||||
|
@ExcelProperty(value = "计划容量")
|
||||||
|
private String plan;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 开工时间
|
||||||
|
*/
|
||||||
|
@ExcelProperty(value = "开工时间")
|
||||||
|
private String onStreamTime;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 打卡范围(09:00,18:00)
|
||||||
|
*/
|
||||||
|
@ExcelProperty(value = "打卡范围")
|
||||||
|
private String punchRange;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 打卡时间开始
|
||||||
|
*/
|
||||||
|
private String playCardStart;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 打卡时间结束
|
||||||
|
*/
|
||||||
|
private String playCardEnd;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 设计总量
|
||||||
|
*/
|
||||||
|
@ExcelProperty(value = "设计总量")
|
||||||
|
private Long designTotal;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 安全协议书
|
||||||
|
*/
|
||||||
|
@ExcelProperty(value = "安全协议书")
|
||||||
|
private String securityAgreement;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 招标文件
|
||||||
|
*/
|
||||||
|
@ExcelProperty(value = "招标文件")
|
||||||
|
private String tenderFiles;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 显示隐藏(0显示 1隐藏)
|
||||||
|
*/
|
||||||
|
@ExcelProperty(value = "显示隐藏", converter = ExcelDictConvert.class)
|
||||||
|
@ExcelDictFormat(readConverterExp = "1=显示,2=隐藏")
|
||||||
|
private String showHidden;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 排序字段
|
||||||
|
*/
|
||||||
|
private Long sort;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 创建时间
|
||||||
|
*/
|
||||||
|
@ExcelProperty(value = "创建时间")
|
||||||
|
private Date createTime;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 子项目
|
||||||
|
*/
|
||||||
|
private List<BusSubProjectVo> children;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 打卡范围
|
||||||
|
*/
|
||||||
|
private List<Punchrange> punchrangeList;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* go项目id
|
||||||
|
*/
|
||||||
|
private Long goId;
|
||||||
|
|
||||||
|
}
|
||||||
@ -0,0 +1,39 @@
|
|||||||
|
package org.dromara.system.domain.vo.project;
|
||||||
|
|
||||||
|
import lombok.Data;
|
||||||
|
|
||||||
|
import java.io.Serial;
|
||||||
|
import java.io.Serializable;
|
||||||
|
import java.util.Date;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author lilemy
|
||||||
|
* @date 2025/6/4 9:53
|
||||||
|
*/
|
||||||
|
@Data
|
||||||
|
public class BusSubProjectVo implements Serializable {
|
||||||
|
|
||||||
|
@Serial
|
||||||
|
private static final long serialVersionUID = -5283786195929619472L;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* id
|
||||||
|
*/
|
||||||
|
private Long id;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 项目名称
|
||||||
|
*/
|
||||||
|
private String projectName;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 设计文件id
|
||||||
|
*/
|
||||||
|
private Long designId;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 创建时间
|
||||||
|
*/
|
||||||
|
private Date createTime;
|
||||||
|
|
||||||
|
}
|
||||||
@ -0,0 +1,40 @@
|
|||||||
|
package org.dromara.system.domain.vo.projectfile;
|
||||||
|
|
||||||
|
import io.github.linpeilie.annotations.AutoMapper;
|
||||||
|
import lombok.Data;
|
||||||
|
import org.dromara.system.domain.BusProjectFile;
|
||||||
|
|
||||||
|
import java.io.Serial;
|
||||||
|
import java.io.Serializable;
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 项目文件存储视图对象 bus_project_file
|
||||||
|
*
|
||||||
|
* @author lilemy
|
||||||
|
* @date 2025-04-23
|
||||||
|
*/
|
||||||
|
@Data
|
||||||
|
@AutoMapper(target = BusProjectFile.class)
|
||||||
|
public class BusProjectFileVo implements Serializable {
|
||||||
|
|
||||||
|
@Serial
|
||||||
|
private static final long serialVersionUID = 1L;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 文件类型
|
||||||
|
*/
|
||||||
|
private String fileType;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 文件名称
|
||||||
|
*/
|
||||||
|
private String fileName;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 文件路径
|
||||||
|
*/
|
||||||
|
private String filePath;
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
@ -0,0 +1,33 @@
|
|||||||
|
package org.dromara.system.domain.vo.projectnews;
|
||||||
|
|
||||||
|
import lombok.Data;
|
||||||
|
|
||||||
|
import java.io.Serial;
|
||||||
|
import java.io.Serializable;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author lilemy
|
||||||
|
* @date 2025/4/28 14:11
|
||||||
|
*/
|
||||||
|
@Data
|
||||||
|
public class BusProjectNewsGisVo implements Serializable {
|
||||||
|
|
||||||
|
@Serial
|
||||||
|
private static final long serialVersionUID = -751096185387401970L;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 主键
|
||||||
|
*/
|
||||||
|
private Long id;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 标题
|
||||||
|
*/
|
||||||
|
private String title;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 显示
|
||||||
|
*/
|
||||||
|
private Boolean show;
|
||||||
|
|
||||||
|
}
|
||||||
@ -0,0 +1,50 @@
|
|||||||
|
package org.dromara.system.domain.vo.projectnews;
|
||||||
|
|
||||||
|
import cn.idev.excel.annotation.ExcelIgnoreUnannotated;
|
||||||
|
import cn.idev.excel.annotation.ExcelProperty;
|
||||||
|
import io.github.linpeilie.annotations.AutoMapper;
|
||||||
|
import lombok.Data;
|
||||||
|
import org.dromara.system.domain.BusProjectNews;
|
||||||
|
|
||||||
|
import java.io.Serial;
|
||||||
|
import java.io.Serializable;
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 项目新闻视图对象 bus_project_news
|
||||||
|
*
|
||||||
|
* @author lilemy
|
||||||
|
* @date 2025-04-28
|
||||||
|
*/
|
||||||
|
@Data
|
||||||
|
@ExcelIgnoreUnannotated
|
||||||
|
@AutoMapper(target = BusProjectNews.class)
|
||||||
|
public class BusProjectNewsVo implements Serializable {
|
||||||
|
|
||||||
|
@Serial
|
||||||
|
private static final long serialVersionUID = 1L;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 主键
|
||||||
|
*/
|
||||||
|
private Long id;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 标题
|
||||||
|
*/
|
||||||
|
@ExcelProperty(value = "标题")
|
||||||
|
private String title;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 内容
|
||||||
|
*/
|
||||||
|
@ExcelProperty(value = "内容")
|
||||||
|
private String content;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 附件
|
||||||
|
*/
|
||||||
|
@ExcelProperty(value = "附件")
|
||||||
|
private String file;
|
||||||
|
|
||||||
|
}
|
||||||
@ -0,0 +1,58 @@
|
|||||||
|
package org.dromara.system.domain.vo.projectpunchrange;
|
||||||
|
|
||||||
|
import cn.idev.excel.annotation.ExcelIgnoreUnannotated;
|
||||||
|
import cn.idev.excel.annotation.ExcelProperty;
|
||||||
|
import io.github.linpeilie.annotations.AutoMapper;
|
||||||
|
import lombok.Data;
|
||||||
|
import org.dromara.system.domain.BusProjectPunchrange;
|
||||||
|
|
||||||
|
import java.io.Serial;
|
||||||
|
import java.io.Serializable;
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 项目打卡范围视图对象 bus_project_punchrange
|
||||||
|
*
|
||||||
|
* @author Lion Li
|
||||||
|
* @date 2025-07-28
|
||||||
|
*/
|
||||||
|
@Data
|
||||||
|
@ExcelIgnoreUnannotated
|
||||||
|
@AutoMapper(target = BusProjectPunchrange.class)
|
||||||
|
public class BusProjectPunchrangeVo implements Serializable {
|
||||||
|
|
||||||
|
@Serial
|
||||||
|
private static final long serialVersionUID = 1L;
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
@ExcelProperty(value = "")
|
||||||
|
private Long id;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 项目ID
|
||||||
|
*/
|
||||||
|
@ExcelProperty(value = "项目ID")
|
||||||
|
private Long projectId;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 范围名称
|
||||||
|
*/
|
||||||
|
@ExcelProperty(value = "范围名称")
|
||||||
|
private String punchName;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 打卡范围
|
||||||
|
*/
|
||||||
|
@ExcelProperty(value = "打卡范围")
|
||||||
|
private String punchRange;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 颜色
|
||||||
|
*/
|
||||||
|
@ExcelProperty(value = "颜色")
|
||||||
|
private String punchColor;
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
@ -0,0 +1,47 @@
|
|||||||
|
package org.dromara.system.domain.vo.userprojectrelevancy;
|
||||||
|
|
||||||
|
import lombok.Data;
|
||||||
|
|
||||||
|
import java.io.Serial;
|
||||||
|
import java.io.Serializable;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author lilemy
|
||||||
|
* @date 2025/3/5 15:30
|
||||||
|
*/
|
||||||
|
@Data
|
||||||
|
public class BusLoginUserProjectRelevancyVo implements Serializable {
|
||||||
|
|
||||||
|
@Serial
|
||||||
|
private static final long serialVersionUID = -2056438621566236671L;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 主键ID
|
||||||
|
*/
|
||||||
|
private Long id;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 用户ID
|
||||||
|
*/
|
||||||
|
private Long userId;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 项目ID
|
||||||
|
*/
|
||||||
|
private Long projectId;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 项目名称
|
||||||
|
*/
|
||||||
|
private String projectName;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 项目简称
|
||||||
|
*/
|
||||||
|
private String shortName;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 用户类型(0系统管理员 1普通人员 2项目管理员)
|
||||||
|
*/
|
||||||
|
private String userType;
|
||||||
|
}
|
||||||
@ -0,0 +1,65 @@
|
|||||||
|
package org.dromara.system.domain.vo.userprojectrelevancy;
|
||||||
|
|
||||||
|
import cn.idev.excel.annotation.ExcelIgnoreUnannotated;
|
||||||
|
import cn.idev.excel.annotation.ExcelProperty;
|
||||||
|
import io.github.linpeilie.annotations.AutoMapper;
|
||||||
|
import lombok.Data;
|
||||||
|
import org.dromara.system.domain.BusUserProjectRelevancy;
|
||||||
|
import org.dromara.system.domain.vo.project.BusProjectVo;
|
||||||
|
|
||||||
|
import java.io.Serial;
|
||||||
|
import java.io.Serializable;
|
||||||
|
import java.util.Date;
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 系统用户与项目关联视图对象 user_project_relevancy
|
||||||
|
*
|
||||||
|
* @author lilemy
|
||||||
|
* @date 2025-03-04
|
||||||
|
*/
|
||||||
|
@Data
|
||||||
|
@ExcelIgnoreUnannotated
|
||||||
|
@AutoMapper(target = BusUserProjectRelevancy.class)
|
||||||
|
public class BusUserProjectRelevancyVo implements Serializable {
|
||||||
|
|
||||||
|
@Serial
|
||||||
|
private static final long serialVersionUID = 1L;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 主键ID
|
||||||
|
*/
|
||||||
|
@ExcelProperty(value = "主键ID")
|
||||||
|
private Long id;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 用户ID
|
||||||
|
*/
|
||||||
|
@ExcelProperty(value = "用户ID")
|
||||||
|
private Long userId;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 项目ID
|
||||||
|
*/
|
||||||
|
@ExcelProperty(value = "项目ID")
|
||||||
|
private Long projectId;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 用户类型(0系统管理员 1普通人员 2项目管理员)
|
||||||
|
*/
|
||||||
|
@ExcelProperty(value = "用户类型(0系统管理员 1普通人员 2项目管理员)")
|
||||||
|
private String userType;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 项目详情
|
||||||
|
*/
|
||||||
|
@ExcelProperty(value = "项目详情")
|
||||||
|
private BusProjectVo project;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 创建时间
|
||||||
|
*/
|
||||||
|
@ExcelProperty(value = "创建时间")
|
||||||
|
private Date createTime;
|
||||||
|
|
||||||
|
}
|
||||||
@ -2,11 +2,13 @@ package org.dromara.system.dubbo;
|
|||||||
|
|
||||||
import lombok.RequiredArgsConstructor;
|
import lombok.RequiredArgsConstructor;
|
||||||
import org.apache.dubbo.config.annotation.DubboService;
|
import org.apache.dubbo.config.annotation.DubboService;
|
||||||
|
import org.dromara.common.core.domain.vo.SysProjectRoleMenuVo;
|
||||||
|
import org.dromara.common.core.domain.vo.SysProjectRolePermissionVo;
|
||||||
import org.dromara.system.api.RemotePermissionService;
|
import org.dromara.system.api.RemotePermissionService;
|
||||||
import org.dromara.system.service.ISysPermissionService;
|
import org.dromara.system.service.ISysPermissionService;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
import java.util.Set;
|
import java.util.List;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 权限服务
|
* 权限服务
|
||||||
@ -21,12 +23,12 @@ public class RemotePermissionServiceImpl implements RemotePermissionService {
|
|||||||
private final ISysPermissionService permissionService;
|
private final ISysPermissionService permissionService;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Set<String> getRolePermission(Long userId) {
|
public List<SysProjectRolePermissionVo> getRolePermission(Long userId) {
|
||||||
return permissionService.getRolePermission(userId);
|
return permissionService.getRolePermission(userId);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Set<String> getMenuPermission(Long userId) {
|
public List<SysProjectRoleMenuVo> getMenuPermission(Long userId) {
|
||||||
return permissionService.getMenuPermission(userId);
|
return permissionService.getMenuPermission(userId);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -0,0 +1,30 @@
|
|||||||
|
package org.dromara.system.dubbo;
|
||||||
|
|
||||||
|
import lombok.RequiredArgsConstructor;
|
||||||
|
import org.apache.dubbo.config.annotation.DubboService;
|
||||||
|
import org.dromara.system.api.RemoteProjectService;
|
||||||
|
import org.dromara.system.service.IBusProjectService;
|
||||||
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author lilemy
|
||||||
|
* @date 2025-09-11 18:33
|
||||||
|
*/
|
||||||
|
@RequiredArgsConstructor
|
||||||
|
@Service
|
||||||
|
@DubboService
|
||||||
|
public class RemoteProjectServiceImpl implements RemoteProjectService {
|
||||||
|
|
||||||
|
private final IBusProjectService projectService;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 通过项目ID查询项目名称
|
||||||
|
*
|
||||||
|
* @param projectId 项目ID
|
||||||
|
* @return 项目名称
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public String selectProjectNameById(Long projectId) {
|
||||||
|
return projectService.getProjectNameById(projectId);
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -59,6 +59,7 @@ public class RemoteUserServiceImpl implements RemoteUserService {
|
|||||||
private final SysPostMapper postMapper;
|
private final SysPostMapper postMapper;
|
||||||
private final SysUserRoleMapper userRoleMapper;
|
private final SysUserRoleMapper userRoleMapper;
|
||||||
private final SysUserPostMapper userPostMapper;
|
private final SysUserPostMapper userPostMapper;
|
||||||
|
private final IBusUserProjectRelevancyService userProjectRelevancyService;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 通过用户名查询用户信息
|
* 通过用户名查询用户信息
|
||||||
@ -79,6 +80,14 @@ public class RemoteUserServiceImpl implements RemoteUserService {
|
|||||||
}
|
}
|
||||||
// 框架登录不限制从什么表查询 只要最终构建出 LoginUser 即可
|
// 框架登录不限制从什么表查询 只要最终构建出 LoginUser 即可
|
||||||
// 此处可根据登录用户的数据不同 自行创建 loginUser 属性不够用继承扩展就行了
|
// 此处可根据登录用户的数据不同 自行创建 loginUser 属性不够用继承扩展就行了
|
||||||
|
if (!SystemConstants.SUPER_ADMIN_ID.equals(sysUser.getUserId())) {
|
||||||
|
List<BusUserProjectRelevancy> list = userProjectRelevancyService.lambdaQuery()
|
||||||
|
.eq(BusUserProjectRelevancy::getUserId, sysUser.getUserId())
|
||||||
|
.list();
|
||||||
|
if (CollUtil.isNotEmpty(list)) {
|
||||||
|
sysUser.setProjectIds(list.stream().map(BusUserProjectRelevancy::getProjectId).toList());
|
||||||
|
}
|
||||||
|
}
|
||||||
return buildLoginUser(sysUser);
|
return buildLoginUser(sysUser);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
@ -266,6 +275,12 @@ public class RemoteUserServiceImpl implements RemoteUserService {
|
|||||||
loginUser.setTenantId(userVo.getTenantId());
|
loginUser.setTenantId(userVo.getTenantId());
|
||||||
loginUser.setUserId(userId);
|
loginUser.setUserId(userId);
|
||||||
loginUser.setDeptId(userVo.getDeptId());
|
loginUser.setDeptId(userVo.getDeptId());
|
||||||
|
List<Long> projectIds = userVo.getProjectIds();
|
||||||
|
Long projectId = null;
|
||||||
|
if (CollUtil.isNotEmpty(projectIds)) {
|
||||||
|
projectId = projectIds.getFirst();
|
||||||
|
}
|
||||||
|
loginUser.setProjectId(projectId);
|
||||||
loginUser.setUsername(userVo.getUserName());
|
loginUser.setUsername(userVo.getUserName());
|
||||||
loginUser.setNickname(userVo.getNickName());
|
loginUser.setNickname(userVo.getNickName());
|
||||||
loginUser.setPassword(userVo.getPassword());
|
loginUser.setPassword(userVo.getPassword());
|
||||||
|
|||||||
@ -0,0 +1,15 @@
|
|||||||
|
package org.dromara.system.mapper;
|
||||||
|
|
||||||
|
import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
|
||||||
|
import org.dromara.system.domain.BusProjectFile;
|
||||||
|
import org.dromara.system.domain.vo.projectfile.BusProjectFileVo;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 项目文件存储Mapper接口
|
||||||
|
*
|
||||||
|
* @author lilemy
|
||||||
|
* @date 2025-04-23
|
||||||
|
*/
|
||||||
|
public interface BusProjectFileMapper extends BaseMapperPlus<BusProjectFile, BusProjectFileVo> {
|
||||||
|
|
||||||
|
}
|
||||||
@ -0,0 +1,15 @@
|
|||||||
|
package org.dromara.system.mapper;
|
||||||
|
|
||||||
|
import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
|
||||||
|
import org.dromara.system.domain.BusProject;
|
||||||
|
import org.dromara.system.domain.vo.project.BusProjectVo;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 项目Mapper接口
|
||||||
|
*
|
||||||
|
* @author lilemy
|
||||||
|
* @date 2025-03-04
|
||||||
|
*/
|
||||||
|
public interface BusProjectMapper extends BaseMapperPlus<BusProject, BusProjectVo> {
|
||||||
|
|
||||||
|
}
|
||||||
@ -0,0 +1,15 @@
|
|||||||
|
package org.dromara.system.mapper;
|
||||||
|
|
||||||
|
import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
|
||||||
|
import org.dromara.system.domain.BusProjectNews;
|
||||||
|
import org.dromara.system.domain.vo.projectnews.BusProjectNewsVo;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 项目新闻Mapper接口
|
||||||
|
*
|
||||||
|
* @author lilemy
|
||||||
|
* @date 2025-04-28
|
||||||
|
*/
|
||||||
|
public interface BusProjectNewsMapper extends BaseMapperPlus<BusProjectNews, BusProjectNewsVo> {
|
||||||
|
|
||||||
|
}
|
||||||
@ -0,0 +1,15 @@
|
|||||||
|
package org.dromara.system.mapper;
|
||||||
|
|
||||||
|
import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
|
||||||
|
import org.dromara.system.domain.BusProjectPunchrange;
|
||||||
|
import org.dromara.system.domain.vo.projectpunchrange.BusProjectPunchrangeVo;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 项目打卡范围Mapper接口
|
||||||
|
*
|
||||||
|
* @author Lion Li
|
||||||
|
* @date 2025-07-28
|
||||||
|
*/
|
||||||
|
public interface BusProjectPunchrangeMapper extends BaseMapperPlus<BusProjectPunchrange, BusProjectPunchrangeVo> {
|
||||||
|
|
||||||
|
}
|
||||||
@ -0,0 +1,15 @@
|
|||||||
|
package org.dromara.system.mapper;
|
||||||
|
|
||||||
|
import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
|
||||||
|
import org.dromara.system.domain.BusUserProjectRelevancy;
|
||||||
|
import org.dromara.system.domain.vo.userprojectrelevancy.BusUserProjectRelevancyVo;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 系统用户与项目关联Mapper接口
|
||||||
|
*
|
||||||
|
* @author lilemy
|
||||||
|
* @date 2025-03-04
|
||||||
|
*/
|
||||||
|
public interface BusUserProjectRelevancyMapper extends BaseMapperPlus<BusUserProjectRelevancy, BusUserProjectRelevancyVo> {
|
||||||
|
|
||||||
|
}
|
||||||
@ -3,11 +3,12 @@ package org.dromara.system.mapper;
|
|||||||
import com.baomidou.mybatisplus.core.conditions.Wrapper;
|
import com.baomidou.mybatisplus.core.conditions.Wrapper;
|
||||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||||
import com.baomidou.mybatisplus.core.toolkit.Constants;
|
import com.baomidou.mybatisplus.core.toolkit.Constants;
|
||||||
import org.dromara.common.core.constant.SystemConstants;
|
|
||||||
import org.dromara.system.domain.SysMenu;
|
|
||||||
import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
|
|
||||||
import org.dromara.system.domain.vo.SysMenuVo;
|
|
||||||
import org.apache.ibatis.annotations.Param;
|
import org.apache.ibatis.annotations.Param;
|
||||||
|
import org.dromara.common.core.constant.SystemConstants;
|
||||||
|
import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
|
||||||
|
import org.dromara.system.domain.SysMenu;
|
||||||
|
import org.dromara.system.domain.dto.project.ProjectPermsItem;
|
||||||
|
import org.dromara.system.domain.vo.SysMenuVo;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
@ -32,7 +33,7 @@ public interface SysMenuMapper extends BaseMapperPlus<SysMenu, SysMenuVo> {
|
|||||||
* @param userId 用户ID
|
* @param userId 用户ID
|
||||||
* @return 权限列表
|
* @return 权限列表
|
||||||
*/
|
*/
|
||||||
List<String> selectMenuPermsByUserId(Long userId);
|
List<ProjectPermsItem> selectMenuPermsByUserId(Long userId);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 根据角色ID查询权限
|
* 根据角色ID查询权限
|
||||||
@ -62,7 +63,7 @@ public interface SysMenuMapper extends BaseMapperPlus<SysMenu, SysMenuVo> {
|
|||||||
* @param userId 用户ID
|
* @param userId 用户ID
|
||||||
* @return 菜单列表
|
* @return 菜单列表
|
||||||
*/
|
*/
|
||||||
List<SysMenu> selectMenuTreeByUserId(Long userId);
|
List<SysMenu> selectMenuTreeByUserId(Long userId, Long projectId);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 根据角色ID查询菜单树信息
|
* 根据角色ID查询菜单树信息
|
||||||
|
|||||||
@ -8,6 +8,7 @@ import org.dromara.common.mybatis.annotation.DataColumn;
|
|||||||
import org.dromara.common.mybatis.annotation.DataPermission;
|
import org.dromara.common.mybatis.annotation.DataPermission;
|
||||||
import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
|
import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
|
||||||
import org.dromara.system.domain.SysRole;
|
import org.dromara.system.domain.SysRole;
|
||||||
|
import org.dromara.system.domain.dto.project.ProjectRolesItem;
|
||||||
import org.dromara.system.domain.vo.SysRoleVo;
|
import org.dromara.system.domain.vo.SysRoleVo;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
@ -59,4 +60,12 @@ public interface SysRoleMapper extends BaseMapperPlus<SysRole, SysRoleVo> {
|
|||||||
*/
|
*/
|
||||||
List<SysRoleVo> selectRolesByUserId(Long userId);
|
List<SysRoleVo> selectRolesByUserId(Long userId);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 根据用户ID查询角色
|
||||||
|
*
|
||||||
|
* @param userId 用户ID
|
||||||
|
* @return 角色列表
|
||||||
|
*/
|
||||||
|
List<ProjectRolesItem> selectProjectRolesByUserId(Long userId);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@ -0,0 +1,90 @@
|
|||||||
|
package org.dromara.system.service;
|
||||||
|
|
||||||
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||||
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||||
|
import com.baomidou.mybatisplus.extension.service.IService;
|
||||||
|
import org.dromara.common.mybatis.core.page.PageQuery;
|
||||||
|
import org.dromara.common.mybatis.core.page.TableDataInfo;
|
||||||
|
import org.dromara.system.domain.BusProjectFile;
|
||||||
|
import org.dromara.system.domain.dto.projectfile.BusProjectFileQueryReq;
|
||||||
|
import org.dromara.system.domain.dto.projectfile.BusProjectFileUpdateReq;
|
||||||
|
import org.dromara.system.domain.vo.projectfile.BusProjectFileVo;
|
||||||
|
|
||||||
|
import java.util.Collection;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 项目文件存储Service接口
|
||||||
|
*
|
||||||
|
* @author lilemy
|
||||||
|
* @date 2025-04-23
|
||||||
|
*/
|
||||||
|
public interface IBusProjectFileService extends IService<BusProjectFile> {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 查询项目文件存储
|
||||||
|
*
|
||||||
|
* @param id 主键
|
||||||
|
* @return 项目文件存储
|
||||||
|
*/
|
||||||
|
BusProjectFileVo queryById(Long id);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 分页查询项目文件存储列表
|
||||||
|
*
|
||||||
|
* @param req 查询条件
|
||||||
|
* @param pageQuery 分页参数
|
||||||
|
* @return 项目文件存储分页列表
|
||||||
|
*/
|
||||||
|
TableDataInfo<BusProjectFileVo> queryPageList(BusProjectFileQueryReq req, PageQuery pageQuery);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 查询符合条件的项目文件存储列表
|
||||||
|
*
|
||||||
|
* @param req 查询条件
|
||||||
|
* @return 项目文件存储列表
|
||||||
|
*/
|
||||||
|
List<BusProjectFileVo> queryList(BusProjectFileQueryReq req);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 修改项目文件存储
|
||||||
|
*
|
||||||
|
* @param req 项目文件存储
|
||||||
|
* @return 是否修改成功
|
||||||
|
*/
|
||||||
|
Boolean updateByBo(BusProjectFileUpdateReq req);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 校验并批量删除项目文件存储信息
|
||||||
|
*
|
||||||
|
* @param ids 待删除的主键集合
|
||||||
|
* @param isValid 是否进行有效性校验
|
||||||
|
* @return 是否删除成功
|
||||||
|
*/
|
||||||
|
Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获取项目文件存储视图对象
|
||||||
|
*
|
||||||
|
* @param projectFile 项目文件存储对象
|
||||||
|
* @return 项目文件存储视图对象
|
||||||
|
*/
|
||||||
|
BusProjectFileVo getVo(BusProjectFile projectFile);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获取项目文件存储查询条件封装
|
||||||
|
*
|
||||||
|
* @param req 查询条件
|
||||||
|
* @return 查询条件封装
|
||||||
|
*/
|
||||||
|
LambdaQueryWrapper<BusProjectFile> buildQueryWrapper(BusProjectFileQueryReq req);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获取项目文件存储分页对象视图
|
||||||
|
*
|
||||||
|
* @param projectFilePage 项目文件存储分页对象
|
||||||
|
* @return 项目文件存储分页对象视图
|
||||||
|
*/
|
||||||
|
Page<BusProjectFileVo> getVoPage(Page<BusProjectFile> projectFilePage);
|
||||||
|
|
||||||
|
}
|
||||||
@ -0,0 +1,125 @@
|
|||||||
|
package org.dromara.system.service;
|
||||||
|
|
||||||
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||||
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||||
|
import com.baomidou.mybatisplus.extension.service.IService;
|
||||||
|
import org.dromara.common.mybatis.core.page.PageQuery;
|
||||||
|
import org.dromara.common.mybatis.core.page.TableDataInfo;
|
||||||
|
import org.dromara.system.domain.BusProjectNews;
|
||||||
|
import org.dromara.system.domain.dto.projectnews.BusProjectNewsCreateReq;
|
||||||
|
import org.dromara.system.domain.dto.projectnews.BusProjectNewsGisReq;
|
||||||
|
import org.dromara.system.domain.dto.projectnews.BusProjectNewsQueryReq;
|
||||||
|
import org.dromara.system.domain.dto.projectnews.BusProjectNewsUpdateReq;
|
||||||
|
import org.dromara.system.domain.vo.projectnews.BusProjectNewsGisVo;
|
||||||
|
import org.dromara.system.domain.vo.projectnews.BusProjectNewsVo;
|
||||||
|
|
||||||
|
import java.util.Collection;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 项目新闻Service接口
|
||||||
|
*
|
||||||
|
* @author lilemy
|
||||||
|
* @date 2025-04-28
|
||||||
|
*/
|
||||||
|
public interface IBusProjectNewsService extends IService<BusProjectNews> {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 查询项目新闻
|
||||||
|
*
|
||||||
|
* @param id 主键
|
||||||
|
* @return 项目新闻
|
||||||
|
*/
|
||||||
|
BusProjectNewsVo queryById(Long id);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 分页查询项目新闻列表
|
||||||
|
*
|
||||||
|
* @param req 查询条件
|
||||||
|
* @param pageQuery 分页参数
|
||||||
|
* @return 项目新闻分页列表
|
||||||
|
*/
|
||||||
|
TableDataInfo<BusProjectNewsVo> queryPageList(BusProjectNewsQueryReq req, PageQuery pageQuery);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 查询符合条件的项目新闻列表
|
||||||
|
*
|
||||||
|
* @param req 查询条件
|
||||||
|
* @return 项目新闻列表
|
||||||
|
*/
|
||||||
|
List<BusProjectNewsVo> queryList(BusProjectNewsQueryReq req);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 查询大屏项目新闻列表
|
||||||
|
*
|
||||||
|
* @param req 列表查询条件
|
||||||
|
* @return 大屏项目新闻列表
|
||||||
|
*/
|
||||||
|
List<BusProjectNewsGisVo> queryGisList(BusProjectNewsGisReq req);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 根据项目id查询项目新闻列表
|
||||||
|
*
|
||||||
|
* @param projectId 项目id
|
||||||
|
* @return 项目新闻列表
|
||||||
|
*/
|
||||||
|
List<BusProjectNewsVo> queryListByProject(Long projectId);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 新增项目新闻
|
||||||
|
*
|
||||||
|
* @param req 项目新闻
|
||||||
|
* @return 新增项目新闻id
|
||||||
|
*/
|
||||||
|
Long insertByBo(BusProjectNewsCreateReq req);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 修改项目新闻
|
||||||
|
*
|
||||||
|
* @param req 项目新闻
|
||||||
|
* @return 是否修改成功
|
||||||
|
*/
|
||||||
|
Boolean updateByBo(BusProjectNewsUpdateReq req);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 校验并批量删除项目新闻信息
|
||||||
|
*
|
||||||
|
* @param ids 待删除的主键集合
|
||||||
|
* @param isValid 是否进行有效性校验
|
||||||
|
* @return 是否删除成功
|
||||||
|
*/
|
||||||
|
Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获取项目新闻存储视图对象
|
||||||
|
*
|
||||||
|
* @param projectNews 项目新闻存储对象
|
||||||
|
* @return 项目新闻存储视图对象
|
||||||
|
*/
|
||||||
|
BusProjectNewsVo getVo(BusProjectNews projectNews);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获取项目新闻存储查询条件封装
|
||||||
|
*
|
||||||
|
* @param req 查询条件
|
||||||
|
* @return 查询条件封装
|
||||||
|
*/
|
||||||
|
LambdaQueryWrapper<BusProjectNews> buildQueryWrapper(BusProjectNewsQueryReq req);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获取项目新闻存储分页对象视图
|
||||||
|
*
|
||||||
|
* @param projectNewsPage 项目新闻存储分页对象
|
||||||
|
* @return 项目新闻存储分页对象视图
|
||||||
|
*/
|
||||||
|
Page<BusProjectNewsVo> getVoPage(Page<BusProjectNews> projectNewsPage);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获取项目新闻存储列表视图对象
|
||||||
|
*
|
||||||
|
* @param projectNewsList 项目新闻存储列表对象
|
||||||
|
* @return 项目新闻存储列表视图对象
|
||||||
|
*/
|
||||||
|
List<BusProjectNewsVo> getVoList(List<BusProjectNews> projectNewsList);
|
||||||
|
|
||||||
|
}
|
||||||
@ -0,0 +1,70 @@
|
|||||||
|
package org.dromara.system.service;
|
||||||
|
|
||||||
|
import com.baomidou.mybatisplus.extension.service.IService;
|
||||||
|
import org.dromara.common.mybatis.core.page.PageQuery;
|
||||||
|
import org.dromara.common.mybatis.core.page.TableDataInfo;
|
||||||
|
import org.dromara.system.domain.BusProjectPunchrange;
|
||||||
|
import org.dromara.system.domain.bo.BusProjectPunchrangeBo;
|
||||||
|
import org.dromara.system.domain.vo.projectpunchrange.BusProjectPunchrangeVo;
|
||||||
|
|
||||||
|
import java.util.Collection;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 项目打卡范围Service接口
|
||||||
|
*
|
||||||
|
* @author Lion Li
|
||||||
|
* @date 2025-07-28
|
||||||
|
*/
|
||||||
|
public interface IBusProjectPunchrangeService extends IService<BusProjectPunchrange> {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 查询项目打卡范围
|
||||||
|
*
|
||||||
|
* @param id 主键
|
||||||
|
* @return 项目打卡范围
|
||||||
|
*/
|
||||||
|
BusProjectPunchrangeVo queryById(Long id);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 分页查询项目打卡范围列表
|
||||||
|
*
|
||||||
|
* @param bo 查询条件
|
||||||
|
* @param pageQuery 分页参数
|
||||||
|
* @return 项目打卡范围分页列表
|
||||||
|
*/
|
||||||
|
TableDataInfo<BusProjectPunchrangeVo> queryPageList(BusProjectPunchrangeBo bo, PageQuery pageQuery);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 查询符合条件的项目打卡范围列表
|
||||||
|
*
|
||||||
|
* @param bo 查询条件
|
||||||
|
* @return 项目打卡范围列表
|
||||||
|
*/
|
||||||
|
List<BusProjectPunchrangeVo> queryList(BusProjectPunchrangeBo bo);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 新增项目打卡范围
|
||||||
|
*
|
||||||
|
* @param bo 项目打卡范围
|
||||||
|
* @return 是否新增成功
|
||||||
|
*/
|
||||||
|
Boolean insertByBo(BusProjectPunchrangeBo bo);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 修改项目打卡范围
|
||||||
|
*
|
||||||
|
* @param bo 项目打卡范围
|
||||||
|
* @return 是否修改成功
|
||||||
|
*/
|
||||||
|
Boolean updateByBo(BusProjectPunchrangeBo bo);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 校验并批量删除项目打卡范围信息
|
||||||
|
*
|
||||||
|
* @param ids 待删除的主键集合
|
||||||
|
* @param isValid 是否进行有效性校验
|
||||||
|
* @return 是否删除成功
|
||||||
|
*/
|
||||||
|
Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);
|
||||||
|
}
|
||||||
@ -0,0 +1,174 @@
|
|||||||
|
package org.dromara.system.service;
|
||||||
|
|
||||||
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||||
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||||
|
import com.baomidou.mybatisplus.extension.service.IService;
|
||||||
|
import org.dromara.common.mybatis.core.page.PageQuery;
|
||||||
|
import org.dromara.common.mybatis.core.page.TableDataInfo;
|
||||||
|
import org.dromara.system.domain.BusProject;
|
||||||
|
import org.dromara.system.domain.dto.project.*;
|
||||||
|
import org.dromara.system.domain.vo.project.BusProjectGisVo;
|
||||||
|
import org.dromara.system.domain.vo.project.BusProjectSafetyDayVo;
|
||||||
|
import org.dromara.system.domain.vo.project.BusProjectVo;
|
||||||
|
import org.dromara.system.domain.vo.project.BusSubProjectVo;
|
||||||
|
|
||||||
|
import java.util.Collection;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 项目Service接口
|
||||||
|
*
|
||||||
|
* @author lilemy
|
||||||
|
* @date 2025-03-04
|
||||||
|
*/
|
||||||
|
public interface IBusProjectService extends IService<BusProject> {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 查询项目
|
||||||
|
*
|
||||||
|
* @param id 主键
|
||||||
|
* @return 项目
|
||||||
|
*/
|
||||||
|
BusProjectVo queryById(Long id);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 分页查询项目列表
|
||||||
|
*
|
||||||
|
* @param req 查询条件
|
||||||
|
* @param pageQuery 分页参数
|
||||||
|
* @return 项目分页列表
|
||||||
|
*/
|
||||||
|
TableDataInfo<BusProjectVo> queryPageList(BusProjectQueryReq req, PageQuery pageQuery);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 查询符合条件的项目列表
|
||||||
|
*
|
||||||
|
* @param req 查询条件
|
||||||
|
* @return 项目列表
|
||||||
|
*/
|
||||||
|
List<BusProjectVo> queryList(BusProjectQueryReq req);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 查询项目下的子项目列表
|
||||||
|
*
|
||||||
|
* @param id 父项目id
|
||||||
|
* @return 项目下的子项目列表
|
||||||
|
*/
|
||||||
|
List<BusSubProjectVo> querySubList(Long id);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 新增项目
|
||||||
|
*
|
||||||
|
* @param dto 项目
|
||||||
|
* @return 新项目 id
|
||||||
|
*/
|
||||||
|
Long insertByBo(BusProjectCreateReq dto);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 新增子项目
|
||||||
|
*
|
||||||
|
* @param dto 子项目
|
||||||
|
* @return 子项目 id
|
||||||
|
*/
|
||||||
|
Long insertSubByProject(BusProjectCreateSubReq dto);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 修改项目
|
||||||
|
*
|
||||||
|
* @param req 项目
|
||||||
|
* @return 是否修改成功
|
||||||
|
*/
|
||||||
|
Boolean updateByBo(BusProjectUpdateReq req);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 保存项目招标文件
|
||||||
|
*
|
||||||
|
* @param req 项目招标文件
|
||||||
|
* @return 是否保存成功
|
||||||
|
*/
|
||||||
|
Boolean saveTenderFile(BusProjectSaveTenderFileReq req);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 校验并批量删除项目信息
|
||||||
|
*
|
||||||
|
* @param ids 待删除的主键集合
|
||||||
|
* @param isValid 是否进行有效性校验
|
||||||
|
* @return 是否删除成功
|
||||||
|
*/
|
||||||
|
Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获取项目视图对象
|
||||||
|
*
|
||||||
|
* @param project 项目对象
|
||||||
|
* @return 项目视图对象
|
||||||
|
*/
|
||||||
|
BusProjectVo getVo(BusProject project);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获取项目查询条件封装(不查询子项目)
|
||||||
|
*
|
||||||
|
* @param req 查询条件
|
||||||
|
* @return 查询条件封装
|
||||||
|
*/
|
||||||
|
LambdaQueryWrapper<BusProject> buildQueryWrapper(BusProjectQueryReq req);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获取项目分页对象视图
|
||||||
|
*
|
||||||
|
* @param projectPage 项目分页对象
|
||||||
|
* @return 项目分页对象视图
|
||||||
|
*/
|
||||||
|
Page<BusProjectVo> getVoPage(Page<BusProject> projectPage);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 校验用户是否拥有操作项目的权限
|
||||||
|
*
|
||||||
|
* @param projectId 项目id
|
||||||
|
* @param userId 需要鉴权的用户id
|
||||||
|
*/
|
||||||
|
void validAuth(Long projectId, Long userId);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 校验用户是否拥有操作项目的权限
|
||||||
|
*
|
||||||
|
* @param projectIdList 项目id列表
|
||||||
|
* @param userId 需要鉴权的用户id
|
||||||
|
*/
|
||||||
|
void validAuth(Collection<Long> projectIdList, Long userId);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获取项目安全天数
|
||||||
|
*
|
||||||
|
* @param id 项目id
|
||||||
|
* @return 安全天数
|
||||||
|
*/
|
||||||
|
BusProjectSafetyDayVo getSafetyDay(Long id);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获取项目地址信息
|
||||||
|
*
|
||||||
|
* @return 项目地址信息列表
|
||||||
|
*/
|
||||||
|
List<BusProjectGisVo> getGisList();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 改变项目所属用户
|
||||||
|
*
|
||||||
|
* @param id 项目id
|
||||||
|
* @return 是否成功
|
||||||
|
*/
|
||||||
|
Boolean changeUserProject(Long id);
|
||||||
|
|
||||||
|
BusProjectVo selectById(Long projectId);
|
||||||
|
|
||||||
|
List<BusProjectVo> selectProjectVoList();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 通过项目ID查询项目名称
|
||||||
|
*
|
||||||
|
* @param projectId 项目ID
|
||||||
|
* @return 项目名称
|
||||||
|
*/
|
||||||
|
String getProjectNameById(Long projectId);
|
||||||
|
}
|
||||||
@ -0,0 +1,160 @@
|
|||||||
|
package org.dromara.system.service;
|
||||||
|
|
||||||
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||||
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||||
|
import com.baomidou.mybatisplus.extension.service.IService;
|
||||||
|
import org.dromara.common.mybatis.core.page.PageQuery;
|
||||||
|
import org.dromara.common.mybatis.core.page.TableDataInfo;
|
||||||
|
import org.dromara.system.domain.BusUserProjectRelevancy;
|
||||||
|
import org.dromara.system.domain.dto.project.BusProjectBatchByProjectListReq;
|
||||||
|
import org.dromara.system.domain.dto.userprojectrelevancy.BusUserProjectRelevancyCreateReq;
|
||||||
|
import org.dromara.system.domain.dto.userprojectrelevancy.BusUserProjectRelevancyQueryReq;
|
||||||
|
import org.dromara.system.domain.dto.userprojectrelevancy.BusUserProjectRelevancyUpdateReq;
|
||||||
|
import org.dromara.system.domain.vo.userprojectrelevancy.BusLoginUserProjectRelevancyVo;
|
||||||
|
import org.dromara.system.domain.vo.userprojectrelevancy.BusUserProjectRelevancyVo;
|
||||||
|
|
||||||
|
import java.util.Collection;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 系统用户与项目关联Service接口
|
||||||
|
*
|
||||||
|
* @author lilemy
|
||||||
|
* @date 2025-03-04
|
||||||
|
*/
|
||||||
|
public interface IBusUserProjectRelevancyService extends IService<BusUserProjectRelevancy> {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 查询系统用户与项目关联
|
||||||
|
*
|
||||||
|
* @param id 主键
|
||||||
|
* @return 系统用户与项目关联
|
||||||
|
*/
|
||||||
|
BusUserProjectRelevancyVo queryById(Long id);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 分页查询系统用户与项目关联列表
|
||||||
|
*
|
||||||
|
* @param req 查询条件
|
||||||
|
* @param pageQuery 分页参数
|
||||||
|
* @return 系统用户与项目关联分页列表
|
||||||
|
*/
|
||||||
|
TableDataInfo<BusUserProjectRelevancyVo> queryPageList(BusUserProjectRelevancyQueryReq req, PageQuery pageQuery);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 查询符合条件的系统用户与项目关联列表
|
||||||
|
*
|
||||||
|
* @param req 查询条件
|
||||||
|
* @return 系统用户与项目关联列表
|
||||||
|
*/
|
||||||
|
List<BusUserProjectRelevancyVo> queryList(BusUserProjectRelevancyQueryReq req);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 新增系统用户与项目关联
|
||||||
|
*
|
||||||
|
* @param req 系统用户与项目关联
|
||||||
|
* @return 新增关联id
|
||||||
|
*/
|
||||||
|
Long insertByBo(BusUserProjectRelevancyCreateReq req);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 批量新增用户和项目关联
|
||||||
|
*
|
||||||
|
* @param projectId 项目ID
|
||||||
|
* @param userIdList 用户ID列表
|
||||||
|
* @param userType 用户类型
|
||||||
|
*/
|
||||||
|
void saveBatchByUserList(Long projectId, List<Long> userIdList, String userType);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 批量新增用户和项目关联
|
||||||
|
*
|
||||||
|
* @param projectIdList 项目ID列表
|
||||||
|
* @param userId 用户ID
|
||||||
|
* @param userType 用户类型
|
||||||
|
*/
|
||||||
|
void saveBatchByProjectList(List<Long> projectIdList, Long userId, String userType);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 修改系统用户与项目关联
|
||||||
|
*
|
||||||
|
* @param req 系统用户与项目关联
|
||||||
|
* @return 是否修改成功
|
||||||
|
*/
|
||||||
|
Boolean updateByBo(BusUserProjectRelevancyUpdateReq req);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 校验并批量删除系统用户与项目关联信息
|
||||||
|
*
|
||||||
|
* @param ids 待删除的主键集合
|
||||||
|
* @param isValid 是否进行有效性校验
|
||||||
|
* @return 是否删除成功
|
||||||
|
*/
|
||||||
|
Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 根据用户ID删除系统用户与项目关联
|
||||||
|
*
|
||||||
|
* @param userId 用户ID
|
||||||
|
*/
|
||||||
|
void deleteByUserId(Long userId);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 根据项目ID和用户ID列表删除系统用户与项目关联
|
||||||
|
*
|
||||||
|
* @param oldProjectId 项目ID
|
||||||
|
* @param userIds 用户ID列表
|
||||||
|
*/
|
||||||
|
void deleteByProjectAndUserIds(Long oldProjectId, List<Long> userIds);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获取当前登录用户项目列表
|
||||||
|
*
|
||||||
|
* @param userId 登录用户ID
|
||||||
|
* @return 当前登录用户项目列表
|
||||||
|
*/
|
||||||
|
List<BusLoginUserProjectRelevancyVo> queryListByUserId(Long userId);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获取当前登录用户项目分页
|
||||||
|
*
|
||||||
|
* @param userId 登录用户ID
|
||||||
|
* @param req 分页查询条件
|
||||||
|
* @param pageQuery 分页参数
|
||||||
|
* @return 当前登录用户项目分页
|
||||||
|
*/
|
||||||
|
TableDataInfo<BusUserProjectRelevancyVo> queryPageByUserId(Long userId, BusUserProjectRelevancyQueryReq req, PageQuery pageQuery);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 批量新增用户和项目关联
|
||||||
|
*
|
||||||
|
* @param req 新增参数
|
||||||
|
* @return 是否增加成功
|
||||||
|
*/
|
||||||
|
Boolean insertBatchByProjectList(BusProjectBatchByProjectListReq req);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获取系统用户与项目关联视图
|
||||||
|
*
|
||||||
|
* @param userProjectRelevancy 系统用户与项目关联
|
||||||
|
* @return 系统用户与项目关联视图
|
||||||
|
*/
|
||||||
|
BusUserProjectRelevancyVo getVo(BusUserProjectRelevancy userProjectRelevancy);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获取用户和项目关联对象查询条件封装
|
||||||
|
*
|
||||||
|
* @param req 查询条件
|
||||||
|
* @return 查询条件封装
|
||||||
|
*/
|
||||||
|
LambdaQueryWrapper<BusUserProjectRelevancy> buildQueryWrapper(BusUserProjectRelevancyQueryReq req);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获取系统用户与项目关联分页视图
|
||||||
|
*
|
||||||
|
* @param userProjectRelevancyPage 系统用户与项目关联分页
|
||||||
|
* @return 系统用户与项目关联分页视图
|
||||||
|
*/
|
||||||
|
Page<BusUserProjectRelevancyVo> getVoPage(Page<BusUserProjectRelevancy> userProjectRelevancyPage);
|
||||||
|
|
||||||
|
}
|
||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user