261 lines
7.6 KiB
Go
261 lines
7.6 KiB
Go
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
|
||
}
|