提交3: 体验完善 - 二维码库存预警
- 实现二维码库存预警逻辑: 库存低于阈值时给所有客服发站内信 - 查询 cs 角色客服并批量发送预警通知 - 预警消息包含剩余数量提示 Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
@@ -303,8 +303,40 @@ func checkQrCodeStockAndAlert(tx *gorm.DB, conversation *model.ChatConversation)
|
||||
|
||||
// 如果低于阈值,发送预警给所有客服
|
||||
if count <= threshold {
|
||||
// TODO: 发送站内信给所有 cs 角色客服
|
||||
// 需要 notification 模块支持
|
||||
// 查询所有 cs 角色的客服
|
||||
var csAdmins []model.AdminUser
|
||||
if err := tx.Table("admin_users").
|
||||
Joins("JOIN admin_user_roles ON admin_users.id = admin_user_roles.admin_user_id").
|
||||
Joins("JOIN roles ON admin_user_roles.role_id = roles.id").
|
||||
Where("roles.code = ? AND admin_users.status = ?", "cs", "active").
|
||||
Select("admin_users.id").
|
||||
Find(&csAdmins).Error; err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
// 构造预警消息
|
||||
alertContent := fmt.Sprintf("企业微信群二维码库存不足(剩余 %d 张),请及时补充", count)
|
||||
|
||||
// 发送站内信给所有客服
|
||||
var entries []interface{}
|
||||
for _, admin := range csAdmins {
|
||||
entries = append(entries, map[string]interface{}{
|
||||
"admin_user_id": admin.ID,
|
||||
"type": "system",
|
||||
"title": "二维码库存预警",
|
||||
"content": alertContent,
|
||||
"is_read": false,
|
||||
"created_at": time.Now(),
|
||||
"updated_at": time.Now(),
|
||||
})
|
||||
}
|
||||
|
||||
if len(entries) > 0 {
|
||||
// 批量插入通知
|
||||
if err := tx.Table("admin_notifications").Create(entries).Error; err != nil {
|
||||
return err
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return nil
|
||||
|
||||
Reference in New Issue
Block a user