Compare commits
16 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
a08966d454 | ||
|
|
24ddb1befe | ||
|
|
bb58b5090b | ||
|
|
6df5816867 | ||
|
|
e58c683b37 | ||
|
|
534fc904a2 | ||
|
|
e8bca43992 | ||
|
|
f8f2d384f4 | ||
|
|
28f08085ee | ||
|
|
d802cbd6ca | ||
|
|
5b187ff026 | ||
|
|
e1c2eb78aa | ||
|
|
3bc33f1d64 | ||
|
|
bc5adf26d9 | ||
|
|
23ca86e75c | ||
|
|
1d41fc5a6b |
@@ -20,7 +20,7 @@ type changeStatusParam struct {
|
|||||||
// @description: 修改使用的AI模型用的参数集
|
// @description: 修改使用的AI模型用的参数集
|
||||||
type changeUseAiModelParam struct {
|
type changeUseAiModelParam struct {
|
||||||
WxId string `json:"wxid" binding:"required"` // 群Id或微信Id
|
WxId string `json:"wxid" binding:"required"` // 群Id或微信Id
|
||||||
Model string `json:"dto"` // 模型代码
|
Model string `json:"model"` // 模型代码
|
||||||
}
|
}
|
||||||
|
|
||||||
// autoClearMembers
|
// autoClearMembers
|
||||||
|
|||||||
15
app/group.go
15
app/group.go
@@ -25,6 +25,19 @@ func GetGroupUsers(ctx *gin.Context) {
|
|||||||
ctx.String(http.StatusInternalServerError, "查询失败: %s", err.Error())
|
ctx.String(http.StatusInternalServerError, "查询失败: %s", err.Error())
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
result := map[string]any{
|
||||||
|
"records": records,
|
||||||
|
}
|
||||||
|
// 循环数据,统计健在成员
|
||||||
|
var isOkCount int
|
||||||
|
for _, record := range records {
|
||||||
|
if record.IsMember {
|
||||||
|
isOkCount++
|
||||||
|
}
|
||||||
|
}
|
||||||
|
result["isOkCount"] = isOkCount
|
||||||
|
|
||||||
// 暂时先就这样写着,跑通了再改
|
// 暂时先就这样写着,跑通了再改
|
||||||
ctx.JSON(http.StatusOK, records)
|
ctx.JSON(http.StatusOK, result)
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -33,6 +33,10 @@ func Plugin() {
|
|||||||
dispatcher.RegisterHandler(func(m *dto.Message) bool {
|
dispatcher.RegisterHandler(func(m *dto.Message) bool {
|
||||||
return m.Type == types.MsgTypeSys
|
return m.Type == types.MsgTypeSys
|
||||||
}, plugins.NotifyRemoveFromChatroom)
|
}, plugins.NotifyRemoveFromChatroom)
|
||||||
|
// 响应好友添加成功消息
|
||||||
|
dispatcher.RegisterHandler(func(m *dto.Message) bool {
|
||||||
|
return m.Type == types.MsgTypeSys
|
||||||
|
}, plugins.ReplyNewFriend)
|
||||||
|
|
||||||
// 私聊指令消息
|
// 私聊指令消息
|
||||||
dispatcher.RegisterHandler(func(m *dto.Message) bool {
|
dispatcher.RegisterHandler(func(m *dto.Message) bool {
|
||||||
|
|||||||
@@ -4,6 +4,7 @@ import (
|
|||||||
"fmt"
|
"fmt"
|
||||||
"go-wechat/config"
|
"go-wechat/config"
|
||||||
"go-wechat/plugin"
|
"go-wechat/plugin"
|
||||||
|
"go-wechat/service"
|
||||||
"go-wechat/utils"
|
"go-wechat/utils"
|
||||||
"strings"
|
"strings"
|
||||||
)
|
)
|
||||||
@@ -31,12 +32,23 @@ func NotifyInvitationJoinGroup(m *plugin.MessageContext) {
|
|||||||
// @description: 被移除群聊通知到配置用户
|
// @description: 被移除群聊通知到配置用户
|
||||||
// @param m
|
// @param m
|
||||||
func NotifyRemoveFromChatroom(m *plugin.MessageContext) {
|
func NotifyRemoveFromChatroom(m *plugin.MessageContext) {
|
||||||
|
// 如果是被移出群聊,推送到配置的用户
|
||||||
if strings.HasPrefix(m.Content, "你被\"") && strings.HasSuffix(m.Content, "\"移出群聊") {
|
if strings.HasPrefix(m.Content, "你被\"") && strings.HasSuffix(m.Content, "\"移出群聊") {
|
||||||
// 如果是被移出群聊,推送到配置的用户
|
// 调用一下退出群聊接口,防止被移出后还能从好友列表接口拉到相关信息
|
||||||
|
utils.QuitChatroom(m.FromUser, 0)
|
||||||
|
|
||||||
|
// 取出群名称
|
||||||
|
groupInfo, err := service.GetFriendInfoById(m.FromUser)
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
// 组装消息
|
||||||
|
msg := fmt.Sprintf("#移除群聊提醒\n\n群Id: %s\n群名称: %s\n事件: %s", m.FromUser, groupInfo.Nickname, m.Content)
|
||||||
|
|
||||||
for _, user := range config.Conf.System.NewFriendNotify.ToUser {
|
for _, user := range config.Conf.System.NewFriendNotify.ToUser {
|
||||||
if user != "" {
|
if user != "" {
|
||||||
// 发送一条新消息
|
// 发送一条新消息
|
||||||
utils.SendMessage(user, "", m.Content, 0)
|
utils.SendMessage(user, "", msg, 0)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
18
plugin/plugins/systemmessgae.go
Normal file
18
plugin/plugins/systemmessgae.go
Normal file
@@ -0,0 +1,18 @@
|
|||||||
|
package plugins
|
||||||
|
|
||||||
|
import (
|
||||||
|
"go-wechat/plugin"
|
||||||
|
"go-wechat/utils"
|
||||||
|
"strings"
|
||||||
|
)
|
||||||
|
|
||||||
|
// ReplyNewFriend
|
||||||
|
// @description: 响应好友添加成功消息
|
||||||
|
// @param m
|
||||||
|
func ReplyNewFriend(m *plugin.MessageContext) {
|
||||||
|
isNewFriend := strings.HasPrefix(m.Content, "你已添加了") && strings.HasSuffix(m.Content, ",现在可以开始聊天了。")
|
||||||
|
isNewChatroom := strings.Contains(m.Content, "\"邀请你加入了群聊,群聊参与人还有:")
|
||||||
|
if isNewFriend || isNewChatroom {
|
||||||
|
utils.SendMessage(m.FromUser, m.GroupUser, "AI正在初始化,请稍等几分钟,初始化完成之后我将主动告知您。", 0)
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -24,7 +24,7 @@ func Init(g *gin.Engine) {
|
|||||||
// 接口
|
// 接口
|
||||||
api := g.Group("/api")
|
api := g.Group("/api")
|
||||||
api.PUT("/ai/status", app.ChangeEnableAiStatus) // 修改是否开启AI状态
|
api.PUT("/ai/status", app.ChangeEnableAiStatus) // 修改是否开启AI状态
|
||||||
api.POST("/ai/dto", app.ChangeUseAiModel) // 修改使用的AI模型
|
api.POST("/ai/model", app.ChangeUseAiModel) // 修改使用的AI模型
|
||||||
api.POST("/ai/assistant", app.ChangeUseAiAssistant) // 修改使用的AI助手
|
api.POST("/ai/assistant", app.ChangeUseAiAssistant) // 修改使用的AI助手
|
||||||
api.PUT("/welcome/status", app.ChangeEnableWelcomeStatus) // 修改是否开启迎新状态
|
api.PUT("/welcome/status", app.ChangeEnableWelcomeStatus) // 修改是否开启迎新状态
|
||||||
api.PUT("/command/status", app.ChangeEnableCommandStatus) // 修改是否开启指令状态
|
api.PUT("/command/status", app.ChangeEnableCommandStatus) // 修改是否开启指令状态
|
||||||
|
|||||||
@@ -37,6 +37,16 @@ func GetAllFriend() (friends, groups []vo.FriendItem, err error) {
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// GetFriendInfoById
|
||||||
|
// @description: 通过wxId获取好友信息
|
||||||
|
// @param wxId
|
||||||
|
// @return ent
|
||||||
|
// @return err
|
||||||
|
func GetFriendInfoById(wxId string) (ent entity.Friend, err error) {
|
||||||
|
err = client.MySQL.Where("wxid = ?", wxId).First(&ent).Error
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
// GetAllEnableAI
|
// GetAllEnableAI
|
||||||
// @description: 取出所有启用了AI的好友或群组
|
// @description: 取出所有启用了AI的好友或群组
|
||||||
// @return []entity.Friend
|
// @return []entity.Friend
|
||||||
|
|||||||
@@ -158,3 +158,33 @@ func DeleteGroupMember(chatRoomId, memberIds string, retryCount int, isSure bool
|
|||||||
DeleteGroupMember(chatRoomId, memberIds, 5, true)
|
DeleteGroupMember(chatRoomId, memberIds, 5, true)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// QuitChatroom
|
||||||
|
// @description: 退出群聊
|
||||||
|
// @param chatRoomId string 群Id
|
||||||
|
// @param retryCount int 重试次数
|
||||||
|
func QuitChatroom(chatRoomId string, retryCount int) {
|
||||||
|
if retryCount > 5 {
|
||||||
|
log.Printf("重试五次失败,停止发送")
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
// 组装参数
|
||||||
|
param := map[string]any{
|
||||||
|
"chatRoomId": chatRoomId, // 群Id
|
||||||
|
}
|
||||||
|
pbs, _ := json.Marshal(param)
|
||||||
|
|
||||||
|
res := resty.New()
|
||||||
|
resp, err := res.R().
|
||||||
|
SetHeader("Content-Type", "application/json;chartset=utf-8").
|
||||||
|
SetBody(string(pbs)).
|
||||||
|
Post(config.Conf.Wechat.GetURL("/api/quitChatRoom"))
|
||||||
|
if err != nil {
|
||||||
|
log.Printf("退群失败: %s", err.Error())
|
||||||
|
// 休眠五秒后重新发送
|
||||||
|
time.Sleep(5 * time.Second)
|
||||||
|
QuitChatroom(chatRoomId, retryCount+1)
|
||||||
|
}
|
||||||
|
log.Printf("退群结果: %s", resp.String())
|
||||||
|
}
|
||||||
|
|||||||
@@ -1,6 +1,9 @@
|
|||||||
<dialog id="groupUserModal" class="modal">
|
<dialog id="groupUserModal" class="modal">
|
||||||
<div class="modal-box w-11/12 max-w-7xl">
|
<div class="modal-box w-11/12 max-w-7xl">
|
||||||
<h3 class="font-bold text-lg" id="groupUserModalName">我是群名称</h3>
|
<div class="flex">
|
||||||
|
<h3 class="font-bold text-lg" id="groupUserModalName">我是群名称</h3>
|
||||||
|
<h3 class="font-bold text-lg ml-5" id="groupUserCount">(健在成员100人)</h3>
|
||||||
|
</div>
|
||||||
<div class="divider divider-warning">成员列表</div>
|
<div class="divider divider-warning">成员列表</div>
|
||||||
<table class="table table-zebra">
|
<table class="table table-zebra">
|
||||||
<thead>
|
<thead>
|
||||||
|
|||||||
@@ -2,82 +2,82 @@ console.log("打开首页")
|
|||||||
|
|
||||||
// 改变AI开启状态
|
// 改变AI开启状态
|
||||||
function changeAiEnableStatus(wxId) {
|
function changeAiEnableStatus(wxId) {
|
||||||
// console.log("修改AI开启状态: ", wxId)
|
// console.log("修改AI开启状态: ", wxId)
|
||||||
|
|
||||||
axios({
|
axios({
|
||||||
method: 'put',
|
method: 'put',
|
||||||
url: '/api/ai/status',
|
url: '/api/ai/status',
|
||||||
data: {
|
data: {
|
||||||
wxId: wxId
|
wxId: wxId
|
||||||
}
|
}
|
||||||
}).then(function (response) {
|
}).then(function (response) {
|
||||||
console.log(`返回结果: ${JSON.stringify(response)}`);
|
console.log(`返回结果: ${JSON.stringify(response)}`);
|
||||||
alert(`${response.data}`)
|
alert(`${response.data}`)
|
||||||
}).catch(function (error) {
|
}).catch(function (error) {
|
||||||
console.log(`错误信息: ${error}`);
|
console.log(`错误信息: ${error}`);
|
||||||
alert("修改失败")
|
alert("修改失败")
|
||||||
}).finally(function () {
|
}).finally(function () {
|
||||||
window.location.reload();
|
window.location.reload();
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
// 修改水群排行榜状态
|
// 修改水群排行榜状态
|
||||||
function changeGroupRankEnableStatus(wxId) {
|
function changeGroupRankEnableStatus(wxId) {
|
||||||
// console.log("修改水群排行榜开启状态: ", wxId)
|
// console.log("修改水群排行榜开启状态: ", wxId)
|
||||||
axios({
|
axios({
|
||||||
method: 'put',
|
method: 'put',
|
||||||
url: '/api/grouprank/status',
|
url: '/api/grouprank/status',
|
||||||
data: {
|
data: {
|
||||||
wxId: wxId
|
wxId: wxId
|
||||||
}
|
}
|
||||||
}).then(function (response) {
|
}).then(function (response) {
|
||||||
console.log(`返回结果: ${JSON.stringify(response)}`);
|
console.log(`返回结果: ${JSON.stringify(response)}`);
|
||||||
alert(`${response.data}`)
|
alert(`${response.data}`)
|
||||||
}).catch(function (error) {
|
}).catch(function (error) {
|
||||||
console.log(`错误信息: ${error}`);
|
console.log(`错误信息: ${error}`);
|
||||||
alert("修改失败")
|
alert("修改失败")
|
||||||
}).finally(function () {
|
}).finally(function () {
|
||||||
window.location.reload();
|
window.location.reload();
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
// 修改水群排行榜状态
|
// 修改水群排行榜状态
|
||||||
function changeSummaryEnableStatus(wxId) {
|
function changeSummaryEnableStatus(wxId) {
|
||||||
// console.log("修改聊天记录总结开启状态: ", wxId)
|
// console.log("修改聊天记录总结开启状态: ", wxId)
|
||||||
axios({
|
axios({
|
||||||
method: 'put',
|
method: 'put',
|
||||||
url: '/api/summary/status',
|
url: '/api/summary/status',
|
||||||
data: {
|
data: {
|
||||||
wxId: wxId
|
wxId: wxId
|
||||||
}
|
}
|
||||||
}).then(function (response) {
|
}).then(function (response) {
|
||||||
console.log(`返回结果: ${JSON.stringify(response)}`);
|
console.log(`返回结果: ${JSON.stringify(response)}`);
|
||||||
alert(`${response.data}`)
|
alert(`${response.data}`)
|
||||||
}).catch(function (error) {
|
}).catch(function (error) {
|
||||||
console.log(`错误信息: ${error}`);
|
console.log(`错误信息: ${error}`);
|
||||||
alert("修改失败")
|
alert("修改失败")
|
||||||
}).finally(function () {
|
}).finally(function () {
|
||||||
window.location.reload();
|
window.location.reload();
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
// 修改欢迎语开启状态
|
// 修改欢迎语开启状态
|
||||||
function changeWelcomeEnableStatus(wxId) {
|
function changeWelcomeEnableStatus(wxId) {
|
||||||
axios({
|
axios({
|
||||||
method: 'put',
|
method: 'put',
|
||||||
url: '/api/welcome/status',
|
url: '/api/welcome/status',
|
||||||
data: {
|
data: {
|
||||||
wxId: wxId
|
wxId: wxId
|
||||||
}
|
}
|
||||||
}).then(function (response) {
|
}).then(function (response) {
|
||||||
console.log(`返回结果: ${JSON.stringify(response)}`);
|
console.log(`返回结果: ${JSON.stringify(response)}`);
|
||||||
alert(`${response.data}`)
|
alert(`${response.data}`)
|
||||||
}).catch(function (error) {
|
}).catch(function (error) {
|
||||||
console.log(`错误信息: ${error}`);
|
console.log(`错误信息: ${error}`);
|
||||||
alert("修改失败")
|
alert("修改失败")
|
||||||
}).finally(function () {
|
}).finally(function () {
|
||||||
window.location.reload();
|
window.location.reload();
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
// 修改用户新闻开启状态
|
// 修改用户新闻开启状态
|
||||||
@@ -101,117 +101,123 @@ function changeUserNewsStatus(wxId) {
|
|||||||
|
|
||||||
// 修改指令权限启用状态
|
// 修改指令权限启用状态
|
||||||
function changeCommandEnableStatus(wxId) {
|
function changeCommandEnableStatus(wxId) {
|
||||||
axios({
|
axios({
|
||||||
method: 'put',
|
method: 'put',
|
||||||
url: '/api/command/status',
|
url: '/api/command/status',
|
||||||
data: {
|
data: {
|
||||||
wxId: wxId
|
wxId: wxId
|
||||||
}
|
}
|
||||||
}).then(function (response) {
|
}).then(function (response) {
|
||||||
console.log(`返回结果: ${JSON.stringify(response)}`);
|
console.log(`返回结果: ${JSON.stringify(response)}`);
|
||||||
alert(`${response.data}`)
|
alert(`${response.data}`)
|
||||||
}).catch(function (error) {
|
}).catch(function (error) {
|
||||||
console.log(`错误信息: ${error}`);
|
console.log(`错误信息: ${error}`);
|
||||||
alert("修改失败")
|
alert("修改失败")
|
||||||
}).finally(function () {
|
}).finally(function () {
|
||||||
window.location.reload();
|
window.location.reload();
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
// 修改群成员是否参与排行榜状态
|
// 修改群成员是否参与排行榜状态
|
||||||
function changeUserGroupRankSkipStatus(groupId, userId) {
|
function changeUserGroupRankSkipStatus(groupId, userId) {
|
||||||
console.log("修改水群排行榜开启状态: ", groupId, userId)
|
console.log("修改水群排行榜开启状态: ", groupId, userId)
|
||||||
axios({
|
axios({
|
||||||
method: 'put',
|
method: 'put',
|
||||||
url: '/api/grouprank/skip',
|
url: '/api/grouprank/skip',
|
||||||
data: {
|
data: {
|
||||||
wxId: groupId,
|
wxId: groupId,
|
||||||
userId: userId
|
userId: userId
|
||||||
}
|
}
|
||||||
}).then(function (response) {
|
}).then(function (response) {
|
||||||
console.log(`返回结果: ${JSON.stringify(response)}`);
|
console.log(`返回结果: ${JSON.stringify(response)}`);
|
||||||
alert(`${response.data}`)
|
alert(`${response.data}`)
|
||||||
}).catch(function (error) {
|
}).catch(function (error) {
|
||||||
console.log(`错误信息: ${error}`);
|
console.log(`错误信息: ${error}`);
|
||||||
alert("修改失败")
|
alert("修改失败")
|
||||||
}).finally(function () {
|
}).finally(function () {
|
||||||
window.location.reload();
|
window.location.reload();
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
// 获取群成员列表
|
// 获取群成员列表
|
||||||
function getGroupUsers(groupId, groupName) {
|
function getGroupUsers(groupId, groupName) {
|
||||||
// 获取表格的tbody部分,以便稍后向其中添加行
|
// 获取表格的tbody部分,以便稍后向其中添加行
|
||||||
var tbody = document.getElementById("groupUsers");
|
var tbody = document.getElementById("groupUsers");
|
||||||
tbody.innerHTML = ""
|
tbody.innerHTML = ""
|
||||||
|
|
||||||
// 打开模态框
|
// 打开模态框
|
||||||
const modal = document.getElementById("groupUserModal");
|
const modal = document.getElementById("groupUserModal");
|
||||||
modal.showModal()
|
modal.showModal()
|
||||||
|
|
||||||
// 设置群名称
|
// 设置群名称
|
||||||
const groupNameTag = document.getElementById("groupUserModalName");
|
const groupNameTag = document.getElementById("groupUserModalName");
|
||||||
groupNameTag.innerHTML = '<span class="loading loading-dots loading-lg"></span>'
|
groupNameTag.innerHTML = '<span class="loading loading-dots loading-lg"></span>'
|
||||||
|
|
||||||
// 显示加载框
|
// 显示加载框
|
||||||
// const loading = document.getElementById("groupUserDataLoading");
|
// const loading = document.getElementById("groupUserDataLoading");
|
||||||
// loading.style.display = "block"
|
// loading.style.display = "block"
|
||||||
|
|
||||||
axios.get('/api/group/users', {
|
axios.get('/api/group/users', {
|
||||||
params: {
|
params: {
|
||||||
groupId: groupId
|
groupId: groupId
|
||||||
}
|
}
|
||||||
}).then(function (response) {
|
}).then(function (response) {
|
||||||
// console.log(`返回结果: ${JSON.stringify(response)}`);
|
// console.log(`返回结果: ${JSON.stringify(response.data)}`);
|
||||||
// 渲染群成员列表
|
// 渲染群成员列表
|
||||||
const groupUsers = response.data
|
const groupUsers = response.data.records;
|
||||||
// 循环渲染数据
|
const groupUserCount = response.data.isOkCount;
|
||||||
groupUsers.forEach((groupUser, i) => {
|
|
||||||
console.log(groupUser)
|
|
||||||
const { wxid, nickname, isMember, isAdmin, joinTime, lastActive, leaveTime, skipChatRank } = groupUser;
|
|
||||||
|
|
||||||
let row = tbody.insertRow(i);
|
// 设置成员总数
|
||||||
// Insert data into cells
|
const groupUserCountTag = document.getElementById("groupUserCount");
|
||||||
row.insertCell(0).innerHTML = wxid;
|
groupUserCountTag.innerHTML = `健在成员: ${groupUserCount}人`
|
||||||
row.insertCell(1).innerHTML = nickname;
|
|
||||||
row.insertCell(2).innerHTML = `<span class="inline-flex items-center rounded-md px-2 py-1 text-xs font-medium ring-1 ring-inset ${isMember ? 'bg-green-50 text-green-700 ring-green-600/20' : 'bg-red-50 text-red-700 ring-red-600/20'}">${isMember ? '是' : '否'}</span>`;
|
// 循环渲染数据
|
||||||
row.insertCell(3).innerHTML = `<span class="inline-flex items-center rounded-md px-2 py-1 text-xs font-medium ring-1 ring-inset ${isAdmin ? 'bg-green-50 text-green-700 ring-green-600/20' : 'bg-red-50 text-red-700 ring-red-600/20'}">${isAdmin ? '是' : '否'}</span>`;
|
groupUsers.forEach((groupUser, i) => {
|
||||||
row.insertCell(4).innerHTML = joinTime;
|
// console.log(groupUser)
|
||||||
row.insertCell(5).innerHTML = lastActive;
|
const {wxid, nickname, isMember, isAdmin, joinTime, lastActive, leaveTime, skipChatRank} = groupUser;
|
||||||
row.insertCell(6).innerHTML = leaveTime;
|
|
||||||
// row.insertCell(7).innerHTML = `<input type="checkbox" class="toggle toggle-error" ${skipChatRank ? 'checked' : ''} onclick="changeUserGroupRankSkipStatus('${groupId}', '${wxid}')" />`;
|
let row = tbody.insertRow(i);
|
||||||
row.insertCell(7).innerHTML = `<span class="inline-flex items-center rounded-md px-2 py-1 text-xs font-medium ring-1 ring-inset ${skipChatRank ? 'bg-green-50 text-green-700 ring-green-600/20' : 'bg-red-50 text-red-700 ring-red-600/20'}">${skipChatRank ? '是' : '否'}</span>`;
|
// Insert data into cells
|
||||||
});
|
row.insertCell(0).innerHTML = wxid;
|
||||||
}).catch(function (error) {
|
row.insertCell(1).innerHTML = nickname;
|
||||||
console.log(`错误信息: ${error}`);
|
row.insertCell(2).innerHTML = `<span class="inline-flex items-center rounded-md px-2 py-1 text-xs font-medium ring-1 ring-inset ${isMember ? 'bg-green-50 text-green-700 ring-green-600/20' : 'bg-red-50 text-red-700 ring-red-600/20'}">${isMember ? '是' : '否'}</span>`;
|
||||||
}).finally(function () {
|
row.insertCell(3).innerHTML = `<span class="inline-flex items-center rounded-md px-2 py-1 text-xs font-medium ring-1 ring-inset ${isAdmin ? 'bg-green-50 text-green-700 ring-green-600/20' : 'bg-red-50 text-red-700 ring-red-600/20'}">${isAdmin ? '是' : '否'}</span>`;
|
||||||
// 隐藏加载框
|
row.insertCell(4).innerHTML = joinTime;
|
||||||
// loading.style.display = "none"
|
row.insertCell(5).innerHTML = lastActive;
|
||||||
groupNameTag.innerHTML = groupName
|
row.insertCell(6).innerHTML = leaveTime;
|
||||||
})
|
// row.insertCell(7).innerHTML = `<input type="checkbox" class="toggle toggle-error" ${skipChatRank ? 'checked' : ''} onclick="changeUserGroupRankSkipStatus('${groupId}', '${wxid}')" />`;
|
||||||
|
row.insertCell(7).innerHTML = `<span class="inline-flex items-center rounded-md px-2 py-1 text-xs font-medium ring-1 ring-inset ${skipChatRank ? 'bg-green-50 text-green-700 ring-green-600/20' : 'bg-red-50 text-red-700 ring-red-600/20'}">${skipChatRank ? '是' : '否'}</span>`;
|
||||||
|
});
|
||||||
|
}).catch(function (error) {
|
||||||
|
console.log(`错误信息: ${error}`);
|
||||||
|
}).finally(function () {
|
||||||
|
// 隐藏加载框
|
||||||
|
// loading.style.display = "none"
|
||||||
|
groupNameTag.innerHTML = groupName
|
||||||
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
// AI模型变动
|
// AI模型变动
|
||||||
function aiModelChange(event, wxid) {
|
function aiModelChange(event, wxid) {
|
||||||
// 取出变动后的值
|
// 取出变动后的值
|
||||||
const modelStr = event.target.value;
|
const modelStr = event.target.value;
|
||||||
console.log("AI模型变动: ", wxid, modelStr)
|
console.log("AI模型变动: ", wxid, modelStr)
|
||||||
axios({
|
axios({
|
||||||
method: 'post',
|
method: 'post',
|
||||||
url: '/api/ai/model',
|
url: '/api/ai/model',
|
||||||
data: {
|
data: {
|
||||||
wxid: wxid,
|
wxid: wxid,
|
||||||
model: modelStr
|
model: modelStr
|
||||||
}
|
}
|
||||||
}).then(function (response) {
|
}).then(function (response) {
|
||||||
console.log(`返回结果: ${JSON.stringify(response)}`);
|
console.log(`返回结果: ${JSON.stringify(response)}`);
|
||||||
alert(`${response.data}`)
|
alert(`${response.data}`)
|
||||||
}).catch(function (error) {
|
}).catch(function (error) {
|
||||||
console.log(`错误信息: ${error}`);
|
console.log(`错误信息: ${error}`);
|
||||||
alert("修改失败")
|
alert("修改失败")
|
||||||
}).finally(function () {
|
}).finally(function () {
|
||||||
window.location.reload();
|
window.location.reload();
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
// AI角色变动
|
// AI角色变动
|
||||||
|
|||||||
Reference in New Issue
Block a user