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

add proposal board

parent af694733
...@@ -8,6 +8,7 @@ import ( ...@@ -8,6 +8,7 @@ import (
"github.com/33cn/chain33/system/dapp" "github.com/33cn/chain33/system/dapp"
"github.com/33cn/chain33/types" "github.com/33cn/chain33/types"
auty "github.com/33cn/plugin/plugin/dapp/autonomy/types" auty "github.com/33cn/plugin/plugin/dapp/autonomy/types"
"fmt"
) )
func (a *Autonomy) execLocalBoard(receiptData *types.ReceiptData) (*types.LocalDBSet, error) { func (a *Autonomy) execLocalBoard(receiptData *types.ReceiptData) (*types.LocalDBSet, error) {
...@@ -25,7 +26,7 @@ func (a *Autonomy) execLocalBoard(receiptData *types.ReceiptData) (*types.LocalD ...@@ -25,7 +26,7 @@ func (a *Autonomy) execLocalBoard(receiptData *types.ReceiptData) (*types.LocalD
if err != nil { if err != nil {
return nil, err return nil, err
} }
kv := a.saveHeightIndex(&receipt) kv := saveHeightIndex(&receipt)
set = append(set, kv...) set = append(set, kv...)
} }
default: default:
...@@ -36,7 +37,7 @@ func (a *Autonomy) execLocalBoard(receiptData *types.ReceiptData) (*types.LocalD ...@@ -36,7 +37,7 @@ func (a *Autonomy) execLocalBoard(receiptData *types.ReceiptData) (*types.LocalD
return dbSet, nil 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 { if res.Current.Status > 1 {
kv := &types.KeyValue{} kv := &types.KeyValue{}
...@@ -67,7 +68,7 @@ func (a *Autonomy) execDelLocalBoard(receiptData *types.ReceiptData) (*types.Loc ...@@ -67,7 +68,7 @@ func (a *Autonomy) execDelLocalBoard(receiptData *types.ReceiptData) (*types.Loc
if err != nil { if err != nil {
return nil, err return nil, err
} }
kv := a.delHeightIndex(&receipt) kv := delHeightIndex(&receipt)
set = append(set, kv...) set = append(set, kv...)
} }
default: default:
...@@ -78,7 +79,7 @@ func (a *Autonomy) execDelLocalBoard(receiptData *types.ReceiptData) (*types.Loc ...@@ -78,7 +79,7 @@ func (a *Autonomy) execDelLocalBoard(receiptData *types.ReceiptData) (*types.Loc
return dbSet, nil 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 := &types.KeyValue{}
kv.Key = calcBoardKey4StatusHeight(res.Current.Status, dapp.HeightIndexStr(res.Current.Height, int64(res.Current.Index))) kv.Key = calcBoardKey4StatusHeight(res.Current.Status, dapp.HeightIndexStr(res.Current.Height, int64(res.Current.Index)))
kv.Value = nil kv.Value = nil
...@@ -91,4 +92,45 @@ func (c *Autonomy) delHeightIndex(res *auty.ReceiptProposalBoard) (kvs []*types. ...@@ -91,4 +92,45 @@ func (c *Autonomy) delHeightIndex(res *auty.ReceiptProposalBoard) (kvs []*types.
kvs = append(kvs, kv) kvs = append(kvs, kv)
} }
return kvs 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 @@ ...@@ -5,14 +5,11 @@
package executor package executor
import ( import (
"time"
dbm "github.com/33cn/chain33/common/db"
"github.com/33cn/chain33/types" "github.com/33cn/chain33/types"
auty "github.com/33cn/plugin/plugin/dapp/autonomy/types" auty "github.com/33cn/plugin/plugin/dapp/autonomy/types"
) )
// Query_GetUnfreezeWithdraw 查询合约可提币量 // Query_GetUnfreezeWithdraw 查询合约可提币量
func (u *Unfreeze) Query_GetUnfreezeWithdraw(in *types.ReqString) (types.Message, error) { func (a *Autonomy) Query_GetProposalBoard(in *auty.ReqQueryProposalBoard) (types.Message, error) {
return QueryWithdraw(u.GetStateDB(), in.GetData()) return a.getProposalBoard(in)
} }
\ No newline at end of file
...@@ -17,7 +17,7 @@ func init() { ...@@ -17,7 +17,7 @@ func init() {
Name: ptypes.PackageName, Name: ptypes.PackageName,
ExecName: executor.GetName(), ExecName: executor.GetName(),
Exec: executor.Init, Exec: executor.Init,
Cmd: commands.Cmd, Cmd: commands.AutonomyCmd,
RPC: rpc.Init, RPC: rpc.Init,
}) })
} }
...@@ -31,10 +31,4 @@ message AutonomyAction { ...@@ -31,10 +31,4 @@ message AutonomyAction {
TerminateProposalRule tmintPropRule = 12; TerminateProposalRule tmintPropRule = 12;
} }
int32 ty = 13; 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 { ...@@ -61,10 +61,14 @@ message LocalProposalBoard {
} }
// query // query
message ReplyQueryProposalBoard { message ReqQueryProposalBoard {
string proposalID = 1; //优先根据status查询
int32 status = 1;
int32 count = 2;
int32 direction = 3;
int64 index = 4;
} }
message ReplyProposalBoard { message ReplyQueryProposalBoard {
repeated LocalProposalBoard propBoards = 1; repeated AutonomyProposalBoard proBoards = 1;
} }
\ No newline at end of file
...@@ -38,6 +38,19 @@ func (c *Jrpc) RevokeProposalBoardTx(parm *auty.RevokeProposalBoard, result *int ...@@ -38,6 +38,19 @@ func (c *Jrpc) RevokeProposalBoardTx(parm *auty.RevokeProposalBoard, result *int
return nil 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接口 // TerminateProposalBoardTx 终止提案董事会成员的RPC接口
func (c *Jrpc) TerminateProposalBoardTx(parm *auty.TerminateProposalBoard, result *interface{}) error { func (c *Jrpc) TerminateProposalBoardTx(parm *auty.TerminateProposalBoard, result *interface{}) error {
if parm == nil { if parm == nil {
......
...@@ -42,6 +42,21 @@ func (c *channelClient) revokeProposalBoard(ctx context.Context, head *auty.Revo ...@@ -42,6 +42,21 @@ func (c *channelClient) revokeProposalBoard(ctx context.Context, head *auty.Revo
return &types.UnsignTx{Data: data}, nil 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) { func (c *channelClient) terminateProposalBoard(ctx context.Context, head *auty.TerminateProposalBoard) (*types.UnsignTx, error) {
val := &auty.AutonomyAction{ val := &auty.AutonomyAction{
Ty: auty.AutonomyActionTmintPropBoard, Ty: auty.AutonomyActionTmintPropBoard,
......
This diff is collapsed.
...@@ -244,34 +244,59 @@ func (m *LocalProposalBoard) GetComments() []string { ...@@ -244,34 +244,59 @@ func (m *LocalProposalBoard) GetComments() []string {
} }
// query // query
type ReplyQueryProposalBoard struct { type ReqQueryProposalBoard struct {
ProposalID string `protobuf:"bytes,1,opt,name=proposalID" json:"proposalID,omitempty"` // 优先根据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 *ReqQueryProposalBoard) Reset() { *m = ReqQueryProposalBoard{} }
func (m *ReplyQueryProposalBoard) String() string { return proto.CompactTextString(m) } func (m *ReqQueryProposalBoard) String() string { return proto.CompactTextString(m) }
func (*ReplyQueryProposalBoard) ProtoMessage() {} func (*ReqQueryProposalBoard) ProtoMessage() {}
func (*ReplyQueryProposalBoard) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{7} } func (*ReqQueryProposalBoard) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{7} }
func (m *ReplyQueryProposalBoard) GetProposalID() string { func (m *ReqQueryProposalBoard) GetStatus() int32 {
if m != nil { if m != nil {
return m.ProposalID return m.Status
} }
return "" return 0
} }
type ReplyProposalBoard struct { func (m *ReqQueryProposalBoard) GetCount() int32 {
PropBoards []*LocalProposalBoard `protobuf:"bytes,1,rep,name=propBoards" json:"propBoards,omitempty"` if m != nil {
return m.Count
}
return 0
} }
func (m *ReplyProposalBoard) Reset() { *m = ReplyProposalBoard{} } func (m *ReqQueryProposalBoard) GetDirection() int32 {
func (m *ReplyProposalBoard) String() string { return proto.CompactTextString(m) } if m != nil {
func (*ReplyProposalBoard) ProtoMessage() {} return m.Direction
func (*ReplyProposalBoard) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{8} } }
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 { if m != nil {
return m.PropBoards return m.ProBoards
} }
return nil return nil
} }
...@@ -284,42 +309,44 @@ func init() { ...@@ -284,42 +309,44 @@ func init() {
proto.RegisterType((*TerminateProposalBoard)(nil), "types.TerminateProposalBoard") proto.RegisterType((*TerminateProposalBoard)(nil), "types.TerminateProposalBoard")
proto.RegisterType((*ReceiptProposalBoard)(nil), "types.ReceiptProposalBoard") proto.RegisterType((*ReceiptProposalBoard)(nil), "types.ReceiptProposalBoard")
proto.RegisterType((*LocalProposalBoard)(nil), "types.LocalProposalBoard") proto.RegisterType((*LocalProposalBoard)(nil), "types.LocalProposalBoard")
proto.RegisterType((*ReqQueryProposalBoard)(nil), "types.ReqQueryProposalBoard")
proto.RegisterType((*ReplyQueryProposalBoard)(nil), "types.ReplyQueryProposalBoard") proto.RegisterType((*ReplyQueryProposalBoard)(nil), "types.ReplyQueryProposalBoard")
proto.RegisterType((*ReplyProposalBoard)(nil), "types.ReplyProposalBoard")
} }
func init() { proto.RegisterFile("board.proto", fileDescriptor1) } func init() { proto.RegisterFile("board.proto", fileDescriptor1) }
var fileDescriptor1 = []byte{ var fileDescriptor1 = []byte{
// 467 bytes of a gzipped FileDescriptorProto // 498 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x94, 0x53, 0x5d, 0x8b, 0xd4, 0x30, 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x94, 0x54, 0x5d, 0x8b, 0xd4, 0x30,
0x14, 0xa5, 0x76, 0xda, 0xd9, 0xb9, 0xc3, 0xca, 0x1a, 0xc7, 0xb5, 0x2e, 0x22, 0xa5, 0x88, 0x14, 0x14, 0x25, 0x76, 0x3a, 0xb3, 0xbd, 0xcb, 0xca, 0x1a, 0x67, 0xd7, 0xb2, 0x2c, 0x52, 0x8a, 0x48,
0x1f, 0x06, 0x19, 0x3f, 0x70, 0x1f, 0x1d, 0x14, 0x14, 0x14, 0x35, 0x88, 0xef, 0xd9, 0xf6, 0xea, 0xf1, 0x61, 0x90, 0xf5, 0x03, 0xf1, 0xcd, 0x41, 0x41, 0x41, 0x41, 0x83, 0xfa, 0x9e, 0x6d, 0xaf,
0x0c, 0xdb, 0x36, 0x21, 0x49, 0x07, 0xfb, 0xe6, 0x5f, 0xf4, 0x57, 0xf8, 0x37, 0x24, 0xb7, 0x19, 0x4e, 0xd9, 0xb6, 0x89, 0x49, 0x3a, 0xd8, 0x37, 0xff, 0xa2, 0xbf, 0xc2, 0xbf, 0x21, 0x49, 0x33,
0x9d, 0xba, 0x83, 0x38, 0x6f, 0x39, 0x37, 0xe7, 0x24, 0xe7, 0x26, 0xe7, 0xc2, 0xf4, 0x42, 0x0a, 0x76, 0xba, 0x0e, 0xba, 0xfb, 0xd6, 0x73, 0x73, 0x6e, 0x72, 0x4f, 0x72, 0x4e, 0x61, 0xff, 0x5c,
0x5d, 0xce, 0x95, 0x96, 0x56, 0xb2, 0xc8, 0x76, 0x0a, 0xcd, 0xd9, 0x71, 0x55, 0xc8, 0xba, 0x96, 0x70, 0x55, 0x2c, 0xa4, 0x12, 0x46, 0xd0, 0xd0, 0x74, 0x12, 0xf5, 0xc9, 0x41, 0x95, 0x8b, 0xba,
0x4d, 0x5f, 0xcd, 0x7e, 0x04, 0x70, 0xeb, 0x45, 0x6b, 0x65, 0x23, 0xeb, 0xee, 0x83, 0x96, 0x4a, 0x16, 0x4d, 0x5f, 0x4d, 0x7f, 0x12, 0x38, 0x7a, 0xd1, 0x1a, 0xd1, 0x88, 0xba, 0x7b, 0xaf, 0x84,
0x1a, 0x51, 0x2d, 0x9d, 0x8a, 0x2d, 0x60, 0xa2, 0xb4, 0x54, 0x04, 0x92, 0x20, 0x0d, 0xf2, 0xe9, 0x14, 0x9a, 0x57, 0x4b, 0xdb, 0x45, 0xcf, 0x20, 0x92, 0x4a, 0x48, 0x07, 0x62, 0x92, 0x90, 0x6c,
0x62, 0x36, 0xa7, 0x33, 0xe6, 0x03, 0x22, 0xff, 0x43, 0x63, 0xf7, 0x21, 0xd4, 0x68, 0x92, 0x6b, 0xff, 0x6c, 0xbe, 0x70, 0x7b, 0x2c, 0x46, 0x44, 0x36, 0xd0, 0xe8, 0x3d, 0x08, 0x14, 0xea, 0xf8,
0xc4, 0x66, 0x9e, 0xfd, 0x59, 0x5a, 0x34, 0x1c, 0x4d, 0x5b, 0x59, 0xee, 0xb6, 0xd9, 0x29, 0xc4, 0x86, 0x63, 0x53, 0xcf, 0xfe, 0x2c, 0x0c, 0x6a, 0x86, 0xba, 0xad, 0x0c, 0xb3, 0xcb, 0xf4, 0x18,
0xc6, 0x0a, 0xdb, 0x9a, 0x24, 0x4c, 0x83, 0x3c, 0xe2, 0x1e, 0xb1, 0x04, 0xc6, 0xa2, 0x2c, 0x35, 0xa6, 0xda, 0x70, 0xd3, 0xea, 0x38, 0x48, 0x48, 0x16, 0x32, 0x8f, 0x68, 0x0c, 0x33, 0x5e, 0x14,
0x1a, 0x93, 0x8c, 0xd2, 0x20, 0x9f, 0xf0, 0x2d, 0x74, 0x8a, 0x15, 0xae, 0xbf, 0xae, 0x6c, 0x12, 0x0a, 0xb5, 0x8e, 0x27, 0x09, 0xc9, 0x22, 0xb6, 0x81, 0xb6, 0x63, 0x85, 0xe5, 0xd7, 0x95, 0x89,
0xa5, 0x41, 0x1e, 0x72, 0x8f, 0xd8, 0x0c, 0xa2, 0x75, 0x53, 0xe2, 0xb7, 0x24, 0xa6, 0x83, 0x7a, 0xc3, 0x84, 0x64, 0x01, 0xf3, 0x88, 0xce, 0x21, 0x2c, 0x9b, 0x02, 0xbf, 0xc7, 0x53, 0xb7, 0x51,
0x90, 0xfd, 0x0c, 0xe0, 0x78, 0xd8, 0x0b, 0x83, 0x51, 0x87, 0x42, 0x53, 0x1b, 0x11, 0xa7, 0xb5, 0x0f, 0xd2, 0x5f, 0x04, 0x0e, 0xc6, 0x5a, 0x28, 0x4c, 0x3a, 0xe4, 0xca, 0xc9, 0x08, 0x99, 0xfb,
0xd3, 0xd6, 0xb2, 0xb1, 0x2b, 0x72, 0x1b, 0xf1, 0x1e, 0xb0, 0x13, 0x08, 0x4b, 0xd1, 0x79, 0x63, 0xb6, 0xbd, 0xb5, 0x68, 0xcc, 0xca, 0x4d, 0x1b, 0xb2, 0x1e, 0xd0, 0x43, 0x08, 0x0a, 0xde, 0xf9,
0x6e, 0xe9, 0xee, 0xa6, 0x67, 0x74, 0xa6, 0xc2, 0x7c, 0xc2, 0x3d, 0x62, 0x0f, 0xe1, 0xc4, 0x58, 0xc1, 0xec, 0xa7, 0x3d, 0xdb, 0x5d, 0xa3, 0x1d, 0x2a, 0xc8, 0x22, 0xe6, 0x11, 0x7d, 0x00, 0x87,
0xa1, 0xed, 0xb2, 0x92, 0xc5, 0xe5, 0xeb, 0x5d, 0x77, 0x57, 0xea, 0xec, 0x01, 0x5c, 0xc7, 0xa6, 0xda, 0x70, 0x65, 0x96, 0x95, 0xc8, 0x2f, 0x5e, 0x6f, 0x4f, 0xf7, 0x57, 0x9d, 0xde, 0x87, 0x9b,
0xdc, 0x65, 0xc6, 0xc4, 0xfc, 0xab, 0xca, 0xe6, 0xc0, 0x34, 0x8a, 0xea, 0xd5, 0x90, 0x3b, 0x26, 0xd8, 0x14, 0xdb, 0xcc, 0xa9, 0x63, 0x5e, 0xaa, 0xd2, 0x05, 0x50, 0x85, 0xbc, 0x7a, 0x35, 0xe6,
0xee, 0x9e, 0x9d, 0xec, 0x29, 0xdc, 0xe4, 0xb8, 0x91, 0x97, 0x38, 0x6c, 0xf7, 0x1e, 0x80, 0xf2, 0xce, 0x1c, 0x77, 0xc7, 0x4a, 0xfa, 0x04, 0x6e, 0x33, 0x5c, 0x8b, 0x0b, 0x1c, 0xcb, 0xbd, 0x0b,
0x85, 0x37, 0x2f, 0xa9, 0xe9, 0x09, 0xdf, 0xa9, 0x64, 0xef, 0xe0, 0x86, 0xfb, 0x94, 0x83, 0x44, 0x20, 0x7d, 0xe1, 0xcd, 0x4b, 0x27, 0x3a, 0x62, 0x5b, 0x95, 0xf4, 0x1d, 0xdc, 0xb2, 0x8f, 0x72,
0xf4, 0x3b, 0x4a, 0x69, 0xb9, 0x41, 0x7a, 0xb1, 0x23, 0xbe, 0x85, 0xd9, 0x73, 0x38, 0xfd, 0x84, 0xad, 0x26, 0xf7, 0x3a, 0x52, 0x2a, 0xb1, 0x46, 0x77, 0x63, 0x7b, 0x6c, 0x03, 0xd3, 0x67, 0x70,
0xba, 0x5e, 0x37, 0xe2, 0xc0, 0x33, 0xb3, 0xef, 0x01, 0xcc, 0x38, 0x16, 0xb8, 0x56, 0x76, 0x28, 0xfc, 0x11, 0x55, 0x5d, 0x36, 0xfc, 0x9a, 0x7b, 0xa6, 0x3f, 0x08, 0xcc, 0x19, 0xe6, 0x58, 0x4a,
0x7c, 0x04, 0x23, 0xa5, 0x71, 0xe3, 0x73, 0x77, 0xd7, 0x27, 0x69, 0x6f, 0x50, 0x39, 0x31, 0xd9, 0x33, 0x6e, 0x7c, 0x08, 0x13, 0xa9, 0x70, 0xed, 0x7d, 0x77, 0xea, 0x9d, 0xb4, 0xd3, 0xa8, 0xcc,
0x33, 0x18, 0x17, 0xad, 0xd6, 0xd8, 0x58, 0x1f, 0xbf, 0x7f, 0x8b, 0xb6, 0xe4, 0xec, 0x0b, 0xb0, 0x31, 0xe9, 0x53, 0x98, 0xe5, 0xad, 0x52, 0xd8, 0x18, 0x6f, 0xbf, 0x7f, 0x37, 0x6d, 0xc8, 0xe9,
0xb7, 0xb2, 0x10, 0xd5, 0xf0, 0xfe, 0x27, 0x10, 0x53, 0xaa, 0xcb, 0xff, 0x72, 0xe0, 0xb9, 0xec, 0x17, 0xa0, 0x6f, 0x45, 0xce, 0xab, 0xf1, 0xf9, 0x8f, 0x61, 0xea, 0x5c, 0x5d, 0x5c, 0x69, 0x02,
0x0c, 0x8e, 0xdc, 0x70, 0x61, 0x63, 0xdd, 0x0c, 0xb8, 0xb0, 0xfc, 0xc6, 0xd9, 0x39, 0xdc, 0xe6, 0xcf, 0xa5, 0x27, 0xb0, 0x67, 0xc3, 0x85, 0x8d, 0xb1, 0x19, 0xb0, 0x66, 0xf9, 0x83, 0xd3, 0x0e,
0xa8, 0xaa, 0xee, 0x63, 0x8b, 0xba, 0x3b, 0xec, 0x95, 0xde, 0x03, 0x23, 0xe9, 0x50, 0x75, 0xde, 0x8e, 0x18, 0x7e, 0xfb, 0xd0, 0xa2, 0xba, 0x94, 0xb3, 0x21, 0x0d, 0x64, 0x94, 0x86, 0x39, 0x84,
0xab, 0x96, 0x7d, 0x36, 0x83, 0x34, 0xcc, 0xa7, 0x8b, 0x3b, 0xde, 0xe6, 0xd5, 0x8e, 0xf8, 0x0e, 0xb9, 0x68, 0xbd, 0x9c, 0x90, 0xf5, 0x80, 0x9e, 0x42, 0x54, 0x94, 0x0a, 0x73, 0x53, 0x8a, 0xc6,
0xf9, 0x22, 0xa6, 0xd9, 0x7f, 0xfc, 0x2b, 0x00, 0x00, 0xff, 0xff, 0x3b, 0xd3, 0xb7, 0x34, 0x20, 0xbb, 0x74, 0x28, 0x0c, 0x79, 0x98, 0x38, 0xcb, 0xf8, 0x3c, 0x7c, 0x82, 0x3b, 0x0c, 0x65, 0xd5,
0x04, 0x00, 0x00, 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 ( ...@@ -70,12 +70,15 @@ const (
) )
const ( const (
// FuncNameQueryProposalBoard 查询方法名 // GetProposalBoard 用于在cmd里面的区分不同的查询
FuncNameQueryProposalBoard = "QueryProposalBoard" GetProposalBoard = "GetProposalBoard"
FuncNameQueryProposalProject = "QueryProposalProject" // GetProposalProject 用于在cmd里面的区分不同的查询
FuncNameQueryProposalRule = "QueryProposalRule" GetProposalProject = "GetProposalProject"
// GetProposalRule 用于在cmd里面的区分不同的查询
GetProposalRule = "GetProposalRule"
) )
//包的名字可以通过配置文件来配置 //包的名字可以通过配置文件来配置
//建议用github的组织名称,或者用户名字开头, 再加上自己的插件的名字 //建议用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