update 提炼springdoc

This commit is contained in:
D 2024-03-26 22:35:14 +08:00
parent 4c1d7ab978
commit c499985432
6 changed files with 72 additions and 56 deletions

View File

@ -200,6 +200,12 @@
<version>${ruoyi.version}</version>
</dependency>
<dependency>
<groupId>org.springdoc</groupId>
<artifactId>springdoc-openapi-starter-webmvc-ui</artifactId>
<version>2.1.0</version>
</dependency>
<!-- knife4j -->
<dependency>
<groupId>com.github.xiaoymin</groupId>

View File

@ -1,7 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<parent>
<artifactId>ruoyi</artifactId>
<groupId>com.ruoyi</groupId>
@ -69,6 +68,18 @@
<groupId>com.ruoyi</groupId>
<artifactId>ruoyi-online</artifactId>
</dependency>
<!-- knife4j -->
<dependency>
<groupId>com.github.xiaoymin</groupId>
<artifactId>knife4j-openapi3-jakarta-spring-boot-starter</artifactId>
<exclusions>
<exclusion>
<groupId>org.springdoc</groupId>
<artifactId>springdoc-openapi-starter-webmvc-ui</artifactId>
</exclusion>
</exclusions>
</dependency>
</dependencies>
<build>

View File

@ -142,8 +142,8 @@
</dependency>
<dependency>
<groupId>com.github.xiaoymin</groupId>
<artifactId>knife4j-openapi3-jakarta-spring-boot-starter</artifactId>
<groupId>org.springdoc</groupId>
<artifactId>springdoc-openapi-starter-webmvc-ui</artifactId>
</dependency>
</dependencies>

View File

@ -1,21 +0,0 @@
package com.ruoyi.online.config;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import com.ruoyi.online.utils.SqlMapper;
@Configuration
public class SqlMapperConfiguration {
@Autowired
private SqlSessionFactory sqlSessionFactory;
@Bean
public SqlMapper getSqlMapper() {
SqlSession sqlSession = sqlSessionFactory.openSession();
return new SqlMapper(sqlSession);
}
}

View File

@ -6,6 +6,8 @@ import java.util.Map;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
@ -35,15 +37,9 @@ public class OnLineController extends BaseController {
private PermissionService permissionService;
@Autowired
private SqlMapper sqlMapper;
private SqlSessionFactory sqlSessionFactory;
@RequestMapping("/api/**")
public Object api(@RequestParam(required = false) HashMap<String, Object> params,
@RequestBody(required = false) HashMap<String, Object> data, HttpServletRequest request,
HttpServletResponse response) {
OnlineMb selectOnlineMb = new OnlineMb();
selectOnlineMb.setPath(request.getRequestURI().replace("/online/api", ""));
selectOnlineMb.setMethod(request.getMethod());
public Map<String, Object> getParams(HashMap<String, Object> params, HashMap<String, Object> data) {
Map<String, Object> object = new HashMap<>();
HashMap<String, Object> object_params = new HashMap<String, Object>();
String keyregex = "params\\[(.*?)\\]";
@ -66,6 +62,47 @@ public class OnLineController extends BaseController {
object.putAll(data);
}
object.put("params", object_params);
return data;
}
public Boolean checkPermission(String permission) {
return switch (permission) {
case "hasPermi" -> permissionService.hasPermi(permission);
case "lacksPermi" -> !permissionService.lacksPermi(permission);
case "hasAnyPermi" -> permissionService.hasAnyPermi(permission);
case "hasRole" -> permissionService.hasRole(permission);
case "lacksRole" -> !permissionService.lacksRole(permission);
case "hasAnyRoles" -> permissionService.hasAnyRoles(permission);
default -> true;
};
}
public Object processingMapper(String sqlContext, String actuatot, Map<String, Object> params) {
String sql = "<script>\n" + sqlContext + "\n</script>";
SqlSession sqlSession = sqlSessionFactory.openSession();
SqlMapper sqlMapper = new SqlMapper(sqlSession);
Object res = null;
res = switch (actuatot) {
case "selectList" -> getDataTable(sqlMapper.selectList(sql, params));
case "insert" -> toAjax(sqlMapper.insert(sql, params));
case "selectOne" -> success(sqlMapper.selectOne(sql, params));
case "update" -> toAjax(sqlMapper.update(sql, params));
case "delete" -> toAjax(sqlMapper.delete(sql, params));
default -> AjaxResult.error(500, "系统错误,执行器错误");
};
sqlSession.close();
return res;
}
@RequestMapping("/api/**")
public Object api(@RequestParam(required = false) HashMap<String, Object> params,
@RequestBody(required = false) HashMap<String, Object> data, HttpServletRequest request,
HttpServletResponse response) {
OnlineMb selectOnlineMb = new OnlineMb();
selectOnlineMb.setPath(request.getRequestURI().replace("/online/api", ""));
selectOnlineMb.setMethod(request.getMethod());
Map<String, Object> object = getParams(params, data);
List<OnlineMb> selectOnlineMbList = onlineMbService.selectOnlineMbList(selectOnlineMb);
if (selectOnlineMbList.size() == 0) {
@ -74,20 +111,9 @@ public class OnLineController extends BaseController {
return AjaxResult.error(500, "系统错误,在线接口重复");
} else {
OnlineMb onlineMb = selectOnlineMbList.get(0);
boolean permissionFlag = true;
if (onlineMb.getPermissionType() != null) {
switch (onlineMb.getPermissionType()) {
case "hasPermi" -> permissionFlag = permissionService.hasPermi(onlineMb.getPermissionValue());
case "lacksPermi" -> permissionFlag = !permissionService.lacksPermi(onlineMb.getPermissionValue());
case "hasAnyPermi" -> permissionFlag = permissionService.hasAnyPermi(onlineMb.getPermissionValue());
case "hasRole" -> permissionFlag = permissionService.hasRole(onlineMb.getPermissionValue());
case "lacksRole" -> permissionFlag = !permissionService.lacksRole(onlineMb.getPermissionValue());
case "hasAnyRoles" -> permissionFlag = permissionService.hasAnyRoles(onlineMb.getPermissionValue());
}
}
if (!permissionFlag) {
if (!checkPermission(onlineMb.getPermissionValue()))
return AjaxResult.error(403, "没有权限,请联系管理员授权");
}
if (onlineMb.getDeptId() != null && onlineMb.getDeptId().equals("1")) {
object.put("deptId", SecurityUtils.getDeptId());
}
@ -95,15 +121,7 @@ public class OnLineController extends BaseController {
object.put("userId", SecurityUtils.getUserId());
}
String sql = "<script>\n" + onlineMb.getSql() + "\n</script>";
return switch (onlineMb.getActuator()) {
case "selectList" -> getDataTable(sqlMapper.selectList(sql, object));
case "insert" -> toAjax(sqlMapper.insert(sql, object));
case "selectOne" -> success(sqlMapper.selectOne(sql, object));
case "update" -> toAjax(sqlMapper.update(sql, object));
case "delete" -> toAjax(sqlMapper.delete(sql, object));
default -> AjaxResult.error(500, "系统错误,执行器错误");
};
return processingMapper(onlineMb.getSql(), onlineMb.getActuator(), object);
}
}

View File

@ -1,10 +1,12 @@
package com.ruoyi.online.service.impl;
import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.ruoyi.online.mapper.OnlineMbMapper;
import com.ruoyi.online.domain.OnlineMb;
import com.ruoyi.online.mapper.OnlineMbMapper;
import com.ruoyi.online.service.IOnlineMbService;
/**