fonchain-artistinfo/cmd/internal/logic/mgmt_statement.go
2023-04-03 14:07:37 +08:00

261 lines
7.6 KiB
Go
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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
}