同步平台业务模块能力
This commit is contained in:
@@ -142,6 +142,12 @@ public class TenantConfigDto implements Serializable {
|
||||
|
||||
private String mpAppId;
|
||||
private String mpAppSecret;
|
||||
|
||||
@Schema(description = "公众号 appId(微信内 H5 JSAPI / OAuth)")
|
||||
private String oaAppId;
|
||||
|
||||
@Schema(description = "公众号 secret")
|
||||
private String oaAppSecret;
|
||||
private String sandboxConfig;
|
||||
private boolean enabledSandbox;
|
||||
private Boolean supportCustomDomain;
|
||||
|
||||
@@ -34,4 +34,6 @@ public interface AuthService {
|
||||
String newTicket(UserDto userDto, String token);
|
||||
|
||||
String getTokenByTicket(String ticket);
|
||||
|
||||
String newEcoToken(String tenantClientId, String tenantSecret, UserDto user);
|
||||
}
|
||||
|
||||
@@ -31,6 +31,11 @@ public interface SpaceApplicationService {
|
||||
*/
|
||||
List<SpaceDto> queryListByUserId(Long userId);
|
||||
|
||||
/**
|
||||
* 查询用户的个人空间ID
|
||||
*/
|
||||
Long getPersonalSpaceId(Long userId);
|
||||
|
||||
/**
|
||||
* 查询空间用户列表
|
||||
*/
|
||||
|
||||
@@ -76,6 +76,11 @@ public interface SysGroupApplicationService {
|
||||
*/
|
||||
List<SysGroup> getEffectiveGroupListByUserId(Long userId);
|
||||
|
||||
/**
|
||||
* 查询用户当前系统订阅套餐关联的用户组(不含 sys_user_group 直接绑定,仅启用状态)
|
||||
*/
|
||||
List<SysGroup> getSubscriptionGroupListByUserId(Long userId);
|
||||
|
||||
/**
|
||||
* 查询用户可用于系统登录的已授权用户组(启用、授权开启、未过期)
|
||||
*/
|
||||
@@ -123,4 +128,3 @@ public interface SysGroupApplicationService {
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -17,6 +17,7 @@ import com.xspaceagi.system.spec.utils.I18nUtil;
|
||||
import com.xspaceagi.system.spec.utils.JwtUtils;
|
||||
import com.xspaceagi.system.spec.utils.RedisUtil;
|
||||
import jakarta.annotation.Resource;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.springframework.beans.factory.annotation.Value;
|
||||
import org.springframework.stereotype.Service;
|
||||
@@ -25,6 +26,7 @@ import org.springframework.util.Assert;
|
||||
import java.util.*;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
@Slf4j
|
||||
@Service
|
||||
public class AuthServiceImpl implements AuthService {
|
||||
|
||||
@@ -271,4 +273,18 @@ public class AuthServiceImpl implements AuthService {
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String newEcoToken(String tenantClientId, String tenantSecret, UserDto user) {
|
||||
TenantConfigDto tenantConfig = (TenantConfigDto) RequestContext.get().getTenantConfig();
|
||||
Map<String, String> data = Map.of(
|
||||
"clientId", tenantClientId,
|
||||
"clientSiteUrl", tenantConfig.getSiteUrl(),
|
||||
"userId", user.getId().toString(),
|
||||
"role", user.getRole().name()
|
||||
);
|
||||
log.info("newEcoToken: {}, userId {}, userName {}", data, user.getId(), user.getUserName());
|
||||
return JwtUtils.createJwt(String.valueOf(user.getId()), "user" + user.getId(), tenantSecret, 86400, data);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -178,7 +178,7 @@ public class PermissionImportServiceImpl implements PermissionImportService {
|
||||
}
|
||||
|
||||
/**
|
||||
* 基于差异 JSON 导入:只对差异中的新增 / 修改记录做 upsert,不处理删除
|
||||
* 基于差异 JSON 导入:对差异中的新增/修改记录做 upsert,对 removed 记录做物理删除
|
||||
*/
|
||||
@SuppressWarnings("unchecked")
|
||||
private void doImportDiff(Tenant tenant, String version) {
|
||||
@@ -243,6 +243,16 @@ public class PermissionImportServiceImpl implements PermissionImportService {
|
||||
}
|
||||
}
|
||||
}
|
||||
List<Map<String, Object>> removedResources = (List<Map<String, Object>>) resources.get("removed");
|
||||
if (CollectionUtils.isNotEmpty(removedResources)) {
|
||||
for (Map<String, Object> m : removedResources) {
|
||||
String code = (String) m.get("code");
|
||||
if (StringUtils.isBlank(code)) continue;
|
||||
sysResourceService.remove(Wrappers.<SysResource>lambdaQuery()
|
||||
.eq(SysResource::getTenantId, tenantId)
|
||||
.eq(SysResource::getCode, code));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// 2. Menu
|
||||
@@ -272,6 +282,16 @@ public class PermissionImportServiceImpl implements PermissionImportService {
|
||||
}
|
||||
}
|
||||
}
|
||||
List<Map<String, Object>> removedMenus = (List<Map<String, Object>>) menus.get("removed");
|
||||
if (CollectionUtils.isNotEmpty(removedMenus)) {
|
||||
for (Map<String, Object> m : removedMenus) {
|
||||
String code = (String) m.get("code");
|
||||
if (StringUtils.isBlank(code)) continue;
|
||||
sysMenuService.remove(Wrappers.<SysMenu>lambdaQuery()
|
||||
.eq(SysMenu::getTenantId, tenantId)
|
||||
.eq(SysMenu::getCode, code));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// 3. Role
|
||||
@@ -301,6 +321,16 @@ public class PermissionImportServiceImpl implements PermissionImportService {
|
||||
}
|
||||
}
|
||||
}
|
||||
List<Map<String, Object>> removedRoles = (List<Map<String, Object>>) roles.get("removed");
|
||||
if (CollectionUtils.isNotEmpty(removedRoles)) {
|
||||
for (Map<String, Object> m : removedRoles) {
|
||||
String code = (String) m.get("code");
|
||||
if (StringUtils.isBlank(code)) continue;
|
||||
sysRoleService.remove(Wrappers.<SysRole>lambdaQuery()
|
||||
.eq(SysRole::getTenantId, tenantId)
|
||||
.eq(SysRole::getCode, code));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// 4. Group
|
||||
@@ -330,6 +360,16 @@ public class PermissionImportServiceImpl implements PermissionImportService {
|
||||
}
|
||||
}
|
||||
}
|
||||
List<Map<String, Object>> removedGroups = (List<Map<String, Object>>) groups.get("removed");
|
||||
if (CollectionUtils.isNotEmpty(removedGroups)) {
|
||||
for (Map<String, Object> m : removedGroups) {
|
||||
String code = (String) m.get("code");
|
||||
if (StringUtils.isBlank(code)) continue;
|
||||
sysGroupService.remove(Wrappers.<SysGroup>lambdaQuery()
|
||||
.eq(SysGroup::getTenantId, tenantId)
|
||||
.eq(SysGroup::getCode, code));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// 5. MenuResource
|
||||
@@ -363,6 +403,19 @@ public class PermissionImportServiceImpl implements PermissionImportService {
|
||||
resolveOrCreateMenuResource(tenantId, menuId, resourceId, dto);
|
||||
}
|
||||
}
|
||||
List<Map<String, Object>> removedMenuResources = (List<Map<String, Object>>) menuResources.get("removed");
|
||||
if (CollectionUtils.isNotEmpty(removedMenuResources)) {
|
||||
for (Map<String, Object> m : removedMenuResources) {
|
||||
MenuResourceExportDto mrDto = JsonSerializeUtil.parseObject(JsonSerializeUtil.toJSONString(m), MenuResourceExportDto.class);
|
||||
Long menuId = menuCodeToId.get(mrDto.getMenuCode());
|
||||
Long resourceId = resourceCodeToId.get(mrDto.getResourceCode());
|
||||
if (menuId == null || resourceId == null) continue;
|
||||
sysMenuResourceService.remove(Wrappers.<SysMenuResource>lambdaQuery()
|
||||
.eq(SysMenuResource::getTenantId, tenantId)
|
||||
.eq(SysMenuResource::getMenuId, menuId)
|
||||
.eq(SysMenuResource::getResourceId, resourceId));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// 6. RoleMenu
|
||||
@@ -398,6 +451,19 @@ public class PermissionImportServiceImpl implements PermissionImportService {
|
||||
resolveOrCreateRoleMenu(tenantId, roleId, menuId, dto, resourceTreeJson);
|
||||
}
|
||||
}
|
||||
List<Map<String, Object>> removedRoleMenus = (List<Map<String, Object>>) roleMenus.get("removed");
|
||||
if (CollectionUtils.isNotEmpty(removedRoleMenus)) {
|
||||
for (Map<String, Object> m : removedRoleMenus) {
|
||||
RoleMenuExportDto rmDto = JsonSerializeUtil.parseObject(JsonSerializeUtil.toJSONString(m), RoleMenuExportDto.class);
|
||||
Long roleId = roleCodeToId.get(rmDto.getRoleCode());
|
||||
Long menuId = menuCodeToId.get(rmDto.getMenuCode());
|
||||
if (roleId == null || menuId == null) continue;
|
||||
sysRoleMenuService.remove(Wrappers.<SysRoleMenu>lambdaQuery()
|
||||
.eq(SysRoleMenu::getTenantId, tenantId)
|
||||
.eq(SysRoleMenu::getRoleId, roleId)
|
||||
.eq(SysRoleMenu::getMenuId, menuId));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// 7. GroupMenu
|
||||
@@ -433,6 +499,19 @@ public class PermissionImportServiceImpl implements PermissionImportService {
|
||||
resolveOrCreateGroupMenu(tenantId, groupId, menuId, dto, resourceTreeJson);
|
||||
}
|
||||
}
|
||||
List<Map<String, Object>> removedGroupMenus = (List<Map<String, Object>>) groupMenus.get("removed");
|
||||
if (CollectionUtils.isNotEmpty(removedGroupMenus)) {
|
||||
for (Map<String, Object> m : removedGroupMenus) {
|
||||
GroupMenuExportDto gmDto = JsonSerializeUtil.parseObject(JsonSerializeUtil.toJSONString(m), GroupMenuExportDto.class);
|
||||
Long groupId = groupCodeToId.get(gmDto.getGroupCode());
|
||||
Long menuId = menuCodeToId.get(gmDto.getMenuCode());
|
||||
if (groupId == null || menuId == null) continue;
|
||||
sysGroupMenuService.remove(Wrappers.<SysGroupMenu>lambdaQuery()
|
||||
.eq(SysGroupMenu::getTenantId, tenantId)
|
||||
.eq(SysGroupMenu::getGroupId, groupId)
|
||||
.eq(SysGroupMenu::getMenuId, menuId));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// 8. DataPermission
|
||||
@@ -464,6 +543,18 @@ public class PermissionImportServiceImpl implements PermissionImportService {
|
||||
resolveOrCreateDataPermission(tenantId, dto, targetId);
|
||||
}
|
||||
}
|
||||
List<Map<String, Object>> removedDataPermissions = (List<Map<String, Object>>) dataPermissions.get("removed");
|
||||
if (CollectionUtils.isNotEmpty(removedDataPermissions)) {
|
||||
for (Map<String, Object> m : removedDataPermissions) {
|
||||
DataPermissionExportDto dpDto = JsonSerializeUtil.parseObject(JsonSerializeUtil.toJSONString(m), DataPermissionExportDto.class);
|
||||
Long targetId = resolveTargetId(dpDto, roleCodeToId, groupCodeToId);
|
||||
if (targetId == null) continue;
|
||||
sysDataPermissionService.remove(Wrappers.<SysDataPermission>lambdaQuery()
|
||||
.eq(SysDataPermission::getTenantId, tenantId)
|
||||
.eq(SysDataPermission::getTargetType, dpDto.getTargetType())
|
||||
.eq(SysDataPermission::getTargetId, targetId));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
log.info("权限差异导入完成,租户ID:{},版本:{}", tenantId, version);
|
||||
|
||||
@@ -23,6 +23,7 @@ import org.springframework.stereotype.Service;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
@Service
|
||||
@@ -108,17 +109,39 @@ public class SpaceApplicationServiceImpl implements SpaceApplicationService, Spa
|
||||
|
||||
@Override
|
||||
public List<SpaceDto> queryListByUserId(Long userId) {
|
||||
List<Space> spaceList = spaceDomainService.queryListByIds(spaceDomainService.querySpaceUserListByUserId(userId).stream().map(SpaceUser::getSpaceId).toList());
|
||||
List<SpaceUser> spaceUsers = spaceDomainService.querySpaceUserListByUserId(userId);
|
||||
Map<Long, SpaceUser> spaceUserMap = spaceUsers.stream().collect(Collectors.toMap(SpaceUser::getSpaceId, (s1) -> s1, (s1, s2) -> s1));
|
||||
List<Long> ids = spaceUsers.stream().map(SpaceUser::getSpaceId).toList();
|
||||
List<Space> spaceList = spaceDomainService.queryListByIds(ids);
|
||||
if (spaceList != null) {
|
||||
return spaceList.stream().map(space -> {
|
||||
SpaceDto spaceDto = new SpaceDto();
|
||||
BeanUtils.copyProperties(space, spaceDto);
|
||||
if (spaceUserMap.get(spaceDto.getId()) != null) {
|
||||
spaceDto.setCurrentUserRole(spaceUserMap.get(spaceDto.getId()).getRole());
|
||||
}
|
||||
return spaceDto;
|
||||
}).collect(Collectors.toList());
|
||||
}
|
||||
return new ArrayList<>();
|
||||
}
|
||||
|
||||
@Override
|
||||
public Long getPersonalSpaceId(Long userId) {
|
||||
Space personalSpace = null;
|
||||
List<Space> spaceList = spaceDomainService.queryListByIds(spaceDomainService.querySpaceUserListByUserId(userId).stream().map(SpaceUser::getSpaceId).toList());
|
||||
if (spaceList != null) {
|
||||
personalSpace = spaceList.stream()
|
||||
.filter(s -> s.getType() == Space.Type.Personal)
|
||||
.findFirst()
|
||||
.orElse(null);
|
||||
}
|
||||
if (personalSpace == null) {
|
||||
throw BizException.of(ErrorCodeEnum.INVALID_PARAM, BizExceptionCodeEnum.agentUserNoPersonalSpace);
|
||||
}
|
||||
return personalSpace.getId();
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<SpaceUserDto> querySpaceUserList(Long spaceId) {
|
||||
List<SpaceUser> spaceUserList = spaceDomainService.querySpaceUserList(spaceId);
|
||||
|
||||
@@ -144,6 +144,22 @@ public class SysGroupApplicationServiceImpl implements SysGroupApplicationServic
|
||||
: groupList.stream().filter(g -> StatusEnum.isEnabled(g.getStatus())).toList();
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<SysGroup> getSubscriptionGroupListByUserId(Long userId) {
|
||||
if (userId == null) {
|
||||
return List.of();
|
||||
}
|
||||
List<Long> subscriptionGroupIds = getSubscriptionPlanGroupIds(userId);
|
||||
if (CollectionUtils.isEmpty(subscriptionGroupIds)) {
|
||||
return List.of();
|
||||
}
|
||||
List<SysGroup> groups = listGroupsByIds(subscriptionGroupIds);
|
||||
if (CollectionUtils.isEmpty(groups)) {
|
||||
return List.of();
|
||||
}
|
||||
return groups.stream().filter(g -> StatusEnum.isEnabled(g.getStatus())).toList();
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<SysGroup> getAuthorizedGroupListForLogin(Long userId) {
|
||||
return filterAuthorizedGroupsForLogin(getEffectiveGroupListByUserId(userId));
|
||||
|
||||
@@ -153,6 +153,14 @@ public class SysUserPermissionServiceImpl implements SysUserPermissionService {
|
||||
MenuNode menuNode = menuNodes.get(0);
|
||||
menuNode.setChildren(null);
|
||||
|
||||
// 多个角色/用户组时取最大权限:ALL(1) > PART(2) > NONE(0)
|
||||
Integer mergedMenuBindType = menuNodes.stream()
|
||||
.map(MenuNode::getMenuBindType)
|
||||
.filter(Objects::nonNull)
|
||||
.max(Comparator.comparingInt(SysUserPermissionServiceImpl::menuBindTypePriority))
|
||||
.orElse(BindTypeEnum.NONE.getCode());
|
||||
menuNode.setMenuBindType(mergedMenuBindType);
|
||||
|
||||
// 合并资源(先打平再按 resourceId 分组)
|
||||
List<ResourceNode> flatResources = menuNodes.stream()
|
||||
.filter(n -> CollectionUtils.isNotEmpty(n.getResourceTree()))
|
||||
@@ -193,6 +201,25 @@ public class SysUserPermissionServiceImpl implements SysUserPermissionService {
|
||||
return result;
|
||||
}
|
||||
|
||||
/**
|
||||
* 菜单绑定类型优先级:ALL(1) > PART(2) > NONE(0)
|
||||
*/
|
||||
private static int menuBindTypePriority(Integer bindType) {
|
||||
if (bindType == null) {
|
||||
return 0;
|
||||
}
|
||||
if (BindTypeEnum.ALL.getCode().equals(bindType)) {
|
||||
return 3;
|
||||
}
|
||||
if (BindTypeEnum.PART.getCode().equals(bindType)) {
|
||||
return 2;
|
||||
}
|
||||
if (BindTypeEnum.NONE.getCode().equals(bindType)) {
|
||||
return 1;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
/**
|
||||
* 资源绑定类型优先级:ALL(1) > PART(2) > NONE(0)
|
||||
*/
|
||||
|
||||
@@ -2,6 +2,8 @@ package com.xspaceagi.system.application.service.impl;
|
||||
|
||||
import com.alibaba.fastjson2.JSON;
|
||||
import com.baomidou.dynamic.datasource.annotation.DSTransactional;
|
||||
import com.xspaceagi.eco.market.sdk.constant.EcoMarketRegisterTaskConstant;
|
||||
import com.xspaceagi.eco.market.sdk.model.ClientSecretDTO;
|
||||
import com.xspaceagi.eco.market.sdk.service.IEcoMarketSecretRpcService;
|
||||
import com.xspaceagi.pay.spec.gateway.PayGatewayOutboundCacheEvictSupport;
|
||||
import com.xspaceagi.pay.spec.gateway.PayGatewayOutboundCacheEvictor;
|
||||
@@ -13,11 +15,14 @@ import com.xspaceagi.system.infra.dao.entity.TenantConfig;
|
||||
import com.xspaceagi.system.infra.dao.entity.User;
|
||||
import com.xspaceagi.system.infra.dao.service.TenantConfigService;
|
||||
import com.xspaceagi.system.infra.dao.service.TenantService;
|
||||
import com.xspaceagi.system.sdk.service.ScheduleTaskApiService;
|
||||
import com.xspaceagi.system.sdk.service.dto.ScheduleTaskDto;
|
||||
import com.xspaceagi.system.spec.common.RequestContext;
|
||||
import com.xspaceagi.system.spec.enums.ErrorCodeEnum;
|
||||
import com.xspaceagi.system.spec.exception.BizException;
|
||||
import com.xspaceagi.system.spec.exception.BizExceptionCodeEnum;
|
||||
import com.xspaceagi.system.spec.utils.RedisUtil;
|
||||
import jakarta.annotation.PostConstruct;
|
||||
import jakarta.annotation.Resource;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.apache.commons.collections4.CollectionUtils;
|
||||
@@ -30,6 +35,7 @@ import org.springframework.stereotype.Service;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Date;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
@Slf4j
|
||||
@@ -49,17 +55,40 @@ public class TenantConfigApplicationServiceImpl implements TenantConfigApplicati
|
||||
private UserApplicationService userApplicationService;
|
||||
|
||||
@Resource
|
||||
private IEcoMarketSecretRpcService ecoMarketSecretRpcService;
|
||||
private ScheduleTaskApiService scheduleTaskApiService;
|
||||
|
||||
@Autowired(required = false)
|
||||
private PayGatewayOutboundCacheEvictor payGatewayOutboundCacheEvictor;
|
||||
|
||||
@Resource
|
||||
private IEcoMarketSecretRpcService iEcoMarketSecretRpcService;
|
||||
|
||||
@Value("${app.version:1.0.0}")
|
||||
private String newVersion;
|
||||
|
||||
@Value("${license:}")
|
||||
private String license;
|
||||
|
||||
@Value("${eco-market.server.enabled:false}")
|
||||
private boolean ecoMarketServerEnabled;
|
||||
|
||||
@PostConstruct
|
||||
private void startUpRegisterEco() {
|
||||
if (!ecoMarketServerEnabled) {
|
||||
log.info("Eco market remote server disabled, skip startup registration task");
|
||||
return;
|
||||
}
|
||||
ClientSecretDTO secretDTO = iEcoMarketSecretRpcService.getByTenantId(1L);
|
||||
if (secretDTO != null) {
|
||||
return;
|
||||
}
|
||||
Tenant t = new Tenant();
|
||||
t.setId(1L);
|
||||
t.setName("Qiming AgentOS");
|
||||
t.setDescription("Qiming AgentOS");
|
||||
scheduleEcoMarketRegisterTask(t);
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<TenantConfigItemDto> getTenantConfigList() {
|
||||
String lockKey = "lock-for-check-tenant-config:" + RequestContext.get().getTenantId();
|
||||
@@ -207,9 +236,36 @@ public class TenantConfigApplicationServiceImpl implements TenantConfigApplicati
|
||||
RequestContext.setThreadTenantId(tenant.getId());
|
||||
userApplicationService.add(userDto);
|
||||
|
||||
// 注册生态市场客户端,注册成功后初始化租户信息
|
||||
ecoMarketSecretRpcService.registerClient(tenant.getId(), tenant.getName(), tenant.getDescription());
|
||||
log.info("注册生态市场客户端成功: tenantId={}", tenant.getId());
|
||||
// 注册任务
|
||||
scheduleEcoMarketRegisterTask(tenant);
|
||||
}
|
||||
|
||||
private void scheduleEcoMarketRegisterTask(Tenant tenant) {
|
||||
if (!ecoMarketServerEnabled) {
|
||||
log.info("Eco market remote server disabled, skip register task scheduling: tenantId={}", tenant.getId());
|
||||
return;
|
||||
}
|
||||
try {
|
||||
Map<String, Object> params = new HashMap<>();
|
||||
params.put("tenantId", tenant.getId());
|
||||
params.put("name", tenant.getName());
|
||||
params.put("description", tenant.getDescription() != null ? tenant.getDescription() : "");
|
||||
Long taskId = scheduleTaskApiService.start(ScheduleTaskDto.builder()
|
||||
.tenantId(tenant.getId())
|
||||
.taskId(EcoMarketRegisterTaskConstant.taskIdForTenant(tenant.getId()))
|
||||
.beanId(EcoMarketRegisterTaskConstant.BEAN_ID)
|
||||
.taskName("注册生态市场客户端")
|
||||
.targetType("Tenant")
|
||||
.targetId(String.valueOf(tenant.getId()))
|
||||
.maxExecTimes(Long.MAX_VALUE)
|
||||
.cron(ScheduleTaskDto.Cron.EVERY_MINUTE.getCron())
|
||||
.lockTime(new Date())
|
||||
.params(params)
|
||||
.build());
|
||||
log.info("已调度生态市场注册任务: tenantId={}, scheduleTaskId={}", tenant.getId(), taskId);
|
||||
} catch (Exception e) {
|
||||
log.warn("调度生态市场注册任务失败,租户已创建,可稍后通过生态市场功能触发懒注册: tenantId={}", tenant.getId(), e);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -24,7 +24,7 @@ public class DefaultIconUrlUtil {
|
||||
}
|
||||
|
||||
public static String setDefaultIconUrl(String originalIcon, String name, String type) {
|
||||
if (StringUtils.isBlank(name)) {
|
||||
if (StringUtils.isBlank(name) || RequestContext.get() == null) {
|
||||
return originalIcon;
|
||||
}
|
||||
//避免名字太长引起url超长
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,112 @@
|
||||
[
|
||||
{
|
||||
"type": "System",
|
||||
"side": "Mobile",
|
||||
"module": "Chat",
|
||||
"dataId": "-1",
|
||||
"lang": "en-US",
|
||||
"fieldKey": "Mobile.Chat.callLimitLabel",
|
||||
"fieldValue": "Available Calls",
|
||||
"remark": null
|
||||
},
|
||||
{
|
||||
"type": "System",
|
||||
"side": "Mobile",
|
||||
"module": "Chat",
|
||||
"dataId": "-1",
|
||||
"lang": "en-US",
|
||||
"fieldKey": "Mobile.Chat.subscriptionModalTitle",
|
||||
"fieldValue": "Select Subscription Plan",
|
||||
"remark": null
|
||||
},
|
||||
{
|
||||
"type": "System",
|
||||
"side": "PC",
|
||||
"module": "Pages",
|
||||
"dataId": "-1",
|
||||
"lang": "en-US",
|
||||
"fieldKey": "PC.Pages.MorePage.MyEarnings.confirmWithdrawDesc",
|
||||
"fieldValue": "The withdrawal amount is {0} Yuan, the platform service fee is {1} Yuan, and the actual amount received is {2} Yuan.",
|
||||
"remark": null
|
||||
},
|
||||
{
|
||||
"type": "System",
|
||||
"side": "Mobile",
|
||||
"module": "Chat",
|
||||
"dataId": "-1",
|
||||
"lang": "zh-CN",
|
||||
"fieldKey": "Mobile.Chat.callLimitLabel",
|
||||
"fieldValue": "可调用次数",
|
||||
"remark": null
|
||||
},
|
||||
{
|
||||
"type": "System",
|
||||
"side": "Mobile",
|
||||
"module": "Chat",
|
||||
"dataId": "-1",
|
||||
"lang": "zh-CN",
|
||||
"fieldKey": "Mobile.Chat.subscriptionModalTitle",
|
||||
"fieldValue": "选择订阅套餐",
|
||||
"remark": null
|
||||
},
|
||||
{
|
||||
"type": "System",
|
||||
"side": "Mobile",
|
||||
"module": "Chat",
|
||||
"dataId": "-1",
|
||||
"lang": "zh-CN",
|
||||
"fieldKey": "Mobile.Chat.unlimited",
|
||||
"fieldValue": "不限制",
|
||||
"remark": null
|
||||
},
|
||||
{
|
||||
"type": "System",
|
||||
"side": "PC",
|
||||
"module": "Pages",
|
||||
"dataId": "-1",
|
||||
"lang": "zh-CN",
|
||||
"fieldKey": "PC.Pages.MorePage.MyEarnings.confirmWithdrawDesc",
|
||||
"fieldValue": "本次提现金额为 {0} 元,平台服务费 {1} 元,实际到账 {2} 元。",
|
||||
"remark": null
|
||||
},
|
||||
{
|
||||
"type": "System",
|
||||
"side": "Mobile",
|
||||
"module": "Chat",
|
||||
"dataId": "-1",
|
||||
"lang": "zh-TW",
|
||||
"fieldKey": "Mobile.Chat.callLimitLabel",
|
||||
"fieldValue": "可調用次數",
|
||||
"remark": null
|
||||
},
|
||||
{
|
||||
"type": "System",
|
||||
"side": "Mobile",
|
||||
"module": "Chat",
|
||||
"dataId": "-1",
|
||||
"lang": "zh-TW",
|
||||
"fieldKey": "Mobile.Chat.subscriptionModalTitle",
|
||||
"fieldValue": "選擇訂閱套餐",
|
||||
"remark": null
|
||||
},
|
||||
{
|
||||
"type": "System",
|
||||
"side": "Mobile",
|
||||
"module": "Chat",
|
||||
"dataId": "-1",
|
||||
"lang": "zh-TW",
|
||||
"fieldKey": "Mobile.Chat.unlimited",
|
||||
"fieldValue": "不限制",
|
||||
"remark": null
|
||||
},
|
||||
{
|
||||
"type": "System",
|
||||
"side": "PC",
|
||||
"module": "Pages",
|
||||
"dataId": "-1",
|
||||
"lang": "zh-TW",
|
||||
"fieldKey": "PC.Pages.MorePage.MyEarnings.confirmWithdrawDesc",
|
||||
"fieldValue": "本次提現金額為 {0} 元,平台服務費 {1} 元,實際到賬 {2} 元。",
|
||||
"remark": null
|
||||
}
|
||||
]
|
||||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@@ -1,5 +1,5 @@
|
||||
{
|
||||
"version": "1.4",
|
||||
"version": "1.6",
|
||||
"resources": [
|
||||
{
|
||||
"code": "space",
|
||||
@@ -225,6 +225,15 @@
|
||||
"sortIndex": 25,
|
||||
"status": 1
|
||||
},
|
||||
{
|
||||
"code": "display_recommend_manage",
|
||||
"name": "展示推荐模块",
|
||||
"description": "展示推荐模块",
|
||||
"source": 1,
|
||||
"type": 1,
|
||||
"sortIndex": 26,
|
||||
"status": 1
|
||||
},
|
||||
{
|
||||
"code": "category_config_query",
|
||||
"name": "查询",
|
||||
@@ -865,6 +874,16 @@
|
||||
"sortIndex": 1,
|
||||
"status": 1
|
||||
},
|
||||
{
|
||||
"code": "display_recommend_query",
|
||||
"name": "查询",
|
||||
"description": "查询",
|
||||
"source": 1,
|
||||
"type": 2,
|
||||
"parentCode": "display_recommend_manage",
|
||||
"sortIndex": 1,
|
||||
"status": 1
|
||||
},
|
||||
{
|
||||
"code": "i18n_lang_query",
|
||||
"name": "查询",
|
||||
@@ -994,6 +1013,16 @@
|
||||
"sortIndex": 2,
|
||||
"status": 1
|
||||
},
|
||||
{
|
||||
"code": "display_recommend_save",
|
||||
"name": "保存",
|
||||
"description": "保存",
|
||||
"source": 1,
|
||||
"type": 2,
|
||||
"parentCode": "display_recommend_manage",
|
||||
"sortIndex": 2,
|
||||
"status": 1
|
||||
},
|
||||
{
|
||||
"code": "i18n_lang_add",
|
||||
"name": "新增",
|
||||
@@ -1103,6 +1132,16 @@
|
||||
"sortIndex": 3,
|
||||
"status": 1
|
||||
},
|
||||
{
|
||||
"code": "display_recommend_delete",
|
||||
"name": "删除",
|
||||
"description": "删除",
|
||||
"source": 1,
|
||||
"type": 2,
|
||||
"parentCode": "display_recommend_manage",
|
||||
"sortIndex": 3,
|
||||
"status": 1
|
||||
},
|
||||
{
|
||||
"code": "i18n_lang_modify",
|
||||
"name": "编辑",
|
||||
@@ -2279,7 +2318,7 @@
|
||||
"name": "生态市场",
|
||||
"description": "生态市场",
|
||||
"source": 1,
|
||||
"path": "/ecosystem/mcp",
|
||||
"path": "%siteUrl%/api/eco/redirect",
|
||||
"openType": 1,
|
||||
"icon": "",
|
||||
"sortIndex": 5,
|
||||
@@ -2414,7 +2453,7 @@
|
||||
"parentCode": "workspace",
|
||||
"code": "component_lib_dev",
|
||||
"name": "组件资源",
|
||||
"description": "组件库",
|
||||
"description": "组件资源",
|
||||
"source": 1,
|
||||
"path": "/space/:spaceId/library",
|
||||
"openType": 1,
|
||||
@@ -2537,6 +2576,7 @@
|
||||
"source": 1,
|
||||
"path": "/space/:spaceId/resource-pricing",
|
||||
"openType": 1,
|
||||
"icon": "",
|
||||
"sortIndex": 6,
|
||||
"status": 1
|
||||
},
|
||||
@@ -2551,6 +2591,17 @@
|
||||
"sortIndex": 6,
|
||||
"status": 1
|
||||
},
|
||||
{
|
||||
"parentCode": "more_page",
|
||||
"code": "history_conversation",
|
||||
"name": "历史会话",
|
||||
"source": 1,
|
||||
"path": "/more-page/history-conversation",
|
||||
"openType": 1,
|
||||
"icon": "",
|
||||
"sortIndex": 7,
|
||||
"status": 1
|
||||
},
|
||||
{
|
||||
"parentCode": "workspace",
|
||||
"code": "im_channel",
|
||||
@@ -2600,9 +2651,9 @@
|
||||
},
|
||||
{
|
||||
"parentCode": "system_manage",
|
||||
"code": "permission_manage",
|
||||
"name": "菜单权限",
|
||||
"description": "菜单权限",
|
||||
"code": "recommend_manage",
|
||||
"name": "推荐管理",
|
||||
"description": "推荐管理",
|
||||
"source": 1,
|
||||
"openType": 1,
|
||||
"icon": "",
|
||||
@@ -2622,24 +2673,23 @@
|
||||
"status": 1
|
||||
},
|
||||
{
|
||||
"parentCode": "workspace",
|
||||
"code": "space_square",
|
||||
"name": "空间广场",
|
||||
"description": "空间广场",
|
||||
"parentCode": "system_manage",
|
||||
"code": "permission_manage",
|
||||
"name": "菜单权限",
|
||||
"description": "菜单权限",
|
||||
"source": 1,
|
||||
"path": "/space/:spaceId/space-square?activeKey=Agent",
|
||||
"openType": 1,
|
||||
"icon": "",
|
||||
"sortIndex": 10,
|
||||
"status": 1
|
||||
},
|
||||
{
|
||||
"parentCode": "system_manage",
|
||||
"code": "system_task_manage",
|
||||
"name": "任务管理",
|
||||
"description": "任务管理",
|
||||
"parentCode": "workspace",
|
||||
"code": "space_square",
|
||||
"name": "空间广场",
|
||||
"description": "空间广场",
|
||||
"source": 1,
|
||||
"path": "/system/task-manage",
|
||||
"path": "/space/:spaceId/space-square?activeKey=Agent",
|
||||
"openType": 1,
|
||||
"icon": "",
|
||||
"sortIndex": 10,
|
||||
@@ -2656,6 +2706,18 @@
|
||||
"sortIndex": 11,
|
||||
"status": 1
|
||||
},
|
||||
{
|
||||
"parentCode": "system_manage",
|
||||
"code": "system_task_manage",
|
||||
"name": "任务管理",
|
||||
"description": "任务管理",
|
||||
"source": 1,
|
||||
"path": "/system/task-manage",
|
||||
"openType": 1,
|
||||
"icon": "",
|
||||
"sortIndex": 11,
|
||||
"status": 1
|
||||
},
|
||||
{
|
||||
"parentCode": "system_manage",
|
||||
"code": "system_log_query",
|
||||
@@ -2664,7 +2726,7 @@
|
||||
"source": 1,
|
||||
"openType": 1,
|
||||
"icon": "",
|
||||
"sortIndex": 11,
|
||||
"sortIndex": 12,
|
||||
"status": 1
|
||||
},
|
||||
{
|
||||
@@ -2675,7 +2737,7 @@
|
||||
"source": 1,
|
||||
"openType": 1,
|
||||
"icon": "",
|
||||
"sortIndex": 12,
|
||||
"sortIndex": 13,
|
||||
"status": 1
|
||||
},
|
||||
{
|
||||
@@ -2716,11 +2778,11 @@
|
||||
},
|
||||
{
|
||||
"parentCode": "component_lib_dev",
|
||||
"code": "plugin_and_workflow",
|
||||
"name": "插件与工作流",
|
||||
"description": "插件与工作流",
|
||||
"code": "plugin",
|
||||
"name": "插件",
|
||||
"description": "插件",
|
||||
"source": 1,
|
||||
"path": "/space/:spaceId/plugin-workflow",
|
||||
"path": "/space/:spaceId/plugin",
|
||||
"openType": 1,
|
||||
"icon": "",
|
||||
"sortIndex": 1,
|
||||
@@ -2786,18 +2848,6 @@
|
||||
"sortIndex": 2,
|
||||
"status": 1
|
||||
},
|
||||
{
|
||||
"parentCode": "component_lib_dev",
|
||||
"code": "knowledge_and_datatable",
|
||||
"name": "知识与数据存储",
|
||||
"description": "知识与数据存储",
|
||||
"source": 1,
|
||||
"path": "/space/:spaceId/knowledge-storage",
|
||||
"openType": 1,
|
||||
"icon": "",
|
||||
"sortIndex": 2,
|
||||
"status": 1
|
||||
},
|
||||
{
|
||||
"parentCode": "pay_and_earnings",
|
||||
"code": "merchant_onboarding",
|
||||
@@ -2822,6 +2872,18 @@
|
||||
"sortIndex": 2,
|
||||
"status": 1
|
||||
},
|
||||
{
|
||||
"parentCode": "recommend_manage",
|
||||
"code": "recommend_official",
|
||||
"name": "官方推荐",
|
||||
"description": "官方推荐",
|
||||
"source": 1,
|
||||
"path": "/system/recommend-manage/official",
|
||||
"openType": 1,
|
||||
"icon": "",
|
||||
"sortIndex": 2,
|
||||
"status": 1
|
||||
},
|
||||
{
|
||||
"parentCode": "subscription_and_points",
|
||||
"code": "subscription_packages",
|
||||
@@ -2858,6 +2920,18 @@
|
||||
"sortIndex": 2,
|
||||
"status": 1
|
||||
},
|
||||
{
|
||||
"parentCode": "component_lib_dev",
|
||||
"code": "workflow",
|
||||
"name": "工作流",
|
||||
"description": "工作流",
|
||||
"source": 1,
|
||||
"path": "/space/:spaceId/workflow",
|
||||
"openType": 1,
|
||||
"icon": "",
|
||||
"sortIndex": 2,
|
||||
"status": 1
|
||||
},
|
||||
{
|
||||
"parentCode": "content_manage",
|
||||
"code": "content_page_app",
|
||||
@@ -2882,6 +2956,18 @@
|
||||
"sortIndex": 3,
|
||||
"status": 1
|
||||
},
|
||||
{
|
||||
"parentCode": "component_lib_dev",
|
||||
"code": "knowledge",
|
||||
"name": "知识库",
|
||||
"description": "知识库",
|
||||
"source": 1,
|
||||
"path": "/space/:spaceId/knowledge",
|
||||
"openType": 1,
|
||||
"icon": "",
|
||||
"sortIndex": 3,
|
||||
"status": 1
|
||||
},
|
||||
{
|
||||
"parentCode": "permission_manage",
|
||||
"code": "menu_manage",
|
||||
@@ -2919,24 +3005,24 @@
|
||||
"status": 1
|
||||
},
|
||||
{
|
||||
"parentCode": "system_config",
|
||||
"code": "sandbox_config",
|
||||
"name": "沙盒配置",
|
||||
"description": "沙盒配置",
|
||||
"parentCode": "recommend_manage",
|
||||
"code": "recommend_chatbox",
|
||||
"name": "对话框智能体",
|
||||
"description": "对话框智能体",
|
||||
"source": 1,
|
||||
"path": "/system/config/sandbox",
|
||||
"path": "/system/recommend-manage/chatbox",
|
||||
"openType": 1,
|
||||
"icon": "",
|
||||
"sortIndex": 3,
|
||||
"status": 1
|
||||
},
|
||||
{
|
||||
"parentCode": "component_lib_dev",
|
||||
"code": "space_model_manage",
|
||||
"name": "模型管理",
|
||||
"description": "模型管理",
|
||||
"parentCode": "system_config",
|
||||
"code": "sandbox_config",
|
||||
"name": "沙盒配置",
|
||||
"description": "沙盒配置",
|
||||
"source": 1,
|
||||
"path": "/space/:spaceId/model-manage",
|
||||
"path": "/system/config/sandbox",
|
||||
"openType": 1,
|
||||
"icon": "",
|
||||
"sortIndex": 3,
|
||||
@@ -2966,6 +3052,18 @@
|
||||
"sortIndex": 4,
|
||||
"status": 1
|
||||
},
|
||||
{
|
||||
"parentCode": "component_lib_dev",
|
||||
"code": "datatable",
|
||||
"name": "数据表",
|
||||
"description": "数据表",
|
||||
"source": 1,
|
||||
"path": "/space/:spaceId/storage",
|
||||
"openType": 1,
|
||||
"icon": "",
|
||||
"sortIndex": 4,
|
||||
"status": 1
|
||||
},
|
||||
{
|
||||
"parentCode": "pay_and_earnings",
|
||||
"code": "developer_earnings_stats",
|
||||
@@ -3038,6 +3136,18 @@
|
||||
"sortIndex": 5,
|
||||
"status": 1
|
||||
},
|
||||
{
|
||||
"parentCode": "component_lib_dev",
|
||||
"code": "space_model_manage",
|
||||
"name": "模型管理",
|
||||
"description": "模型管理",
|
||||
"source": 1,
|
||||
"path": "/space/:spaceId/model-manage",
|
||||
"openType": 1,
|
||||
"icon": "",
|
||||
"sortIndex": 5,
|
||||
"status": 1
|
||||
},
|
||||
{
|
||||
"parentCode": "subscription_and_points",
|
||||
"code": "business_orders",
|
||||
@@ -3382,6 +3492,11 @@
|
||||
"menuCode": "model_config",
|
||||
"resourceCode": "model_manage",
|
||||
"resourceBindType": 1
|
||||
},
|
||||
{
|
||||
"menuCode": "recommend_manage",
|
||||
"resourceCode": "display_recommend_manage",
|
||||
"resourceBindType": 1
|
||||
}
|
||||
],
|
||||
"roleMenus": [
|
||||
@@ -3438,13 +3553,25 @@
|
||||
},
|
||||
{
|
||||
"roleCode": "super_admin",
|
||||
"menuCode": "plugin_and_workflow",
|
||||
"menuCode": "plugin",
|
||||
"menuBindType": 1,
|
||||
"resourceTree": []
|
||||
},
|
||||
{
|
||||
"roleCode": "super_admin",
|
||||
"menuCode": "knowledge_and_datatable",
|
||||
"menuCode": "workflow",
|
||||
"menuBindType": 1,
|
||||
"resourceTree": []
|
||||
},
|
||||
{
|
||||
"roleCode": "super_admin",
|
||||
"menuCode": "knowledge",
|
||||
"menuBindType": 1,
|
||||
"resourceTree": []
|
||||
},
|
||||
{
|
||||
"roleCode": "super_admin",
|
||||
"menuCode": "datatable",
|
||||
"menuBindType": 1,
|
||||
"resourceTree": []
|
||||
},
|
||||
@@ -3875,6 +4002,29 @@
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"roleCode": "super_admin",
|
||||
"menuCode": "recommend_manage",
|
||||
"menuBindType": 1,
|
||||
"resourceTree": [
|
||||
{
|
||||
"code": "display_recommend_manage",
|
||||
"resourceBindType": 1
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"roleCode": "super_admin",
|
||||
"menuCode": "recommend_official",
|
||||
"menuBindType": 1,
|
||||
"resourceTree": []
|
||||
},
|
||||
{
|
||||
"roleCode": "super_admin",
|
||||
"menuCode": "recommend_chatbox",
|
||||
"menuBindType": 1,
|
||||
"resourceTree": []
|
||||
},
|
||||
{
|
||||
"roleCode": "super_admin",
|
||||
"menuCode": "permission_manage",
|
||||
@@ -4086,6 +4236,12 @@
|
||||
"menuBindType": 1,
|
||||
"resourceTree": []
|
||||
},
|
||||
{
|
||||
"roleCode": "super_admin",
|
||||
"menuCode": "model_permissions",
|
||||
"menuBindType": 1,
|
||||
"resourceTree": []
|
||||
},
|
||||
{
|
||||
"roleCode": "super_admin",
|
||||
"menuCode": "api_key",
|
||||
@@ -4094,7 +4250,7 @@
|
||||
},
|
||||
{
|
||||
"roleCode": "super_admin",
|
||||
"menuCode": "model_permissions",
|
||||
"menuCode": "history_conversation",
|
||||
"menuBindType": 1,
|
||||
"resourceTree": []
|
||||
}
|
||||
@@ -4153,13 +4309,25 @@
|
||||
},
|
||||
{
|
||||
"groupCode": "default_group",
|
||||
"menuCode": "plugin_and_workflow",
|
||||
"menuCode": "plugin",
|
||||
"menuBindType": 1,
|
||||
"resourceTree": []
|
||||
},
|
||||
{
|
||||
"groupCode": "default_group",
|
||||
"menuCode": "knowledge_and_datatable",
|
||||
"menuCode": "workflow",
|
||||
"menuBindType": 1,
|
||||
"resourceTree": []
|
||||
},
|
||||
{
|
||||
"groupCode": "default_group",
|
||||
"menuCode": "knowledge",
|
||||
"menuBindType": 1,
|
||||
"resourceTree": []
|
||||
},
|
||||
{
|
||||
"groupCode": "default_group",
|
||||
"menuCode": "datatable",
|
||||
"menuBindType": 1,
|
||||
"resourceTree": []
|
||||
},
|
||||
@@ -4253,6 +4421,12 @@
|
||||
"menuBindType": 1,
|
||||
"resourceTree": []
|
||||
},
|
||||
{
|
||||
"groupCode": "default_group",
|
||||
"menuCode": "eco_market",
|
||||
"menuBindType": 1,
|
||||
"resourceTree": []
|
||||
},
|
||||
{
|
||||
"groupCode": "default_group",
|
||||
"menuCode": "documents",
|
||||
@@ -4312,6 +4486,12 @@
|
||||
"menuCode": "api_key",
|
||||
"menuBindType": 1,
|
||||
"resourceTree": []
|
||||
},
|
||||
{
|
||||
"groupCode": "default_group",
|
||||
"menuCode": "history_conversation",
|
||||
"menuBindType": 1,
|
||||
"resourceTree": []
|
||||
}
|
||||
],
|
||||
"dataPermissions": [
|
||||
|
||||
@@ -0,0 +1,249 @@
|
||||
{
|
||||
"fromVersion": "1.4",
|
||||
"toVersion": "1.5",
|
||||
"resources": {
|
||||
"added": [],
|
||||
"removed": [],
|
||||
"modified": []
|
||||
},
|
||||
"menus": {
|
||||
"added": [
|
||||
{
|
||||
"parentCode": "component_lib_dev",
|
||||
"code": "plugin",
|
||||
"name": "插件",
|
||||
"description": "插件",
|
||||
"source": 1,
|
||||
"path": "/space/:spaceId/plugin",
|
||||
"openType": 1,
|
||||
"icon": "",
|
||||
"sortIndex": 1,
|
||||
"status": 1
|
||||
},
|
||||
{
|
||||
"parentCode": "component_lib_dev",
|
||||
"code": "workflow",
|
||||
"name": "工作流",
|
||||
"description": "工作流",
|
||||
"source": 1,
|
||||
"path": "/space/:spaceId/workflow",
|
||||
"openType": 1,
|
||||
"icon": "",
|
||||
"sortIndex": 2,
|
||||
"status": 1
|
||||
},
|
||||
{
|
||||
"parentCode": "component_lib_dev",
|
||||
"code": "knowledge",
|
||||
"name": "知识库",
|
||||
"description": "知识库",
|
||||
"source": 1,
|
||||
"path": "/space/:spaceId/knowledge",
|
||||
"openType": 1,
|
||||
"icon": "",
|
||||
"sortIndex": 3,
|
||||
"status": 1
|
||||
},
|
||||
{
|
||||
"parentCode": "component_lib_dev",
|
||||
"code": "datatable",
|
||||
"name": "数据表",
|
||||
"description": "数据表",
|
||||
"source": 1,
|
||||
"path": "/space/:spaceId/storage",
|
||||
"openType": 1,
|
||||
"icon": "",
|
||||
"sortIndex": 4,
|
||||
"status": 1
|
||||
}
|
||||
],
|
||||
"removed": [
|
||||
{
|
||||
"parentCode": "component_lib_dev",
|
||||
"code": "plugin_and_workflow",
|
||||
"name": "插件与工作流",
|
||||
"description": "插件与工作流",
|
||||
"source": 1,
|
||||
"path": "/space/:spaceId/plugin-workflow",
|
||||
"openType": 1,
|
||||
"icon": "",
|
||||
"sortIndex": 1,
|
||||
"status": 1
|
||||
},
|
||||
{
|
||||
"parentCode": "component_lib_dev",
|
||||
"code": "knowledge_and_datatable",
|
||||
"name": "知识与数据存储",
|
||||
"description": "知识与数据存储",
|
||||
"source": 1,
|
||||
"path": "/space/:spaceId/knowledge-storage",
|
||||
"openType": 1,
|
||||
"icon": "",
|
||||
"sortIndex": 2,
|
||||
"status": 1
|
||||
}
|
||||
],
|
||||
"modified": [
|
||||
{
|
||||
"key": "component_lib_dev",
|
||||
"old": {
|
||||
"parentCode": "workspace",
|
||||
"code": "component_lib_dev",
|
||||
"name": "组件资源",
|
||||
"description": "组件库",
|
||||
"source": 1,
|
||||
"path": "/space/:spaceId/library",
|
||||
"openType": 1,
|
||||
"icon": "",
|
||||
"sortIndex": 3,
|
||||
"status": 1
|
||||
},
|
||||
"new": {
|
||||
"parentCode": "workspace",
|
||||
"code": "component_lib_dev",
|
||||
"name": "组件资源",
|
||||
"description": "组件资源",
|
||||
"source": 1,
|
||||
"path": "/space/:spaceId/library",
|
||||
"openType": 1,
|
||||
"icon": "",
|
||||
"sortIndex": 3,
|
||||
"status": 1
|
||||
}
|
||||
},
|
||||
{
|
||||
"key": "space_model_manage",
|
||||
"old": {
|
||||
"parentCode": "component_lib_dev",
|
||||
"code": "space_model_manage",
|
||||
"name": "模型管理",
|
||||
"description": "模型管理",
|
||||
"source": 1,
|
||||
"path": "/space/:spaceId/model-manage",
|
||||
"openType": 1,
|
||||
"icon": "",
|
||||
"sortIndex": 3,
|
||||
"status": 1
|
||||
},
|
||||
"new": {
|
||||
"parentCode": "component_lib_dev",
|
||||
"code": "space_model_manage",
|
||||
"name": "模型管理",
|
||||
"description": "模型管理",
|
||||
"source": 1,
|
||||
"path": "/space/:spaceId/model-manage",
|
||||
"openType": 1,
|
||||
"icon": "",
|
||||
"sortIndex": 5,
|
||||
"status": 1
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
"roles": {
|
||||
"added": [],
|
||||
"removed": [],
|
||||
"modified": []
|
||||
},
|
||||
"groups": {
|
||||
"added": [],
|
||||
"removed": [],
|
||||
"modified": []
|
||||
},
|
||||
"menuResources": {
|
||||
"added": [],
|
||||
"removed": [],
|
||||
"modified": []
|
||||
},
|
||||
"roleMenus": {
|
||||
"added": [
|
||||
{
|
||||
"roleCode": "super_admin",
|
||||
"menuCode": "plugin",
|
||||
"menuBindType": 1,
|
||||
"resourceTree": []
|
||||
},
|
||||
{
|
||||
"roleCode": "super_admin",
|
||||
"menuCode": "workflow",
|
||||
"menuBindType": 1,
|
||||
"resourceTree": []
|
||||
},
|
||||
{
|
||||
"roleCode": "super_admin",
|
||||
"menuCode": "knowledge",
|
||||
"menuBindType": 1,
|
||||
"resourceTree": []
|
||||
},
|
||||
{
|
||||
"roleCode": "super_admin",
|
||||
"menuCode": "datatable",
|
||||
"menuBindType": 1,
|
||||
"resourceTree": []
|
||||
}
|
||||
],
|
||||
"removed": [
|
||||
{
|
||||
"roleCode": "super_admin",
|
||||
"menuCode": "plugin_and_workflow",
|
||||
"menuBindType": 1,
|
||||
"resourceTree": []
|
||||
},
|
||||
{
|
||||
"roleCode": "super_admin",
|
||||
"menuCode": "knowledge_and_datatable",
|
||||
"menuBindType": 1,
|
||||
"resourceTree": []
|
||||
}
|
||||
],
|
||||
"modified": []
|
||||
},
|
||||
"groupMenus": {
|
||||
"added": [
|
||||
{
|
||||
"groupCode": "default_group",
|
||||
"menuCode": "plugin",
|
||||
"menuBindType": 1,
|
||||
"resourceTree": []
|
||||
},
|
||||
{
|
||||
"groupCode": "default_group",
|
||||
"menuCode": "workflow",
|
||||
"menuBindType": 1,
|
||||
"resourceTree": []
|
||||
},
|
||||
{
|
||||
"groupCode": "default_group",
|
||||
"menuCode": "knowledge",
|
||||
"menuBindType": 1,
|
||||
"resourceTree": []
|
||||
},
|
||||
{
|
||||
"groupCode": "default_group",
|
||||
"menuCode": "datatable",
|
||||
"menuBindType": 1,
|
||||
"resourceTree": []
|
||||
}
|
||||
],
|
||||
"removed": [
|
||||
{
|
||||
"groupCode": "default_group",
|
||||
"menuCode": "plugin_and_workflow",
|
||||
"menuBindType": 1,
|
||||
"resourceTree": []
|
||||
},
|
||||
{
|
||||
"groupCode": "default_group",
|
||||
"menuCode": "knowledge_and_datatable",
|
||||
"menuBindType": 1,
|
||||
"resourceTree": []
|
||||
}
|
||||
],
|
||||
"modified": []
|
||||
},
|
||||
"dataPermissions": {
|
||||
"added": [],
|
||||
"removed": [],
|
||||
"modified": []
|
||||
}
|
||||
}
|
||||
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,308 @@
|
||||
{
|
||||
"fromVersion": "1.5",
|
||||
"toVersion": "1.6",
|
||||
"resources": {
|
||||
"added": [
|
||||
{
|
||||
"code": "display_recommend_manage",
|
||||
"name": "展示推荐模块",
|
||||
"description": "展示推荐模块",
|
||||
"source": 1,
|
||||
"type": 1,
|
||||
"sortIndex": 26,
|
||||
"status": 1
|
||||
},
|
||||
{
|
||||
"code": "display_recommend_query",
|
||||
"name": "查询",
|
||||
"description": "查询",
|
||||
"source": 1,
|
||||
"type": 2,
|
||||
"parentCode": "display_recommend_manage",
|
||||
"sortIndex": 1,
|
||||
"status": 1
|
||||
},
|
||||
{
|
||||
"code": "display_recommend_save",
|
||||
"name": "保存",
|
||||
"description": "保存",
|
||||
"source": 1,
|
||||
"type": 2,
|
||||
"parentCode": "display_recommend_manage",
|
||||
"sortIndex": 2,
|
||||
"status": 1
|
||||
},
|
||||
{
|
||||
"code": "display_recommend_delete",
|
||||
"name": "删除",
|
||||
"description": "删除",
|
||||
"source": 1,
|
||||
"type": 2,
|
||||
"parentCode": "display_recommend_manage",
|
||||
"sortIndex": 3,
|
||||
"status": 1
|
||||
}
|
||||
],
|
||||
"removed": [],
|
||||
"modified": []
|
||||
},
|
||||
"menus": {
|
||||
"added": [
|
||||
{
|
||||
"parentCode": "more_page",
|
||||
"code": "history_conversation",
|
||||
"name": "历史会话",
|
||||
"source": 1,
|
||||
"path": "/more-page/history-conversation",
|
||||
"openType": 1,
|
||||
"icon": "",
|
||||
"sortIndex": 7,
|
||||
"status": 1
|
||||
},
|
||||
{
|
||||
"parentCode": "system_manage",
|
||||
"code": "recommend_manage",
|
||||
"name": "推荐管理",
|
||||
"description": "推荐管理",
|
||||
"source": 1,
|
||||
"openType": 1,
|
||||
"icon": "",
|
||||
"sortIndex": 9,
|
||||
"status": 1
|
||||
},
|
||||
{
|
||||
"parentCode": "recommend_manage",
|
||||
"code": "recommend_official",
|
||||
"name": "官方推荐",
|
||||
"description": "官方推荐",
|
||||
"source": 1,
|
||||
"path": "/system/recommend-manage/official",
|
||||
"openType": 1,
|
||||
"icon": "",
|
||||
"sortIndex": 2,
|
||||
"status": 1
|
||||
},
|
||||
{
|
||||
"parentCode": "recommend_manage",
|
||||
"code": "recommend_chatbox",
|
||||
"name": "对话框智能体",
|
||||
"description": "对话框智能体",
|
||||
"source": 1,
|
||||
"path": "/system/recommend-manage/chatbox",
|
||||
"openType": 1,
|
||||
"icon": "",
|
||||
"sortIndex": 3,
|
||||
"status": 1
|
||||
}
|
||||
],
|
||||
"removed": [],
|
||||
"modified": [
|
||||
{
|
||||
"key": "eco_market",
|
||||
"old": {
|
||||
"code": "eco_market",
|
||||
"name": "生态市场",
|
||||
"description": "生态市场",
|
||||
"source": 1,
|
||||
"path": "/ecosystem/mcp",
|
||||
"openType": 1,
|
||||
"icon": "",
|
||||
"sortIndex": 5,
|
||||
"status": 1
|
||||
},
|
||||
"new": {
|
||||
"code": "eco_market",
|
||||
"name": "生态市场",
|
||||
"description": "生态市场",
|
||||
"source": 1,
|
||||
"path": "%siteUrl%/api/eco/redirect",
|
||||
"openType": 1,
|
||||
"icon": "",
|
||||
"sortIndex": 5,
|
||||
"status": 1
|
||||
}
|
||||
},
|
||||
{
|
||||
"key": "permission_manage",
|
||||
"old": {
|
||||
"parentCode": "system_manage",
|
||||
"code": "permission_manage",
|
||||
"name": "菜单权限",
|
||||
"description": "菜单权限",
|
||||
"source": 1,
|
||||
"openType": 1,
|
||||
"icon": "",
|
||||
"sortIndex": 9,
|
||||
"status": 1
|
||||
},
|
||||
"new": {
|
||||
"parentCode": "system_manage",
|
||||
"code": "permission_manage",
|
||||
"name": "菜单权限",
|
||||
"description": "菜单权限",
|
||||
"source": 1,
|
||||
"openType": 1,
|
||||
"icon": "",
|
||||
"sortIndex": 10,
|
||||
"status": 1
|
||||
}
|
||||
},
|
||||
{
|
||||
"key": "system_task_manage",
|
||||
"old": {
|
||||
"parentCode": "system_manage",
|
||||
"code": "system_task_manage",
|
||||
"name": "任务管理",
|
||||
"description": "任务管理",
|
||||
"source": 1,
|
||||
"path": "/system/task-manage",
|
||||
"openType": 1,
|
||||
"icon": "",
|
||||
"sortIndex": 10,
|
||||
"status": 1
|
||||
},
|
||||
"new": {
|
||||
"parentCode": "system_manage",
|
||||
"code": "system_task_manage",
|
||||
"name": "任务管理",
|
||||
"description": "任务管理",
|
||||
"source": 1,
|
||||
"path": "/system/task-manage",
|
||||
"openType": 1,
|
||||
"icon": "",
|
||||
"sortIndex": 11,
|
||||
"status": 1
|
||||
}
|
||||
},
|
||||
{
|
||||
"key": "system_log_query",
|
||||
"old": {
|
||||
"parentCode": "system_manage",
|
||||
"code": "system_log_query",
|
||||
"name": "日志查询",
|
||||
"description": "日志查询",
|
||||
"source": 1,
|
||||
"openType": 1,
|
||||
"icon": "",
|
||||
"sortIndex": 11,
|
||||
"status": 1
|
||||
},
|
||||
"new": {
|
||||
"parentCode": "system_manage",
|
||||
"code": "system_log_query",
|
||||
"name": "日志查询",
|
||||
"description": "日志查询",
|
||||
"source": 1,
|
||||
"openType": 1,
|
||||
"icon": "",
|
||||
"sortIndex": 12,
|
||||
"status": 1
|
||||
}
|
||||
},
|
||||
{
|
||||
"key": "system_config",
|
||||
"old": {
|
||||
"parentCode": "system_manage",
|
||||
"code": "system_config",
|
||||
"name": "系统配置",
|
||||
"description": "系统配置",
|
||||
"source": 1,
|
||||
"openType": 1,
|
||||
"icon": "",
|
||||
"sortIndex": 12,
|
||||
"status": 1
|
||||
},
|
||||
"new": {
|
||||
"parentCode": "system_manage",
|
||||
"code": "system_config",
|
||||
"name": "系统配置",
|
||||
"description": "系统配置",
|
||||
"source": 1,
|
||||
"openType": 1,
|
||||
"icon": "",
|
||||
"sortIndex": 13,
|
||||
"status": 1
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
"roles": {
|
||||
"added": [],
|
||||
"removed": [],
|
||||
"modified": []
|
||||
},
|
||||
"groups": {
|
||||
"added": [],
|
||||
"removed": [],
|
||||
"modified": []
|
||||
},
|
||||
"menuResources": {
|
||||
"added": [
|
||||
{
|
||||
"menuCode": "recommend_manage",
|
||||
"resourceCode": "display_recommend_manage",
|
||||
"resourceBindType": 1
|
||||
}
|
||||
],
|
||||
"removed": [],
|
||||
"modified": []
|
||||
},
|
||||
"roleMenus": {
|
||||
"added": [
|
||||
{
|
||||
"roleCode": "super_admin",
|
||||
"menuCode": "recommend_manage",
|
||||
"menuBindType": 1,
|
||||
"resourceTree": [
|
||||
{
|
||||
"code": "display_recommend_manage",
|
||||
"resourceBindType": 1
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"roleCode": "super_admin",
|
||||
"menuCode": "recommend_official",
|
||||
"menuBindType": 1,
|
||||
"resourceTree": []
|
||||
},
|
||||
{
|
||||
"roleCode": "super_admin",
|
||||
"menuCode": "recommend_chatbox",
|
||||
"menuBindType": 1,
|
||||
"resourceTree": []
|
||||
},
|
||||
{
|
||||
"roleCode": "super_admin",
|
||||
"menuCode": "history_conversation",
|
||||
"menuBindType": 1,
|
||||
"resourceTree": []
|
||||
}
|
||||
],
|
||||
"removed": [],
|
||||
"modified": []
|
||||
},
|
||||
"groupMenus": {
|
||||
"added": [
|
||||
{
|
||||
"groupCode": "default_group",
|
||||
"menuCode": "eco_market",
|
||||
"menuBindType": 1,
|
||||
"resourceTree": []
|
||||
},
|
||||
{
|
||||
"groupCode": "default_group",
|
||||
"menuCode": "history_conversation",
|
||||
"menuBindType": 1,
|
||||
"resourceTree": []
|
||||
}
|
||||
],
|
||||
"removed": [],
|
||||
"modified": []
|
||||
},
|
||||
"dataPermissions": {
|
||||
"added": [],
|
||||
"removed": [],
|
||||
"modified": []
|
||||
}
|
||||
}
|
||||
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user