RTMP协议Web无插件直播平台EasyDSS数据库日期时间于当前时期不匹配如何修复?

针对用户反馈的EasyDSS平台中数据创建时间显示异常的问题,本文详细介绍了问题原因及解决方案,通过调整代码逻辑避免了时间被错误重置。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在TSINGSEE青犀视频开发的平台中,关于EasyDSS平台的开发和定制需求还是挺多的,因此我们最近在攻克EasyDSS定制项目的难题中,也将过程和解决方法一一记录,大家后期也可以参考一下。

5.png

在EasyDSS的定制项目中,用户反馈数据库中的数据 create_at,数据创建时间变为0001/01/01 00:00:00,如下图:

69.png

问题分析

EasyDSS程序内部数据库对接模块采用 gorm 数据模块处理数据。内部代码如下:

// 更新所有字段
func (impl *BaseDaoImpl) Save(data interface{}) error {
   err := impl.fromTable().Model(data).Save(data).Error

   if err != nil {
      return err
   }

   return impl.Get(data)
}

Save 函数会将所有的字段全部更新。因为传入的数据的 create_at 为 nil,因此自动将数据变为初始时间 0001/01/01 00:00:00。

解决方案

修改代码逻辑,首先从数据库中查询数据。如果未查询到数据,则直接在数据库中添加数据。如果查询到数据,将原数据的 create_at 获取到,然后赋值到新的数据中,然后再调用 Save() 函数,解决此问题。

for stream := range gProcessStreamChan {
   saveStream := &table.Stream{}
   saveStream.CopyData(&stream)

   dbStream := &table.Stream{}
   dbStream.ID = stream.Id
   err := gStreamDao.Get(dbStream)
   // 如果未查找到数据
   if err == gorm.ErrRecordNotFound {
      err = gStreamDao.Add(saveStream)
   } else if err == nil {
   // 如果有老数据,获取老数据的 createat 时间
      saveStream.CreateAt = dbStream.CreateAt
      err = gStreamDao.Save(saveStream)
   }
}

日期数据恢复正常。

70.png

EasyDSS视频平台支持上传视频和分享,上传视频后一键生成视频地址,以供用户分享、嵌入到网站、产品软件系统中,并且支持Flash、HTML5播放,兼容Windows、Android、iOS、Mac等操作系统,支持阿里云、腾讯云、华为云、青云、七牛云等多种云架构,部署高效、更灵活。如果大家有测试需求,欢迎联系我们获取测试账号测试。

DSS7.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值