324 lines
11 KiB
Go
324 lines
11 KiB
Go
package model
|
|
|
|
import (
|
|
"errors"
|
|
"fmt"
|
|
"github.com/fonchain_enterprise/fonchain-approval-fork/pkg/common/collection"
|
|
m2 "github.com/fonchain_enterprise/fonchain-approval-fork/pkg/m"
|
|
"gorm.io/plugin/soft_delete"
|
|
"time"
|
|
)
|
|
|
|
// ExhibitionReward 审批-画展包润格申请
|
|
type ExhibitionReward struct {
|
|
ID uint64 `gorm:"primaryKey;column:id" json:"id"` // ID
|
|
DeletedAt soft_delete.DeletedAt `gorm:"column:deleted_at" json:"deletedAt"` // 删除时间
|
|
CreatedAt time.Time `gorm:"column:created_at" json:"createdAt"` // 创建时间
|
|
UpdatedAt time.Time `gorm:"column:updated_at" json:"updatedAt"` // 更新时间
|
|
ReceivedAt string `gorm:"column:received_at" json:"receivedAt"` // 领取时间
|
|
Address string `gorm:"column:address" json:"Address"` // 地点
|
|
ApprovalID uint64 `gorm:"column:approval_id" json:"approvalId"` // 关联申请的ID
|
|
ApplyID string `gorm:"size:64;column:apply_id;default:''" json:"applyID"` // 画展包的id
|
|
Num uint64 `gorm:"column:num" json:"num"` // 关联申请的ID
|
|
ApprovalExhibitions []*ApprovalReward `gorm:"foreignKey:ExhibitionID" json:"ApprovalExhibitions"` //关联包
|
|
}
|
|
|
|
// TableName get sql table name.获取数据库表名
|
|
func (m *ExhibitionReward) TableName() string {
|
|
return "exhibition_reward"
|
|
}
|
|
|
|
func (m *ExhibitionReward) SaveApprovalContent(in *approval.CreateRequest, a *Approval) error {
|
|
|
|
//主体保存
|
|
m.ApprovalID = a.ID
|
|
m.ReceivedAt = in.Exhibition.ReceivedAt
|
|
//m.Address = in.Exhibition.Address
|
|
m.Num = uint64(len(in.Exhibition.ApprovalExhibitions))
|
|
|
|
err := DB.Create(m).Error
|
|
if err != nil {
|
|
return err
|
|
}
|
|
|
|
//绑定画作保存
|
|
var approvalExhibitions []ApprovalReward
|
|
for _, approvalExhibition := range in.Exhibition.ApprovalExhibitions {
|
|
temp := ApprovalReward{
|
|
ApprovalID: a.ID,
|
|
ExhibitionID: m.ID,
|
|
PackageName: approvalExhibition.PackageName,
|
|
PackageID: approvalExhibition.PackageID,
|
|
PackageSize: approvalExhibition.PackageSize,
|
|
PackageNumber: approvalExhibition.PackageNumber,
|
|
Address: approvalExhibition.Address,
|
|
ShowDate: approvalExhibition.ShowDate,
|
|
TotalPrice: approvalExhibition.TotalPrice,
|
|
}
|
|
|
|
//保存包主体
|
|
temp.ArtExhibitionDetail = ArtExhibitionDetail{
|
|
ShowUID: approvalExhibition.ArtExhibitionDetail.ShowUID,
|
|
ShowSeq: approvalExhibition.ArtExhibitionDetail.ShowSeq,
|
|
ShowName: approvalExhibition.ArtExhibitionDetail.ShowName,
|
|
ArtistName: approvalExhibition.ArtExhibitionDetail.ArtistName,
|
|
ArtistUID: approvalExhibition.ArtExhibitionDetail.ArtistUID,
|
|
ArtworkNum: approvalExhibition.ArtExhibitionDetail.ArtworkNum,
|
|
Ruler: approvalExhibition.ArtExhibitionDetail.Ruler,
|
|
Price: approvalExhibition.ArtExhibitionDetail.Price,
|
|
Reward: approvalExhibition.ArtExhibitionDetail.Reward,
|
|
CreateTime: approvalExhibition.ArtExhibitionDetail.CreateTime,
|
|
Operator: approvalExhibition.ArtExhibitionDetail.Operator,
|
|
IsShow: approvalExhibition.ArtExhibitionDetail.IsShow,
|
|
ShowTime: approvalExhibition.ArtExhibitionDetail.ShowTime,
|
|
Address: approvalExhibition.ArtExhibitionDetail.Address,
|
|
}
|
|
|
|
//画作详情
|
|
for _, t := range approvalExhibition.Artworks {
|
|
|
|
art := Artwork{
|
|
ArtworkPriceUID: t.ArtworkPriceUID,
|
|
ShowUID: t.ShowUID,
|
|
ArtworkUID: t.ArtworkUID,
|
|
ArtworkName: t.ArtworkName,
|
|
ArtistName: t.ArtistName,
|
|
Length: t.Length,
|
|
Width: t.Width,
|
|
Ruler: t.Ruler,
|
|
SmallPic: t.SmallPic,
|
|
Tfnum: t.Tfnum,
|
|
PriceRun: t.Reward,
|
|
SaleAddressID: t.SaleAddressID,
|
|
SellSite: t.SaleAddress,
|
|
}
|
|
temp.Artworks = append(temp.Artworks, art)
|
|
}
|
|
|
|
approvalExhibitions = append(approvalExhibitions, temp)
|
|
}
|
|
|
|
if len(approvalExhibitions) > 0 {
|
|
err = DB.Create(&approvalExhibitions).Error
|
|
}
|
|
|
|
return err
|
|
}
|
|
|
|
func (m *ExhibitionReward) GetApproval(id uint64) (*Approval, error) {
|
|
|
|
var entity *Approval
|
|
if err := DB.
|
|
Preload("ApprovalWorkFlows").
|
|
Preload("ApprovalType").
|
|
Preload("ExhibitionReward.ApprovalExhibitions").
|
|
First(&entity, id).Error; err != nil {
|
|
return entity, err
|
|
}
|
|
|
|
return entity, nil
|
|
}
|
|
|
|
func (m *ExhibitionReward) UpdateApprovalContent(in *approval.CreateRequest, a *Approval) error {
|
|
var entity *Exhibition
|
|
var err error
|
|
|
|
//主体保存
|
|
if err = DB.Where(&Exhibition{ApprovalID: a.ID}).First(&entity).Error; err != nil {
|
|
return errors.New(m2.ErrorNotFound)
|
|
}
|
|
|
|
//主体保存
|
|
//m.ApprovalID = a.ID
|
|
m.ReceivedAt = in.Exhibition.ReceivedAt
|
|
//m.Address = in.Exhibition.Address
|
|
m.Num = uint64(len(in.Exhibition.ApprovalExhibitions))
|
|
m.ID = entity.ID
|
|
|
|
if err = DB.Where(&Exhibition{ApprovalID: a.ID}).Updates(&m).Error; err != nil {
|
|
return err
|
|
}
|
|
|
|
return m.UpdateContent(in, a)
|
|
}
|
|
|
|
// UpdateContent 更新内容
|
|
func (m *ExhibitionReward) UpdateContent(in *approval.CreateRequest, a *Approval) error {
|
|
approvalExhibitions := in.Exhibition.ApprovalExhibitions
|
|
var oldApprovalExhibitions []ApprovalReward
|
|
var oldPackageID []string
|
|
var inPackageID []string
|
|
var err error
|
|
inApprovalExhibitionMap := make(map[string]*approval.ApprovalExhibition, len(approvalExhibitions))
|
|
|
|
DB.Where(&ApprovalReward{ExhibitionID: m.ID}).Find(&oldApprovalExhibitions)
|
|
|
|
for _, oldAW := range oldApprovalExhibitions {
|
|
oldPackageID = append(oldPackageID, oldAW.PackageID)
|
|
}
|
|
|
|
for _, approvalWork := range approvalExhibitions {
|
|
inPackageID = append(inPackageID, approvalWork.PackageID)
|
|
inApprovalExhibitionMap[approvalWork.PackageID] = approvalWork
|
|
}
|
|
|
|
needDel := collection.DiffArrayString(oldPackageID, inPackageID)
|
|
fmt.Println(needDel)
|
|
|
|
if len(needDel) > 0 {
|
|
DB.Where(&ApprovalReward{ExhibitionID: m.ID}).Where("package_id in ?", needDel).
|
|
Delete(&ApprovalReward{})
|
|
}
|
|
|
|
needAdd := collection.DiffArrayString(inPackageID, oldPackageID)
|
|
fmt.Println(needAdd)
|
|
|
|
//传递的id去除表 新增
|
|
if len(needAdd) > 0 {
|
|
var approvalWorks []ApprovalReward
|
|
for _, tempId := range needAdd {
|
|
temp := ApprovalReward{
|
|
ApprovalID: a.ID,
|
|
ExhibitionID: m.ID,
|
|
PackageName: inApprovalExhibitionMap[tempId].PackageName,
|
|
PackageID: inApprovalExhibitionMap[tempId].PackageID,
|
|
//PackageSize: inApprovalExhibitionMap[tempId].PackageSize,
|
|
//PackageNumber: inApprovalExhibitionMap[tempId].PackageNumber,
|
|
Address: inApprovalExhibitionMap[tempId].Address,
|
|
ShowDate: inApprovalExhibitionMap[tempId].ShowDate,
|
|
TotalPrice: inApprovalExhibitionMap[tempId].TotalPrice,
|
|
}
|
|
|
|
approvalWorks = append(approvalWorks, temp)
|
|
}
|
|
|
|
if len(approvalWorks) > 0 {
|
|
if err = DB.Create(&approvalWorks).Error; err != nil {
|
|
return err
|
|
}
|
|
}
|
|
}
|
|
|
|
//更新 主要修改绑定的数据权限id
|
|
changeIds := collection.IntersectArrayString(inPackageID, oldPackageID)
|
|
if len(changeIds) > 0 {
|
|
for _, tempId := range changeIds {
|
|
|
|
if _, ok := inApprovalExhibitionMap[tempId]; ok == false {
|
|
continue
|
|
}
|
|
|
|
temp := ApprovalReward{
|
|
ApprovalID: a.ID,
|
|
ExhibitionID: m.ID,
|
|
PackageName: inApprovalExhibitionMap[tempId].PackageName,
|
|
PackageID: inApprovalExhibitionMap[tempId].PackageID,
|
|
// PackageSize: inApprovalExhibitionMap[tempId].PackageSize,
|
|
// PackageNumber: inApprovalExhibitionMap[tempId].PackageNumber,
|
|
Address: inApprovalExhibitionMap[tempId].Address,
|
|
ShowDate: inApprovalExhibitionMap[tempId].ShowDate,
|
|
TotalPrice: inApprovalExhibitionMap[tempId].TotalPrice,
|
|
}
|
|
|
|
DB.Model(&ApprovalReward{}).
|
|
Where(&ApprovalReward{PackageID: inApprovalExhibitionMap[tempId].PackageID, ExhibitionID: m.ID}).
|
|
Updates(temp)
|
|
}
|
|
}
|
|
|
|
return err
|
|
}
|
|
|
|
func (m *ExhibitionReward) BuildResContent(a *Approval, request *approval.CreateRequest) {
|
|
if a.ExhibitionReward == nil {
|
|
return
|
|
}
|
|
//ApprovalWorks []*ApprovalWork `protobuf:"bytes,4,rep,name=ApprovalWorks,json=approvalWorks,proto3" json:"ApprovalWorks,omitempty"`
|
|
var approvalExhibitions []*approval.ApprovalExhibition
|
|
|
|
for _, one := range a.ExhibitionReward.ApprovalExhibitions {
|
|
temp := &approval.ApprovalExhibition{
|
|
|
|
ID: one.ID,
|
|
ApprovalID: one.ApprovalID,
|
|
ExhibitionID: one.ExhibitionID,
|
|
PackageID: one.PackageID,
|
|
PackageName: one.PackageName,
|
|
PackageSize: one.PackageSize,
|
|
PackageNumber: one.PackageNumber,
|
|
Address: one.Address,
|
|
ShowDate: one.ShowDate,
|
|
TotalPrice: one.TotalPrice,
|
|
}
|
|
|
|
//保存包主体
|
|
temp.ArtExhibitionDetail = &approval.ArtExhibitionDetail{
|
|
ShowUID: one.ArtExhibitionDetail.ShowUID,
|
|
ShowSeq: one.ArtExhibitionDetail.ShowSeq,
|
|
ShowName: one.ArtExhibitionDetail.ShowName,
|
|
ArtistName: one.ArtExhibitionDetail.ArtistName,
|
|
ArtistUID: one.ArtExhibitionDetail.ArtistUID,
|
|
ArtworkNum: one.ArtExhibitionDetail.ArtworkNum,
|
|
Ruler: one.ArtExhibitionDetail.Ruler,
|
|
Price: one.ArtExhibitionDetail.Price,
|
|
Reward: one.ArtExhibitionDetail.Reward,
|
|
CreateTime: one.ArtExhibitionDetail.CreateTime,
|
|
Operator: one.ArtExhibitionDetail.Operator,
|
|
IsShow: one.ArtExhibitionDetail.IsShow,
|
|
ShowTime: one.ArtExhibitionDetail.ShowTime,
|
|
Address: one.ArtExhibitionDetail.Address,
|
|
}
|
|
|
|
//画作详情
|
|
for _, t := range one.Artworks {
|
|
|
|
fmt.Println("1---", t.PriceRun, t.SellSite)
|
|
art := &approval.Artwork{
|
|
ArtworkPriceUID: t.ArtworkPriceUID,
|
|
ShowUID: t.ShowUID,
|
|
ArtworkUID: t.ArtworkUID,
|
|
ArtworkName: t.ArtworkName,
|
|
ArtistName: t.ArtistName,
|
|
Length: t.Length,
|
|
Width: t.Width,
|
|
Ruler: t.Ruler,
|
|
SmallPic: t.SmallPic,
|
|
Tfnum: t.Tfnum,
|
|
Reward: t.PriceRun,
|
|
SaleAddressID: t.SaleAddressID,
|
|
SaleAddress: t.SellSite,
|
|
}
|
|
|
|
temp.Artworks = append(temp.Artworks, art)
|
|
}
|
|
|
|
approvalExhibitions = append(approvalExhibitions, temp)
|
|
|
|
}
|
|
|
|
request.Exhibition = &approval.Exhibition{
|
|
ID: a.ExhibitionReward.ID,
|
|
ReceivedAt: a.ExhibitionReward.ReceivedAt,
|
|
ApplyID: a.ExhibitionReward.ApplyID,
|
|
Address: a.ExhibitionReward.Address,
|
|
Num: a.ExhibitionReward.Num,
|
|
ApprovalExhibitions: approvalExhibitions,
|
|
}
|
|
}
|
|
|
|
func (m *ExhibitionReward) DeleteApproval(p *Approval) error {
|
|
var err error
|
|
|
|
if err = DB.Where(&ApprovalReward{ApprovalID: p.ID}).
|
|
Delete(&ApprovalReward{}).Error; err != nil {
|
|
return err
|
|
}
|
|
|
|
if err = DB.Where(&ExhibitionReward{ApprovalID: p.ID}).
|
|
Delete(&ExhibitionReward{}).Error; err != nil {
|
|
return err
|
|
}
|
|
|
|
return err
|
|
}
|