package controllers import ( "fmt" "hongze/hongze_api/models" "hongze/hongze_api/utils" "time" ) //年度账单 type BillController struct { BaseAuthController } // @Title 年度账单接口 // @Description 年度账单接口 // @Success 200 {object} models.BillDetailResp // @router /detail [get] func (this *BillController) Detail() { br := new(models.BaseResponse).Init() defer func() { this.Data["json"] = br this.ServeJSON() }() user := this.User if user == nil { br.Msg = "请登录" br.ErrMsg = "请登录,用户信息为空" br.Ret = 408 return } startDate := "2020-01-01 00:00:00" endDate := time.Now().Format(utils.FormatDate) uid := user.UserId var realName, togetherDay, createDate string resp := new(models.BillDetailResp) if user.RealName == "" { realName = user.NickName } else { realName = user.RealName } if !user.CreatedTime.IsZero() { sub := time.Now().Sub(user.CreatedTime) if sub < 0 { sub = 1 } expireDay := fmt.Sprintf("%v", int(sub.Hours()/24)) togetherDay = expireDay createDate = user.CreatedTime.Format("2006年01月02日") } else { sub := time.Now().Sub(user.LastUpdatedTime) if sub < 0 { sub = 1 } expireDay := fmt.Sprintf("%v", int(sub.Hours()/24)) togetherDay = expireDay createDate = user.LastUpdatedTime.Format("2006年01月02日") } //uid = 41555 firstReadReportType, firstReadReportTitle, err := models.GetFirstReportInfo(uid, startDate) if err != nil && err.Error() != utils.ErrNoRow() { br.Msg = "获取数据失败" br.ErrMsg = "获取数据失败GetFirstReportInfo,Err:" + err.Error() return } listenCount, listenVideoPlaySeconds, err := models.GetListenInfo(uid, startDate) if err != nil && err.Error() != utils.ErrNoRow() { br.Msg = "获取数据失败" br.ErrMsg = "获取数据失败GetListenInfo,Err:" + err.Error() return } maxReadReportCount, maxReadReportDate, err := models.GetMaxReadReportInfo(uid, startDate) if err != nil && err.Error() != utils.ErrNoRow() { br.Msg = "获取数据失败" br.ErrMsg = "获取数据失败GetMaxReadReportInfo,Err:" + err.Error() return } latestTime, latestCreateTime, err := models.GetLatestReadReportInfo(uid, startDate) if err != nil && err.Error() != utils.ErrNoRow() { br.Msg = "获取数据失败" br.ErrMsg = "获取数据失败GetLatestReadReportInfo,Err:" + err.Error() return } var lastestCreateDate string var VideoPlaySeconds float64 if !latestCreateTime.IsZero() { lastestCreateDate = latestCreateTime.Format(utils.FormatDate) } if lastestCreateDate != "" { rddpReadCount, rddpVideoPlaySeconds, err := models.GetRddpReadReportCountByDate(uid, lastestCreateDate) if err != nil && err.Error() != utils.ErrNoRow() { br.Msg = "获取数据失败" br.ErrMsg = "获取数据失败GetRddpReadReportCountByDate,Err:" + err.Error() return } weekReadCount, err := models.GetWeekReadReportCountByDate(uid, lastestCreateDate) if err != nil && err.Error() != utils.ErrNoRow() { br.Msg = "获取数据失败" br.ErrMsg = "获取数据失败GetWeekReadReportCountByDate,Err:" + err.Error() return } var weekVideoPlaySeconds float64 if rddpReadCount <= 0 { weekVideoPlaySeconds = float64(utils.GetRandInt(3, 300)) / float64(10.00) } else { weekVideoPlaySeconds = float64(weekReadCount) * (rddpVideoPlaySeconds / float64(rddpReadCount)) } VideoPlaySeconds = utils.FixFloat(rddpVideoPlaySeconds+weekVideoPlaySeconds, 2) } maxOpenReportClassify, maxOpenReportCount, err := models.GetOpenReadReportInfo(uid, startDate) if err != nil && err.Error() != utils.ErrNoRow() { br.Msg = "获取数据失败" br.ErrMsg = "获取数据失败GetOpenReadReportInfo,Err:" + err.Error() return } rddpTotalPlaySeconds, rddpTotal, err := models.GetRddpTotalReadDuration(uid, startDate) if err != nil && err.Error() != utils.ErrNoRow() { br.Msg = "获取数据失败" br.ErrMsg = "获取数据失败GetRddpTotalReadDuration,Err:" + err.Error() return } weekTotal, err := models.GetWeekTotalRead(uid, startDate) if err != nil && err.Error() != utils.ErrNoRow() { br.Msg = "获取数据失败" br.ErrMsg = "获取数据失败GetRddpTotalReadDuration,Err:" + err.Error() return } totalReadDuration := 0.00 if rddpTotal <= 0 { totalReadDuration = rddpTotalPlaySeconds + float64(weekTotal)*(float64(utils.GetRandInt(3, 300))/float64(10.00)) } else { totalReadDuration = rddpTotalPlaySeconds + (rddpTotalPlaySeconds/float64(rddpTotal))*float64(weekTotal) } dayType := `day` dayTotal, err := models.GetWeekTotalReadByType(uid, dayType, startDate) if err != nil && err.Error() != utils.ErrNoRow() { br.Msg = "获取数据失败" br.ErrMsg = "获取数据失败GetWeekTotalReadByType,Err:" + err.Error() + ";report_type:" + dayType return } weekType := `week` weekReportReadTotal, err := models.GetWeekTotalReadByType(uid, weekType, startDate) if err != nil && err.Error() != utils.ErrNoRow() { br.Msg = "获取数据失败" br.ErrMsg = "获取数据失败GetWeekTotalReadByType,Err:" + err.Error() + ";report_type:" + weekType return } twoWeekType := `two_week` twoWeekTotal, err := models.GetWeekTotalReadByType(uid, twoWeekType, startDate) if err != nil && err.Error() != utils.ErrNoRow() { br.Msg = "获取数据失败" br.ErrMsg = "获取数据失败GetWeekTotalReadByType,Err:" + err.Error() + ";report_type:" + twoWeekType return } monthType := `month` monthTotal, err := models.GetWeekTotalReadByType(uid, dayType, startDate) if err != nil && err.Error() != utils.ErrNoRow() { br.Msg = "获取数据失败" br.ErrMsg = "获取数据失败GetWeekTotalReadByType,Err:" + err.Error() + ";report_type:" + monthType return } rddpReadTotal, err := models.GetRddpTotalReadByType(uid, startDate) if err != nil && err.Error() != utils.ErrNoRow() { br.Msg = "获取数据失败" br.ErrMsg = "获取数据失败GetRddpTotalReadByType,Err:" + err.Error() + ";report_type:" + monthType return } var learnDay int rddpLearnDay, err := models.GetRddpLearnDay(uid, startDate, endDate) if err != nil && err.Error() != utils.ErrNoRow() { br.Msg = "获取数据失败" br.ErrMsg = "获取数据失败GetRddpLearnDay,Err:" + err.Error() + ";report_type:" + monthType return } weekLearnDay, err := models.GetWeekpLearnDay(uid, startDate) if err != nil && err.Error() != utils.ErrNoRow() { br.Msg = "获取数据失败" br.ErrMsg = "获取数据失败GetWeekpLearnDay,Err:" + err.Error() + ";report_type:" + monthType return } if rddpLearnDay >= weekLearnDay { learnDay = rddpLearnDay } else { learnDay = weekLearnDay } if learnDay <= 0 { learnDay = 1 } resp.RealName = realName resp.TogetherDay = togetherDay resp.CreateDate = createDate if firstReadReportType == "rddp" { resp.FirstReadReportType = "日度点评" } else if firstReadReportType == "day" { resp.FirstReadReportType = "晨报" } else if firstReadReportType == "week" { resp.FirstReadReportType = "周报" } else if firstReadReportType == "two_week" { resp.FirstReadReportType = "双周报" } else if firstReadReportType == "month" { resp.FirstReadReportType = "月报" } else { resp.FirstReadReportType = "其他" } resp.FirstReadReportTitle = firstReadReportTitle resp.ListenReportCount = listenCount resp.ListenReportDuration = utils.FixFloat((listenVideoPlaySeconds / 60.00), 2) resp.MaxReadReportCount = maxReadReportCount resp.MaxReadReportDate = maxReadReportDate.Format("2006年01月02日") if lastestCreateDate != "" { resp.LatestReadReportDate = "" } else { lastestDate, _ := time.Parse("2006-01-02", lastestCreateDate) resp.LatestReadReportDate = lastestDate.Format("2006年01月02日") } resp.LatestReadReportTime = latestTime resp.LatestReadReportDateDuration = VideoPlaySeconds resp.MaxOpenReportClassify = maxOpenReportClassify resp.MaxOpenReportCount = maxOpenReportCount resp.TotalReadDuration = totalReadDuration resp.TotalReportDayCount = dayTotal resp.TotalReportWeekCount = weekReportReadTotal resp.TotalReportTwoWeekCount = twoWeekTotal resp.TotalReportMonthCount = monthTotal resp.TotalReportRddpCount = rddpReadTotal resp.LearnDay = learnDay resp.TotalReport = dayTotal + weekReportReadTotal + twoWeekTotal + monthTotal + rddpReadTotal br.Ret = 200 br.Success = true br.Msg = "获取成功" br.Data = resp } // //func init() { // fmt.Println("start") // uid:=12008 // startDate:=`2020-01-01 00:00:00` // latestTime, latestCreateTime, err := models.GetLatestReadReportInfo(uid, startDate) // fmt.Println(latestTime, latestCreateTime) // if err != nil && err.Error() != utils.ErrNoRow() { // return // } // var lastestCreateDate string // if !latestCreateTime.IsZero() { // fmt.Println("line 256") // lastestCreateDate = latestCreateTime.Format(utils.FormatDate) // }else{ // fmt.Println("line 259") // } // // fmt.Println(latestTime,lastestCreateDate) // // fmt.Println("end") //}