提交 5781da13 authored 作者: fit2cloud-chenyw's avatar fit2cloud-chenyw

feat: 仪表板收藏分享 后台接口

上级 f775dc8c
package io.dataease.base.domain;
import java.io.Serializable;
import lombok.Data;
@Data
public class PanelShare implements Serializable {
private Long shareId;
private String panelGroupId;
private Long userId;
private Long createTime;
private static final long serialVersionUID = 1L;
}
\ No newline at end of file
package io.dataease.base.domain;
import java.io.Serializable;
import lombok.Data;
@Data
public class PanelStore implements Serializable {
private Long storeId;
private String panelGroupId;
private Long userId;
private Long createTime;
private static final long serialVersionUID = 1L;
}
\ No newline at end of file
package io.dataease.base.mapper;
import io.dataease.base.domain.PanelShare;
import io.dataease.base.domain.PanelShareExample;
import java.util.List;
import org.apache.ibatis.annotations.Param;
public interface PanelShareMapper {
long countByExample(PanelShareExample example);
int deleteByExample(PanelShareExample example);
int deleteByPrimaryKey(Long shareId);
int insert(PanelShare record);
int insertSelective(PanelShare record);
List<PanelShare> selectByExample(PanelShareExample example);
PanelShare selectByPrimaryKey(Long shareId);
int updateByExampleSelective(@Param("record") PanelShare record, @Param("example") PanelShareExample example);
int updateByExample(@Param("record") PanelShare record, @Param("example") PanelShareExample example);
int updateByPrimaryKeySelective(PanelShare record);
int updateByPrimaryKey(PanelShare record);
}
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="io.dataease.base.mapper.PanelShareMapper">
<resultMap id="BaseResultMap" type="io.dataease.base.domain.PanelShare">
<id column="share_id" jdbcType="BIGINT" property="shareId" />
<result column="panel_group_id" jdbcType="VARCHAR" property="panelGroupId" />
<result column="user_id" jdbcType="BIGINT" property="userId" />
<result column="create_time" jdbcType="BIGINT" property="createTime" />
</resultMap>
<sql id="Example_Where_Clause">
<where>
<foreach collection="oredCriteria" item="criteria" separator="or">
<if test="criteria.valid">
<trim prefix="(" prefixOverrides="and" suffix=")">
<foreach collection="criteria.criteria" item="criterion">
<choose>
<when test="criterion.noValue">
and ${criterion.condition}
</when>
<when test="criterion.singleValue">
and ${criterion.condition} #{criterion.value}
</when>
<when test="criterion.betweenValue">
and ${criterion.condition} #{criterion.value} and #{criterion.secondValue}
</when>
<when test="criterion.listValue">
and ${criterion.condition}
<foreach close=")" collection="criterion.value" item="listItem" open="(" separator=",">
#{listItem}
</foreach>
</when>
</choose>
</foreach>
</trim>
</if>
</foreach>
</where>
</sql>
<sql id="Update_By_Example_Where_Clause">
<where>
<foreach collection="example.oredCriteria" item="criteria" separator="or">
<if test="criteria.valid">
<trim prefix="(" prefixOverrides="and" suffix=")">
<foreach collection="criteria.criteria" item="criterion">
<choose>
<when test="criterion.noValue">
and ${criterion.condition}
</when>
<when test="criterion.singleValue">
and ${criterion.condition} #{criterion.value}
</when>
<when test="criterion.betweenValue">
and ${criterion.condition} #{criterion.value} and #{criterion.secondValue}
</when>
<when test="criterion.listValue">
and ${criterion.condition}
<foreach close=")" collection="criterion.value" item="listItem" open="(" separator=",">
#{listItem}
</foreach>
</when>
</choose>
</foreach>
</trim>
</if>
</foreach>
</where>
</sql>
<sql id="Base_Column_List">
share_id, panel_group_id, user_id, create_time
</sql>
<select id="selectByExample" parameterType="io.dataease.base.domain.PanelShareExample" resultMap="BaseResultMap">
select
<if test="distinct">
distinct
</if>
<include refid="Base_Column_List" />
from panel_share
<if test="_parameter != null">
<include refid="Example_Where_Clause" />
</if>
<if test="orderByClause != null">
order by ${orderByClause}
</if>
</select>
<select id="selectByPrimaryKey" parameterType="java.lang.Long" resultMap="BaseResultMap">
select
<include refid="Base_Column_List" />
from panel_share
where share_id = #{shareId,jdbcType=BIGINT}
</select>
<delete id="deleteByPrimaryKey" parameterType="java.lang.Long">
delete from panel_share
where share_id = #{shareId,jdbcType=BIGINT}
</delete>
<delete id="deleteByExample" parameterType="io.dataease.base.domain.PanelShareExample">
delete from panel_share
<if test="_parameter != null">
<include refid="Example_Where_Clause" />
</if>
</delete>
<insert id="insert" parameterType="io.dataease.base.domain.PanelShare">
insert into panel_share (share_id, panel_group_id, user_id,
create_time)
values (#{shareId,jdbcType=BIGINT}, #{panelGroupId,jdbcType=VARCHAR}, #{userId,jdbcType=BIGINT},
#{createTime,jdbcType=BIGINT})
</insert>
<insert id="insertSelective" parameterType="io.dataease.base.domain.PanelShare">
insert into panel_share
<trim prefix="(" suffix=")" suffixOverrides=",">
<if test="shareId != null">
share_id,
</if>
<if test="panelGroupId != null">
panel_group_id,
</if>
<if test="userId != null">
user_id,
</if>
<if test="createTime != null">
create_time,
</if>
</trim>
<trim prefix="values (" suffix=")" suffixOverrides=",">
<if test="shareId != null">
#{shareId,jdbcType=BIGINT},
</if>
<if test="panelGroupId != null">
#{panelGroupId,jdbcType=VARCHAR},
</if>
<if test="userId != null">
#{userId,jdbcType=BIGINT},
</if>
<if test="createTime != null">
#{createTime,jdbcType=BIGINT},
</if>
</trim>
</insert>
<select id="countByExample" parameterType="io.dataease.base.domain.PanelShareExample" resultType="java.lang.Long">
select count(*) from panel_share
<if test="_parameter != null">
<include refid="Example_Where_Clause" />
</if>
</select>
<update id="updateByExampleSelective" parameterType="map">
update panel_share
<set>
<if test="record.shareId != null">
share_id = #{record.shareId,jdbcType=BIGINT},
</if>
<if test="record.panelGroupId != null">
panel_group_id = #{record.panelGroupId,jdbcType=VARCHAR},
</if>
<if test="record.userId != null">
user_id = #{record.userId,jdbcType=BIGINT},
</if>
<if test="record.createTime != null">
create_time = #{record.createTime,jdbcType=BIGINT},
</if>
</set>
<if test="_parameter != null">
<include refid="Update_By_Example_Where_Clause" />
</if>
</update>
<update id="updateByExample" parameterType="map">
update panel_share
set share_id = #{record.shareId,jdbcType=BIGINT},
panel_group_id = #{record.panelGroupId,jdbcType=VARCHAR},
user_id = #{record.userId,jdbcType=BIGINT},
create_time = #{record.createTime,jdbcType=BIGINT}
<if test="_parameter != null">
<include refid="Update_By_Example_Where_Clause" />
</if>
</update>
<update id="updateByPrimaryKeySelective" parameterType="io.dataease.base.domain.PanelShare">
update panel_share
<set>
<if test="panelGroupId != null">
panel_group_id = #{panelGroupId,jdbcType=VARCHAR},
</if>
<if test="userId != null">
user_id = #{userId,jdbcType=BIGINT},
</if>
<if test="createTime != null">
create_time = #{createTime,jdbcType=BIGINT},
</if>
</set>
where share_id = #{shareId,jdbcType=BIGINT}
</update>
<update id="updateByPrimaryKey" parameterType="io.dataease.base.domain.PanelShare">
update panel_share
set panel_group_id = #{panelGroupId,jdbcType=VARCHAR},
user_id = #{userId,jdbcType=BIGINT},
create_time = #{createTime,jdbcType=BIGINT}
where share_id = #{shareId,jdbcType=BIGINT}
</update>
</mapper>
\ No newline at end of file
package io.dataease.base.mapper;
import io.dataease.base.domain.PanelStore;
import io.dataease.base.domain.PanelStoreExample;
import java.util.List;
import org.apache.ibatis.annotations.Param;
public interface PanelStoreMapper {
long countByExample(PanelStoreExample example);
int deleteByExample(PanelStoreExample example);
int deleteByPrimaryKey(Long storeId);
int insert(PanelStore record);
int insertSelective(PanelStore record);
List<PanelStore> selectByExample(PanelStoreExample example);
PanelStore selectByPrimaryKey(Long storeId);
int updateByExampleSelective(@Param("record") PanelStore record, @Param("example") PanelStoreExample example);
int updateByExample(@Param("record") PanelStore record, @Param("example") PanelStoreExample example);
int updateByPrimaryKeySelective(PanelStore record);
int updateByPrimaryKey(PanelStore record);
}
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="io.dataease.base.mapper.PanelStoreMapper">
<resultMap id="BaseResultMap" type="io.dataease.base.domain.PanelStore">
<id column="store_id" jdbcType="BIGINT" property="storeId" />
<result column="panel_group_id" jdbcType="VARCHAR" property="panelGroupId" />
<result column="user_id" jdbcType="BIGINT" property="userId" />
<result column="create_time" jdbcType="BIGINT" property="createTime" />
</resultMap>
<sql id="Example_Where_Clause">
<where>
<foreach collection="oredCriteria" item="criteria" separator="or">
<if test="criteria.valid">
<trim prefix="(" prefixOverrides="and" suffix=")">
<foreach collection="criteria.criteria" item="criterion">
<choose>
<when test="criterion.noValue">
and ${criterion.condition}
</when>
<when test="criterion.singleValue">
and ${criterion.condition} #{criterion.value}
</when>
<when test="criterion.betweenValue">
and ${criterion.condition} #{criterion.value} and #{criterion.secondValue}
</when>
<when test="criterion.listValue">
and ${criterion.condition}
<foreach close=")" collection="criterion.value" item="listItem" open="(" separator=",">
#{listItem}
</foreach>
</when>
</choose>
</foreach>
</trim>
</if>
</foreach>
</where>
</sql>
<sql id="Update_By_Example_Where_Clause">
<where>
<foreach collection="example.oredCriteria" item="criteria" separator="or">
<if test="criteria.valid">
<trim prefix="(" prefixOverrides="and" suffix=")">
<foreach collection="criteria.criteria" item="criterion">
<choose>
<when test="criterion.noValue">
and ${criterion.condition}
</when>
<when test="criterion.singleValue">
and ${criterion.condition} #{criterion.value}
</when>
<when test="criterion.betweenValue">
and ${criterion.condition} #{criterion.value} and #{criterion.secondValue}
</when>
<when test="criterion.listValue">
and ${criterion.condition}
<foreach close=")" collection="criterion.value" item="listItem" open="(" separator=",">
#{listItem}
</foreach>
</when>
</choose>
</foreach>
</trim>
</if>
</foreach>
</where>
</sql>
<sql id="Base_Column_List">
store_id, panel_group_id, user_id, create_time
</sql>
<select id="selectByExample" parameterType="io.dataease.base.domain.PanelStoreExample" resultMap="BaseResultMap">
select
<if test="distinct">
distinct
</if>
<include refid="Base_Column_List" />
from panel_store
<if test="_parameter != null">
<include refid="Example_Where_Clause" />
</if>
<if test="orderByClause != null">
order by ${orderByClause}
</if>
</select>
<select id="selectByPrimaryKey" parameterType="java.lang.Long" resultMap="BaseResultMap">
select
<include refid="Base_Column_List" />
from panel_store
where store_id = #{storeId,jdbcType=BIGINT}
</select>
<delete id="deleteByPrimaryKey" parameterType="java.lang.Long">
delete from panel_store
where store_id = #{storeId,jdbcType=BIGINT}
</delete>
<delete id="deleteByExample" parameterType="io.dataease.base.domain.PanelStoreExample">
delete from panel_store
<if test="_parameter != null">
<include refid="Example_Where_Clause" />
</if>
</delete>
<insert id="insert" parameterType="io.dataease.base.domain.PanelStore">
insert into panel_store (store_id, panel_group_id, user_id,
create_time)
values (#{storeId,jdbcType=BIGINT}, #{panelGroupId,jdbcType=VARCHAR}, #{userId,jdbcType=BIGINT},
#{createTime,jdbcType=BIGINT})
</insert>
<insert id="insertSelective" parameterType="io.dataease.base.domain.PanelStore">
insert into panel_store
<trim prefix="(" suffix=")" suffixOverrides=",">
<if test="storeId != null">
store_id,
</if>
<if test="panelGroupId != null">
panel_group_id,
</if>
<if test="userId != null">
user_id,
</if>
<if test="createTime != null">
create_time,
</if>
</trim>
<trim prefix="values (" suffix=")" suffixOverrides=",">
<if test="storeId != null">
#{storeId,jdbcType=BIGINT},
</if>
<if test="panelGroupId != null">
#{panelGroupId,jdbcType=VARCHAR},
</if>
<if test="userId != null">
#{userId,jdbcType=BIGINT},
</if>
<if test="createTime != null">
#{createTime,jdbcType=BIGINT},
</if>
</trim>
</insert>
<select id="countByExample" parameterType="io.dataease.base.domain.PanelStoreExample" resultType="java.lang.Long">
select count(*) from panel_store
<if test="_parameter != null">
<include refid="Example_Where_Clause" />
</if>
</select>
<update id="updateByExampleSelective" parameterType="map">
update panel_store
<set>
<if test="record.storeId != null">
store_id = #{record.storeId,jdbcType=BIGINT},
</if>
<if test="record.panelGroupId != null">
panel_group_id = #{record.panelGroupId,jdbcType=VARCHAR},
</if>
<if test="record.userId != null">
user_id = #{record.userId,jdbcType=BIGINT},
</if>
<if test="record.createTime != null">
create_time = #{record.createTime,jdbcType=BIGINT},
</if>
</set>
<if test="_parameter != null">
<include refid="Update_By_Example_Where_Clause" />
</if>
</update>
<update id="updateByExample" parameterType="map">
update panel_store
set store_id = #{record.storeId,jdbcType=BIGINT},
panel_group_id = #{record.panelGroupId,jdbcType=VARCHAR},
user_id = #{record.userId,jdbcType=BIGINT},
create_time = #{record.createTime,jdbcType=BIGINT}
<if test="_parameter != null">
<include refid="Update_By_Example_Where_Clause" />
</if>
</update>
<update id="updateByPrimaryKeySelective" parameterType="io.dataease.base.domain.PanelStore">
update panel_store
<set>
<if test="panelGroupId != null">
panel_group_id = #{panelGroupId,jdbcType=VARCHAR},
</if>
<if test="userId != null">
user_id = #{userId,jdbcType=BIGINT},
</if>
<if test="createTime != null">
create_time = #{createTime,jdbcType=BIGINT},
</if>
</set>
where store_id = #{storeId,jdbcType=BIGINT}
</update>
<update id="updateByPrimaryKey" parameterType="io.dataease.base.domain.PanelStore">
update panel_store
set panel_group_id = #{panelGroupId,jdbcType=VARCHAR},
user_id = #{userId,jdbcType=BIGINT},
create_time = #{createTime,jdbcType=BIGINT}
where store_id = #{storeId,jdbcType=BIGINT}
</update>
</mapper>
\ No newline at end of file
package io.dataease.base.mapper.ext;
import io.dataease.base.domain.PanelShare;
import io.dataease.base.mapper.ext.query.GridExample;
import io.dataease.dto.panel.PanelShareDto;
import java.util.List;
public interface ExtPanelShareMapper {
int batchInsert(List<PanelShare> shares);
List<PanelShareDto> query(GridExample example);
}
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
<mapper namespace="io.dataease.base.mapper.ext.ExtPanelShareMapper">
<resultMap id="treeNodeMap" type="io.dataease.dto.panel.PanelShareDto">
<id column="id" property="id" />
<result column="name" property="name" />
<result column="pid" property="pid" />
</resultMap>
<insert id="batchInsert" parameterType="io.dataease.base.domain.PanelStore">
INSERT INTO panel_store (panel_group_id,user_id,create_time)
VALUES
<foreach collection="list" item="store" separator=",">
(#{store.panelGroupId}, #{store.userId}, #{store.createTime})
</foreach>
</insert>
<select id="query" parameterType="io.dataease.base.mapper.ext.query.GridExample" resultMap="treeNodeMap">
select s.panel_group_id as id, g.create_by as pid, g.name
from panel_share s
left join panel_group g on g.id = s.panel_group_id
<if test="_parameter != null">
<include refid="io.dataease.base.mapper.ext.query.GridSql.gridCondition" />
</if>
<if test="orderByClause != null">
order by ${orderByClause}
</if>
<if test="orderByClause == null">
order by s.create_time desc
</if>
</select>
</mapper>
package io.dataease.base.mapper.ext;
import io.dataease.base.mapper.ext.query.GridExample;
import io.dataease.dto.panel.PanelStoreDto;
import java.util.List;
public interface ExtPanelStoreMapper {
List<PanelStoreDto> query(GridExample example);
}
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
<mapper namespace="io.dataease.base.mapper.ext.ExtPanelStoreMapper">
<resultMap id="panelStoreMap" type="io.dataease.dto.panel.PanelStoreDto" >
<id column="store_id" property="storeId"></id>
<result column="name" property="name"></result>
</resultMap>
<select id="query" parameterType="io.dataease.base.mapper.ext.query.GridExample" resultMap="panelStoreMap">
select s.store_id, g.name
from panel_store s
left join panel_group g on g.id = s.panel_group_id
<if test="_parameter != null">
<include refid="io.dataease.base.mapper.ext.query.GridSql.gridCondition" />
</if>
<if test="orderByClause != null">
order by ${orderByClause}
</if>
<if test="orderByClause == null">
order by s.create_time desc
</if>
</select>
</mapper>
package io.dataease.controller.panel.api;
import io.dataease.controller.request.panel.PanelShareRequest;
import io.dataease.controller.sys.base.BaseGridRequest;
import io.dataease.dto.panel.PanelShareDto;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import java.util.List;
/**
* 分享API
*/
@Api(tags = "仪表板:分享管理")
@RequestMapping("/api/share")
public interface ShareApi {
@ApiOperation("创建分享")
@PostMapping("/")
void share(PanelShareRequest request);
@ApiOperation("查询分享")
@PostMapping("/treeList")
List<PanelShareDto> treeList(BaseGridRequest request);
}
package io.dataease.controller.panel.api;
import io.dataease.controller.sys.base.BaseGridRequest;
import io.dataease.dto.panel.PanelStoreDto;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import java.util.List;
/**
* 收藏API
*/
@Api(tags = "仪表板:收藏管理")
@RequestMapping("/api/store")
public interface StoreApi {
@ApiOperation("创建收藏")
@PostMapping("/{id}")
void store(@PathVariable("id") String id);
@ApiOperation("查询收藏")
@PostMapping("/list")
List<PanelStoreDto> list(@RequestBody BaseGridRequest request);
@ApiOperation("移除收藏")
@PostMapping("/remove/{storeId}")
void remove(@PathVariable("storeId") Long storeId);
}
package io.dataease.controller.panel.server;
import io.dataease.controller.panel.api.ShareApi;
import io.dataease.controller.request.panel.PanelShareRequest;
import io.dataease.controller.sys.base.BaseGridRequest;
import io.dataease.dto.panel.PanelShareDto;
import io.dataease.service.panel.ShareService;
import org.springframework.web.bind.annotation.RequestBody;
import javax.annotation.Resource;
import java.util.List;
public class ShareServer implements ShareApi {
@Resource
private ShareService shareService;
@Override
public void share(@RequestBody PanelShareRequest request) {
shareService.save(request);
}
@Override
public List<PanelShareDto> treeList(@RequestBody BaseGridRequest request) {
return shareService.queryTree(request);
}
}
package io.dataease.controller.panel.server;
import io.dataease.controller.panel.api.StoreApi;
import io.dataease.controller.sys.base.BaseGridRequest;
import io.dataease.dto.panel.PanelStoreDto;
import io.dataease.service.panel.StoreService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RestController;
import java.util.List;
@RestController
public class StoreServer implements StoreApi {
@Autowired
private StoreService storeService;
@Override
public void store( String id) {
storeService.save(id);
}
@Override
public List<PanelStoreDto> list(BaseGridRequest request) {
return storeService.query(request);
}
@Override
public void remove( Long storeId) {
storeService.remove(storeId);
}
}
package io.dataease.controller.request.panel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.io.Serializable;
import java.util.List;
@Data
public class PanelShareRequest implements Serializable {
@ApiModelProperty("分享目标用户集合")
private List<Long> userIds;
@ApiModelProperty("分享仪表板集合")
private List<String> panelIds;
}
package io.dataease.dto.panel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Builder;
import lombok.Data;
import java.util.List;
@Data
@Builder
public class PanelShareDto {
@ApiModelProperty("节点ID")
private String id;
@ApiModelProperty("名称")
private String name;
@ApiModelProperty("节点父ID")
private String creator;
@ApiModelProperty("子节点")
private List<PanelShareDto> children;
}
package io.dataease.dto.panel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
@Data
public class PanelStoreDto {
@ApiModelProperty("收藏ID")
private Long storeId;
@ApiModelProperty("仪表板名称")
private String name;
}
package io.dataease.service.panel;
import io.dataease.base.domain.PanelShare;
import io.dataease.base.domain.PanelShareExample;
import io.dataease.base.mapper.PanelShareMapper;
import io.dataease.base.mapper.ext.ExtPanelShareMapper;
import io.dataease.base.mapper.ext.query.GridExample;
import io.dataease.commons.utils.AuthUtils;
import io.dataease.commons.utils.CommonBeanFactory;
import io.dataease.controller.request.panel.PanelShareRequest;
import io.dataease.controller.sys.base.BaseGridRequest;
import io.dataease.controller.sys.base.ConditionEntity;
import io.dataease.dto.panel.PanelShareDto;
import org.apache.commons.collections.CollectionUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
@Service
public class ShareService {
@Autowired(required = false)
private PanelShareMapper mapper;
@Resource
private ExtPanelShareMapper extPanelShareMapper;
@Transactional
public void save(PanelShareRequest request){
//1.先根据仪表板删除所有已经分享的
List<String> panelIds = request.getPanelIds();
List<Long> userIds = request.getUserIds();
// 使用原生对象会导致事物失效 所以这里需要使用spring代理对象
if (CollectionUtils.isNotEmpty(panelIds)){
ShareService proxy = CommonBeanFactory.getBean(ShareService.class);
panelIds.forEach(proxy::delete);
}
if (CollectionUtils.isEmpty(userIds)) return;
long now = System.currentTimeMillis();
List<PanelShare> shares = panelIds.stream().flatMap(panelId ->
userIds.stream().map(userId -> {
PanelShare share = new PanelShare();
share.setCreateTime(now);
share.setPanelGroupId(panelId);
share.setUserId(userId);
return share;
})
).collect(Collectors.toList());
if (CollectionUtils.isNotEmpty(shares)){
extPanelShareMapper.batchInsert(shares);
}
}
/**
* panel_group_id建了索引 效率不会很差
* @param panel_group_id
*/
@Transactional
public void delete(String panel_group_id){
PanelShareExample example = new PanelShareExample();
example.createCriteria().andPanelGroupIdEqualTo(panel_group_id);
mapper.deleteByExample(example);
}
public List<PanelShareDto> queryTree(BaseGridRequest request){
Long userId = AuthUtils.getUser().getUserId();
ConditionEntity condition = new ConditionEntity();
condition.setField("s.user_id");
condition.setOperator("eq");
condition.setValue(userId);
request.setConditions(new ArrayList<ConditionEntity>(){{add(condition);}});
GridExample example = request.convertExample();
List<PanelShareDto> datas = extPanelShareMapper.query(example);
return convertTree(datas);
}
//List构建Tree
private List<PanelShareDto> convertTree(List<PanelShareDto> datas){
Map<String, List<PanelShareDto>> map = datas.stream().collect(Collectors.groupingBy(PanelShareDto::getCreator));
List<PanelShareDto> roots = new ArrayList<>();
return map.entrySet().stream().map(entry -> PanelShareDto.builder().name(entry.getKey()).children(entry.getValue()).build()).collect(Collectors.toList());
}
}
package io.dataease.service.panel;
import io.dataease.base.domain.PanelStore;
import io.dataease.base.mapper.PanelStoreMapper;
import io.dataease.base.mapper.ext.ExtPanelStoreMapper;
import io.dataease.base.mapper.ext.query.GridExample;
import io.dataease.commons.utils.AuthUtils;
import io.dataease.controller.sys.base.BaseGridRequest;
import io.dataease.controller.sys.base.ConditionEntity;
import io.dataease.dto.panel.PanelStoreDto;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.util.ArrayList;
import java.util.List;
@Service
public class StoreService {
@Resource
private PanelStoreMapper panelStoreMapper;
@Resource
private ExtPanelStoreMapper extPanelStoreMapper;
public void save(String panelGroupId){
Long userId = AuthUtils.getUser().getUserId();
PanelStore panelStore = new PanelStore();
panelStore.setCreateTime(System.currentTimeMillis());
panelStore.setPanelGroupId(panelGroupId);
panelStore.setUserId(userId);
panelStoreMapper.insert(panelStore);
}
public void remove(Long storeId){
panelStoreMapper.deleteByPrimaryKey(storeId);
}
/**
* 按照当前用户ID查询收藏仪表板
* @param request
* @return
*/
public List<PanelStoreDto> query(BaseGridRequest request){
Long userId = AuthUtils.getUser().getUserId();
ConditionEntity condition = new ConditionEntity();
condition.setField("s.user_id");
condition.setOperator("eq");
condition.setValue(userId);
request.setConditions(new ArrayList<ConditionEntity>(){{add(condition);}});
GridExample example = request.convertExample();
List<PanelStoreDto> stores = extPanelStoreMapper.query(example);
return stores;
}
}
......@@ -53,3 +53,46 @@ BEGIN
RETURN oTemp;
END $$
DELIMITER ;
SET NAMES utf8mb4;
SET FOREIGN_KEY_CHECKS = 0;
-- ----------------------------
-- Table structure for panel_store
-- ----------------------------
DROP TABLE IF EXISTS `panel_store`;
CREATE TABLE `panel_store` (
`store_id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'ID',
`panel_group_id` varchar(50) NOT NULL COMMENT '仪表板ID',
`user_id` bigint(20) NOT NULL COMMENT '用户ID',
`create_time` bigint(13) DEFAULT NULL COMMENT '创建日期',
PRIMARY KEY (`store_id`) USING BTREE,
UNIQUE KEY `UK_store_user_id` (`user_id`) USING BTREE
) ENGINE=InnoDB AUTO_INCREMENT=7 DEFAULT CHARSET=utf8 ROW_FORMAT=COMPACT COMMENT='仪表板收藏';
SET FOREIGN_KEY_CHECKS = 1;
SET NAMES utf8mb4;
SET FOREIGN_KEY_CHECKS = 0;
-- ----------------------------
-- Table structure for panel_share
-- ----------------------------
DROP TABLE IF EXISTS `panel_share`;
CREATE TABLE `panel_share` (
`share_id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '分享ID',
`panel_group_id` varchar(50) DEFAULT NULL COMMENT '仪表板ID',
`user_id` bigint(20) DEFAULT NULL COMMENT '用户ID',
`create_time` bigint(13) DEFAULT NULL COMMENT '创建日期',
PRIMARY KEY (`share_id`) USING BTREE,
UNIQUE KEY `UK_share_user_id` (`user_id`) USING BTREE,
UNIQUE KEY `UK_share_panel_group_id` (`panel_group_id`) USING BTREE,
) ENGINE=InnoDB AUTO_INCREMENT=7 DEFAULT CHARSET=utf8 ROW_FORMAT=COMPACT COMMENT='仪表板分享';
SET FOREIGN_KEY_CHECKS = 1;
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论