fonchain-artistinfo/cmd/internal/logic/artistinfo_artshow.go
2023-03-10 17:27:10 +08:00

206 lines
7.4 KiB
Go

// 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
}