2023-02-24 16:30:57 +00:00
|
|
|
|
// Package logic -----------------------------
|
|
|
|
|
// @file : artistinfo_artwork.go
|
|
|
|
|
// @author : JJXu
|
|
|
|
|
// @contact : wavingbear@163.com
|
|
|
|
|
// @time : 2023/2/24 22:26
|
|
|
|
|
// -------------------------------------------
|
|
|
|
|
package logic
|
|
|
|
|
|
|
|
|
|
import (
|
2023-02-26 11:57:42 +00:00
|
|
|
|
"context"
|
2023-02-24 16:30:57 +00:00
|
|
|
|
"errors"
|
|
|
|
|
"github.com/fonchain/fonchain-artistinfo/cmd/internal/dao"
|
|
|
|
|
"github.com/fonchain/fonchain-artistinfo/cmd/model"
|
|
|
|
|
"github.com/fonchain/fonchain-artistinfo/pb/artistInfoArtwork"
|
2023-02-26 11:57:42 +00:00
|
|
|
|
"github.com/fonchain/fonchain-artistinfo/pb/artwork_query"
|
2023-02-25 00:44:50 +00:00
|
|
|
|
"github.com/fonchain/fonchain-artistinfo/pkg/m"
|
2023-02-26 11:57:42 +00:00
|
|
|
|
"github.com/fonchain/fonchain-artistinfo/pkg/service"
|
|
|
|
|
"strings"
|
2023-02-24 16:30:57 +00:00
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
type IArtistInfoArtwork interface {
|
2023-02-26 11:59:43 +00:00
|
|
|
|
GetArtworkLockDetail(request *artistInfoArtwork.GetArtworkLockDetailRequest) (res *artistInfoArtwork.ArtistLockInfo, err error)
|
2023-02-25 00:44:50 +00:00
|
|
|
|
CreateArtworkLockRecord(req *artistInfoArtwork.CreateArtworkLockRecordReq) (res *artistInfoArtwork.ArtworkCommonNoParams, err error)
|
|
|
|
|
ArtworkLockAction(req *artistInfoArtwork.ArtworkLockActionRequest) (res *artistInfoArtwork.ArtworkCommonNoParams, err error)
|
2023-02-24 16:30:57 +00:00
|
|
|
|
GetArtworkLockRecords(req *artistInfoArtwork.GetArtworkLockRecordsRequest) (res *artistInfoArtwork.ArtworkLockList, err error)
|
2023-02-26 11:59:43 +00:00
|
|
|
|
GetArtworkLockHistoryGroup(request *artistInfoArtwork.GetArtworkLockHistoryRequest) (res *artistInfoArtwork.GetArtworkLockHistoryResponse, err error)
|
2023-02-25 00:44:50 +00:00
|
|
|
|
DeleteArtworkRecord(req *artistInfoArtwork.DeleteArtworkRecordRequest) (res *artistInfoArtwork.ArtworkCommonNoParams, err error)
|
2023-02-24 16:30:57 +00:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
var _ IArtistInfoArtwork = new(ArtistInfoArtworkLogic)
|
|
|
|
|
|
|
|
|
|
type ArtistInfoArtworkLogic struct{}
|
|
|
|
|
|
2023-02-26 11:57:42 +00:00
|
|
|
|
func (a ArtistInfoArtworkLogic) GetArtworkLockDetail(request *artistInfoArtwork.GetArtworkLockDetailRequest) (res *artistInfoArtwork.ArtistLockInfo, err error) {
|
|
|
|
|
data, err := dao.GetArtworkLockDetail(request.ArtworkUid)
|
|
|
|
|
if err != nil {
|
|
|
|
|
return
|
|
|
|
|
}
|
|
|
|
|
res = &artistInfoArtwork.ArtistLockInfo{
|
|
|
|
|
ArtistUid: data.ArtistUid,
|
|
|
|
|
ArtworkUid: data.ArtworkUid,
|
|
|
|
|
Status: data.Status,
|
|
|
|
|
LockTime: data.LockTime,
|
2023-02-28 00:30:33 +00:00
|
|
|
|
CreatedAt: data.CreatedAt.Unix(),
|
|
|
|
|
UpdatedAt: data.UpdatedAt.Unix(),
|
|
|
|
|
DeletedAt: int64(data.DeletedAt),
|
2023-02-26 11:57:42 +00:00
|
|
|
|
}
|
|
|
|
|
return
|
|
|
|
|
}
|
2023-02-25 00:44:50 +00:00
|
|
|
|
func (ArtistInfoArtworkLogic) CreateArtworkLockRecord(req *artistInfoArtwork.CreateArtworkLockRecordReq) (res *artistInfoArtwork.ArtworkCommonNoParams, err error) {
|
2023-02-24 16:30:57 +00:00
|
|
|
|
err = dao.CreateArtworkLockRecord(&model.ArtworkLockRecord{
|
|
|
|
|
ArtistUid: req.ArtistUid,
|
|
|
|
|
ArtworkUid: req.ArtworkUid,
|
|
|
|
|
Status: req.Status,
|
|
|
|
|
LockTime: req.LockTime,
|
|
|
|
|
})
|
|
|
|
|
return
|
|
|
|
|
}
|
|
|
|
|
|
2023-02-25 00:44:50 +00:00
|
|
|
|
func (ArtistInfoArtworkLogic) ArtworkLockAction(req *artistInfoArtwork.ArtworkLockActionRequest) (res *artistInfoArtwork.ArtworkCommonNoParams, err error) {
|
2023-02-24 16:30:57 +00:00
|
|
|
|
switch req.Lock {
|
|
|
|
|
case 2:
|
|
|
|
|
err = dao.BatchLockArtworks(req.ArtistUid)
|
|
|
|
|
case 3:
|
|
|
|
|
err = dao.BatchUnlockArtworks(req.ArtistUid)
|
|
|
|
|
default:
|
|
|
|
|
err = errors.New("lock值错误")
|
|
|
|
|
}
|
|
|
|
|
return
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
func (ArtistInfoArtworkLogic) GetArtworkLockRecords(req *artistInfoArtwork.GetArtworkLockRecordsRequest) (res *artistInfoArtwork.ArtworkLockList, err error) {
|
|
|
|
|
res = &artistInfoArtwork.ArtworkLockList{}
|
|
|
|
|
res, err = dao.GetArtworkLockRecords(req)
|
|
|
|
|
return
|
|
|
|
|
}
|
|
|
|
|
|
2023-02-26 11:57:42 +00:00
|
|
|
|
func (a ArtistInfoArtworkLogic) GetArtworkLockHistoryGroup(request *artistInfoArtwork.GetArtworkLockHistoryRequest) (res *artistInfoArtwork.GetArtworkLockHistoryResponse, err error) {
|
|
|
|
|
// 查询解锁的画作
|
|
|
|
|
unlockArtworkList, err := dao.GetArtworkLockRecords(&artistInfoArtwork.GetArtworkLockRecordsRequest{
|
|
|
|
|
ArtistUid: request.ArtistUid,
|
|
|
|
|
QueryType: artistInfoArtwork.ArtworkQueryMode_AllUnlockArtwork,
|
|
|
|
|
})
|
|
|
|
|
if err != nil {
|
|
|
|
|
return nil, err
|
|
|
|
|
}
|
|
|
|
|
if len(unlockArtworkList.Data) == 0 {
|
|
|
|
|
return nil, nil
|
|
|
|
|
}
|
|
|
|
|
res = &artistInfoArtwork.GetArtworkLockHistoryResponse{}
|
|
|
|
|
var artworkUidList []string
|
|
|
|
|
for _, v := range unlockArtworkList.Data {
|
|
|
|
|
artworkUidList = append(artworkUidList, v.ArtworkUid)
|
|
|
|
|
}
|
|
|
|
|
//查询画作预览列表
|
|
|
|
|
previewListRes, err := service.ArtworkQueryImpl.ArtworkPreviewList(context.Background(), &artwork_query.ArtworkPreviewListRequest{
|
|
|
|
|
Page: 1,
|
|
|
|
|
PageSize: -1,
|
|
|
|
|
ArtworkUids: artworkUidList,
|
|
|
|
|
})
|
|
|
|
|
if err != nil {
|
|
|
|
|
return nil, err
|
|
|
|
|
}
|
|
|
|
|
var thisLockTime = ""
|
|
|
|
|
var groupIndex = -1
|
|
|
|
|
for _, v := range unlockArtworkList.Data {
|
|
|
|
|
var newGroup bool
|
|
|
|
|
if thisLockTime != v.LockTime {
|
|
|
|
|
thisLockTime = v.LockTime
|
|
|
|
|
newGroup = true
|
|
|
|
|
groupIndex++
|
|
|
|
|
}
|
|
|
|
|
if newGroup {
|
|
|
|
|
res.GroupList = append(res.GroupList, &artistInfoArtwork.ArtworkLockRecord{
|
|
|
|
|
LockGroup: v.LockTime,
|
|
|
|
|
DataList: []*artistInfoArtwork.ArtworkPreviewInfo{},
|
|
|
|
|
})
|
|
|
|
|
}
|
|
|
|
|
for _, artwork := range previewListRes.Data {
|
|
|
|
|
res.GroupList[groupIndex].DataList = append(res.GroupList[groupIndex].DataList, &artistInfoArtwork.ArtworkPreviewInfo{
|
|
|
|
|
ArtistUuid: artwork.ArtistUuid,
|
|
|
|
|
ArtworkName: artwork.ArtworkName,
|
|
|
|
|
Length: artwork.Length,
|
|
|
|
|
Width: artwork.Width,
|
|
|
|
|
Ruler: artwork.Ruler,
|
|
|
|
|
CreatedAddress: strings.Split(artwork.CreatedAddress, ","),
|
|
|
|
|
ArtistPhoto: artwork.ArtistPhoto,
|
|
|
|
|
HdPic: artwork.HdPic,
|
|
|
|
|
ArtworkUid: artwork.ArtworkUid,
|
|
|
|
|
CreatedDate: artwork.CreateDate,
|
|
|
|
|
LockStatus: int32(v.Status),
|
2023-02-28 00:30:33 +00:00
|
|
|
|
AuditStatus: v.AuditStatus,
|
|
|
|
|
AuditMark: v.AuditMark,
|
|
|
|
|
AuditMark2: v.AuditMark2,
|
|
|
|
|
CreatedAt: v.CreatedAt,
|
|
|
|
|
UpdatedAt: v.UpdatedAt,
|
|
|
|
|
DeletedAt: v.DeletedAt,
|
2023-02-26 11:57:42 +00:00
|
|
|
|
})
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
return
|
|
|
|
|
}
|
|
|
|
|
|
2023-02-25 00:44:50 +00:00
|
|
|
|
func (ArtistInfoArtworkLogic) DeleteArtworkRecord(req *artistInfoArtwork.DeleteArtworkRecordRequest) (res *artistInfoArtwork.ArtworkCommonNoParams, err error) {
|
|
|
|
|
//检查画作锁定情况
|
|
|
|
|
for _, v := range req.ArtworkUids {
|
|
|
|
|
if dao.HasBeenLocked(v) {
|
|
|
|
|
return nil, errors.New(m.ERROR_ISLOCK)
|
|
|
|
|
}
|
|
|
|
|
}
|
2023-02-24 16:30:57 +00:00
|
|
|
|
err = dao.DeletedArtworkLockRecord(req.ArtworkUids...)
|
|
|
|
|
return
|
|
|
|
|
}
|
2023-02-28 00:30:33 +00:00
|
|
|
|
|
|
|
|
|
func (a ArtistInfoArtworkLogic) UpdateArtworkAuditStatus(request *artistInfoArtwork.UpdateArtworkAuditStatusRequest) (res *artistInfoArtwork.ArtworkCommonNoParams, err error) {
|
|
|
|
|
err = dao.UpdateAuditStatus(request.ArtworkUid, request.AuditStatus, request.AuditMark, request.AuditMark2)
|
|
|
|
|
return
|
|
|
|
|
}
|
2023-03-01 00:34:45 +00:00
|
|
|
|
func (a ArtistInfoArtworkLogic) CheckArtworkEditable(request *artistInfoArtwork.ArtworkUidRequest) (res *artistInfoArtwork.CheckArtworkEditableResponse, err error) {
|
|
|
|
|
res = &artistInfoArtwork.CheckArtworkEditableResponse{
|
|
|
|
|
Editable: false,
|
|
|
|
|
}
|
|
|
|
|
lockDetail, err := dao.GetArtworkLockDetail(request.ArtworkUid)
|
|
|
|
|
if err != nil {
|
|
|
|
|
return nil, err
|
|
|
|
|
}
|
|
|
|
|
//如果画作为锁定状态 并且有锁定时间 并且状态不是已通过
|
|
|
|
|
if lockDetail.Status == 1 && lockDetail.LockTime != "" && lockDetail.AuditStatus != 2 {
|
|
|
|
|
res.Editable = true
|
|
|
|
|
}
|
|
|
|
|
return
|
|
|
|
|
}
|