Browse Source

issue

tags/v1.21.12.1
yuyuanshifu 5 years ago
parent
commit
3a40c1373c
3 changed files with 119 additions and 1 deletions
  1. BIN
      docs/开源社区平台与区块链平台对接方案.docx
  2. +101
    -0
      models/block_chain_issue.go
  3. +18
    -1
      routers/repo/blockchain.go

BIN
docs/开源社区平台与区块链平台对接方案.docx View File


+ 101
- 0
models/block_chain_issue.go View File

@@ -0,0 +1,101 @@
package models

import (
"code.gitea.io/gitea/modules/timeutil"
"fmt"
"time"
)

type BlockChainIssueStatus int
const (
BlockChainIssueInit BlockChainIssueStatus = iota
BlockChainIssueSuccess
BlockChainIssueFailed
)
type BlockChainIssue struct {
ID int64 `xorm:"pk autoincr"`
IssueID int64 `xorm:"INDEX NOT NULL unique"`
Contributor string `xorm:"INDEX NOT NULL"`
ContractAddress string `xorm:"INDEX NOT NULL"`
Status BlockChainIssueStatus `xorm:"INDEX NOT NULL DEFAULT 0"`
Amount int64 `xorm:"INDEX"`
UserID int64 `xorm:"INDEX"`
RepoID int64 `xorm:"INDEX"`
TransactionHash string `xorm:"INDEX"`
CreatedUnix timeutil.TimeStamp `xorm:"created"`
UpdatedUnix timeutil.TimeStamp `xorm:"updated"`
DeletedAt time.Time `xorm:"deleted"`

User *User `xorm:"-"`
Repo *Repository `xorm:"-"`
}

func getBlockChainIssueByID(e Engine, id int64) (*BlockChainIssue, error) {
blockChainIssue := new(BlockChainIssue)
has, err := e.ID(id).Get(blockChainIssue)
if err != nil {
return nil, err
} else if !has {
return nil, fmt.Errorf("get block_chain by id failed(%d)", id)
}
return blockChainIssue, nil
}

func GetBlockChainIssueByID(id int64) (*BlockChainIssue, error) {
return getBlockChainIssueByID(x, id)
}

func getBlockChainIssueByPrID(e Engine, prId int64) (*BlockChainIssue, error) {
blockChainIssue := new(BlockChainIssue)
has, err := e.Where("pr_id = ?", prId).Get(blockChainIssue)
if err != nil {
return nil, err
} else if !has {
return nil, fmt.Errorf("get block_chain by pr_id failed(%d)", prId)
}
return blockChainIssue, nil
}

func GetBlockChainIssueByPrID(prId int64) (*BlockChainIssue, error) {
return getBlockChainIssueByPrID(x, prId)
}

func getBlockChainIssueByCommitID(e Engine, commitID string) (*BlockChainIssue, error) {
blockChainIssue := new(BlockChainIssue)
has, err := e.Where("commit_id = ?", commitID).Get(blockChainIssue)
if err != nil {
return nil, err
} else if !has {
return nil, fmt.Errorf("get block_chain_issue by commitID failed(%s)", commitID)
}
return blockChainIssue, nil
}

func GetBlockChainIssueByCommitID(commitID string) (*BlockChainIssue, error) {
return getBlockChainIssueByCommitID(x, commitID)
}

func updateBlockChainIssueCols(e Engine, blockChainIssue *BlockChainIssue, cols ...string) error {
_, err := e.ID(blockChainIssue.ID).Cols(cols...).Update(blockChainIssue)
return err
}

func UpdateBlockChainIssueCols(blockChainIssue *BlockChainIssue, cols ...string) error {
return updateBlockChainIssueCols(x, blockChainIssue, cols...)
}

func GetBlockChainUnSuccessIssues() ([]*BlockChainIssue, error) {
blockChainIssues := make([]*BlockChainIssue, 0, 10)
return blockChainIssues, x.
Where("status != ?", BlockChainIssueSuccess).
Find(&blockChainIssues)
}

func InsertBlockChainIssue(blockChainIssue *BlockChainIssue) (_ *BlockChainIssue, err error) {

if _, err := x.Insert(blockChainIssue); err != nil {
return nil, err
}

return blockChainIssue, nil
}

+ 18
- 1
routers/repo/blockchain.go View File

@@ -241,7 +241,24 @@ func HandleBlockChainMergedPulls() {

_, err = blockchain.Contribute(repo.ContractAddress, poster.PublicKey, pr.MergedCommitID, int64(pr.Amount))
if err != nil {
log.Error("blockchain.Contribute(%s) failed:%v", pr.MergedCommitID, err)
log.Error("Contribute(%s) failed:%v", pr.MergedCommitID, err)
}
}

return
}

func HandleBlockChainUnSuccessIssues() {
issues, err := models.GetBlockChainUnSuccessCommits()
if err != nil {
log.Error("GetBlockChainUnSuccessIssues failed:", err.Error())
return
}

for _, issue := range issues {
_, err = blockchain.SetIssue(issue.ContractAddress, issue.Contributor, issue.ID, issue.Amount)
if err != nil {
log.Error("SetIssue(%s) failed:%v", issue.CommitID, err)
}
}



Loading…
Cancel
Save