dev #12
@ -85,6 +85,29 @@ func ChangeEnableWelcomeStatus(ctx *gin.Context) {
|
|||||||
ctx.String(http.StatusOK, "操作成功")
|
ctx.String(http.StatusOK, "操作成功")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// ChangeEnableCommandStatus
|
||||||
|
// @description: 修改是否开启指令
|
||||||
|
// @param ctx
|
||||||
|
func ChangeEnableCommandStatus(ctx *gin.Context) {
|
||||||
|
var p changeStatusParam
|
||||||
|
if err := ctx.ShouldBindJSON(&p); err != nil {
|
||||||
|
ctx.String(http.StatusBadRequest, "参数错误")
|
||||||
|
return
|
||||||
|
}
|
||||||
|
log.Printf("待修改的群Id:%s", p.WxId)
|
||||||
|
|
||||||
|
err := client.MySQL.Model(&entity.Friend{}).
|
||||||
|
Where("wxid = ?", p.WxId).
|
||||||
|
Update("`enable_command`", gorm.Expr(" !`enable_command`")).Error
|
||||||
|
if err != nil {
|
||||||
|
log.Printf("修改指令启用状态失败:%s", err)
|
||||||
|
ctx.String(http.StatusInternalServerError, "操作失败: %s", err)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
ctx.String(http.StatusOK, "操作成功")
|
||||||
|
}
|
||||||
|
|
||||||
// ChangeSkipGroupRankStatus
|
// ChangeSkipGroupRankStatus
|
||||||
// @description: 修改是否跳过水群排行榜
|
// @description: 修改是否跳过水群排行榜
|
||||||
// @param ctx
|
// @param ctx
|
||||||
|
@ -31,6 +31,7 @@ type GroupUser struct {
|
|||||||
HeadImage string `json:"headImage"` // 头像
|
HeadImage string `json:"headImage"` // 头像
|
||||||
Nickname string `json:"nickname"` // 昵称
|
Nickname string `json:"nickname"` // 昵称
|
||||||
IsMember bool `json:"isMember" gorm:"type:tinyint(1) default 0 not null"` // 是否群成员
|
IsMember bool `json:"isMember" gorm:"type:tinyint(1) default 0 not null"` // 是否群成员
|
||||||
|
IsAdmin bool `json:"isAdmin" gorm:"type:tinyint(1) default 0 not null"` // 是否群主
|
||||||
JoinTime time.Time `json:"joinTime"` // 加入时间
|
JoinTime time.Time `json:"joinTime"` // 加入时间
|
||||||
LeaveTime *time.Time `json:"leaveTime"` // 离开时间
|
LeaveTime *time.Time `json:"leaveTime"` // 离开时间
|
||||||
SkipChatRank bool `json:"skipChatRank" gorm:"type:tinyint(1) default 0 not null"` // 是否跳过聊天排行
|
SkipChatRank bool `json:"skipChatRank" gorm:"type:tinyint(1) default 0 not null"` // 是否跳过聊天排行
|
||||||
|
@ -23,6 +23,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.PUT("/welcome/status", app.ChangeEnableWelcomeStatus) // 修改是否开启迎新状态
|
api.PUT("/welcome/status", app.ChangeEnableWelcomeStatus) // 修改是否开启迎新状态
|
||||||
|
api.PUT("/command/status", app.ChangeEnableCommandStatus) // 修改是否开启指令状态
|
||||||
api.PUT("/grouprank/status", app.ChangeEnableGroupRankStatus) // 修改是否开启水群排行榜状态
|
api.PUT("/grouprank/status", app.ChangeEnableGroupRankStatus) // 修改是否开启水群排行榜状态
|
||||||
api.PUT("/grouprank/skip", app.ChangeSkipGroupRankStatus) // 修改是否跳过水群排行榜状态
|
api.PUT("/grouprank/skip", app.ChangeSkipGroupRankStatus) // 修改是否跳过水群排行榜状态
|
||||||
api.GET("/group/users", app.GetGroupUsers) // 获取群成员列表
|
api.GET("/group/users", app.GetGroupUsers) // 获取群成员列表
|
||||||
|
@ -155,6 +155,7 @@ func syncGroupUsers(tx *gorm.DB, gid string) {
|
|||||||
Nickname: cp.Nickname,
|
Nickname: cp.Nickname,
|
||||||
Wxid: cp.Wxid,
|
Wxid: cp.Wxid,
|
||||||
IsMember: true,
|
IsMember: true,
|
||||||
|
IsAdmin: wxid == baseResp.Data.Admin,
|
||||||
JoinTime: time.Now().Local(),
|
JoinTime: time.Now().Local(),
|
||||||
}).Error
|
}).Error
|
||||||
if err != nil {
|
if err != nil {
|
||||||
@ -168,6 +169,7 @@ func syncGroupUsers(tx *gorm.DB, gid string) {
|
|||||||
"head_image": cp.HeadImage,
|
"head_image": cp.HeadImage,
|
||||||
"nickname": cp.Nickname,
|
"nickname": cp.Nickname,
|
||||||
"is_member": true,
|
"is_member": true,
|
||||||
|
"is_admin": wxid == baseResp.Data.Admin,
|
||||||
"leave_time": nil,
|
"leave_time": nil,
|
||||||
}
|
}
|
||||||
err = tx.Model(&entity.GroupUser{}).Where("group_id = ?", gid).Where("wxid = ?", wxid).Updates(pm).Error
|
err = tx.Model(&entity.GroupUser{}).Where("group_id = ?", gid).Where("wxid = ?", wxid).Updates(pm).Error
|
||||||
|
@ -37,6 +37,7 @@
|
|||||||
<th>最后活跃时间</th>
|
<th>最后活跃时间</th>
|
||||||
<th>是否在通讯录</th>
|
<th>是否在通讯录</th>
|
||||||
<th>是否启用AI</th>
|
<th>是否启用AI</th>
|
||||||
|
<th>是否启用指令</th>
|
||||||
</tr>
|
</tr>
|
||||||
</thead>
|
</thead>
|
||||||
<tbody>
|
<tbody>
|
||||||
@ -67,6 +68,14 @@
|
|||||||
<label class="swap swap-flip {{ checkSwap .EnableAi }}">
|
<label class="swap swap-flip {{ checkSwap .EnableAi }}">
|
||||||
<input type="checkbox" onclick="changeAiEnableStatus({{.Wxid}})"/>
|
<input type="checkbox" onclick="changeAiEnableStatus({{.Wxid}})"/>
|
||||||
|
|
||||||
|
<div class="swap-on">✔️已启用</div>
|
||||||
|
<div class="swap-off">❌已禁用</div>
|
||||||
|
</label>
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
<label class="swap swap-flip {{ checkSwap .EnableCommand }}">
|
||||||
|
<input type="checkbox" onclick="changeCommandEnableStatus({{.Wxid}})"/>
|
||||||
|
|
||||||
<div class="swap-on">✔️已启用</div>
|
<div class="swap-on">✔️已启用</div>
|
||||||
<div class="swap-off">❌已禁用</div>
|
<div class="swap-off">❌已禁用</div>
|
||||||
</label>
|
</label>
|
||||||
@ -91,6 +100,7 @@
|
|||||||
<th>是否启用AI</th>
|
<th>是否启用AI</th>
|
||||||
<th>是否启用水群排行榜</th>
|
<th>是否启用水群排行榜</th>
|
||||||
<th>是否启用迎新</th>
|
<th>是否启用迎新</th>
|
||||||
|
<th>是否启用指令</th>
|
||||||
<th>操作</th>
|
<th>操作</th>
|
||||||
</tr>
|
</tr>
|
||||||
</thead>
|
</thead>
|
||||||
@ -143,6 +153,14 @@
|
|||||||
<div class="swap-off">❌已禁用</div>
|
<div class="swap-off">❌已禁用</div>
|
||||||
</label>
|
</label>
|
||||||
</td>
|
</td>
|
||||||
|
<td>
|
||||||
|
<label class="swap swap-flip {{ checkSwap .EnableCommand }}">
|
||||||
|
<input type="checkbox" onclick="changeCommandEnableStatus({{.Wxid}})"/>
|
||||||
|
|
||||||
|
<div class="swap-on">✔️已启用</div>
|
||||||
|
<div class="swap-off">❌已禁用</div>
|
||||||
|
</label>
|
||||||
|
</td>
|
||||||
<td>
|
<td>
|
||||||
<button class="btn btn-link" onclick="getGroupUsers({{.Wxid}}, {{.Nickname}})">查看群成员</button>
|
<button class="btn btn-link" onclick="getGroupUsers({{.Wxid}}, {{.Nickname}})">查看群成员</button>
|
||||||
</td>
|
</td>
|
||||||
@ -183,6 +201,7 @@
|
|||||||
<th>微信Id</th>
|
<th>微信Id</th>
|
||||||
<th>昵称</th>
|
<th>昵称</th>
|
||||||
<th>是否群成员</th>
|
<th>是否群成员</th>
|
||||||
|
<th>是否群主</th>
|
||||||
<th>加群时间</th>
|
<th>加群时间</th>
|
||||||
<th>最后活跃时间</th>
|
<th>最后活跃时间</th>
|
||||||
<th>退群时间</th>
|
<th>退群时间</th>
|
||||||
|
@ -51,6 +51,22 @@ function changeWelcomeEnableStatus(wxId) {
|
|||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 修改指令权限启用状态
|
||||||
|
function changeCommandEnableStatus(wxId) {
|
||||||
|
axios({
|
||||||
|
method: 'put',
|
||||||
|
url: '/api/command/status',
|
||||||
|
data: {
|
||||||
|
wxId: wxId
|
||||||
|
}
|
||||||
|
}).then(function (response) {
|
||||||
|
console.log(`返回结果: ${JSON.stringify(response)}`);
|
||||||
|
}).catch(function (error) {
|
||||||
|
console.log(`错误信息: ${error}`);
|
||||||
|
alert("修改失败")
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
// 修改群成员是否参与排行榜状态
|
// 修改群成员是否参与排行榜状态
|
||||||
function changeUserGroupRankSkipStatus(groupId, userId) {
|
function changeUserGroupRankSkipStatus(groupId, userId) {
|
||||||
console.log("修改水群排行榜开启状态: ", groupId, userId)
|
console.log("修改水群排行榜开启状态: ", groupId, userId)
|
||||||
@ -96,43 +112,20 @@ function getGroupUsers(groupId, groupName) {
|
|||||||
// 渲染群成员列表
|
// 渲染群成员列表
|
||||||
const groupUsers = response.data
|
const groupUsers = response.data
|
||||||
// 循环渲染数据
|
// 循环渲染数据
|
||||||
for (let i = 0; i < groupUsers.length; i++) {
|
groupUsers.forEach((groupUser, i) => {
|
||||||
const groupUser = groupUsers[i]
|
const { wxid, nickname, isMember, isAdmin, joinTime, lastActiveTime, leaveTime, skipChatRank } = groupUser;
|
||||||
|
|
||||||
let row = tbody.insertRow(i); // 插入新行
|
let row = tbody.insertRow(i);
|
||||||
|
// Insert data into cells
|
||||||
// 微信Id
|
row.insertCell(0).innerHTML = wxid;
|
||||||
let wxId = row.insertCell(0);
|
row.insertCell(1).innerHTML = nickname;
|
||||||
wxId.innerHTML = groupUser.wxid;
|
row.insertCell(2).innerHTML = `<div class="badge badge-${isMember ? 'info' : 'error'} gap-2">${isMember ? '是' : '否'}</div>`;
|
||||||
|
row.insertCell(3).innerHTML = `<div class="badge badge-${isAdmin ? 'info' : 'error'} gap-2">${isAdmin ? '是' : '否'}</div>`;
|
||||||
// 昵称
|
row.insertCell(4).innerHTML = joinTime;
|
||||||
let nickname = row.insertCell(1);
|
row.insertCell(5).innerHTML = lastActiveTime;
|
||||||
nickname.innerHTML = groupUser.nickname;
|
row.insertCell(6).innerHTML = leaveTime;
|
||||||
|
row.insertCell(7).innerHTML = `<input type="checkbox" class="toggle toggle-error" ${skipChatRank ? 'checked' : ''} onclick="changeUserGroupRankSkipStatus('${groupId}', '${wxid}')" />`;
|
||||||
// 是否群成员
|
});
|
||||||
let isMember = row.insertCell(2);
|
|
||||||
if (groupUser.isMember) {
|
|
||||||
isMember.innerHTML = '<div class="badge badge-info gap-2">是</div>';
|
|
||||||
} else {
|
|
||||||
isMember.innerHTML = '<div class="badge badge-error gap-2">否</div>';
|
|
||||||
}
|
|
||||||
|
|
||||||
// 加群时间
|
|
||||||
let joinTime = row.insertCell(3);
|
|
||||||
joinTime.innerHTML = groupUser.joinTime;
|
|
||||||
|
|
||||||
// 最后活跃时间
|
|
||||||
let lastActiveTime = row.insertCell(4);
|
|
||||||
lastActiveTime.innerHTML = groupUser.lastActiveTime;
|
|
||||||
|
|
||||||
// 退群时间
|
|
||||||
let leaveTime = row.insertCell(5);
|
|
||||||
leaveTime.innerHTML = groupUser.leaveTime;
|
|
||||||
|
|
||||||
// 是否跳过水群排行榜
|
|
||||||
let skipChatRank = row.insertCell(6);
|
|
||||||
skipChatRank.innerHTML = `<input type="checkbox" class="toggle toggle-error" ${groupUser.skipChatRank ? 'checked' : ''} onclick="changeUserGroupRankSkipStatus(\'${groupId}\', \'${groupUser.wxid}\')" />`;
|
|
||||||
}
|
|
||||||
}).catch(function (error) {
|
}).catch(function (error) {
|
||||||
console.log(`错误信息: ${error}`);
|
console.log(`错误信息: ${error}`);
|
||||||
}).finally(function () {
|
}).finally(function () {
|
||||||
|
@ -15,6 +15,7 @@ type FriendItem struct {
|
|||||||
EnableAi bool // 是否使用AI
|
EnableAi bool // 是否使用AI
|
||||||
EnableChatRank bool // 是否使用聊天排行
|
EnableChatRank bool // 是否使用聊天排行
|
||||||
EnableWelcome bool // 是否使用迎新
|
EnableWelcome bool // 是否使用迎新
|
||||||
|
EnableCommand bool // 是否启用指令
|
||||||
IsOk bool // 是否还在通讯库(群聊是要还在群里也算)
|
IsOk bool // 是否还在通讯库(群聊是要还在群里也算)
|
||||||
LastActiveTime types.DateTime // 最后活跃时间
|
LastActiveTime types.DateTime // 最后活跃时间
|
||||||
}
|
}
|
||||||
@ -27,6 +28,7 @@ type GroupUserItem struct {
|
|||||||
HeadImage string `json:"headImage"` // 头像
|
HeadImage string `json:"headImage"` // 头像
|
||||||
Nickname string `json:"nickname"` // 昵称
|
Nickname string `json:"nickname"` // 昵称
|
||||||
IsMember bool `json:"isMember" ` // 是否群成员
|
IsMember bool `json:"isMember" ` // 是否群成员
|
||||||
|
IsAdmin bool `json:"isAdmin"` // 是否群主
|
||||||
JoinTime types.DateTime `json:"joinTime"` // 加入时间
|
JoinTime types.DateTime `json:"joinTime"` // 加入时间
|
||||||
LastActiveTime types.DateTime `json:"lastActiveTime"` // 最后活跃时间
|
LastActiveTime types.DateTime `json:"lastActiveTime"` // 最后活跃时间
|
||||||
LeaveTime types.DateTime `json:"leaveTime"` // 离开时间
|
LeaveTime types.DateTime `json:"leaveTime"` // 离开时间
|
||||||
|
Loading…
Reference in New Issue
Block a user