首页 > 其他分享 >Go实战全家桶之二十四: 指标系统的一个大坑

Go实战全家桶之二十四: 指标系统的一个大坑

时间:2024-12-14 19:59:23浏览次数:10  
标签:end err 大坑 self 二十四 var start time Go

历史代码:大坑

指标系统的代码使用的时间标准time,.Local

而PC上是Asia/Shanghai,而linux环境为utc

而es存贮的是utc时间,不能简单的用+8,-8

而是计算查询用北京时间,保存按utc\

还有一个问题用的是utc天执行的定时任务

解决办法:测试

func (self *TestGeneralserviceSuite) Test009_MigrationServiceDayAllReport() {
    var err1 = gtime.SetTimeZone("UTC")
    if err1 != nil {
       panic(err1)
    }
    golog.Info(time.Now())
    var err = report_day.FindBeanReportDayDetail().DeleteDayEs("2024-12-01", "2024-12-15")
    if err != nil {
       golog.Error(err)
       return
    }
    var start, _ = gtime.StrToTimeLayout("2024-12-01", time.DateOnly)
    var end, _ = gtime.StrToTimeLayout("2024-12-16", time.DateOnly)
    err = self.MigrationServiceDayAllReport(start.Time, end.Time)
    golog.Info("TestGeneralserviceSuite [Test009_MigrationServiceDayAllReport]", err)

}

代码优化

func (self *ReportDayBase) ToShanghai(start, end time.Time) (time.Time, time.Time) {
    var startShanghai = time.Date(start.Year(), start.Month(), start.Day(), 0, 0, 0, 0, reportkey.ZoneShanghai)
    var endShanghai = time.Date(end.Year(), end.Month(), end.Day(), 23, 59, 59, 999999, reportkey.ZoneShanghai)
    return startShanghai, endShanghai
}

计算

func (self *ReportDaySupply) MigrationAvabLineDayReport(start, end time.Time) ([]*esentity.ServiceReportDayEs, error) {
    golog.Info("ReportDayMatch [MigrationAvabLineDayReport]开始统计所有供盘数:", end)
    var startShanghai, endShanghai = self.ToShanghai(start, end)
    //yesterday
    start = startShanghai.AddDate(0, 0, -1)
    end = endShanghai.AddDate(0, 0, -1)
    golog.Info("ReportDaySupply [MigrationAvabLineDayReport] start, end  =  ", start, end)
    var makeAdd, err = self.makeAdd(start, end)
    if err != nil {
       return nil, err
    }

    //去重
    golog.Info("ReportDaySupply [MigrationAvabLineDayReport]统计所有供盘数结束:")
    //shopMemberIds = utils.UniqueInt(shopMemberIds)
    var mapRet = self.mergeList(makeAdd, []*esentity.ServiceReportDayEs{})
    return self.map2List(mapRet, start), nil
}

保存

func (self *ReportDaySupply) map2List(mapRet report_dto.MapRet, start time.Time) []*esentity.ServiceReportDayEs {
    list := make([]*esentity.ServiceReportDayEs, 0)

    var startId = start
    start = start.UTC() //Add(-8 * time.Hour)
    for _, data := range mapRet {
       data.Id = self.ToIdByMemberId(startId, data.ShopMemberId)
       data.CreatedAt = start.UnixNano() / 1e6
       data.CreatedDate = start
       list = append(list, data)
    }
    return list
}

标签:end,err,大坑,self,二十四,var,start,time,Go
From: https://blog.csdn.net/leijmdas/article/details/144471045

相关文章

  • Google在架包分析-巴西4
    包信息之前在应用榜找的几个包都是一家的,一样的方案没啥好分析的。这次就换游戏榜里面找了个包,直接看图标找很好找。逆向分析安装运行,刚开始还是进的A面小游戏,然后我说来抓个包看下,重新打开了一下app,结果直接就B面了,给我整不会了。。。现在的上架方案都这么随意进b面......
  • django-python开发
    确保你已经安装了Django。如果没有安装,可以通过pip安装:pipinstalldjango创建一个新的Django项目:django-adminstartprojectdjango_test运行开发服务器:cddjango_testpythonmanage.pyrunserverpythonmanage.pyrunserver0.0.0.0:8008如果你需要创建一个应用程序,可以使用......
  • Vue2.0+Node.js+MongoDB全栈打造商城系统
    Vue2.0+Node.js+MongoDB全栈打造商城系统F:\Vue教程\Vue2.0+Node.js+MongoDB全栈打造商城系统\第1章课程介绍1.1导学.mp4vue框架对比Vue和React对比.Angular提供的更多是一整套解决方案,后者更像是一个生态.Vue和React目前都使用了VirtualDomvue框架对比Vue·模板和渲染......
  • django停车场管理系统-毕业设计源码16856
    目 录1绪论1.1研究背景和意义1.2国内外研究现状1.3论文结构与章节安排2 系统分析2.1可行性分析2.1.1技术可行性分析2.1.2 经济可行性分析2.1.3操作可行性分析2.2系统功能分析2.2.1功能性分析2.2.2非功能性分析2.3 系统用例分析2.4系......
  • gofiber: 请求参数是数组的处理
    一,js处理数组的形式:js的处理:varaddIdList=[];for(i=0;i<content.length;i++){if(content[i].checked){addIdList.push(content[i].value);}}console.log("选中的id:");......
  • golang: 指针和地址
    一,指针和地址的操作1,代码:要掌握以下三个用法:  *指针变量名 得到指针所指向的变量  *类型   表示这是一个此类型的指针  &变量   返回一个存放变量地址的指针packagemainimport("fmt""reflect")funcisPointer(vinterface{})......
  • golang: struct与指针
    一,可以通过指针访问struct的变量1,代码:packagemainimport("fmt""reflect")//判断是否指针funcisPointer(vinterface{})bool{returnreflect.ValueOf(v).Kind()==reflect.Ptr}//定义一个结构体typePersonstruct{NamestringAge......
  • golang:方法接收者带星号和不带星号的区别
    一,说明:不带星号的方法‌:这些方法定义在值接收者(valuereceiver)上。当你调用这些方法时,会操作该值的副本。如果方法内部修改了接收者,这些修改不会反映到原始值上。‌带星号的方法‌:这些方法定义在指针接收者(pointerreceiver)上。当你调用这些方法时,会操作原始值的指针。如果......
  • gorm: 自定义日志
    一,官方文档:地址https://gorm.io/zh_CN/docs/logger.html参考的gormlogger代码实现:https://github.com/go-gorm/gorm/blob/master/logger/logger.go自定义日志需要实现的接口:typeInterfaceinterface{LogMode(LogLevel)InterfaceInfo(context.Context,stri......
  • golang:第三方库:用jordan-wright/email发送邮件
    一,安装第三方库:$goget-ugithub.com/jordan-wright/emailgo:downloadinggithub.com/jordan-wright/emailv4.0.1-0.20210109023952-943e75fe5223+incompatiblego:addedgithub.com/jordan-wright/emailv4.0.1-0.20210109023952-943e75fe5223+incompatible二,代码:1,发送......