From a1a0780ed4c8c1cffec0589b4e5d25b4f4b06fd4 Mon Sep 17 00:00:00 2001 From: fit2cloud-chenyw Date: Tue, 17 Dec 2024 19:15:50 +0800 Subject: [PATCH] =?UTF-8?q?perf(=E4=BB=AA=E8=A1=A8=E6=9D=BF):=20=E5=88=86?= =?UTF-8?q?=E4=BA=AB=20Ticket=E5=A2=9E=E5=8A=A0=E5=88=86=E9=A1=B5=E6=9C=BA?= =?UTF-8?q?=E5=88=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../dao/ext/mapper/XpackShareExtMapper.java | 8 + .../share/manage/ShareTicketManage.java | 45 +- .../share/server/ShareTicketServer.java | 19 +- .../components/grid-table/src/GridTable.vue | 4 +- core/core-frontend/src/locales/en.ts | 5 +- core/core-frontend/src/locales/tw.ts | 4 +- core/core-frontend/src/locales/zh-CN.ts | 4 +- .../src/views/share/share/CustomLinkPwd.vue | 115 +++++ .../src/views/share/share/ShareHandler.vue | 260 ++++++----- .../src/views/share/share/ShareTicket.vue | 289 +++++------- .../src/views/share/share/ShareVisualHead.vue | 244 ++++++---- .../src/views/share/share/TicketDialog.vue | 46 ++ .../src/views/share/share/TicketEdit.vue | 424 ++++++++++++++++++ de-xpack | 2 +- .../api/xpack/share/ShareTicketApi.java | 16 +- 15 files changed, 1091 insertions(+), 394 deletions(-) create mode 100644 core/core-frontend/src/views/share/share/CustomLinkPwd.vue create mode 100644 core/core-frontend/src/views/share/share/TicketDialog.vue create mode 100644 core/core-frontend/src/views/share/share/TicketEdit.vue 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 fa437945f4..363ae39516 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 @@ -2,6 +2,8 @@ package io.dataease.share.dao.ext.mapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; +import io.dataease.api.xpack.share.vo.TicketVO; +import io.dataease.share.dao.auto.entity.CoreShareTicket; import io.dataease.share.dao.ext.po.XpackSharePO; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; @@ -32,4 +34,10 @@ public interface XpackShareExtMapper { @Update("update core_share_ticket set uuid = #{ticketUuid} where uuid = #{originUuid}") void updateTicketUuid(@Param("originUuid") String originUuid, @Param("ticketUuid") String ticketUuid); + + @Select(""" + select * from core_share_ticket + ${ew.customSqlSegment} + """) + IPage pager(IPage page, @Param("ew") QueryWrapper ew); } diff --git a/core/core-backend/src/main/java/io/dataease/share/manage/ShareTicketManage.java b/core/core-backend/src/main/java/io/dataease/share/manage/ShareTicketManage.java index 065804313a..6786800b75 100644 --- a/core/core-backend/src/main/java/io/dataease/share/manage/ShareTicketManage.java +++ b/core/core-backend/src/main/java/io/dataease/share/manage/ShareTicketManage.java @@ -1,6 +1,8 @@ package io.dataease.share.manage; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import io.dataease.api.xpack.share.request.TicketCreator; import io.dataease.api.xpack.share.request.TicketDelRequest; import io.dataease.api.xpack.share.request.TicketSwitchRequest; @@ -15,15 +17,16 @@ import io.dataease.share.dao.auto.mapper.XpackShareMapper; import io.dataease.share.dao.ext.mapper.XpackShareExtMapper; import io.dataease.utils.AuthUtils; import io.dataease.utils.BeanUtils; +import io.dataease.utils.CommonBeanFactory; import io.dataease.utils.IDUtils; import jakarta.annotation.Resource; -import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.lang3.ObjectUtils; import org.apache.commons.lang3.StringUtils; import org.springframework.stereotype.Component; import org.springframework.transaction.annotation.Transactional; import java.util.List; +import java.util.Objects; @Component public class ShareTicketManage { @@ -37,12 +40,14 @@ public class ShareTicketManage { @Resource private XpackShareExtMapper xpackShareExtMapper; + public CoreShareTicket getByTicket(String ticket) { QueryWrapper queryWrapper = new QueryWrapper<>(); queryWrapper.eq("ticket", ticket); return coreShareTicketMapper.selectOne(queryWrapper); } + @Transactional public String saveTicket(TicketCreator creator) { String ticket = creator.getTicket(); if (StringUtils.isNotBlank(ticket)) { @@ -51,6 +56,9 @@ public class ShareTicketManage { if (creator.isGenerateNew()) { ticketEntity.setAccessTime(null); ticketEntity.setTicket(CodingUtil.shortUuid()); + coreShareTicketMapper.deleteById(ticketEntity); + coreShareTicketMapper.insert(ticketEntity); + return ticketEntity.getTicket(); } ticketEntity.setArgs(creator.getArgs()); ticketEntity.setExp(creator.getExp()); @@ -60,17 +68,23 @@ public class ShareTicketManage { return ticketEntity.getTicket(); } } - ticket = CodingUtil.shortUuid(); + if (StringUtils.isBlank(ticket)) { + ticket = CodingUtil.shortUuid(); + } CoreShareTicket linkTicket = new CoreShareTicket(); linkTicket.setId(IDUtils.snowID()); linkTicket.setTicket(ticket); linkTicket.setArgs(creator.getArgs()); linkTicket.setExp(creator.getExp()); linkTicket.setUuid(creator.getUuid()); - coreShareTicketMapper.insert(linkTicket); + Objects.requireNonNull(CommonBeanFactory.proxy(this.getClass())).saveDao(linkTicket); return ticket; } + public void saveDao(CoreShareTicket ticket) { + coreShareTicketMapper.insert(ticket); + } + public void deleteTicket(TicketDelRequest request) { String ticket = request.getTicket(); if (StringUtils.isBlank(ticket)) { @@ -92,7 +106,7 @@ public class ShareTicketManage { xpackShareMapper.updateById(xpackShare); } - public List query(Long resourceId) { + public IPage query(Long resourceId, Page page) { QueryWrapper queryWrapper = new QueryWrapper<>(); queryWrapper.eq("resource_id", resourceId); queryWrapper.eq("creator", AuthUtils.getUser().getUserId()); @@ -102,9 +116,16 @@ public class ShareTicketManage { if (StringUtils.isBlank(uuid)) return null; QueryWrapper ticketQueryWrapper = new QueryWrapper<>(); ticketQueryWrapper.eq("uuid", uuid); - List coreShareTickets = coreShareTicketMapper.selectList(ticketQueryWrapper); - if (CollectionUtils.isEmpty(coreShareTickets)) return null; - return coreShareTickets.stream().map(item -> BeanUtils.copyBean(new TicketVO(), item)).toList(); + IPage pager = xpackShareExtMapper.pager(page, ticketQueryWrapper); + List records = pager.getRecords(); + IPage iPage = new Page<>(); + iPage.setPages(pager.getPages()); + iPage.setTotal(pager.getTotal()); + iPage.setCurrent(pager.getCurrent()); + iPage.setSize(pager.getSize()); + List vos = records.stream().map(record -> BeanUtils.copyBean(new TicketVO(), record)).toList(); + iPage.setRecords(vos); + return iPage; } @Transactional @@ -151,4 +172,14 @@ public class ShareTicketManage { vo.setTicketExp(time > expTime); return vo; } + + public Integer getLimit() { + return 0; + } + + public long ticketCount(String uuid) { + QueryWrapper ticketQueryWrapper = new QueryWrapper<>(); + ticketQueryWrapper.eq("uuid", uuid); + return coreShareTicketMapper.selectCount(ticketQueryWrapper); + } } diff --git a/core/core-backend/src/main/java/io/dataease/share/server/ShareTicketServer.java b/core/core-backend/src/main/java/io/dataease/share/server/ShareTicketServer.java index f89ca4f1e3..1cf0ecb476 100644 --- a/core/core-backend/src/main/java/io/dataease/share/server/ShareTicketServer.java +++ b/core/core-backend/src/main/java/io/dataease/share/server/ShareTicketServer.java @@ -1,15 +1,17 @@ package io.dataease.share.server; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import io.dataease.api.xpack.share.ShareTicketApi; import io.dataease.api.xpack.share.request.TicketCreator; import io.dataease.api.xpack.share.request.TicketDelRequest; import io.dataease.api.xpack.share.request.TicketSwitchRequest; import io.dataease.api.xpack.share.vo.TicketVO; +import io.dataease.commons.utils.CodingUtil; import io.dataease.share.manage.ShareTicketManage; import jakarta.annotation.Resource; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; -import java.util.List; @RestController @RequestMapping("/ticket") @@ -34,7 +36,18 @@ public class ShareTicketServer implements ShareTicketApi { } @Override - public List query(Long resourceId) { - return shareTicketManage.query(resourceId); + public IPage pager(Long resourceId, int goPage, int pageSize) { + Page page = new Page<>(goPage, pageSize); + return shareTicketManage.query(resourceId, page); + } + + @Override + public String tempTicket() { + return CodingUtil.shortUuid(); + } + + @Override + public Integer limit() { + return shareTicketManage.getLimit(); } } diff --git a/core/core-frontend/src/components/grid-table/src/GridTable.vue b/core/core-frontend/src/components/grid-table/src/GridTable.vue index c84a857e75..5c8cf2827d 100644 --- a/core/core-frontend/src/components/grid-table/src/GridTable.vue +++ b/core/core-frontend/src/components/grid-table/src/GridTable.vue @@ -15,7 +15,8 @@ const props = defineProps({ tableData: propTypes.array, emptyDesc: propTypes.string, emptyImg: propTypes.string, - border: propTypes.bool.def(false) + border: propTypes.bool.def(false), + showEmptyImg: propTypes.bool.def(true) }) const attrs = useAttrs() @@ -136,6 +137,7 @@ defineExpose({