123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213 |
- package services
- import (
- "fmt"
- "hongze/hongze_api/models"
- "hongze/hongze_api/utils"
- "time"
- )
- func CreateAnnualReport() {
- br := new(models.BaseResponse).Init()
- defer func() {
- }()
- startDate := "2020-01-01 00:00:00"
- endDate := time.Now().Format(utils.FormatDate)
- uid := 123
- user,err:=GetWxUserItemByUserId(uid,utils.WxPlatform)
- if err!=nil {
- }
- 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 = 0
- }
- expireDay := fmt.Sprintf("%v", int(sub.Hours()/24))
- togetherDay = expireDay
- createDate = user.CreatedTime.Format(utils.FormatDate)
- } else {
- sub := time.Now().Sub(user.LastUpdatedTime)
- if sub < 0 {
- sub = 0
- }
- expireDay := fmt.Sprintf("%v", int(sub.Hours()/24))
- togetherDay = expireDay
- createDate = user.LastUpdatedTime.Format(utils.FormatDate)
- }
- //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
- resp.FirstReadReportType = firstReadReportType
- resp.FirstReadReportTitle = firstReadReportTitle
- resp.ListenReportCount = listenCount
- resp.ListenReportDuration = utils.FixFloat((listenVideoPlaySeconds / 60.00), 2)
- resp.MaxReadReportCount = maxReadReportCount
- resp.MaxReadReportDate = maxReadReportDate.Format(utils.FormatDate)
- resp.LatestReadReportDate = lastestCreateDate
- 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
- }
|