diff --git a/src/main/java/com/zsc/edu/dify/framework/security/SpringSecurityConfig.java b/src/main/java/com/zsc/edu/dify/framework/security/SpringSecurityConfig.java index 2adebbe..202872e 100644 --- a/src/main/java/com/zsc/edu/dify/framework/security/SpringSecurityConfig.java +++ b/src/main/java/com/zsc/edu/dify/framework/security/SpringSecurityConfig.java @@ -18,6 +18,7 @@ import org.springframework.security.web.authentication.UsernamePasswordAuthentic import org.springframework.security.web.authentication.rememberme.JdbcTokenRepositoryImpl; import org.springframework.security.web.authentication.rememberme.PersistentTokenRepository; import org.springframework.security.web.context.HttpSessionSecurityContextRepository; +import org.springframework.security.web.session.HttpSessionEventPublisher; import javax.sql.DataSource; @@ -141,10 +142,9 @@ public class SpringSecurityConfig { .tokenRepository(persistentTokenRepository())) .csrf(csrf -> csrf.ignoringRequestMatchers("v1/**","/api/internal/**", "/api/rest/user/logout","/api/rest/user/register")) .sessionManagement(session -> session - .maximumSessions(3) + .maximumSessions(1) .sessionRegistry(sessionRegistry) .expiredSessionStrategy(customSessionInformationExpiredStrategy)) .build(); - } } diff --git a/src/main/java/com/zsc/edu/dify/modules/dify/controller/PPTController.java b/src/main/java/com/zsc/edu/dify/modules/dify/controller/PPTController.java index 9a8ac64..bdd7fba 100644 --- a/src/main/java/com/zsc/edu/dify/modules/dify/controller/PPTController.java +++ b/src/main/java/com/zsc/edu/dify/modules/dify/controller/PPTController.java @@ -1,7 +1,10 @@ package com.zsc.edu.dify.modules.dify.controller; import com.zsc.edu.dify.exception.ExceptionUtil; +import com.zsc.edu.dify.framework.mybatisplus.DataPermission; import com.zsc.edu.dify.framework.security.SecurityUtil; +import com.zsc.edu.dify.modules.dify.entity.AppEntity; +import com.zsc.edu.dify.modules.dify.service.AppEntityService; import com.zsc.edu.dify.modules.dify.service.DifyWorkflowService; import com.zsc.edu.dify.modules.operationLog.entity.OperationLogAnnotation; import io.github.guoshiqiufeng.dify.workflow.dto.request.WorkflowRunRequest; @@ -10,6 +13,8 @@ import jakarta.annotation.Resource; import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.web.bind.annotation.*; +import java.util.List; + @RestController @RequestMapping("/api/ppt") public class PPTController { @@ -17,6 +22,9 @@ public class PPTController { @Resource private DifyWorkflowService difyWorkflowService; + @Resource + private AppEntityService appEntityService; + /** * 运行从可研申报书生成科技项目PPT_工作流 * @@ -29,4 +37,15 @@ public class PPTController { request.setUserId(SecurityUtil.getUserInfo().id.toString()); return ExceptionUtil.difyException(() -> difyWorkflowService.run(request, "ee3889b6-50fa-463e-b956-3b93447727fc")); } + + /** + * 根据appType获取应用列表 + * @return + */ + @GetMapping("/apps") + @DataPermission + public List getAppsByAppType(){ + return appEntityService.selectByAppType(AppEntity.AppType.PPT.getValue()); + } + } diff --git a/src/main/java/com/zsc/edu/dify/modules/dify/controller/Spider2Controller.java b/src/main/java/com/zsc/edu/dify/modules/dify/controller/Spider2Controller.java index 4ee9075..c9f6c5a 100644 --- a/src/main/java/com/zsc/edu/dify/modules/dify/controller/Spider2Controller.java +++ b/src/main/java/com/zsc/edu/dify/modules/dify/controller/Spider2Controller.java @@ -1,17 +1,19 @@ package com.zsc.edu.dify.modules.dify.controller; import com.zsc.edu.dify.exception.ExceptionUtil; +import com.zsc.edu.dify.framework.mybatisplus.DataPermission; import com.zsc.edu.dify.framework.security.SecurityUtil; +import com.zsc.edu.dify.modules.dify.entity.AppEntity; +import com.zsc.edu.dify.modules.dify.service.AppEntityService; import com.zsc.edu.dify.modules.dify.service.DifyWorkflowService; import com.zsc.edu.dify.modules.operationLog.entity.OperationLogAnnotation; import io.github.guoshiqiufeng.dify.workflow.dto.request.WorkflowRunRequest; import io.github.guoshiqiufeng.dify.workflow.dto.response.WorkflowRunResponse; import jakarta.annotation.Resource; import org.springframework.security.access.prepost.PreAuthorize; -import org.springframework.web.bind.annotation.PostMapping; -import org.springframework.web.bind.annotation.RequestBody; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.bind.annotation.*; + +import java.util.List; @RestController @RequestMapping("/api/spider2") @@ -19,6 +21,9 @@ public class Spider2Controller { @Resource private DifyWorkflowService difyWorkflowService; + @Resource + private AppEntityService appEntityService; + /** * 运行广州公共资源交易中心 招标小助手 * @@ -31,4 +36,14 @@ public class Spider2Controller { request.setUserId(SecurityUtil.getUserInfo().id.toString()); return ExceptionUtil.difyException(() -> difyWorkflowService.run(request, "c736edd0-925d-4877-9223-56aab7342311")); } + + /** + * 根据appType获取应用列表 + * @return + */ + @GetMapping("/apps") + @DataPermission + public List getAppsByAppType(){ + return appEntityService.selectByAppType(AppEntity.AppType.SCRAPER.getValue()); + } } diff --git a/src/main/java/com/zsc/edu/dify/modules/dify/controller/WordController.java b/src/main/java/com/zsc/edu/dify/modules/dify/controller/WordController.java index 010b6d3..4908420 100644 --- a/src/main/java/com/zsc/edu/dify/modules/dify/controller/WordController.java +++ b/src/main/java/com/zsc/edu/dify/modules/dify/controller/WordController.java @@ -1,7 +1,9 @@ package com.zsc.edu.dify.modules.dify.controller; import com.zsc.edu.dify.exception.ExceptionUtil; +import com.zsc.edu.dify.framework.mybatisplus.DataPermission; import com.zsc.edu.dify.framework.security.SecurityUtil; +import com.zsc.edu.dify.modules.dify.entity.AppEntity; import com.zsc.edu.dify.modules.dify.service.AppEntityService; import com.zsc.edu.dify.modules.operationLog.entity.OperationLogAnnotation; import io.github.guoshiqiufeng.dify.chat.DifyChat; @@ -11,6 +13,8 @@ import jakarta.annotation.Resource; import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.web.bind.annotation.*; +import java.util.List; + @RestController @RequestMapping("/api/word") public class WordController { @@ -34,4 +38,14 @@ public class WordController { sendRequest.setUserId(SecurityUtil.getUserInfo().id.toString()); return ExceptionUtil.difyException(()->difyChat.send(sendRequest)); } + + /** + * 根据appType获取应用列表 + * @return + */ + @GetMapping("/apps") + @DataPermission + public List getAppsByAppType(){ + return appEntityService.selectByAppType(AppEntity.AppType.WORD.getValue()); + } } diff --git a/src/main/java/com/zsc/edu/dify/modules/dify/service/Impl/AppEntityServiceImpl.java b/src/main/java/com/zsc/edu/dify/modules/dify/service/Impl/AppEntityServiceImpl.java index c07759a..2cdc6a2 100644 --- a/src/main/java/com/zsc/edu/dify/modules/dify/service/Impl/AppEntityServiceImpl.java +++ b/src/main/java/com/zsc/edu/dify/modules/dify/service/Impl/AppEntityServiceImpl.java @@ -103,3 +103,11 @@ public class AppEntityServiceImpl extends ServiceImpl { @Select("select * from sys_role_menu where role_id = #{id}") List findByRoleId(@Param("id") Long id); + + @Delete("delete from sys_role_menu where role_id = #{id}") + int deleteByRoleId(@Param("id") Long id); } diff --git a/src/main/java/com/zsc/edu/dify/modules/system/service/impl/RoleServiceImpl.java b/src/main/java/com/zsc/edu/dify/modules/system/service/impl/RoleServiceImpl.java index a6c3890..dd495e9 100644 --- a/src/main/java/com/zsc/edu/dify/modules/system/service/impl/RoleServiceImpl.java +++ b/src/main/java/com/zsc/edu/dify/modules/system/service/impl/RoleServiceImpl.java @@ -92,21 +92,14 @@ public class RoleServiceImpl extends ServiceImpl implement selectyRole.setRemark(dto.getRemark()); updateById(selectyRole); if (dto.getMenuIds() != null && !dto.getMenuIds().isEmpty()) { - // 查询当前角色已有的菜单权限 - List existingRoleMenus = roleMenuRepository.findByRoleId(id); - Set existingMenuIds = existingRoleMenus.stream() - .map(RoleMenu::getMenuId) - .collect(Collectors.toSet()); - - // 筛选出不存在的菜单ID组合进行插入 + // 删除已有的菜单 + roleMenuRepository.deleteByRoleId(id); List roleMenusToInsert = dto.getMenuIds().stream() - .filter(menuId -> !existingMenuIds.contains(menuId)) .map(menuId -> new RoleMenu(id, menuId)) .collect(Collectors.toList()); + // 插入新的关联菜单 + roleMenuRepository.insert(roleMenusToInsert); - if (!roleMenusToInsert.isEmpty()) { - roleMenuRepository.insert(roleMenusToInsert); - } } return selectyRole; } diff --git a/src/main/java/com/zsc/edu/dify/modules/system/service/impl/UserServiceImpl.java b/src/main/java/com/zsc/edu/dify/modules/system/service/impl/UserServiceImpl.java index dfdd1df..7bddba1 100644 --- a/src/main/java/com/zsc/edu/dify/modules/system/service/impl/UserServiceImpl.java +++ b/src/main/java/com/zsc/edu/dify/modules/system/service/impl/UserServiceImpl.java @@ -148,7 +148,8 @@ public class UserServiceImpl extends ServiceImpl implement throw new ConstraintException("角色不存在"); } UserDetailsImpl userDetails = SecurityUtil.getUserInfo(); - boolean updated = lambdaUpdate().eq(User::getId, userDetails.getId()) + boolean updated = lambdaUpdate() + .eq(User::getId, userDetails.getId()) .set(User::getRoleId, roleId) .update(); userDetails.setRole(role); @@ -164,12 +165,7 @@ public class UserServiceImpl extends ServiceImpl implement public Boolean addUserRole(List roleIds, Long userId) { List userRoles = roleIds.stream() - .map(roleId -> { - UserRole userRole = new UserRole(); - userRole.setUserId(userId); - userRole.setRoleId(roleId); - return userRole; - }) + .map(roleId -> new UserRole(userId, roleId)) .collect(Collectors.toList()); userRolesRepository.insert(userRoles); return true;