Commit 58b5def0 authored by liuyuhang's avatar liuyuhang Committed by 33cn

add proposal board

parent af694733
......@@ -5,410 +5,217 @@
package commands
import (
"bytes"
"encoding/json"
"fmt"
"math"
"os"
"strings"
"github.com/33cn/chain33/rpc/jsonclient"
jsonrpc "github.com/33cn/chain33/rpc/jsonclient"
rpctypes "github.com/33cn/chain33/rpc/types"
"github.com/spf13/cobra"
"github.com/33cn/chain33/types"
pty "github.com/33cn/plugin/plugin/dapp/autonomy/types"
"github.com/spf13/cobra"
auty "github.com/33cn/plugin/plugin/dapp/autonomy/types"
)
// Cmd autonomy 客户端主程序
func Cmd() *cobra.Command {
// AutonomyCmd 自治系统命令行
func AutonomyCmd() *cobra.Command {
cmd := &cobra.Command{
Use: "autonomy",
Short: "autonomy construct management",
Short: "autonomy management",
Args: cobra.MinimumNArgs(1),
}
cmd.AddCommand(createCmd())
cmd.AddCommand(withdrawCmd())
cmd.AddCommand(terminateCmd())
cmd.AddCommand(showCmd())
cmd.AddCommand(queryWithdrawCmd())
cmd.AddCommand(listautonomyCmd())
return cmd
}
func createCmd() *cobra.Command {
cmd := &cobra.Command{
Use: "create",
Short: "create autonomy construct",
}
cmd.AddCommand(fixAmountCmd())
cmd.AddCommand(leftCmd())
return cmd
}
func createFlag(cmd *cobra.Command) *cobra.Command {
cmd.PersistentFlags().StringP("beneficiary", "b", "", "address of beneficiary")
cmd.MarkFlagRequired("beneficiary")
cmd.PersistentFlags().StringP("asset_exec", "e", "", "asset exec")
cmd.MarkFlagRequired("asset_exec")
cmd.PersistentFlags().StringP("asset_symbol", "s", "", "asset symbol")
cmd.MarkFlagRequired("asset_symbol")
cmd.PersistentFlags().Float64P("total", "t", 0, "total count of asset")
cmd.MarkFlagRequired("total")
cmd.PersistentFlags().Int64P("start_ts", "", 0, "effect, UTC timestamp")
//cmd.MarkFlagRequired("start_ts")
// board
cmd.AddCommand(
ProposalBoardCmd(),
RevokeProposalBoardCmd(),
VoteProposalBoardCmd(),
TerminateProposalBoardCmd(),
ShowProposalBoardCmd(),
)
return cmd
}
func checkAmount(amount float64) error {
if amount < 0 || amount > float64(types.MaxCoin/types.Coin) {
return types.ErrAmount
}
return nil
}
func getCreateFlags(cmd *cobra.Command) (*pty.autonomyCreate, error) {
beneficiary, _ := cmd.Flags().GetString("beneficiary")
exec, _ := cmd.Flags().GetString("asset_exec")
symbol, _ := cmd.Flags().GetString("asset_symbol")
total, _ := cmd.Flags().GetFloat64("total")
startTs, _ := cmd.Flags().GetInt64("start_ts")
if err := checkAmount(total); err != nil {
return nil, types.ErrAmount
}
totalInt64 := int64(math.Trunc((total+0.0000001)*1e4)) * 1e4
autonomy := &pty.autonomyCreate{
StartTime: startTs,
AssetExec: exec,
AssetSymbol: symbol,
TotalCount: totalInt64,
Beneficiary: beneficiary,
Means: "",
}
return autonomy, nil
}
func fixAmountCmd() *cobra.Command {
// ProposalBoardCmd 创建提案命令
func ProposalBoardCmd() *cobra.Command {
cmd := &cobra.Command{
Use: "fix_amount",
Short: "create fix amount means autonomy construct",
Run: fixAmount,
Use: "proposalboard",
Short: "create proposal board",
Run: proposalBoard,
}
cmd = createFlag(cmd)
cmd.Flags().Float64P("amount", "a", 0, "amount every period")
cmd.MarkFlagRequired("amount")
cmd.Flags().Int64P("period", "p", 0, "period in second")
cmd.MarkFlagRequired("period")
addProposalBoardFlags(cmd)
return cmd
}
func fixAmount(cmd *cobra.Command, args []string) {
create, err := getCreateFlags(cmd)
if err != nil {
fmt.Fprintln(os.Stderr, err)
return
}
func addProposalBoardFlags(cmd *cobra.Command) {
cmd.Flags().Int32P("year", "y", 0, "year")
cmd.Flags().Int32P("month", "m", 0, "month")
cmd.Flags().Int32P("day", "d", 0, "day")
cmd.Flags().Int64P("startBlock", "s", 0, "start block height")
cmd.MarkFlagRequired("startBlock")
cmd.Flags().Int64P("endBlock", "e", 0, "end block height")
cmd.MarkFlagRequired("endBlock")
amount, _ := cmd.Flags().GetFloat64("amount")
if err = checkAmount(amount); err != nil {
fmt.Fprintln(os.Stderr, err)
return
}
amountInt64 := int64(math.Trunc((amount+0.0000001)*1e4)) * 1e4
period, _ := cmd.Flags().GetInt64("period")
cmd.Flags().StringP("boards", "b", "", "addr1-addr2......addrN (3<=N<=30)")
cmd.MarkFlagRequired("boards")
}
if period <= 0 {
fmt.Fprintf(os.Stderr, "period must be positive integer")
return
}
func proposalBoard(cmd *cobra.Command, args []string) {
rpcLaddr, _ := cmd.Flags().GetString("rpc_laddr")
year, _ := cmd.Flags().GetInt32("year")
month, _ := cmd.Flags().GetInt32("month")
day, _ := cmd.Flags().GetInt32("day")
if create.TotalCount <= amountInt64 {
fmt.Fprintf(os.Stderr, "total must bigger than amount")
return
}
startBlock, _ := cmd.Flags().GetInt64("startBlock")
endBlock, _ := cmd.Flags().GetInt64("endBlock")
boardstr, _ := cmd.Flags().GetString("gameName")
create.Means = pty.FixAmountX
create.MeansOpt = &pty.autonomyCreate_FixAmount{FixAmount: &pty.FixAmount{Period: period, Amount: amountInt64}}
boards := strings.Split(boardstr, "-")
params := &rpctypes.CreateTxIn{
Execer: types.ExecName(pty.autonomyX),
ActionName: "createautonomy",
Payload: types.MustPBToJSON(create),
params := &auty.ProposalBoard{
Year: year,
Month: month,
Day: day,
Boards: boards,
StartBlockHeight: startBlock,
EndBlockHeight: endBlock,
}
rpcLaddr, _ := cmd.Flags().GetString("rpc_laddr")
ctx := jsonclient.NewRPCCtx(rpcLaddr, "Chain33.CreateTransaction", params, nil)
var res string
ctx := jsonrpc.NewRPCCtx(rpcLaddr, "autonomy.PropBoardTx", params, &res)
ctx.RunWithoutMarshal()
}
func leftCmd() *cobra.Command {
// RevokeProposalBoardCmd 撤销提案
func RevokeProposalBoardCmd() *cobra.Command {
cmd := &cobra.Command{
Use: "left_proportion",
Short: "create left proportion means autonomy construct",
Run: left,
Use: "revokeBoard",
Short: "revoke proposal board",
Run: revokeProposalBoard,
}
cmd = createFlag(cmd)
cmd.Flags().Int64P("ten_thousandth", "", 0, "input/10000 of total")
cmd.MarkFlagRequired("amount")
cmd.Flags().Int64P("period", "p", 0, "period in second")
cmd.MarkFlagRequired("period")
addRevokeProposalBoardFlags(cmd)
return cmd
}
func left(cmd *cobra.Command, args []string) {
create, err := getCreateFlags(cmd)
if err != nil {
fmt.Fprintln(os.Stderr, err)
return
}
tenThousandth, _ := cmd.Flags().GetInt64("ten_thousandth")
period, _ := cmd.Flags().GetInt64("period")
create.Means = pty.LeftProportionX
create.MeansOpt = &pty.autonomyCreate_LeftProportion{
LeftProportion: &pty.LeftProportion{Period: period, TenThousandth: tenThousandth}}
if period <= 0 {
fmt.Fprintf(os.Stderr, "period must be positive interge")
return
}
if tenThousandth <= 0 || tenThousandth >= 10000 {
fmt.Fprintf(os.Stderr, "tenThousandth must be 0~10000")
return
}
params := &rpctypes.CreateTxIn{
Execer: types.ExecName(pty.autonomyX),
ActionName: pty.Action_Createautonomy,
Payload: types.MustPBToJSON(create),
}
rpcLaddr, _ := cmd.Flags().GetString("rpc_laddr")
ctx := jsonclient.NewRPCCtx(rpcLaddr, "Chain33.CreateTransaction", params, nil)
ctx.RunWithoutMarshal()
func addRevokeProposalBoardFlags(cmd *cobra.Command) {
cmd.Flags().StringP("proposalID", "p", "", "proposal ID")
cmd.MarkFlagRequired("proposalID")
}
func withdrawCmd() *cobra.Command {
cmd := &cobra.Command{
Use: "withdraw",
Short: "withdraw asset from construct",
Run: withdraw,
}
cmd.Flags().StringP("id", "", "", "autonomy construct id")
cmd.MarkFlagRequired("id")
return cmd
}
func revokeProposalBoard(cmd *cobra.Command, args []string) {
rpcLaddr, _ := cmd.Flags().GetString("rpc_laddr")
ID, _ := cmd.Flags().GetString("proposalID")
func terminateCmd() *cobra.Command {
cmd := &cobra.Command{
Use: "terminate",
Short: "terminate construct",
Run: terminate,
params := &auty.RevokeProposalBoard{
ProposalID: ID,
}
cmd.Flags().StringP("id", "", "", "autonomy construct id")
cmd.MarkFlagRequired("id")
return cmd
var res string
ctx := jsonrpc.NewRPCCtx(rpcLaddr, "autonomy.RevokeProposalBoardTx", params, &res)
ctx.RunWithoutMarshal()
}
func showCmd() *cobra.Command {
// RevokeProposalBoardCmd 撤销提案
func VoteProposalBoardCmd() *cobra.Command {
cmd := &cobra.Command{
Use: "show",
Short: "show construct",
Run: show,
Use: "voteBoard",
Short: "vote proposal board",
Run: voteProposalBoard,
}
cmd.Flags().StringP("id", "", "", "autonomy construct id")
cmd.MarkFlagRequired("id")
addVoteProposalBoardFlags(cmd)
return cmd
}
func queryWithdrawCmd() *cobra.Command {
cmd := &cobra.Command{
Use: "show_withdraw",
Short: "show available withdraw amount of one autonomy construct",
Run: queryWithdraw,
}
cmd.Flags().StringP("id", "", "", "autonomy construct id")
cmd.MarkFlagRequired("id")
return cmd
func addVoteProposalBoardFlags(cmd *cobra.Command) {
cmd.Flags().StringP("proposalID", "p", "", "proposal ID")
cmd.MarkFlagRequired("proposalID")
cmd.Flags().BoolP("approve", "ap", true, "is approve, default true")
}
func withdraw(cmd *cobra.Command, args []string) {
id, _ := cmd.Flags().GetString("id")
params := &rpctypes.CreateTxIn{
Execer: types.ExecName(pty.autonomyX),
ActionName: pty.Action_Withdrawautonomy,
Payload: types.MustPBToJSON(&pty.autonomyWithdraw{autonomyID: id}),
}
func voteProposalBoard(cmd *cobra.Command, args []string) {
rpcLaddr, _ := cmd.Flags().GetString("rpc_laddr")
ctx := jsonclient.NewRPCCtx(rpcLaddr, "Chain33.CreateTransaction", params, nil)
ctx.RunWithoutMarshal()
}
func terminate(cmd *cobra.Command, args []string) {
id, _ := cmd.Flags().GetString("id")
ID, _ := cmd.Flags().GetString("proposalID")
approve, _ := cmd.Flags().GetBool("approve")
params := &rpctypes.CreateTxIn{
Execer: types.ExecName(pty.autonomyX),
ActionName: pty.Action_Terminateautonomy,
Payload: types.MustPBToJSON(&pty.autonomyTerminate{autonomyID: id}),
params := &auty.VoteProposalBoard{
ProposalID: ID,
Approve: approve,
}
rpcLaddr, _ := cmd.Flags().GetString("rpc_laddr")
ctx := jsonclient.NewRPCCtx(rpcLaddr, "Chain33.CreateTransaction", params, nil)
var res string
ctx := jsonrpc.NewRPCCtx(rpcLaddr, "autonomy.VoteProposalBoardTx", params, &res)
ctx.RunWithoutMarshal()
}
func queryWithdraw(cmd *cobra.Command, args []string) {
rpcLaddr, _ := cmd.Flags().GetString("rpc_laddr")
paraName, _ := cmd.Flags().GetString("paraName")
id, _ := cmd.Flags().GetString("id")
cli, err := jsonclient.NewJSONClient(rpcLaddr)
if err != nil {
fmt.Fprintln(os.Stderr, err)
return
}
param := &rpctypes.Query4Jrpc{
Execer: getRealExecName(paraName, pty.autonomyX),
FuncName: "GetautonomyWithdraw",
Payload: types.MustPBToJSON(&types.ReqString{Data: id}),
}
var resp pty.ReplyQueryautonomyWithdraw
err = cli.Call("Chain33.Query", param, &resp)
if err != nil {
fmt.Fprintln(os.Stderr, err)
return
// TerminateProposalBoard 撤销提案
func TerminateProposalBoardCmd() *cobra.Command {
cmd := &cobra.Command{
Use: "terminateBoard",
Short: "terminate proposal board",
Run: terminateProposalBoard,
}
jsonOutput(&resp)
addTerminateProposalBoardFlags(cmd)
return cmd
}
func show(cmd *cobra.Command, args []string) {
rpcLaddr, _ := cmd.Flags().GetString("rpc_laddr")
paraName, _ := cmd.Flags().GetString("paraName")
id, _ := cmd.Flags().GetString("id")
cli, err := jsonclient.NewJSONClient(rpcLaddr)
if err != nil {
fmt.Fprintln(os.Stderr, err)
return
}
param := &rpctypes.Query4Jrpc{
Execer: getRealExecName(paraName, pty.autonomyX),
FuncName: "Getautonomy",
Payload: types.MustPBToJSON(&types.ReqString{Data: id}),
}
var resp pty.autonomy
err = cli.Call("Chain33.Query", param, &resp)
if err != nil {
fmt.Fprintln(os.Stderr, err)
return
}
jsonOutput(&resp)
func addTerminateProposalBoardFlags(cmd *cobra.Command) {
cmd.Flags().StringP("proposalID", "p", "", "proposal ID")
cmd.MarkFlagRequired("proposalID")
}
func getRealExecName(paraName string, name string) string {
if strings.HasPrefix(name, "user.p.") {
return name
}
return paraName + name
}
func terminateProposalBoard(cmd *cobra.Command, args []string) {
rpcLaddr, _ := cmd.Flags().GetString("rpc_laddr")
ID, _ := cmd.Flags().GetString("proposalID")
func jsonOutput(resp types.Message) {
data, err := types.PBToJSON(resp)
if err != nil {
fmt.Fprintln(os.Stderr, err)
return
}
var buf bytes.Buffer
err = json.Indent(&buf, data, "", " ")
if err != nil {
fmt.Fprintln(os.Stderr, err)
return
params := &auty.RevokeProposalBoard{
ProposalID: ID,
}
fmt.Println(buf.String())
var res string
ctx := jsonrpc.NewRPCCtx(rpcLaddr, "autonomy.TerminateProposalBoardTx", params, &res)
ctx.RunWithoutMarshal()
}
func listautonomyCmd() *cobra.Command {
// ShowProposalBoardCmd 显示提案查询信息
func ShowProposalBoardCmd() *cobra.Command {
cmd := &cobra.Command{
Use: "list",
Short: "list autonomy",
Run: listautonomy,
Use: "showInfo",
Short: "show proposal board info",
Run: showProposalBoard,
}
cmd.Flags().StringP("last_key", "l", "", "last key")
cmd.Flags().Int32P("count", "", 10, "list count")
cmd.Flags().Int32P("direction", "d", 0, "list direction: 0/1")
cmd.Flags().StringP("create", "c", "", "list by creator")
cmd.Flags().StringP("beneficiary", "b", "", "list by beneficiary")
addShowProposalBoardflags(cmd)
return cmd
}
func listautonomy(cmd *cobra.Command, args []string) {
rpcLaddr, _ := cmd.Flags().GetString("rpc_laddr")
paraName, _ := cmd.Flags().GetString("paraName")
func addShowProposalBoardflags(cmd *cobra.Command) {
cmd.Flags().Uint32P("type", "t", 0, "type")
cmd.MarkFlagRequired("type")
create, _ := cmd.Flags().GetString("create")
beneficiary, _ := cmd.Flags().GetString("beneficiary")
if (len(create) == 0 && len(beneficiary) == 0) || (len(create) > 0 && len(beneficiary) > 0) {
fmt.Fprintln(os.Stderr, "must assign one of create or beneficiary")
return
}
funcName := "ListautonomyByBeneficiary"
if len(create) > 0 {
funcName = "ListautonomyByCreator"
}
cmd.Flags().Uint32P("status", "s", 0, "status")
cmd.Flags().Int32P("count", "c", 0, "count")
cmd.Flags().Int32P("direction", "d", 0, "direction")
cmd.Flags().Int64P("index", "i", 0, "index")
}
direction, _ := cmd.Flags().GetInt32("direction")
func showProposalBoard(cmd *cobra.Command, args []string) {
rpcLaddr, _ := cmd.Flags().GetString("rpc_laddr")
typ, _ := cmd.Flags().GetUint32("type")
status, _ := cmd.Flags().GetUint32("status")
count, _ := cmd.Flags().GetInt32("count")
last_key, _ := cmd.Flags().GetString("last_key")
req := &pty.Reqautonomys{
Direction: direction,
Count: count,
FromKey: last_key,
Initiator: create,
Beneficiary: beneficiary,
}
param := &rpctypes.Query4Jrpc{
Execer: getRealExecName(paraName, pty.autonomyX),
FuncName: funcName,
Payload: types.MustPBToJSON(req),
}
cli, err := jsonclient.NewJSONClient(rpcLaddr)
if err != nil {
fmt.Fprintln(os.Stderr, err)
return
}
var resp pty.Replyautonomys
err = cli.Call("Chain33.Query", param, &resp)
if err != nil {
fmt.Fprintln(os.Stderr, err)
return
}
jsonOutput(&resp)
direction, _ := cmd.Flags().GetInt32("direction")
index, _ := cmd.Flags().GetInt64("index")
var params rpctypes.Query4Jrpc
var rep interface{}
params.Execer = auty.AutonomyX
if 0 == typ {
req := auty.ReqQueryProposalBoard{
Status: int32(status),
Count: count,
Direction: direction,
Index: index,
}
params.FuncName = auty.GetProposalBoard
params.Payload = types.MustPBToJSON(&req)
rep = &auty.ReplyQueryProposalBoard{}
}
ctx := jsonrpc.NewRPCCtx(rpcLaddr, "Chain33.Query", params, rep)
ctx.Run()
}
......@@ -8,6 +8,7 @@ import (
"github.com/33cn/chain33/system/dapp"
"github.com/33cn/chain33/types"
auty "github.com/33cn/plugin/plugin/dapp/autonomy/types"
"fmt"
)
func (a *Autonomy) execLocalBoard(receiptData *types.ReceiptData) (*types.LocalDBSet, error) {
......@@ -25,7 +26,7 @@ func (a *Autonomy) execLocalBoard(receiptData *types.ReceiptData) (*types.LocalD
if err != nil {
return nil, err
}
kv := a.saveHeightIndex(&receipt)
kv := saveHeightIndex(&receipt)
set = append(set, kv...)
}
default:
......@@ -36,7 +37,7 @@ func (a *Autonomy) execLocalBoard(receiptData *types.ReceiptData) (*types.LocalD
return dbSet, nil
}
func (c *Autonomy) saveHeightIndex(res *auty.ReceiptProposalBoard) (kvs []*types.KeyValue) {
func saveHeightIndex(res *auty.ReceiptProposalBoard) (kvs []*types.KeyValue) {
// 先将之前的状态删除掉,再做更新
if res.Current.Status > 1 {
kv := &types.KeyValue{}
......@@ -67,7 +68,7 @@ func (a *Autonomy) execDelLocalBoard(receiptData *types.ReceiptData) (*types.Loc
if err != nil {
return nil, err
}
kv := a.delHeightIndex(&receipt)
kv := delHeightIndex(&receipt)
set = append(set, kv...)
}
default:
......@@ -78,7 +79,7 @@ func (a *Autonomy) execDelLocalBoard(receiptData *types.ReceiptData) (*types.Loc
return dbSet, nil
}
func (c *Autonomy) delHeightIndex(res *auty.ReceiptProposalBoard) (kvs []*types.KeyValue) {
func delHeightIndex(res *auty.ReceiptProposalBoard) (kvs []*types.KeyValue) {
kv := &types.KeyValue{}
kv.Key = calcBoardKey4StatusHeight(res.Current.Status, dapp.HeightIndexStr(res.Current.Height, int64(res.Current.Index)))
kv.Value = nil
......@@ -91,4 +92,45 @@ func (c *Autonomy) delHeightIndex(res *auty.ReceiptProposalBoard) (kvs []*types.
kvs = append(kvs, kv)
}
return kvs
}
// getProposalBoard
func (a *Autonomy) getProposalBoard(req *auty.ReqQueryProposalBoard) (types.Message, error) {
if req == nil {
return nil, types.ErrInvalidParam
}
var key []byte
var values [][]byte
var err error
localDb := a.GetLocalDB()
if req.GetIndex() == -1 {
key = nil
} else { //翻页查找指定的txhash列表
heightstr := genHeightIndexStr(req.GetIndex())
key = calcBoardKey4StatusHeight(req.Status, heightstr)
}
prefix := calcBoardKey4StatusHeight(req.Status, "")
values, err = localDb.List(prefix, key, req.Count, req.GetDirection())
if err != nil {
return nil, err
}
if len(values) == 0 {
return nil, types.ErrNotFound
}
var rep auty.ReplyQueryProposalBoard
for _, value := range values {
prop := &auty.AutonomyProposalBoard{}
err = types.Decode(value, prop)
if err != nil {
return nil, err
}
rep.ProBoards = append(rep.ProBoards, prop)
}
return &rep, nil
}
func genHeightIndexStr(index int64) string {
return fmt.Sprintf("%018d", index)
}
\ No newline at end of file
......@@ -5,14 +5,11 @@
package executor
import (
"time"
dbm "github.com/33cn/chain33/common/db"
"github.com/33cn/chain33/types"
auty "github.com/33cn/plugin/plugin/dapp/autonomy/types"
)
// Query_GetUnfreezeWithdraw 查询合约可提币量
func (u *Unfreeze) Query_GetUnfreezeWithdraw(in *types.ReqString) (types.Message, error) {
return QueryWithdraw(u.GetStateDB(), in.GetData())
func (a *Autonomy) Query_GetProposalBoard(in *auty.ReqQueryProposalBoard) (types.Message, error) {
return a.getProposalBoard(in)
}
\ No newline at end of file
......@@ -17,7 +17,7 @@ func init() {
Name: ptypes.PackageName,
ExecName: executor.GetName(),
Exec: executor.Init,
Cmd: commands.Cmd,
Cmd: commands.AutonomyCmd,
RPC: rpc.Init,
})
}
......@@ -31,10 +31,4 @@ message AutonomyAction {
TerminateProposalRule tmintPropRule = 12;
}
int32 ty = 13;
}
service autonomy {
rpc QueryProposalBoard(ReplyQueryProposalBoard) returns (ReplyProposalBoard) {}
rpc QueryProposalProject(ReplyQueryProposalProject) returns (ReplyProposalProject) {}
rpc QueryProposalRule(ReplyQueryProposalRule) returns (ReplyProposalRule) {}
}
\ No newline at end of file
......@@ -61,10 +61,14 @@ message LocalProposalBoard {
}
// query
message ReplyQueryProposalBoard {
string proposalID = 1;
message ReqQueryProposalBoard {
//优先根据status查询
int32 status = 1;
int32 count = 2;
int32 direction = 3;
int64 index = 4;
}
message ReplyProposalBoard {
repeated LocalProposalBoard propBoards = 1;
message ReplyQueryProposalBoard {
repeated AutonomyProposalBoard proBoards = 1;
}
\ No newline at end of file
......@@ -38,6 +38,19 @@ func (c *Jrpc) RevokeProposalBoardTx(parm *auty.RevokeProposalBoard, result *int
return nil
}
// VoteProposalBoardTx 投票提案董事会成员的RPC接口
func (c *Jrpc) VoteProposalBoardTx(parm *auty.VoteProposalBoard, result *interface{}) error {
if parm == nil {
return types.ErrInvalidParam
}
reply, err := c.cli.voteProposalBoard(context.Background(), parm)
if err != nil {
return err
}
*result = hex.EncodeToString(reply.Data)
return nil
}
// TerminateProposalBoardTx 终止提案董事会成员的RPC接口
func (c *Jrpc) TerminateProposalBoardTx(parm *auty.TerminateProposalBoard, result *interface{}) error {
if parm == nil {
......
......@@ -42,6 +42,21 @@ func (c *channelClient) revokeProposalBoard(ctx context.Context, head *auty.Revo
return &types.UnsignTx{Data: data}, nil
}
func (c *channelClient) voteProposalBoard(ctx context.Context, head *auty.VoteProposalBoard) (*types.UnsignTx, error) {
val := &auty.AutonomyAction{
Ty: auty.AutonomyActionVotePropBoard,
Value: &auty.AutonomyAction_VotePropBoard{VotePropBoard: head},
}
tx := &types.Transaction{
Payload: types.Encode(val),
}
data, err := types.FormatTxEncode(types.ExecName(auty.AutonomyX), tx)
if err != nil {
return nil, err
}
return &types.UnsignTx{Data: data}, nil
}
func (c *channelClient) terminateProposalBoard(ctx context.Context, head *auty.TerminateProposalBoard) (*types.UnsignTx, error) {
val := &auty.AutonomyAction{
Ty: auty.AutonomyActionTmintPropBoard,
......
......@@ -20,8 +20,8 @@ It has these top-level messages:
TerminateProposalBoard
ReceiptProposalBoard
LocalProposalBoard
ReqQueryProposalBoard
ReplyQueryProposalBoard
ReplyProposalBoard
VotesResult
VotesRecord
AutonomyProposalProject
......@@ -47,11 +47,6 @@ import proto "github.com/golang/protobuf/proto"
import fmt "fmt"
import math "math"
import (
context "golang.org/x/net/context"
grpc "google.golang.org/grpc"
)
// Reference imports to suppress errors if they are not otherwise used.
var _ = proto.Marshal
var _ = fmt.Errorf
......@@ -507,174 +502,31 @@ func init() {
proto.RegisterType((*AutonomyAction)(nil), "types.AutonomyAction")
}
// Reference imports to suppress errors if they are not otherwise used.
var _ context.Context
var _ grpc.ClientConn
// This is a compile-time assertion to ensure that this generated file
// is compatible with the grpc package it is being compiled against.
const _ = grpc.SupportPackageIsVersion4
// Client API for Autonomy service
type AutonomyClient interface {
QueryProposalBoard(ctx context.Context, in *ReplyQueryProposalBoard, opts ...grpc.CallOption) (*ReplyProposalBoard, error)
QueryProposalProject(ctx context.Context, in *ReplyQueryProposalProject, opts ...grpc.CallOption) (*ReplyProposalProject, error)
QueryProposalRule(ctx context.Context, in *ReplyQueryProposalRule, opts ...grpc.CallOption) (*ReplyProposalRule, error)
}
type autonomyClient struct {
cc *grpc.ClientConn
}
func NewAutonomyClient(cc *grpc.ClientConn) AutonomyClient {
return &autonomyClient{cc}
}
func (c *autonomyClient) QueryProposalBoard(ctx context.Context, in *ReplyQueryProposalBoard, opts ...grpc.CallOption) (*ReplyProposalBoard, error) {
out := new(ReplyProposalBoard)
err := grpc.Invoke(ctx, "/types.autonomy/QueryProposalBoard", in, out, c.cc, opts...)
if err != nil {
return nil, err
}
return out, nil
}
func (c *autonomyClient) QueryProposalProject(ctx context.Context, in *ReplyQueryProposalProject, opts ...grpc.CallOption) (*ReplyProposalProject, error) {
out := new(ReplyProposalProject)
err := grpc.Invoke(ctx, "/types.autonomy/QueryProposalProject", in, out, c.cc, opts...)
if err != nil {
return nil, err
}
return out, nil
}
func (c *autonomyClient) QueryProposalRule(ctx context.Context, in *ReplyQueryProposalRule, opts ...grpc.CallOption) (*ReplyProposalRule, error) {
out := new(ReplyProposalRule)
err := grpc.Invoke(ctx, "/types.autonomy/QueryProposalRule", in, out, c.cc, opts...)
if err != nil {
return nil, err
}
return out, nil
}
// Server API for Autonomy service
type AutonomyServer interface {
QueryProposalBoard(context.Context, *ReplyQueryProposalBoard) (*ReplyProposalBoard, error)
QueryProposalProject(context.Context, *ReplyQueryProposalProject) (*ReplyProposalProject, error)
QueryProposalRule(context.Context, *ReplyQueryProposalRule) (*ReplyProposalRule, error)
}
func RegisterAutonomyServer(s *grpc.Server, srv AutonomyServer) {
s.RegisterService(&_Autonomy_serviceDesc, srv)
}
func _Autonomy_QueryProposalBoard_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
in := new(ReplyQueryProposalBoard)
if err := dec(in); err != nil {
return nil, err
}
if interceptor == nil {
return srv.(AutonomyServer).QueryProposalBoard(ctx, in)
}
info := &grpc.UnaryServerInfo{
Server: srv,
FullMethod: "/types.autonomy/QueryProposalBoard",
}
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
return srv.(AutonomyServer).QueryProposalBoard(ctx, req.(*ReplyQueryProposalBoard))
}
return interceptor(ctx, in, info, handler)
}
func _Autonomy_QueryProposalProject_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
in := new(ReplyQueryProposalProject)
if err := dec(in); err != nil {
return nil, err
}
if interceptor == nil {
return srv.(AutonomyServer).QueryProposalProject(ctx, in)
}
info := &grpc.UnaryServerInfo{
Server: srv,
FullMethod: "/types.autonomy/QueryProposalProject",
}
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
return srv.(AutonomyServer).QueryProposalProject(ctx, req.(*ReplyQueryProposalProject))
}
return interceptor(ctx, in, info, handler)
}
func _Autonomy_QueryProposalRule_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
in := new(ReplyQueryProposalRule)
if err := dec(in); err != nil {
return nil, err
}
if interceptor == nil {
return srv.(AutonomyServer).QueryProposalRule(ctx, in)
}
info := &grpc.UnaryServerInfo{
Server: srv,
FullMethod: "/types.autonomy/QueryProposalRule",
}
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
return srv.(AutonomyServer).QueryProposalRule(ctx, req.(*ReplyQueryProposalRule))
}
return interceptor(ctx, in, info, handler)
}
var _Autonomy_serviceDesc = grpc.ServiceDesc{
ServiceName: "types.autonomy",
HandlerType: (*AutonomyServer)(nil),
Methods: []grpc.MethodDesc{
{
MethodName: "QueryProposalBoard",
Handler: _Autonomy_QueryProposalBoard_Handler,
},
{
MethodName: "QueryProposalProject",
Handler: _Autonomy_QueryProposalProject_Handler,
},
{
MethodName: "QueryProposalRule",
Handler: _Autonomy_QueryProposalRule_Handler,
},
},
Streams: []grpc.StreamDesc{},
Metadata: "autonomy.proto",
}
func init() { proto.RegisterFile("autonomy.proto", fileDescriptor0) }
var fileDescriptor0 = []byte{
// 436 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x84, 0x94, 0xcf, 0xae, 0xd2, 0x40,
0x14, 0xc6, 0x4b, 0xb5, 0x5c, 0xee, 0x29, 0xad, 0x7a, 0xbc, 0x31, 0xbd, 0xd5, 0xab, 0xa4, 0x2b,
0x56, 0x24, 0xa2, 0x2b, 0x13, 0x0d, 0x10, 0xa2, 0x6c, 0x34, 0xd0, 0x18, 0x5d, 0x17, 0x9c, 0x05,
0x52, 0x3a, 0xcd, 0x30, 0x6d, 0xd2, 0x17, 0xf0, 0xad, 0x7c, 0xb7, 0x9b, 0x0e, 0xd3, 0x3f, 0xd3,
0x96, 0xb0, 0x83, 0x7e, 0xe7, 0xf7, 0xcb, 0x7c, 0x67, 0xd2, 0x82, 0x1d, 0x24, 0x9c, 0x46, 0xf4,
0x98, 0x4d, 0x62, 0x46, 0x39, 0x45, 0x83, 0x67, 0x31, 0x39, 0xb9, 0xe6, 0x96, 0x06, 0xec, 0xcf,
0xf9, 0x99, 0x6b, 0xc5, 0x8c, 0xfe, 0x25, 0x3b, 0x2e, 0xff, 0x02, 0x4b, 0x42, 0x72, 0xfe, 0xed,
0xfd, 0xef, 0x83, 0x3d, 0x97, 0x86, 0xf9, 0x8e, 0xef, 0x69, 0x84, 0x1f, 0xe1, 0x36, 0x66, 0x34,
0x5e, 0xe4, 0x02, 0xa7, 0x37, 0xea, 0x8d, 0xcd, 0xe9, 0xdd, 0x44, 0x58, 0x27, 0x6b, 0x46, 0x63,
0x7a, 0x0a, 0x42, 0x91, 0xad, 0x34, 0xbf, 0x1a, 0xc4, 0x19, 0x0c, 0x59, 0x7a, 0x58, 0x97, 0xa0,
0x2e, 0x40, 0x57, 0x82, 0x3e, 0x49, 0xe9, 0x81, 0x34, 0x71, 0x85, 0xc0, 0x19, 0x58, 0x29, 0xe5,
0xa4, 0x52, 0x3c, 0x11, 0x0a, 0x47, 0x2a, 0x7e, 0xc9, 0xac, 0x2e, 0x50, 0x01, 0xfc, 0x06, 0x36,
0x3f, 0xee, 0x23, 0x5e, 0x29, 0x9e, 0x0a, 0xc5, 0x83, 0x54, 0xfc, 0x24, 0xec, 0xb8, 0x8f, 0x82,
0xb6, 0xa7, 0x81, 0xe1, 0x27, 0x30, 0xf3, 0x66, 0xeb, 0xf3, 0xda, 0x1c, 0x43, 0x58, 0x5e, 0x35,
0x96, 0x20, 0xd3, 0x95, 0xe6, 0xd7, 0x87, 0xf1, 0x2b, 0xd8, 0xb2, 0x56, 0x81, 0xf7, 0x05, 0xfe,
0xa6, 0x73, 0x15, 0x95, 0xa4, 0x41, 0xe1, 0x12, 0x9e, 0x15, 0xed, 0x0a, 0xd1, 0xcd, 0xd5, 0x85,
0x34, 0x11, 0xfc, 0x0e, 0xcf, 0xcb, 0x6e, 0x85, 0x66, 0x20, 0x34, 0xef, 0x2e, 0x2d, 0xa5, 0x3a,
0x52, 0x0b, 0xc5, 0xf7, 0x30, 0xc8, 0xbb, 0xfa, 0x49, 0x48, 0x9c, 0x5b, 0xa1, 0x79, 0xd9, 0xd8,
0x4a, 0x1e, 0xad, 0x34, 0xbf, 0x1c, 0xc3, 0xcf, 0x60, 0xca, 0x66, 0x82, 0x02, 0x41, 0xdd, 0x77,
0x2e, 0x43, 0xb2, 0xf5, 0x79, 0xfc, 0x02, 0xc3, 0xa2, 0x93, 0xe0, 0xcd, 0xab, 0x3b, 0x50, 0xe6,
0x71, 0x09, 0x56, 0xd9, 0x42, 0x08, 0x86, 0xca, 0x6d, 0xb4, 0xda, 0xcb, 0x33, 0xa8, 0x10, 0xda,
0xa0, 0xf3, 0xcc, 0xb1, 0x46, 0xbd, 0xb1, 0xe1, 0xeb, 0x3c, 0x5b, 0xdc, 0x80, 0x91, 0x06, 0x61,
0x42, 0xa6, 0xff, 0x74, 0x18, 0x14, 0x6f, 0x20, 0x6e, 0x00, 0x37, 0x09, 0x61, 0x99, 0x72, 0x22,
0x7c, 0x5b, 0x76, 0x8d, 0xc3, 0xac, 0x9d, 0xbb, 0xf7, 0xf5, 0x5c, 0x89, 0x3c, 0x0d, 0x7f, 0xc3,
0x9d, 0x82, 0x14, 0x17, 0x31, 0xba, 0x28, 0x95, 0x13, 0xee, 0xeb, 0x2e, 0xad, 0x0c, 0x3d, 0x0d,
0x7f, 0xc0, 0x0b, 0x05, 0x13, 0x35, 0x1f, 0x2e, 0x5a, 0xf3, 0xd8, 0x75, 0xba, 0x94, 0x79, 0xe2,
0x69, 0xdb, 0xbe, 0xf8, 0x9e, 0x7c, 0x78, 0x0c, 0x00, 0x00, 0xff, 0xff, 0x9d, 0xc2, 0xca, 0x38,
0x90, 0x04, 0x00, 0x00,
// 366 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x84, 0x93, 0xcd, 0x6a, 0xf2, 0x40,
0x14, 0x86, 0xd5, 0xef, 0x8b, 0x3f, 0x27, 0x26, 0x2d, 0xa7, 0xa5, 0xa4, 0xd2, 0x52, 0xe9, 0xca,
0x95, 0xd0, 0x9f, 0x55, 0xa1, 0x45, 0x45, 0x5a, 0x37, 0x05, 0x09, 0xa5, 0xfb, 0x68, 0x67, 0x61,
0x8d, 0x99, 0x30, 0x4e, 0x02, 0xb9, 0xb8, 0xde, 0x5b, 0xc9, 0x71, 0x92, 0x98, 0x89, 0xc5, 0x5d,
0x92, 0x73, 0x9e, 0x87, 0x79, 0xdf, 0x30, 0x60, 0x7b, 0x91, 0xe4, 0x01, 0xdf, 0x24, 0xc3, 0x50,
0x70, 0xc9, 0xd1, 0x90, 0x49, 0xc8, 0xb6, 0x3d, 0x73, 0xc1, 0x3d, 0xf1, 0xb5, 0xfb, 0xd6, 0xb3,
0x42, 0xc1, 0xbf, 0xd9, 0x52, 0xaa, 0x57, 0x10, 0x91, 0xcf, 0x76, 0xcf, 0xb7, 0x3f, 0x4d, 0xb0,
0xc7, 0xca, 0x30, 0x5e, 0xca, 0x15, 0x0f, 0xf0, 0x11, 0x3a, 0xa1, 0xe0, 0xe1, 0x24, 0x15, 0x38,
0xf5, 0x7e, 0x7d, 0x60, 0xde, 0x9f, 0x0f, 0xc9, 0x3a, 0x9c, 0x0b, 0x1e, 0xf2, 0xad, 0xe7, 0xd3,
0x6c, 0x56, 0x73, 0x8b, 0x45, 0x1c, 0x41, 0x57, 0xc4, 0xeb, 0x79, 0x0e, 0x36, 0x08, 0xec, 0x29,
0xd0, 0x65, 0x31, 0x5f, 0x33, 0x1d, 0x2f, 0x11, 0x38, 0x02, 0x2b, 0xe6, 0x92, 0x15, 0x8a, 0x7f,
0xa4, 0x70, 0x94, 0xe2, 0x53, 0xcd, 0xf6, 0x05, 0x65, 0x00, 0xdf, 0xc0, 0x96, 0x9b, 0x55, 0x20,
0x0b, 0xc5, 0x7f, 0x52, 0x5c, 0x2b, 0xc5, 0x07, 0x13, 0x9b, 0x55, 0xe0, 0x55, 0x3d, 0x1a, 0x86,
0x4f, 0x60, 0xa6, 0xc9, 0xe6, 0xbb, 0xda, 0x1c, 0x83, 0x2c, 0x17, 0x5a, 0x09, 0x6a, 0x3a, 0xab,
0xb9, 0xfb, 0xcb, 0xf8, 0x0a, 0xb6, 0x8a, 0x95, 0xe1, 0x4d, 0xc2, 0xaf, 0x0e, 0x56, 0x51, 0x48,
0x34, 0x0a, 0xa7, 0x70, 0x92, 0xa5, 0xcb, 0x44, 0xad, 0xa3, 0x85, 0xe8, 0x08, 0xbe, 0xc3, 0x69,
0x9e, 0x2d, 0xd3, 0xb4, 0x49, 0x73, 0xf3, 0x57, 0x29, 0xc5, 0x91, 0x2a, 0x28, 0xde, 0x41, 0x3b,
0xcd, 0xea, 0x46, 0x3e, 0x73, 0x3a, 0xa4, 0x39, 0xd3, 0x5a, 0x49, 0x47, 0xb3, 0x9a, 0x9b, 0xaf,
0xe1, 0x33, 0x98, 0x2a, 0x19, 0x51, 0x40, 0xd4, 0xe5, 0xc1, 0x32, 0x14, 0xbb, 0xbf, 0x8f, 0x2f,
0xd0, 0xcd, 0x32, 0x11, 0x6f, 0x1e, 0xed, 0xa0, 0xb4, 0x8f, 0x53, 0xb0, 0xf2, 0x14, 0x24, 0xe8,
0x96, 0xfe, 0x46, 0x25, 0xbd, 0x3a, 0x43, 0x19, 0x42, 0x1b, 0x1a, 0x32, 0x71, 0xac, 0x7e, 0x7d,
0x60, 0xb8, 0x0d, 0x99, 0x4c, 0x5a, 0x60, 0xc4, 0x9e, 0x1f, 0xb1, 0x45, 0x93, 0xae, 0xd1, 0xc3,
0x6f, 0x00, 0x00, 0x00, 0xff, 0xff, 0x17, 0x5d, 0xfb, 0x98, 0x87, 0x03, 0x00, 0x00,
}
......@@ -244,34 +244,59 @@ func (m *LocalProposalBoard) GetComments() []string {
}
// query
type ReplyQueryProposalBoard struct {
ProposalID string `protobuf:"bytes,1,opt,name=proposalID" json:"proposalID,omitempty"`
type ReqQueryProposalBoard struct {
// 优先根据status查询
Status int32 `protobuf:"varint,1,opt,name=status" json:"status,omitempty"`
Count int32 `protobuf:"varint,2,opt,name=count" json:"count,omitempty"`
Direction int32 `protobuf:"varint,3,opt,name=direction" json:"direction,omitempty"`
Index int64 `protobuf:"varint,4,opt,name=index" json:"index,omitempty"`
}
func (m *ReplyQueryProposalBoard) Reset() { *m = ReplyQueryProposalBoard{} }
func (m *ReplyQueryProposalBoard) String() string { return proto.CompactTextString(m) }
func (*ReplyQueryProposalBoard) ProtoMessage() {}
func (*ReplyQueryProposalBoard) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{7} }
func (m *ReqQueryProposalBoard) Reset() { *m = ReqQueryProposalBoard{} }
func (m *ReqQueryProposalBoard) String() string { return proto.CompactTextString(m) }
func (*ReqQueryProposalBoard) ProtoMessage() {}
func (*ReqQueryProposalBoard) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{7} }
func (m *ReplyQueryProposalBoard) GetProposalID() string {
func (m *ReqQueryProposalBoard) GetStatus() int32 {
if m != nil {
return m.ProposalID
return m.Status
}
return ""
return 0
}
type ReplyProposalBoard struct {
PropBoards []*LocalProposalBoard `protobuf:"bytes,1,rep,name=propBoards" json:"propBoards,omitempty"`
func (m *ReqQueryProposalBoard) GetCount() int32 {
if m != nil {
return m.Count
}
return 0
}
func (m *ReplyProposalBoard) Reset() { *m = ReplyProposalBoard{} }
func (m *ReplyProposalBoard) String() string { return proto.CompactTextString(m) }
func (*ReplyProposalBoard) ProtoMessage() {}
func (*ReplyProposalBoard) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{8} }
func (m *ReqQueryProposalBoard) GetDirection() int32 {
if m != nil {
return m.Direction
}
return 0
}
func (m *ReqQueryProposalBoard) GetIndex() int64 {
if m != nil {
return m.Index
}
return 0
}
type ReplyQueryProposalBoard struct {
ProBoards []*AutonomyProposalBoard `protobuf:"bytes,1,rep,name=proBoards" json:"proBoards,omitempty"`
}
func (m *ReplyQueryProposalBoard) Reset() { *m = ReplyQueryProposalBoard{} }
func (m *ReplyQueryProposalBoard) String() string { return proto.CompactTextString(m) }
func (*ReplyQueryProposalBoard) ProtoMessage() {}
func (*ReplyQueryProposalBoard) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{8} }
func (m *ReplyProposalBoard) GetPropBoards() []*LocalProposalBoard {
func (m *ReplyQueryProposalBoard) GetProBoards() []*AutonomyProposalBoard {
if m != nil {
return m.PropBoards
return m.ProBoards
}
return nil
}
......@@ -284,42 +309,44 @@ func init() {
proto.RegisterType((*TerminateProposalBoard)(nil), "types.TerminateProposalBoard")
proto.RegisterType((*ReceiptProposalBoard)(nil), "types.ReceiptProposalBoard")
proto.RegisterType((*LocalProposalBoard)(nil), "types.LocalProposalBoard")
proto.RegisterType((*ReqQueryProposalBoard)(nil), "types.ReqQueryProposalBoard")
proto.RegisterType((*ReplyQueryProposalBoard)(nil), "types.ReplyQueryProposalBoard")
proto.RegisterType((*ReplyProposalBoard)(nil), "types.ReplyProposalBoard")
}
func init() { proto.RegisterFile("board.proto", fileDescriptor1) }
var fileDescriptor1 = []byte{
// 467 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x94, 0x53, 0x5d, 0x8b, 0xd4, 0x30,
0x14, 0xa5, 0x76, 0xda, 0xd9, 0xb9, 0xc3, 0xca, 0x1a, 0xc7, 0xb5, 0x2e, 0x22, 0xa5, 0x88, 0x14,
0x1f, 0x06, 0x19, 0x3f, 0x70, 0x1f, 0x1d, 0x14, 0x14, 0x14, 0x35, 0x88, 0xef, 0xd9, 0xf6, 0xea,
0x0c, 0xdb, 0x36, 0x21, 0x49, 0x07, 0xfb, 0xe6, 0x5f, 0xf4, 0x57, 0xf8, 0x37, 0x24, 0xb7, 0x19,
0x9d, 0xba, 0x83, 0x38, 0x6f, 0x39, 0x37, 0xe7, 0x24, 0xe7, 0x26, 0xe7, 0xc2, 0xf4, 0x42, 0x0a,
0x5d, 0xce, 0x95, 0x96, 0x56, 0xb2, 0xc8, 0x76, 0x0a, 0xcd, 0xd9, 0x71, 0x55, 0xc8, 0xba, 0x96,
0x4d, 0x5f, 0xcd, 0x7e, 0x04, 0x70, 0xeb, 0x45, 0x6b, 0x65, 0x23, 0xeb, 0xee, 0x83, 0x96, 0x4a,
0x1a, 0x51, 0x2d, 0x9d, 0x8a, 0x2d, 0x60, 0xa2, 0xb4, 0x54, 0x04, 0x92, 0x20, 0x0d, 0xf2, 0xe9,
0x62, 0x36, 0xa7, 0x33, 0xe6, 0x03, 0x22, 0xff, 0x43, 0x63, 0xf7, 0x21, 0xd4, 0x68, 0x92, 0x6b,
0xc4, 0x66, 0x9e, 0xfd, 0x59, 0x5a, 0x34, 0x1c, 0x4d, 0x5b, 0x59, 0xee, 0xb6, 0xd9, 0x29, 0xc4,
0xc6, 0x0a, 0xdb, 0x9a, 0x24, 0x4c, 0x83, 0x3c, 0xe2, 0x1e, 0xb1, 0x04, 0xc6, 0xa2, 0x2c, 0x35,
0x1a, 0x93, 0x8c, 0xd2, 0x20, 0x9f, 0xf0, 0x2d, 0x74, 0x8a, 0x15, 0xae, 0xbf, 0xae, 0x6c, 0x12,
0xa5, 0x41, 0x1e, 0x72, 0x8f, 0xd8, 0x0c, 0xa2, 0x75, 0x53, 0xe2, 0xb7, 0x24, 0xa6, 0x83, 0x7a,
0x90, 0xfd, 0x0c, 0xe0, 0x78, 0xd8, 0x0b, 0x83, 0x51, 0x87, 0x42, 0x53, 0x1b, 0x11, 0xa7, 0xb5,
0xd3, 0xd6, 0xb2, 0xb1, 0x2b, 0x72, 0x1b, 0xf1, 0x1e, 0xb0, 0x13, 0x08, 0x4b, 0xd1, 0x79, 0x63,
0x6e, 0xe9, 0xee, 0xa6, 0x67, 0x74, 0xa6, 0xc2, 0x7c, 0xc2, 0x3d, 0x62, 0x0f, 0xe1, 0xc4, 0x58,
0xa1, 0xed, 0xb2, 0x92, 0xc5, 0xe5, 0xeb, 0x5d, 0x77, 0x57, 0xea, 0xec, 0x01, 0x5c, 0xc7, 0xa6,
0xdc, 0x65, 0xc6, 0xc4, 0xfc, 0xab, 0xca, 0xe6, 0xc0, 0x34, 0x8a, 0xea, 0xd5, 0x90, 0x3b, 0x26,
0xee, 0x9e, 0x9d, 0xec, 0x29, 0xdc, 0xe4, 0xb8, 0x91, 0x97, 0x38, 0x6c, 0xf7, 0x1e, 0x80, 0xf2,
0x85, 0x37, 0x2f, 0xa9, 0xe9, 0x09, 0xdf, 0xa9, 0x64, 0xef, 0xe0, 0x86, 0xfb, 0x94, 0x83, 0x44,
0xf4, 0x3b, 0x4a, 0x69, 0xb9, 0x41, 0x7a, 0xb1, 0x23, 0xbe, 0x85, 0xd9, 0x73, 0x38, 0xfd, 0x84,
0xba, 0x5e, 0x37, 0xe2, 0xc0, 0x33, 0xb3, 0xef, 0x01, 0xcc, 0x38, 0x16, 0xb8, 0x56, 0x76, 0x28,
0x7c, 0x04, 0x23, 0xa5, 0x71, 0xe3, 0x73, 0x77, 0xd7, 0x27, 0x69, 0x6f, 0x50, 0x39, 0x31, 0xd9,
0x33, 0x18, 0x17, 0xad, 0xd6, 0xd8, 0x58, 0x1f, 0xbf, 0x7f, 0x8b, 0xb6, 0xe4, 0xec, 0x0b, 0xb0,
0xb7, 0xb2, 0x10, 0xd5, 0xf0, 0xfe, 0x27, 0x10, 0x53, 0xaa, 0xcb, 0xff, 0x72, 0xe0, 0xb9, 0xec,
0x0c, 0x8e, 0xdc, 0x70, 0x61, 0x63, 0xdd, 0x0c, 0xb8, 0xb0, 0xfc, 0xc6, 0xd9, 0x39, 0xdc, 0xe6,
0xa8, 0xaa, 0xee, 0x63, 0x8b, 0xba, 0x3b, 0xec, 0x95, 0xde, 0x03, 0x23, 0xe9, 0x50, 0x75, 0xde,
0xab, 0x96, 0x7d, 0x36, 0x83, 0x34, 0xcc, 0xa7, 0x8b, 0x3b, 0xde, 0xe6, 0xd5, 0x8e, 0xf8, 0x0e,
0xf9, 0x22, 0xa6, 0xd9, 0x7f, 0xfc, 0x2b, 0x00, 0x00, 0xff, 0xff, 0x3b, 0xd3, 0xb7, 0x34, 0x20,
0x04, 0x00, 0x00,
// 498 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x94, 0x54, 0x5d, 0x8b, 0xd4, 0x30,
0x14, 0x25, 0x76, 0x3a, 0xb3, 0xbd, 0xcb, 0xca, 0x1a, 0x67, 0xd7, 0xb2, 0x2c, 0x52, 0x8a, 0x48,
0xf1, 0x61, 0x90, 0xf5, 0x03, 0xf1, 0xcd, 0x41, 0x41, 0x41, 0x41, 0x83, 0xfa, 0x9e, 0x6d, 0xaf,
0x4e, 0xd9, 0xb6, 0x89, 0x49, 0x3a, 0xd8, 0x37, 0xff, 0xa2, 0xbf, 0xc2, 0xbf, 0x21, 0x49, 0x33,
0x76, 0xba, 0x0e, 0xba, 0xfb, 0xd6, 0x73, 0x73, 0x6e, 0x72, 0x4f, 0x72, 0x4e, 0x61, 0xff, 0x5c,
0x70, 0x55, 0x2c, 0xa4, 0x12, 0x46, 0xd0, 0xd0, 0x74, 0x12, 0xf5, 0xc9, 0x41, 0x95, 0x8b, 0xba,
0x16, 0x4d, 0x5f, 0x4d, 0x7f, 0x12, 0x38, 0x7a, 0xd1, 0x1a, 0xd1, 0x88, 0xba, 0x7b, 0xaf, 0x84,
0x14, 0x9a, 0x57, 0x4b, 0xdb, 0x45, 0xcf, 0x20, 0x92, 0x4a, 0x48, 0x07, 0x62, 0x92, 0x90, 0x6c,
0xff, 0x6c, 0xbe, 0x70, 0x7b, 0x2c, 0x46, 0x44, 0x36, 0xd0, 0xe8, 0x3d, 0x08, 0x14, 0xea, 0xf8,
0x86, 0x63, 0x53, 0xcf, 0xfe, 0x2c, 0x0c, 0x6a, 0x86, 0xba, 0xad, 0x0c, 0xb3, 0xcb, 0xf4, 0x18,
0xa6, 0xda, 0x70, 0xd3, 0xea, 0x38, 0x48, 0x48, 0x16, 0x32, 0x8f, 0x68, 0x0c, 0x33, 0x5e, 0x14,
0x0a, 0xb5, 0x8e, 0x27, 0x09, 0xc9, 0x22, 0xb6, 0x81, 0xb6, 0x63, 0x85, 0xe5, 0xd7, 0x95, 0x89,
0xc3, 0x84, 0x64, 0x01, 0xf3, 0x88, 0xce, 0x21, 0x2c, 0x9b, 0x02, 0xbf, 0xc7, 0x53, 0xb7, 0x51,
0x0f, 0xd2, 0x5f, 0x04, 0x0e, 0xc6, 0x5a, 0x28, 0x4c, 0x3a, 0xe4, 0xca, 0xc9, 0x08, 0x99, 0xfb,
0xb6, 0xbd, 0xb5, 0x68, 0xcc, 0xca, 0x4d, 0x1b, 0xb2, 0x1e, 0xd0, 0x43, 0x08, 0x0a, 0xde, 0xf9,
0xc1, 0xec, 0xa7, 0x3d, 0xdb, 0x5d, 0xa3, 0x1d, 0x2a, 0xc8, 0x22, 0xe6, 0x11, 0x7d, 0x00, 0x87,
0xda, 0x70, 0x65, 0x96, 0x95, 0xc8, 0x2f, 0x5e, 0x6f, 0x4f, 0xf7, 0x57, 0x9d, 0xde, 0x87, 0x9b,
0xd8, 0x14, 0xdb, 0xcc, 0xa9, 0x63, 0x5e, 0xaa, 0xd2, 0x05, 0x50, 0x85, 0xbc, 0x7a, 0x35, 0xe6,
0xce, 0x1c, 0x77, 0xc7, 0x4a, 0xfa, 0x04, 0x6e, 0x33, 0x5c, 0x8b, 0x0b, 0x1c, 0xcb, 0xbd, 0x0b,
0x20, 0x7d, 0xe1, 0xcd, 0x4b, 0x27, 0x3a, 0x62, 0x5b, 0x95, 0xf4, 0x1d, 0xdc, 0xb2, 0x8f, 0x72,
0xad, 0x26, 0xf7, 0x3a, 0x52, 0x2a, 0xb1, 0x46, 0x77, 0x63, 0x7b, 0x6c, 0x03, 0xd3, 0x67, 0x70,
0xfc, 0x11, 0x55, 0x5d, 0x36, 0xfc, 0x9a, 0x7b, 0xa6, 0x3f, 0x08, 0xcc, 0x19, 0xe6, 0x58, 0x4a,
0x33, 0x6e, 0x7c, 0x08, 0x13, 0xa9, 0x70, 0xed, 0x7d, 0x77, 0xea, 0x9d, 0xb4, 0xd3, 0xa8, 0xcc,
0x31, 0xe9, 0x53, 0x98, 0xe5, 0xad, 0x52, 0xd8, 0x18, 0x6f, 0xbf, 0x7f, 0x37, 0x6d, 0xc8, 0xe9,
0x17, 0xa0, 0x6f, 0x45, 0xce, 0xab, 0xf1, 0xf9, 0x8f, 0x61, 0xea, 0x5c, 0x5d, 0x5c, 0x69, 0x02,
0xcf, 0xa5, 0x27, 0xb0, 0x67, 0xc3, 0x85, 0x8d, 0xb1, 0x19, 0xb0, 0x66, 0xf9, 0x83, 0xd3, 0x0e,
0x8e, 0x18, 0x7e, 0xfb, 0xd0, 0xa2, 0xba, 0x94, 0xb3, 0x21, 0x0d, 0x64, 0x94, 0x86, 0x39, 0x84,
0xb9, 0x68, 0xbd, 0x9c, 0x90, 0xf5, 0x80, 0x9e, 0x42, 0x54, 0x94, 0x0a, 0x73, 0x53, 0x8a, 0xc6,
0xbb, 0x74, 0x28, 0x0c, 0x79, 0x98, 0x38, 0xcb, 0xf8, 0x3c, 0x7c, 0x82, 0x3b, 0x0c, 0x65, 0xd5,
0xed, 0x38, 0xfc, 0xb9, 0x0b, 0xf9, 0xb2, 0xf7, 0x37, 0x49, 0x82, 0xff, 0x4a, 0x1d, 0xe8, 0xe7,
0x53, 0xf7, 0x07, 0x79, 0xf4, 0x3b, 0x00, 0x00, 0xff, 0xff, 0x83, 0xda, 0x5e, 0xb4, 0x66, 0x04,
0x00, 0x00,
}
......@@ -70,12 +70,15 @@ const (
)
const (
// FuncNameQueryProposalBoard 查询方法名
FuncNameQueryProposalBoard = "QueryProposalBoard"
FuncNameQueryProposalProject = "QueryProposalProject"
FuncNameQueryProposalRule = "QueryProposalRule"
// GetProposalBoard 用于在cmd里面的区分不同的查询
GetProposalBoard = "GetProposalBoard"
// GetProposalProject 用于在cmd里面的区分不同的查询
GetProposalProject = "GetProposalProject"
// GetProposalRule 用于在cmd里面的区分不同的查询
GetProposalRule = "GetProposalRule"
)
//包的名字可以通过配置文件来配置
//建议用github的组织名称,或者用户名字开头, 再加上自己的插件的名字
//如果发生重名,可以通过配置文件修改这些名字
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment