fonchain-artistinfo/cmd/internal/logic/mgmt_statement.go

261 lines
7.6 KiB
Go
Raw Normal View History

2023-04-03 06:07:37 +00:00
package logic
import (
"errors"
"github.com/fonchain/fonchain-artistinfo/cmd/internal/dao"
"github.com/fonchain/fonchain-artistinfo/cmd/model"
"github.com/fonchain/fonchain-artistinfo/pb/mgmtStatement"
db "github.com/fonchain/fonchain-artistinfo/pkg/db"
"github.com/fonchain/fonchain-artistinfo/pkg/m"
uuid "github.com/satori/go.uuid"
)
type IMgmtStatement interface {
AddBatchDetail(in *mgmtStatement.AddBatchDetailreq) (*mgmtStatement.AddBatchDetailres, error)
UploadExcelOne(in *mgmtStatement.UploadExcelOnereq) (*mgmtStatement.UploadExcelOneres, error)
UploadExcelTwo(in *mgmtStatement.UploadExcelTworeq) (*mgmtStatement.UploadExcelTwores, error)
ArtistStatementList(in *mgmtStatement.ArtistStatementListreq) (*mgmtStatement.ArtistStatementListres, error)
ArtStatementList(in *mgmtStatement.ArtStatementListreq) (*mgmtStatement.ArtStatementListres, error)
ExportContract(in *mgmtStatement.ExportContractreq) (*mgmtStatement.ExportContractres, error)
UpdateState(in *mgmtStatement.UpdateStatementreq) error
CreateTxContract(in *mgmtStatement.CreateTxContractreq) (resp *mgmtStatement.CreateTxContractres, err error)
}
func NewMgmtStatement() IMgmtStatement {
return &MgmtStatement{}
}
type MgmtStatement struct{}
//通过excel生成一条批次数据
func (a *MgmtStatement) AddBatchDetail(in *mgmtStatement.AddBatchDetailreq) (resp *mgmtStatement.AddBatchDetailres, err error) {
resp = &mgmtStatement.AddBatchDetailres{}
var uid uuid.UUID
if uid, err = uuid.NewV4(); err != nil {
err = errors.New(m.ERROR_UID)
return
}
if err != nil {
return nil, err
}
var data model.ArtworkTx
data.Uid = uid.String()
data.ArtistName = in.ArtistName
data.ArtistUid = in.ArtistUid
data.BatchTime = in.BatchTime
data.StType = in.StType //对账单类型1=版权 2=物权
data.Status = 1 //对账单状态 1.未签署 2.已发送未签署 3.已签署
if err = dao.AddBatchDetail(&data); err != nil {
return
}
respData := &mgmtStatement.AddBatchRes{BatchUid: data.Uid}
resp.Data = respData
return
}
//生成一条对账单记录(附件一)
func (a *MgmtStatement) UploadExcelOne(in *mgmtStatement.UploadExcelOnereq) (resp *mgmtStatement.UploadExcelOneres, err error) {
resp = &mgmtStatement.UploadExcelOneres{}
var uid uuid.UUID
if uid, err = uuid.NewV4(); err != nil {
err = errors.New(m.ERROR_UID)
return
}
if err != nil {
return nil, err
}
var data model.ArtworkSoldTxDetail //物权版权的对账单
sqlSelect := `select uid from artwork_tx where artistid = ? and batchtime = ?`
var batchid string
if err := db.DB.Raw(sqlSelect, data.ArtistUid, data.BatchTime).Find(&batchid).Error; err != nil {
return nil, err
}
data.Uid = uid.String()
data.BatchUid = batchid
data.ArtworkName = in.ArtworkName
data.ArtistName = in.ArtistName
data.ArtistUid = in.ArtistUid
data.TfNum = in.TfNum
data.BatchTime = in.BatchTime
data.GuaranteePrice = in.GuaranteePrice
data.Ruler = in.Ruler
data.MinPrice = in.MinPrice
data.StType = in.StType //对账单类型1=版权 2=物权
if err = dao.UploadExcelOne(&data); err != nil {
return
}
respData := &mgmtStatement.StatementAddRes{StatementUid: data.Uid}
resp.Data = respData
return
}
//生成一条对账单记录(附件二)
func (a *MgmtStatement) UploadExcelTwo(in *mgmtStatement.UploadExcelTworeq) (resp *mgmtStatement.UploadExcelTwores, err error) {
resp = &mgmtStatement.UploadExcelTwores{}
var uid uuid.UUID
if uid, err = uuid.NewV4(); err != nil {
err = errors.New(m.ERROR_UID)
return
}
if err != nil {
return nil, err
}
var data model.ArtworkSoldTxDetail //物权版权的对账单
sqlSelect := `select uid from artwork_tx_batch where artistid = ? and batchtime = ?`
var batchid string
if err := db.DB.Raw(sqlSelect, data.ArtistUid, data.BatchTime).Find(&batchid).Error; err != nil {
return nil, err
}
data.Uid = uid.String()
data.BatchUid = batchid
data.ArtworkName = in.ArtworkName
data.ArtistName = in.ArtistName
data.ArtistUid = in.ArtistUid
data.TfNum = in.TfNum
data.BatchTime = in.BatchTime
data.Ruler = in.Ruler
data.MinPrice = in.MinPrice
data.StType = in.StType //对账单类型1=版权 2=物权
if err = dao.UploadExcelTwo(&data); err != nil {
return
}
respData := &mgmtStatement.StatementAddRes{StatementUid: data.Uid}
resp.Data = respData
return
}
//画家对账单列表
func (a *MgmtStatement) ArtistStatementList(in *mgmtStatement.ArtistStatementListreq) (resp *mgmtStatement.ArtistStatementListres, err error) {
resp = &mgmtStatement.ArtistStatementListres{}
if in.Page < model.InitPage {
in.Page = model.InitPage
}
if in.PageSize < 1 {
in.PageSize = model.PageSize
}
var list []*model.ArtworkSoldTxDetail
var count int64
if list, count, err = dao.ArtistStatementList(in); err != nil {
return
}
resp.Count = int32(count)
resp.Page = in.Page
resp.PageSize = in.PageSize
for _, v := range list {
temp := mgmtStatement.ArtistStatementListres_Info{}
temp.ArtistName = v.ArtistName
temp.ArtistUid = v.ArtistUid
temp.BatchTime = v.BatchTime
resp.Data = append(resp.Data, &temp)
}
return
}
//画作列表,根据画家和批次
func (a *MgmtStatement) ArtStatementList(in *mgmtStatement.ArtStatementListreq) (resp *mgmtStatement.ArtStatementListres, err error) {
resp = &mgmtStatement.ArtStatementListres{}
if in.Page < model.InitPage {
in.Page = model.InitPage
}
if in.PageSize < 1 {
in.PageSize = model.PageSize
}
var list []*model.ArtworkSoldTxDetail
var count int64
if list, count, err = dao.ArtStatementList(in); err != nil {
return
}
resp.Count = int32(count)
resp.Page = in.Page
resp.PageSize = in.PageSize
for _, v := range list {
temp := mgmtStatement.ArtStatementListres_Info{}
temp.ArtistName = v.ArtworkName
temp.ArtistUid = v.ArtistUid
temp.ArtworkName = v.ArtworkName
temp.Ruler = v.Ruler
temp.SaleNo = v.SaleNo
temp.TfNum = v.TfNum
temp.CompleteDate = v.CompleteDate
temp.MinPrice = v.MinPrice
}
return
}
//更新对账单状态
func (a *MgmtStatement) UpdateState(in *mgmtStatement.UpdateStatementreq) (err error) {
columns := map[string]interface{}{
"status": in.Status, //状态
}
if err = dao.UpdateState(in.StatementUid, columns); err != nil {
return
}
return
}
//导出合同
func (a *MgmtStatement) ExportContract(in *mgmtStatement.ExportContractreq) (resp *mgmtStatement.ExportContractres, err error) {
resp = &mgmtStatement.ExportContractres{}
if in.Page < model.InitPage {
in.Page = model.InitPage
}
if in.PageSize < 1 {
in.PageSize = model.PageSize
}
var list []*model.Contract
var count int64
if list, count, err = dao.ExportContract(in); err != nil {
return
}
resp.Count = int32(count)
for _, v := range list {
temp := mgmtStatement.ExportContractres_Info{}
temp.DownloadUrl = v.DownloadUrl
temp.BatchTime = v.BatchTime
temp.StType = v.StType
temp.ViewUrl = v.ViewUrl
temp.BatchUid = v.BatchUid
temp.ArtistUid = v.ArtistUid
resp.Data = append(resp.Data, &temp)
}
return
}
//生成合同
func (a *MgmtStatement) CreateTxContract(in *mgmtStatement.CreateTxContractreq) (resp *mgmtStatement.CreateTxContractres, err error) {
resp = &mgmtStatement.CreateTxContractres{}
var uid uuid.UUID
if uid, err = uuid.NewV4(); err != nil {
err = errors.New(m.ERROR_UID)
return
}
if err != nil {
return nil, err
}
var data model.Contract
data.Uid = uid.String()
data.ArtistUid = in.ArtistUid
data.BatchTime = in.BatchTime
data.BatchUid = in.BatchUid
data.ContractId = in.ContractId
data.StType = in.StType
data.Status = 1
data.DownloadUrl = in.DownloadUrl
data.ViewUrl = in.ViewUrl
data.CardId = in.CardId
if err = dao.CreateTxContract(&data); err != nil {
return
}
respData := &mgmtStatement.AddContractRes{BatchUid: data.Uid}
resp.Data = respData
return
}