From fda56a4690dfa1b152c589494367df22fd50a412 Mon Sep 17 00:00:00 2001 From: jhc <9316338+wangyitao309@user.noreply.gitee.com> Date: Thu, 11 Jan 2024 12:14:53 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- cmd/app.go | 35 ++++++++------- cmd/wire.go | 3 +- cmd/wire_gen.go | 4 +- conf/dev/config.yaml | 12 ++--- conf/k8stest/config.yaml | 12 ++--- conf/prod/config.yaml | 12 ++--- internal/dao/file.go | 23 ++++++++++ internal/logic/dci_registration.go | 70 +++++++++++++++++++++--------- internal/logic/dci_user.go | 30 +++++++++---- internal/logic/dci_work.go | 20 ++++++--- internal/logic/file.go | 38 ++++++++++++++-- internal/model/file.go | 25 +++++++++++ internal/model/upload.go | 1 - internal/serializer/dicUser.go | 1 - internal/serializer/file.go | 17 -------- pb/{grpc => dci}/dci_grpc.pb.go | 2 +- pb/{dci => grpc}/dci_triple.pb.go | 2 +- pkg/app/app.go | 2 +- pkg/db/chainDci.go | 12 ++--- pkg/db/mysql.go | 9 +++- pkg/err/common.go | 6 +++ pkg/err/fileType.go | 2 +- pkg/msg/dci_msg.go | 16 ++++++- 23 files changed, 248 insertions(+), 106 deletions(-) create mode 100644 internal/dao/file.go create mode 100644 internal/model/file.go delete mode 100644 internal/model/upload.go delete mode 100644 internal/serializer/dicUser.go delete mode 100644 internal/serializer/file.go rename pb/{grpc => dci}/dci_grpc.pb.go (99%) rename pb/{dci => grpc}/dci_triple.pb.go (99%) diff --git a/cmd/app.go b/cmd/app.go index f63ce11..6b6256a 100644 --- a/cmd/app.go +++ b/cmd/app.go @@ -4,8 +4,12 @@ import ( dciConfig "chain-dci/config" "chain-dci/internal/controller" _ "chain-dci/internal/handler" + "chain-dci/pb/dci" "chain-dci/pkg/app" - common "chain-dci/pkg/init" + "fmt" + "google.golang.org/grpc" + "gorm.io/gorm" + "net" //common "chain-dci/pkg/init" "chain-dci/pkg/tracing" @@ -17,12 +21,13 @@ import ( "go.uber.org/zap" ) -func NewApp(Lg *zap.Logger, JaegerTracer *tracing.JaegerProvider, BccrClient *bccrClient.Client, SfNode *snowflake.Node) *app.App { +func NewApp(Lg *zap.Logger, JaegerTracer *tracing.JaegerProvider, BccrClient *bccrClient.Client, SfNode *snowflake.Node, DciDB *gorm.DB) *app.App { return &app.App{ Lg: Lg, JaegerTracer: JaegerTracer, BccrClient: BccrClient, SfNode: SfNode, + //DciDB: DciDB, } } @@ -34,19 +39,19 @@ func main() { panic(err) } - //l, err := net.Listen("tcp", ":8883") - //if err != nil { - // fmt.Printf("failed to listen: %v", err) - // return - //} - // - //s := grpc.NewServer() // 创建gRPC服务器 - //dci.RegisterDciServer(s, &controller.DciProvider{}) // 在gRPC服务端注册服务 - //// 启动服务 - //err = s.Serve(l) - ////注册服务 - config.SetProviderService(&controller.DciProvider{}) - common.Init() + l, err := net.Listen("tcp", ":8883") + if err != nil { + fmt.Printf("failed to listen: %v", err) + return + } + + s := grpc.NewServer() // 创建gRPC服务器 + dci.RegisterDciServer(s, &controller.DciProvider{}) // 在gRPC服务端注册服务 + // 启动服务 + err = s.Serve(l) + //注册服务 + //config.SetProviderService(&controller.DciProvider{}) + //common.Init() if err = config.Load(); err != nil { panic(err) } diff --git a/cmd/wire.go b/cmd/wire.go index cc9c50b..f312535 100644 --- a/cmd/wire.go +++ b/cmd/wire.go @@ -7,6 +7,7 @@ package main import ( "chain-dci/pkg/app" "chain-dci/pkg/bccr" + "chain-dci/pkg/db" "chain-dci/pkg/logger" "chain-dci/pkg/snowf" "chain-dci/pkg/tracing" @@ -14,6 +15,6 @@ import ( ) func InitApp() (*app.App, error) { - wire.Build(logger.Provider, tracing.Provider, bccr.Provider, snowf.Provider, NewApp) + wire.Build(logger.Provider, tracing.Provider, bccr.Provider, snowf.Provider, db.DciProvider, NewApp) return &app.App{}, nil } diff --git a/cmd/wire_gen.go b/cmd/wire_gen.go index b950cf1..a5a2d93 100644 --- a/cmd/wire_gen.go +++ b/cmd/wire_gen.go @@ -9,6 +9,7 @@ package main import ( "chain-dci/pkg/app" "chain-dci/pkg/bccr" + "chain-dci/pkg/db" "chain-dci/pkg/logger" "chain-dci/pkg/snowf" "chain-dci/pkg/tracing" @@ -27,6 +28,7 @@ func InitApp() (*app.App, error) { jaegerProvider := tracing.NewTracing() client := bccr.NewBccrClient() node := snowf.NewSf() - appApp := NewApp(zapLogger, jaegerProvider, client, node) + gormDB := db.NewDci() + appApp := NewApp(zapLogger, jaegerProvider, client, node, gormDB) return appApp, nil } diff --git a/conf/dev/config.yaml b/conf/dev/config.yaml index a150563..e81eae3 100644 --- a/conf/dev/config.yaml +++ b/conf/dev/config.yaml @@ -1,12 +1,12 @@ system: mode: dev #正式 prod #测试 test #开发 dev config_source: config -#oaMeeting: -# host: 127.0.0.1 -# port: 3306 -# user: dyb -# password: rootdyb -# db_name: "oa-meeting" +chainDci: + host: 172.16.100.99 + port: 9007 + user: artuser + password: C250PflXIWv2SQm8 + db_name: "chain_dci" antCloud: access_key: "ACsK4CQqzj5rGSKf" access_key_secret: "SJmH5eATWY26tJrVg8QyHaBGbLNCbj7y" diff --git a/conf/k8stest/config.yaml b/conf/k8stest/config.yaml index 1a8462a..ffc78b4 100644 --- a/conf/k8stest/config.yaml +++ b/conf/k8stest/config.yaml @@ -1,12 +1,12 @@ system: mode: dev #正式 prod #测试 test #开发 dev # config_source: configmap -#oaMeeting: -# host: ${mysql.host|localhost} -# port: ${mysql.port|3306} -# user: ${mysql.user} -# password: ${mysql.password} -# db_name: ${oa-meeting.mysql.db_name} +chainDci: + host: 172.16.100.99 + port: 9007 + user: artuser + password: C250PflXIWv2SQm8 + db_name: "chain_dci" Bccr: access_key_id: "ACsK4CQqzj5rGSKf" access_key_secret: "SJmH5eATWY26tJrVg8QyHaBGbLNCbj7y" diff --git a/conf/prod/config.yaml b/conf/prod/config.yaml index bc24db5..93ecd8e 100644 --- a/conf/prod/config.yaml +++ b/conf/prod/config.yaml @@ -1,12 +1,12 @@ system: mode: prod #正式 prod #测试 test #开发 dev # config_source: configmap -#oaMeeting: -# host: ${mysql.host|localhost} -# port: ${mysql.port|3306} -# user: ${mysql.user} -# password: ${mysql.password} -# db_name: ${oa-meeting.mysql.db_name} +chainDci: + host: ${mysql.host|localhost} + port: ${mysql.port|3306} + user: ${mysql.user} + password: ${mysql.password} + db_name: ${chain-dci.mysql.db_name} Bccr: access_key_id: "ACsK4CQqzj5rGSKf" access_key_secret: "SJmH5eATWY26tJrVg8QyHaBGbLNCbj7y" diff --git a/internal/dao/file.go b/internal/dao/file.go new file mode 100644 index 0000000..c5749ed --- /dev/null +++ b/internal/dao/file.go @@ -0,0 +1,23 @@ +package dao + +import ( + "chain-dci/internal/model" + "chain-dci/pkg/app" + "gorm.io/gorm" +) + +func CreateFileInfo(tx *gorm.DB, info *model.FileInfo) error { + if tx == nil { + tx = app.ModuleClients.DciDB + } + err := tx.Model(&model.FileInfo{}).Create(&info).Error + return err +} + +func UpdateFileInfo(tx *gorm.DB, info *model.FileInfo) error { + if tx == nil { + tx = app.ModuleClients.DciDB + } + err := tx.Model(&model.FileInfo{}).Where("id =?", info.Model.ID).Updates(&info).Error + return err +} diff --git a/internal/logic/dci_registration.go b/internal/logic/dci_registration.go index 16f7ce6..2618332 100644 --- a/internal/logic/dci_registration.go +++ b/internal/logic/dci_registration.go @@ -26,10 +26,12 @@ type DciRegistration struct { // CreateDciRegistration 发起数登申请 func (r *DciRegistration) CreateDciRegistration(req *dci.CreateDciRegistrationRequest) (res *dci.CreateDciRegistrationResponse, err error) { + errCommon.NoReturnInfo(req, "发起数登申请 参数信息: ") + res = new(dci.CreateDciRegistrationResponse) createDciRegistrationRequest := new(bccrClient.CreateDciRegistrationRequest) - _ = copier.CopyWithOption(&createDciRegistrationRequest, req, copier.Option{DeepCopy: true}) + _ = copier.CopyWithOption(&createDciRegistrationRequest, req, copier.Option{DeepCopy: false}) fmt.Printf("req : %+v\n", req) fmt.Println("======================================================= ============== ===========00") fmt.Printf("createDciRegistrationRequest : %+v\n", createDciRegistrationRequest) @@ -42,37 +44,45 @@ func (r *DciRegistration) CreateDciRegistration(req *dci.CreateDciRegistrationRe createDciPreregistrationResponse, err := app.ModuleClients.BccrClient.CreateDciRegistration(createDciRegistrationRequest) if err != nil { - return nil, err + return nil, errCommon.ReturnError(err, msg.ErrCreateDciRegistration, "发起数登申请 失败: ") } - _ = copier.CopyWithOption(&res, createDciPreregistrationResponse, copier.Option{DeepCopy: true}) + errCommon.NoReturnInfo(createDciPreregistrationResponse, "发起数登申请 成功: ") + + _ = copier.CopyWithOption(&res, createDciPreregistrationResponse, copier.Option{DeepCopy: false}) return } // QueryDciRegistration 查询数登申请 func (r *DciRegistration) QueryDciRegistration(req *dci.QueryDciRegistrationRequest) (res *dci.QueryDciRegistrationResponse, err error) { + errCommon.NoReturnInfo(req, "查询数登申请 参数信息: ") + res = new(dci.QueryDciRegistrationResponse) queryDciRegistrationRequest := new(bccrClient.QueryDciRegistrationRequest) - _ = copier.CopyWithOption(&queryDciRegistrationRequest, req, copier.Option{DeepCopy: true}) + _ = copier.CopyWithOption(&queryDciRegistrationRequest, req, copier.Option{DeepCopy: false}) queryDciRegistrationResponse, err := app.ModuleClients.BccrClient.QueryDciRegistration(queryDciRegistrationRequest) if err != nil { - return nil, err + return nil, errCommon.ReturnError(err, msg.ErrQueryDciRegistration, "查询数登申请 失败: ") } - _ = copier.CopyWithOption(&res, queryDciRegistrationResponse, copier.Option{DeepCopy: true}) + errCommon.NoReturnInfo(queryDciRegistrationResponse, "查询数登申请 成功: ") + + _ = copier.CopyWithOption(&res, queryDciRegistrationResponse, copier.Option{DeepCopy: false}) return } // GetDciPayUrl 数登支付链接获取 func (r *DciRegistration) GetDciPayUrl(req *dci.GetDciPayUrlRequest) (res *dci.GetDciPayUrlResponse, err error) { + errCommon.NoReturnInfo(req, "数登支付链接获取 参数信息: ") + res = new(dci.GetDciPayUrlResponse) getDciPayUrlRequest := new(bccrClient.GetDciPayurlRequest) - _ = copier.CopyWithOption(&getDciPayUrlRequest, req, copier.Option{DeepCopy: true}) + _ = copier.CopyWithOption(&getDciPayUrlRequest, req, copier.Option{DeepCopy: false}) clientToken, err := createToken(time.Now().UnixMilli(), req.DigitalRegisterId, app.ModuleClients.SfNode.Generate().Base64()) if err != nil { @@ -82,37 +92,45 @@ func (r *DciRegistration) GetDciPayUrl(req *dci.GetDciPayUrlRequest) (res *dci.G getDciPayUrlResponse, err := app.ModuleClients.BccrClient.GetDciPayurl(getDciPayUrlRequest) if err != nil { - return nil, err + return nil, errCommon.ReturnError(err, msg.ErrGetDciPayurl, "数登支付链接获取 失败: ") } - _ = copier.CopyWithOption(&res, getDciPayUrlResponse, copier.Option{DeepCopy: true}) + errCommon.NoReturnInfo(getDciPayUrlResponse, "数登支付链接获取 成功: ") + + _ = copier.CopyWithOption(&res, getDciPayUrlResponse, copier.Option{DeepCopy: false}) return } // QueryDciPay 数登支付查询 func (r *DciRegistration) QueryDciPay(req *dci.QueryDciPayRequest) (res *dci.QueryDciPayResponse, err error) { + errCommon.NoReturnInfo(req, "数登支付查询 参数信息: ") + res = new(dci.QueryDciPayResponse) queryDciPayRequest := new(bccrClient.QueryDciPayRequest) - _ = copier.CopyWithOption(&queryDciPayRequest, req, copier.Option{DeepCopy: true}) + _ = copier.CopyWithOption(&queryDciPayRequest, req, copier.Option{DeepCopy: false}) queryDciPayResponse, err := app.ModuleClients.BccrClient.QueryDciPay(queryDciPayRequest) if err != nil { - return nil, err + return nil, errCommon.ReturnError(err, msg.ErrQueryDciPay, "数登支付查询 失败: ") } - _ = copier.CopyWithOption(&res, queryDciPayResponse, copier.Option{DeepCopy: true}) + errCommon.NoReturnInfo(queryDciPayResponse, "数登支付查询 成功: ") + + _ = copier.CopyWithOption(&res, queryDciPayResponse, copier.Option{DeepCopy: false}) return } // GetDciRegistrationcert 获取数登证书下载 func (r *DciRegistration) GetDciRegistrationcert(req *dci.GetDciRegistrationcertRequest) (res *dci.GetDciRegistrationcertResponse, err error) { + errCommon.NoReturnInfo(req, "获取数登证书下载 参数信息: ") + res = new(dci.GetDciRegistrationcertResponse) getDciRegistrationcertRequest := new(bccrClient.GetDciRegistrationcertRequest) - _ = copier.CopyWithOption(&getDciRegistrationcertRequest, req, copier.Option{DeepCopy: true}) + _ = copier.CopyWithOption(&getDciRegistrationcertRequest, req, copier.Option{DeepCopy: false}) clientToken, err := createToken(time.Now().UnixMilli(), req.DigitalRegisterId, app.ModuleClients.SfNode.Generate().Base64()) if err != nil { @@ -122,20 +140,24 @@ func (r *DciRegistration) GetDciRegistrationcert(req *dci.GetDciRegistrationcert getDciRegistrationcertResponse, err := app.ModuleClients.BccrClient.GetDciRegistrationcert(getDciRegistrationcertRequest) if err != nil { - return nil, err + return nil, errCommon.ReturnError(err, msg.ErrGetDciRegistrationcert, "获取数登证书下载 失败: ") } - _ = copier.CopyWithOption(&res, getDciRegistrationcertResponse, copier.Option{DeepCopy: true}) + errCommon.NoReturnInfo(getDciRegistrationcertResponse, "获取数登证书下载 成功: ") + + _ = copier.CopyWithOption(&res, getDciRegistrationcertResponse, copier.Option{DeepCopy: false}) return } // RetryDciRegistration 补正申请 func (r *DciRegistration) RetryDciRegistration(req *dci.RetryDciRegistrationRequest) (res *dci.RetryDciRegistrationResponse, err error) { + errCommon.NoReturnInfo(req, "补正申请 参数信息: ") + res = new(dci.RetryDciRegistrationResponse) retryDciRegistrationRequest := new(bccrClient.RetryDciRegistrationRequest) - _ = copier.CopyWithOption(&retryDciRegistrationRequest, req, copier.Option{DeepCopy: true}) + _ = copier.CopyWithOption(&retryDciRegistrationRequest, req, copier.Option{DeepCopy: false}) clientToken, err := createToken(time.Now().UnixMilli(), req.DigitalRegisterId, req.DciContentId, app.ModuleClients.SfNode.Generate().Base64()) if err != nil { @@ -145,20 +167,24 @@ func (r *DciRegistration) RetryDciRegistration(req *dci.RetryDciRegistrationRequ retryDciRegistrationResponse, err := app.ModuleClients.BccrClient.RetryDciRegistration(retryDciRegistrationRequest) if err != nil { - return nil, err + return nil, errCommon.ReturnError(err, msg.ErrRetryDciRegistration, "补正申请 失败: ") } - _ = copier.CopyWithOption(&res, retryDciRegistrationResponse, copier.Option{DeepCopy: true}) + errCommon.NoReturnInfo(retryDciRegistrationResponse, "补正申请 成功: ") + + _ = copier.CopyWithOption(&res, retryDciRegistrationResponse, copier.Option{DeepCopy: false}) return } // CloseDciRegistration 数登停止申请 func (r *DciRegistration) CloseDciRegistration(req *dci.CloseDciRegistrationRequest) (res *dci.CloseDciRegistrationResponse, err error) { + errCommon.NoReturnInfo(req, "数登停止申请 参数信息: ") + res = new(dci.CloseDciRegistrationResponse) closeDciRegistrationRequest := new(bccrClient.CloseDciRegistrationRequest) - _ = copier.CopyWithOption(&closeDciRegistrationRequest, req, copier.Option{DeepCopy: true}) + _ = copier.CopyWithOption(&closeDciRegistrationRequest, req, copier.Option{DeepCopy: false}) clientToken, err := createToken(time.Now().UnixMilli(), req.DigitalRegisterId, req.Name, req.MobileNo, app.ModuleClients.SfNode.Generate().Base64()) if err != nil { @@ -168,10 +194,12 @@ func (r *DciRegistration) CloseDciRegistration(req *dci.CloseDciRegistrationRequ closeDciRegistrationResponse, err := app.ModuleClients.BccrClient.CloseDciRegistration(closeDciRegistrationRequest) if err != nil { - return nil, err + return nil, errCommon.ReturnError(err, msg.ErrCloseDciRegistration, "数登停止申请 失败: ") } - _ = copier.CopyWithOption(&res, closeDciRegistrationResponse, copier.Option{DeepCopy: true}) + errCommon.NoReturnInfo(closeDciRegistrationResponse, "数登停止申请 成功: ") + + _ = copier.CopyWithOption(&res, closeDciRegistrationResponse, copier.Option{DeepCopy: false}) return } diff --git a/internal/logic/dci_user.go b/internal/logic/dci_user.go index 582ee59..e5b3798 100644 --- a/internal/logic/dci_user.go +++ b/internal/logic/dci_user.go @@ -21,10 +21,12 @@ type DciUser struct { // AddDciUser 著作权人 申领 DCI信息 func (u *DciUser) AddDciUser(req *dci.AddDciUserRequest) (res *dci.AddDciUserResponse, err error) { + errCommon.NoReturnInfo(req, "著作权人 申领 DCI信息 参数信息: ") + res = new(dci.AddDciUserResponse) addDciUserRequest := new(bccrClient.AddDciUserRequest) - _ = copier.CopyWithOption(&addDciUserRequest, req, copier.Option{DeepCopy: true}) + _ = copier.CopyWithOption(&addDciUserRequest, req, copier.Option{DeepCopy: false}) clientToken, err := createToken(time.Now().UnixMilli(), req.CertName, req.CertificateNumber, req.Phone, app.ModuleClients.SfNode.Generate().Base64()) if err != nil { @@ -34,20 +36,24 @@ func (u *DciUser) AddDciUser(req *dci.AddDciUserRequest) (res *dci.AddDciUserRes addDciUserResponse, err := app.ModuleClients.BccrClient.AddDciUser(addDciUserRequest) if err != nil { - return nil, err + return nil, errCommon.ReturnError(err, msg.ErrAddDciUser, "著作权人 申领 DCI信息 失败: ") } - _ = copier.CopyWithOption(&res, addDciUserResponse, copier.Option{DeepCopy: true}) + errCommon.NoReturnInfo(addDciUserResponse, "著作权人 申领 DCI信息 成功: ") + + _ = copier.CopyWithOption(&res, addDciUserResponse, copier.Option{DeepCopy: false}) return } // UpdateDciUser 著作权人 更新 DCI信息 func (u *DciUser) UpdateDciUser(req *dci.UpdateDciUserRequest) (res *dci.UpdateDciUserResponse, err error) { + errCommon.NoReturnInfo(req, "著作权人 更新 DCI信息 参数信息: ") + res = new(dci.UpdateDciUserResponse) updateDciUserRequest := new(bccrClient.UpdateDciUserRequest) - _ = copier.CopyWithOption(&updateDciUserRequest, req, copier.Option{DeepCopy: true}) + _ = copier.CopyWithOption(&updateDciUserRequest, req, copier.Option{DeepCopy: false}) clientToken, err := createToken(time.Now().UnixMilli(), req.DciUserId, req.CertFrontFileId, req.CertBackFileId, req.Phone, app.ModuleClients.SfNode.Generate().Base64()) if err != nil { @@ -57,27 +63,33 @@ func (u *DciUser) UpdateDciUser(req *dci.UpdateDciUserRequest) (res *dci.UpdateD updateDciUserResponse, err := app.ModuleClients.BccrClient.UpdateDciUser(updateDciUserRequest) if err != nil { - return nil, err + return nil, errCommon.ReturnError(err, msg.ErrUpdateDciUser, "著作权人 更新 DCI信息 失败: ") } - _ = copier.CopyWithOption(&res, updateDciUserResponse, copier.Option{DeepCopy: true}) + errCommon.NoReturnInfo(updateDciUserResponse, "著作权人 更新 DCI信息 成功: ") + + _ = copier.CopyWithOption(&res, updateDciUserResponse, copier.Option{DeepCopy: false}) return } // QueryDciUser 著作权人 查询 DCI信息 func (u *DciUser) QueryDciUser(req *dci.QueryDciUserRequest) (res *dci.QueryDciUserResponse, err error) { + errCommon.NoReturnInfo(req, "著作权人 查询 DCI信息 参数信息: ") + res = new(dci.QueryDciUserResponse) queryDciUserRequest := new(bccrClient.QueryDciUserRequest) - _ = copier.CopyWithOption(&queryDciUserRequest, req, copier.Option{DeepCopy: true}) + _ = copier.CopyWithOption(&queryDciUserRequest, req, copier.Option{DeepCopy: false}) queryDciUserResponse, err := app.ModuleClients.BccrClient.QueryDciUser(queryDciUserRequest) if err != nil { - return nil, err + return nil, errCommon.ReturnError(err, msg.ErrQueryDciUser, "著作权人 查询 DCI信息 失败: ") } - _ = copier.CopyWithOption(&res, queryDciUserResponse, copier.Option{DeepCopy: true}) + errCommon.NoReturnInfo(queryDciUserResponse, "著作权人 查询 DCI信息 成功: ") + + _ = copier.CopyWithOption(&res, queryDciUserResponse, copier.Option{DeepCopy: false}) return } diff --git a/internal/logic/dci_work.go b/internal/logic/dci_work.go index 62d0235..8f6ddea 100644 --- a/internal/logic/dci_work.go +++ b/internal/logic/dci_work.go @@ -20,10 +20,12 @@ type DciWork struct { // CreateDciPreregistration 作品 申领 DCI func (w *DciWork) CreateDciPreregistration(req *dci.CreateDciPreregistrationRequest) (res *dci.CreateDciPreregistrationResponse, err error) { + errCommon.NoReturnInfo(req, "作品 申领 DCI 参数信息: ") + res = new(dci.CreateDciPreregistrationResponse) createDciPreregistrationRequest := new(bccrClient.CreateDciPreregistrationRequest) - _ = copier.CopyWithOption(&createDciPreregistrationRequest, req, copier.Option{DeepCopy: true}) + _ = copier.CopyWithOption(&createDciPreregistrationRequest, req, copier.Option{DeepCopy: false}) clientToken, err := createToken(time.Now().UnixMilli(), req.DciUserId, req.WorkName, req.AuthorName, req.WorkFileId, app.ModuleClients.SfNode.Generate().Base64()) if err != nil { @@ -33,27 +35,33 @@ func (w *DciWork) CreateDciPreregistration(req *dci.CreateDciPreregistrationRequ createDciPreregistrationResponse, err := app.ModuleClients.BccrClient.CreateDciPreregistration(createDciPreregistrationRequest) if err != nil { - return nil, err + return nil, errCommon.ReturnError(err, msg.ErrCreateDciPreregistration, "作品 申领 DCI 失败: ") } - _ = copier.CopyWithOption(&res, createDciPreregistrationResponse, copier.Option{DeepCopy: true}) + errCommon.NoReturnInfo(createDciPreregistrationResponse, "作品 申领 DCI 成功: ") + + _ = copier.CopyWithOption(&res, createDciPreregistrationResponse, copier.Option{DeepCopy: false}) return } // QueryDciPreregistration 作品 查询 DCI func (w *DciWork) QueryDciPreregistration(req *dci.QueryDciPreregistrationRequest) (res *dci.QueryDciPreregistrationResponse, err error) { + errCommon.NoReturnInfo(req, "作品 查询 DCI 参数信息: ") + res = new(dci.QueryDciPreregistrationResponse) queryDciPreregistrationRequest := new(bccrClient.QueryDciPreregistrationRequest) - _ = copier.CopyWithOption(&queryDciPreregistrationRequest, req, copier.Option{DeepCopy: true}) + _ = copier.CopyWithOption(&queryDciPreregistrationRequest, req, copier.Option{DeepCopy: false}) queryDciPreregistrationResponse, err := app.ModuleClients.BccrClient.QueryDciPreregistration(queryDciPreregistrationRequest) if err != nil { - return nil, err + return nil, errCommon.ReturnError(err, msg.ErrQueryDciPreregistration, "作品 查询 DCI 失败: ") } - _ = copier.CopyWithOption(&res, queryDciPreregistrationResponse, copier.Option{DeepCopy: true}) + errCommon.NoReturnInfo(queryDciPreregistrationResponse, "作品 查询 DCI 成功: ") + + _ = copier.CopyWithOption(&res, queryDciPreregistrationResponse, copier.Option{DeepCopy: false}) return } diff --git a/internal/logic/file.go b/internal/logic/file.go index 9af50ef..4224ab0 100644 --- a/internal/logic/file.go +++ b/internal/logic/file.go @@ -35,6 +35,7 @@ func GetUploadUrl(req *bccrClient.GetUploadurlRequest) (result *bccrClient.GetUp errCommon.NoReturnError(err, "调用 蚂蚁链获取 oss url 错误:") return } + errCommon.NoReturnInfo(req, "获取 DCI GetUploadurl 返回结果:") return } @@ -49,6 +50,14 @@ func (f *File) Upload(req *dci.GetUploadUrlRequest) (res *dci.GetUploadUrlRespon fmt.Printf("GetUploadUrlRequest is : %+v\n", req) fmt.Println("+++++++++++++++ GetUploadUrlRequest =================") + errCommon.NoReturnInfo(req, "上传文件 参数记录:") + + /*// 记录 上传的文件 + //nil := app.ModuleClients.DciDB.Begin() + fileInfo := new(model.FileInfo) + fileInfo.FileUrl = req.FileName + _ = dao.CreateFileInfo(nil, fileInfo)*/ + isChinese := false getUploadUrlRequest := new(bccrClient.GetUploadurlRequest) @@ -84,7 +93,7 @@ func (f *File) Upload(req *dci.GetUploadUrlRequest) (res *dci.GetUploadUrlRespon getUploadUrlResponse := GetUploadUrl(getUploadUrlRequest) res = new(dci.GetUploadUrlResponse) - _ = copier.CopyWithOption(&res, getUploadUrlResponse, copier.Option{DeepCopy: true}) + _ = copier.CopyWithOption(&res, getUploadUrlResponse, copier.Option{DeepCopy: false}) fmt.Println("+++++++++++++++ GetUploadUrl =================") fmt.Printf("GetUploadUrl is : %+v\n", res) @@ -92,12 +101,24 @@ func (f *File) Upload(req *dci.GetUploadUrlRequest) (res *dci.GetUploadUrlRespon fmt.Println("====== =========== =================== 1 ===============") if res.ResultCode != "OK" { + /* fileInfo.ReqMsgId = res.ReqMsgId + fileInfo.ResultCode = res.ResultCode + fileInfo.ResultMsg = res.ResultMsg + fileInfo.Url = res.Url + fileInfo.FileId = res.FileId + err = dao.UpdateFileInfo(nil, fileInfo)*/ errCommon.NoReturnError(errors.New(res.ResultMsg), "获取授权访问OSS链接 错误:") return res, nil } fmt.Println("====== =========== =================== 2 ===============") if res.Url == "" || res.FileId == "" { + /*fileInfo.ReqMsgId = res.ReqMsgId + fileInfo.ResultCode = res.ResultCode + fileInfo.ResultMsg = res.ResultMsg + fileInfo.Url = res.Url + fileInfo.FileId = res.FileId + _ = dao.UpdateFileInfo(nil, fileInfo)*/ errCommon.NoReturnError(errors.New(res.ResultMsg), "获取授权访问OSS链接 错误:") return res, nil } @@ -105,7 +126,18 @@ func (f *File) Upload(req *dci.GetUploadUrlRequest) (res *dci.GetUploadUrlRespon fmt.Println("====== =========== =================== 3 ===============") code, result := utils.PutFromFileUrlWithStream(res.Url, fileName, req.FileName) if code != 200 { - return res, errCommon.ReturnError(errors.New(result), result, "上传文件 错误:") + err = errCommon.ReturnError(errors.New(result), result, "上传文件 错误:") + //fileInfo.IsUpload = 3 // 上传失败 + } else { + errCommon.NoReturnInfo(result, "上传文件 最终结果:") + //fileInfo.IsUpload = 2 // 上传成功 } - return + /*fileInfo.ReqMsgId = res.ReqMsgId + fileInfo.ResultCode = res.ResultCode + fileInfo.ResultMsg = res.ResultMsg + fileInfo.Url = res.Url + fileInfo.FileId = res.FileId + _ = dao.UpdateFileInfo(nil, fileInfo)*/ + + return res, err } diff --git a/internal/model/file.go b/internal/model/file.go new file mode 100644 index 0000000..f8b1eb0 --- /dev/null +++ b/internal/model/file.go @@ -0,0 +1,25 @@ +package model + +import "gorm.io/gorm" + +type FileInfo struct { + gorm.Model + // 请求唯一ID,用于链路跟踪和问题排查 + ReqMsgId string `json:"req_msg_id,omitempty" gorm:"req_msg_id"` + // 结果码,一般OK表示调用成功 + ResultCode string `json:"result_code,omitempty" gorm:"result_code"` + // 异常信息的文本描述 + ResultMsg string `json:"result_msg,omitempty" gorm:"result_msg"` + // 授权访问oss链接 + Url string `json:"url,omitempty" gorm:"column:url;type:varchar(4096)"` + // OSS 文件id + FileId string `json:"file_id,omitempty" gorm:"file_id"` + // 文件链接 + FileUrl string `json:"file_url,omitempty" gorm:"column:file_url;type:varchar(4096)"` + // 真实文件是否上传 + IsUpload int `json:"is_upload" gorm:"column:is_upload;type:int;default:1"` +} + +func (f *FileInfo) GetTableName() string { + return "file_info" +} diff --git a/internal/model/upload.go b/internal/model/upload.go deleted file mode 100644 index 8b53790..0000000 --- a/internal/model/upload.go +++ /dev/null @@ -1 +0,0 @@ -package model diff --git a/internal/serializer/dicUser.go b/internal/serializer/dicUser.go deleted file mode 100644 index ca1d1e9..0000000 --- a/internal/serializer/dicUser.go +++ /dev/null @@ -1 +0,0 @@ -package serializer diff --git a/internal/serializer/file.go b/internal/serializer/file.go deleted file mode 100644 index 926cf95..0000000 --- a/internal/serializer/file.go +++ /dev/null @@ -1,17 +0,0 @@ -package serializer - -import ( - "chain-dci/pb/dci" - "github.com/alibabacloud-go/tea/tea" - bccrClient "github.com/antchain-openapi-sdk-go/bccr/client" -) - -func UploadUrlResponseToRpc(in *bccrClient.GetUploadurlResponse) (out *dci.GetUploadUrlResponse) { - out = new(dci.GetUploadUrlResponse) - out.ReqMsgId = tea.ToString(in.ReqMsgId) - out.ResultMsg = tea.ToString(in.ResultMsg) - out.ResultCode = tea.ToString(in.ResultCode) - out.Url = tea.ToString(in.Url) - out.FileId = tea.ToString(in.FileId) - return -} \ No newline at end of file diff --git a/pb/grpc/dci_grpc.pb.go b/pb/dci/dci_grpc.pb.go similarity index 99% rename from pb/grpc/dci_grpc.pb.go rename to pb/dci/dci_grpc.pb.go index f1fdbaa..462b00e 100644 --- a/pb/grpc/dci_grpc.pb.go +++ b/pb/dci/dci_grpc.pb.go @@ -4,7 +4,7 @@ // - protoc v3.21.4 // source: pb/dci.proto -package grpc +package dci import ( context "context" diff --git a/pb/dci/dci_triple.pb.go b/pb/grpc/dci_triple.pb.go similarity index 99% rename from pb/dci/dci_triple.pb.go rename to pb/grpc/dci_triple.pb.go index 00e6c6f..7cc3381 100644 --- a/pb/dci/dci_triple.pb.go +++ b/pb/grpc/dci_triple.pb.go @@ -4,7 +4,7 @@ // - protoc v3.21.4 // source: pb/dci.proto -package dci +package grpc import ( context "context" diff --git a/pkg/app/app.go b/pkg/app/app.go index bfa3ebe..7290adf 100644 --- a/pkg/app/app.go +++ b/pkg/app/app.go @@ -13,7 +13,7 @@ type App struct { Lg *zap.Logger //RedisClient *redis.Client JaegerTracer *tracing.JaegerProvider - //DbMeeting *gorm.DB + //DciDB *gorm.DB SfNode *snowflake.Node BccrClient *bccrClient.Client } diff --git a/pkg/db/chainDci.go b/pkg/db/chainDci.go index 8bcaba3..1e2f41c 100644 --- a/pkg/db/chainDci.go +++ b/pkg/db/chainDci.go @@ -1,16 +1,18 @@ package db import ( + dciConfig "chain-dci/config" "github.com/google/wire" "gorm.io/gorm" + "strings" ) var DciProvider = wire.NewSet(NewDci) func NewDci() *gorm.DB { - //connOaMeeting := strings.Join([]string{dciConfig.Data.ChainDci.User, ":", dciConfig.Data.ChainDci.Password, - // "@tcp(", dciConfig.Data.ChainDci.Host, ":", dciConfig.Data.ChainDci.Port, ")/", - // dciConfig.Data.ChainDci.DbName, "?charset=utf8mb4&parseTime=true"}, "") - //DbOaMeeting := loadMysqlConn(connOaMeeting) - return nil + connDci := strings.Join([]string{dciConfig.Data.ChainDci.User, ":", dciConfig.Data.ChainDci.Password, + "@tcp(", dciConfig.Data.ChainDci.Host, ":", dciConfig.Data.ChainDci.Port, ")/", + dciConfig.Data.ChainDci.DbName, "?charset=utf8mb4&parseTime=true"}, "") + DciDB := loadMysqlConn(connDci) + return DciDB } diff --git a/pkg/db/mysql.go b/pkg/db/mysql.go index 320dbef..f877d46 100644 --- a/pkg/db/mysql.go +++ b/pkg/db/mysql.go @@ -1,6 +1,8 @@ package db import ( + "chain-dci/internal/model" + "chain-dci/pkg/app" "github.com/gin-gonic/gin" "gorm.io/driver/mysql" "gorm.io/gorm" @@ -37,12 +39,15 @@ func loadMysqlConn(conn string) *gorm.DB { sqlDB.SetMaxIdleConns(20) //设置连接池,空闲 sqlDB.SetMaxOpenConns(100) //打开 sqlDB.SetConnMaxLifetime(time.Second * 30) + err = db.AutoMigrate(&model.FileInfo{}) + if err != nil { + return nil + } return db } func DBMigration() { - //addColumn(&model_account.Users{}, "action_code") - + _ = app.ModuleClients.DciDB.AutoMigrate(&model.FileInfo{}) } func addColumn(dst interface{}, column string) { diff --git a/pkg/err/common.go b/pkg/err/common.go index 2510115..0393461 100644 --- a/pkg/err/common.go +++ b/pkg/err/common.go @@ -26,3 +26,9 @@ func NoReturnError(err error, print string) { fmt.Printf(print+"%+v\n", err) } } + +func NoReturnInfo(info interface{}, print string) { + field := zap.Field{} + field.String = fmt.Sprintf("%+v", info) + app.ModuleClients.Lg.Info(print, field) +} diff --git a/pkg/err/fileType.go b/pkg/err/fileType.go index fa816cc..f13b5e3 100644 --- a/pkg/err/fileType.go +++ b/pkg/err/fileType.go @@ -2,7 +2,7 @@ package err var FileType = map[string]string{ "TEXT": "文本(限制pdf类型)(限制文件大小10M)", - "IMAGE": "图片(限制jpg、jpeg、png类型)(限制文件大小5M)", + "IMAGE": "图片(限制jpg、jpeg、png类型)(限制文件大小5M)(图片像素不低于400x400,不高于5000x5000)", "AUDIO": "音频(限制mp3、wav类型)(限制文件大小50M)", "VIDEO": "视频(限制mp4、avi、wmv类型)(限制文件大小200M)", "PDF_IMAGE": "系列图(限制pdf类型)(限制文件大小10M)(限制子图数量2-30)", diff --git a/pkg/msg/dci_msg.go b/pkg/msg/dci_msg.go index 6341449..4f8a067 100644 --- a/pkg/msg/dci_msg.go +++ b/pkg/msg/dci_msg.go @@ -1,6 +1,18 @@ package msg const ( - ErrFileIsEmpty = "未获取到相关文件" - ErrCreateClientToken = "创建clientToken失败" + ErrFileIsEmpty = "未获取到相关文件" + ErrCreateClientToken = "创建clientToken失败" + ErrAddDciUser = "著作权人申领DCI信息失败" + ErrUpdateDciUser = "著作权人更新DCI信息失败" + ErrQueryDciUser = "著作权人查询DCI信息失败" + ErrCreateDciPreregistration = "作品申领DCI失败" + ErrQueryDciPreregistration = "作品查询DCI失败" + ErrCreateDciRegistration = "发起数登申请失败" + ErrQueryDciRegistration = "查询数登申请失败" + ErrGetDciPayurl = "数登支付链接获取失败" + ErrQueryDciPay = "数登支付查询失败" + ErrGetDciRegistrationcert = "获取数登证书下载失败" + ErrRetryDciRegistration = "补正申请失败" + ErrCloseDciRegistration = "数登停止申请失败" )