// Package logic ----------------------------- // @file : artistinfo_artshow.go // @author : JJXu // @contact : wavingbear@163.com // @time : 2023/3/7 15:55 // ------------------------------------------- package logic import ( "context" "fmt" "github.com/fonchain/fonchain-artistinfo/cmd/model" "github.com/fonchain/fonchain-artistinfo/pb/artistinfoArtshow" "github.com/fonchain/fonchain-artistinfo/pb/artwork_query" db "github.com/fonchain/fonchain-artistinfo/pkg/db" "github.com/fonchain/fonchain-artistinfo/pkg/service" "github.com/fonchain/fonchain-artistinfo/pkg/util/stime" "time" ) type ArtshowLogic struct{} func (a ArtshowLogic) GetArtshowHistroyList(request *artistinfoArtshow.GetArtshowHistroyListRequest) (data *artistinfoArtshow.GetArtshowHistroyListResponse, err error) { data = &artistinfoArtshow.GetArtshowHistroyListResponse{} //查询数据 var ( //画家补充信息 artistSupplementList = []model.ArtshowArtistSupplement{} //画家指数 artistIndexList = []model.ArtshowArtistIndex{} //画展视频资料 artshowVideoList = []model.ArtshowVideoRecord{} //画作补充信息基本列表 artworBaseList = []model.ArtworkLockRecord{} //画作补充信息列表 artworkSupplementList = []*artwork_query.ArtworkPreviewResponse{} ) var ( //画家补充信息 db_artistSupplement = db.DB.Model(&model.ArtshowArtistSupplement{}).Where("status = 3 AND artist_uid = ?", request.ArtistUid).Order("lock_time desc") //画家指数 db_artistIndex = db.DB.Model(&model.ArtshowArtistIndex{}).Where("status = 3 AND artist_uid = ?", request.ArtistUid).Order("lock_time desc") //画展视频资料 db_artshowVideo = db.DB.Model(&model.ArtshowVideoRecord{}).Where("status = 3 AND artist_uid = ?", request.ArtistUid).Order("lock_time desc") //画作补充信息基本列表 db_artworBase = db.DB.Model(&model.ArtworkLockRecord{}).Where("status = 3 AND artist_uid = ?", request.ArtistUid).Order("lock_time desc") ) if request.AuditStatus != 0 { db_artistSupplement = db_artistSupplement.Where("audit_status = ?", request.AuditStatus) db_artistIndex = db_artistIndex.Where("audit_status = ?", request.AuditStatus) db_artshowVideo = db_artshowVideo.Where("audit_status = ?", request.AuditStatus) db_artworBase = db_artworBase.Where("supplement_audit_status = ?", request.AuditStatus) } err = db_artistSupplement.Find(&artistSupplementList).Error if err != nil { return nil, err } err = db_artistIndex.Find(&artistIndexList).Error if err != nil { return nil, err } err = db_artshowVideo.Find(&artshowVideoList).Error if err != nil { return nil, err } err = db_artworBase.Find(&artworBaseList).Error if err != nil { return nil, err } // 查询画作补充信息 artworkUidList := []string{} for _, v := range artworBaseList { artworkUidList = append(artworkUidList, v.ArtworkUid) } artworkSupplementRes, err := service.ArtworkQueryImpl.ArtworkPreviewList(context.Background(), &artwork_query.ArtworkPreviewListRequest{ Page: 1, PageSize: -1, ArtworkUids: artworkUidList, }) if err != nil { return nil, err } artworkSupplementList = artworkSupplementRes.Data // 使用画家补充信息的锁定时间进行分组,然后补充剩余数据 var dataGroups = []*artistinfoArtshow.TimeGroup{} var thisTime = "" var thisIndex = -1 for count, v := range artistSupplementList { if thisTime == "" || v.LockTime != thisTime { thisTime = v.LockTime thisIndex++ } var isAdd = true if request.PageSize > -1 { if int64(count) >= request.PageSize*(request.Page-1) && int64(count) < request.PageSize*request.Page { isAdd = true } else { isAdd = false } } if isAdd { dataGroups = append(dataGroups, &artistinfoArtshow.TimeGroup{ Time: thisTime, ArtworkSupplementList: []*artistinfoArtshow.ArtworkSupplementData{}, ArtistSupplementList: []*artistinfoArtshow.ArtistSupplementData{}, ArtistIndexList: []*artistinfoArtshow.ArtistIndexData{}, ArtistVideoList: []*artistinfoArtshow.ArtistVideoData{}, }) dataGroups[thisIndex].ArtistSupplementList = append(dataGroups[thisIndex].ArtistSupplementList, &artistinfoArtshow.ArtistSupplementData{ ArtistUid: v.ArtistUid, Status: v.Status, LockTime: v.LockTime, AuditStatus: int64(v.AuditStatus), AuditMark1: v.AuditMark1, AuditMark2: v.AuditMark2, ArtistName: v.ArtistName, ArtistProfile: v.ArtistProfile, CountryArtLevel: v.CountryArtLevel, ArtistCertPic: v.ArtistCertPic, BankNum: v.BankNum, BankName: v.BankName, Id: v.ID, CreatedAt: stime.TimeToString(v.CreatedAt, stime.Format_Normal_YMDhms), UpdatedAt: stime.TimeToString(v.CreatedAt, stime.Format_Normal_YMDhms), DeletedAt: stime.TimeToString(time.Unix(v.CreatedAt.Unix(), 0), stime.Format_Normal_YMDhms), }) } } for i, group := range dataGroups { //补充画家指数 for _, v := range artistIndexList { if v.LockTime == group.Time { dataGroups[i].ArtistIndexList = append(dataGroups[i].ArtistIndexList, &artistinfoArtshow.ArtistIndexData{ ArtistUid: v.ArtistUid, Title: v.Title, Class: v.Class, TitleScore: v.TitleScore, Score: v.Score, Types: v.Types, Status: v.Status, LockTime: v.LockTime, AuditMark1: v.AuditMark1, AuditMark2: v.AuditMark2, AuditStatus: int64(v.AuditStatus), Id: v.ID, CreatedAt: stime.TimeToString(v.CreatedAt, stime.Format_Normal_YMDhms), UpdatedAt: stime.TimeToString(v.CreatedAt, stime.Format_Normal_YMDhms), DeletedAt: fmt.Sprintf("%d", v.DeletedAt), }) } } //补充视频信息 for _, v := range artshowVideoList { if v.LockTime == group.Time { dataGroups[i].ArtistVideoList = append(dataGroups[i].ArtistVideoList, &artistinfoArtshow.ArtistVideoData{ Id: v.ID, ArtistUid: v.ArtistUid, LockTime: v.LockTime, VideoUrl: v.VideoUrl, AuditStatus: int64(v.AuditStatus), AuditMark1: v.AuditMark1, AuditMark2: v.AuditMark2, ArtistName: v.ArtistName, }) } } for _, v := range artworBaseList { if v.LockTime == group.Time { for _, artowrkSupplement := range artworkSupplementList { if v.ArtworkUid == artowrkSupplement.ArtworkUid { dataGroups[i].ArtworkSupplementList = append(dataGroups[i].ArtworkSupplementList, &artistinfoArtshow.ArtworkSupplementData{ ArtistUid: v.ArtistUid, Status: v.Status, LockTime: v.LockTime, AuditStatus: int64(v.SupplementAuditStatus), AuditMark1: v.SupplementAuditMark, AuditMark2: v.SupplementAuditMark2, ArtworkName: artowrkSupplement.ArtworkName, CreatedDate: artowrkSupplement.CreateDate, CreatedAddress: artowrkSupplement.CreatedAddress, CreatedAt: stime.TimeToString(v.CreatedAt, stime.Format_Normal_YMDhms), UpdatedAt: stime.TimeToString(v.CreatedAt, stime.Format_Normal_YMDhms), DeletedAt: int64(v.DeletedAt), ArtworkUuid: artowrkSupplement.ArtworkUid, Length: artowrkSupplement.Length, Width: artowrkSupplement.Width, Ruler: artowrkSupplement.Ruler, HdPic: artowrkSupplement.HdPic, ArtistPhoto: artowrkSupplement.ArtistPhoto, }) } } } } } data.Data = dataGroups fmt.Printf("%+v\n", dataGroups) return }