Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
P
plugin
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
JIRA
JIRA
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
link33
plugin
Commits
ae0dcb83
Commit
ae0dcb83
authored
Feb 05, 2021
by
jiangpeng
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
dapp/vote:add groupid index for group admin
parent
26295d43
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
30 additions
and
15 deletions
+30
-15
exec_local.go
plugin/dapp/vote/executor/exec_local.go
+30
-15
No files found.
plugin/dapp/vote/executor/exec_local.go
View file @
ae0dcb83
...
...
@@ -22,8 +22,12 @@ func (v *vote) ExecLocal_CreateGroup(payload *vty.CreateGroup, tx *types.Transac
return
nil
,
err
}
dbSet
.
KV
=
kvs
kvs
,
err
=
v
.
addGroupMember
(
groupInfo
.
GetID
(),
groupInfo
.
Members
)
addAddrs
:=
make
([]
string
,
0
)
addAddrs
=
append
(
addAddrs
,
groupInfo
.
Admins
...
)
for
_
,
member
:=
range
groupInfo
.
Members
{
addAddrs
=
append
(
addAddrs
,
member
.
Addr
)
}
kvs
,
err
=
v
.
addGroupMember
(
groupInfo
.
GetID
(),
addAddrs
)
if
err
!=
nil
{
elog
.
Error
(
"execLocal createGroup"
,
"txHash"
,
hex
.
EncodeToString
(
tx
.
Hash
()),
"addMemberErr"
,
err
)
return
nil
,
err
...
...
@@ -43,13 +47,25 @@ func (v *vote) ExecLocal_UpdateGroup(update *vty.UpdateGroup, tx *types.Transact
return
nil
,
err
}
dbSet
.
KV
=
kvs
kvs
,
err
=
v
.
removeGroupMember
(
groupInfo
.
GetID
(),
update
.
RemoveMembers
)
removeAddrs
:=
append
(
update
.
RemoveAdmins
,
update
.
RemoveMembers
...
)
//仍然为管理员或群成员之一,不删除groupID索引
for
i
,
addr
:=
range
removeAddrs
{
if
checkMemberExist
(
addr
,
groupInfo
.
Members
)
||
checkSliceItemExist
(
addr
,
groupInfo
.
Admins
)
{
removeAddrs
=
append
(
removeAddrs
[
:
i
],
removeAddrs
[
i
+
1
:
]
...
)
}
}
kvs
,
err
=
v
.
removeGroupMember
(
groupInfo
.
GetID
(),
removeAddrs
)
if
err
!=
nil
{
elog
.
Error
(
"execLocal UpdateGroup"
,
"txHash"
,
hex
.
EncodeToString
(
tx
.
Hash
()),
"removeMemberErr"
,
err
)
return
nil
,
err
}
dbSet
.
KV
=
append
(
dbSet
.
KV
,
kvs
...
)
kvs
,
err
=
v
.
addGroupMember
(
groupInfo
.
GetID
(),
update
.
AddMembers
)
addAddrs
:=
make
([]
string
,
0
)
addAddrs
=
append
(
addAddrs
,
update
.
AddAdmins
...
)
for
_
,
member
:=
range
update
.
AddMembers
{
addAddrs
=
append
(
addAddrs
,
member
.
Addr
)
}
kvs
,
err
=
v
.
addGroupMember
(
groupInfo
.
GetID
(),
addAddrs
)
if
err
!=
nil
{
elog
.
Error
(
"execLocal UpdateGroup"
,
"txHash"
,
hex
.
EncodeToString
(
tx
.
Hash
()),
"addMemberErr"
,
err
)
return
nil
,
err
...
...
@@ -173,20 +189,21 @@ func (v *vote) updateAndSaveTable(update updateFunc, save saveFunc, data types.M
return
kvs
,
nil
}
func
(
v
*
vote
)
addGroupMember
(
groupID
string
,
members
[]
*
vty
.
GroupMember
)
([]
*
types
.
KeyValue
,
error
)
{
// 新增用户时,将对应的groupID信息添加到用户表中
func
(
v
*
vote
)
addGroupMember
(
groupID
string
,
addrs
[]
string
)
([]
*
types
.
KeyValue
,
error
)
{
table
:=
newMemberTable
(
v
.
GetLocalDB
())
for
_
,
member
:=
range
membe
rs
{
addrKey
:=
[]
byte
(
member
.
A
ddr
)
for
_
,
addr
:=
range
add
rs
{
addrKey
:=
[]
byte
(
a
ddr
)
row
,
err
:=
table
.
GetData
(
addrKey
)
if
err
==
nil
{
info
,
ok
:=
row
.
Data
.
(
*
vty
.
MemberInfo
)
if
ok
&&
!
checkSliceItemExist
(
groupID
,
info
.
GroupIDs
)
{
info
,
_
:=
row
.
Data
.
(
*
vty
.
MemberInfo
)
if
!
checkSliceItemExist
(
groupID
,
info
.
GroupIDs
)
{
info
.
GroupIDs
=
append
(
info
.
GroupIDs
,
groupID
)
err
=
table
.
Replace
(
info
)
}
}
else
if
err
==
types
.
ErrNotFound
{
err
=
table
.
Add
(
&
vty
.
MemberInfo
{
Addr
:
member
.
A
ddr
,
GroupIDs
:
[]
string
{
groupID
}})
err
=
table
.
Add
(
&
vty
.
MemberInfo
{
Addr
:
a
ddr
,
GroupIDs
:
[]
string
{
groupID
}})
}
// 这个错可能由GetData,Replace,Add返回
...
...
@@ -203,6 +220,7 @@ func (v *vote) addGroupMember(groupID string, members []*vty.GroupMember) ([]*ty
return
kvs
,
nil
}
//删除用户,将对应的groupID信息删除
func
(
v
*
vote
)
removeGroupMember
(
groupID
string
,
addrs
[]
string
)
([]
*
types
.
KeyValue
,
error
)
{
table
:=
newMemberTable
(
v
.
GetLocalDB
())
...
...
@@ -210,16 +228,13 @@ func (v *vote) removeGroupMember(groupID string, addrs []string) ([]*types.KeyVa
addrKey
:=
[]
byte
(
addr
)
row
,
err
:=
table
.
GetData
(
addrKey
)
if
err
==
types
.
ErrNotFound
{
return
nil
,
nil
continue
}
else
if
err
!=
nil
{
elog
.
Error
(
"execLocal removeMember"
,
"member table getData"
,
err
)
return
nil
,
err
}
info
,
ok
:=
row
.
Data
.
(
*
vty
.
MemberInfo
)
if
!
ok
{
return
nil
,
types
.
ErrTypeAsset
}
info
,
_
:=
row
.
Data
.
(
*
vty
.
MemberInfo
)
for
index
,
id
:=
range
info
.
GroupIDs
{
if
id
==
groupID
{
info
.
GroupIDs
=
append
(
info
.
GroupIDs
[
:
index
],
info
.
GroupIDs
[
index
+
1
:
]
...
)
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment