This commit is contained in:
六如
2024-12-22 08:42:31 +08:00
parent bb2a9eb314
commit 02fb5a9e85
12 changed files with 471 additions and 421 deletions

View File

@@ -1,2 +1,8 @@
dubbo.registry.address=nacos://localhost:8848 dubbo.registry.address=nacos://localhost:8848
mybatis.print-sql=true
# mysql config
mysql.host=127.0.0.1:3306
mysql.username=root
mysql.password=root

View File

@@ -1,4 +1,4 @@
import { computed, ref } from "vue"; import { computed, onMounted, ref } from "vue";
import { import {
type ButtonsCallBackParams, type ButtonsCallBackParams,
type PageInfo, type PageInfo,
@@ -11,20 +11,21 @@ import { api } from "@/api/serveApi";
import { hasPerms } from "@/utils/auth"; import { hasPerms } from "@/utils/auth";
import { PermCode } from "@/utils/perm"; import { PermCode } from "@/utils/perm";
const isAdd = ref(false); export function useServeApi() {
const isAdd = ref(false);
// ========= search form ========= // ========= search form =========
// 查询表单对象 // 查询表单对象
export const searchFormData = ref({ const searchFormData = ref({
apiName: "", apiName: "",
status: "", status: "",
pageIndex: 1, pageIndex: 1,
pageSize: 10 pageSize: 10
}); });
// 查询表单字段定义 // 查询表单字段定义
export const searchFormColumns: PlusColumn[] = [ const searchFormColumns: PlusColumn[] = [
{ {
label: "接口名称", label: "接口名称",
prop: "apiName" prop: "apiName"
@@ -47,22 +48,22 @@ export const searchFormColumns: PlusColumn[] = [
} }
] ]
} }
]; ];
// ========= table ========= // ========= table =========
// 表格对象 // 表格对象
export const { const {
tableData, tableData,
total, total,
pageInfo, pageInfo,
buttons: actionButtons buttons: actionButtons
} = useTable<any[]>(); } = useTable<any[]>();
// 默认每页条数,默认10 // 默认每页条数,默认10
pageInfo.value.pageSize = 10; pageInfo.value.pageSize = 10;
// 表格字段定义 // 表格字段定义
export const tableColumns: PlusColumn[] = [ const tableColumns: PlusColumn[] = [
{ {
label: "所属应用", label: "所属应用",
prop: "application", prop: "application",
@@ -184,11 +185,11 @@ export const tableColumns: PlusColumn[] = [
label: "修改时间", label: "修改时间",
prop: "updateTime" prop: "updateTime"
} }
]; ];
// 表格按钮权限 // 表格按钮权限
const btnCode = PermCode.api; const btnCode = PermCode.api;
// 表格按钮定义 // 表格按钮定义
actionButtons.value = [ actionButtons.value = [
{ {
// 修改 // 修改
text: "修改", text: "修改",
@@ -230,15 +231,15 @@ actionButtons.value = [
}, },
show: () => hasPerms(btnCode.updateStatus) show: () => hasPerms(btnCode.updateStatus)
} }
]; ];
// ========= dialog form ========= // ========= dialog form =========
// 弹窗显示 // 弹窗显示
export const dlgShow = ref(false); const dlgShow = ref(false);
export const dlgTitle = ref(""); const dlgTitle = ref("");
// 表单值 // 表单值
const editFormDataGen = () => { const editFormDataGen = () => {
return { return {
application: "", application: "",
apiName: "", apiName: "",
@@ -249,20 +250,20 @@ const editFormDataGen = () => {
regSource: RegSource.CUSTOM, regSource: RegSource.CUSTOM,
isNeedToken: 0 isNeedToken: 0
}; };
}; };
export const editFormData = ref<any>(editFormDataGen()); const editFormData = ref<any>(editFormDataGen());
export const editFormRules = { const editFormRules = {
application: [{ required: true, message: "请输入应用名称" }], application: [{ required: true, message: "请输入应用名称" }],
apiName: [{ required: true, message: "请输入接口名称" }], apiName: [{ required: true, message: "请输入接口名称" }],
apiVersion: [{ required: true, message: "请输入版本号" }] apiVersion: [{ required: true, message: "请输入版本号" }]
}; };
export const isCustomRegSource = computed(() => { const isCustomRegSource = computed(() => {
return editFormData.value.regSource === RegSource.CUSTOM; return editFormData.value.regSource === RegSource.CUSTOM;
}); });
// 表单内容 // 表单内容
export const editFormColumns: PlusColumn[] = [ const editFormColumns: PlusColumn[] = [
{ {
label: "所属应用", label: "所属应用",
prop: "application", prop: "application",
@@ -344,20 +345,20 @@ export const editFormColumns: PlusColumn[] = [
} }
] ]
} }
]; ];
// ========= event ========= // ========= event =========
// 添加按钮事件 // 添加按钮事件
export const handleAdd = () => { const handleAdd = () => {
isAdd.value = true; isAdd.value = true;
editFormData.value = editFormDataGen(); editFormData.value = editFormDataGen();
dlgTitle.value = "新增接口"; dlgTitle.value = "新增接口";
dlgShow.value = true; dlgShow.value = true;
}; };
// 保存按钮事件,校验成功后触发 // 保存按钮事件,校验成功后触发
export const handleSave = () => { const handleSave = () => {
const postData = editFormData.value; const postData = editFormData.value;
const pms = isAdd.value ? api.add(postData) : api.update(postData); const pms = isAdd.value ? api.add(postData) : api.update(postData);
pms.then(() => { pms.then(() => {
@@ -365,30 +366,30 @@ export const handleSave = () => {
dlgShow.value = false; dlgShow.value = false;
search(); search();
}); });
}; };
// 点击查询按钮 // 点击查询按钮
export const handleSearch = () => { const handleSearch = () => {
pageInfo.value.page = 1; pageInfo.value.page = 1;
search(); search();
}; };
// 分页事件 // 分页事件
export const handlePaginationChange = (_pageInfo: PageInfo): void => { const handlePaginationChange = (_pageInfo: PageInfo): void => {
pageInfo.value = _pageInfo; pageInfo.value = _pageInfo;
search(); search();
}; };
// 查询 // 查询
export const search = async () => { const search = async () => {
try { try {
const { data } = await doSearch(); const { data } = await doSearch();
tableData.value = data.list; tableData.value = data.list;
total.value = data.total; total.value = data.total;
} catch (error) {} } catch (error) {}
}; };
// 请求接口 // 请求接口
const doSearch = async () => { const doSearch = async () => {
// 查询参数 // 查询参数
const data = searchFormData.value; const data = searchFormData.value;
// 添加分页参数 // 添加分页参数
@@ -396,7 +397,30 @@ const doSearch = async () => {
data.pageSize = pageInfo.value.pageSize; data.pageSize = pageInfo.value.pageSize;
return api.page(data); return api.page(data);
}; };
// 页面加载 // 页面加载
search(); onMounted(() => {
search();
});
return {
actionButtons,
dlgShow,
dlgTitle,
editFormColumns,
editFormData,
editFormRules,
handleAdd,
handlePaginationChange,
handleSave,
handleSearch,
isCustomRegSource,
pageInfo,
searchFormColumns,
searchFormData,
tableColumns,
tableData,
total
};
}

View File

@@ -1,5 +1,6 @@
<script setup lang="ts"> <script setup lang="ts">
import { import { useServeApi } from "./index";
const {
actionButtons, actionButtons,
dlgShow, dlgShow,
dlgTitle, dlgTitle,
@@ -17,7 +18,7 @@ import {
tableColumns, tableColumns,
tableData, tableData,
total total
} from "./index"; } = useServeApi();
defineOptions({ defineOptions({
name: "ServeApi" name: "ServeApi"
}); });

View File

@@ -34,7 +34,8 @@ public interface OpenStory {
@Open("story.get") @Open("story.get")
StoryResponse getById(@NotNull(message = "id必填") Integer id); StoryResponse getById(@NotNull(message = "id必填") Integer id);
@Open(value = "story.get", version = "2.0") // 需要授权
@Open(value = "story.get", version = "2.0", permission = true)
StoryResponse getByIdV2(Long id); StoryResponse getByIdV2(Long id);
@Open(value = "story.get.context") @Open(value = "story.get.context")

View File

@@ -1,2 +1 @@
dubbo.registry.address=nacos://localhost:8848 dubbo.registry.address=nacos://localhost:8848

View File

@@ -39,12 +39,6 @@
<artifactId>dubbo-spring-boot-starter</artifactId> <artifactId>dubbo-spring-boot-starter</artifactId>
</dependency> </dependency>
<!-- nacos注册中心 -->
<dependency>
<groupId>org.apache.dubbo</groupId>
<artifactId>dubbo-nacos-spring-boot-starter</artifactId>
</dependency>
<dependency> <dependency>
<groupId>io.gitee.durcframework</groupId> <groupId>io.gitee.durcframework</groupId>
<artifactId>fastmybatis-spring-boot-starter</artifactId> <artifactId>fastmybatis-spring-boot-starter</artifactId>
@@ -65,6 +59,11 @@
<artifactId>spring-boot-starter-data-redis</artifactId> <artifactId>spring-boot-starter-data-redis</artifactId>
</dependency> </dependency>
<!-- nacos注册中心 -->
<dependency>
<groupId>org.apache.dubbo</groupId>
<artifactId>dubbo-nacos-spring-boot-starter</artifactId>
</dependency>
<dependency> <dependency>
<groupId>commons-codec</groupId> <groupId>commons-codec</groupId>
@@ -89,6 +88,11 @@
<artifactId>jackson-dataformat-xml</artifactId> <artifactId>jackson-dataformat-xml</artifactId>
</dependency> </dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
<!-- test--> <!-- test-->
<dependency> <dependency>

View File

@@ -9,9 +9,21 @@ import lombok.Getter;
@AllArgsConstructor @AllArgsConstructor
@Getter @Getter
public enum StatusEnum { public enum StatusEnum {
NONE(0),
ENABLE(1), ENABLE(1),
DISABLE(2); DISABLE(2);
private final int value; private final int value;
public static StatusEnum of(Number number) {
if (number == null) {
return NONE;
}
for (StatusEnum value : StatusEnum.values()) {
if (value.value == number.intValue()) {
return value;
}
}
return NONE;
}
} }

View File

@@ -35,8 +35,8 @@ public class RedisIsvApiPermissionManagerImpl extends LocalIsvApiPermissionManag
@Override @Override
public boolean doCheck(Long isvId, ApiInfoDTO apiInfoDTO) { public boolean doCheck(Long isvId, ApiInfoDTO apiInfoDTO) {
BoundHashOperations<String, Object, String> operations = stringRedisTemplate.boundHashOps(CACHE_KEY); BoundHashOperations<String, String, String> operations = stringRedisTemplate.boundHashOps(CACHE_KEY);
String value = operations.get(isvId); String value = operations.get(String.valueOf(isvId));
if (Objects.equals(value, SopConstants.NULL)) { if (Objects.equals(value, SopConstants.NULL)) {
return false; return false;
} }
@@ -53,7 +53,7 @@ public class RedisIsvApiPermissionManagerImpl extends LocalIsvApiPermissionManag
@Override @Override
protected void cache(Long isvId, List<Long> apiIdList) { protected void cache(Long isvId, List<Long> apiIdList) {
stringRedisTemplate.opsForHash().put(CACHE_KEY, isvId, JsonUtil.toJSONString(apiIdList)); stringRedisTemplate.opsForHash().put(CACHE_KEY, String.valueOf(isvId), JsonUtil.toJSONString(apiIdList));
log.info("更新isv接口id redis缓存, isvId={}, apiIdList={}", isvId, apiIdList); log.info("更新isv接口id redis缓存, isvId={}, apiIdList={}", isvId, apiIdList);
} }

View File

@@ -48,7 +48,7 @@ public class RedisIsvManagerImpl extends LocalIsvManagerImpl {
@Override @Override
protected void cache(String appId, IsvDTO isvDTO) { protected void cache(String appId, IsvDTO isvDTO) {
stringRedisTemplate.opsForHash().put(KEY_ISV, appId, JsonUtil.toJSONString(isvDTO)); stringRedisTemplate.opsForHash().put(KEY_ISV, appId, JsonUtil.toJSONString(isvDTO));
log.info("更新isv redis缓存, isvDTO={}", isvDTO); log.debug("更新isv redis缓存, isvDTO={}", isvDTO);
} }
@PostConstruct @PostConstruct

View File

@@ -27,7 +27,7 @@ public class RedisSecretManager extends LocalSecretManagerImpl {
@Override @Override
public String getIsvPublicKey(Long isvId) { public String getIsvPublicKey(Long isvId) {
try { try {
Object value = stringRedisTemplate.opsForHash().get(KEY_SEC, isvId); Object value = stringRedisTemplate.opsForHash().get(KEY_SEC, buildHashKey(isvId));
if (Objects.equals(value, SopConstants.NULL)) { if (Objects.equals(value, SopConstants.NULL)) {
return null; return null;
} }
@@ -47,8 +47,13 @@ public class RedisSecretManager extends LocalSecretManagerImpl {
if (publicKey == null) { if (publicKey == null) {
publicKey = SopConstants.NULL; publicKey = SopConstants.NULL;
} }
stringRedisTemplate.opsForHash().put(KEY_SEC, isvId, publicKey); stringRedisTemplate.opsForHash().put(KEY_SEC, buildHashKey(isvId), publicKey);
log.info("更新isv秘钥redis缓存, isvId={}", isvId); log.debug("更新isv秘钥redis缓存, isvId={}", isvId);
}
private String buildHashKey(Long isvId) {
return String.valueOf(isvId);
} }
@PostConstruct @PostConstruct

View File

@@ -111,7 +111,7 @@ public class ApiValidator implements Validator {
throw new ApiException(ErrorEnum.ISV_INVALID_METHOD, apiRequestContext.getLocale()); throw new ApiException(ErrorEnum.ISV_INVALID_METHOD, apiRequestContext.getLocale());
} }
// 检查路由是否启用 // 检查路由是否启用
if (!BooleanUtils.toBoolean(apiInfoDTO.getStatus())) { if (StatusEnum.of(apiInfoDTO.getStatus()) != StatusEnum.ENABLE) {
throw new ApiException(ErrorEnum.ISP_API_DISABLED, apiRequestContext.getLocale()); throw new ApiException(ErrorEnum.ISP_API_DISABLED, apiRequestContext.getLocale());
} }
// 校验是否需要授权访问 // 校验是否需要授权访问

44
sop.sql
View File

@@ -1,6 +1,7 @@
CREATE DATABASE IF NOT EXISTS `sop` DEFAULT CHARACTER SET utf8mb4; CREATE DATABASE IF NOT EXISTS `sop` DEFAULT CHARACTER SET utf8mb4;
USE `sop`; USE `sop`;
CREATE TABLE `api_info` ( CREATE TABLE `api_info` (
`id` bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT 'id', `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT 'id',
`application` varchar(64) NOT NULL DEFAULT '' COMMENT '应用名称', `application` varchar(64) NOT NULL DEFAULT '' COMMENT '应用名称',
@@ -22,7 +23,7 @@ CREATE TABLE `api_info` (
`update_by` bigint(20) DEFAULT '0' COMMENT '修改人id', `update_by` bigint(20) DEFAULT '0' COMMENT '修改人id',
PRIMARY KEY (`id`), PRIMARY KEY (`id`),
UNIQUE KEY `uk_apiname_version` (`api_name`,`api_version`) USING BTREE UNIQUE KEY `uk_apiname_version` (`api_name`,`api_version`) USING BTREE
) ENGINE=InnoDB AUTO_INCREMENT=24 COMMENT='接口信息表'; ) ENGINE=InnoDB AUTO_INCREMENT=25 COMMENT='接口信息表';
CREATE TABLE `doc_app` ( CREATE TABLE `doc_app` (
`id` bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT 'id', `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT 'id',
@@ -118,7 +119,7 @@ CREATE TABLE `perm_group_permission` (
`update_by` bigint(20) DEFAULT '0' COMMENT '修改人id', `update_by` bigint(20) DEFAULT '0' COMMENT '修改人id',
PRIMARY KEY (`id`), PRIMARY KEY (`id`),
UNIQUE KEY `uk_apiid_groupid` (`api_id`,`group_id`) USING BTREE UNIQUE KEY `uk_apiid_groupid` (`api_id`,`group_id`) USING BTREE
) ENGINE=InnoDB AUTO_INCREMENT=15 COMMENT='组权限表'; ) ENGINE=InnoDB AUTO_INCREMENT=16 COMMENT='组权限表';
CREATE TABLE `perm_isv_group` ( CREATE TABLE `perm_isv_group` (
`id` bigint(20) unsigned NOT NULL AUTO_INCREMENT, `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
@@ -130,7 +131,7 @@ CREATE TABLE `perm_isv_group` (
`update_by` bigint(20) DEFAULT '0' COMMENT '修改人id', `update_by` bigint(20) DEFAULT '0' COMMENT '修改人id',
PRIMARY KEY (`id`), PRIMARY KEY (`id`),
UNIQUE KEY `uk_isvid_groupid` (`isv_id`,`group_id`) USING BTREE UNIQUE KEY `uk_isvid_groupid` (`isv_id`,`group_id`) USING BTREE
) ENGINE=InnoDB AUTO_INCREMENT=12 COMMENT='isv分组'; ) ENGINE=InnoDB AUTO_INCREMENT=13 COMMENT='isv分组';
CREATE TABLE `sys_admin_user` ( CREATE TABLE `sys_admin_user` (
`id` bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT 'id', `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT 'id',
@@ -280,25 +281,26 @@ CREATE TABLE `sys_user_role` (
) ENGINE=InnoDB AUTO_INCREMENT=7 COMMENT='角色用户关联表'; ) ENGINE=InnoDB AUTO_INCREMENT=7 COMMENT='角色用户关联表';
INSERT INTO `api_info` (`id`, `application`, `api_name`, `api_version`, `description`, `remark`, `interface_class_name`, `method_name`, `param_info`, `is_permission`, `is_need_Token`, `has_common_response`, `reg_source`, `status`, `add_time`, `update_time`, `add_by`, `update_by`) VALUES INSERT INTO `api_info` (`id`, `application`, `api_name`, `api_version`, `description`, `remark`, `interface_class_name`, `method_name`, `param_info`, `is_permission`, `is_need_Token`, `has_common_response`, `reg_source`, `status`, `add_time`, `update_time`, `add_by`, `update_by`) VALUES
(1, 'story-service', 'story.get', '1.0', '', '', 'com.gitee.sop.storyweb.open.OpenStory', 'getById', '[{\"name\":\"id\",\"type\":\"java.lang.Integer\"}]', 0, 0, 1, 1, 1, '2024-09-10 18:34:05', '2024-12-21 15:03:36', 0, 0), (1, 'story-service', 'story.get', '1.0', '根据id获取故事', '', 'com.gitee.sop.storyweb.open.OpenStory', 'getById', '[{\"name\":\"id\",\"type\":\"java.lang.Integer\"}]', 0, 0, 1, 1, 1, '2024-09-10 18:34:05', '2024-12-22 07:39:35', 0, 0),
(2, 'story-service', 'story.save', '1.0', '', '', 'com.gitee.sop.storyweb.open.OpenStory', 'save', '[{\"name\":\"storySaveRequest\",\"type\":\"com.gitee.sop.storyweb.open.req.StorySaveRequest\"}]', 0, 0, 1, 1, 1, '2024-09-10 18:34:05', '2024-12-21 15:03:36', 0, 0), (2, 'story-service', 'story.save', '1.0', '', '', 'com.gitee.sop.storyweb.open.OpenStory', 'save', '[{\"name\":\"storySaveRequest\",\"type\":\"com.gitee.sop.storyweb.open.req.StorySaveRequest\"}]', 0, 0, 1, 1, 1, '2024-09-10 18:34:05', '2024-12-22 07:39:35', 0, 0),
(3, 'story-service', 'story.find', '1.0', '', '', 'com.gitee.sop.storyweb.open.OpenStory', 'getById', '[{\"name\":\"id\",\"type\":\"java.lang.Integer\"},{\"name\":\"name\",\"type\":\"java.lang.String\"}]', 0, 0, 1, 1, 1, '2024-09-10 18:38:27', '2024-12-21 15:03:36', 0, 0), (3, 'story-service', 'story.find', '1.0', '', '', 'com.gitee.sop.storyweb.open.OpenStory', 'getById', '[{\"name\":\"id\",\"type\":\"java.lang.Integer\"},{\"name\":\"name\",\"type\":\"java.lang.String\"}]', 0, 0, 1, 1, 1, '2024-09-10 18:38:27', '2024-12-22 07:39:35', 0, 0),
(4, 'story-service', 'story.find2', '1.0', '', '', 'com.gitee.sop.storyweb.open.StoryService', 'getById2', '[{\"name\":\"id\",\"type\":\"java.lang.Integer\"},{\"name\":\"name\",\"type\":\"java.lang.String\"}]', 0, 0, 1, 1, 1, '2024-09-10 18:44:51', '2024-09-10 18:44:51', 0, 0), (4, 'story-service', 'story.find2', '1.0', '', '', 'com.gitee.sop.storyweb.open.StoryService', 'getById2', '[{\"name\":\"id\",\"type\":\"java.lang.Integer\"},{\"name\":\"name\",\"type\":\"java.lang.String\"}]', 0, 0, 1, 1, 1, '2024-09-10 18:44:51', '2024-09-10 18:44:51', 0, 0),
(5, 'story-service', 'story.find3', '1.0', '', '', 'com.gitee.sop.storyweb.open.StoryService', 'getById2', '[{\"name\":\"id\",\"type\":\"java.lang.Integer\"},{\"name\":\"name\",\"type\":\"java.lang.String\"}]', 0, 0, 1, 1, 1, '2024-09-10 18:49:14', '2024-09-10 18:49:14', 0, 0), (5, 'story-service', 'story.find3', '1.0', '', '', 'com.gitee.sop.storyweb.open.StoryService', 'getById2', '[{\"name\":\"id\",\"type\":\"java.lang.Integer\"},{\"name\":\"name\",\"type\":\"java.lang.String\"}]', 0, 0, 1, 1, 1, '2024-09-10 18:49:14', '2024-09-10 18:49:14', 0, 0),
(6, 'story-service', 'story.update', '1.0', '', '', 'com.gitee.sop.storyweb.open.OpenStory', 'update', '[{\"name\":\"id\",\"type\":\"java.lang.Integer\"},{\"name\":\"storySaveRequest\",\"type\":\"com.gitee.sop.storyweb.open.req.StorySaveRequest\"}]', 0, 0, 1, 1, 1, '2024-09-10 23:00:07', '2024-12-21 15:03:36', 0, 0), (6, 'story-service', 'story.update', '1.0', '', '', 'com.gitee.sop.storyweb.open.OpenStory', 'update', '[{\"name\":\"id\",\"type\":\"java.lang.Integer\"},{\"name\":\"storySaveRequest\",\"type\":\"com.gitee.sop.storyweb.open.req.StorySaveRequest\"}]', 0, 0, 1, 1, 1, '2024-09-10 23:00:07', '2024-12-22 07:39:35', 0, 0),
(7, 'story-service', 'story.upload', '1.0', '', '', 'com.gitee.sop.storyweb.open.OpenStory', 'upload', '[{\"name\":\"storySaveRequest\",\"type\":\"com.gitee.sop.storyweb.open.req.StorySaveRequest\"},{\"name\":\"file\",\"type\":\"com.gitee.sop.support.dto.FileData\"}]', 0, 0, 1, 1, 1, '2024-09-13 09:14:03', '2024-12-21 15:03:36', 0, 0), (7, 'story-service', 'story.upload', '1.0', '', '', 'com.gitee.sop.storyweb.open.OpenStory', 'upload', '[{\"name\":\"storySaveRequest\",\"type\":\"com.gitee.sop.storyweb.open.req.StorySaveRequest\"},{\"name\":\"file\",\"type\":\"com.gitee.sop.support.dto.FileData\"}]', 0, 0, 1, 1, 1, '2024-09-13 09:14:03', '2024-12-22 07:39:35', 0, 0),
(8, 'story-service', 'story.upload.more', '1.0', '', '', 'com.gitee.sop.storyweb.open.OpenStory', 'upload2', '[{\"name\":\"storySaveRequest\",\"type\":\"com.gitee.sop.storyweb.open.req.StorySaveRequest\"},{\"name\":\"idCardFront\",\"type\":\"com.gitee.sop.support.dto.FileData\"},{\"name\":\"idCardBack\",\"type\":\"com.gitee.sop.support.dto.FileData\"}]', 0, 0, 1, 1, 1, '2024-09-13 09:22:05', '2024-12-21 15:03:36', 0, 0), (8, 'story-service', 'story.upload.more', '1.0', '', '', 'com.gitee.sop.storyweb.open.OpenStory', 'upload2', '[{\"name\":\"storySaveRequest\",\"type\":\"com.gitee.sop.storyweb.open.req.StorySaveRequest\"},{\"name\":\"idCardFront\",\"type\":\"com.gitee.sop.support.dto.FileData\"},{\"name\":\"idCardBack\",\"type\":\"com.gitee.sop.support.dto.FileData\"}]', 0, 0, 1, 1, 1, '2024-09-13 09:22:05', '2024-12-22 07:39:35', 0, 0),
(9, 'story-service', 'story.upload.list', '1.0', '', '', 'com.gitee.sop.storyweb.open.OpenStory', 'upload3', '[{\"name\":\"storySaveRequest\",\"type\":\"com.gitee.sop.storyweb.open.req.StorySaveRequest\"},{\"actualType\":\"com.gitee.sop.support.dto.FileData\",\"name\":\"files\",\"type\":\"java.util.List\"}]', 0, 0, 1, 1, 1, '2024-09-13 09:28:01', '2024-12-21 15:03:36', 0, 0), (9, 'story-service', 'story.upload.list', '1.0', '', '', 'com.gitee.sop.storyweb.open.OpenStory', 'upload3', '[{\"name\":\"storySaveRequest\",\"type\":\"com.gitee.sop.storyweb.open.req.StorySaveRequest\"},{\"actualType\":\"com.gitee.sop.support.dto.FileData\",\"name\":\"files\",\"type\":\"java.util.List\"}]', 0, 0, 1, 1, 1, '2024-09-13 09:28:01', '2024-12-22 07:39:35', 0, 0),
(10, 'story-service', 'story.get', '2.0', '', '', 'com.gitee.sop.storyweb.open.OpenStory', 'getByIdV2', '[{\"name\":\"id\",\"type\":\"java.lang.Long\"}]', 0, 0, 1, 1, 1, '2024-09-14 10:40:13', '2024-12-21 15:03:36', 0, 0), (10, 'story-service', 'story.get', '2.0', '', '', 'com.gitee.sop.storyweb.open.OpenStory', 'getByIdV2', '[{\"name\":\"id\",\"type\":\"java.lang.Long\"}]', 1, 0, 1, 1, 1, '2024-09-14 10:40:13', '2024-12-22 08:28:31', 0, 1),
(11, 'story-service', 'story.download', '1.0', '11', '', 'com.gitee.sop.storyweb.open.OpenStory', 'download', '[{\"name\":\"id\",\"type\":\"java.lang.Integer\"}]', 0, 0, 1, 1, 1, '2024-09-16 20:56:09', '2024-12-21 15:03:36', 0, 0), (11, 'story-service', 'story.download', '1.0', '11', '', 'com.gitee.sop.storyweb.open.OpenStory', 'download', '[{\"name\":\"id\",\"type\":\"java.lang.Integer\"}]', 0, 0, 1, 1, 1, '2024-09-16 20:56:09', '2024-12-22 07:39:35', 0, 0),
(14, 'q1', 'q11', 'q', 'q1', '备注,内容有点长内容有点长内容有点长内容有点长内容有点长内容有点长', '', '', NULL, 1, 0, 1, 1, 2, '2024-10-06 09:51:47', '2024-11-13 10:20:56', 0, 1), (14, 'q1', 'q11', 'q', 'q1', '备注,内容有点长内容有点长内容有点长内容有点长内容有点长内容有点长', '', '', NULL, 1, 0, 1, 1, 2, '2024-10-06 09:51:47', '2024-11-13 10:20:56', 0, 1),
(15, 'server', 'goods.get', '1.0', '1111', '2222225555', '', '', NULL, 1, 0, 1, 2, 2, '2024-10-10 10:38:59', '2024-10-25 20:19:29', 0, 0), (15, 'server', 'goods.get', '1.0', '1111', '2222225555', '', '', NULL, 1, 0, 1, 2, 2, '2024-10-10 10:38:59', '2024-10-25 20:19:29', 0, 0),
(18, 'example-payment', 'alipay.trade.wap.pay', '2.0', NULL, NULL, 'com.gitee.sop.payment.open.OpenPayment', 'tradeWapPay', '[{\"name\":\"request\",\"type\":\"com.gitee.sop.payment.open.req.AlipayTradeWapPayRequest\"}]', 0, 0, 1, 1, 1, '2024-10-27 17:12:20', '2024-10-27 21:02:07', 0, 0), (18, 'example-payment', 'alipay.trade.wap.pay', '2.0', NULL, NULL, 'com.gitee.sop.payment.open.OpenPayment', 'tradeWapPay', '[{\"name\":\"request\",\"type\":\"com.gitee.sop.payment.open.req.AlipayTradeWapPayRequest\"}]', 0, 0, 1, 1, 1, '2024-10-27 17:12:20', '2024-10-27 21:02:07', 0, 0),
(19, 'story-service', 'story.updateError', '1.0', NULL, NULL, 'com.gitee.sop.storyweb.open.OpenStory', 'updateError', '[{\"name\":\"id\",\"type\":\"java.lang.Integer\"}]', 0, 0, 1, 1, 1, '2024-11-03 22:26:14', '2024-12-21 15:03:36', 0, 0), (19, 'story-service', 'story.updateError', '1.0', NULL, NULL, 'com.gitee.sop.storyweb.open.OpenStory', 'updateError', '[{\"name\":\"id\",\"type\":\"java.lang.Integer\"}]', 0, 0, 1, 1, 1, '2024-11-03 22:26:14', '2024-12-22 07:39:35', 0, 0),
(20, 'story-service', 'story.get', '3.0', NULL, NULL, 'com.gitee.sop.storyweb.open.OpenStory', 'getByIdV3', '[{\"name\":\"id\",\"type\":\"java.lang.Long\"},{\"name\":\"request\",\"type\":\"com.gitee.sop.support.dto.OpenRequest\"}]', 0, 0, 1, 1, 1, '2024-11-04 14:27:07', '2024-11-08 09:47:27', 0, 0), (20, 'story-service', 'story.get', '3.0', NULL, NULL, 'com.gitee.sop.storyweb.open.OpenStory', 'getByIdV3', '[{\"name\":\"id\",\"type\":\"java.lang.Long\"},{\"name\":\"request\",\"type\":\"com.gitee.sop.support.dto.OpenRequest\"}]', 0, 0, 1, 1, 1, '2024-11-04 14:27:07', '2024-11-08 09:47:27', 0, 0),
(21, 'story-service', 'story.get.context', '1.0', NULL, NULL, 'com.gitee.sop.storyweb.open.OpenStory', 'getContext', '[{\"name\":\"id\",\"type\":\"java.lang.Long\"},{\"name\":\"context\",\"type\":\"com.gitee.sop.support.context.OpenContext\"}]', 0, 0, 1, 1, 1, '2024-11-10 23:06:45', '2024-12-21 15:03:36', 0, 0), (21, 'story-service', 'story.get.context', '1.0', NULL, NULL, 'com.gitee.sop.storyweb.open.OpenStory', 'getContext', '[{\"name\":\"id\",\"type\":\"java.lang.Long\"},{\"name\":\"context\",\"type\":\"com.gitee.sop.support.context.OpenContext\"}]', 0, 0, 1, 1, 1, '2024-11-10 23:06:45', '2024-12-22 07:39:35', 0, 0),
(22, 'example-payment', 'pay.trade.wap.pay', '1.0', '手机网站支付接口', NULL, 'com.gitee.sop.payment.open.OpenPayment', 'tradeWapPay', '[{\"name\":\"request\",\"type\":\"com.gitee.sop.payment.open.req.PayTradeWapPayRequest\"}]', 0, 0, 1, 1, 1, '2024-11-29 22:28:20', '2024-12-02 10:14:26', 0, 0), (22, 'example-payment', 'pay.trade.wap.pay', '1.0', '手机网站支付接口', NULL, 'com.gitee.sop.payment.open.OpenPayment', 'tradeWapPay', '[{\"name\":\"request\",\"type\":\"com.gitee.sop.payment.open.req.PayTradeWapPayRequest\"}]', 0, 0, 1, 1, 1, '2024-11-29 22:28:20', '2024-12-02 10:14:26', 0, 0),
(23, 'example-payment', 'pay.order.search', '1.0', '订单查询接口', NULL, 'com.gitee.sop.payment.open.OpenPayment', 'orderSearch', '[{\"name\":\"request\",\"type\":\"com.gitee.sop.payment.open.req.PayOrderSearchRequest\"}]', 0, 0, 1, 1, 1, '2024-11-29 22:28:20', '2024-12-02 10:14:26', 0, 0); (23, 'example-payment', 'pay.order.search', '1.0', '订单查询接口', NULL, 'com.gitee.sop.payment.open.OpenPayment', 'orderSearch', '[{\"name\":\"request\",\"type\":\"com.gitee.sop.payment.open.req.PayOrderSearchRequest\"}]', 0, 0, 1, 1, 1, '2024-11-29 22:28:20', '2024-12-02 10:14:26', 0, 0),
(24, 'story-service', 'alipay.story.find', '1.0', NULL, NULL, 'com.gitee.sop.storyweb.open.OpenStory', 'findByName', '[{\"name\":\"name\",\"type\":\"java.lang.String\"}]', 0, 0, 1, 1, 1, '2024-12-21 19:48:40', '2024-12-22 07:39:35', 0, 0);
INSERT INTO `doc_app` (`id`, `app_name`, `token`, `is_publish`, `add_time`, `update_time`, `add_by`, `update_by`) VALUES INSERT INTO `doc_app` (`id`, `app_name`, `token`, `is_publish`, `add_time`, `update_time`, `add_by`, `update_by`) VALUES
(3, '支付服务', '34ff76952462413982d21219cf099d46', 1, '2024-11-26 09:19:29', '2024-11-29 22:49:20', 1, 1), (3, '支付服务', '34ff76952462413982d21219cf099d46', 1, '2024-11-26 09:19:29', '2024-11-29 22:49:20', 1, 1),
@@ -322,13 +324,12 @@ INSERT INTO `doc_info` (`id`, `doc_app_id`, `doc_title`, `doc_id`, `doc_code`, `
(26, 4, '根据id获取故事', 797, '', 1, 1, '1.0', 'story.get', '', 0, 0, 796, '2024-12-21 15:11:54', '2024-12-21 15:11:54', 1, 0); (26, 4, '根据id获取故事', 797, '', 1, 1, '1.0', 'story.get', '', 0, 0, 796, '2024-12-21 15:11:54', '2024-12-21 15:11:54', 1, 0);
INSERT INTO `isv_info` (`id`, `app_id`, `status`, `remark`, `add_time`, `update_time`, `add_by`, `update_by`) VALUES INSERT INTO `isv_info` (`id`, `app_id`, `status`, `remark`, `add_time`, `update_time`, `add_by`, `update_by`) VALUES
(1, '2019032617262200001', 1, 'xx', '2024-09-10 09:23:43', '2024-12-21 09:39:45', 0, 1), (1, '2019032617262200001', 1, 'xx', '2024-09-10 09:23:43', '2024-12-22 07:35:52', 0, 1),
(2, '224', 1, '334', '2024-10-10 10:48:40', '2024-10-10 10:50:39', 0, 0), (2, '224', 1, '334', '2024-10-10 10:48:40', '2024-10-10 10:50:39', 0, 0),
(3, '202410111294229455501262848', 1, '杭州限行公司', '2024-10-11 09:17:28', '2024-12-21 14:14:46', 0, 1), (3, '202410111294229455501262848', 1, '杭州限行公司', '2024-10-11 09:17:28', '2024-12-21 14:14:46', 0, 1),
(4, '202410191297295138816524288', 1, 'xx公司', '2024-10-19 20:19:24', '2024-12-20 19:49:07', 0, 0), (4, '202410191297295138816524288', 1, 'xx公司', '2024-10-19 20:19:24', '2024-12-20 19:49:07', 0, 0),
(5, '202412201319756154208780288', 1, '非Java', '2024-12-20 19:51:27', '2024-12-21 14:24:44', 1, 1); (5, '202412201319756154208780288', 1, '非Java', '2024-12-20 19:51:27', '2024-12-21 14:24:44', 1, 1);
INSERT INTO `isv_keys` (`id`, `isv_id`, `key_format`, `public_key_isv`, `private_key_isv`, `public_key_platform`, `private_key_platform`, `add_time`, `update_time`, `add_by`, `update_by`) VALUES INSERT INTO `isv_keys` (`id`, `isv_id`, `key_format`, `public_key_isv`, `private_key_isv`, `public_key_platform`, `private_key_platform`, `add_time`, `update_time`, `add_by`, `update_by`) VALUES
(16, 1, 1, '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', '2024-09-10 09:26:33', '2024-12-21 14:25:55', 0, 1), (16, 1, 1, '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', '2024-09-10 09:26:33', '2024-12-21 14:25:55', 0, 1),
(17, 3, 1, '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', '', '', '2024-10-11 09:17:28', '2024-10-11 09:17:28', 0, 0), (17, 3, 1, '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', '', '', '2024-10-11 09:17:28', '2024-10-11 09:17:28', 0, 0),
@@ -342,14 +343,13 @@ INSERT INTO `perm_group` (`id`, `group_name`, `is_deleted`, `add_time`, `update_
(3, 'VIP2', 0, '2024-11-13 10:36:12', '2024-11-13 10:36:12', 1, 1); (3, 'VIP2', 0, '2024-11-13 10:36:12', '2024-11-13 10:36:12', 1, 1);
INSERT INTO `perm_group_permission` (`id`, `group_id`, `api_id`, `add_time`, `update_time`, `add_by`, `update_by`) VALUES INSERT INTO `perm_group_permission` (`id`, `group_id`, `api_id`, `add_time`, `update_time`, `add_by`, `update_by`) VALUES
(8, 1, 11, '2024-10-23 13:58:29', '2024-10-23 13:58:29', 0, 0), (15, 1, 10, '2024-12-22 07:40:02', '2024-12-22 07:40:02', 0, 0);
(13, 1, 14, '2024-10-23 14:17:58', '2024-10-23 14:17:58', 0, 0),
(14, 1, 10, '2024-10-25 20:27:47', '2024-10-25 20:27:47', 0, 0);
INSERT INTO `perm_isv_group` (`id`, `isv_id`, `group_id`, `add_time`, `update_time`, `add_by`, `update_by`) VALUES INSERT INTO `perm_isv_group` (`id`, `isv_id`, `group_id`, `add_time`, `update_time`, `add_by`, `update_by`) VALUES
(8, 4, 1, '2024-10-21 14:10:18', '2024-10-21 14:10:18', 0, 0), (8, 4, 1, '2024-10-21 14:10:18', '2024-10-21 14:10:18', 0, 0),
(9, 3, 1, '2024-10-25 20:20:16', '2024-10-25 20:20:16', 0, 0), (9, 3, 1, '2024-10-25 20:20:16', '2024-10-25 20:20:16', 0, 0),
(11, 2, 1, '2024-10-25 20:25:41', '2024-10-25 20:25:41', 0, 0); (11, 2, 1, '2024-10-25 20:25:41', '2024-10-25 20:25:41', 0, 0),
(12, 1, 1, '2024-12-22 07:40:38', '2024-12-22 07:40:38', 0, 0);
INSERT INTO `sys_admin_user` (`id`, `username`, `password`, `nickname`, `email`, `avatar`, `status`, `reg_type`, `add_time`, `update_time`, `add_by`, `update_by`) VALUES INSERT INTO `sys_admin_user` (`id`, `username`, `password`, `nickname`, `email`, `avatar`, `status`, `reg_type`, `add_time`, `update_time`, `add_by`, `update_by`) VALUES
(1, 'admin', '$2a$10$6LWUuQQ8V/rszLo50.qrsuBlNmbYY/q2KSC1BmrxxN5czvOxmF3qK', 'admin', '', '', 1, 'backend', '2024-10-03 08:37:03', '2024-10-03 19:08:48', 0, 0); (1, 'admin', '$2a$10$6LWUuQQ8V/rszLo50.qrsuBlNmbYY/q2KSC1BmrxxN5czvOxmF3qK', 'admin', '', '', 1, 'backend', '2024-10-03 08:37:03', '2024-10-03 19:08:48', 0, 0);
@@ -451,5 +451,3 @@ INSERT INTO `sys_user_role` (`id`, `role_id`, `user_id`, `add_time`, `update_tim
(4, 1, 1, '2024-12-12 20:32:13', '2024-12-12 20:32:13', 1, 0), (4, 1, 1, '2024-12-12 20:32:13', '2024-12-12 20:32:13', 1, 0),
(5, 2, 2, '2024-12-12 20:32:16', '2024-12-12 20:32:16', 1, 0), (5, 2, 2, '2024-12-12 20:32:16', '2024-12-12 20:32:16', 1, 0),
(6, 3, 3, '2024-12-19 09:56:08', '2024-12-19 09:56:08', 1, 0); (6, 3, 3, '2024-12-19 09:56:08', '2024-12-19 09:56:08', 1, 0);