diff --git a/core/core-backend/src/main/java/io/dataease/MybatisPlusGenerator.java b/core/core-backend/src/main/java/io/dataease/MybatisPlusGenerator.java
index e648e87858..2c7d9c5aa8 100644
--- a/core/core-backend/src/main/java/io/dataease/MybatisPlusGenerator.java
+++ b/core/core-backend/src/main/java/io/dataease/MybatisPlusGenerator.java
@@ -14,18 +14,18 @@ public class MybatisPlusGenerator {
* 第一 我嫌麻烦
* 第二 后面配置会放到nacos读起来更麻烦了
*/
- private static final String url = "jdbc:mysql://localhost:3306/dataease?autoReconnect=false&useUnicode=true&characterEncoding=UTF-8&characterSetResults=UTF-8&zeroDateTimeBehavior=convertToNull&useSSL=false";
+ private static final String url = "jdbc:mysql://localhost:3306/de_standalone?autoReconnect=false&useUnicode=true&characterEncoding=UTF-8&characterSetResults=UTF-8&zeroDateTimeBehavior=convertToNull&useSSL=false";
private static final String username = "root";
- private static final String password = "123456";
+ private static final String password = "Password123@mysql";
/**
* 业务模块例如datasource,dataset,panel等
*/
- private static final String busi = "visualization";
+ private static final String busi = "share";
/**
* 这是要生成代码的表名称
*/
- private static final String TABLE_NAME = "data_visualization_info";
+ private static final String TABLE_NAME = "xpack_share";
/**
* 下面两个配置基本上不用动
diff --git a/core/core-backend/src/main/java/io/dataease/share/dao/auto/entity/XpackShare.java b/core/core-backend/src/main/java/io/dataease/share/dao/auto/entity/XpackShare.java
index 22861cab29..d4fb7720b7 100644
--- a/core/core-backend/src/main/java/io/dataease/share/dao/auto/entity/XpackShare.java
+++ b/core/core-backend/src/main/java/io/dataease/share/dao/auto/entity/XpackShare.java
@@ -9,7 +9,7 @@ import java.io.Serializable;
*
*
* @author fit2cloud
- * @since 2024-04-07
+ * @since 2024-06-21
*/
@TableName("xpack_share")
public class XpackShare implements Serializable {
@@ -66,6 +66,11 @@ public class XpackShare implements Serializable {
*/
private Boolean autoPwd;
+ /**
+ * ticket必须
+ */
+ private Boolean ticketRequire;
+
public Long getId() {
return id;
}
@@ -146,6 +151,14 @@ public class XpackShare implements Serializable {
this.autoPwd = autoPwd;
}
+ public Boolean getTicketRequire() {
+ return ticketRequire;
+ }
+
+ public void setTicketRequire(Boolean ticketRequire) {
+ this.ticketRequire = ticketRequire;
+ }
+
@Override
public String toString() {
return "XpackShare{" +
@@ -159,6 +172,7 @@ public class XpackShare implements Serializable {
", oid = " + oid +
", type = " + type +
", autoPwd = " + autoPwd +
+ ", ticketRequire = " + ticketRequire +
"}";
}
}
diff --git a/core/core-backend/src/main/java/io/dataease/share/dao/auto/mapper/XpackShareMapper.java b/core/core-backend/src/main/java/io/dataease/share/dao/auto/mapper/XpackShareMapper.java
index b2ecd60bb4..ffea74deac 100644
--- a/core/core-backend/src/main/java/io/dataease/share/dao/auto/mapper/XpackShareMapper.java
+++ b/core/core-backend/src/main/java/io/dataease/share/dao/auto/mapper/XpackShareMapper.java
@@ -10,7 +10,7 @@ import org.apache.ibatis.annotations.Mapper;
*
*
* @author fit2cloud
- * @since 2024-04-07
+ * @since 2024-06-21
*/
@Mapper
public interface XpackShareMapper extends BaseMapper {
diff --git a/core/core-backend/src/main/java/io/dataease/share/dao/ext/mapper/XpackShareExtMapper.java b/core/core-backend/src/main/java/io/dataease/share/dao/ext/mapper/XpackShareExtMapper.java
index 140f0b0a1a..fa437945f4 100644
--- a/core/core-backend/src/main/java/io/dataease/share/dao/ext/mapper/XpackShareExtMapper.java
+++ b/core/core-backend/src/main/java/io/dataease/share/dao/ext/mapper/XpackShareExtMapper.java
@@ -6,6 +6,7 @@ import io.dataease.share.dao.ext.po.XpackSharePO;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;
+import org.apache.ibatis.annotations.Update;
@Mapper
public interface XpackShareExtMapper {
@@ -28,4 +29,7 @@ public interface XpackShareExtMapper {
@Select("select type from data_visualization_info where id = #{id}")
String visualizationType(@Param("id") Long id);
+
+ @Update("update core_share_ticket set uuid = #{ticketUuid} where uuid = #{originUuid}")
+ void updateTicketUuid(@Param("originUuid") String originUuid, @Param("ticketUuid") String ticketUuid);
}
diff --git a/core/core-backend/src/main/java/io/dataease/share/manage/XpackShareManage.java b/core/core-backend/src/main/java/io/dataease/share/manage/XpackShareManage.java
index 9df28b897a..9392461ac8 100644
--- a/core/core-backend/src/main/java/io/dataease/share/manage/XpackShareManage.java
+++ b/core/core-backend/src/main/java/io/dataease/share/manage/XpackShareManage.java
@@ -7,6 +7,7 @@ import io.dataease.api.visualization.request.VisualizationWorkbranchQueryRequest
import io.dataease.api.xpack.share.request.XpackShareProxyRequest;
import io.dataease.api.xpack.share.request.XpackSharePwdValidator;
import io.dataease.api.xpack.share.request.XpackShareUuidEditor;
+import io.dataease.api.xpack.share.vo.TicketValidVO;
import io.dataease.api.xpack.share.vo.XpackShareGridVO;
import io.dataease.api.xpack.share.vo.XpackShareProxyVO;
import io.dataease.auth.bo.TokenUserBO;
@@ -28,6 +29,7 @@ import org.apache.commons.lang3.ObjectUtils;
import org.apache.commons.lang3.RandomStringUtils;
import org.apache.commons.lang3.StringUtils;
import org.springframework.stereotype.Component;
+import org.springframework.transaction.annotation.Transactional;
import java.util.ArrayList;
import java.util.HashMap;
@@ -46,6 +48,9 @@ public class XpackShareManage {
@Resource(name = "xpackShareExtMapper")
private XpackShareExtMapper xpackShareExtMapper;
+ @Resource
+ private ShareTicketManage shareTicketManage;
+
public XpackShare queryByResource(Long resourceId) {
Long userId = AuthUtils.getUser().getUserId();
QueryWrapper queryWrapper = new QueryWrapper<>();
@@ -54,10 +59,12 @@ public class XpackShareManage {
return xpackShareMapper.selectOne(queryWrapper);
}
+ @Transactional
public void switcher(Long resourceId) {
XpackShare originData = queryByResource(resourceId);
if (ObjectUtils.isNotEmpty(originData)) {
xpackShareMapper.deleteById(originData.getId());
+ shareTicketManage.deleteByShare(originData.getUuid());
return;
}
TokenUserBO user = AuthUtils.getUser();
@@ -74,6 +81,7 @@ public class XpackShareManage {
xpackShareMapper.insert(xpackShare);
}
+ @Transactional
public String editUuid(XpackShareUuidEditor editor) {
Long resourceId = editor.getResourceId();
String uuid = editor.getUuid();
@@ -98,6 +106,7 @@ public class XpackShareManage {
if (!matcher.matches()) {
return "仅支持8-16位(字母数字),请重新输入!";
}
+ shareTicketManage.updateByUuidChange(originData.getUuid(), uuid);
originData.setUuid(uuid);
xpackShareMapper.updateById(originData);
return "";
@@ -196,7 +205,8 @@ public class XpackShareManage {
response.addHeader(AuthConstant.LINK_TOKEN_KEY, linkToken);
Integer type = xpackShare.getType();
String typeText = (ObjectUtils.isNotEmpty(type) && type == 1) ? "dashboard" : "dataV";
- return new XpackShareProxyVO(xpackShare.getResourceId(), xpackShare.getCreator(), linkExp(xpackShare), pwdValid(xpackShare, request.getCiphertext()), typeText, inIframeError);
+ TicketValidVO validVO = shareTicketManage.validateTicket(request.getTicket(), xpackShare);
+ return new XpackShareProxyVO(xpackShare.getResourceId(), xpackShare.getCreator(), linkExp(xpackShare), pwdValid(xpackShare, request.getCiphertext()), typeText, inIframeError, validVO);
}
private boolean linkExp(XpackShare xpackShare) {
diff --git a/core/core-backend/src/main/resources/db/migration/V2.8__ddl.sql b/core/core-backend/src/main/resources/db/migration/V2.8__ddl.sql
index 369bac5301..dc361259ef 100644
--- a/core/core-backend/src/main/resources/db/migration/V2.8__ddl.sql
+++ b/core/core-backend/src/main/resources/db/migration/V2.8__ddl.sql
@@ -17,4 +17,7 @@ CREATE TABLE `xpack_plugin`
`module_name` varchar(255) NOT NULL COMMENT '模块名称',
`jar_name` varchar(255) NOT NULL COMMENT 'Jar包名称',
PRIMARY KEY (`id`)
-) COMMENT ='插件表';
\ No newline at end of file
+) COMMENT ='插件表';
+
+ALTER TABLE `xpack_share`
+ ADD COLUMN `ticket_require` tinyint(1) NOT NULL DEFAULT 0 COMMENT 'ticket必须' AFTER `auto_pwd`;
\ No newline at end of file
diff --git a/core/core-frontend/src/assets/svg/edit-done.svg b/core/core-frontend/src/assets/svg/edit-done.svg
new file mode 100644
index 0000000000..e2049b6b67
--- /dev/null
+++ b/core/core-frontend/src/assets/svg/edit-done.svg
@@ -0,0 +1,3 @@
+
diff --git a/core/core-frontend/src/views/share/share/ShareHandler.vue b/core/core-frontend/src/views/share/share/ShareHandler.vue
index 043501118c..c68c07d22f 100644
--- a/core/core-frontend/src/views/share/share/ShareHandler.vue
+++ b/core/core-frontend/src/views/share/share/ShareHandler.vue
@@ -16,7 +16,10 @@
-
+