@@ -16,21 +16,29 @@ func SetUserPluginStatus(status bool, userID int64, plugin *manager.PluginCondit
1616 var key string
1717 if plugin != nil {
1818 key = plugin .Key
19- } else { // plugin 为空,代表所有插件
20- key = AllPluginKey
19+ } else {
20+ panic ( "SetGroupPluginStatus: plugin is nil" )
2121 }
2222 // 更新数据库
2323 var preUser dao.UserSetting
2424 proxy .GetDB ().Take (& preUser , userID )
2525 preUser .ID = userID
26- if status { // 启用
27- preUser .BlackPlugins = delPluginKey (preUser .BlackPlugins , key )
28- } else { // 关闭
29- preUser .BlackPlugins = addPluginKey (preUser .BlackPlugins , key )
26+ if preUser .WhiteMode {
27+ if status { // 启用
28+ preUser .WhitePlugins = addPluginKey (preUser .WhitePlugins , key )
29+ } else { // 关闭
30+ preUser .WhitePlugins = delPluginKey (preUser .WhitePlugins , key )
31+ }
32+ } else {
33+ if status { // 启用
34+ preUser .BlackPlugins = delPluginKey (preUser .BlackPlugins , key )
35+ } else { // 关闭
36+ preUser .BlackPlugins = addPluginKey (preUser .BlackPlugins , key )
37+ }
3038 }
3139 if err := proxy .GetDB ().Clauses (clause.OnConflict {
3240 Columns : []clause.Column {{Name : "id" }},
33- DoUpdates : clause .AssignmentColumns ([]string {"black_plugins" }), // Upsert
41+ DoUpdates : clause .AssignmentColumns ([]string {"black_plugins" , "white_plugins" }), // Upsert
3442 }).Create (& preUser ).Error ; err != nil {
3543 log .Errorf ("set user(%v) black_plugins error(sql): %v" , userID , err )
3644 return err
@@ -51,21 +59,29 @@ func SetGroupPluginStatus(status bool, groupID int64, plugin *manager.PluginCond
5159 var key string
5260 if plugin != nil {
5361 key = plugin .Key
54- } else { // plugin 为空,代表所有插件
55- key = AllPluginKey
62+ } else {
63+ panic ( "SetGroupPluginStatus: plugin is nil" )
5664 }
5765 // 更新数据库
5866 var preGroup dao.GroupSetting
5967 proxy .GetDB ().Take (& preGroup , groupID )
6068 preGroup .ID = groupID
61- if status { // 启用
62- preGroup .BlackPlugins = delPluginKey (preGroup .BlackPlugins , key )
63- } else { // 关闭
64- preGroup .BlackPlugins = addPluginKey (preGroup .BlackPlugins , key )
69+ if preGroup .WhiteMode {
70+ if status { // 启用
71+ preGroup .WhitePlugins = addPluginKey (preGroup .WhitePlugins , key )
72+ } else { // 关闭
73+ preGroup .WhitePlugins = delPluginKey (preGroup .WhitePlugins , key )
74+ }
75+ } else {
76+ if status { // 启用
77+ preGroup .BlackPlugins = delPluginKey (preGroup .BlackPlugins , key )
78+ } else { // 关闭
79+ preGroup .BlackPlugins = addPluginKey (preGroup .BlackPlugins , key )
80+ }
6581 }
6682 if err := proxy .GetDB ().Clauses (clause.OnConflict {
6783 Columns : []clause.Column {{Name : "id" }},
68- DoUpdates : clause .AssignmentColumns ([]string {"black_plugins" }), // Upsert
84+ DoUpdates : clause .AssignmentColumns ([]string {"black_plugins" , "white_plugins" }), // Upsert
6985 }).Create (& preGroup ).Error ; err != nil {
7086 log .Errorf ("set group(%v) black_plugins error(sql): %v" , groupID , err )
7187 return err
@@ -92,7 +108,11 @@ func GetUserPluginStatus(userID int64, plugin *manager.PluginCondition) bool {
92108 // 查询
93109 var preUser dao.UserSetting
94110 proxy .GetDB ().Take (& preUser , userID )
95- return ! (hasPluginKey (preUser .BlackPlugins , key ) || hasPluginKey (preUser .BlackPlugins , AllPluginKey ))
111+ if preUser .WhiteMode { // 白名单模式
112+ return hasPluginKey (preUser .WhitePlugins , key )
113+ } else {
114+ return ! (hasPluginKey (preUser .BlackPlugins , key ) || hasPluginKey (preUser .BlackPlugins , AllPluginKey ))
115+ }
96116}
97117
98118// GetGroupPluginStatus 获取群插件状态(能否使用)
@@ -101,11 +121,28 @@ func GetGroupPluginStatus(groupID int64, plugin *manager.PluginCondition) bool {
101121 var key string
102122 if plugin != nil {
103123 key = plugin .Key
104- } else { // plugin 为空,代表所有插件
124+ } else {
105125 key = AllPluginKey
106126 }
107127 // 查询
108128 var preGroup dao.GroupSetting
109129 proxy .GetDB ().Take (& preGroup , groupID )
110- return ! (hasPluginKey (preGroup .BlackPlugins , key ) || hasPluginKey (preGroup .BlackPlugins , AllPluginKey ))
130+ if preGroup .WhiteMode { // 白名单模式
131+ return hasPluginKey (preGroup .WhitePlugins , key )
132+ } else {
133+ return ! (hasPluginKey (preGroup .BlackPlugins , key ) || hasPluginKey (preGroup .BlackPlugins , AllPluginKey ))
134+ }
135+ }
136+
137+ // GetGroupRunningMode 获取群运行模式(白名单模式为true,黑名单为false)
138+ func GetGroupRunningMode (groupID int64 ) bool {
139+ var preGroup dao.GroupSetting
140+ proxy .GetDB ().Take (& preGroup , groupID )
141+ return preGroup .WhiteMode
142+ }
143+
144+ func GetUserRunningMode (userID int64 ) bool {
145+ var preUser dao.UserSetting
146+ proxy .GetDB ().Take (& preUser , userID )
147+ return preUser .WhiteMode
111148}
0 commit comments