mirror of
				https://github.com/yangjian102621/geekai.git
				synced 2025-11-04 16:23:42 +08:00 
			
		
		
		
	优化实时语音对话组件,处理异常
This commit is contained in:
		@@ -143,65 +143,67 @@ func (h *ConfigHandler) GetLicense(c *gin.Context) {
 | 
			
		||||
 | 
			
		||||
// FixData 修复数据
 | 
			
		||||
func (h *ConfigHandler) FixData(c *gin.Context) {
 | 
			
		||||
	var fixed bool
 | 
			
		||||
	version := "data_fix_4.1.4"
 | 
			
		||||
	err := h.levelDB.Get(version, &fixed)
 | 
			
		||||
	if err == nil || fixed {
 | 
			
		||||
		resp.ERROR(c, "当前版本数据修复已完成,请不要重复执行操作")
 | 
			
		||||
		return
 | 
			
		||||
	}
 | 
			
		||||
	tx := h.DB.Begin()
 | 
			
		||||
	var users []model.User
 | 
			
		||||
	err = tx.Find(&users).Error
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		resp.ERROR(c, err.Error())
 | 
			
		||||
		return
 | 
			
		||||
	}
 | 
			
		||||
	for _, user := range users {
 | 
			
		||||
		if user.Email != "" || user.Mobile != "" {
 | 
			
		||||
			continue
 | 
			
		||||
		}
 | 
			
		||||
		if utils.IsValidEmail(user.Username) {
 | 
			
		||||
			user.Email = user.Username
 | 
			
		||||
		} else if utils.IsValidMobile(user.Username) {
 | 
			
		||||
			user.Mobile = user.Username
 | 
			
		||||
		}
 | 
			
		||||
		err = tx.Save(&user).Error
 | 
			
		||||
		if err != nil {
 | 
			
		||||
			resp.ERROR(c, err.Error())
 | 
			
		||||
			tx.Rollback()
 | 
			
		||||
			return
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	var orders []model.Order
 | 
			
		||||
	err = h.DB.Find(&orders).Error
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		resp.ERROR(c, err.Error())
 | 
			
		||||
		return
 | 
			
		||||
	}
 | 
			
		||||
	for _, order := range orders {
 | 
			
		||||
		if order.PayWay == "支付宝" {
 | 
			
		||||
			order.PayWay = "alipay"
 | 
			
		||||
			order.PayType = "alipay"
 | 
			
		||||
		} else if order.PayWay == "微信支付" {
 | 
			
		||||
			order.PayWay = "wechat"
 | 
			
		||||
			order.PayType = "wxpay"
 | 
			
		||||
		} else if order.PayWay == "hupi" {
 | 
			
		||||
			order.PayType = "wxpay"
 | 
			
		||||
		}
 | 
			
		||||
		err = tx.Save(&order).Error
 | 
			
		||||
		if err != nil {
 | 
			
		||||
			resp.ERROR(c, err.Error())
 | 
			
		||||
			tx.Rollback()
 | 
			
		||||
			return
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
	tx.Commit()
 | 
			
		||||
	err = h.levelDB.Put(version, true)
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		resp.ERROR(c, err.Error())
 | 
			
		||||
		return
 | 
			
		||||
	}
 | 
			
		||||
	resp.SUCCESS(c)
 | 
			
		||||
	resp.ERROR(c, "当前升级版本没有数据需要修正!")
 | 
			
		||||
	return
 | 
			
		||||
	//var fixed bool
 | 
			
		||||
	//version := "data_fix_4.1.4"
 | 
			
		||||
	//err := h.levelDB.Get(version, &fixed)
 | 
			
		||||
	//if err == nil || fixed {
 | 
			
		||||
	//	resp.ERROR(c, "当前版本数据修复已完成,请不要重复执行操作")
 | 
			
		||||
	//	return
 | 
			
		||||
	//}
 | 
			
		||||
	//tx := h.DB.Begin()
 | 
			
		||||
	//var users []model.User
 | 
			
		||||
	//err = tx.Find(&users).Error
 | 
			
		||||
	//if err != nil {
 | 
			
		||||
	//	resp.ERROR(c, err.Error())
 | 
			
		||||
	//	return
 | 
			
		||||
	//}
 | 
			
		||||
	//for _, user := range users {
 | 
			
		||||
	//	if user.Email != "" || user.Mobile != "" {
 | 
			
		||||
	//		continue
 | 
			
		||||
	//	}
 | 
			
		||||
	//	if utils.IsValidEmail(user.Username) {
 | 
			
		||||
	//		user.Email = user.Username
 | 
			
		||||
	//	} else if utils.IsValidMobile(user.Username) {
 | 
			
		||||
	//		user.Mobile = user.Username
 | 
			
		||||
	//	}
 | 
			
		||||
	//	err = tx.Save(&user).Error
 | 
			
		||||
	//	if err != nil {
 | 
			
		||||
	//		resp.ERROR(c, err.Error())
 | 
			
		||||
	//		tx.Rollback()
 | 
			
		||||
	//		return
 | 
			
		||||
	//	}
 | 
			
		||||
	//}
 | 
			
		||||
	//
 | 
			
		||||
	//var orders []model.Order
 | 
			
		||||
	//err = h.DB.Find(&orders).Error
 | 
			
		||||
	//if err != nil {
 | 
			
		||||
	//	resp.ERROR(c, err.Error())
 | 
			
		||||
	//	return
 | 
			
		||||
	//}
 | 
			
		||||
	//for _, order := range orders {
 | 
			
		||||
	//	if order.PayWay == "支付宝" {
 | 
			
		||||
	//		order.PayWay = "alipay"
 | 
			
		||||
	//		order.PayType = "alipay"
 | 
			
		||||
	//	} else if order.PayWay == "微信支付" {
 | 
			
		||||
	//		order.PayWay = "wechat"
 | 
			
		||||
	//		order.PayType = "wxpay"
 | 
			
		||||
	//	} else if order.PayWay == "hupi" {
 | 
			
		||||
	//		order.PayType = "wxpay"
 | 
			
		||||
	//	}
 | 
			
		||||
	//	err = tx.Save(&order).Error
 | 
			
		||||
	//	if err != nil {
 | 
			
		||||
	//		resp.ERROR(c, err.Error())
 | 
			
		||||
	//		tx.Rollback()
 | 
			
		||||
	//		return
 | 
			
		||||
	//	}
 | 
			
		||||
	//}
 | 
			
		||||
	//tx.Commit()
 | 
			
		||||
	//err = h.levelDB.Put(version, true)
 | 
			
		||||
	//if err != nil {
 | 
			
		||||
	//	resp.ERROR(c, err.Error())
 | 
			
		||||
	//	return
 | 
			
		||||
	//}
 | 
			
		||||
	//resp.SUCCESS(c)
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -305,19 +305,22 @@ onUnmounted(() => {
 | 
			
		||||
const hangUp = async () => {
 | 
			
		||||
  try {
 | 
			
		||||
    isConnected.value = false
 | 
			
		||||
    // 停止播放拨号音乐
 | 
			
		||||
    if (backgroundAudio.value?.currentTime) {
 | 
			
		||||
      backgroundAudio.value?.pause()
 | 
			
		||||
      backgroundAudio.value.currentTime = 0
 | 
			
		||||
    }
 | 
			
		||||
    // 断开客户端的连接
 | 
			
		||||
    client.value.disconnect()
 | 
			
		||||
    client.value.reset()
 | 
			
		||||
    // 中断语音输入和输出服务
 | 
			
		||||
    await wavRecorder.value.end()
 | 
			
		||||
    await wavStreamPlayer.value.interrupt()
 | 
			
		||||
    // 停止播放拨号音乐
 | 
			
		||||
    backgroundAudio.value?.pause()
 | 
			
		||||
    backgroundAudio.value.currentTime = 0
 | 
			
		||||
  } catch (e) {
 | 
			
		||||
    console.error(e)
 | 
			
		||||
  } finally {
 | 
			
		||||
    // 播放挂断音乐
 | 
			
		||||
    hangUpAudio.value?.play()
 | 
			
		||||
    emits('close')
 | 
			
		||||
  } catch (e) {
 | 
			
		||||
    console.error(e)
 | 
			
		||||
  }
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -902,6 +902,10 @@ const showConversationDialog = ref(false)
 | 
			
		||||
const conversationRef = ref(null)
 | 
			
		||||
const dialogHeight = ref(window.innerHeight - 75);
 | 
			
		||||
const realtimeChat = () => {
 | 
			
		||||
  if (!isLogin.value) {
 | 
			
		||||
    store.setShowLoginDialog(true)
 | 
			
		||||
    return
 | 
			
		||||
  }
 | 
			
		||||
  showConversationDialog.value = true;
 | 
			
		||||
  nextTick(() => {
 | 
			
		||||
    conversationRef.value.connect()
 | 
			
		||||
 
 | 
			
		||||
@@ -403,11 +403,11 @@
 | 
			
		||||
 | 
			
		||||
      <el-tab-pane label="修复数据" name="fixData">
 | 
			
		||||
        <div class="container">
 | 
			
		||||
          <p class="text">有些版本升级的时候更新了数据库的结构,比如字段名字改了,需要把之前的字段的值转移到其他字段,这些无法通过简单的 SQL 语句可以实现的,需要手动写程序修正数据。</p>
 | 
			
		||||
<!--          <p class="text">有些版本升级的时候更新了数据库的结构,比如字段名字改了,需要把之前的字段的值转移到其他字段,这些无法通过简单的 SQL 语句可以实现的,需要手动写程序修正数据。</p>-->
 | 
			
		||||
 | 
			
		||||
          <p class="text">当前版本 v4.1.4 需要修正用户数据,增加了 mobile 和 email 字段,需要把之前用手机号或者邮箱注册的用户的 username 字段数据初始化到 mobile 或者 email 字段。另外,需要把订单的支付渠道从名字称修正为 key。</p>
 | 
			
		||||
<!--          <p class="text">当前版本 v4.1.4 需要修正用户数据,增加了 mobile 和 email 字段,需要把之前用手机号或者邮箱注册的用户的 username 字段数据初始化到 mobile 或者 email 字段。另外,需要把订单的支付渠道从名字称修正为 key。</p>-->
 | 
			
		||||
 | 
			
		||||
          <el-text type="danger">请注意:在修复数据前,请先备份好数据库,以免数据丢失!</el-text>
 | 
			
		||||
<!--          <el-text type="danger">请注意:在修复数据前,请先备份好数据库,以免数据丢失!</el-text>-->
 | 
			
		||||
 | 
			
		||||
          <p><el-button type="primary" @click="fixData">立即修复</el-button></p>
 | 
			
		||||
        </div>
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user