123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145 |
- package mcndao
- import (
- "time"
- "go-common/app/interface/main/mcn/model"
- "go-common/app/interface/main/mcn/model/mcnmodel"
- "go-common/library/log"
- "github.com/jinzhu/gorm"
- )
- const (
- dateFmt = "2006-01-02"
- tidSummary = 65535 // 特殊的tid表示所有分区数据之和
- )
- //GetMcnDataSummary .
- func (d *Dao) GetMcnDataSummary(selec string, query interface{}, args ...interface{}) (res *mcnmodel.McnDataSummary, err error) {
- res = new(mcnmodel.McnDataSummary)
- err = d.mcndb.Select(selec).Where(query, args...).Limit(1).Find(res).Error
- if err != nil {
- log.Error("query db fail, err=%s", err)
- return
- }
- return
- }
- //GetMcnDataSummaryWithDiff get data with datacenter diff
- func (d *Dao) GetMcnDataSummaryWithDiff(signID int64, dataTYpe mcnmodel.McnDataType, generateDate time.Time) (res *mcnmodel.McnGetDataSummaryReply, err error) {
- dataDay0, err := d.GetMcnDataSummary("up_count, fans_count_accumulate, archive_count_accumulate, play_count_accumulate, generate_date", "sign_id=? and data_type=? and generate_date=? and active_tid=?", signID, dataTYpe, generateDate.Format(dateFmt), tidSummary)
- if int64(dataDay0.GenerateDate) == 0 {
- err = gorm.ErrRecordNotFound
- }
- if err != nil {
- if err == gorm.ErrRecordNotFound {
- err = nil
- log.Warn("not found generate date=%s, sign id=%d", generateDate.Format(dateFmt), signID)
- return
- }
- log.Error("fail to get data db, err=%s, sign id=%d", err, signID)
- return
- }
- dataDay1, err := d.GetMcnDataSummary("up_count, fans_count_accumulate, archive_count_accumulate, play_count_accumulate, generate_date", "sign_id=? and data_type=? and generate_date=? and active_tid=?", signID, dataTYpe, generateDate.AddDate(0, 0, -1).Format(dateFmt), tidSummary)
- if int64(dataDay1.GenerateDate) == 0 {
- err = gorm.ErrRecordNotFound
- }
- if err != nil {
- if err == gorm.ErrRecordNotFound {
- err = nil
- log.Warn("not found generate date=%s, sign id=%d", generateDate.Format(dateFmt), signID)
- dataDay1 = new(mcnmodel.McnDataSummary)
- } else {
- log.Error("fail to get data db, err=%s, sign id=%d", err, signID)
- return
- }
- }
- res = new(mcnmodel.McnGetDataSummaryReply)
- res.CopyFrom(dataDay0)
- res.CalcDiff(dataDay1)
- return
- }
- //GetDataUpLatestDate .
- func (d *Dao) GetDataUpLatestDate(dataType mcnmodel.DataType, signID int64) (generateDate time.Time, err error) {
- var model = mcnmodel.McnDataUp{}
- err = d.mcndb.Select("generate_date").Where("data_type=? and sign_id=?", dataType, signID).Order("generate_date desc").Limit(1).Find(&model).Error
- if err != nil {
- log.Error("get latest date from mcn_data_up fail, err=%s", err)
- return
- }
- generateDate = model.GenerateDate.Time()
- return
- }
- //GetAllUpData .
- func (d *Dao) GetAllUpData(signID int64, upmid int64, generateDate time.Time) (res []*mcnmodel.McnUpDataInfo, err error) {
- var sqlstr = `select
- u.begin_date,
- u.end_date,
- u.state,
- u.up_mid,
- u.publication_price,
- u.permission,
- d.fans_increase_accumulate,
- d.archive_count,
- d.play_count,
- d.fans_increase_month,
- d.fans_count,
- d.fans_count_active,
- generate_date
- from
- mcn_up as u left join mcn_data_up as d
- on (d.sign_id = u.sign_id and d.up_mid = u.up_mid and d.data_type=1 and generate_date=? )
- where u.sign_id=? and u.state not in (?)`
- var values = []interface{}{generateDate, signID, []model.MCNUPState{model.MCNUPStateOnDelete}}
- if upmid != 0 {
- sqlstr += " and u.up_mid=?"
- values = append(values, upmid)
- }
- err = d.mcndb.Raw(sqlstr, values...).Find(&res).Error
- if err != nil {
- log.Error("query db fail, err=%s", err)
- return
- }
- return
- }
- //GetAllUpDataTemp .
- func (d *Dao) GetAllUpDataTemp(signID int64, upmid int64, generateDate time.Time) (res []*mcnmodel.McnUpDataInfo, err error) {
- /*
- 前台这边一期的数据
- 1.首页 - 绑定up主总数
- 2.up主列表 - 总粉数
- 3.up主列表 - 投稿数
- 4.up主列表 - up分区
- 5.up主列表 - 签约及到期时间
- */
- var sqlstr = `select
- u.begin_date,
- u.end_date,
- u.state,
- u.up_mid,
- d.article_count_accumulate as archive_count,
- d.fans_count,
- d.active_fans as fans_count_active
- from
- mcn_up as u left join up_base_info as d
- on (d.mid = u.up_mid and d.business_type = 1)
- where u.sign_id=? and u.state not in (?)`
- var values = []interface{}{signID, []model.MCNUPState{model.MCNUPStateOnDelete, model.MCNUPStateOnExpire, model.MCNUPStateOnClear}}
- if upmid != 0 {
- sqlstr += " and u.up_mid=?"
- values = append(values, upmid)
- }
- err = d.mcndb.Raw(sqlstr, values...).Find(&res).Error
- if err != nil {
- log.Error("query db fail, err=%s", err)
- return
- }
- return
- }
|