Skip to content

Commit 792fb6f

Browse files
authored
Merge pull request #2510 from WeBankPartners/dev
Dev
2 parents 71ab12f + 11abe20 commit 792fb6f

File tree

17 files changed

+120
-20
lines changed

17 files changed

+120
-20
lines changed

platform-core/api/api.go

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -270,6 +270,9 @@ func init() {
270270
&handlerFuncObj{Url: "/data/transfer/import/list/options", Method: "GET", HandlerFunc: data_trans.GetImportListOptions, ApiCode: "data-transfer-import-options"},
271271
&handlerFuncObj{Url: "/data/transfer/import/list", Method: "POST", HandlerFunc: data_trans.ImportList, ApiCode: "data-transfer-import-list"},
272272
&handlerFuncObj{Url: "/data/transfer/import/status", Method: "POST", HandlerFunc: data_trans.UpdateImportStatus, ApiCode: "data-transfer-update-import-status"},
273+
274+
// 查询机器人配置
275+
&handlerFuncObj{Url: "/robot/config", Method: "GET", HandlerFunc: system.GetRotConfig, ApiCode: "get-robot-config"},
273276
)
274277
}
275278

platform-core/api/middleware/token.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -62,6 +62,7 @@ func AuthToken(c *gin.Context) {
6262
if strings.Contains(strings.Join(GetRequestRoles(c), ","), "SUB_SYSTEM") || strings.HasSuffix(c.Request.URL.Path, "/resource-files") ||
6363
strings.HasSuffix(c.Request.URL.Path, "/appinfo/version") || strings.HasSuffix(c.Request.URL.Path, "/my-menus") ||
6464
strings.HasPrefix(c.Request.URL.Path, models.UrlPrefix+"/v1/public") || strings.HasPrefix(c.Request.URL.Path, models.UrlPrefix+"/v2/public") ||
65+
strings.HasPrefix(c.Request.URL.Path, models.UrlPrefix+"/v1/robot/config") ||
6566
strings.HasSuffix(c.Request.URL.Path, "/health-check") {
6667
c.Next()
6768
return

platform-core/api/v1/batch-execution/batch-execution.go

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -5,11 +5,12 @@ import (
55
"encoding/hex"
66
"encoding/json"
77
"fmt"
8-
"go.uber.org/zap"
98
"net/http"
109
"strings"
1110
"time"
1211

12+
"go.uber.org/zap"
13+
1314
"github.com/WeBankPartners/go-common-lib/cipher"
1415
"github.com/WeBankPartners/wecube-platform/platform-core/api/middleware"
1516
"github.com/WeBankPartners/wecube-platform/platform-core/common/exterror"
@@ -439,7 +440,7 @@ func doRunJob(c *gin.Context, reqParam *models.BatchExecRun) (result *models.Bat
439440
encryptText = encryptText[len(models.BatchExecEncryptPrefix):]
440441
}
441442

442-
decryptData, tmpErr := decryptWithEncryptSeed(encryptText)
443+
decryptData, tmpErr := decryptWithEncryptSeed(c, encryptText)
443444
if tmpErr != nil {
444445
err = fmt.Errorf("decrypt sensitive data of inputParameter id: %s failed: %s", pluginDefInputParams.ParamId, tmpErr.Error())
445446
log.Error(nil, log.LOGGER_APP, err.Error())
@@ -591,14 +592,19 @@ func doRunJob(c *gin.Context, reqParam *models.BatchExecRun) (result *models.Bat
591592
return
592593
}
593594

594-
func decryptWithEncryptSeed(data string) (decryptData string, err error) {
595+
func decryptWithEncryptSeed(ctx *gin.Context, data string) (decryptData string, err error) {
595596
dataBytes, err := base64.StdEncoding.DecodeString(data)
596597
if err != nil {
597598
err = fmt.Errorf("base64 decode data failed: %s", err.Error())
598599
return
599600
}
600601
dataHex := hex.EncodeToString(dataBytes)
601-
decryptData, err = cipher.AesDePassword(models.Config.EncryptSeed, dataHex)
602+
encryptSeed, getSeedErr := database.GetEncryptSeed(ctx)
603+
if getSeedErr != nil {
604+
err = fmt.Errorf("get seed fail:%s ", getSeedErr.Error())
605+
return
606+
}
607+
decryptData, err = cipher.AesDePassword(encryptSeed, dataHex)
602608
if err != nil {
603609
err = fmt.Errorf("decrypt data failed: %s", err.Error())
604610
return

platform-core/api/v1/system/menu.go

Lines changed: 21 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -13,18 +13,25 @@ func GetMyMenuItems(c *gin.Context) {
1313
var resultMenuItemDtoList []*models.MenuItemDto
1414
var userRoles = middleware.GetRequestRoles(c)
1515
var menuCodeMap = make(map[string]bool)
16+
var addedMenuMap = make(map[string]bool) // Track added menus to prevent duplicates
1617
var roleMenus []*models.RoleMenu
1718
var menuItems *models.MenuItems
1819
var pluginPackageMenus []*models.PluginPackageMenus
1920
var err error
21+
2022
// 1. 统计系统根菜单
2123
rootSysMenuItemDtoList, err := database.GetAllRootMenus(c)
2224
if err != nil {
2325
middleware.ReturnError(c, err)
2426
return
2527
}
2628
if len(rootSysMenuItemDtoList) > 0 {
27-
resultMenuItemDtoList = append(resultMenuItemDtoList, rootSysMenuItemDtoList...)
29+
for _, menuItem := range rootSysMenuItemDtoList {
30+
if !addedMenuMap[menuItem.Code] {
31+
resultMenuItemDtoList = append(resultMenuItemDtoList, menuItem)
32+
addedMenuMap[menuItem.Code] = true
33+
}
34+
}
2835
}
2936

3037
// 2. 计算当前账号角色拥有的菜单code
@@ -50,14 +57,21 @@ func GetMyMenuItems(c *gin.Context) {
5057

5158
// 3.根据menuCode 查询
5259
for menuCode := range menuCodeMap {
60+
// Skip if menu already added
61+
if addedMenuMap[menuCode] {
62+
continue
63+
}
64+
5365
menuItems, err = database.GetMenuItemsByCode(c, menuCode)
5466
if err != nil {
5567
middleware.ReturnError(c, err)
5668
return
5769
}
5870
// 菜单项不为空直接 统计
5971
if menuItems != nil {
60-
resultMenuItemDtoList = append(resultMenuItemDtoList, models.ConvertMenuItem2Dto(menuItems))
72+
menuDto := models.ConvertMenuItem2Dto(menuItems)
73+
resultMenuItemDtoList = append(resultMenuItemDtoList, menuDto)
74+
addedMenuMap[menuCode] = true
6175
} else {
6276
pluginPackageMenus, err = database.CalAssignedPluginPackageMenusByMenuCode(c, menuCode)
6377
if err != nil {
@@ -68,7 +82,11 @@ func GetMyMenuItems(c *gin.Context) {
6882
continue
6983
}
7084
for _, pluginPackageMenusEntity := range pluginPackageMenus {
71-
resultMenuItemDtoList = append(resultMenuItemDtoList, database.BuildPackageMenuItemDto(c, pluginPackageMenusEntity))
85+
menuDto := database.BuildPackageMenuItemDto(c, pluginPackageMenusEntity)
86+
if !addedMenuMap[menuDto.Code] {
87+
resultMenuItemDtoList = append(resultMenuItemDtoList, menuDto)
88+
addedMenuMap[menuDto.Code] = true
89+
}
7290
}
7391
}
7492
}

platform-core/api/v1/system/variable.go

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -99,3 +99,28 @@ func DeleteSystemVariable(c *gin.Context) {
9999
middleware.ReturnSuccess(c)
100100
}
101101
}
102+
103+
func GetRotConfig(c *gin.Context) {
104+
var list []models.SystemVariablesQueryCondition
105+
var dataRes []*models.SystemVariables
106+
list = append(list, models.SystemVariablesQueryCondition{
107+
Name: "PLATFORM_ROBOT_ASSISTANT_SWITCH",
108+
Scope: "global",
109+
Status: "active",
110+
})
111+
112+
list = append(list, models.SystemVariablesQueryCondition{
113+
Name: "PLATFORM_ROBOT_ASSISTANT_URL",
114+
Scope: "global",
115+
Status: "active",
116+
})
117+
for _, condition := range list {
118+
result, err := database.QuerySystemVariablesByCondition(c, condition)
119+
if err != nil {
120+
middleware.ReturnError(c, err)
121+
return
122+
}
123+
dataRes = append(dataRes, result...)
124+
}
125+
middleware.ReturnData(c, dataRes)
126+
}

platform-core/models/model.go

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -139,6 +139,10 @@ func (f *Filter) GetValue() interface{} {
139139
}
140140
}
141141
return valueList
142+
} else if f.Operator == "eq" {
143+
if strings.HasPrefix(f.Value, "@@") {
144+
f.Value = strings.Split(f.Value[2:], "@@")[0]
145+
}
142146
}
143147
return f.Value
144148
}

platform-core/wiki/database/v4.5.0.sql

Lines changed: 0 additions & 1 deletion
This file was deleted.
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
INSERT INTO menu_items (id,parent_code,code,source,description,local_display_name) VALUES('REPORT',NULL,'REPORT','SYSTEM','','报表'),
1+
INSERT INTO menu_items (id,parent_code,code,source,description,local_display_name) VALUES('REPORT',NULL,'REPORT','SYSTEM','','报表');
Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
INSERT INTO system_variables (id,package_name,name,value,default_value,`scope`,source,status) VALUES('system__global__PLATFORM_ROBOT_ASSISTANT','','PLATFORM_ROBOT_ASSISTANT_SWITCH','','N','global','system','active');
2+
INSERT INTO system_variables (id,package_name,name,value,default_value,`scope`,source,status) VALUES('system__global__PLATFORM_ROBOT_URL','','PLATFORM_ROBOT_ASSISTANT_URL','','','global','system','active');

wecube-portal/src/App.vue

Lines changed: 26 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
<router-view class="pages"></router-view>
55
</transition>
66
<div
7+
v-show="robotConfig.isShow && robotConfig.url"
78
class="floating-robot"
89
@click="handleClick"
910
:title="$t('platform_robot_title') + '\n' + $t('platform_robot_content')"
@@ -18,9 +19,14 @@
1819
</template>
1920

2021
<script>
22+
import { globalRobotConfig } from '@/api/server'
2123
export default {
2224
data() {
2325
return {
26+
robotConfig: {
27+
url: '',
28+
isShow: false
29+
},
2430
dragObj: {
2531
top: window.innerHeight / 2, // 窗口高度减去图标高度和边距
2632
left: window.innerWidth - 68, // 窗口宽度减去图标宽度和边距
@@ -36,6 +42,7 @@ export default {
3642
}
3743
},
3844
mounted() {
45+
this.getRobotConfig()
3946
// remove loading
4047
const boxLoading = document.getElementById('boxLoading')
4148
const boxTitle = document.getElementById('boxTitle')
@@ -49,14 +56,32 @@ export default {
4956
window.removeEventListener('resize', this.updatePosition)
5057
},
5158
methods: {
59+
async getRobotConfig() {
60+
const { status, data } = await globalRobotConfig()
61+
if (status === 'OK') {
62+
const configList = data || []
63+
if (Array.isArray(configList) && configList.length > 0) {
64+
configList.forEach(item => {
65+
if (item.name === 'PLATFORM_ROBOT_ASSISTANT_SWITCH' && item.status === 'active') {
66+
const isShow = item.value || item.defaultValue
67+
this.robotConfig.isShow = isShow === 'Y' ? true : false
68+
}
69+
if (item.name === 'PLATFORM_ROBOT_ASSISTANT_URL' && item.status === 'active') {
70+
this.robotConfig.url = item.value || item.defaultValue
71+
}
72+
})
73+
}
74+
}
75+
},
5276
updatePosition() {
5377
if (!this.dragObj.isDragging) {
5478
this.dragObj.top = window.innerHeight - 68
5579
this.dragObj.left = window.innerWidth - 68
5680
}
5781
},
5882
openChatRobot() {
59-
window.open('***REMOVED***', '_blank')
83+
// window.open('***REMOVED***', '_blank')
84+
window.open(this.robotConfig.url, '_blank')
6085
},
6186
handleMouseDown(event) {
6287
// 阻止默认事件和冒泡

0 commit comments

Comments
 (0)