Skip to content
Toggle navigation
P
Projects
G
Groups
S
Snippets
Help
shun peng
/
lufa-ai
This project
Loading...
Sign in
Toggle navigation
Go to a project
Project
Repository
Issues
0
Merge Requests
0
Pipelines
Wiki
Snippets
Members
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Commit
61b2aa0e
authored
Dec 18, 2024
by
shun peng
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
add: 通知单对外接口
parent
771348f4
Hide whitespace changes
Inline
Side-by-side
Showing
28 changed files
with
1583 additions
and
0 deletions
+1583
-0
jpai_deploy/sql_files/ai_app_api_key.sql
+37
-0
ruoyi-vue-pro-master-jdk17/yudao-module-ai/yudao-module-ai-api/src/main/java/cn/iocoder/yudao/module/ai/enums/ErrorCodeConstants.java
+4
-0
ruoyi-vue-pro-master-jdk17/yudao-module-ai/yudao-module-ai-biz/src/main/java/cn/iocoder/yudao/module/ai/controller/admin/aiappapikey/AiAppApiKeyController.java
+96
-0
ruoyi-vue-pro-master-jdk17/yudao-module-ai/yudao-module-ai-biz/src/main/java/cn/iocoder/yudao/module/ai/controller/admin/aiappapikey/vo/AiAppApiKeyPageReqVO.java
+24
-0
ruoyi-vue-pro-master-jdk17/yudao-module-ai/yudao-module-ai-biz/src/main/java/cn/iocoder/yudao/module/ai/controller/admin/aiappapikey/vo/AiAppApiKeyRespVO.java
+30
-0
ruoyi-vue-pro-master-jdk17/yudao-module-ai/yudao-module-ai-biz/src/main/java/cn/iocoder/yudao/module/ai/controller/admin/aiappapikey/vo/AiAppApiKeySaveReqVO.java
+27
-0
ruoyi-vue-pro-master-jdk17/yudao-module-ai/yudao-module-ai-biz/src/main/java/cn/iocoder/yudao/module/ai/controller/admin/tongzhidan_demo/TognzhidanDemoController.java
+127
-0
ruoyi-vue-pro-master-jdk17/yudao-module-ai/yudao-module-ai-biz/src/main/java/cn/iocoder/yudao/module/ai/controller/admin/tongzhidan_demo/vo/TognzhidanDemoListReqVO.java
+19
-0
ruoyi-vue-pro-master-jdk17/yudao-module-ai/yudao-module-ai-biz/src/main/java/cn/iocoder/yudao/module/ai/controller/admin/tongzhidan_demo/vo/TognzhidanDemoPageReqVO.java
+24
-0
ruoyi-vue-pro-master-jdk17/yudao-module-ai/yudao-module-ai-biz/src/main/java/cn/iocoder/yudao/module/ai/controller/admin/tongzhidan_demo/vo/TognzhidanDemoRespVO.java
+30
-0
ruoyi-vue-pro-master-jdk17/yudao-module-ai/yudao-module-ai-biz/src/main/java/cn/iocoder/yudao/module/ai/controller/admin/tongzhidan_demo/vo/TognzhidanDemoSaveReqVO.java
+25
-0
ruoyi-vue-pro-master-jdk17/yudao-module-ai/yudao-module-ai-biz/src/main/java/cn/iocoder/yudao/module/ai/dal/dataobject/aiappapikey/AiAppApiKeyDO.java
+42
-0
ruoyi-vue-pro-master-jdk17/yudao-module-ai/yudao-module-ai-biz/src/main/java/cn/iocoder/yudao/module/ai/dal/dataobject/tongzhidan_demo/TognzhidanDemoDO.java
+42
-0
ruoyi-vue-pro-master-jdk17/yudao-module-ai/yudao-module-ai-biz/src/main/java/cn/iocoder/yudao/module/ai/dal/mysql/aiappapikey/AiAppApiKeyMapper.java
+30
-0
ruoyi-vue-pro-master-jdk17/yudao-module-ai/yudao-module-ai-biz/src/main/java/cn/iocoder/yudao/module/ai/dal/mysql/tongzhidan_demo/TognzhidanDemoMapper.java
+37
-0
ruoyi-vue-pro-master-jdk17/yudao-module-ai/yudao-module-ai-biz/src/main/java/cn/iocoder/yudao/module/ai/service/aiappapikey/AiAppApiKeyService.java
+57
-0
ruoyi-vue-pro-master-jdk17/yudao-module-ai/yudao-module-ai-biz/src/main/java/cn/iocoder/yudao/module/ai/service/aiappapikey/AiAppApiKeyServiceImpl.java
+77
-0
ruoyi-vue-pro-master-jdk17/yudao-module-ai/yudao-module-ai-biz/src/main/java/cn/iocoder/yudao/module/ai/service/tongzhidan_demo/TognzhidanDemoService.java
+59
-0
ruoyi-vue-pro-master-jdk17/yudao-module-ai/yudao-module-ai-biz/src/main/java/cn/iocoder/yudao/module/ai/service/tongzhidan_demo/TognzhidanDemoServiceImpl.java
+87
-0
ruoyi-vue-pro-master-jdk17/yudao-module-ai/yudao-module-ai-biz/src/main/resources/mapper/aiappapikey/AiAppApiKeyMapper.xml
+13
-0
ruoyi-vue-pro-master-jdk17/yudao-module-ai/yudao-module-ai-biz/src/main/resources/mapper/tongzhidan_demo/TognzhidanDemoMapper.xml
+24
-0
yudao-ui-admin-vue3/dist.zip
+0
-0
yudao-ui-admin-vue3/src/api/ai/aiappapikey/index.ts
+43
-0
yudao-ui-admin-vue3/src/api/ai/tongzhidan_demo/index.ts
+43
-0
yudao-ui-admin-vue3/src/views/ai/aiappapikey/AppApiKeyForm.vue
+104
-0
yudao-ui-admin-vue3/src/views/ai/aiappapikey/index.vue
+190
-0
yudao-ui-admin-vue3/src/views/ai/tongzhidan_demo/TognzhidanDemoForm.vue
+102
-0
yudao-ui-admin-vue3/src/views/ai/tongzhidan_demo/index.vue
+190
-0
No files found.
jpai_deploy/sql_files/ai_app_api_key.sql
0 → 100644
View file @
61b2aa0e
/*
Navicat Premium Dump SQL
Source Server : oa_mysql
Source Server Type : MySQL
Source Server Version : 80402 (8.4.2)
Source Host : localhost:3306
Source Schema : ruoyi-vue-pro
Target Server Type : MySQL
Target Server Version : 80402 (8.4.2)
File Encoding : 65001
Date: 18/12/2024 16:32:04
*/
SET
NAMES
utf8mb4
;
SET
FOREIGN_KEY_CHECKS
=
0
;
-- ----------------------------
-- Table structure for ai_app_api_key
-- ----------------------------
DROP
TABLE
IF
EXISTS
`ai_app_api_key`
;
CREATE
TABLE
`ai_app_api_key`
(
`id`
int
NOT
NULL
AUTO_INCREMENT
COMMENT
'密钥ID'
,
`api_key`
varchar
(
255
)
CHARACTER
SET
utf8mb4
COLLATE
utf8mb4_0900_ai_ci
NOT
NULL
COMMENT
'密钥'
,
`note`
varchar
(
255
)
CHARACTER
SET
utf8mb4
COLLATE
utf8mb4_0900_ai_ci
NULL
DEFAULT
NULL
COMMENT
'备注'
,
`api_address`
varchar
(
255
)
CHARACTER
SET
utf8mb4
COLLATE
utf8mb4_0900_ai_ci
NOT
NULL
COMMENT
'对应接口'
,
`deleted`
bit
(
1
)
NULL
DEFAULT
b
'0'
COMMENT
'逻辑删'
,
`creator`
varchar
(
64
)
CHARACTER
SET
utf8mb4
COLLATE
utf8mb4_0900_ai_ci
NULL
DEFAULT
NULL
COMMENT
'创建者'
,
`create_time`
datetime
NOT
NULL
ON
UPDATE
CURRENT_TIMESTAMP
COMMENT
'创建时间'
,
`updater`
varchar
(
64
)
CHARACTER
SET
utf8mb4
COLLATE
utf8mb4_0900_ai_ci
NULL
DEFAULT
NULL
COMMENT
'更新者'
,
`update_time`
datetime
NOT
NULL
ON
UPDATE
CURRENT_TIMESTAMP
COMMENT
'更新时间'
,
PRIMARY
KEY
(
`id`
)
USING
BTREE
)
ENGINE
=
InnoDB
AUTO_INCREMENT
=
3
CHARACTER
SET
=
utf8mb4
COLLATE
=
utf8mb4_0900_ai_ci
COMMENT
=
'API密钥表'
ROW_FORMAT
=
Dynamic
;
SET
FOREIGN_KEY_CHECKS
=
1
;
ruoyi-vue-pro-master-jdk17/yudao-module-ai/yudao-module-ai-api/src/main/java/cn/iocoder/yudao/module/ai/enums/ErrorCodeConstants.java
View file @
61b2aa0e
...
@@ -62,4 +62,8 @@ public interface ErrorCodeConstants {
...
@@ -62,4 +62,8 @@ public interface ErrorCodeConstants {
ErrorCode
REQUEST_ORDER_FAIL
=
new
ErrorCode
(
1_022_009_000
,
"请求jp通知单信息失败!"
);
ErrorCode
REQUEST_ORDER_FAIL
=
new
ErrorCode
(
1_022_009_000
,
"请求jp通知单信息失败!"
);
ErrorCode
SYSTEM_ORDER_FAIL
=
new
ErrorCode
(
1_022_009_001
,
"系统通知单信息处理错误,请联系管理员!"
);
ErrorCode
SYSTEM_ORDER_FAIL
=
new
ErrorCode
(
1_022_009_001
,
"系统通知单信息处理错误,请联系管理员!"
);
ErrorCode
TOGNZHIDAN_DEMO_NOT_EXISTS
=
new
ErrorCode
(
1_022_009_002
,
"通知单智能体业务不存在"
);
ErrorCode
APP_API_KEY_NOT_EXISTS
=
new
ErrorCode
(
1_022_009_003
,
"AI密钥无效"
);
}
}
ruoyi-vue-pro-master-jdk17/yudao-module-ai/yudao-module-ai-biz/src/main/java/cn/iocoder/yudao/module/ai/controller/admin/aiappapikey/AiAppApiKeyController.java
0 → 100644
View file @
61b2aa0e
package
cn
.
iocoder
.
yudao
.
module
.
ai
.
controller
.
admin
.
aiappapikey
;
import
org.springframework.web.bind.annotation.*
;
import
jakarta.annotation.Resource
;
import
org.springframework.validation.annotation.Validated
;
import
org.springframework.security.access.prepost.PreAuthorize
;
import
io.swagger.v3.oas.annotations.tags.Tag
;
import
io.swagger.v3.oas.annotations.Parameter
;
import
io.swagger.v3.oas.annotations.Operation
;
import
jakarta.validation.constraints.*
;
import
jakarta.validation.*
;
import
jakarta.servlet.http.*
;
import
java.util.*
;
import
java.io.IOException
;
import
cn.iocoder.yudao.framework.common.pojo.PageParam
;
import
cn.iocoder.yudao.framework.common.pojo.PageResult
;
import
cn.iocoder.yudao.framework.common.pojo.CommonResult
;
import
cn.iocoder.yudao.framework.common.util.object.BeanUtils
;
import
static
cn
.
iocoder
.
yudao
.
framework
.
common
.
pojo
.
CommonResult
.
success
;
import
cn.iocoder.yudao.framework.excel.core.util.ExcelUtils
;
import
cn.iocoder.yudao.framework.apilog.core.annotation.ApiAccessLog
;
import
static
cn
.
iocoder
.
yudao
.
framework
.
apilog
.
core
.
enums
.
OperateTypeEnum
.*;
import
cn.iocoder.yudao.module.ai.controller.admin.aiappapikey.vo.*
;
import
cn.iocoder.yudao.module.ai.dal.dataobject.aiappapikey.AiAppApiKeyDO
;
import
cn.iocoder.yudao.module.ai.service.aiappapikey.AiAppApiKeyService
;
@Tag
(
name
=
"管理后台 - AIAPI密钥"
)
@RestController
@RequestMapping
(
"/ai/app-api-key"
)
@Validated
public
class
AiAppApiKeyController
{
@Resource
private
AiAppApiKeyService
appApiKeyService
;
@PostMapping
(
"/create"
)
@Operation
(
summary
=
"创建AIAPI密钥"
)
@PreAuthorize
(
"@ss.hasPermission('ai:app-api-key:create')"
)
public
CommonResult
<
Integer
>
createAppApiKey
(
@Valid
@RequestBody
AiAppApiKeySaveReqVO
createReqVO
)
{
return
success
(
appApiKeyService
.
createAppApiKey
(
createReqVO
));
}
@PutMapping
(
"/update"
)
@Operation
(
summary
=
"更新AIAPI密钥"
)
@PreAuthorize
(
"@ss.hasPermission('ai:app-api-key:update')"
)
public
CommonResult
<
Boolean
>
updateAppApiKey
(
@Valid
@RequestBody
AiAppApiKeySaveReqVO
updateReqVO
)
{
appApiKeyService
.
updateAppApiKey
(
updateReqVO
);
return
success
(
true
);
}
@DeleteMapping
(
"/delete"
)
@Operation
(
summary
=
"删除AIAPI密钥"
)
@Parameter
(
name
=
"id"
,
description
=
"编号"
,
required
=
true
)
@PreAuthorize
(
"@ss.hasPermission('ai:app-api-key:delete')"
)
public
CommonResult
<
Boolean
>
deleteAppApiKey
(
@RequestParam
(
"id"
)
Integer
id
)
{
appApiKeyService
.
deleteAppApiKey
(
id
);
return
success
(
true
);
}
@GetMapping
(
"/get"
)
@Operation
(
summary
=
"获得AIAPI密钥"
)
@Parameter
(
name
=
"id"
,
description
=
"编号"
,
required
=
true
,
example
=
"1024"
)
@PreAuthorize
(
"@ss.hasPermission('ai:app-api-key:query')"
)
public
CommonResult
<
AiAppApiKeyRespVO
>
getAppApiKey
(
@RequestParam
(
"id"
)
Integer
id
)
{
AiAppApiKeyDO
appApiKey
=
appApiKeyService
.
getAppApiKey
(
id
);
return
success
(
BeanUtils
.
toBean
(
appApiKey
,
AiAppApiKeyRespVO
.
class
));
}
@GetMapping
(
"/page"
)
@Operation
(
summary
=
"获得AIAPI密钥分页"
)
@PreAuthorize
(
"@ss.hasPermission('ai:app-api-key:query')"
)
public
CommonResult
<
PageResult
<
AiAppApiKeyRespVO
>>
getAppApiKeyPage
(
@Valid
AiAppApiKeyPageReqVO
pageReqVO
)
{
PageResult
<
AiAppApiKeyDO
>
pageResult
=
appApiKeyService
.
getAppApiKeyPage
(
pageReqVO
);
return
success
(
BeanUtils
.
toBean
(
pageResult
,
AiAppApiKeyRespVO
.
class
));
}
@GetMapping
(
"/export-excel"
)
@Operation
(
summary
=
"导出AIAPI密钥 Excel"
)
@PreAuthorize
(
"@ss.hasPermission('ai:app-api-key:export')"
)
@ApiAccessLog
(
operateType
=
EXPORT
)
public
void
exportAppApiKeyExcel
(
@Valid
AiAppApiKeyPageReqVO
pageReqVO
,
HttpServletResponse
response
)
throws
IOException
{
pageReqVO
.
setPageSize
(
PageParam
.
PAGE_SIZE_NONE
);
List
<
AiAppApiKeyDO
>
list
=
appApiKeyService
.
getAppApiKeyPage
(
pageReqVO
).
getList
();
// 导出 Excel
ExcelUtils
.
write
(
response
,
"AIAPI密钥.xls"
,
"数据"
,
AiAppApiKeyRespVO
.
class
,
BeanUtils
.
toBean
(
list
,
AiAppApiKeyRespVO
.
class
));
}
}
\ No newline at end of file
ruoyi-vue-pro-master-jdk17/yudao-module-ai/yudao-module-ai-biz/src/main/java/cn/iocoder/yudao/module/ai/controller/admin/aiappapikey/vo/AiAppApiKeyPageReqVO.java
0 → 100644
View file @
61b2aa0e
package
cn
.
iocoder
.
yudao
.
module
.
ai
.
controller
.
admin
.
aiappapikey
.
vo
;
import
lombok.*
;
import
java.util.*
;
import
io.swagger.v3.oas.annotations.media.Schema
;
import
cn.iocoder.yudao.framework.common.pojo.PageParam
;
@Schema
(
description
=
"管理后台 - AIAPI密钥分页 Request VO"
)
@Data
@EqualsAndHashCode
(
callSuper
=
true
)
@ToString
(
callSuper
=
true
)
public
class
AiAppApiKeyPageReqVO
extends
PageParam
{
@Schema
(
description
=
"密钥"
)
private
String
apiKey
;
@Schema
(
description
=
"备注"
)
private
String
note
;
@Schema
(
description
=
"对应接口"
)
private
String
apiAddress
;
}
\ No newline at end of file
ruoyi-vue-pro-master-jdk17/yudao-module-ai/yudao-module-ai-biz/src/main/java/cn/iocoder/yudao/module/ai/controller/admin/aiappapikey/vo/AiAppApiKeyRespVO.java
0 → 100644
View file @
61b2aa0e
package
cn
.
iocoder
.
yudao
.
module
.
ai
.
controller
.
admin
.
aiappapikey
.
vo
;
import
io.swagger.v3.oas.annotations.media.Schema
;
import
lombok.*
;
import
java.util.*
;
import
com.alibaba.excel.annotation.*
;
@Schema
(
description
=
"管理后台 - AIAPI密钥 Response VO"
)
@Data
@ExcelIgnoreUnannotated
public
class
AiAppApiKeyRespVO
{
@Schema
(
description
=
"密钥ID"
,
requiredMode
=
Schema
.
RequiredMode
.
REQUIRED
,
example
=
"10566"
)
@ExcelProperty
(
"密钥ID"
)
private
Integer
id
;
@Schema
(
description
=
"密钥"
,
requiredMode
=
Schema
.
RequiredMode
.
REQUIRED
)
@ExcelProperty
(
"密钥"
)
private
String
apiKey
;
@Schema
(
description
=
"备注"
)
@ExcelProperty
(
"备注"
)
private
String
note
;
@Schema
(
description
=
"对应接口"
,
requiredMode
=
Schema
.
RequiredMode
.
REQUIRED
)
@ExcelProperty
(
"对应接口"
)
private
String
apiAddress
;
}
\ No newline at end of file
ruoyi-vue-pro-master-jdk17/yudao-module-ai/yudao-module-ai-biz/src/main/java/cn/iocoder/yudao/module/ai/controller/admin/aiappapikey/vo/AiAppApiKeySaveReqVO.java
0 → 100644
View file @
61b2aa0e
package
cn
.
iocoder
.
yudao
.
module
.
ai
.
controller
.
admin
.
aiappapikey
.
vo
;
import
io.swagger.v3.oas.annotations.media.Schema
;
import
lombok.*
;
import
java.util.*
;
import
jakarta.validation.constraints.*
;
@Schema
(
description
=
"管理后台 - AIAPI密钥新增/修改 Request VO"
)
@Data
public
class
AiAppApiKeySaveReqVO
{
@Schema
(
description
=
"密钥ID"
,
requiredMode
=
Schema
.
RequiredMode
.
REQUIRED
,
example
=
"10566"
)
private
Integer
id
;
@Schema
(
description
=
"密钥"
,
requiredMode
=
Schema
.
RequiredMode
.
REQUIRED
)
@NotEmpty
(
message
=
"密钥不能为空"
)
private
String
apiKey
;
@Schema
(
description
=
"备注"
)
private
String
note
;
@Schema
(
description
=
"对应接口"
,
requiredMode
=
Schema
.
RequiredMode
.
REQUIRED
)
@NotEmpty
(
message
=
"对应接口不能为空"
)
private
String
apiAddress
;
}
\ No newline at end of file
ruoyi-vue-pro-master-jdk17/yudao-module-ai/yudao-module-ai-biz/src/main/java/cn/iocoder/yudao/module/ai/controller/admin/tongzhidan_demo/TognzhidanDemoController.java
0 → 100644
View file @
61b2aa0e
package
cn
.
iocoder
.
yudao
.
module
.
ai
.
controller
.
admin
.
tongzhidan_demo
;
import
cn.iocoder.yudao.module.ai.service.aiappapikey.AiAppApiKeyService
;
import
jakarta.annotation.security.PermitAll
;
import
org.springframework.web.bind.annotation.*
;
import
jakarta.annotation.Resource
;
import
org.springframework.validation.annotation.Validated
;
import
org.springframework.security.access.prepost.PreAuthorize
;
import
io.swagger.v3.oas.annotations.tags.Tag
;
import
io.swagger.v3.oas.annotations.Parameter
;
import
io.swagger.v3.oas.annotations.Operation
;
import
jakarta.validation.constraints.*
;
import
jakarta.validation.*
;
import
jakarta.servlet.http.*
;
import
java.util.*
;
import
java.io.IOException
;
import
cn.iocoder.yudao.framework.common.pojo.PageParam
;
import
cn.iocoder.yudao.framework.common.pojo.PageResult
;
import
cn.iocoder.yudao.framework.common.pojo.CommonResult
;
import
cn.iocoder.yudao.framework.common.util.object.BeanUtils
;
import
static
cn
.
iocoder
.
yudao
.
framework
.
common
.
pojo
.
CommonResult
.
error
;
import
static
cn
.
iocoder
.
yudao
.
framework
.
common
.
pojo
.
CommonResult
.
success
;
import
cn.iocoder.yudao.framework.excel.core.util.ExcelUtils
;
import
cn.iocoder.yudao.framework.apilog.core.annotation.ApiAccessLog
;
import
static
cn
.
iocoder
.
yudao
.
framework
.
apilog
.
core
.
enums
.
OperateTypeEnum
.*;
import
cn.iocoder.yudao.module.ai.controller.admin.tongzhidan_demo.vo.*
;
import
cn.iocoder.yudao.module.ai.dal.dataobject.tongzhidan_demo.TognzhidanDemoDO
;
import
cn.iocoder.yudao.module.ai.service.tongzhidan_demo.TognzhidanDemoService
;
@Tag
(
name
=
"管理后台 - 通知单智能体业务"
)
@RestController
@RequestMapping
(
"/ai/tognzhidan-demo"
)
@Validated
public
class
TognzhidanDemoController
{
@Resource
private
TognzhidanDemoService
tognzhidanDemoService
;
@Resource
private
AiAppApiKeyService
appApiKeyService
;
@PostMapping
(
"/create"
)
@Operation
(
summary
=
"创建通知单智能体业务"
)
@PreAuthorize
(
"@ss.hasPermission('ai:tognzhidan-demo:create')"
)
public
CommonResult
<
Integer
>
createTognzhidanDemo
(
@Valid
@RequestBody
TognzhidanDemoSaveReqVO
createReqVO
)
{
return
success
(
tognzhidanDemoService
.
createTognzhidanDemo
(
createReqVO
));
}
@PutMapping
(
"/update"
)
@Operation
(
summary
=
"更新通知单智能体业务"
)
@PreAuthorize
(
"@ss.hasPermission('ai:tognzhidan-demo:update')"
)
public
CommonResult
<
Boolean
>
updateTognzhidanDemo
(
@Valid
@RequestBody
TognzhidanDemoSaveReqVO
updateReqVO
)
{
tognzhidanDemoService
.
updateTognzhidanDemo
(
updateReqVO
);
return
success
(
true
);
}
@DeleteMapping
(
"/delete"
)
@Operation
(
summary
=
"删除通知单智能体业务"
)
@Parameter
(
name
=
"id"
,
description
=
"编号"
,
required
=
true
)
@PreAuthorize
(
"@ss.hasPermission('ai:tognzhidan-demo:delete')"
)
public
CommonResult
<
Boolean
>
deleteTognzhidanDemo
(
@RequestParam
(
"id"
)
Integer
id
)
{
tognzhidanDemoService
.
deleteTognzhidanDemo
(
id
);
return
success
(
true
);
}
@GetMapping
(
"/get"
)
@Operation
(
summary
=
"获得通知单智能体业务"
)
@Parameter
(
name
=
"id"
,
description
=
"编号"
,
required
=
true
,
example
=
"1024"
)
@PreAuthorize
(
"@ss.hasPermission('ai:tognzhidan-demo:query')"
)
public
CommonResult
<
TognzhidanDemoRespVO
>
getTognzhidanDemo
(
@RequestParam
(
"id"
)
Integer
id
)
{
TognzhidanDemoDO
tognzhidanDemo
=
tognzhidanDemoService
.
getTognzhidanDemo
(
id
);
return
success
(
BeanUtils
.
toBean
(
tognzhidanDemo
,
TognzhidanDemoRespVO
.
class
));
}
@GetMapping
(
"/page"
)
@Operation
(
summary
=
"获得通知单智能体业务分页"
)
@PreAuthorize
(
"@ss.hasPermission('ai:tognzhidan-demo:query')"
)
public
CommonResult
<
PageResult
<
TognzhidanDemoRespVO
>>
getTognzhidanDemoPage
(
@Valid
TognzhidanDemoPageReqVO
pageReqVO
)
{
PageResult
<
TognzhidanDemoDO
>
pageResult
=
tognzhidanDemoService
.
getTognzhidanDemoPage
(
pageReqVO
);
return
success
(
BeanUtils
.
toBean
(
pageResult
,
TognzhidanDemoRespVO
.
class
));
}
@GetMapping
(
"/export-excel"
)
@Operation
(
summary
=
"导出通知单智能体业务 Excel"
)
@PreAuthorize
(
"@ss.hasPermission('ai:tognzhidan-demo:export')"
)
@ApiAccessLog
(
operateType
=
EXPORT
)
public
void
exportTognzhidanDemoExcel
(
@Valid
TognzhidanDemoPageReqVO
pageReqVO
,
HttpServletResponse
response
)
throws
IOException
{
pageReqVO
.
setPageSize
(
PageParam
.
PAGE_SIZE_NONE
);
List
<
TognzhidanDemoDO
>
list
=
tognzhidanDemoService
.
getTognzhidanDemoPage
(
pageReqVO
).
getList
();
// 导出 Excel
ExcelUtils
.
write
(
response
,
"通知单智能体业务.xls"
,
"数据"
,
TognzhidanDemoRespVO
.
class
,
BeanUtils
.
toBean
(
list
,
TognzhidanDemoRespVO
.
class
));
}
@GetMapping
(
"/get-by"
)
@Operation
(
summary
=
"获得通知单业务场景模板"
)
@PermitAll
public
CommonResult
<
String
>
getInfoOrderTemp
(
@Valid
@RequestBody
TognzhidanDemoListReqVO
demoNames
,
@RequestHeader
(
"Authorization"
)
String
apiKey
)
{
String
apiKey_
=
appApiKeyService
.
getAppApiKeyByApi
(
"/ai/tognzhidan-demo"
);
if
(!
apiKey_
.
equals
(
apiKey
)){
return
error
(
401
,
"密钥无效"
);
}
String
tognzhidanTemp
=
tognzhidanDemoService
.
getByName
(
demoNames
.
getName
());
return
success
(
tognzhidanTemp
);
}
@GetMapping
(
"/get-scene"
)
@Operation
(
summary
=
"获得通知单业务场景名"
)
@PermitAll
public
CommonResult
<
List
<
String
>>
getInfoOrderScene
(
@RequestHeader
(
"Authorization"
)
String
apiKey
)
{
String
apiKey_
=
appApiKeyService
.
getAppApiKeyByApi
(
"/ai/tognzhidan-demo"
);
if
(!
apiKey_
.
equals
(
apiKey
)){
return
error
(
401
,
"密钥无效"
);
}
List
<
String
>
tognzhidanScene
=
tognzhidanDemoService
.
getScene
();
return
success
(
tognzhidanScene
);
}
}
\ No newline at end of file
ruoyi-vue-pro-master-jdk17/yudao-module-ai/yudao-module-ai-biz/src/main/java/cn/iocoder/yudao/module/ai/controller/admin/tongzhidan_demo/vo/TognzhidanDemoListReqVO.java
0 → 100644
View file @
61b2aa0e
package
cn
.
iocoder
.
yudao
.
module
.
ai
.
controller
.
admin
.
tongzhidan_demo
.
vo
;
import
cn.iocoder.yudao.framework.common.pojo.PageParam
;
import
io.swagger.v3.oas.annotations.media.Schema
;
import
lombok.Data
;
import
lombok.EqualsAndHashCode
;
import
lombok.ToString
;
import
java.util.List
;
@Schema
(
description
=
"管理后台 - 通知单智能体业务列表 Request VO"
)
@Data
public
class
TognzhidanDemoListReqVO
{
@Schema
(
description
=
"业务场景名字"
)
private
List
<
String
>
name
;
}
\ No newline at end of file
ruoyi-vue-pro-master-jdk17/yudao-module-ai/yudao-module-ai-biz/src/main/java/cn/iocoder/yudao/module/ai/controller/admin/tongzhidan_demo/vo/TognzhidanDemoPageReqVO.java
0 → 100644
View file @
61b2aa0e
package
cn
.
iocoder
.
yudao
.
module
.
ai
.
controller
.
admin
.
tongzhidan_demo
.
vo
;
import
lombok.*
;
import
java.util.*
;
import
io.swagger.v3.oas.annotations.media.Schema
;
import
cn.iocoder.yudao.framework.common.pojo.PageParam
;
@Schema
(
description
=
"管理后台 - 通知单智能体业务分页 Request VO"
)
@Data
@EqualsAndHashCode
(
callSuper
=
true
)
@ToString
(
callSuper
=
true
)
public
class
TognzhidanDemoPageReqVO
extends
PageParam
{
@Schema
(
description
=
"业务场景名字"
)
private
String
demoName
;
@Schema
(
description
=
"业务场景要填的字段"
)
private
String
demoList
;
@Schema
(
description
=
"业务场景模板"
)
private
String
demoContext
;
}
\ No newline at end of file
ruoyi-vue-pro-master-jdk17/yudao-module-ai/yudao-module-ai-biz/src/main/java/cn/iocoder/yudao/module/ai/controller/admin/tongzhidan_demo/vo/TognzhidanDemoRespVO.java
0 → 100644
View file @
61b2aa0e
package
cn
.
iocoder
.
yudao
.
module
.
ai
.
controller
.
admin
.
tongzhidan_demo
.
vo
;
import
io.swagger.v3.oas.annotations.media.Schema
;
import
lombok.*
;
import
java.util.*
;
import
com.alibaba.excel.annotation.*
;
@Schema
(
description
=
"管理后台 - 通知单智能体业务 Response VO"
)
@Data
@ExcelIgnoreUnannotated
public
class
TognzhidanDemoRespVO
{
@Schema
(
description
=
"通知单ID"
,
requiredMode
=
Schema
.
RequiredMode
.
REQUIRED
,
example
=
"18129"
)
@ExcelProperty
(
"通知单ID"
)
private
Integer
id
;
@Schema
(
description
=
"业务场景名字"
)
@ExcelProperty
(
"业务场景名字"
)
private
String
demoName
;
@Schema
(
description
=
"业务场景要填的字段"
)
@ExcelProperty
(
"业务场景要填的字段"
)
private
String
demoList
;
@Schema
(
description
=
"业务场景模板"
)
@ExcelProperty
(
"业务场景模板"
)
private
String
demoContext
;
}
\ No newline at end of file
ruoyi-vue-pro-master-jdk17/yudao-module-ai/yudao-module-ai-biz/src/main/java/cn/iocoder/yudao/module/ai/controller/admin/tongzhidan_demo/vo/TognzhidanDemoSaveReqVO.java
0 → 100644
View file @
61b2aa0e
package
cn
.
iocoder
.
yudao
.
module
.
ai
.
controller
.
admin
.
tongzhidan_demo
.
vo
;
import
io.swagger.v3.oas.annotations.media.Schema
;
import
lombok.*
;
import
java.util.*
;
import
jakarta.validation.constraints.*
;
@Schema
(
description
=
"管理后台 - 通知单智能体业务新增/修改 Request VO"
)
@Data
public
class
TognzhidanDemoSaveReqVO
{
@Schema
(
description
=
"通知单ID"
,
requiredMode
=
Schema
.
RequiredMode
.
REQUIRED
,
example
=
"18129"
)
private
Integer
id
;
@Schema
(
description
=
"业务场景名字"
)
private
String
demoName
;
@Schema
(
description
=
"业务场景要填的字段"
)
private
String
demoList
;
@Schema
(
description
=
"业务场景模板"
)
private
String
demoContext
;
}
\ No newline at end of file
ruoyi-vue-pro-master-jdk17/yudao-module-ai/yudao-module-ai-biz/src/main/java/cn/iocoder/yudao/module/ai/dal/dataobject/aiappapikey/AiAppApiKeyDO.java
0 → 100644
View file @
61b2aa0e
package
cn
.
iocoder
.
yudao
.
module
.
ai
.
dal
.
dataobject
.
aiappapikey
;
import
lombok.*
;
import
java.util.*
;
import
com.baomidou.mybatisplus.annotation.*
;
import
cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO
;
/**
* AIAPI密钥 DO
*
* @author 芋道源码
*/
@TableName
(
"ai_app_api_key"
)
@KeySequence
(
"ai_app_api_key_seq"
)
// 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。
@Data
@EqualsAndHashCode
(
callSuper
=
true
)
@ToString
(
callSuper
=
true
)
@Builder
@NoArgsConstructor
@AllArgsConstructor
public
class
AiAppApiKeyDO
extends
BaseDO
{
/**
* 密钥ID
*/
@TableId
private
Integer
id
;
/**
* 密钥
*/
private
String
apiKey
;
/**
* 备注
*/
private
String
note
;
/**
* 对应接口
*/
private
String
apiAddress
;
}
\ No newline at end of file
ruoyi-vue-pro-master-jdk17/yudao-module-ai/yudao-module-ai-biz/src/main/java/cn/iocoder/yudao/module/ai/dal/dataobject/tongzhidan_demo/TognzhidanDemoDO.java
0 → 100644
View file @
61b2aa0e
package
cn
.
iocoder
.
yudao
.
module
.
ai
.
dal
.
dataobject
.
tongzhidan_demo
;
import
lombok.*
;
import
java.util.*
;
import
com.baomidou.mybatisplus.annotation.*
;
import
cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO
;
/**
* 通知单智能体业务 DO
*
* @author 芋道源码
*/
@TableName
(
"tongzhidan_demo"
)
@KeySequence
(
"tongzhidan_demo_seq"
)
// 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。
@Data
@EqualsAndHashCode
(
callSuper
=
true
)
@ToString
(
callSuper
=
true
)
@Builder
@NoArgsConstructor
@AllArgsConstructor
public
class
TognzhidanDemoDO
extends
BaseDO
{
/**
* 通知单ID
*/
@TableId
private
Integer
id
;
/**
* 业务场景名字
*/
private
String
demoName
;
/**
* 业务场景要填的字段
*/
private
String
demoList
;
/**
* 业务场景模板
*/
private
String
demoContext
;
}
\ No newline at end of file
ruoyi-vue-pro-master-jdk17/yudao-module-ai/yudao-module-ai-biz/src/main/java/cn/iocoder/yudao/module/ai/dal/mysql/aiappapikey/AiAppApiKeyMapper.java
0 → 100644
View file @
61b2aa0e
package
cn
.
iocoder
.
yudao
.
module
.
ai
.
dal
.
mysql
.
aiappapikey
;
import
cn.iocoder.yudao.framework.common.pojo.PageResult
;
import
cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX
;
import
cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX
;
import
cn.iocoder.yudao.module.ai.dal.dataobject.aiappapikey.AiAppApiKeyDO
;
import
org.apache.ibatis.annotations.Mapper
;
import
cn.iocoder.yudao.module.ai.controller.admin.aiappapikey.vo.*
;
import
org.apache.ibatis.annotations.Param
;
import
org.apache.ibatis.annotations.Select
;
/**
* AIAPI密钥 Mapper
*
* @author 芋道源码
*/
@Mapper
public
interface
AiAppApiKeyMapper
extends
BaseMapperX
<
AiAppApiKeyDO
>
{
default
PageResult
<
AiAppApiKeyDO
>
selectPage
(
AiAppApiKeyPageReqVO
reqVO
)
{
return
selectPage
(
reqVO
,
new
LambdaQueryWrapperX
<
AiAppApiKeyDO
>()
.
eqIfPresent
(
AiAppApiKeyDO:
:
getApiKey
,
reqVO
.
getApiKey
())
.
eqIfPresent
(
AiAppApiKeyDO:
:
getNote
,
reqVO
.
getNote
())
.
eqIfPresent
(
AiAppApiKeyDO:
:
getApiAddress
,
reqVO
.
getApiAddress
())
.
orderByDesc
(
AiAppApiKeyDO:
:
getId
));
}
@Select
(
"SELECT api_key FROM ai_app_api_key WHERE api_address = #{ai_api}"
)
String
selectByApi
(
@Param
(
"ai_api"
)
String
ai_api
);
}
\ No newline at end of file
ruoyi-vue-pro-master-jdk17/yudao-module-ai/yudao-module-ai-biz/src/main/java/cn/iocoder/yudao/module/ai/dal/mysql/tongzhidan_demo/TognzhidanDemoMapper.java
0 → 100644
View file @
61b2aa0e
package
cn
.
iocoder
.
yudao
.
module
.
ai
.
dal
.
mysql
.
tongzhidan_demo
;
import
java.util.*
;
import
cn.iocoder.yudao.framework.common.pojo.PageResult
;
import
cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX
;
import
cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX
;
import
cn.iocoder.yudao.module.ai.dal.dataobject.tongzhidan_demo.TognzhidanDemoDO
;
import
org.apache.ibatis.annotations.Mapper
;
import
cn.iocoder.yudao.module.ai.controller.admin.tongzhidan_demo.vo.*
;
import
org.apache.ibatis.annotations.Param
;
import
org.apache.ibatis.annotations.Select
;
/**
* 通知单智能体业务 Mapper
*
* @author 芋道源码
*/
@Mapper
public
interface
TognzhidanDemoMapper
extends
BaseMapperX
<
TognzhidanDemoDO
>
{
default
PageResult
<
TognzhidanDemoDO
>
selectPage
(
TognzhidanDemoPageReqVO
reqVO
)
{
return
selectPage
(
reqVO
,
new
LambdaQueryWrapperX
<
TognzhidanDemoDO
>()
.
likeIfPresent
(
TognzhidanDemoDO:
:
getDemoName
,
reqVO
.
getDemoName
())
.
eqIfPresent
(
TognzhidanDemoDO:
:
getDemoList
,
reqVO
.
getDemoList
())
.
eqIfPresent
(
TognzhidanDemoDO:
:
getDemoContext
,
reqVO
.
getDemoContext
())
.
orderByDesc
(
TognzhidanDemoDO:
:
getId
));
}
// 根据业务场景名字查询业务场景模板字段
// @Select("SELECT demo_context FROM tongzhidan_demo WHERE demo_name in #{demoName}")
List
<
String
>
selectDemoContextByDemoName
(
@Param
(
"demoName"
)
List
<
String
>
demoName
);
@Select
(
"SELECT demo_name FROM tongzhidan_demo"
)
List
<
String
>
selectDemoNameList
();
}
\ No newline at end of file
ruoyi-vue-pro-master-jdk17/yudao-module-ai/yudao-module-ai-biz/src/main/java/cn/iocoder/yudao/module/ai/service/aiappapikey/AiAppApiKeyService.java
0 → 100644
View file @
61b2aa0e
package
cn
.
iocoder
.
yudao
.
module
.
ai
.
service
.
aiappapikey
;
import
java.util.*
;
import
jakarta.validation.*
;
import
cn.iocoder.yudao.module.ai.controller.admin.aiappapikey.vo.*
;
import
cn.iocoder.yudao.module.ai.dal.dataobject.aiappapikey.AiAppApiKeyDO
;
import
cn.iocoder.yudao.framework.common.pojo.PageResult
;
import
cn.iocoder.yudao.framework.common.pojo.PageParam
;
/**
* AIAPI密钥 Service 接口
*
* @author 芋道源码
*/
public
interface
AiAppApiKeyService
{
/**
* 创建AIAPI密钥
*
* @param createReqVO 创建信息
* @return 编号
*/
Integer
createAppApiKey
(
@Valid
AiAppApiKeySaveReqVO
createReqVO
);
/**
* 更新AIAPI密钥
*
* @param updateReqVO 更新信息
*/
void
updateAppApiKey
(
@Valid
AiAppApiKeySaveReqVO
updateReqVO
);
/**
* 删除AIAPI密钥
*
* @param id 编号
*/
void
deleteAppApiKey
(
Integer
id
);
/**
* 获得AIAPI密钥
*
* @param id 编号
* @return AIAPI密钥
*/
AiAppApiKeyDO
getAppApiKey
(
Integer
id
);
/**
* 获得AIAPI密钥分页
*
* @param pageReqVO 分页查询
* @return AIAPI密钥分页
*/
PageResult
<
AiAppApiKeyDO
>
getAppApiKeyPage
(
AiAppApiKeyPageReqVO
pageReqVO
);
String
getAppApiKeyByApi
(
String
api
);
}
\ No newline at end of file
ruoyi-vue-pro-master-jdk17/yudao-module-ai/yudao-module-ai-biz/src/main/java/cn/iocoder/yudao/module/ai/service/aiappapikey/AiAppApiKeyServiceImpl.java
0 → 100644
View file @
61b2aa0e
package
cn
.
iocoder
.
yudao
.
module
.
ai
.
service
.
aiappapikey
;
import
org.springframework.stereotype.Service
;
import
jakarta.annotation.Resource
;
import
org.springframework.validation.annotation.Validated
;
import
cn.iocoder.yudao.module.ai.controller.admin.aiappapikey.vo.*
;
import
cn.iocoder.yudao.module.ai.dal.dataobject.aiappapikey.AiAppApiKeyDO
;
import
cn.iocoder.yudao.framework.common.pojo.PageResult
;
import
cn.iocoder.yudao.framework.common.util.object.BeanUtils
;
import
cn.iocoder.yudao.module.ai.dal.mysql.aiappapikey.AiAppApiKeyMapper
;
import
static
cn
.
iocoder
.
yudao
.
framework
.
common
.
exception
.
util
.
ServiceExceptionUtil
.
exception
;
import
static
cn
.
iocoder
.
yudao
.
module
.
ai
.
enums
.
ErrorCodeConstants
.*;
/**
* AIAPI密钥 Service 实现类
*
* @author 芋道源码
*/
@Service
@Validated
public
class
AiAppApiKeyServiceImpl
implements
AiAppApiKeyService
{
@Resource
private
AiAppApiKeyMapper
appApiKeyMapper
;
@Override
public
Integer
createAppApiKey
(
AiAppApiKeySaveReqVO
createReqVO
)
{
// 插入
AiAppApiKeyDO
appApiKey
=
BeanUtils
.
toBean
(
createReqVO
,
AiAppApiKeyDO
.
class
);
appApiKeyMapper
.
insert
(
appApiKey
);
// 返回
return
appApiKey
.
getId
();
}
@Override
public
void
updateAppApiKey
(
AiAppApiKeySaveReqVO
updateReqVO
)
{
// 校验存在
validateAppApiKeyExists
(
updateReqVO
.
getId
());
// 更新
AiAppApiKeyDO
updateObj
=
BeanUtils
.
toBean
(
updateReqVO
,
AiAppApiKeyDO
.
class
);
appApiKeyMapper
.
updateById
(
updateObj
);
}
@Override
public
void
deleteAppApiKey
(
Integer
id
)
{
// 校验存在
validateAppApiKeyExists
(
id
);
// 删除
appApiKeyMapper
.
deleteById
(
id
);
}
private
void
validateAppApiKeyExists
(
Integer
id
)
{
if
(
appApiKeyMapper
.
selectById
(
id
)
==
null
)
{
throw
exception
(
APP_API_KEY_NOT_EXISTS
);
}
}
@Override
public
AiAppApiKeyDO
getAppApiKey
(
Integer
id
)
{
return
appApiKeyMapper
.
selectById
(
id
);
}
@Override
public
PageResult
<
AiAppApiKeyDO
>
getAppApiKeyPage
(
AiAppApiKeyPageReqVO
pageReqVO
)
{
return
appApiKeyMapper
.
selectPage
(
pageReqVO
);
}
@Override
public
String
getAppApiKeyByApi
(
String
api
)
{
return
appApiKeyMapper
.
selectByApi
(
api
);
}
}
\ No newline at end of file
ruoyi-vue-pro-master-jdk17/yudao-module-ai/yudao-module-ai-biz/src/main/java/cn/iocoder/yudao/module/ai/service/tongzhidan_demo/TognzhidanDemoService.java
0 → 100644
View file @
61b2aa0e
package
cn
.
iocoder
.
yudao
.
module
.
ai
.
service
.
tongzhidan_demo
;
import
java.util.*
;
import
jakarta.validation.*
;
import
cn.iocoder.yudao.module.ai.controller.admin.tongzhidan_demo.vo.*
;
import
cn.iocoder.yudao.module.ai.dal.dataobject.tongzhidan_demo.TognzhidanDemoDO
;
import
cn.iocoder.yudao.framework.common.pojo.PageResult
;
import
cn.iocoder.yudao.framework.common.pojo.PageParam
;
/**
* 通知单智能体业务 Service 接口
*
* @author 芋道源码
*/
public
interface
TognzhidanDemoService
{
/**
* 创建通知单智能体业务
*
* @param createReqVO 创建信息
* @return 编号
*/
Integer
createTognzhidanDemo
(
@Valid
TognzhidanDemoSaveReqVO
createReqVO
);
/**
* 更新通知单智能体业务
*
* @param updateReqVO 更新信息
*/
void
updateTognzhidanDemo
(
@Valid
TognzhidanDemoSaveReqVO
updateReqVO
);
/**
* 删除通知单智能体业务
*
* @param id 编号
*/
void
deleteTognzhidanDemo
(
Integer
id
);
/**
* 获得通知单智能体业务
*
* @param id 编号
* @return 通知单智能体业务
*/
TognzhidanDemoDO
getTognzhidanDemo
(
Integer
id
);
/**
* 获得通知单智能体业务分页
*
* @param pageReqVO 分页查询
* @return 通知单智能体业务分页
*/
PageResult
<
TognzhidanDemoDO
>
getTognzhidanDemoPage
(
TognzhidanDemoPageReqVO
pageReqVO
);
String
getByName
(
List
<
String
>
demoName
);
List
<
String
>
getScene
();
}
\ No newline at end of file
ruoyi-vue-pro-master-jdk17/yudao-module-ai/yudao-module-ai-biz/src/main/java/cn/iocoder/yudao/module/ai/service/tongzhidan_demo/TognzhidanDemoServiceImpl.java
0 → 100644
View file @
61b2aa0e
package
cn
.
iocoder
.
yudao
.
module
.
ai
.
service
.
tongzhidan_demo
;
import
org.springframework.stereotype.Service
;
import
jakarta.annotation.Resource
;
import
org.springframework.validation.annotation.Validated
;
import
org.springframework.transaction.annotation.Transactional
;
import
java.util.*
;
import
cn.iocoder.yudao.module.ai.controller.admin.tongzhidan_demo.vo.*
;
import
cn.iocoder.yudao.module.ai.dal.dataobject.tongzhidan_demo.TognzhidanDemoDO
;
import
cn.iocoder.yudao.framework.common.pojo.PageResult
;
import
cn.iocoder.yudao.framework.common.pojo.PageParam
;
import
cn.iocoder.yudao.framework.common.util.object.BeanUtils
;
import
cn.iocoder.yudao.module.ai.dal.mysql.tongzhidan_demo.TognzhidanDemoMapper
;
import
static
cn
.
iocoder
.
yudao
.
framework
.
common
.
exception
.
util
.
ServiceExceptionUtil
.
exception
;
import
static
cn
.
iocoder
.
yudao
.
module
.
ai
.
enums
.
ErrorCodeConstants
.*;
/**
* 通知单智能体业务 Service 实现类
*
* @author 芋道源码
*/
@Service
@Validated
public
class
TognzhidanDemoServiceImpl
implements
TognzhidanDemoService
{
@Resource
private
TognzhidanDemoMapper
tognzhidanDemoMapper
;
@Override
public
Integer
createTognzhidanDemo
(
TognzhidanDemoSaveReqVO
createReqVO
)
{
// 插入
TognzhidanDemoDO
tognzhidanDemo
=
BeanUtils
.
toBean
(
createReqVO
,
TognzhidanDemoDO
.
class
);
tognzhidanDemoMapper
.
insert
(
tognzhidanDemo
);
// 返回
return
tognzhidanDemo
.
getId
();
}
@Override
public
void
updateTognzhidanDemo
(
TognzhidanDemoSaveReqVO
updateReqVO
)
{
// 校验存在
validateTognzhidanDemoExists
(
updateReqVO
.
getId
());
// 更新
TognzhidanDemoDO
updateObj
=
BeanUtils
.
toBean
(
updateReqVO
,
TognzhidanDemoDO
.
class
);
tognzhidanDemoMapper
.
updateById
(
updateObj
);
}
@Override
public
void
deleteTognzhidanDemo
(
Integer
id
)
{
// 校验存在
validateTognzhidanDemoExists
(
id
);
// 删除
tognzhidanDemoMapper
.
deleteById
(
id
);
}
private
void
validateTognzhidanDemoExists
(
Integer
id
)
{
if
(
tognzhidanDemoMapper
.
selectById
(
id
)
==
null
)
{
throw
exception
(
TOGNZHIDAN_DEMO_NOT_EXISTS
);
}
}
@Override
public
TognzhidanDemoDO
getTognzhidanDemo
(
Integer
id
)
{
return
tognzhidanDemoMapper
.
selectById
(
id
);
}
@Override
public
PageResult
<
TognzhidanDemoDO
>
getTognzhidanDemoPage
(
TognzhidanDemoPageReqVO
pageReqVO
)
{
return
tognzhidanDemoMapper
.
selectPage
(
pageReqVO
);
}
@Override
public
String
getByName
(
List
<
String
>
demoName
)
{
List
<
String
>
demoContextList
=
tognzhidanDemoMapper
.
selectDemoContextByDemoName
(
demoName
);
return
String
.
join
(
""
,
demoContextList
);
}
@Override
public
List
<
String
>
getScene
()
{
return
tognzhidanDemoMapper
.
selectDemoNameList
();
}
}
\ No newline at end of file
ruoyi-vue-pro-master-jdk17/yudao-module-ai/yudao-module-ai-biz/src/main/resources/mapper/aiappapikey/AiAppApiKeyMapper.xml
0 → 100644
View file @
61b2aa0e
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper
namespace=
"cn.iocoder.yudao.module.ai.dal.mysql.aiappapikey.AiAppApiKeyMapper"
>
<!--
一般情况下,尽可能使用 Mapper 进行 CRUD 增删改查即可。
无法满足的场景,例如说多表关联查询,才使用 XML 编写 SQL。
代码生成器暂时只生成 Mapper XML 文件本身,更多推荐 MybatisX 快速开发插件来生成查询。
文档可见:https://www.iocoder.cn/MyBatis/x-plugins/
-->
</mapper>
\ No newline at end of file
ruoyi-vue-pro-master-jdk17/yudao-module-ai/yudao-module-ai-biz/src/main/resources/mapper/tongzhidan_demo/TognzhidanDemoMapper.xml
0 → 100644
View file @
61b2aa0e
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper
namespace=
"cn.iocoder.yudao.module.ai.dal.mysql.tongzhidan_demo.TognzhidanDemoMapper"
>
<!--
一般情况下,尽可能使用 Mapper 进行 CRUD 增删改查即可。
无法满足的场景,例如说多表关联查询,才使用 XML 编写 SQL。
代码生成器暂时只生成 Mapper XML 文件本身,更多推荐 MybatisX 快速开发插件来生成查询。
文档可见:https://www.iocoder.cn/MyBatis/x-plugins/
-->
<!-- <select id="selectDemoContextByDemoName" resultType="java.lang.String">-->
<!-- SELECT demo_context FROM tongzhidan_demo WHERE demo_name = #{demoName}-->
<!-- </select>-->
<select
id=
"selectDemoContextByDemoName"
resultType=
"java.lang.String"
>
SELECT demo_context
FROM tongzhidan_demo
WHERE demo_name IN
<foreach
item=
"name"
collection=
"demoName"
open=
"("
separator=
","
close=
")"
>
#{name}
</foreach>
</select>
</mapper>
\ No newline at end of file
yudao-ui-admin-vue3/dist.zip
0 → 100644
View file @
61b2aa0e
File added
yudao-ui-admin-vue3/src/api/ai/aiappapikey/index.ts
0 → 100644
View file @
61b2aa0e
import
request
from
'@/config/axios'
// AIAPI密钥 VO
export
interface
AppApiKeyVO
{
id
:
number
// 密钥ID
apiKey
:
string
// 密钥
note
:
string
// 备注
apiAddress
:
string
// 对应接口
}
// AIAPI密钥 API
export
const
AppApiKeyApi
=
{
// 查询AIAPI密钥分页
getAppApiKeyPage
:
async
(
params
:
any
)
=>
{
return
await
request
.
get
({
url
:
`/ai/app-api-key/page`
,
params
})
},
// 查询AIAPI密钥详情
getAppApiKey
:
async
(
id
:
number
)
=>
{
return
await
request
.
get
({
url
:
`/ai/app-api-key/get?id=`
+
id
})
},
// 新增AIAPI密钥
createAppApiKey
:
async
(
data
:
AppApiKeyVO
)
=>
{
return
await
request
.
post
({
url
:
`/ai/app-api-key/create`
,
data
})
},
// 修改AIAPI密钥
updateAppApiKey
:
async
(
data
:
AppApiKeyVO
)
=>
{
return
await
request
.
put
({
url
:
`/ai/app-api-key/update`
,
data
})
},
// 删除AIAPI密钥
deleteAppApiKey
:
async
(
id
:
number
)
=>
{
return
await
request
.
delete
({
url
:
`/ai/app-api-key/delete?id=`
+
id
})
},
// 导出AIAPI密钥 Excel
exportAppApiKey
:
async
(
params
)
=>
{
return
await
request
.
download
({
url
:
`/ai/app-api-key/export-excel`
,
params
})
}
}
\ No newline at end of file
yudao-ui-admin-vue3/src/api/ai/tongzhidan_demo/index.ts
0 → 100644
View file @
61b2aa0e
import
request
from
'@/config/axios'
// 通知单智能体业务 VO
export
interface
TognzhidanDemoVO
{
id
:
number
// 通知单ID
demoName
:
string
// 业务场景名字
demoList
:
string
// 业务场景要填的字段
demoContext
:
string
// 业务场景模板
}
// 通知单智能体业务 API
export
const
TognzhidanDemoApi
=
{
// 查询通知单智能体业务分页
getTognzhidanDemoPage
:
async
(
params
:
any
)
=>
{
return
await
request
.
get
({
url
:
`/ai/tognzhidan-demo/page`
,
params
})
},
// 查询通知单智能体业务详情
getTognzhidanDemo
:
async
(
id
:
number
)
=>
{
return
await
request
.
get
({
url
:
`/ai/tognzhidan-demo/get?id=`
+
id
})
},
// 新增通知单智能体业务
createTognzhidanDemo
:
async
(
data
:
TognzhidanDemoVO
)
=>
{
return
await
request
.
post
({
url
:
`/ai/tognzhidan-demo/create`
,
data
})
},
// 修改通知单智能体业务
updateTognzhidanDemo
:
async
(
data
:
TognzhidanDemoVO
)
=>
{
return
await
request
.
put
({
url
:
`/ai/tognzhidan-demo/update`
,
data
})
},
// 删除通知单智能体业务
deleteTognzhidanDemo
:
async
(
id
:
number
)
=>
{
return
await
request
.
delete
({
url
:
`/ai/tognzhidan-demo/delete?id=`
+
id
})
},
// 导出通知单智能体业务 Excel
exportTognzhidanDemo
:
async
(
params
)
=>
{
return
await
request
.
download
({
url
:
`/ai/tognzhidan-demo/export-excel`
,
params
})
}
}
\ No newline at end of file
yudao-ui-admin-vue3/src/views/ai/aiappapikey/AppApiKeyForm.vue
0 → 100644
View file @
61b2aa0e
<
template
>
<Dialog
:title=
"dialogTitle"
v-model=
"dialogVisible"
>
<el-form
ref=
"formRef"
:model=
"formData"
:rules=
"formRules"
label-width=
"100px"
v-loading=
"formLoading"
>
<el-form-item
label=
"密钥"
prop=
"apiKey"
>
<el-input
v-model=
"formData.apiKey"
placeholder=
"请输入密钥"
/>
</el-form-item>
<el-form-item
label=
"备注"
prop=
"note"
>
<el-input
v-model=
"formData.note"
placeholder=
"请输入备注"
/>
</el-form-item>
<el-form-item
label=
"对应接口"
prop=
"apiAddress"
>
<el-input
v-model=
"formData.apiAddress"
placeholder=
"请输入对应接口"
/>
</el-form-item>
</el-form>
<template
#
footer
>
<el-button
@
click=
"submitForm"
type=
"primary"
:disabled=
"formLoading"
>
确 定
</el-button>
<el-button
@
click=
"dialogVisible = false"
>
取 消
</el-button>
</
template
>
</Dialog>
</template>
<
script
setup
lang=
"ts"
>
import
{
AppApiKeyApi
,
AppApiKeyVO
}
from
'@/api/ai/aiappapikey'
/** AIAPI密钥 表单 */
defineOptions
({
name
:
'AppApiKeyForm'
})
const
{
t
}
=
useI18n
()
// 国际化
const
message
=
useMessage
()
// 消息弹窗
const
dialogVisible
=
ref
(
false
)
// 弹窗的是否展示
const
dialogTitle
=
ref
(
''
)
// 弹窗的标题
const
formLoading
=
ref
(
false
)
// 表单的加载中:1)修改时的数据加载;2)提交的按钮禁用
const
formType
=
ref
(
''
)
// 表单的类型:create - 新增;update - 修改
const
formData
=
ref
({
id
:
undefined
,
apiKey
:
undefined
,
note
:
undefined
,
apiAddress
:
undefined
})
const
formRules
=
reactive
({
apiKey
:
[{
required
:
true
,
message
:
'密钥不能为空'
,
trigger
:
'blur'
}],
apiAddress
:
[{
required
:
true
,
message
:
'对应接口不能为空'
,
trigger
:
'blur'
}]
})
const
formRef
=
ref
()
// 表单 Ref
/** 打开弹窗 */
const
open
=
async
(
type
:
string
,
id
?:
number
)
=>
{
dialogVisible
.
value
=
true
dialogTitle
.
value
=
t
(
'action.'
+
type
)
formType
.
value
=
type
resetForm
()
// 修改时,设置数据
if
(
id
)
{
formLoading
.
value
=
true
try
{
formData
.
value
=
await
AppApiKeyApi
.
getAppApiKey
(
id
)
}
finally
{
formLoading
.
value
=
false
}
}
}
defineExpose
({
open
})
// 提供 open 方法,用于打开弹窗
/** 提交表单 */
const
emit
=
defineEmits
([
'success'
])
// 定义 success 事件,用于操作成功后的回调
const
submitForm
=
async
()
=>
{
// 校验表单
await
formRef
.
value
.
validate
()
// 提交请求
formLoading
.
value
=
true
try
{
const
data
=
formData
.
value
as
unknown
as
AppApiKeyVO
if
(
formType
.
value
===
'create'
)
{
await
AppApiKeyApi
.
createAppApiKey
(
data
)
message
.
success
(
t
(
'common.createSuccess'
))
}
else
{
await
AppApiKeyApi
.
updateAppApiKey
(
data
)
message
.
success
(
t
(
'common.updateSuccess'
))
}
dialogVisible
.
value
=
false
// 发送操作成功的事件
emit
(
'success'
)
}
finally
{
formLoading
.
value
=
false
}
}
/** 重置表单 */
const
resetForm
=
()
=>
{
formData
.
value
=
{
id
:
undefined
,
apiKey
:
undefined
,
note
:
undefined
,
apiAddress
:
undefined
}
formRef
.
value
?.
resetFields
()
}
</
script
>
\ No newline at end of file
yudao-ui-admin-vue3/src/views/ai/aiappapikey/index.vue
0 → 100644
View file @
61b2aa0e
<
template
>
<ContentWrap>
<!-- 搜索工作栏 -->
<el-form
class=
"-mb-15px"
:model=
"queryParams"
ref=
"queryFormRef"
:inline=
"true"
label-width=
"68px"
>
<el-form-item
label=
"密钥"
prop=
"apiKey"
>
<el-input
v-model=
"queryParams.apiKey"
placeholder=
"请输入密钥"
clearable
@
keyup
.
enter=
"handleQuery"
class=
"!w-240px"
/>
</el-form-item>
<el-form-item
label=
"备注"
prop=
"note"
>
<el-input
v-model=
"queryParams.note"
placeholder=
"请输入备注"
clearable
@
keyup
.
enter=
"handleQuery"
class=
"!w-240px"
/>
</el-form-item>
<el-form-item
label=
"对应接口"
prop=
"apiAddress"
>
<el-input
v-model=
"queryParams.apiAddress"
placeholder=
"请输入对应接口"
clearable
@
keyup
.
enter=
"handleQuery"
class=
"!w-240px"
/>
</el-form-item>
<el-form-item>
<el-button
@
click=
"handleQuery"
><Icon
icon=
"ep:search"
class=
"mr-5px"
/>
搜索
</el-button>
<el-button
@
click=
"resetQuery"
><Icon
icon=
"ep:refresh"
class=
"mr-5px"
/>
重置
</el-button>
<el-button
type=
"primary"
plain
@
click=
"openForm('create')"
v-hasPermi=
"['ai:app-api-key:create']"
>
<Icon
icon=
"ep:plus"
class=
"mr-5px"
/>
新增
</el-button>
<el-button
type=
"success"
plain
@
click=
"handleExport"
:loading=
"exportLoading"
v-hasPermi=
"['ai:app-api-key:export']"
>
<Icon
icon=
"ep:download"
class=
"mr-5px"
/>
导出
</el-button>
</el-form-item>
</el-form>
</ContentWrap>
<!-- 列表 -->
<ContentWrap>
<el-table
v-loading=
"loading"
:data=
"list"
:stripe=
"true"
:show-overflow-tooltip=
"true"
>
<el-table-column
label=
"密钥ID"
align=
"center"
prop=
"id"
/>
<el-table-column
label=
"密钥"
align=
"center"
prop=
"apiKey"
/>
<el-table-column
label=
"备注"
align=
"center"
prop=
"note"
/>
<el-table-column
label=
"对应接口"
align=
"center"
prop=
"apiAddress"
/>
<el-table-column
label=
"操作"
align=
"center"
min-width=
"120px"
>
<template
#
default=
"scope"
>
<el-button
link
type=
"primary"
@
click=
"openForm('update', scope.row.id)"
v-hasPermi=
"['ai:app-api-key:update']"
>
编辑
</el-button>
<el-button
link
type=
"danger"
@
click=
"handleDelete(scope.row.id)"
v-hasPermi=
"['ai:app-api-key:delete']"
>
删除
</el-button>
</
template
>
</el-table-column>
</el-table>
<!-- 分页 -->
<Pagination
:total=
"total"
v-model:page=
"queryParams.pageNo"
v-model:limit=
"queryParams.pageSize"
@
pagination=
"getList"
/>
</ContentWrap>
<!-- 表单弹窗:添加/修改 -->
<AppApiKeyForm
ref=
"formRef"
@
success=
"getList"
/>
</template>
<
script
setup
lang=
"ts"
>
import
download
from
'@/utils/download'
import
{
AppApiKeyApi
,
AppApiKeyVO
}
from
'@/api/ai/aiappapikey'
import
AppApiKeyForm
from
'./AppApiKeyForm.vue'
/** AIAPI密钥 列表 */
defineOptions
({
name
:
'AiAppApiKey'
})
const
message
=
useMessage
()
// 消息弹窗
const
{
t
}
=
useI18n
()
// 国际化
const
loading
=
ref
(
true
)
// 列表的加载中
const
list
=
ref
<
AppApiKeyVO
[]
>
([])
// 列表的数据
const
total
=
ref
(
0
)
// 列表的总页数
const
queryParams
=
reactive
({
pageNo
:
1
,
pageSize
:
10
,
apiKey
:
undefined
,
note
:
undefined
,
apiAddress
:
undefined
})
const
queryFormRef
=
ref
()
// 搜索的表单
const
exportLoading
=
ref
(
false
)
// 导出的加载中
/** 查询列表 */
const
getList
=
async
()
=>
{
loading
.
value
=
true
try
{
const
data
=
await
AppApiKeyApi
.
getAppApiKeyPage
(
queryParams
)
list
.
value
=
data
.
list
total
.
value
=
data
.
total
}
finally
{
loading
.
value
=
false
}
}
/** 搜索按钮操作 */
const
handleQuery
=
()
=>
{
queryParams
.
pageNo
=
1
getList
()
}
/** 重置按钮操作 */
const
resetQuery
=
()
=>
{
queryFormRef
.
value
.
resetFields
()
handleQuery
()
}
/** 添加/修改操作 */
const
formRef
=
ref
()
const
openForm
=
(
type
:
string
,
id
?:
number
)
=>
{
formRef
.
value
.
open
(
type
,
id
)
}
/** 删除按钮操作 */
const
handleDelete
=
async
(
id
:
number
)
=>
{
try
{
// 删除的二次确认
await
message
.
delConfirm
()
// 发起删除
await
AppApiKeyApi
.
deleteAppApiKey
(
id
)
message
.
success
(
t
(
'common.delSuccess'
))
// 刷新列表
await
getList
()
}
catch
{}
}
/** 导出按钮操作 */
const
handleExport
=
async
()
=>
{
try
{
// 导出的二次确认
await
message
.
exportConfirm
()
// 发起导出
exportLoading
.
value
=
true
const
data
=
await
AppApiKeyApi
.
exportAppApiKey
(
queryParams
)
download
.
excel
(
data
,
'AIAPI密钥.xls'
)
}
catch
{
}
finally
{
exportLoading
.
value
=
false
}
}
/** 初始化 **/
onMounted
(()
=>
{
getList
()
})
</
script
>
\ No newline at end of file
yudao-ui-admin-vue3/src/views/ai/tongzhidan_demo/TognzhidanDemoForm.vue
0 → 100644
View file @
61b2aa0e
<
template
>
<Dialog
:title=
"dialogTitle"
v-model=
"dialogVisible"
>
<el-form
ref=
"formRef"
:model=
"formData"
:rules=
"formRules"
label-width=
"100px"
v-loading=
"formLoading"
>
<el-form-item
label=
"业务场景名字"
prop=
"demoName"
>
<el-input
v-model=
"formData.demoName"
placeholder=
"请输入业务场景名字"
/>
</el-form-item>
<el-form-item
label=
"业务场景要填的字段"
prop=
"demoList"
>
<el-input
v-model=
"formData.demoList"
placeholder=
"请输入业务场景要填的字段"
/>
</el-form-item>
<el-form-item
label=
"业务场景模板"
prop=
"demoContext"
>
<el-input
v-model=
"formData.demoContext"
placeholder=
"请输入业务场景模板"
/>
</el-form-item>
</el-form>
<template
#
footer
>
<el-button
@
click=
"submitForm"
type=
"primary"
:disabled=
"formLoading"
>
确 定
</el-button>
<el-button
@
click=
"dialogVisible = false"
>
取 消
</el-button>
</
template
>
</Dialog>
</template>
<
script
setup
lang=
"ts"
>
import
{
TognzhidanDemoApi
,
TognzhidanDemoVO
}
from
'@/api/ai/tongzhidan_demo'
/** 通知单智能体业务 表单 */
defineOptions
({
name
:
'TognzhidanDemoForm'
})
const
{
t
}
=
useI18n
()
// 国际化
const
message
=
useMessage
()
// 消息弹窗
const
dialogVisible
=
ref
(
false
)
// 弹窗的是否展示
const
dialogTitle
=
ref
(
''
)
// 弹窗的标题
const
formLoading
=
ref
(
false
)
// 表单的加载中:1)修改时的数据加载;2)提交的按钮禁用
const
formType
=
ref
(
''
)
// 表单的类型:create - 新增;update - 修改
const
formData
=
ref
({
id
:
undefined
,
demoName
:
undefined
,
demoList
:
undefined
,
demoContext
:
undefined
})
const
formRules
=
reactive
({
})
const
formRef
=
ref
()
// 表单 Ref
/** 打开弹窗 */
const
open
=
async
(
type
:
string
,
id
?:
number
)
=>
{
dialogVisible
.
value
=
true
dialogTitle
.
value
=
t
(
'action.'
+
type
)
formType
.
value
=
type
resetForm
()
// 修改时,设置数据
if
(
id
)
{
formLoading
.
value
=
true
try
{
formData
.
value
=
await
TognzhidanDemoApi
.
getTognzhidanDemo
(
id
)
}
finally
{
formLoading
.
value
=
false
}
}
}
defineExpose
({
open
})
// 提供 open 方法,用于打开弹窗
/** 提交表单 */
const
emit
=
defineEmits
([
'success'
])
// 定义 success 事件,用于操作成功后的回调
const
submitForm
=
async
()
=>
{
// 校验表单
await
formRef
.
value
.
validate
()
// 提交请求
formLoading
.
value
=
true
try
{
const
data
=
formData
.
value
as
unknown
as
TognzhidanDemoVO
if
(
formType
.
value
===
'create'
)
{
await
TognzhidanDemoApi
.
createTognzhidanDemo
(
data
)
message
.
success
(
t
(
'common.createSuccess'
))
}
else
{
await
TognzhidanDemoApi
.
updateTognzhidanDemo
(
data
)
message
.
success
(
t
(
'common.updateSuccess'
))
}
dialogVisible
.
value
=
false
// 发送操作成功的事件
emit
(
'success'
)
}
finally
{
formLoading
.
value
=
false
}
}
/** 重置表单 */
const
resetForm
=
()
=>
{
formData
.
value
=
{
id
:
undefined
,
demoName
:
undefined
,
demoList
:
undefined
,
demoContext
:
undefined
}
formRef
.
value
?.
resetFields
()
}
</
script
>
\ No newline at end of file
yudao-ui-admin-vue3/src/views/ai/tongzhidan_demo/index.vue
0 → 100644
View file @
61b2aa0e
<
template
>
<ContentWrap>
<!-- 搜索工作栏 -->
<el-form
class=
"-mb-15px"
:model=
"queryParams"
ref=
"queryFormRef"
:inline=
"true"
label-width=
"68px"
>
<el-form-item
label=
"业务场景名字"
prop=
"demoName"
>
<el-input
v-model=
"queryParams.demoName"
placeholder=
"请输入业务场景名字"
clearable
@
keyup
.
enter=
"handleQuery"
class=
"!w-240px"
/>
</el-form-item>
<el-form-item
label=
"业务场景要填的字段"
prop=
"demoList"
>
<el-input
v-model=
"queryParams.demoList"
placeholder=
"请输入业务场景要填的字段"
clearable
@
keyup
.
enter=
"handleQuery"
class=
"!w-240px"
/>
</el-form-item>
<el-form-item
label=
"业务场景模板"
prop=
"demoContext"
>
<el-input
v-model=
"queryParams.demoContext"
placeholder=
"请输入业务场景模板"
clearable
@
keyup
.
enter=
"handleQuery"
class=
"!w-240px"
/>
</el-form-item>
<el-form-item>
<el-button
@
click=
"handleQuery"
><Icon
icon=
"ep:search"
class=
"mr-5px"
/>
搜索
</el-button>
<el-button
@
click=
"resetQuery"
><Icon
icon=
"ep:refresh"
class=
"mr-5px"
/>
重置
</el-button>
<el-button
type=
"primary"
plain
@
click=
"openForm('create')"
v-hasPermi=
"['ai:tognzhidan-demo:create']"
>
<Icon
icon=
"ep:plus"
class=
"mr-5px"
/>
新增
</el-button>
<el-button
type=
"success"
plain
@
click=
"handleExport"
:loading=
"exportLoading"
v-hasPermi=
"['ai:tognzhidan-demo:export']"
>
<Icon
icon=
"ep:download"
class=
"mr-5px"
/>
导出
</el-button>
</el-form-item>
</el-form>
</ContentWrap>
<!-- 列表 -->
<ContentWrap>
<el-table
v-loading=
"loading"
:data=
"list"
:stripe=
"true"
:show-overflow-tooltip=
"true"
>
<el-table-column
label=
"通知单ID"
align=
"center"
prop=
"id"
/>
<el-table-column
label=
"业务场景名字"
align=
"center"
prop=
"demoName"
/>
<el-table-column
label=
"业务场景要填的字段"
align=
"center"
prop=
"demoList"
/>
<el-table-column
label=
"业务场景模板"
align=
"center"
prop=
"demoContext"
/>
<el-table-column
label=
"操作"
align=
"center"
min-width=
"120px"
>
<template
#
default=
"scope"
>
<el-button
link
type=
"primary"
@
click=
"openForm('update', scope.row.id)"
v-hasPermi=
"['ai:tognzhidan-demo:update']"
>
编辑
</el-button>
<el-button
link
type=
"danger"
@
click=
"handleDelete(scope.row.id)"
v-hasPermi=
"['ai:tognzhidan-demo:delete']"
>
删除
</el-button>
</
template
>
</el-table-column>
</el-table>
<!-- 分页 -->
<Pagination
:total=
"total"
v-model:page=
"queryParams.pageNo"
v-model:limit=
"queryParams.pageSize"
@
pagination=
"getList"
/>
</ContentWrap>
<!-- 表单弹窗:添加/修改 -->
<TognzhidanDemoForm
ref=
"formRef"
@
success=
"getList"
/>
</template>
<
script
setup
lang=
"ts"
>
import
download
from
'@/utils/download'
import
{
TognzhidanDemoApi
,
TognzhidanDemoVO
}
from
'@/api/ai/tongzhidan_demo'
import
TognzhidanDemoForm
from
'./TognzhidanDemoForm.vue'
/** 通知单智能体业务 列表 */
defineOptions
({
name
:
'TognzhidanDemo'
})
const
message
=
useMessage
()
// 消息弹窗
const
{
t
}
=
useI18n
()
// 国际化
const
loading
=
ref
(
true
)
// 列表的加载中
const
list
=
ref
<
TognzhidanDemoVO
[]
>
([])
// 列表的数据
const
total
=
ref
(
0
)
// 列表的总页数
const
queryParams
=
reactive
({
pageNo
:
1
,
pageSize
:
10
,
demoName
:
undefined
,
demoList
:
undefined
,
demoContext
:
undefined
})
const
queryFormRef
=
ref
()
// 搜索的表单
const
exportLoading
=
ref
(
false
)
// 导出的加载中
/** 查询列表 */
const
getList
=
async
()
=>
{
loading
.
value
=
true
try
{
const
data
=
await
TognzhidanDemoApi
.
getTognzhidanDemoPage
(
queryParams
)
list
.
value
=
data
.
list
total
.
value
=
data
.
total
}
finally
{
loading
.
value
=
false
}
}
/** 搜索按钮操作 */
const
handleQuery
=
()
=>
{
queryParams
.
pageNo
=
1
getList
()
}
/** 重置按钮操作 */
const
resetQuery
=
()
=>
{
queryFormRef
.
value
.
resetFields
()
handleQuery
()
}
/** 添加/修改操作 */
const
formRef
=
ref
()
const
openForm
=
(
type
:
string
,
id
?:
number
)
=>
{
formRef
.
value
.
open
(
type
,
id
)
}
/** 删除按钮操作 */
const
handleDelete
=
async
(
id
:
number
)
=>
{
try
{
// 删除的二次确认
await
message
.
delConfirm
()
// 发起删除
await
TognzhidanDemoApi
.
deleteTognzhidanDemo
(
id
)
message
.
success
(
t
(
'common.delSuccess'
))
// 刷新列表
await
getList
()
}
catch
{}
}
/** 导出按钮操作 */
const
handleExport
=
async
()
=>
{
try
{
// 导出的二次确认
await
message
.
exportConfirm
()
// 发起导出
exportLoading
.
value
=
true
const
data
=
await
TognzhidanDemoApi
.
exportTognzhidanDemo
(
queryParams
)
download
.
excel
(
data
,
'通知单智能体业务.xls'
)
}
catch
{
}
finally
{
exportLoading
.
value
=
false
}
}
/** 初始化 **/
onMounted
(()
=>
{
getList
()
})
</
script
>
\ No newline at end of file
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment