2023-01-18 09:03:15 +00:00
|
|
|
|
package dao
|
|
|
|
|
|
|
|
|
|
import (
|
|
|
|
|
"errors"
|
|
|
|
|
|
2023-02-06 01:33:09 +00:00
|
|
|
|
"github.com/fonchain/fonchain-artistinfo/cmd/model"
|
|
|
|
|
db "github.com/fonchain/fonchain-artistinfo/pkg/db"
|
|
|
|
|
"github.com/fonchain/fonchain-artistinfo/pkg/m"
|
2023-03-03 08:18:00 +00:00
|
|
|
|
uuid "github.com/satori/go.uuid"
|
2023-01-18 09:03:15 +00:00
|
|
|
|
"go.uber.org/zap"
|
2023-03-03 08:18:00 +00:00
|
|
|
|
"gorm.io/gorm"
|
2023-01-18 09:03:15 +00:00
|
|
|
|
)
|
|
|
|
|
|
2023-03-03 08:18:00 +00:00
|
|
|
|
func GetMgmtContractByArtistUid(artistUid string, contractType int32) (err error) {
|
|
|
|
|
var contract model.Contract
|
|
|
|
|
if err = db.DB.Where("artist_uid = ? AND type = ?", artistUid, contractType).First(&contract).Error; err != nil && err != gorm.ErrRecordNotFound {
|
2023-01-18 09:03:15 +00:00
|
|
|
|
zap.L().Error("get contract info err", zap.Error(err))
|
|
|
|
|
err = errors.New(m.ERROR_SELECT)
|
|
|
|
|
return
|
|
|
|
|
}
|
|
|
|
|
|
2023-03-03 08:18:00 +00:00
|
|
|
|
return
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
func CreateArtistContract(tx *gorm.DB, contract *model.Contract) (err error) {
|
|
|
|
|
if err = tx.Create(contract).Error; err != nil {
|
|
|
|
|
zap.L().Error("create contract err", zap.Error(err))
|
|
|
|
|
err = errors.New(m.CREATE_ERROR)
|
2023-01-18 09:03:15 +00:00
|
|
|
|
return
|
|
|
|
|
}
|
|
|
|
|
return
|
|
|
|
|
}
|
|
|
|
|
|
2023-03-03 08:18:00 +00:00
|
|
|
|
func GetMgmtContractByArtworkUid(artworkUid string, artworkType int32) (err error) {
|
|
|
|
|
//画作有合同类型是2,6的都是 点击过"著作权代理转让服务合同"的
|
|
|
|
|
var contract model.Contract
|
|
|
|
|
if err = db.DB.Where("artwork_uid = ? AND type = ?", artworkUid, 2).First(&contract).Error; err != nil && err != gorm.ErrRecordNotFound {
|
|
|
|
|
zap.L().Error("get contract info err", zap.Error(err))
|
2023-01-18 09:03:15 +00:00
|
|
|
|
err = errors.New(m.ERROR_SELECT)
|
|
|
|
|
return
|
|
|
|
|
}
|
2023-03-03 08:18:00 +00:00
|
|
|
|
return
|
|
|
|
|
}
|
2023-01-18 09:03:15 +00:00
|
|
|
|
|
2023-03-03 08:18:00 +00:00
|
|
|
|
func CreateArtworkContract(tx *gorm.DB, artworkUid string, artistUid string, contractType int32) (err error) {
|
|
|
|
|
var uid uuid.UUID
|
|
|
|
|
if uid, err = uuid.NewV4(); err != nil {
|
|
|
|
|
err = errors.New(m.ERROR_UID)
|
2023-01-18 09:03:15 +00:00
|
|
|
|
return
|
|
|
|
|
}
|
|
|
|
|
|
2023-03-03 08:18:00 +00:00
|
|
|
|
contract := &model.Contract{
|
|
|
|
|
Uid: uid.String(),
|
|
|
|
|
ArtistUid: artistUid,
|
|
|
|
|
ArtworkUid: artworkUid,
|
|
|
|
|
Type: contractType,
|
|
|
|
|
State: 1,
|
|
|
|
|
}
|
|
|
|
|
if err = tx.Create(contract).Error; err != nil {
|
|
|
|
|
zap.L().Error("create contract err", zap.Error(err))
|
|
|
|
|
err = errors.New(m.CREATE_ERROR)
|
|
|
|
|
return
|
2023-01-18 09:03:15 +00:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return
|
|
|
|
|
}
|
|
|
|
|
|
2023-03-03 08:18:00 +00:00
|
|
|
|
// func FinishContract(tx *gorm.DB, id string) (contract model.Contract, err error) {
|
|
|
|
|
// if err = tx.Where("transaction_id = ?", id).First(&contract).Error; err != nil {
|
|
|
|
|
// zap.L().Error("get contract info err", zap.Error(err))
|
|
|
|
|
// err = errors.New(m.ERROR_SELECT)
|
|
|
|
|
// return
|
|
|
|
|
// }
|
2023-01-18 09:03:15 +00:00
|
|
|
|
|
2023-03-03 08:18:00 +00:00
|
|
|
|
// if err = db.DB.Model(&contract).Update("state", 3).Error; err != nil {
|
|
|
|
|
// zap.L().Error("user contract failed", zap.Error(err))
|
|
|
|
|
// err = errors.New(m.UPDATE_FAILED)
|
|
|
|
|
// return
|
|
|
|
|
// }
|
2023-01-18 09:03:15 +00:00
|
|
|
|
|
2023-03-03 08:18:00 +00:00
|
|
|
|
// return
|
|
|
|
|
// }
|
2023-01-18 09:03:15 +00:00
|
|
|
|
|
2023-03-03 08:18:00 +00:00
|
|
|
|
// func UpdateArtworkState(tx *gorm.DB, id int32) (err error) { //无用
|
|
|
|
|
// var artworkState model.ArtworkState
|
|
|
|
|
// if err = tx.Where("artwork_id = ? and state = ? ", id, 7).First(&artworkState).Error; err != nil {
|
|
|
|
|
// if err == gorm.ErrRecordNotFound {
|
|
|
|
|
// artworkState.ArtworkId = id
|
|
|
|
|
// artworkState.State = 7
|
|
|
|
|
// if err = tx.Create(&artworkState).Error; err != nil {
|
|
|
|
|
// zap.L().Error("create artworkState err", zap.Error(err))
|
|
|
|
|
// err = errors.New(m.CREATE_ERROR)
|
|
|
|
|
// return
|
|
|
|
|
// }
|
|
|
|
|
// } else {
|
|
|
|
|
// zap.L().Error("find artworkState info err", zap.Error(err))
|
|
|
|
|
// err = errors.New(m.ERROR_DATA_NOT_EXISTS)
|
|
|
|
|
// return
|
|
|
|
|
// }
|
|
|
|
|
// }
|
2023-01-18 09:03:15 +00:00
|
|
|
|
|
2023-03-03 08:18:00 +00:00
|
|
|
|
// if err = tx.Model(&model.Artwork{}).Where("id = ? ", id).Update("flow_state", 7).Error; err != nil {
|
|
|
|
|
// zap.L().Error("Artwork Update Err", zap.Error(err))
|
|
|
|
|
// err = errors.New(m.ERROR_DATA_NOT_EXISTS)
|
|
|
|
|
// return
|
|
|
|
|
// }
|
2023-01-18 09:03:15 +00:00
|
|
|
|
|
2023-03-03 08:18:00 +00:00
|
|
|
|
// return
|
|
|
|
|
// }
|
2023-01-18 09:03:15 +00:00
|
|
|
|
|
2023-03-03 08:18:00 +00:00
|
|
|
|
// func ContractList(req *contract.ContractListRequest) (rep *contract.ContractListRespond, err error) {
|
|
|
|
|
// rep = &contract.ContractListRespond{}
|
|
|
|
|
// var Data []*contract.ContractData
|
|
|
|
|
|
|
|
|
|
// var user model.User
|
|
|
|
|
// if err = db.DB.Where("id = ? ", req.ID).First(&user).Error; err != nil {
|
|
|
|
|
// zap.L().Error("get user info err", zap.Error(err))
|
|
|
|
|
// err = errors.New(m.ERROR_SELECT)
|
|
|
|
|
// return
|
|
|
|
|
// }
|
|
|
|
|
|
|
|
|
|
// var realName model.RealName
|
|
|
|
|
// if err = db.DB.Where("id = ? ", user.RealNameId).First(&realName).Error; err != nil {
|
|
|
|
|
// zap.L().Error("get realName info err", zap.Error(err))
|
|
|
|
|
// err = errors.New(m.ERROR_SELECT)
|
|
|
|
|
// return
|
|
|
|
|
// }
|
|
|
|
|
|
|
|
|
|
// var args []interface{}
|
|
|
|
|
// var sqlWhere = "user_id = ? and type !=4 "
|
|
|
|
|
// args = append(args, req.ID)
|
|
|
|
|
|
|
|
|
|
// if req.State != 0 {
|
|
|
|
|
// sqlWhere += " and state = ? "
|
|
|
|
|
// if req.State == 2 {
|
|
|
|
|
// req.State = 3
|
|
|
|
|
// }
|
|
|
|
|
// args = append(args, req.State)
|
|
|
|
|
// }
|
|
|
|
|
|
|
|
|
|
// var contractModel []model.Contract
|
|
|
|
|
// if err = db.DB.Where(sqlWhere, args...).Find(&contractModel).Error; err != nil {
|
|
|
|
|
// zap.L().Error("get contractModels info err", zap.Error(err))
|
|
|
|
|
// err = errors.New(m.ERROR_SELECT)
|
|
|
|
|
// return
|
|
|
|
|
// }
|
|
|
|
|
|
|
|
|
|
// for _, v := range contractModel {
|
|
|
|
|
// contract := &contract.ContractData{}
|
|
|
|
|
// contract.ID = uint64(v.ID)
|
|
|
|
|
// contract.ContractId = v.ContractId
|
|
|
|
|
// contract.DownloadUrl = v.DownloadUrl
|
|
|
|
|
// contract.MgmtUserId = v.MgmtUserId
|
|
|
|
|
// contract.State = int64(v.State)
|
|
|
|
|
// contract.TransactionId = v.TransactionId
|
|
|
|
|
// contract.Type = int64(v.Type)
|
|
|
|
|
// contract.UserId = int64(v.UserId)
|
|
|
|
|
// contract.ViewUrl = v.ViewUrl
|
|
|
|
|
// contract.ExpirationTime = v.CreatedAt.Add(86400 * time.Second).Format("2006-01-02 15:04:05")
|
|
|
|
|
// contract.SignTime = v.UpdatedAt.Format("2006-01-02")
|
|
|
|
|
// Data = append(Data, contract)
|
|
|
|
|
// }
|
|
|
|
|
|
|
|
|
|
// rep.Data = Data
|
|
|
|
|
|
|
|
|
|
// return
|
|
|
|
|
// }
|
|
|
|
|
|
|
|
|
|
// func ContractTxList(req *contract.ContractTxListRequest) (rep *contract.ContractTxListRespond, err error) {
|
|
|
|
|
// rep = &contract.ContractTxListRespond{}
|
|
|
|
|
// var Data []*contract.ContractData
|
|
|
|
|
|
|
|
|
|
// var user model.User
|
|
|
|
|
// if err = db.DB.Where("id = ? ", int32(req.ID)).First(&user).Error; err != nil {
|
|
|
|
|
// zap.L().Error("get user info err", zap.Error(err))
|
|
|
|
|
// err = errors.New(m.ERROR_SELECT)
|
|
|
|
|
// return
|
|
|
|
|
// }
|
|
|
|
|
// // todo
|
|
|
|
|
// //var realName model.RealName
|
|
|
|
|
// //if err = db.DB.Where("id = ? ", user.RealNameID).First(&realName).Error; err != nil {
|
|
|
|
|
// // zap.L().Error("get realName info err", zap.Error(err))
|
|
|
|
|
// // err = errors.New(m.ERROR_SELECT)
|
|
|
|
|
// // return
|
|
|
|
|
// //}
|
|
|
|
|
// //
|
|
|
|
|
// //var args []interface{}
|
|
|
|
|
// //var sqlWhere = " card_id = ? and (type = 4 or type = 7) "
|
|
|
|
|
// //args = append(args, realName.IDNum)
|
|
|
|
|
// //if req.State != 0 {
|
|
|
|
|
// // sqlWhere += " and state = ? "
|
|
|
|
|
// // args = append(args, req.State)
|
|
|
|
|
// //}
|
|
|
|
|
// //
|
|
|
|
|
// //var contractModel []model.Contract
|
|
|
|
|
// //if err = db.DB.Where(sqlWhere, args...).Find(&contractModel).Error; err != nil {
|
|
|
|
|
// // zap.L().Error("get contractModels info err", zap.Error(err))
|
|
|
|
|
// // err = errors.New(m.ERROR_SELECT)
|
|
|
|
|
// // return
|
|
|
|
|
// //}
|
|
|
|
|
// //
|
|
|
|
|
// //for _, v := range contractModel {
|
|
|
|
|
// // contractTmp := &contract.ContractData{}
|
|
|
|
|
// // contractTmp.ID = uint64(v.ID)
|
|
|
|
|
// // contractTmp.ContractId = v.ContractId
|
|
|
|
|
// // contractTmp.DownloadUrl = v.DownloadUrl
|
|
|
|
|
// // contractTmp.MgmtUserId = v.MgmtUserId
|
|
|
|
|
// // contractTmp.State = int64(v.State)
|
|
|
|
|
// // contractTmp.TransactionId = v.TransactionId
|
|
|
|
|
// // contractTmp.Type = int64(v.Type)
|
|
|
|
|
// // var b string
|
|
|
|
|
// // if v.Type == 4 {
|
|
|
|
|
// // b = "物权"
|
|
|
|
|
// // }
|
|
|
|
|
// // if v.Type == 7 {
|
|
|
|
|
// // b = "版权"
|
|
|
|
|
// // }
|
|
|
|
|
// // contractTmp.BatchName = b + v.BatchName[0:4] + "年" + v.BatchName[4:6] + "月" + v.BatchName[6:11] + "年" + v.BatchName[11:13] + "月"
|
|
|
|
|
// // contractTmp.UserId = int64(v.UserId)
|
|
|
|
|
// // contractTmp.ViewUrl = v.ViewUrl
|
|
|
|
|
// // contractTmp.ExpirationTime = v.CreatedAt.Add(86400 * time.Second).Format("2006-01-02 15:04:05")
|
|
|
|
|
// // contractTmp.SignTime = v.UpdatedAt.Format("2006-01-02")
|
|
|
|
|
// // Data = append(Data, contractTmp)
|
|
|
|
|
// //}
|
|
|
|
|
|
|
|
|
|
// rep.Data = Data
|
|
|
|
|
|
|
|
|
|
// return
|
|
|
|
|
// }
|
|
|
|
|
|
|
|
|
|
// func GetContract(id int32) (rep *contract.ContractData, err error) {
|
|
|
|
|
// var con model.Contract
|
|
|
|
|
// if err = db.DB.Where("id = ? ", id).First(&con).Error; err != nil {
|
|
|
|
|
// zap.L().Error("get contract info err", zap.Error(err))
|
|
|
|
|
// err = errors.New(m.ERROR_SELECT)
|
|
|
|
|
// return
|
|
|
|
|
// }
|
|
|
|
|
// rep.ID = uint64(con.ID)
|
|
|
|
|
// rep.UserId = int64(con.UserId)
|
|
|
|
|
// rep.CardId = con.CardId
|
|
|
|
|
// rep.MgmtUserId = con.MgmtUserId
|
|
|
|
|
// rep.ArtworkId = con.ArtworkId
|
|
|
|
|
// rep.ContractId = con.ContractId
|
|
|
|
|
// rep.TransactionId = con.TransactionId
|
|
|
|
|
// rep.Type = int64(con.Type)
|
|
|
|
|
// rep.BatchName = con.BatchName
|
|
|
|
|
// rep.ViewUrl = con.ViewUrl
|
|
|
|
|
// rep.DownloadUrl = con.DownloadUrl
|
|
|
|
|
// rep.State = int64(con.State)
|
|
|
|
|
|
|
|
|
|
// return
|
|
|
|
|
// }
|
|
|
|
|
|
|
|
|
|
// // 更新交易id
|
|
|
|
|
// func UpdateContract(req *contract.UpdateContractRequest) error {
|
|
|
|
|
// //数据库操作异常
|
|
|
|
|
// var con model.Contract
|
|
|
|
|
// if err := db.DB.Model(&con).Updates(&model.Contract{ContractId: req.ContractId, ViewUrl: req.ViewUrl, DownloadUrl: req.DownloadUrl}).Error; err != nil {
|
|
|
|
|
// //在线和下载的链接
|
|
|
|
|
// return err
|
|
|
|
|
// }
|
|
|
|
|
// return nil
|
|
|
|
|
// }
|
|
|
|
|
|
|
|
|
|
// // 更新交易id
|
|
|
|
|
// func UpdateContractTx(txId string, contractId int32) (err error) {
|
|
|
|
|
// var con model.Contract
|
|
|
|
|
// con.ID = contractId
|
|
|
|
|
// if err = db.DB.Model(&con).Update("transaction_id", txId).Error; err != nil { //改变交易id
|
|
|
|
|
// return
|
|
|
|
|
// }
|
|
|
|
|
// if err = db.DB.Model(&con).Update("state", 1).Error; err != nil { //更新合约状态 // 1:待生成 2 待签署 3 签署完成
|
|
|
|
|
// return
|
|
|
|
|
// }
|
|
|
|
|
// return
|
|
|
|
|
// }
|