mirror of
https://github.com/yangjian102621/geekai.git
synced 2025-09-17 16:56:38 +08:00
allow user to use chat role directly, no need to add to workspace
This commit is contained in:
parent
a6b9f57a50
commit
246b023624
@ -29,32 +29,11 @@ func NewChatRoleHandler(app *core.AppServer, db *gorm.DB) *ChatRoleHandler {
|
|||||||
|
|
||||||
// List 获取用户聊天应用列表
|
// List 获取用户聊天应用列表
|
||||||
func (h *ChatRoleHandler) List(c *gin.Context) {
|
func (h *ChatRoleHandler) List(c *gin.Context) {
|
||||||
all := h.GetBool(c, "all")
|
id := h.GetInt(c, "id", 0)
|
||||||
userId := h.GetLoginUserId(c)
|
userId := h.GetLoginUserId(c)
|
||||||
var roles []model.ChatRole
|
var roles []model.ChatRole
|
||||||
var roleVos = make([]vo.ChatRole, 0)
|
query := h.DB.Where("enable", true)
|
||||||
res := h.DB.Where("enable", true).Order("sort_num ASC").Find(&roles)
|
if userId > 0 {
|
||||||
if res.Error != nil {
|
|
||||||
resp.SUCCESS(c, roleVos)
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
// 获取所有角色
|
|
||||||
if userId == 0 || all {
|
|
||||||
// 转成 vo
|
|
||||||
var roleVos = make([]vo.ChatRole, 0)
|
|
||||||
for _, r := range roles {
|
|
||||||
var v vo.ChatRole
|
|
||||||
err := utils.CopyObject(r, &v)
|
|
||||||
if err == nil {
|
|
||||||
v.Id = r.Id
|
|
||||||
roleVos = append(roleVos, v)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
resp.SUCCESS(c, roleVos)
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
var user model.User
|
var user model.User
|
||||||
h.DB.First(&user, userId)
|
h.DB.First(&user, userId)
|
||||||
var roleKeys []string
|
var roleKeys []string
|
||||||
@ -63,11 +42,19 @@ func (h *ChatRoleHandler) List(c *gin.Context) {
|
|||||||
resp.ERROR(c, "角色解析失败!")
|
resp.ERROR(c, "角色解析失败!")
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
query = query.Where("marker IN ?", roleKeys)
|
||||||
for _, r := range roles {
|
|
||||||
if !utils.Contains(roleKeys, r.Key) {
|
|
||||||
continue
|
|
||||||
}
|
}
|
||||||
|
if id > 0 {
|
||||||
|
query = query.Or("id", id)
|
||||||
|
}
|
||||||
|
res := h.DB.Where("enable", true).Order("sort_num ASC").Find(&roles)
|
||||||
|
if res.Error != nil {
|
||||||
|
resp.ERROR(c, res.Error.Error())
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
var roleVos = make([]vo.ChatRole, 0)
|
||||||
|
for _, r := range roles {
|
||||||
var v vo.ChatRole
|
var v vo.ChatRole
|
||||||
err := utils.CopyObject(r, &v)
|
err := utils.CopyObject(r, &v)
|
||||||
if err == nil {
|
if err == nil {
|
||||||
|
@ -15,18 +15,13 @@
|
|||||||
<div class="info-text">{{ scope.item.hello_msg }}</div>
|
<div class="info-text">{{ scope.item.hello_msg }}</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="btn">
|
<div class="btn">
|
||||||
<div v-if="hasRole(scope.item.key)">
|
|
||||||
<el-button size="small" color="#21aa93" @click="useRole(scope.item)">使用</el-button>
|
<el-button size="small" color="#21aa93" @click="useRole(scope.item)">使用</el-button>
|
||||||
|
<el-tooltip effect="light" content="从工作区移除" placement="top" v-if="hasRole(scope.item.key)">
|
||||||
<el-button size="small" type="danger" @click="updateRole(scope.item,'remove')">移除</el-button>
|
<el-button size="small" type="danger" @click="updateRole(scope.item,'remove')">移除</el-button>
|
||||||
</div>
|
</el-tooltip>
|
||||||
<el-button v-else size="small"
|
<el-tooltip effect="light" content="添加到工作区" placement="top" v-else>
|
||||||
style="--el-color-primary:#009999"
|
<el-button size="small" style="--el-color-primary:#009999" @click="updateRole(scope.item, 'add')">添加</el-button>
|
||||||
@click="updateRole(scope.item, 'add')">
|
</el-tooltip>
|
||||||
<el-icon>
|
|
||||||
<Plus/>
|
|
||||||
</el-icon>
|
|
||||||
<span>添加应用</span>
|
|
||||||
</el-button>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
@ -77,7 +72,7 @@ const roles = ref([])
|
|||||||
const store = useSharedStore();
|
const store = useSharedStore();
|
||||||
|
|
||||||
onMounted(() => {
|
onMounted(() => {
|
||||||
httpGet("/api/role/list?all=true").then((res) => {
|
httpGet("/api/role/list").then((res) => {
|
||||||
const items = res.data
|
const items = res.data
|
||||||
// 处理 hello message
|
// 处理 hello message
|
||||||
for (let i = 0; i < items.length; i++) {
|
for (let i = 0; i < items.length; i++) {
|
||||||
|
@ -316,18 +316,17 @@ const initData = () => {
|
|||||||
chatList.value = res.data;
|
chatList.value = res.data;
|
||||||
allChats.value = res.data;
|
allChats.value = res.data;
|
||||||
}
|
}
|
||||||
|
if (router.currentRoute.value.query.role_id) {
|
||||||
|
roleId.value = parseInt(router.currentRoute.value.query.role_id)
|
||||||
|
}
|
||||||
// 加载模型
|
// 加载模型
|
||||||
httpGet('/api/model/list').then(res => {
|
httpGet('/api/model/list').then(res => {
|
||||||
models.value = res.data
|
models.value = res.data
|
||||||
modelID.value = models.value[0].id
|
modelID.value = models.value[0].id
|
||||||
|
|
||||||
// 加载角色列表
|
// 加载角色列表
|
||||||
httpGet(`/api/role/list`).then((res) => {
|
httpGet(`/api/role/list`,{id:roleId.value}).then((res) => {
|
||||||
roles.value = res.data;
|
roles.value = res.data;
|
||||||
if (router.currentRoute.value.query.role_id) {
|
if (!roleId.value) {
|
||||||
roleId.value = parseInt(router.currentRoute.value.query.role_id)
|
|
||||||
} else {
|
|
||||||
roleId.value = roles.value[0]['id']
|
roleId.value = roles.value[0]['id']
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -354,7 +353,7 @@ const initData = () => {
|
|||||||
})
|
})
|
||||||
|
|
||||||
// 加载模型
|
// 加载模型
|
||||||
httpGet('/api/model/list').then(res => {
|
httpGet('/api/model/list',{id:roleId.value}).then(res => {
|
||||||
models.value = res.data
|
models.value = res.data
|
||||||
modelID.value = models.value[0].id
|
modelID.value = models.value[0].id
|
||||||
}).catch(e => {
|
}).catch(e => {
|
||||||
|
@ -166,6 +166,12 @@ watch(() => store.showLoginDialog, (newValue) => {
|
|||||||
show.value = newValue
|
show.value = newValue
|
||||||
});
|
});
|
||||||
|
|
||||||
|
// 监听路由变化
|
||||||
|
router.beforeEach((to, from, next) => {
|
||||||
|
curPath.value = to.path
|
||||||
|
next();
|
||||||
|
});
|
||||||
|
|
||||||
if (curPath.value === "/external") {
|
if (curPath.value === "/external") {
|
||||||
curPath.value = router.currentRoute.value.query.url
|
curPath.value = router.currentRoute.value.query.url
|
||||||
}
|
}
|
||||||
|
@ -105,7 +105,7 @@ checkSession().then((user) => {
|
|||||||
loginUser.value = user
|
loginUser.value = user
|
||||||
isLogin.value = true
|
isLogin.value = true
|
||||||
// 加载角色列表
|
// 加载角色列表
|
||||||
httpGet(`/api/role/list?user_id=${user.id}`).then((res) => {
|
httpGet(`/api/role/list`).then((res) => {
|
||||||
if (res.data) {
|
if (res.data) {
|
||||||
const items = res.data
|
const items = res.data
|
||||||
for (let i = 0; i < items.length; i++) {
|
for (let i = 0; i < items.length; i++) {
|
||||||
|
@ -109,7 +109,7 @@ onMounted(() => {
|
|||||||
})
|
})
|
||||||
|
|
||||||
const fetchApps = () => {
|
const fetchApps = () => {
|
||||||
httpGet("/api/role/list?all=true").then((res) => {
|
httpGet("/api/role/list").then((res) => {
|
||||||
const items = res.data
|
const items = res.data
|
||||||
// 处理 hello message
|
// 处理 hello message
|
||||||
for (let i = 0; i < items.length; i++) {
|
for (let i = 0; i < items.length; i++) {
|
||||||
|
@ -407,9 +407,17 @@ const connect = () => {
|
|||||||
|
|
||||||
_socket.addEventListener('message', event => {
|
_socket.addEventListener('message', event => {
|
||||||
if (event.data instanceof Blob) {
|
if (event.data instanceof Blob) {
|
||||||
fetchRunningJobs()
|
const reader = new FileReader();
|
||||||
|
reader.readAsText(event.data, "UTF-8")
|
||||||
|
reader.onload = () => {
|
||||||
|
const message = String(reader.result)
|
||||||
|
if (message === "FINISH" || message === "FAIL") {
|
||||||
|
page.value = 1
|
||||||
fetchFinishJobs(1)
|
fetchFinishJobs(1)
|
||||||
}
|
}
|
||||||
|
fetchRunningJobs()
|
||||||
|
}
|
||||||
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
_socket.addEventListener('close', () => {
|
_socket.addEventListener('close', () => {
|
||||||
@ -456,7 +464,7 @@ const fetchFinishJobs = (page) => {
|
|||||||
httpGet(`/api/mj/jobs?finish=1&page=${page}&page_size=${pageSize.value}`).then(res => {
|
httpGet(`/api/mj/jobs?finish=1&page=${page}&page_size=${pageSize.value}`).then(res => {
|
||||||
const jobs = res.data
|
const jobs = res.data
|
||||||
for (let i = 0; i < jobs.length; i++) {
|
for (let i = 0; i < jobs.length; i++) {
|
||||||
if (jobs[i].progress === -1) {
|
if (jobs[i].progress === 101) {
|
||||||
showNotify({
|
showNotify({
|
||||||
message: `任务ID:${jobs[i]['task_id']} 原因:${jobs[i]['err_msg']}`,
|
message: `任务ID:${jobs[i]['task_id']} 原因:${jobs[i]['err_msg']}`,
|
||||||
type: 'danger',
|
type: 'danger',
|
||||||
@ -479,7 +487,7 @@ const fetchFinishJobs = (page) => {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (jobs[i].type === 'image' || jobs[i].type === 'variation') {
|
if ((jobs[i].type === 'image' || jobs[i].type === 'variation') && jobs[i].progress === 100){
|
||||||
jobs[i]['can_opt'] = true
|
jobs[i]['can_opt'] = true
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user