zoukankan      html  css  js  c++  java
  • RTMP协议Web无插件直播平台EasyDSS数据库日期时间于当前时期不匹配如何修复?

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

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

    问题分析

    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)
       }
    }
    
    

    日期数据恢复正常。

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

  • 相关阅读:
    emoji表情,直接存入数据库报错,,出现java.sql.SQLException: Incorrect string value: 'xF0x9Fx98x8ExF0。。。。。。
    Springmvc的服务端数据验证-----Hibernate Validator
    HashMap
    Treeset的两种排序方法(自然排序和比较器排序)
    Java设计模式之适配器模式
    Java中的三种工厂模式
    构造方法私有化_骰子
    Java中equals的覆盖
    HttpClient请求
    JAVA的单例模式与延时加载
  • 原文地址:https://www.cnblogs.com/easydss/p/14331655.html
Copyright © 2011-2022 走看看