diff --git a/backend/src/main/java/com/yfd/platform/config/MyMetaObjectHandler.java b/backend/src/main/java/com/yfd/platform/config/MyMetaObjectHandler.java new file mode 100644 index 0000000..45ac60c --- /dev/null +++ b/backend/src/main/java/com/yfd/platform/config/MyMetaObjectHandler.java @@ -0,0 +1,38 @@ +package com.yfd.platform.config; + +import com.baomidou.mybatisplus.core.handlers.MetaObjectHandler; +import org.apache.ibatis.reflection.MetaObject; +import org.springframework.stereotype.Component; + +import java.util.Date; + +/** + * MyBatis-Plus 自动填充处理器 + * 用于处理 @TableField(fill = FieldFill.INSERT/UPDATE) 注解 + */ +@Component +public class MyMetaObjectHandler implements MetaObjectHandler { + + /** + * 插入时自动填充 + */ + @Override + public void insertFill(MetaObject metaObject) { + Date now = new Date(); + + // 自动填充创建时间 + this.strictInsertFill(metaObject, "createdAt", Date.class, now); + + // 自动填充更新时间 + this.strictInsertFill(metaObject, "updatedAt", Date.class, now); + } + + /** + * 更新时自动填充 + */ + @Override + public void updateFill(MetaObject metaObject) { + // 自动填充更新时间 + this.strictUpdateFill(metaObject, "updatedAt", Date.class, new Date()); + } +} diff --git a/backend/src/main/java/com/yfd/platform/config/SecurityConfig.java b/backend/src/main/java/com/yfd/platform/config/SecurityConfig.java index 3ff643e..1558260 100644 --- a/backend/src/main/java/com/yfd/platform/config/SecurityConfig.java +++ b/backend/src/main/java/com/yfd/platform/config/SecurityConfig.java @@ -56,6 +56,7 @@ public class SecurityConfig { .requestMatchers("/eng/**").permitAll() .requestMatchers("/env/**").permitAll() .requestMatchers("/sw/**").permitAll() + .requestMatchers("/data/**").permitAll() .requestMatchers(HttpMethod.GET, "/").permitAll() .requestMatchers(HttpMethod.GET, "/*.html", diff --git a/backend/src/main/java/com/yfd/platform/data/controller/SysUserDataScopeController.java b/backend/src/main/java/com/yfd/platform/data/controller/SysUserDataScopeController.java new file mode 100644 index 0000000..c02ee7d --- /dev/null +++ b/backend/src/main/java/com/yfd/platform/data/controller/SysUserDataScopeController.java @@ -0,0 +1,124 @@ +package com.yfd.platform.data.controller; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.yfd.platform.annotation.Log; +import com.yfd.platform.config.ResponseResult; +import com.yfd.platform.data.domain.SysUserDataScope; +import com.yfd.platform.data.service.ISysUserDataScopeService; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.tags.Tag; +import org.springframework.web.bind.annotation.*; + +import jakarta.annotation.Resource; +import java.util.List; + +/** + *

+ * 数据填报用户权限关系表 前端控制器 + *

+ */ +@RestController +@RequestMapping("/data/userDataScope") +@Tag(name = "数据填报用户权限") +public class SysUserDataScopeController { + + @Resource + private ISysUserDataScopeService dataScopeService; + + /** + * 分页查询数据填报权限列表 + */ + @GetMapping("/queryPageList") + @Operation(summary = "分页查询数据填报权限列表") + public ResponseResult queryPageList( + @RequestParam(required = false) String userId, + @RequestParam(required = false) String orgType, + @RequestParam(required = false) String orgId, + @RequestParam(required = false) Integer status, + @RequestParam(defaultValue = "1") Long pageNum, + @RequestParam(defaultValue = "10") Long pageSize) { + Page page = new Page<>(pageNum, pageSize); + Page result = dataScopeService.queryPageList(page, userId, orgType, orgId, status); + return ResponseResult.successData(result); + } + + /** + * 新增数据填报权限 + */ +// @Log(module = "数据填报权限", value = "新增数据填报权限") + @PostMapping("/add") + @Operation(summary = "新增数据填报权限") + public ResponseResult add(@RequestBody SysUserDataScope dataScope) { + boolean result = dataScopeService.addDataScope(dataScope); + return result ? ResponseResult.success("新增成功") : ResponseResult.error("新增失败"); + } + + /** + * 修改数据填报权限 + */ + @Log(module = "数据填报权限", value = "修改数据填报权限") + @PostMapping("/update") + @Operation(summary = "修改数据填报权限") + public ResponseResult update(@RequestBody SysUserDataScope dataScope) { + if (dataScope.getId() == null || dataScope.getId().isEmpty()) { + return ResponseResult.error("缺少权限ID"); + } + boolean result = dataScopeService.updateDataScope(dataScope); + return result ? ResponseResult.success("修改成功") : ResponseResult.error("修改失败"); + } + + /** + * 删除数据填报权限 + */ + @Log(module = "数据填报权限", value = "删除数据填报权限") + @PostMapping("/delete") + @Operation(summary = "删除数据填报权限") + public ResponseResult delete(@RequestParam String id) { + boolean result = dataScopeService.deleteDataScope(id); + return result ? ResponseResult.success("删除成功") : ResponseResult.error("删除失败"); + } + + /** + * 批量删除数据填报权限 + */ + @Log(module = "数据填报权限", value = "批量删除数据填报权限") + @PostMapping("/batchDelete") + @Operation(summary = "批量删除数据填报权限") + public ResponseResult batchDelete(@RequestBody List ids) { + if (ids == null || ids.isEmpty()) { + return ResponseResult.error("请选择要删除的记录"); + } + boolean result = dataScopeService.batchDeleteDataScope(ids); + return result ? ResponseResult.success("批量删除成功") : ResponseResult.error("批量删除失败"); + } + + /** + * 根据用户ID查询权限列表 + */ + @GetMapping("/getByUserId") + @Operation(summary = "根据用户ID查询权限列表") + public ResponseResult getByUserId(@RequestParam Long userId) { + List list = dataScopeService.getByUserId(userId); + return ResponseResult.successData(list); + } + + /** + * 根据资源类型和资源编码查询 + */ + @GetMapping("/getByOrg") + @Operation(summary = "根据资源类型和资源编码查询") + public ResponseResult getByOrg(@RequestParam String orgType, @RequestParam String orgId) { + List list = dataScopeService.getByOrg(orgType, orgId); + return ResponseResult.successData(list); + } + + /** + * 查询用户有效权限(状态=1且在有效期内的) + */ + @GetMapping("/getValidPermissions") + @Operation(summary = "查询用户有效权限") + public ResponseResult getValidPermissions(@RequestParam String userId) { + List list = dataScopeService.getValidPermissions(userId); + return ResponseResult.successData(list); + } +} diff --git a/backend/src/main/java/com/yfd/platform/data/domain/SysUserDataScope.java b/backend/src/main/java/com/yfd/platform/data/domain/SysUserDataScope.java new file mode 100644 index 0000000..601c4a5 --- /dev/null +++ b/backend/src/main/java/com/yfd/platform/data/domain/SysUserDataScope.java @@ -0,0 +1,118 @@ +package com.yfd.platform.data.domain; + +import com.baomidou.mybatisplus.annotation.*; +import com.fasterxml.jackson.annotation.JsonFormat; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.io.Serializable; +import java.sql.Timestamp; +import java.util.Date; + +/** + *

+ * 数据填报用户权限关系表 + *

+ */ +@Data +@EqualsAndHashCode(callSuper = false) +@TableName("SYS_USER_DATA_SCOPE") +public class SysUserDataScope implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId(type = IdType.ASSIGN_UUID) + private String id; + + /** + * 用户ID + */ + private String userId; + + /** + * 资源类型(BASIN/BASE/STATION) + */ + private String orgType; + + /** + * 资源编码(流域编码/基地编码/电站编码) + */ + private String orgId; + + /** + * 上级资源编码(可选,用于层级追溯) + */ + private String parentId; + + /** + * 所属站层级,默认空,后续使用 + */ + private Long orgLevel; + + /** + * 所属站全路径(B001/BASE01/ST01),默认空,后续使用 + */ + private String path; + + /** + * 权限类型(READ/WRITE/ADMIN等),默认READ + */ + private String permissionType; + + /** + * 角色标识(可选,如调度员/管理员),默认空,后续使用 + */ + private String roleCode; + + /** + * 数据范围(ALL/SELF/CUSTOM),默认ALL,后续使用 + */ + private String dataScope; + + /** + * 状态(1有效 0无效)默认有效 + */ + private Integer status; + + /** + * 生效时间 + */ + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + private Date startTime; + + /** + * 失效时间 + */ + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + private Date endTime; + + /** + * 创建时间 + */ + @TableField(fill = FieldFill.INSERT) + private Date createdAt; + + /** + * 创建人 + */ + private String createdBy; + + /** + * 更新时间 + */ + @TableField(fill = FieldFill.INSERT_UPDATE) + private Date updatedAt; + + /** + * 更新人 + */ + private String updatedBy; + + /** + * 备注 + */ + private String remark; +} diff --git a/backend/src/main/java/com/yfd/platform/data/mapper/SysUserDataScopeMapper.java b/backend/src/main/java/com/yfd/platform/data/mapper/SysUserDataScopeMapper.java new file mode 100644 index 0000000..525fba4 --- /dev/null +++ b/backend/src/main/java/com/yfd/platform/data/mapper/SysUserDataScopeMapper.java @@ -0,0 +1,46 @@ +package com.yfd.platform.data.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.yfd.platform.data.domain.SysUserDataScope; +import org.apache.ibatis.annotations.Param; + +import java.util.List; +import java.util.Map; + +/** + *

+ * 数据填报用户权限关系表 Mapper 接口 + *

+ */ +public interface SysUserDataScopeMapper extends BaseMapper { + + /** + * 分页查询数据填报权限 + */ + Page selectPageList(Page page, + @Param("userId") Long userId, + @Param("orgType") String orgType, + @Param("orgId") String orgId, + @Param("status") Integer status); + + /** + * 根据用户ID查询权限列表 + */ + List selectByUserId(@Param("userId") Long userId); + + /** + * 根据资源类型和资源编码查询 + */ + List selectByOrg(@Param("orgType") String orgType, @Param("orgId") String orgId); + + /** + * 批量删除 + */ + int batchDelete(@Param("ids") List ids); + + /** + * 查询有效权限(状态=1且在有效期内的) + */ + List selectValidPermissions(@Param("userId") Long userId); +} diff --git a/backend/src/main/java/com/yfd/platform/data/service/ISysUserDataScopeService.java b/backend/src/main/java/com/yfd/platform/data/service/ISysUserDataScopeService.java new file mode 100644 index 0000000..92a2393 --- /dev/null +++ b/backend/src/main/java/com/yfd/platform/data/service/ISysUserDataScopeService.java @@ -0,0 +1,55 @@ +package com.yfd.platform.data.service; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.IService; +import com.yfd.platform.data.domain.SysUserDataScope; + +import java.util.List; + +/** + *

+ * 数据填报用户权限关系表 服务类 + *

+ */ +public interface ISysUserDataScopeService extends IService { + + /** + * 分页查询数据填报权限 + */ + Page queryPageList(Page page, String userId, String orgType, String orgId, Integer status); + + /** + * 新增数据填报权限 + */ + boolean addDataScope(SysUserDataScope dataScope); + + /** + * 修改数据填报权限 + */ + boolean updateDataScope(SysUserDataScope dataScope); + + /** + * 删除数据填报权限 + */ + boolean deleteDataScope(String id); + + /** + * 批量删除数据填报权限 + */ + boolean batchDeleteDataScope(List ids); + + /** + * 根据用户ID查询权限列表 + */ + List getByUserId(Long userId); + + /** + * 根据资源类型和资源编码查询 + */ + List getByOrg(String orgType, String orgId); + + /** + * 查询用户有效权限(状态=1且在有效期内的) + */ + List getValidPermissions(String userId); +} diff --git a/backend/src/main/java/com/yfd/platform/data/service/impl/SysUserDataScopeServiceImpl.java b/backend/src/main/java/com/yfd/platform/data/service/impl/SysUserDataScopeServiceImpl.java new file mode 100644 index 0000000..3dd6828 --- /dev/null +++ b/backend/src/main/java/com/yfd/platform/data/service/impl/SysUserDataScopeServiceImpl.java @@ -0,0 +1,76 @@ +package com.yfd.platform.data.service.impl; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.yfd.platform.data.domain.SysUserDataScope; +import com.yfd.platform.data.mapper.SysUserDataScopeMapper; +import com.yfd.platform.data.service.ISysUserDataScopeService; +import org.springframework.stereotype.Service; + +import java.util.List; + +/** + *

+ * 数据填报用户权限关系表 服务实现类 + *

+ */ +@Service +public class SysUserDataScopeServiceImpl extends ServiceImpl implements ISysUserDataScopeService { + + @Override + public Page queryPageList(Page page, String userId, String orgType, String orgId, Integer status) { + return this.page(page, this.lambdaQuery() + .eq(userId != null, SysUserDataScope::getUserId, userId) + .eq(orgType != null && !orgType.isEmpty(), SysUserDataScope::getOrgType, orgType) + .eq(orgId != null && !orgId.isEmpty(), SysUserDataScope::getOrgId, orgId) + .eq(status != null, SysUserDataScope::getStatus, status) + .orderByDesc(SysUserDataScope::getCreatedAt) + .getWrapper()); + } + + @Override + public boolean addDataScope(SysUserDataScope dataScope) { + return this.save(dataScope); + } + + @Override + public boolean updateDataScope(SysUserDataScope dataScope) { + return this.updateById(dataScope); + } + + @Override + public boolean deleteDataScope(String id) { + return this.removeById(id); + } + + @Override + public boolean batchDeleteDataScope(List ids) { + return this.removeByIds(ids); + } + + @Override + public List getByUserId(Long userId) { + return this.lambdaQuery() + .eq(SysUserDataScope::getUserId, userId) + .orderByDesc(SysUserDataScope::getCreatedAt) + .list(); + } + + @Override + public List getByOrg(String orgType, String orgId) { + return this.lambdaQuery() + .eq(SysUserDataScope::getOrgType, orgType) + .eq(SysUserDataScope::getOrgId, orgId) + .orderByDesc(SysUserDataScope::getCreatedAt) + .list(); + } + + @Override + public List getValidPermissions(String userId) { + return this.lambdaQuery() + .eq(SysUserDataScope::getUserId, userId) + .eq(SysUserDataScope::getStatus, 1) + .orderByDesc(SysUserDataScope::getCreatedAt) + .list(); + } +} diff --git a/backend/src/main/java/com/yfd/platform/eng/service/impl/EngEqIntervalServiceImpl.java b/backend/src/main/java/com/yfd/platform/eng/service/impl/EngEqIntervalServiceImpl.java index 992bf23..d851bc6 100644 --- a/backend/src/main/java/com/yfd/platform/eng/service/impl/EngEqIntervalServiceImpl.java +++ b/backend/src/main/java/com/yfd/platform/eng/service/impl/EngEqIntervalServiceImpl.java @@ -82,7 +82,8 @@ public class EngEqIntervalServiceImpl implements EngEqIntervalService { dataSourceResult.setData(list); return dataSourceResult; } - List> mapList = dynamicSQLMapper.pageAllList(page, sql.toString(), params); + List> mapList =new ArrayList<>(); +// List> mapList = dynamicSQLMapper.pageAllList(page, sql.toString(), params); // List msEngEqs = convertToMsEngEqList(mapList); dataSourceResult.setData(mapList); dataSourceResult.setTotal(ObjectUtil.isNotEmpty(page) ? page.getTotal() : (long) mapList.size()); diff --git a/backend/src/main/resources/mapper/data/SysUserDataScopeMapper.xml b/backend/src/main/resources/mapper/data/SysUserDataScopeMapper.xml new file mode 100644 index 0000000..5fb5a5c --- /dev/null +++ b/backend/src/main/resources/mapper/data/SysUserDataScopeMapper.xml @@ -0,0 +1,75 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + DELETE FROM SYS_USER_DATA_SCOPE + WHERE ID IN + + #{id} + + + + + + diff --git a/backend/src/main/resources/mapper/system/SysMenuMapper.xml b/backend/src/main/resources/mapper/system/SysMenuMapper.xml index 85869c7..93934a4 100644 --- a/backend/src/main/resources/mapper/system/SysMenuMapper.xml +++ b/backend/src/main/resources/mapper/system/SysMenuMapper.xml @@ -24,7 +24,7 @@ r.isvaild = 1 AND ru.userid = #{userId} AND permission IS NOT NULL - AND permission != '' +-- AND permission != ''