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

750 lines
23 KiB
Go
Raw Normal View History

2023-01-18 09:03:15 +00:00
package logic
import (
2023-03-03 08:18:00 +00:00
"context"
2023-03-10 09:58:13 +00:00
"encoding/json"
2023-03-03 08:18:00 +00:00
"errors"
2023-03-10 09:58:13 +00:00
"fmt"
"strings"
"time"
2023-03-03 08:18:00 +00:00
2023-02-06 01:33:09 +00:00
"github.com/fonchain/fonchain-artistinfo/cmd/internal/dao"
2023-03-03 08:18:00 +00:00
"github.com/fonchain/fonchain-artistinfo/cmd/model"
"github.com/fonchain/fonchain-artistinfo/pb/artist"
2023-03-14 02:35:56 +00:00
"github.com/fonchain/fonchain-artistinfo/pb/artwork"
2023-03-14 05:19:20 +00:00
contract "github.com/fonchain/fonchain-artistinfo/pb/contract"
2023-03-10 09:58:13 +00:00
contractMicroservice "github.com/fonchain/fonchain-artistinfo/pb/contract_microservice"
2023-03-03 08:18:00 +00:00
db "github.com/fonchain/fonchain-artistinfo/pkg/db"
"github.com/fonchain/fonchain-artistinfo/pkg/m"
"github.com/fonchain/fonchain-artistinfo/pkg/service"
uuid "github.com/satori/go.uuid"
"gorm.io/gorm"
2023-01-18 09:03:15 +00:00
)
type IContract interface {
2023-03-03 08:18:00 +00:00
CreateContract(req *contract.CreateContractRequest) (rep *contract.CreateContractRespond, err error)
2023-03-10 09:58:13 +00:00
ContractListMgmt(req *contract.ContractListMgmtRequest) (rep *contract.ContractListMgmtRespond, err error)
2023-01-18 09:03:15 +00:00
ContractList(req *contract.ContractListRequest) (rep *contract.ContractListRespond, err error)
2023-03-10 09:58:13 +00:00
SignContract(req *contract.SignContractRequest) (rep *contract.SignContractRespond, err error)
2023-03-14 02:35:56 +00:00
FinishContract(req *contract.FinishContractRequest) (rep *contract.FinishContractRespond, err error)
2023-03-14 05:19:20 +00:00
// ContractTxList(req *contract.ContractTxListRequest) (rep *contract.ContractTxListRespond, err error)
2023-03-10 09:58:13 +00:00
// ContractList(req *contract.ContractListRequest) (rep *contract.ContractListRespond, err error)
// UpdateContract(req *contract.UpdateContractRequest) (rep *contract.UpdateContractRespond, err error)
// UpdateContractTx(req *contract.UpdateContractTxRequest) (rep *contract.UpdateContractTxRespond, err error)
// GetContract(req *contract.GetContractRequest) (rep *contract.ContractData, err error)
2023-01-18 09:03:15 +00:00
}
func NewContract() IContract {
return &Contract{}
}
type Contract struct {
}
2023-03-03 08:18:00 +00:00
func (a *Contract) CreateContract(req *contract.CreateContractRequest) (rep *contract.CreateContractRespond, err error) {
rep = &contract.CreateContractRespond{}
//遇到错误数据库回滚
tx := db.DB.Begin()
2023-03-15 10:06:21 +00:00
userInfo, err := dao.GetArtistInfoByArtistUid(req.ArtistUid)
2023-03-10 09:58:13 +00:00
if err != nil {
return
}
2023-03-15 10:06:21 +00:00
fmt.Println("第二处111111111111111")
2023-03-03 08:18:00 +00:00
switch req.Type {
//1 画家合同(不涉及画家的画作)
case 1:
//查看画家合同是否已经存在,不存在继续
if err = dao.GetMgmtContractByArtistUid(req.ArtistUid, req.Type); err == gorm.ErrRecordNotFound {
var uid uuid.UUID
if uid, err = uuid.NewV4(); err != nil {
err = errors.New(m.ERROR_UID)
return
}
//创建画家合同
contract := &model.Contract{
Uid: uid.String(),
ArtistUid: req.ArtistUid,
Type: 1,
State: 1,
2023-03-10 09:58:13 +00:00
Status: 2,
LockTime: userInfo.LatestLockTime,
2023-03-03 08:18:00 +00:00
}
if err = dao.CreateArtistContract(tx, contract); err != nil {
return
}
} else {
return
}
case 2:
for _, v := range req.ArtworkUid {
//查看画作合同是否已经存在,不存在继续类型2、6
if err = dao.GetMgmtContractByArtworkUid(v, 2); err == gorm.ErrRecordNotFound {
} else {
return
}
2023-03-10 09:58:13 +00:00
if err = dao.GetMgmtContractByArtworkUid(v, 6); err == gorm.ErrRecordNotFound {
} else {
return
}
}
//创建画家画作合同类型2,如果批次选择多个画作的话,那么多个画在一个合同中
if err = dao.CreateArtworkContract(tx, req.ArtworkUid, req.ArtistUid, 2, userInfo.LatestLockTime); err != nil {
tx.Rollback()
return
}
//创建画家画作合同类型6
if err = dao.CreateArtworkContract(tx, req.ArtworkUid, req.ArtistUid, 6, userInfo.LatestLockTime); err != nil {
tx.Rollback()
return
2023-03-03 08:18:00 +00:00
}
case 3:
2023-03-10 09:58:13 +00:00
for _, v := range req.ArtworkUid {
//查看画作合同是否已经存在,不存在继续类型3
if err = dao.GetMgmtContractByArtworkUid(v, 3); err == gorm.ErrRecordNotFound {
} else {
return
}
2023-03-15 07:25:05 +00:00
}
//创建画家画作合同类型3
if err = dao.CreateArtworkContract(tx, req.ArtworkUid, req.ArtistUid, 3, userInfo.LatestLockTime); err != nil {
tx.Rollback()
return
2023-03-10 09:58:13 +00:00
}
2023-03-03 08:18:00 +00:00
case 5:
2023-03-10 09:58:13 +00:00
for _, v := range req.ArtworkUid {
//查看画作合同是否已经存在,不存在继续类型5
if err = dao.GetMgmtContractByArtworkUid(v, 5); err == gorm.ErrRecordNotFound {
} else {
return
}
2023-03-15 07:25:05 +00:00
}
//创建画家画作合同类型3
if err = dao.CreateArtworkContract(tx, req.ArtworkUid, req.ArtistUid, 5, userInfo.LatestLockTime); err != nil {
tx.Rollback()
return
2023-03-10 09:58:13 +00:00
}
2023-03-03 08:18:00 +00:00
default:
err = errors.New("type值出错!")
2023-03-15 02:43:20 +00:00
return rep, err
2023-01-18 09:03:15 +00:00
}
2023-03-03 08:18:00 +00:00
tx.Commit()
2023-01-18 09:03:15 +00:00
return
}
2023-03-10 09:58:13 +00:00
func (a *Contract) ContractListMgmt(req *contract.ContractListMgmtRequest) (rep *contract.ContractListMgmtRespond, err error) {
rep = &contract.ContractListMgmtRespond{}
2023-03-15 07:25:05 +00:00
2023-03-10 09:58:13 +00:00
//查看是否有该画家
2023-03-15 10:06:21 +00:00
_, err = dao.GetArtistInfoByArtistUid(req.ArtistUid)
2023-03-15 07:25:05 +00:00
if err != nil {
return
}
2023-03-10 09:58:13 +00:00
//合同分页查询操作
if req.Page < 1 {
req.Page = 1
}
if req.Num < 1 {
req.Num = 15
}
offset := (req.Page - 1) * req.Num
//获取该用户的所有合同
contracts, err := dao.GetContractList(req.ArtistUid, req.Num, offset)
if err != nil {
return
}
rep.Data = contracts
return
}
func (a *Contract) ContractList(req *contract.ContractListRequest) (rep *contract.ContractListRespond, err error) {
//查看是否有该画家
2023-03-16 07:16:28 +00:00
user, err := dao.GetArtistInfoById(req.ArtistUid)
2023-03-10 09:58:13 +00:00
if err != nil {
return
}
2023-03-16 07:16:28 +00:00
fmt.Println("user:", user)
2023-03-10 09:58:13 +00:00
ContractData, err := dao.ContractList(user.MgmtArtistUid, req.State)
if err != nil {
return
}
2023-03-16 07:16:28 +00:00
fmt.Println("ContractData:", ContractData)
2023-03-10 09:58:13 +00:00
rep = &contract.ContractListRespond{
Data: ContractData,
}
return
}
func (a *Contract) SignContract(req *contract.SignContractRequest) (rep *contract.SignContractRespond, err error) {
rep = &contract.SignContractRespond{}
//遇到错误数据库回滚
tx := db.DB.Begin()
2023-03-15 02:43:20 +00:00
//根据合同uid获取具体合同信息
contractInfo, err := dao.GetContractInfo(req.ContractUid)
2023-03-10 09:58:13 +00:00
if err != nil {
return
}
2023-03-16 08:05:35 +00:00
// //根据画家id获取画家具体信息
// artistDetailResponse, customerId, err := GetArtistInfoById(req.ArtistUid)
// if err != nil {
// return rep, err
// }
//返回画家信息
artistDetailResponse, err := dao.GetArtistInfoByArtistUid(req.ArtistUid)
2023-03-10 09:58:13 +00:00
if err != nil {
2023-03-16 08:05:35 +00:00
return
2023-03-10 09:58:13 +00:00
}
2023-03-17 02:04:29 +00:00
var (
realName string
address string
idNum string
)
if artistDetailResponse.RealNameInfo != nil {
realName = artistDetailResponse.RealNameInfo.Name
address = artistDetailResponse.RealNameInfo.Address
idNum = artistDetailResponse.RealNameInfo.IdNum
} else {
fmt.Printf("用户%s 实名信息为空", artistDetailResponse.MgmtArtistUid)
}
2023-03-10 09:58:13 +00:00
if contractInfo.Type != 4 && contractInfo.Type != 7 {
switch contractInfo.Type {
case 1:
var ContractNo = fmt.Sprintf("TF_%d", time.Now().UnixNano())
endTime := time.Now().AddDate(1, 0, -1)
parameterMap := make((map[string]string), 0)
2023-03-17 02:04:29 +00:00
2023-03-10 09:58:13 +00:00
// 一、 模板填充
2023-03-17 00:49:29 +00:00
parameterMap["PartyAName"] = realName
parameterMap["PartyAAddress"] = address
parameterMap["PartyAIdentityCard"] = idNum
parameterMap["PartyATelNum"] = artistDetailResponse.TelNum
2023-03-10 09:58:13 +00:00
parameterMap["PartyBRule"] = "240"
parameterMap["SettleNum"] = "2"
parameterMap["SettleSec"] = "100"
parameterMap["ActivityNum"] = "2"
parameterMap["SettlerTypeFour"] = "2"
parameterMap["PowerDay"] = "5"
parameterMap["EffectStartYear"] = fmt.Sprintf("%d", time.Now().Year())
parameterMap["EffectStartMonth"] = fmt.Sprintf("%d", time.Now().Month())
parameterMap["EffectStartDay"] = fmt.Sprintf("%d", time.Now().Day())
parameterMap["EffectEndYear"] = fmt.Sprintf("%d", endTime.Year())
parameterMap["EffectEndMonth"] = fmt.Sprintf("%d", endTime.Month())
parameterMap["EffectEndDay"] = fmt.Sprintf("%d", endTime.Day())
parameterMap["PartyBLegal"] = "胡婷"
//将map转换为string类型
parameterMapType, err := json.Marshal(parameterMap)
if err != nil {
return rep, err
}
generateContractRequest := &contractMicroservice.GenerateContractRequest{
TemplateId: "一手画市场18",
ContractId: ContractNo,
ParameterMap: string(parameterMapType),
}
generateContractResponse, err := service.ContractImpl.GenerateContract(context.Background(), generateContractRequest)
if err != nil {
return rep, err
}
//二、 自动签署
extSignAutoRequest := &contractMicroservice.ExtSignAutoRequest{
TransactionId: fmt.Sprintf("TFAU_%d", time.Now().UnixNano()),
ContractId: ContractNo,
CustomerId: "1A958BFD01E6551D06381DA6C0B19259",
DocTitle: fmt.Sprintf("TFAU_%d", time.Now().UnixNano()),
SignKeyword: "受托方(乙方)",
SignatureId: "1668589742383450",
KeyX: "120",
KeyY: "0",
}
_, err = service.ContractImpl.ExtSignAuto(context.Background(), extSignAutoRequest)
if err != nil {
return rep, err
}
//更新合同表将合同的下载、在线、id保存
err = dao.UpdateContract(tx, contractInfo.Uid, generateContractResponse.ViewPdfUrl, generateContractResponse.DownloadUrl, ContractNo)
if err != nil {
return rep, err
}
case 2:
var ContractNo = fmt.Sprintf("TF_%d", time.Now().UnixNano())
var parameterMap = make(map[string]string)
endTime := time.Now().AddDate(1, 0, -1)
parameterMap["ContractNo"] = ContractNo
2023-03-16 08:05:35 +00:00
parameterMap["PartyAName"] = artistDetailResponse.RealNameInfo.Name
parameterMap["PartyAAddress"] = artistDetailResponse.RealNameInfo.Address
parameterMap["PartyAIdentityCard"] = artistDetailResponse.RealNameInfo.IdNum
parameterMap["PartyATelNum"] = artistDetailResponse.RealNameInfo.TelNum
2023-03-10 09:58:13 +00:00
parameterMap["SettleNum"] = "2"
parameterMap["SettleSecOne"] = "0"
parameterMap["SettleSecTwo"] = "100"
parameterMap["ActivityNum"] = "2"
parameterMap["SettlerTypeFour"] = "2"
parameterMap["PowerDay"] = "5"
parameterMap["EffectStartYear"] = fmt.Sprintf("%d", time.Now().Year())
parameterMap["EffectStartMonth"] = fmt.Sprintf("%d", time.Now().Month())
parameterMap["EffectStartDay"] = fmt.Sprintf("%d", time.Now().Day())
parameterMap["EffectEndYear"] = fmt.Sprintf("%d", endTime.Year())
parameterMap["EffectEndMonth"] = fmt.Sprintf("%d", endTime.Month())
parameterMap["EffectEndDay"] = fmt.Sprintf("%d", endTime.Day())
parameterMap["PartyBLegal"] = "邬侨华"
//将map转换为string类型
parameterMapType, err := json.Marshal(parameterMap)
if err != nil {
return rep, err
}
generateContractRequest := &contractMicroservice.GenerateContractRequest{
TemplateId: "著作权代理转让服务合同20",
ContractId: ContractNo,
ParameterMap: string(parameterMapType),
}
generateContractResponse, err := service.ContractImpl.GenerateContract(context.Background(), generateContractRequest)
if err != nil {
return rep, err
}
//二、 自动签署
extSignAutoRequest := &contractMicroservice.ExtSignAutoRequest{
TransactionId: fmt.Sprintf("TFAU_%d", time.Now().UnixNano()),
ContractId: ContractNo,
CustomerId: "F49C748A0C06431BC620354F4491BD37",
DocTitle: fmt.Sprintf("TFAU_%d", time.Now().UnixNano()),
SignKeyword: "受托方(乙方)",
SignatureId: "1668589763366246",
KeyX: "120",
KeyY: "0",
}
_, err = service.ContractImpl.ExtSignAuto(context.Background(), extSignAutoRequest)
if err != nil {
return rep, err
}
//更新合同表将合同的下载、在线、id保存
err = dao.UpdateContract(tx, contractInfo.Uid, generateContractResponse.ViewPdfUrl, generateContractResponse.DownloadUrl, ContractNo)
if err != nil {
return rep, err
}
case 3:
var ContractNo = fmt.Sprintf("TF_%d", time.Now().UnixNano())
//获取画作信息
2023-03-14 02:35:56 +00:00
artworkDetailResponse, err := GetArtworkProfileByArtworkUid(contractInfo.ArtworkUid)
2023-03-10 09:58:13 +00:00
if err != nil {
return rep, err
}
var parameterMap = make(map[string]string)
2023-03-16 08:05:35 +00:00
parameterMap["PartyAName"] = artistDetailResponse.RealNameInfo.Name
parameterMap["PartyAIdCard"] = artistDetailResponse.RealNameInfo.IdNum
2023-03-10 09:58:13 +00:00
parameterMap["ArtworkName"] = artworkDetailResponse.ProfileInfo.ArtworkName
parameterMap["Year"] = fmt.Sprintf("%d", time.Now().Year())
parameterMap["Month"] = fmt.Sprintf("%d", time.Now().Month())
parameterMap["Day"] = fmt.Sprintf("%d", time.Now().Day())
//将map转换为string类型
parameterMapType, err := json.Marshal(parameterMap)
if err != nil {
return rep, err
}
generateContractRequest := &contractMicroservice.GenerateContractRequest{
TemplateId: "登记授权委托书18",
ContractId: ContractNo,
ParameterMap: string(parameterMapType),
}
generateContractResponse, err := service.ContractImpl.GenerateContract(context.Background(), generateContractRequest)
if err != nil {
return rep, err
}
//更新合同表将合同的下载、在线、id保存
err = dao.UpdateContract(tx, contractInfo.Uid, generateContractResponse.ViewPdfUrl, generateContractResponse.DownloadUrl, ContractNo)
if err != nil {
return rep, err
}
case 5:
//获取画作信息
2023-03-14 02:35:56 +00:00
artworkDetailResponse, err := GetArtworkProfileByArtworkUid(contractInfo.ArtworkUid)
2023-03-10 09:58:13 +00:00
if err != nil {
return rep, err
}
var ContractNo = fmt.Sprintf("TF_%d", time.Now().UnixNano())
var parameterMap = make(map[string]string)
parameterMap["ArtworkName"] = artworkDetailResponse.ProfileInfo.ArtworkName
parameterMap["Year"] = fmt.Sprintf("%d", time.Now().Year())
parameterMap["Month"] = fmt.Sprintf("%d", time.Now().Month())
parameterMap["Day"] = fmt.Sprintf("%d", time.Now().Day())
//将map转换为string类型
parameterMapType, err := json.Marshal(parameterMap)
if err != nil {
return rep, err
}
generateContractRequest := &contractMicroservice.GenerateContractRequest{
TemplateId: "作品登记承诺书16",
ContractId: ContractNo,
ParameterMap: string(parameterMapType),
}
generateContractResponse, err := service.ContractImpl.GenerateContract(context.Background(), generateContractRequest)
if err != nil {
return rep, err
}
//更新合同表将合同的下载、在线、id保存
err = dao.UpdateContract(tx, contractInfo.Uid, generateContractResponse.ViewPdfUrl, generateContractResponse.DownloadUrl, ContractNo)
if err != nil {
return rep, err
}
case 6:
ArtistUids := strings.Split(contractInfo.ArtistUid, ",")
type dynamic struct {
InsertWay int `json:"insertWay"`
Keyword string `json:"keyword"`
CellHeight float64 `json:"cellHeight"`
ColWidthPercent []int `json:"colWidthPercent"`
TheFirstHeader string `json:"theFirstHeader"`
CellHorizontalAlignment int `json:"cellHorizontalAlignment"`
CellVerticalAlignment int `json:"cellVerticalAlignment"`
Headers []string `json:"headers"`
Datas [][]string `json:"datas"`
}
var dynamicList []dynamic
var dynamicOne dynamic
dynamicOne.InsertWay = 1
dynamicOne.Keyword = "附表 1"
dynamicOne.CellHeight = 16.0
dynamicOne.ColWidthPercent = []int{6, 6, 20, 10, 10}
// dynamicOne.TheFirstHeader =
dynamicOne.CellHorizontalAlignment = 1
dynamicOne.CellVerticalAlignment = 5
dynamicOne.Headers = []string{"序号", "作品名称", "哈希值", "著作权取得方式(原始/继受)", "继受取得的证明文件"}
for k, v := range ArtistUids {
//获取画作信息
2023-03-14 02:35:56 +00:00
artworkDetailResponse, err := GetArtworkProfileByArtworkUid(v)
2023-03-10 09:58:13 +00:00
if err != nil {
return rep, err
}
var tmps []string
tmps = append(tmps, fmt.Sprintf("%d", k+1))
tmps = append(tmps, artworkDetailResponse.ProfileInfo.ArtistName) //获取画作名字
tmps = append(tmps, artworkDetailResponse.DigiInfo.CopyrightHash) //获取版权hash
tmps = append(tmps, "原始")
tmps = append(tmps, "")
dynamicOne.Datas = append(dynamicOne.Datas, tmps)
}
dynamicList = append(dynamicList, dynamicOne)
dyByte, err := json.Marshal(dynamicList)
if err != nil {
return rep, err
}
ContractNo := fmt.Sprintf("TF_%d", time.Now().UnixNano()+1000)
//一、 模板填充
var parameterMap = make(map[string]string)
2023-03-16 08:05:35 +00:00
parameterMap["PartyBLegal"] = artistDetailResponse.RealNameInfo.Name
2023-03-10 09:58:13 +00:00
//将map转换为string类型
parameterMapType, err := json.Marshal(parameterMap)
if err != nil {
return rep, err
}
var viewPdfUrl string
var downloadUrl string
generateContractRequest := &contractMicroservice.GenerateContractRequest{
ContractId: ContractNo,
ParameterMap: string(parameterMapType),
DynamicTables: string(dyByte),
}
if len(ArtistUids) > 30 {
return rep, errors.New("选择画作条数过多")
} else if len(ArtistUids) <= 15 {
generateContractRequest.TemplateId = "著作权代理转让服务合同——附表152"
generateContractResponse, err := service.ContractImpl.GenerateContract(context.Background(), generateContractRequest)
if err != nil {
return rep, err
}
viewPdfUrl = generateContractResponse.ViewPdfUrl
downloadUrl = generateContractResponse.DownloadUrl
} else {
generateContractRequest.TemplateId = "著作权代理转让服务合同——附表302"
generateContractResponse, err := service.ContractImpl.GenerateContract(context.Background(), generateContractRequest)
if err != nil {
return rep, err
}
viewPdfUrl = generateContractResponse.ViewPdfUrl
downloadUrl = generateContractResponse.DownloadUrl
}
//二、 自动签署
extSignAutoRequest := &contractMicroservice.ExtSignAutoRequest{
TransactionId: fmt.Sprintf("TFAU_%d", time.Now().UnixNano()+1000),
ContractId: ContractNo,
CustomerId: "F49C748A0C06431BC620354F4491BD37",
DocTitle: fmt.Sprintf("TFAU_%d", time.Now().UnixNano()),
SignKeyword: "受托方(乙方)",
SignatureId: "1668589763366246",
KeyX: "120",
KeyY: "0",
}
_, err = service.ContractImpl.ExtSignAuto(context.Background(), extSignAutoRequest)
if err != nil {
return rep, err
}
//更新合同表将合同的下载、在线、id保存
err = dao.UpdateContract(tx, contractInfo.Uid, viewPdfUrl, downloadUrl, ContractNo)
if err != nil {
tx.Rollback()
return rep, err
}
default:
return rep, errors.New("type出错")
}
}
//上面数据库没有错误就执行,上面修改的值下面会使用到
tx.Commit()
transactionId := fmt.Sprintf("TFTX_%d", time.Now().UnixNano())
var signKeyword string
//从新根据合同id获取具体合同信息
2023-03-15 02:43:20 +00:00
contractInfo, err = dao.GetContractInfo(req.ContractUid)
2023-03-10 09:58:13 +00:00
if err != nil {
return
}
if contractInfo.Type == 1 || contractInfo.Type == 2 || contractInfo.Type == 6 {
signKeyword = "委托方(甲方)"
}
if contractInfo.Type == 3 {
signKeyword = "委托人签字:"
}
if contractInfo.Type == 4 {
signKeyword = "画家签字:"
}
if contractInfo.Type == 5 {
signKeyword = "申请人(签章):"
}
signShowTime := "1"
if contractInfo.Type == 5 || contractInfo.Type == 3 || contractInfo.Type == 6 {
signShowTime = "2"
}
2023-03-14 02:35:56 +00:00
2023-03-10 09:58:13 +00:00
// 手动签署
extSignRequest := &contractMicroservice.ExtSignRequest{
TransactionId: transactionId,
ContractId: contractInfo.ContractId,
2023-03-16 08:05:35 +00:00
CustomerId: artistDetailResponse.CustomerId,
2023-03-14 02:35:56 +00:00
ReturnUrl: fmt.Sprintf("%v/contractwrite?htmltype=%s&envtype=%s&token= %s", "192.168.10.7", req.HtmlType, req.EnvType, req.Token),
DocTitle: contractInfo.ContractId,
OpenEnvironment: "0",
MobileSignType: "2",
SignKeyword: signKeyword,
Keyx: "100",
Keyy: "-5",
SignatureShowTime: signShowTime,
PcHandSignature: "2",
2023-03-10 09:58:13 +00:00
}
2023-03-14 02:35:56 +00:00
jumpCommonResponse, err := service.ContractImpl.ExtSign(context.Background(), extSignRequest)
2023-03-10 09:58:13 +00:00
if err != nil {
return rep, err
}
2023-03-14 02:35:56 +00:00
err = dao.UpdateContractTx(tx, contractInfo.Uid, transactionId)
if err != nil {
return
}
rep.JumpUrl = jumpCommonResponse.JumpUrl
return rep, nil
}
func (a *Contract) FinishContract(req *contract.FinishContractRequest) (rep *contract.FinishContractRespond, err error) {
rep = &contract.FinishContractRespond{}
tx := db.DB.Begin()
//更新合同状态并获取合同信息
contract, err := dao.FinishContract(tx, req.TransactionId)
if err != nil {
tx.Rollback()
return nil, err
}
rep.Contract = contract
tx.Commit()
return
}
2023-03-14 05:19:20 +00:00
// func (a *Contract) ContractTxList(req *contract.ContractTxListRequest) (rep *contract.ContractTxListRespond, err error) {
// rep = &contract.ContractTxListRespond{}
// var datas []*contract.Contracts
// artistDetailResponse, _, err := GetArtistInfoById(req.ID)
// if err != nil {
// return
// }
// contracts, err := dao.ContractTxList(artistDetailResponse.ProfileInfo.Uid, req.State)
// if err != nil {
// return
// }
// data := &contract.Contracts{}
// for _, v := range contracts {
// data.ArtistUid = v.ArtistUid
// data.ArtworkUid = v.ArtworkUid
// data.ContractId = v.ContractId
// data.TransactionId = v.TransactionId
// data.Type = v.Type
// data.ViewUrl = v.ViewUrl
// data.DownloadUrl = v.DownloadUrl
// //时间戳转时间
// data.ExpirationTime = time.Unix(int64(v.CreatedAt), 0).Format("2006/01/02 15:04:05")
// data.SignTime = v.SignTime
// datas = append(datas, data)
// }
// rep.Data = datas
// return
// }
2023-03-10 09:58:13 +00:00
2023-03-14 02:35:56 +00:00
// 根据画作uid获取画作信息
func GetArtworkProfileByArtworkUid(artworkUid string) (artworkProfileInfo *artwork.ArtworkDetailResponse, err error) {
artworkProfileInfo = &artwork.ArtworkDetailResponse{}
artworkDetailRequest := &artwork.ArtworkDetailRequest{
ArtworkUuid: artworkUid,
Type: "1",
}
artworkDetailResponse, err := service.ArtworkImpl.ArtworkDetail(context.Background(), artworkDetailRequest)
if err != nil {
return
}
return artworkDetailResponse, nil
}
// 根据画家id获取画家具体信息
2023-03-16 07:16:28 +00:00
func GetArtistInfoById(artistUid string) (artistDetailResponse *artist.DetailResponse, customerId string, err error) {
2023-03-14 02:35:56 +00:00
artistDetailResponse = &artist.DetailResponse{}
2023-03-16 07:16:28 +00:00
artistInfo, err := dao.GetArtistInfoById(artistUid)
2023-03-14 02:35:56 +00:00
if err != nil {
return
}
detailRequest := &artist.DetailRequest{
Uid: artistInfo.MgmtArtistUid,
}
artistDetailResponse, err = service.GrpcArtistImpl.ArtistDetail(context.Background(), detailRequest)
if err != nil {
return
}
customerId = artistInfo.CustomerId
return
}
2023-01-18 09:03:15 +00:00
2023-03-03 08:18:00 +00:00
// func (a *Contract) ContractList(req *contract.ContractListRequest) (rep *contract.ContractListRespond, err error) {
2023-01-18 09:03:15 +00:00
2023-03-03 08:18:00 +00:00
// rep, err = dao.ContractList(req)
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 (a *Contract) GetContract(req *contract.GetContractRequest) (rep *contract.ContractData, err error) {
2023-01-18 09:03:15 +00:00
2023-03-03 08:18:00 +00:00
// rep, err = dao.GetContract(int32(req.Id))
// return
// }
// func (a *Contract) ContractTxList(req *contract.ContractTxListRequest) (rep *contract.ContractTxListRespond, err error) {
// rep, err = dao.ContractTxList(req)
// return
// }
// func (a *Contract) UpdateContract(req *contract.UpdateContractRequest) (rep *contract.UpdateContractRespond, err error) {
// rep = &contract.UpdateContractRespond{}
// err = dao.UpdateContract(req)
// return
// }
// func (a *Contract) UpdateContractTx(req *contract.UpdateContractTxRequest) (rep *contract.UpdateContractTxRespond, err error) {
// rep = &contract.UpdateContractTxRespond{}
// err = dao.UpdateContractTx(req.TransactionId, int32(req.ID))
// return
// }