package logic import ( "bytes" "chain-dci/pkg/msg" "crypto/sha256" "encoding/hex" "errors" "fmt" "go.uber.org/zap" ) type IDci interface { // DciAddUser 注册DCI账号 每位著作权人 都需要注册此账号 // DciUpdateUser 更新DCI用户信息 著作权人 证件信息更新 // DciQueryUser 查询DCI用户信息 著作权人 信息查询 // DciPreregistration DCI申领 申请版权的作品 需要 先进行 DCI申领 获取到 DCI作品ID // DciQueryPreregistration 查询dci申领信息 通过 DCI作品ID 获取到 DCI申领的详细信息 // DciQueryPreregPublication 查询dci申领公示地址 // DciRegistration 发起数登申请 在发起数字版权登记(简称:数登)申请前,请先进行DCI申领,只有申领完成的DCI才能发起数登申请 // DciQueryRegistration 查询数登申请 用户可通过主动查询的方式获取数登结果,支持按数登id或发起数登的DCI申领id来查询 // DciGetPayUrl 获取数登支付链接 初审通过后,用户通过主动查询的方式获取数登支付链接,该接口在北京时间每日06:00-23:00可用,支付链接有效期15分钟,若支付链接过期可再次调用接口刷新支付链接 // DciQueryPay 数登支付查询 用户完成支付后,通过数登支付查询接口获取支付结果 // DciGetRegistrationCert 获取数登证书下载链接 对于申请成功的数登,可通过该接口获取数登证书下载链接,数登证书下载次数限制为10次/个/月,下载链接有效期为15天 // RetryDigitalRegister 补正申请 对于初审不通过、待补证和待补证审核不通过的数登,请按照反馈原因调整数登申请信息,完成调整后通过补正申请接口对数登进行修改 // CloseDigitalRegister 数登停止申请 对于待补证和待补证审核不通过的数登,如不想进行补正,请调用数登申请停止接口,告知系统申请停止 } type Dci struct { } func createToken(timestamp int64, keyword ...string) (token string, err error) { var b bytes.Buffer for i := 0; i < len(keyword); i++ { b.WriteString(keyword[i]) } b.WriteString(fmt.Sprint(timestamp)) h := sha256.New() if _, err = h.Write([]byte(b.String())); err != nil { zap.L().Error("createToken sha256 err", zap.Error(err)) err = errors.New(msg.ErrorSha256Write) return } s := h.Sum(nil) token = hex.EncodeToString(s) return }