feat(1.0): 新增意图关键字回复
This commit is contained in:
parent
b02e161ae7
commit
abc2bf7b07
294
docs/docs.go
294
docs/docs.go
@ -150,6 +150,167 @@ const docTemplate = `{
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"/admin/app/keyword/material/{id}": {
|
||||||
|
"put": {
|
||||||
|
"security": [
|
||||||
|
{
|
||||||
|
"LoginVerifyToken": []
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"description": "修改意图关键字素材",
|
||||||
|
"consumes": [
|
||||||
|
"application/json"
|
||||||
|
],
|
||||||
|
"produces": [
|
||||||
|
"application/json"
|
||||||
|
],
|
||||||
|
"tags": [
|
||||||
|
"管理端.意图关键字"
|
||||||
|
],
|
||||||
|
"summary": "修改意图关键字素材",
|
||||||
|
"parameters": [
|
||||||
|
{
|
||||||
|
"type": "string",
|
||||||
|
"description": "素材编号ID",
|
||||||
|
"name": "id",
|
||||||
|
"in": "path",
|
||||||
|
"required": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"description": "请求参数",
|
||||||
|
"name": "RequestBody",
|
||||||
|
"in": "body",
|
||||||
|
"required": true,
|
||||||
|
"schema": {
|
||||||
|
"$ref": "#/definitions/keyword.modifyKeywordMaterialRequest"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"responses": {
|
||||||
|
"200": {
|
||||||
|
"description": "OK",
|
||||||
|
"schema": {
|
||||||
|
"$ref": "#/definitions/keyword.modifyKeywordMaterialResponse"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"400": {
|
||||||
|
"description": "Bad Request",
|
||||||
|
"schema": {
|
||||||
|
"$ref": "#/definitions/code.Failure"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"post": {
|
||||||
|
"security": [
|
||||||
|
{
|
||||||
|
"LoginVerifyToken": []
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"description": "配置意图关键字素材",
|
||||||
|
"consumes": [
|
||||||
|
"application/json"
|
||||||
|
],
|
||||||
|
"produces": [
|
||||||
|
"application/json"
|
||||||
|
],
|
||||||
|
"tags": [
|
||||||
|
"管理端.意图关键字"
|
||||||
|
],
|
||||||
|
"summary": "配置意图关键字素材",
|
||||||
|
"parameters": [
|
||||||
|
{
|
||||||
|
"type": "string",
|
||||||
|
"description": "编号ID",
|
||||||
|
"name": "id",
|
||||||
|
"in": "path",
|
||||||
|
"required": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"description": "请求参数",
|
||||||
|
"name": "RequestBody",
|
||||||
|
"in": "body",
|
||||||
|
"required": true,
|
||||||
|
"schema": {
|
||||||
|
"$ref": "#/definitions/keyword.createKeywordMaterialRequest"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"responses": {
|
||||||
|
"200": {
|
||||||
|
"description": "OK",
|
||||||
|
"schema": {
|
||||||
|
"$ref": "#/definitions/keyword.createKeywordMaterialResponse"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"400": {
|
||||||
|
"description": "Bad Request",
|
||||||
|
"schema": {
|
||||||
|
"$ref": "#/definitions/code.Failure"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"/admin/app/keyword/materials": {
|
||||||
|
"get": {
|
||||||
|
"security": [
|
||||||
|
{
|
||||||
|
"LoginVerifyToken": []
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"description": "获取意图关键字素材列表",
|
||||||
|
"consumes": [
|
||||||
|
"application/json"
|
||||||
|
],
|
||||||
|
"produces": [
|
||||||
|
"application/json"
|
||||||
|
],
|
||||||
|
"tags": [
|
||||||
|
"管理端.意图关键字"
|
||||||
|
],
|
||||||
|
"summary": "获取意图关键字素材列表",
|
||||||
|
"parameters": [
|
||||||
|
{
|
||||||
|
"type": "integer",
|
||||||
|
"description": "意图关键字ID",
|
||||||
|
"name": "keyword_id",
|
||||||
|
"in": "query",
|
||||||
|
"required": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "integer",
|
||||||
|
"default": 1,
|
||||||
|
"description": "当前页码",
|
||||||
|
"name": "page",
|
||||||
|
"in": "query",
|
||||||
|
"required": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "integer",
|
||||||
|
"default": 20,
|
||||||
|
"description": "每页返回的数据量,最多 100 条",
|
||||||
|
"name": "page_size",
|
||||||
|
"in": "query",
|
||||||
|
"required": true
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"responses": {
|
||||||
|
"200": {
|
||||||
|
"description": "OK",
|
||||||
|
"schema": {
|
||||||
|
"$ref": "#/definitions/keyword.keywordMaterialPageListResponse"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"400": {
|
||||||
|
"description": "Bad Request",
|
||||||
|
"schema": {
|
||||||
|
"$ref": "#/definitions/code.Failure"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
"/admin/app/keyword/{id}": {
|
"/admin/app/keyword/{id}": {
|
||||||
"put": {
|
"put": {
|
||||||
"security": [
|
"security": [
|
||||||
@ -688,6 +849,30 @@ const docTemplate = `{
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"keyword.createKeywordMaterialRequest": {
|
||||||
|
"type": "object",
|
||||||
|
"required": [
|
||||||
|
"material_list"
|
||||||
|
],
|
||||||
|
"properties": {
|
||||||
|
"material_list": {
|
||||||
|
"description": "素材列表",
|
||||||
|
"type": "array",
|
||||||
|
"items": {
|
||||||
|
"$ref": "#/definitions/keyword.keywordMaterial"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"keyword.createKeywordMaterialResponse": {
|
||||||
|
"type": "object",
|
||||||
|
"properties": {
|
||||||
|
"message": {
|
||||||
|
"description": "提示信息",
|
||||||
|
"type": "string"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
"keyword.createKeywordRequest": {
|
"keyword.createKeywordRequest": {
|
||||||
"type": "object",
|
"type": "object",
|
||||||
"required": [
|
"required": [
|
||||||
@ -764,6 +949,84 @@ const docTemplate = `{
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"keyword.keywordMaterial": {
|
||||||
|
"type": "object",
|
||||||
|
"required": [
|
||||||
|
"content",
|
||||||
|
"interval_seconds",
|
||||||
|
"type"
|
||||||
|
],
|
||||||
|
"properties": {
|
||||||
|
"content": {
|
||||||
|
"description": "素材内容",
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"interval_seconds": {
|
||||||
|
"description": "发送间隔时间(单位:秒)",
|
||||||
|
"type": "integer"
|
||||||
|
},
|
||||||
|
"type": {
|
||||||
|
"description": "素材类型(1:文本 2:图片)",
|
||||||
|
"type": "integer"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"keyword.keywordMaterialListData": {
|
||||||
|
"type": "object",
|
||||||
|
"properties": {
|
||||||
|
"content": {
|
||||||
|
"description": "素材内容",
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"created_at": {
|
||||||
|
"description": "创建时间",
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"created_user": {
|
||||||
|
"description": "创建人",
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"id": {
|
||||||
|
"description": "主键ID",
|
||||||
|
"type": "integer"
|
||||||
|
},
|
||||||
|
"interval_seconds": {
|
||||||
|
"description": "素材发送间隔时间(单位:秒)",
|
||||||
|
"type": "integer"
|
||||||
|
},
|
||||||
|
"keyword_id": {
|
||||||
|
"description": "意图关键字ID",
|
||||||
|
"type": "integer"
|
||||||
|
},
|
||||||
|
"type": {
|
||||||
|
"description": "素材类型(1:文本 2:图片)",
|
||||||
|
"type": "integer"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"keyword.keywordMaterialPageListResponse": {
|
||||||
|
"type": "object",
|
||||||
|
"properties": {
|
||||||
|
"list": {
|
||||||
|
"type": "array",
|
||||||
|
"items": {
|
||||||
|
"$ref": "#/definitions/keyword.keywordMaterialListData"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"page": {
|
||||||
|
"description": "当前页码",
|
||||||
|
"type": "integer"
|
||||||
|
},
|
||||||
|
"page_size": {
|
||||||
|
"description": "每页返回的数据量",
|
||||||
|
"type": "integer"
|
||||||
|
},
|
||||||
|
"total": {
|
||||||
|
"description": "符合查询条件的总记录数",
|
||||||
|
"type": "integer"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
"keyword.keywordPageListResponse": {
|
"keyword.keywordPageListResponse": {
|
||||||
"type": "object",
|
"type": "object",
|
||||||
"properties": {
|
"properties": {
|
||||||
@ -787,6 +1050,37 @@ const docTemplate = `{
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"keyword.modifyKeywordMaterialRequest": {
|
||||||
|
"type": "object",
|
||||||
|
"required": [
|
||||||
|
"content",
|
||||||
|
"interval_seconds",
|
||||||
|
"type"
|
||||||
|
],
|
||||||
|
"properties": {
|
||||||
|
"content": {
|
||||||
|
"description": "素材内容",
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"interval_seconds": {
|
||||||
|
"description": "发送间隔时间(单位:秒)",
|
||||||
|
"type": "integer"
|
||||||
|
},
|
||||||
|
"type": {
|
||||||
|
"description": "素材类型(1:文本 2:图片)",
|
||||||
|
"type": "integer"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"keyword.modifyKeywordMaterialResponse": {
|
||||||
|
"type": "object",
|
||||||
|
"properties": {
|
||||||
|
"message": {
|
||||||
|
"description": "提示信息",
|
||||||
|
"type": "string"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
"keyword.modifyKeywordRequest": {
|
"keyword.modifyKeywordRequest": {
|
||||||
"type": "object",
|
"type": "object",
|
||||||
"required": [
|
"required": [
|
||||||
|
|||||||
@ -142,6 +142,167 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"/admin/app/keyword/material/{id}": {
|
||||||
|
"put": {
|
||||||
|
"security": [
|
||||||
|
{
|
||||||
|
"LoginVerifyToken": []
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"description": "修改意图关键字素材",
|
||||||
|
"consumes": [
|
||||||
|
"application/json"
|
||||||
|
],
|
||||||
|
"produces": [
|
||||||
|
"application/json"
|
||||||
|
],
|
||||||
|
"tags": [
|
||||||
|
"管理端.意图关键字"
|
||||||
|
],
|
||||||
|
"summary": "修改意图关键字素材",
|
||||||
|
"parameters": [
|
||||||
|
{
|
||||||
|
"type": "string",
|
||||||
|
"description": "素材编号ID",
|
||||||
|
"name": "id",
|
||||||
|
"in": "path",
|
||||||
|
"required": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"description": "请求参数",
|
||||||
|
"name": "RequestBody",
|
||||||
|
"in": "body",
|
||||||
|
"required": true,
|
||||||
|
"schema": {
|
||||||
|
"$ref": "#/definitions/keyword.modifyKeywordMaterialRequest"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"responses": {
|
||||||
|
"200": {
|
||||||
|
"description": "OK",
|
||||||
|
"schema": {
|
||||||
|
"$ref": "#/definitions/keyword.modifyKeywordMaterialResponse"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"400": {
|
||||||
|
"description": "Bad Request",
|
||||||
|
"schema": {
|
||||||
|
"$ref": "#/definitions/code.Failure"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"post": {
|
||||||
|
"security": [
|
||||||
|
{
|
||||||
|
"LoginVerifyToken": []
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"description": "配置意图关键字素材",
|
||||||
|
"consumes": [
|
||||||
|
"application/json"
|
||||||
|
],
|
||||||
|
"produces": [
|
||||||
|
"application/json"
|
||||||
|
],
|
||||||
|
"tags": [
|
||||||
|
"管理端.意图关键字"
|
||||||
|
],
|
||||||
|
"summary": "配置意图关键字素材",
|
||||||
|
"parameters": [
|
||||||
|
{
|
||||||
|
"type": "string",
|
||||||
|
"description": "编号ID",
|
||||||
|
"name": "id",
|
||||||
|
"in": "path",
|
||||||
|
"required": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"description": "请求参数",
|
||||||
|
"name": "RequestBody",
|
||||||
|
"in": "body",
|
||||||
|
"required": true,
|
||||||
|
"schema": {
|
||||||
|
"$ref": "#/definitions/keyword.createKeywordMaterialRequest"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"responses": {
|
||||||
|
"200": {
|
||||||
|
"description": "OK",
|
||||||
|
"schema": {
|
||||||
|
"$ref": "#/definitions/keyword.createKeywordMaterialResponse"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"400": {
|
||||||
|
"description": "Bad Request",
|
||||||
|
"schema": {
|
||||||
|
"$ref": "#/definitions/code.Failure"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"/admin/app/keyword/materials": {
|
||||||
|
"get": {
|
||||||
|
"security": [
|
||||||
|
{
|
||||||
|
"LoginVerifyToken": []
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"description": "获取意图关键字素材列表",
|
||||||
|
"consumes": [
|
||||||
|
"application/json"
|
||||||
|
],
|
||||||
|
"produces": [
|
||||||
|
"application/json"
|
||||||
|
],
|
||||||
|
"tags": [
|
||||||
|
"管理端.意图关键字"
|
||||||
|
],
|
||||||
|
"summary": "获取意图关键字素材列表",
|
||||||
|
"parameters": [
|
||||||
|
{
|
||||||
|
"type": "integer",
|
||||||
|
"description": "意图关键字ID",
|
||||||
|
"name": "keyword_id",
|
||||||
|
"in": "query",
|
||||||
|
"required": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "integer",
|
||||||
|
"default": 1,
|
||||||
|
"description": "当前页码",
|
||||||
|
"name": "page",
|
||||||
|
"in": "query",
|
||||||
|
"required": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "integer",
|
||||||
|
"default": 20,
|
||||||
|
"description": "每页返回的数据量,最多 100 条",
|
||||||
|
"name": "page_size",
|
||||||
|
"in": "query",
|
||||||
|
"required": true
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"responses": {
|
||||||
|
"200": {
|
||||||
|
"description": "OK",
|
||||||
|
"schema": {
|
||||||
|
"$ref": "#/definitions/keyword.keywordMaterialPageListResponse"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"400": {
|
||||||
|
"description": "Bad Request",
|
||||||
|
"schema": {
|
||||||
|
"$ref": "#/definitions/code.Failure"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
"/admin/app/keyword/{id}": {
|
"/admin/app/keyword/{id}": {
|
||||||
"put": {
|
"put": {
|
||||||
"security": [
|
"security": [
|
||||||
@ -680,6 +841,30 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"keyword.createKeywordMaterialRequest": {
|
||||||
|
"type": "object",
|
||||||
|
"required": [
|
||||||
|
"material_list"
|
||||||
|
],
|
||||||
|
"properties": {
|
||||||
|
"material_list": {
|
||||||
|
"description": "素材列表",
|
||||||
|
"type": "array",
|
||||||
|
"items": {
|
||||||
|
"$ref": "#/definitions/keyword.keywordMaterial"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"keyword.createKeywordMaterialResponse": {
|
||||||
|
"type": "object",
|
||||||
|
"properties": {
|
||||||
|
"message": {
|
||||||
|
"description": "提示信息",
|
||||||
|
"type": "string"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
"keyword.createKeywordRequest": {
|
"keyword.createKeywordRequest": {
|
||||||
"type": "object",
|
"type": "object",
|
||||||
"required": [
|
"required": [
|
||||||
@ -756,6 +941,84 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"keyword.keywordMaterial": {
|
||||||
|
"type": "object",
|
||||||
|
"required": [
|
||||||
|
"content",
|
||||||
|
"interval_seconds",
|
||||||
|
"type"
|
||||||
|
],
|
||||||
|
"properties": {
|
||||||
|
"content": {
|
||||||
|
"description": "素材内容",
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"interval_seconds": {
|
||||||
|
"description": "发送间隔时间(单位:秒)",
|
||||||
|
"type": "integer"
|
||||||
|
},
|
||||||
|
"type": {
|
||||||
|
"description": "素材类型(1:文本 2:图片)",
|
||||||
|
"type": "integer"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"keyword.keywordMaterialListData": {
|
||||||
|
"type": "object",
|
||||||
|
"properties": {
|
||||||
|
"content": {
|
||||||
|
"description": "素材内容",
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"created_at": {
|
||||||
|
"description": "创建时间",
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"created_user": {
|
||||||
|
"description": "创建人",
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"id": {
|
||||||
|
"description": "主键ID",
|
||||||
|
"type": "integer"
|
||||||
|
},
|
||||||
|
"interval_seconds": {
|
||||||
|
"description": "素材发送间隔时间(单位:秒)",
|
||||||
|
"type": "integer"
|
||||||
|
},
|
||||||
|
"keyword_id": {
|
||||||
|
"description": "意图关键字ID",
|
||||||
|
"type": "integer"
|
||||||
|
},
|
||||||
|
"type": {
|
||||||
|
"description": "素材类型(1:文本 2:图片)",
|
||||||
|
"type": "integer"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"keyword.keywordMaterialPageListResponse": {
|
||||||
|
"type": "object",
|
||||||
|
"properties": {
|
||||||
|
"list": {
|
||||||
|
"type": "array",
|
||||||
|
"items": {
|
||||||
|
"$ref": "#/definitions/keyword.keywordMaterialListData"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"page": {
|
||||||
|
"description": "当前页码",
|
||||||
|
"type": "integer"
|
||||||
|
},
|
||||||
|
"page_size": {
|
||||||
|
"description": "每页返回的数据量",
|
||||||
|
"type": "integer"
|
||||||
|
},
|
||||||
|
"total": {
|
||||||
|
"description": "符合查询条件的总记录数",
|
||||||
|
"type": "integer"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
"keyword.keywordPageListResponse": {
|
"keyword.keywordPageListResponse": {
|
||||||
"type": "object",
|
"type": "object",
|
||||||
"properties": {
|
"properties": {
|
||||||
@ -779,6 +1042,37 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"keyword.modifyKeywordMaterialRequest": {
|
||||||
|
"type": "object",
|
||||||
|
"required": [
|
||||||
|
"content",
|
||||||
|
"interval_seconds",
|
||||||
|
"type"
|
||||||
|
],
|
||||||
|
"properties": {
|
||||||
|
"content": {
|
||||||
|
"description": "素材内容",
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"interval_seconds": {
|
||||||
|
"description": "发送间隔时间(单位:秒)",
|
||||||
|
"type": "integer"
|
||||||
|
},
|
||||||
|
"type": {
|
||||||
|
"description": "素材类型(1:文本 2:图片)",
|
||||||
|
"type": "integer"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"keyword.modifyKeywordMaterialResponse": {
|
||||||
|
"type": "object",
|
||||||
|
"properties": {
|
||||||
|
"message": {
|
||||||
|
"description": "提示信息",
|
||||||
|
"type": "string"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
"keyword.modifyKeywordRequest": {
|
"keyword.modifyKeywordRequest": {
|
||||||
"type": "object",
|
"type": "object",
|
||||||
"required": [
|
"required": [
|
||||||
|
|||||||
@ -129,6 +129,22 @@ definitions:
|
|||||||
description: 描述信息
|
description: 描述信息
|
||||||
type: string
|
type: string
|
||||||
type: object
|
type: object
|
||||||
|
keyword.createKeywordMaterialRequest:
|
||||||
|
properties:
|
||||||
|
material_list:
|
||||||
|
description: 素材列表
|
||||||
|
items:
|
||||||
|
$ref: '#/definitions/keyword.keywordMaterial'
|
||||||
|
type: array
|
||||||
|
required:
|
||||||
|
- material_list
|
||||||
|
type: object
|
||||||
|
keyword.createKeywordMaterialResponse:
|
||||||
|
properties:
|
||||||
|
message:
|
||||||
|
description: 提示信息
|
||||||
|
type: string
|
||||||
|
type: object
|
||||||
keyword.createKeywordRequest:
|
keyword.createKeywordRequest:
|
||||||
properties:
|
properties:
|
||||||
app_id:
|
app_id:
|
||||||
@ -183,6 +199,62 @@ definitions:
|
|||||||
description: 更新人
|
description: 更新人
|
||||||
type: string
|
type: string
|
||||||
type: object
|
type: object
|
||||||
|
keyword.keywordMaterial:
|
||||||
|
properties:
|
||||||
|
content:
|
||||||
|
description: 素材内容
|
||||||
|
type: string
|
||||||
|
interval_seconds:
|
||||||
|
description: 发送间隔时间(单位:秒)
|
||||||
|
type: integer
|
||||||
|
type:
|
||||||
|
description: 素材类型(1:文本 2:图片)
|
||||||
|
type: integer
|
||||||
|
required:
|
||||||
|
- content
|
||||||
|
- interval_seconds
|
||||||
|
- type
|
||||||
|
type: object
|
||||||
|
keyword.keywordMaterialListData:
|
||||||
|
properties:
|
||||||
|
content:
|
||||||
|
description: 素材内容
|
||||||
|
type: string
|
||||||
|
created_at:
|
||||||
|
description: 创建时间
|
||||||
|
type: string
|
||||||
|
created_user:
|
||||||
|
description: 创建人
|
||||||
|
type: string
|
||||||
|
id:
|
||||||
|
description: 主键ID
|
||||||
|
type: integer
|
||||||
|
interval_seconds:
|
||||||
|
description: 素材发送间隔时间(单位:秒)
|
||||||
|
type: integer
|
||||||
|
keyword_id:
|
||||||
|
description: 意图关键字ID
|
||||||
|
type: integer
|
||||||
|
type:
|
||||||
|
description: 素材类型(1:文本 2:图片)
|
||||||
|
type: integer
|
||||||
|
type: object
|
||||||
|
keyword.keywordMaterialPageListResponse:
|
||||||
|
properties:
|
||||||
|
list:
|
||||||
|
items:
|
||||||
|
$ref: '#/definitions/keyword.keywordMaterialListData'
|
||||||
|
type: array
|
||||||
|
page:
|
||||||
|
description: 当前页码
|
||||||
|
type: integer
|
||||||
|
page_size:
|
||||||
|
description: 每页返回的数据量
|
||||||
|
type: integer
|
||||||
|
total:
|
||||||
|
description: 符合查询条件的总记录数
|
||||||
|
type: integer
|
||||||
|
type: object
|
||||||
keyword.keywordPageListResponse:
|
keyword.keywordPageListResponse:
|
||||||
properties:
|
properties:
|
||||||
list:
|
list:
|
||||||
@ -199,6 +271,28 @@ definitions:
|
|||||||
description: 符合查询条件的总记录数
|
description: 符合查询条件的总记录数
|
||||||
type: integer
|
type: integer
|
||||||
type: object
|
type: object
|
||||||
|
keyword.modifyKeywordMaterialRequest:
|
||||||
|
properties:
|
||||||
|
content:
|
||||||
|
description: 素材内容
|
||||||
|
type: string
|
||||||
|
interval_seconds:
|
||||||
|
description: 发送间隔时间(单位:秒)
|
||||||
|
type: integer
|
||||||
|
type:
|
||||||
|
description: 素材类型(1:文本 2:图片)
|
||||||
|
type: integer
|
||||||
|
required:
|
||||||
|
- content
|
||||||
|
- interval_seconds
|
||||||
|
- type
|
||||||
|
type: object
|
||||||
|
keyword.modifyKeywordMaterialResponse:
|
||||||
|
properties:
|
||||||
|
message:
|
||||||
|
description: 提示信息
|
||||||
|
type: string
|
||||||
|
type: object
|
||||||
keyword.modifyKeywordRequest:
|
keyword.modifyKeywordRequest:
|
||||||
properties:
|
properties:
|
||||||
keyword:
|
keyword:
|
||||||
@ -403,6 +497,110 @@ paths:
|
|||||||
summary: 修改意图关键字
|
summary: 修改意图关键字
|
||||||
tags:
|
tags:
|
||||||
- 管理端.意图关键字
|
- 管理端.意图关键字
|
||||||
|
/admin/app/keyword/material/{id}:
|
||||||
|
post:
|
||||||
|
consumes:
|
||||||
|
- application/json
|
||||||
|
description: 配置意图关键字素材
|
||||||
|
parameters:
|
||||||
|
- description: 编号ID
|
||||||
|
in: path
|
||||||
|
name: id
|
||||||
|
required: true
|
||||||
|
type: string
|
||||||
|
- description: 请求参数
|
||||||
|
in: body
|
||||||
|
name: RequestBody
|
||||||
|
required: true
|
||||||
|
schema:
|
||||||
|
$ref: '#/definitions/keyword.createKeywordMaterialRequest'
|
||||||
|
produces:
|
||||||
|
- application/json
|
||||||
|
responses:
|
||||||
|
"200":
|
||||||
|
description: OK
|
||||||
|
schema:
|
||||||
|
$ref: '#/definitions/keyword.createKeywordMaterialResponse'
|
||||||
|
"400":
|
||||||
|
description: Bad Request
|
||||||
|
schema:
|
||||||
|
$ref: '#/definitions/code.Failure'
|
||||||
|
security:
|
||||||
|
- LoginVerifyToken: []
|
||||||
|
summary: 配置意图关键字素材
|
||||||
|
tags:
|
||||||
|
- 管理端.意图关键字
|
||||||
|
put:
|
||||||
|
consumes:
|
||||||
|
- application/json
|
||||||
|
description: 修改意图关键字素材
|
||||||
|
parameters:
|
||||||
|
- description: 素材编号ID
|
||||||
|
in: path
|
||||||
|
name: id
|
||||||
|
required: true
|
||||||
|
type: string
|
||||||
|
- description: 请求参数
|
||||||
|
in: body
|
||||||
|
name: RequestBody
|
||||||
|
required: true
|
||||||
|
schema:
|
||||||
|
$ref: '#/definitions/keyword.modifyKeywordMaterialRequest'
|
||||||
|
produces:
|
||||||
|
- application/json
|
||||||
|
responses:
|
||||||
|
"200":
|
||||||
|
description: OK
|
||||||
|
schema:
|
||||||
|
$ref: '#/definitions/keyword.modifyKeywordMaterialResponse'
|
||||||
|
"400":
|
||||||
|
description: Bad Request
|
||||||
|
schema:
|
||||||
|
$ref: '#/definitions/code.Failure'
|
||||||
|
security:
|
||||||
|
- LoginVerifyToken: []
|
||||||
|
summary: 修改意图关键字素材
|
||||||
|
tags:
|
||||||
|
- 管理端.意图关键字
|
||||||
|
/admin/app/keyword/materials:
|
||||||
|
get:
|
||||||
|
consumes:
|
||||||
|
- application/json
|
||||||
|
description: 获取意图关键字素材列表
|
||||||
|
parameters:
|
||||||
|
- description: 意图关键字ID
|
||||||
|
in: query
|
||||||
|
name: keyword_id
|
||||||
|
required: true
|
||||||
|
type: integer
|
||||||
|
- default: 1
|
||||||
|
description: 当前页码
|
||||||
|
in: query
|
||||||
|
name: page
|
||||||
|
required: true
|
||||||
|
type: integer
|
||||||
|
- default: 20
|
||||||
|
description: 每页返回的数据量,最多 100 条
|
||||||
|
in: query
|
||||||
|
name: page_size
|
||||||
|
required: true
|
||||||
|
type: integer
|
||||||
|
produces:
|
||||||
|
- application/json
|
||||||
|
responses:
|
||||||
|
"200":
|
||||||
|
description: OK
|
||||||
|
schema:
|
||||||
|
$ref: '#/definitions/keyword.keywordMaterialPageListResponse'
|
||||||
|
"400":
|
||||||
|
description: Bad Request
|
||||||
|
schema:
|
||||||
|
$ref: '#/definitions/code.Failure'
|
||||||
|
security:
|
||||||
|
- LoginVerifyToken: []
|
||||||
|
summary: 获取意图关键字素材列表
|
||||||
|
tags:
|
||||||
|
- 管理端.意图关键字
|
||||||
/admin/app/keywords:
|
/admin/app/keywords:
|
||||||
get:
|
get:
|
||||||
consumes:
|
consumes:
|
||||||
|
|||||||
143
internal/api/keyword/keyword_material_create.go
Normal file
143
internal/api/keyword/keyword_material_create.go
Normal file
@ -0,0 +1,143 @@
|
|||||||
|
package keyword
|
||||||
|
|
||||||
|
import (
|
||||||
|
"fmt"
|
||||||
|
"net/http"
|
||||||
|
"strconv"
|
||||||
|
"time"
|
||||||
|
|
||||||
|
"mini-chat/internal/code"
|
||||||
|
"mini-chat/internal/pkg/core"
|
||||||
|
"mini-chat/internal/pkg/validation"
|
||||||
|
"mini-chat/internal/repository/mysql/model"
|
||||||
|
|
||||||
|
"gorm.io/gorm"
|
||||||
|
)
|
||||||
|
|
||||||
|
type keywordMaterial struct {
|
||||||
|
Type int32 `json:"type" binding:"required"` // 素材类型(1:文本 2:图片)
|
||||||
|
Content string `json:"content" binding:"required"` // 素材内容
|
||||||
|
IntervalSeconds int32 `json:"interval_seconds" binding:"required"` // 发送间隔时间(单位:秒)
|
||||||
|
}
|
||||||
|
|
||||||
|
type createKeywordMaterialRequest struct {
|
||||||
|
MaterialList []keywordMaterial `json:"material_list" binding:"required"` // 素材列表
|
||||||
|
}
|
||||||
|
|
||||||
|
type createKeywordMaterialResponse struct {
|
||||||
|
Message string `json:"message"` // 提示信息
|
||||||
|
}
|
||||||
|
|
||||||
|
// CreateKeywordMaterial 配置意图关键字素材
|
||||||
|
// @Summary 配置意图关键字素材
|
||||||
|
// @Description 配置意图关键字素材
|
||||||
|
// @Tags 管理端.意图关键字
|
||||||
|
// @Accept json
|
||||||
|
// @Produce json
|
||||||
|
// @Param id path string true "编号ID"
|
||||||
|
// @Param RequestBody body createKeywordMaterialRequest true "请求参数"
|
||||||
|
// @Success 200 {object} createKeywordMaterialResponse
|
||||||
|
// @Failure 400 {object} code.Failure
|
||||||
|
// @Router /admin/app/keyword/material/{id} [post]
|
||||||
|
// @Security LoginVerifyToken
|
||||||
|
func (h *handler) CreateKeywordMaterial() core.HandlerFunc {
|
||||||
|
return func(ctx core.Context) {
|
||||||
|
req := new(createKeywordMaterialRequest)
|
||||||
|
res := new(createKeywordMaterialResponse)
|
||||||
|
if err := ctx.ShouldBindJSON(req); err != nil {
|
||||||
|
ctx.AbortWithError(core.Error(
|
||||||
|
http.StatusBadRequest,
|
||||||
|
code.ParamBindError,
|
||||||
|
validation.Error(err)),
|
||||||
|
)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
ID, err := strconv.Atoi(ctx.Param("id"))
|
||||||
|
if err != nil {
|
||||||
|
ctx.AbortWithError(core.Error(
|
||||||
|
http.StatusBadRequest,
|
||||||
|
code.ParamBindError,
|
||||||
|
"未传递编号ID。"),
|
||||||
|
)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
if len(req.MaterialList) == 0 {
|
||||||
|
ctx.AbortWithError(core.Error(
|
||||||
|
http.StatusBadRequest,
|
||||||
|
code.CreateKeywordMaterialError,
|
||||||
|
fmt.Sprintf("%s: 未配置素材", code.Text(code.CreateKeywordMaterialError))),
|
||||||
|
)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
info, err := h.readDB.AppKeyword.WithContext(ctx.RequestContext()).
|
||||||
|
Where(h.readDB.AppKeyword.ID.Eq(int32(ID))).
|
||||||
|
First()
|
||||||
|
if err != nil && err != gorm.ErrRecordNotFound {
|
||||||
|
ctx.AbortWithError(core.Error(
|
||||||
|
http.StatusBadRequest,
|
||||||
|
code.CreateKeywordMaterialError,
|
||||||
|
fmt.Sprintf("%s: %s", code.Text(code.CreateKeywordMaterialError), err.Error())),
|
||||||
|
)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
if info == nil {
|
||||||
|
ctx.AbortWithError(core.Error(
|
||||||
|
http.StatusBadRequest,
|
||||||
|
code.CreateKeywordMaterialError,
|
||||||
|
fmt.Sprintf("%s: 意图关键字编号(%d)不存在。", code.Text(code.CreateKeywordMaterialError), ID)),
|
||||||
|
)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
// 先删除旧数据
|
||||||
|
if _, err := h.writeDB.AppKeywordReply.WithContext(ctx.RequestContext()).
|
||||||
|
Where(h.writeDB.AppKeywordReply.KeywordID.Eq(int32(ID))).
|
||||||
|
Delete(); err != nil {
|
||||||
|
ctx.AbortWithError(core.Error(
|
||||||
|
http.StatusBadRequest,
|
||||||
|
code.CreateKeywordMaterialError,
|
||||||
|
fmt.Sprintf("%s: %s", code.Text(code.CreateKeywordMaterialError), err.Error())),
|
||||||
|
)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
var keywordMaterials []*model.AppKeywordReply
|
||||||
|
for i := 0; i < len(req.MaterialList); i++ {
|
||||||
|
if req.MaterialList[i].Type == 0 || req.MaterialList[i].Content == "" || req.MaterialList[i].IntervalSeconds == 0 {
|
||||||
|
ctx.AbortWithError(core.Error(
|
||||||
|
http.StatusBadRequest,
|
||||||
|
code.CreateKeywordMaterialError,
|
||||||
|
fmt.Sprintf("%s: 配置素材数据不完整,请检查。", code.Text(code.CreateKeywordMaterialError))),
|
||||||
|
)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
keywordMaterials = append(keywordMaterials, &model.AppKeywordReply{
|
||||||
|
KeywordID: int32(ID),
|
||||||
|
AppID: info.AppID,
|
||||||
|
Type: req.MaterialList[i].Type,
|
||||||
|
Content: req.MaterialList[i].Content,
|
||||||
|
IntervalSeconds: req.MaterialList[i].IntervalSeconds,
|
||||||
|
CreatedUser: ctx.SessionUserInfo().UserName,
|
||||||
|
CreatedAt: time.Now(),
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
// 批量插入
|
||||||
|
if err := h.writeDB.AppKeywordReply.WithContext(ctx.RequestContext()).CreateInBatches(keywordMaterials, len(req.MaterialList)); err != nil {
|
||||||
|
ctx.AbortWithError(core.Error(
|
||||||
|
http.StatusBadRequest,
|
||||||
|
code.CreateKeywordMaterialError,
|
||||||
|
fmt.Sprintf("%s: %s", code.Text(code.CreateKeywordMaterialError), err.Error())),
|
||||||
|
)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
res.Message = "操作成功"
|
||||||
|
ctx.Payload(res)
|
||||||
|
}
|
||||||
|
}
|
||||||
130
internal/api/keyword/keyword_material_list.go
Normal file
130
internal/api/keyword/keyword_material_list.go
Normal file
@ -0,0 +1,130 @@
|
|||||||
|
package keyword
|
||||||
|
|
||||||
|
import (
|
||||||
|
"fmt"
|
||||||
|
"net/http"
|
||||||
|
|
||||||
|
"mini-chat/internal/code"
|
||||||
|
"mini-chat/internal/pkg/core"
|
||||||
|
"mini-chat/internal/pkg/timeutil"
|
||||||
|
"mini-chat/internal/pkg/validation"
|
||||||
|
|
||||||
|
"gorm.io/gorm"
|
||||||
|
)
|
||||||
|
|
||||||
|
type keywordMaterialPageListRequest struct {
|
||||||
|
KeywordID int32 `form:"keyword_id" binding:"required"` // 意图关键字ID
|
||||||
|
Page int `form:"page"` // 当前页码,默认为第一页
|
||||||
|
PageSize int `form:"page_size"` // 每页返回的数据量
|
||||||
|
}
|
||||||
|
|
||||||
|
type keywordMaterialListData struct {
|
||||||
|
ID int32 `json:"id"` // 主键ID
|
||||||
|
KeywordID int32 `json:"keyword_id"` // 意图关键字ID
|
||||||
|
Type int32 `json:"type"` // 素材类型(1:文本 2:图片)
|
||||||
|
Content string `json:"content"` // 素材内容
|
||||||
|
IntervalSeconds int32 `json:"interval_seconds"` // 素材发送间隔时间(单位:秒)
|
||||||
|
CreatedUser string `json:"created_user"` // 创建人
|
||||||
|
CreatedAt string `json:"created_at"` // 创建时间
|
||||||
|
}
|
||||||
|
|
||||||
|
type keywordMaterialPageListResponse struct {
|
||||||
|
Page int `json:"page"` // 当前页码
|
||||||
|
PageSize int `json:"page_size"` // 每页返回的数据量
|
||||||
|
Total int64 `json:"total"` // 符合查询条件的总记录数
|
||||||
|
List []keywordMaterialListData `json:"list"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// KeywordMaterialPageList 获取意图关键字素材列表
|
||||||
|
// @Summary 获取意图关键字素材列表
|
||||||
|
// @Description 获取意图关键字素材列表
|
||||||
|
// @Tags 管理端.意图关键字
|
||||||
|
// @Accept json
|
||||||
|
// @Produce json
|
||||||
|
// @Param keyword_id query int true "意图关键字ID"
|
||||||
|
// @Param page query int true "当前页码" default(1)
|
||||||
|
// @Param page_size query int true "每页返回的数据量,最多 100 条" default(20)
|
||||||
|
// @Success 200 {object} keywordMaterialPageListResponse
|
||||||
|
// @Failure 400 {object} code.Failure
|
||||||
|
// @Router /admin/app/keyword/materials [get]
|
||||||
|
// @Security LoginVerifyToken
|
||||||
|
func (h *handler) KeywordMaterialPageList() core.HandlerFunc {
|
||||||
|
return func(ctx core.Context) {
|
||||||
|
req := new(keywordMaterialPageListRequest)
|
||||||
|
res := new(keywordMaterialPageListResponse)
|
||||||
|
if err := ctx.ShouldBindForm(req); err != nil {
|
||||||
|
ctx.AbortWithError(core.Error(
|
||||||
|
http.StatusBadRequest,
|
||||||
|
code.ParamBindError,
|
||||||
|
validation.Error(err)),
|
||||||
|
)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
if req.Page == 0 {
|
||||||
|
req.Page = 1
|
||||||
|
}
|
||||||
|
|
||||||
|
if req.PageSize == 0 {
|
||||||
|
req.PageSize = 20
|
||||||
|
}
|
||||||
|
|
||||||
|
if req.PageSize > 100 {
|
||||||
|
ctx.AbortWithError(core.Error(
|
||||||
|
http.StatusBadRequest,
|
||||||
|
code.ListKeywordMaterialError,
|
||||||
|
fmt.Sprintf("%s: 一次最多只能查询 100 条", code.Text(code.ListKeywordMaterialError)),
|
||||||
|
))
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
query := h.readDB.AppKeywordReply.WithContext(ctx.RequestContext())
|
||||||
|
query = query.Where(h.readDB.AppKeywordReply.KeywordID.Eq(req.KeywordID))
|
||||||
|
|
||||||
|
listQueryDB := query.Session(&gorm.Session{})
|
||||||
|
countQueryDB := query.Session(&gorm.Session{})
|
||||||
|
|
||||||
|
resultData, err := listQueryDB.
|
||||||
|
Order(h.readDB.AppKeywordReply.ID.Asc()).
|
||||||
|
Limit(req.PageSize).
|
||||||
|
Offset((req.Page - 1) * req.PageSize).
|
||||||
|
Find()
|
||||||
|
if err != nil {
|
||||||
|
ctx.AbortWithError(core.Error(
|
||||||
|
http.StatusBadRequest,
|
||||||
|
code.ListKeywordMaterialError,
|
||||||
|
fmt.Sprintf("%s:%s", code.Text(code.ListKeywordMaterialError), err.Error())),
|
||||||
|
)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
count, err := countQueryDB.Count()
|
||||||
|
if err != nil {
|
||||||
|
ctx.AbortWithError(core.Error(
|
||||||
|
http.StatusBadRequest,
|
||||||
|
code.ListKeywordMaterialError,
|
||||||
|
fmt.Sprintf("%s:%s", code.Text(code.ListKeywordMaterialError), err.Error())),
|
||||||
|
)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
res.Page = req.Page
|
||||||
|
res.PageSize = req.PageSize
|
||||||
|
res.Total = count
|
||||||
|
res.List = make([]keywordMaterialListData, len(resultData))
|
||||||
|
|
||||||
|
for k, v := range resultData {
|
||||||
|
res.List[k] = keywordMaterialListData{
|
||||||
|
ID: v.ID,
|
||||||
|
KeywordID: v.KeywordID,
|
||||||
|
Type: v.Type,
|
||||||
|
Content: v.Content,
|
||||||
|
IntervalSeconds: v.IntervalSeconds,
|
||||||
|
CreatedUser: v.CreatedUser,
|
||||||
|
CreatedAt: timeutil.FriendlyTime(v.CreatedAt),
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
ctx.Payload(res)
|
||||||
|
}
|
||||||
|
}
|
||||||
103
internal/api/keyword/keyword_material_modify.go
Normal file
103
internal/api/keyword/keyword_material_modify.go
Normal file
@ -0,0 +1,103 @@
|
|||||||
|
package keyword
|
||||||
|
|
||||||
|
import (
|
||||||
|
"fmt"
|
||||||
|
"net/http"
|
||||||
|
"strconv"
|
||||||
|
"time"
|
||||||
|
|
||||||
|
"mini-chat/internal/code"
|
||||||
|
"mini-chat/internal/pkg/core"
|
||||||
|
"mini-chat/internal/pkg/validation"
|
||||||
|
|
||||||
|
"gorm.io/gorm"
|
||||||
|
)
|
||||||
|
|
||||||
|
type modifyKeywordMaterialRequest struct {
|
||||||
|
Type int32 `json:"type" binding:"required"` // 素材类型(1:文本 2:图片)
|
||||||
|
Content string `json:"content" binding:"required"` // 素材内容
|
||||||
|
IntervalSeconds int32 `json:"interval_seconds" binding:"required"` // 发送间隔时间(单位:秒)
|
||||||
|
}
|
||||||
|
|
||||||
|
type modifyKeywordMaterialResponse struct {
|
||||||
|
Message string `json:"message"` // 提示信息
|
||||||
|
}
|
||||||
|
|
||||||
|
// ModifyKeywordMaterial 修改意图关键字素材
|
||||||
|
// @Summary 修改意图关键字素材
|
||||||
|
// @Description 修改意图关键字素材
|
||||||
|
// @Tags 管理端.意图关键字
|
||||||
|
// @Accept json
|
||||||
|
// @Produce json
|
||||||
|
// @Param id path string true "素材编号ID"
|
||||||
|
// @Param RequestBody body modifyKeywordMaterialRequest true "请求参数"
|
||||||
|
// @Success 200 {object} modifyKeywordMaterialResponse
|
||||||
|
// @Failure 400 {object} code.Failure
|
||||||
|
// @Router /admin/app/keyword/material/{id} [put]
|
||||||
|
// @Security LoginVerifyToken
|
||||||
|
func (h *handler) ModifyKeywordMaterial() core.HandlerFunc {
|
||||||
|
return func(ctx core.Context) {
|
||||||
|
req := new(modifyKeywordMaterialRequest)
|
||||||
|
res := new(modifyKeywordMaterialResponse)
|
||||||
|
if err := ctx.ShouldBindJSON(req); err != nil {
|
||||||
|
ctx.AbortWithError(core.Error(
|
||||||
|
http.StatusBadRequest,
|
||||||
|
code.ParamBindError,
|
||||||
|
validation.Error(err)),
|
||||||
|
)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
ID, err := strconv.Atoi(ctx.Param("id"))
|
||||||
|
if err != nil {
|
||||||
|
ctx.AbortWithError(core.Error(
|
||||||
|
http.StatusBadRequest,
|
||||||
|
code.ParamBindError,
|
||||||
|
"未传递编号ID。"),
|
||||||
|
)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
info, err := h.readDB.AppKeywordReply.WithContext(ctx.RequestContext()).
|
||||||
|
Where(h.readDB.AppKeywordReply.ID.Eq(int32(ID))).
|
||||||
|
First()
|
||||||
|
if err != nil && err != gorm.ErrRecordNotFound {
|
||||||
|
ctx.AbortWithError(core.Error(
|
||||||
|
http.StatusBadRequest,
|
||||||
|
code.ModifyKeywordMaterialError,
|
||||||
|
fmt.Sprintf("%s: %s", code.Text(code.ModifyKeywordMaterialError), err.Error())),
|
||||||
|
)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
if info == nil {
|
||||||
|
ctx.AbortWithError(core.Error(
|
||||||
|
http.StatusBadRequest,
|
||||||
|
code.ModifyKeywordMaterialError,
|
||||||
|
fmt.Sprintf("%s: 意图关键字素材编号(%d)不存在。", code.Text(code.ModifyKeywordMaterialError), ID)),
|
||||||
|
)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
updateData := map[string]interface{}{
|
||||||
|
"type": req.Type,
|
||||||
|
"content": req.Content,
|
||||||
|
"interval_seconds": req.IntervalSeconds,
|
||||||
|
"updated_user": ctx.SessionUserInfo().UserName,
|
||||||
|
"updated_at": time.Now(),
|
||||||
|
}
|
||||||
|
|
||||||
|
if _, err := h.writeDB.AppKeywordReply.WithContext(ctx.RequestContext()).
|
||||||
|
Where(h.writeDB.AppKeywordReply.ID.Eq(int32(ID))).
|
||||||
|
Updates(updateData); err != nil {
|
||||||
|
ctx.AbortWithError(core.Error(
|
||||||
|
http.StatusBadRequest,
|
||||||
|
code.ModifyKeywordMaterialError,
|
||||||
|
fmt.Sprintf("%s: %s", code.Text(code.ModifyKeywordMaterialError), err.Error())),
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
res.Message = "操作成功"
|
||||||
|
ctx.Payload(res)
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -27,10 +27,14 @@ const (
|
|||||||
ListAppError = 20203
|
ListAppError = 20203
|
||||||
ModifyAppError = 20204
|
ModifyAppError = 20204
|
||||||
|
|
||||||
CreateKeywordError = 20301
|
CreateKeywordError = 20301
|
||||||
ListKeywordError = 20302
|
ListKeywordError = 20302
|
||||||
ModifyKeywordError = 20303
|
ModifyKeywordError = 20303
|
||||||
DeleteKeywordError = 20304
|
DeleteKeywordError = 20304
|
||||||
|
CreateKeywordMaterialError = 20305
|
||||||
|
ListKeywordMaterialError = 20306
|
||||||
|
ModifyKeywordMaterialError = 20307
|
||||||
|
DeleteKeywordMaterialError = 20308
|
||||||
)
|
)
|
||||||
|
|
||||||
func Text(code int) string {
|
func Text(code int) string {
|
||||||
|
|||||||
@ -13,8 +13,12 @@ var zhCNText = map[int]string{
|
|||||||
ListAppError: "获取小程序列表失败",
|
ListAppError: "获取小程序列表失败",
|
||||||
ModifyAppError: "修改小程序失败",
|
ModifyAppError: "修改小程序失败",
|
||||||
|
|
||||||
CreateKeywordError: "创建关键字失败",
|
CreateKeywordError: "创建关键字失败",
|
||||||
DeleteKeywordError: "删除关键字失败",
|
DeleteKeywordError: "删除关键字失败",
|
||||||
ListKeywordError: "获取关键字列表失败",
|
ListKeywordError: "获取关键字列表失败",
|
||||||
ModifyKeywordError: "修改关键字失败",
|
ModifyKeywordError: "修改关键字失败",
|
||||||
|
CreateKeywordMaterialError: "创建关键字素材失败",
|
||||||
|
DeleteKeywordMaterialError: "删除关键字素材失败",
|
||||||
|
ListKeywordMaterialError: "获取关键字素材列表失败",
|
||||||
|
ModifyKeywordMaterialError: "修改关键字素材失败",
|
||||||
}
|
}
|
||||||
|
|||||||
@ -65,10 +65,13 @@ func NewHTTPMux(logger logger.CustomLogger, db mysql.Repo, cron cron.Server) (co
|
|||||||
adminAuthApiRouter.PUT("/app/:id", appHandler.ModifyApp()) // 修改小程序
|
adminAuthApiRouter.PUT("/app/:id", appHandler.ModifyApp()) // 修改小程序
|
||||||
adminAuthApiRouter.GET("/apps", appHandler.PageList()) // 小程序列表
|
adminAuthApiRouter.GET("/apps", appHandler.PageList()) // 小程序列表
|
||||||
|
|
||||||
adminAuthApiRouter.POST("/app/keyword", keywordHandler.CreateKeyword()) // 添加意图关键字
|
adminAuthApiRouter.POST("/app/keyword", keywordHandler.CreateKeyword()) // 添加意图关键字
|
||||||
adminAuthApiRouter.PUT("/app/keyword/:id", keywordHandler.ModifyKeyword()) // 修改意图关键字
|
adminAuthApiRouter.PUT("/app/keyword/:id", keywordHandler.ModifyKeyword()) // 修改意图关键字
|
||||||
adminAuthApiRouter.DELETE("/app/keyword/:id", keywordHandler.DeleteKeyword()) // 删除意图关键字
|
adminAuthApiRouter.DELETE("/app/keyword/:id", keywordHandler.DeleteKeyword()) // 删除意图关键字
|
||||||
adminAuthApiRouter.GET("/app/keywords", keywordHandler.KeywordPageList()) // 获取意图关键字列表
|
adminAuthApiRouter.GET("/app/keywords", keywordHandler.KeywordPageList()) // 获取意图关键字列表
|
||||||
|
adminAuthApiRouter.POST("/app/keyword/material/:id", keywordHandler.CreateKeywordMaterial()) // 配置意图关键字素材
|
||||||
|
adminAuthApiRouter.PUT("/app/keyword/material/:id", keywordHandler.ModifyKeywordMaterial()) // 修改意图关键字素材
|
||||||
|
adminAuthApiRouter.GET("/app/keyword/materials", keywordHandler.KeywordMaterialPageList()) // 获取意图关键字素材列表
|
||||||
}
|
}
|
||||||
|
|
||||||
return mux, nil
|
return mux, nil
|
||||||
|
|||||||
9
internal/services/material.go
Normal file
9
internal/services/material.go
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
package services
|
||||||
|
|
||||||
|
type TextMessage struct {
|
||||||
|
Message string `json:"message"`
|
||||||
|
}
|
||||||
|
|
||||||
|
type PictureMessage struct {
|
||||||
|
ImgURL string `json:"img_url"`
|
||||||
|
}
|
||||||
Loading…
x
Reference in New Issue
Block a user