xieb
2023-12-19 7eff471080b4a4a83481e79ab3117f001dee9e3a
上传图片、留言模块
2 files modified
10 files added
766 ■■■■■ changed files
src/main/java/org/springblade/common/config/BladeConfiguration.java 1 ●●●● patch | view | raw | blame | history
src/main/java/org/springblade/modules/leave/controller/LeaveWordsController.java 166 ●●●●● patch | view | raw | blame | history
src/main/java/org/springblade/modules/leave/dto/LeaveWordsDTO.java 34 ●●●●● patch | view | raw | blame | history
src/main/java/org/springblade/modules/leave/entity/LeaveWordsEntity.java 70 ●●●●● patch | view | raw | blame | history
src/main/java/org/springblade/modules/leave/excel/LeaveWordsExcel.java 87 ●●●●● patch | view | raw | blame | history
src/main/java/org/springblade/modules/leave/mapper/LeaveWordsMapper.java 61 ●●●●● patch | view | raw | blame | history
src/main/java/org/springblade/modules/leave/mapper/LeaveWordsMapper.xml 46 ●●●●● patch | view | raw | blame | history
src/main/java/org/springblade/modules/leave/service/ILeaveWordsService.java 59 ●●●●● patch | view | raw | blame | history
src/main/java/org/springblade/modules/leave/service/impl/LeaveWordsServiceImpl.java 59 ●●●●● patch | view | raw | blame | history
src/main/java/org/springblade/modules/leave/vo/LeaveWordsVO.java 78 ●●●●● patch | view | raw | blame | history
src/main/java/org/springblade/modules/leave/wrapper/LeaveWordsWrapper.java 69 ●●●●● patch | view | raw | blame | history
src/main/resources/application.yml 36 ●●●●● patch | view | raw | blame | history
src/main/java/org/springblade/common/config/BladeConfiguration.java
@@ -51,6 +51,7 @@
        secureRegistry.excludePathPatterns("/webjars/**");
        secureRegistry.excludePathPatterns("/swagger-resources/**");
        secureRegistry.excludePathPatterns("/druid/**");
        secureRegistry.excludePathPatterns("/leave/leaveWords/**");
        return secureRegistry;
    }
src/main/java/org/springblade/modules/leave/controller/LeaveWordsController.java
New file
@@ -0,0 +1,166 @@
/*
 *      Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
 *
 *  Redistribution and use in source and binary forms, with or without
 *  modification, are permitted provided that the following conditions are met:
 *
 *  Redistributions of source code must retain the above copyright notice,
 *  this list of conditions and the following disclaimer.
 *  Redistributions in binary form must reproduce the above copyright
 *  notice, this list of conditions and the following disclaimer in the
 *  documentation and/or other materials provided with the distribution.
 *  Neither the name of the dreamlu.net developer nor the names of its
 *  contributors may be used to endorse or promote products derived from
 *  this software without specific prior written permission.
 *  Author: Chill 庄骞 (smallchill@163.com)
 */
package org.springblade.modules.leave.controller;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
import lombok.AllArgsConstructor;
import javax.validation.Valid;
import org.springblade.core.secure.BladeUser;
import org.springblade.core.mp.support.Condition;
import org.springblade.core.mp.support.Query;
import org.springblade.core.tool.api.R;
import org.springblade.core.tool.utils.Func;
import org.springblade.modules.assessment.entity.AssessmentScoreEntity;
import org.springframework.web.bind.annotation.*;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import org.springblade.modules.leave.entity.LeaveWordsEntity;
import org.springblade.modules.leave.vo.LeaveWordsVO;
import org.springblade.modules.leave.excel.LeaveWordsExcel;
import org.springblade.modules.leave.wrapper.LeaveWordsWrapper;
import org.springblade.modules.leave.service.ILeaveWordsService;
import org.springblade.core.boot.ctrl.BladeController;
import org.springblade.core.tool.utils.DateUtil;
import org.springblade.core.excel.util.ExcelUtil;
import org.springblade.core.tool.constant.BladeConstant;
import springfox.documentation.annotations.ApiIgnore;
import java.util.Map;
import java.util.List;
import javax.servlet.http.HttpServletResponse;
/**
 * 留言板块 控制器
 *
 * @author aix
 * @since 2023-12-18
 */
@RestController
@AllArgsConstructor
@RequestMapping("leave/leaveWords")
@Api(value = "留言板块", tags = "留言板块接口")
public class LeaveWordsController extends BladeController {
    private final ILeaveWordsService leaveWordsService;
    /**
     * 留言板块 详情
     */
    @GetMapping("/detail")
    @ApiOperationSupport(order = 1)
    @ApiOperation(value = "详情", notes = "传入leaveWords")
    public R<LeaveWordsVO> detail(LeaveWordsEntity leaveWords) {
        LeaveWordsEntity detail = leaveWordsService.getOne(Condition.getQueryWrapper(leaveWords));
        return R.data(LeaveWordsWrapper.build().entityVO(detail));
    }
    /**
     * 留言板块 树列表
     */
    @GetMapping("/list")
    @ApiOperationSupport(order = 2)
    @ApiOperation(value = "分页", notes = "传入leaveWords")
//    public R<List<LeaveWordsVO>> list(@ApiIgnore @RequestParam Map<String, Object> leaveWords, BladeUser bladeUser) {
    public R<IPage<LeaveWordsVO>> list(@ApiIgnore @RequestParam Map<String, Object> leaveWords, Query query) {
        QueryWrapper<LeaveWordsEntity> queryWrapper = Condition.getQueryWrapper(leaveWords, LeaveWordsEntity.class);
//        List<LeaveWordsEntity> list = leaveWordsService.list((!bladeUser.getTenantId().equals(BladeConstant.ADMIN_TENANT_ID)) ? queryWrapper.lambda().eq(LeaveWordsEntity::getTenantId, bladeUser.getTenantId()) : queryWrapper);
//        List<LeaveWordsEntity> list = leaveWordsService.list(queryWrapper);
        IPage<LeaveWordsEntity> pages = leaveWordsService.page(Condition.getPage(query), Condition.getQueryWrapper(leaveWords, LeaveWordsEntity.class));
        return R.data(LeaveWordsWrapper.build().treeNodePageVO(pages));
    }
    /**
     * 留言板块 自定义分页
     */
    @GetMapping("/page")
    @ApiOperationSupport(order = 3)
    @ApiOperation(value = "分页", notes = "传入leaveWords")
    public R<IPage<LeaveWordsVO>> page(LeaveWordsVO leaveWords, Query query) {
        IPage<LeaveWordsVO> pages = leaveWordsService.selectLeaveWordsPage(Condition.getPage(query), leaveWords);
        return R.data(pages);
    }
    /**
     * 留言板块 新增
     */
    @PostMapping("/save")
    @ApiOperationSupport(order = 4)
    @ApiOperation(value = "新增", notes = "传入leaveWords")
    public R save(@Valid @RequestBody LeaveWordsEntity leaveWords) {
        return R.status(leaveWordsService.save(leaveWords));
    }
    /**
     * 留言板块 修改
     */
    @PostMapping("/update")
    @ApiOperationSupport(order = 5)
    @ApiOperation(value = "修改", notes = "传入leaveWords")
    public R update(@Valid @RequestBody LeaveWordsEntity leaveWords) {
        return R.status(leaveWordsService.updateById(leaveWords));
    }
    /**
     * 留言板块 新增或修改
     */
    @PostMapping("/submit")
    @ApiOperationSupport(order = 6)
    @ApiOperation(value = "新增或修改", notes = "传入leaveWords")
    public R submit(@Valid @RequestBody LeaveWordsEntity leaveWords) {
        return R.status(leaveWordsService.saveOrUpdate(leaveWords));
    }
    /**
     * 留言板块 删除
     */
    @PostMapping("/remove")
    @ApiOperationSupport(order = 7)
    @ApiOperation(value = "逻辑删除", notes = "传入ids")
    public R remove(@ApiParam(value = "主键集合", required = true) @RequestParam String ids) {
        return R.status(leaveWordsService.deleteLogic(Func.toLongList(ids)));
    }
    /**
     * 留言板块 树形结构
     */
    @GetMapping("/tree")
    @ApiOperationSupport(order = 8)
    @ApiOperation(value = "树形结构", notes = "树形结构")
    public R<List<LeaveWordsVO>> tree(String tenantId, BladeUser bladeUser) {
        List<LeaveWordsVO> tree = leaveWordsService.tree(Func.toStrWithEmpty(tenantId, bladeUser.getTenantId()));
        return R.data(tree);
    }
    /**
     * 导出数据
     */
    @GetMapping("/export-leaveWords")
    @ApiOperationSupport(order = 9)
    @ApiOperation(value = "导出数据", notes = "传入leaveWords")
    public void exportLeaveWords(@ApiIgnore @RequestParam Map<String, Object> leaveWords, BladeUser bladeUser, HttpServletResponse response) {
        QueryWrapper<LeaveWordsEntity> queryWrapper = Condition.getQueryWrapper(leaveWords, LeaveWordsEntity.class);
        //if (!AuthUtil.isAdministrator()) {
        //    queryWrapper.lambda().eq(LeaveWords::getTenantId, bladeUser.getTenantId());
        //}
        queryWrapper.lambda().eq(LeaveWordsEntity::getIsDeleted, BladeConstant.DB_NOT_DELETED);
        List<LeaveWordsExcel> list = leaveWordsService.exportLeaveWords(queryWrapper);
        ExcelUtil.export(response, "留言板块数据" + DateUtil.time(), "留言板块数据表", list, LeaveWordsExcel.class);
    }
}
src/main/java/org/springblade/modules/leave/dto/LeaveWordsDTO.java
New file
@@ -0,0 +1,34 @@
/*
 *      Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
 *
 *  Redistribution and use in source and binary forms, with or without
 *  modification, are permitted provided that the following conditions are met:
 *
 *  Redistributions of source code must retain the above copyright notice,
 *  this list of conditions and the following disclaimer.
 *  Redistributions in binary form must reproduce the above copyright
 *  notice, this list of conditions and the following disclaimer in the
 *  documentation and/or other materials provided with the distribution.
 *  Neither the name of the dreamlu.net developer nor the names of its
 *  contributors may be used to endorse or promote products derived from
 *  this software without specific prior written permission.
 *  Author: Chill 庄骞 (smallchill@163.com)
 */
package org.springblade.modules.leave.dto;
import org.springblade.modules.leave.entity.LeaveWordsEntity;
import lombok.Data;
import lombok.EqualsAndHashCode;
/**
 * 留言板块 数据传输对象实体类
 *
 * @author aix
 * @since 2023-12-18
 */
@Data
@EqualsAndHashCode(callSuper = true)
public class LeaveWordsDTO extends LeaveWordsEntity {
    private static final long serialVersionUID = 1L;
}
src/main/java/org/springblade/modules/leave/entity/LeaveWordsEntity.java
New file
@@ -0,0 +1,70 @@
/*
 *      Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
 *
 *  Redistribution and use in source and binary forms, with or without
 *  modification, are permitted provided that the following conditions are met:
 *
 *  Redistributions of source code must retain the above copyright notice,
 *  this list of conditions and the following disclaimer.
 *  Redistributions in binary form must reproduce the above copyright
 *  notice, this list of conditions and the following disclaimer in the
 *  documentation and/or other materials provided with the distribution.
 *  Neither the name of the dreamlu.net developer nor the names of its
 *  contributors may be used to endorse or promote products derived from
 *  this software without specific prior written permission.
 *  Author: Chill 庄骞 (smallchill@163.com)
 */
package org.springblade.modules.leave.entity;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import java.util.Date;
import lombok.EqualsAndHashCode;
import org.springblade.core.tenant.mp.TenantEntity;
/**
 * 留言板块 实体类
 *
 * @author aix
 * @since 2023-12-18
 */
@Data
@TableName("yw_leave_words")
@ApiModel(value = "LeaveWords对象", description = "留言板块")
@EqualsAndHashCode(callSuper = true)
public class LeaveWordsEntity extends TenantEntity {
    /**
     * 父id
     */
    @ApiModelProperty(value = "父id")
    private Long parentId;
    /**
     * 留言人名称
     */
    @ApiModelProperty(value = "留言人名称")
    private String userName;
    /**
     * 留言人职位
     */
    @ApiModelProperty(value = "留言人部门")
    private String userDept;
    /**
     * 留言人职位
     */
    @ApiModelProperty(value = "留言人职位")
    private String userPost;
    /**
     * 留言内容
     */
    @ApiModelProperty(value = "留言内容")
    private String content;
    /**
     * 图片数组
     */
    @ApiModelProperty(value = "图片数组")
    private String imageUrls;
}
src/main/java/org/springblade/modules/leave/excel/LeaveWordsExcel.java
New file
@@ -0,0 +1,87 @@
/*
 *      Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
 *
 *  Redistribution and use in source and binary forms, with or without
 *  modification, are permitted provided that the following conditions are met:
 *
 *  Redistributions of source code must retain the above copyright notice,
 *  this list of conditions and the following disclaimer.
 *  Redistributions in binary form must reproduce the above copyright
 *  notice, this list of conditions and the following disclaimer in the
 *  documentation and/or other materials provided with the distribution.
 *  Neither the name of the dreamlu.net developer nor the names of its
 *  contributors may be used to endorse or promote products derived from
 *  this software without specific prior written permission.
 *  Author: Chill 庄骞 (smallchill@163.com)
 */
package org.springblade.modules.leave.excel;
import lombok.Data;
import java.util.Date;
import com.alibaba.excel.annotation.ExcelProperty;
import com.alibaba.excel.annotation.write.style.ColumnWidth;
import com.alibaba.excel.annotation.write.style.ContentRowHeight;
import com.alibaba.excel.annotation.write.style.HeadRowHeight;
import java.io.Serializable;
/**
 * 留言板块 Excel实体类
 *
 * @author aix
 * @since 2023-12-18
 */
@Data
@ColumnWidth(25)
@HeadRowHeight(20)
@ContentRowHeight(18)
public class LeaveWordsExcel implements Serializable {
    private static final long serialVersionUID = 1L;
    /**
     * 租户ID
     */
    @ColumnWidth(20)
    @ExcelProperty("租户ID")
    private String tenantId;
    /**
     * 父id
     */
    @ColumnWidth(20)
    @ExcelProperty("父id")
    private Long parentId;
    /**
     * 留言人名称
     */
    @ColumnWidth(20)
    @ExcelProperty("留言人名称")
    private String userName;
    /**
     * 留言人职位
     */
    @ColumnWidth(20)
    @ExcelProperty("留言人职位")
    private String userPost;
    /**
     * 留言内容
     */
    @ColumnWidth(20)
    @ExcelProperty("留言内容")
    private String content;
    /**
     * 图片数组
     */
    @ColumnWidth(20)
    @ExcelProperty("图片数组")
    private String imageUrls;
    /**
     * 是否已删除
     */
    @ColumnWidth(20)
    @ExcelProperty("是否已删除")
    private Integer isDeleted;
}
src/main/java/org/springblade/modules/leave/mapper/LeaveWordsMapper.java
New file
@@ -0,0 +1,61 @@
/*
 *      Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
 *
 *  Redistribution and use in source and binary forms, with or without
 *  modification, are permitted provided that the following conditions are met:
 *
 *  Redistributions of source code must retain the above copyright notice,
 *  this list of conditions and the following disclaimer.
 *  Redistributions in binary form must reproduce the above copyright
 *  notice, this list of conditions and the following disclaimer in the
 *  documentation and/or other materials provided with the distribution.
 *  Neither the name of the dreamlu.net developer nor the names of its
 *  contributors may be used to endorse or promote products derived from
 *  this software without specific prior written permission.
 *  Author: Chill 庄骞 (smallchill@163.com)
 */
package org.springblade.modules.leave.mapper;
import org.springblade.modules.leave.entity.LeaveWordsEntity;
import org.springblade.modules.leave.vo.LeaveWordsVO;
import org.springblade.modules.leave.excel.LeaveWordsExcel;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.conditions.Wrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import org.apache.ibatis.annotations.Param;
import java.util.List;
/**
 * 留言板块 Mapper 接口
 *
 * @author aix
 * @since 2023-12-18
 */
public interface LeaveWordsMapper extends BaseMapper<LeaveWordsEntity> {
    /**
     * 自定义分页
     *
     * @param page
     * @param leaveWords
     * @return
     */
    List<LeaveWordsVO> selectLeaveWordsPage(IPage page, LeaveWordsVO leaveWords);
    /**
     * 获取树形节点
     *
     * @param tenantId
     * @return
     */
    List<LeaveWordsVO> tree(String tenantId);
    /**
     * 获取导出数据
     *
     * @param queryWrapper
     * @return
     */
    List<LeaveWordsExcel> exportLeaveWords(@Param("ew") Wrapper<LeaveWordsEntity> queryWrapper);
}
src/main/java/org/springblade/modules/leave/mapper/LeaveWordsMapper.xml
New file
@@ -0,0 +1,46 @@
<?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="org.springblade.modules.leave.mapper.LeaveWordsMapper">
    <!-- 通用查询映射结果 -->
    <resultMap id="leaveWordsResultMap" type="org.springblade.modules.leave.entity.LeaveWordsEntity">
        <result column="id" property="id"/>
        <result column="tenant_id" property="tenantId"/>
        <result column="parent_id" property="parentId"/>
        <result column="user_name" property="userName"/>
        <result column="user_post" property="userPost"/>
        <result column="content" property="content"/>
        <result column="image_urls" property="imageUrls"/>
        <result column="create_user" property="createUser"/>
        <result column="create_dept" property="createDept"/>
        <result column="create_time" property="createTime"/>
        <result column="update_user" property="updateUser"/>
        <result column="update_time" property="updateTime"/>
        <result column="status" property="status"/>
        <result column="is_deleted" property="isDeleted"/>
    </resultMap>
    <resultMap id="treeNodeResultMap" type="org.springblade.core.tool.node.TreeNode">
        <id column="id" property="id"/>
        <result column="parent_id" property="parentId"/>
        <result column="title" property="title"/>
        <result column="value" property="value"/>
        <result column="key" property="key"/>
    </resultMap>
    <select id="selectLeaveWordsPage" resultMap="leaveWordsResultMap">
        select * from yw_leave_words where is_deleted = 0
    </select>
    <select id="tree" resultMap="treeNodeResultMap">
        select id as id, parent_id as parent_id, user_name as title, id as 'value', id as 'key' from yw_leave_words where is_deleted = 0
        <if test="_parameter!=null">
            and tenant_id = #{_parameter}
        </if>
    </select>
    <select id="exportLeaveWords" resultType="org.springblade.modules.leave.excel.LeaveWordsExcel">
        SELECT * FROM yw_leave_words ${ew.customSqlSegment}
    </select>
</mapper>
src/main/java/org/springblade/modules/leave/service/ILeaveWordsService.java
New file
@@ -0,0 +1,59 @@
/*
 *      Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
 *
 *  Redistribution and use in source and binary forms, with or without
 *  modification, are permitted provided that the following conditions are met:
 *
 *  Redistributions of source code must retain the above copyright notice,
 *  this list of conditions and the following disclaimer.
 *  Redistributions in binary form must reproduce the above copyright
 *  notice, this list of conditions and the following disclaimer in the
 *  documentation and/or other materials provided with the distribution.
 *  Neither the name of the dreamlu.net developer nor the names of its
 *  contributors may be used to endorse or promote products derived from
 *  this software without specific prior written permission.
 *  Author: Chill 庄骞 (smallchill@163.com)
 */
package org.springblade.modules.leave.service;
import com.baomidou.mybatisplus.core.conditions.Wrapper;
import org.springblade.modules.leave.entity.LeaveWordsEntity;
import org.springblade.modules.leave.vo.LeaveWordsVO;
import org.springblade.modules.leave.excel.LeaveWordsExcel;
import com.baomidou.mybatisplus.core.metadata.IPage;
import org.springblade.core.mp.base.BaseService;
import java.util.List;
/**
 * 留言板块 服务类
 *
 * @author aix
 * @since 2023-12-18
 */
public interface ILeaveWordsService extends BaseService<LeaveWordsEntity> {
    /**
     * 自定义分页
     *
     * @param page
     * @param leaveWords
     * @return
     */
    IPage<LeaveWordsVO> selectLeaveWordsPage(IPage<LeaveWordsVO> page, LeaveWordsVO leaveWords);
    /**
     * 树形结构
     *
     * @param tenantId
     * @return
     */
    List<LeaveWordsVO> tree(String tenantId);
    /**
     * 导出数据
     *
     * @param queryWrapper
     * @return
     */
    List<LeaveWordsExcel> exportLeaveWords(Wrapper<LeaveWordsEntity> queryWrapper);
}
src/main/java/org/springblade/modules/leave/service/impl/LeaveWordsServiceImpl.java
New file
@@ -0,0 +1,59 @@
/*
 *      Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
 *
 *  Redistribution and use in source and binary forms, with or without
 *  modification, are permitted provided that the following conditions are met:
 *
 *  Redistributions of source code must retain the above copyright notice,
 *  this list of conditions and the following disclaimer.
 *  Redistributions in binary form must reproduce the above copyright
 *  notice, this list of conditions and the following disclaimer in the
 *  documentation and/or other materials provided with the distribution.
 *  Neither the name of the dreamlu.net developer nor the names of its
 *  contributors may be used to endorse or promote products derived from
 *  this software without specific prior written permission.
 *  Author: Chill 庄骞 (smallchill@163.com)
 */
package org.springblade.modules.leave.service.impl;
import org.springblade.modules.leave.entity.LeaveWordsEntity;
import org.springblade.modules.leave.vo.LeaveWordsVO;
import org.springblade.modules.leave.excel.LeaveWordsExcel;
import org.springblade.modules.leave.mapper.LeaveWordsMapper;
import org.springblade.modules.leave.service.ILeaveWordsService;
import org.springframework.stereotype.Service;
import com.baomidou.mybatisplus.core.conditions.Wrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import org.springblade.core.tool.node.ForestNodeMerger;
import org.springblade.core.mp.base.BaseServiceImpl;
import java.util.List;
/**
 * 留言板块 服务实现类
 *
 * @author aix
 * @since 2023-12-18
 */
@Service
public class LeaveWordsServiceImpl extends BaseServiceImpl<LeaveWordsMapper, LeaveWordsEntity> implements ILeaveWordsService {
    @Override
    public IPage<LeaveWordsVO> selectLeaveWordsPage(IPage<LeaveWordsVO> page, LeaveWordsVO leaveWords) {
        return page.setRecords(baseMapper.selectLeaveWordsPage(page, leaveWords));
    }
    @Override
    public List<LeaveWordsVO> tree(String tenantId) {
        return ForestNodeMerger.merge(baseMapper.tree(tenantId));
    }
    @Override
    public List<LeaveWordsExcel> exportLeaveWords(Wrapper<LeaveWordsEntity> queryWrapper) {
        List<LeaveWordsExcel> leaveWordsList = baseMapper.exportLeaveWords(queryWrapper);
        //leaveWordsList.forEach(leaveWords -> {
        //    leaveWords.setTypeName(DictCache.getValue(DictEnum.YES_NO, LeaveWords.getType()));
        //});
        return leaveWordsList;
    }
}
src/main/java/org/springblade/modules/leave/vo/LeaveWordsVO.java
New file
@@ -0,0 +1,78 @@
/*
 *      Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
 *
 *  Redistribution and use in source and binary forms, with or without
 *  modification, are permitted provided that the following conditions are met:
 *
 *  Redistributions of source code must retain the above copyright notice,
 *  this list of conditions and the following disclaimer.
 *  Redistributions in binary form must reproduce the above copyright
 *  notice, this list of conditions and the following disclaimer in the
 *  documentation and/or other materials provided with the distribution.
 *  Neither the name of the dreamlu.net developer nor the names of its
 *  contributors may be used to endorse or promote products derived from
 *  this software without specific prior written permission.
 *  Author: Chill 庄骞 (smallchill@163.com)
 */
package org.springblade.modules.leave.vo;
import org.springblade.modules.leave.entity.LeaveWordsEntity;
import org.springblade.core.tool.node.INode;
import lombok.Data;
import lombok.EqualsAndHashCode;
import com.fasterxml.jackson.annotation.JsonInclude;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
import java.util.ArrayList;
import java.util.List;
/**
 * 留言板块 视图实体类
 *
 * @author aix
 * @since 2023-12-18
 */
@Data
@EqualsAndHashCode(callSuper = true)
public class LeaveWordsVO extends LeaveWordsEntity implements INode<LeaveWordsVO> {
    private static final long serialVersionUID = 1L;
    /**
     * 主键ID
     */
    @JsonSerialize(using = ToStringSerializer.class)
    private Long id;
    /**
     * 父节点ID
     */
    @JsonSerialize(using = ToStringSerializer.class)
    private Long parentId;
    /**
      * 父节点名称
     */
    private String parentName;
    /**
     * 子孙节点
     */
    @JsonInclude(JsonInclude.Include.NON_EMPTY)
    private List<LeaveWordsVO> children;
    /**
     * 是否有子孙节点
     */
    @JsonInclude(JsonInclude.Include.NON_EMPTY)
    private Boolean hasChildren;
    @Override
    public List<LeaveWordsVO> getChildren() {
        if (this.children == null) {
            this.children = new ArrayList<>();
        }
        return this.children;
    }
}
src/main/java/org/springblade/modules/leave/wrapper/LeaveWordsWrapper.java
New file
@@ -0,0 +1,69 @@
/*
 *      Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
 *
 *  Redistribution and use in source and binary forms, with or without
 *  modification, are permitted provided that the following conditions are met:
 *
 *  Redistributions of source code must retain the above copyright notice,
 *  this list of conditions and the following disclaimer.
 *  Redistributions in binary form must reproduce the above copyright
 *  notice, this list of conditions and the following disclaimer in the
 *  documentation and/or other materials provided with the distribution.
 *  Neither the name of the dreamlu.net developer nor the names of its
 *  contributors may be used to endorse or promote products derived from
 *  this software without specific prior written permission.
 *  Author: Chill 庄骞 (smallchill@163.com)
 */
package org.springblade.modules.leave.wrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import org.springblade.core.mp.support.BaseEntityWrapper;
import org.springblade.core.tool.utils.BeanUtil;
import org.springblade.modules.assessment.vo.AssessmentScoreVO;
import org.springblade.modules.leave.entity.LeaveWordsEntity;
import org.springblade.modules.leave.vo.LeaveWordsVO;
import java.util.Objects;
import org.springblade.core.tool.node.ForestNodeMerger;
import java.util.List;
import java.util.stream.Collectors;
/**
 * 留言板块 包装类,返回视图层所需的字段
 *
 * @author aix
 * @since 2023-12-18
 */
public class LeaveWordsWrapper extends BaseEntityWrapper<LeaveWordsEntity, LeaveWordsVO>  {
    public static LeaveWordsWrapper build() {
        return new LeaveWordsWrapper();
     }
    @Override
    public LeaveWordsVO entityVO(LeaveWordsEntity leaveWords) {
        LeaveWordsVO leaveWordsVO = Objects.requireNonNull(BeanUtil.copy(leaveWords, LeaveWordsVO.class));
        //User createUser = UserCache.getUser(leaveWords.getCreateUser());
        //User updateUser = UserCache.getUser(leaveWords.getUpdateUser());
        //leaveWordsVO.setCreateUserName(createUser.getName());
        //leaveWordsVO.setUpdateUserName(updateUser.getName());
        return leaveWordsVO;
    }
    public List<LeaveWordsVO> treeNodeVO(List<LeaveWordsEntity> list) {
        List<LeaveWordsVO> collect = list.stream().map(leaveWords -> BeanUtil.copy(leaveWords, LeaveWordsVO.class)).collect(Collectors.toList());
        return ForestNodeMerger.merge(collect);
    }
    public IPage<LeaveWordsVO> treeNodePageVO(IPage<LeaveWordsEntity> pages) {
        List<LeaveWordsVO> records = listVO(pages.getRecords());
        IPage<LeaveWordsVO> pageVo = new Page<>(pages.getCurrent(), pages.getSize(), pages.getTotal());
        List<LeaveWordsVO> collect = records.stream().map(leaveWords -> BeanUtil.copy(leaveWords, LeaveWordsVO.class)).collect(Collectors.toList());
        pageVo.setRecords(ForestNodeMerger.merge(collect));
        return pageVo;
    }
}
src/main/resources/application.yml
@@ -131,22 +131,29 @@
#oss默认配置
oss:
  #开启oss配置
#  enabled: true
#  #开启oss类型
#  #minio、s3、qiniu、alioss、huaweiobs、tencentcos
#  name: qiniu
#  #租户模式
#  tenant-mode: true
#  #oss服务地址
#  endpoint: http://prt1thnw3.bkt.clouddn.com
#  #minio转换服务地址,用于内网上传后将返回地址改为转换的外网地址
#  transform-endpoint: http://localhost:9000
#  #访问key
#  access-key: N_Loh1ngBqcJovwiAJqR91Ifj2vgOWHOf8AwBA_h
#  #密钥key
#  secret-key: AuzuA1KHAbkIndCU0dB3Zfii2O3crHNODDmpxHRS
#  #存储桶
#  bucket-name: bladex
  enabled: true
  #开启oss类型
  #minio、s3、qiniu、alioss、huaweiobs、tencentcos
  name: qiniu
  #租户模式
  name: minio
  tenant-mode: true
  #oss服务地址
  endpoint: http://prt1thnw3.bkt.clouddn.com
  #minio转换服务地址,用于内网上传后将返回地址改为转换的外网地址
  transform-endpoint: http://localhost:9000
  #访问key
  access-key: N_Loh1ngBqcJovwiAJqR91Ifj2vgOWHOf8AwBA_h
  #密钥key
  secret-key: AuzuA1KHAbkIndCU0dB3Zfii2O3crHNODDmpxHRS
  #存储桶
  bucket-name: bladex
  endpoint: http://dev.jxpskj.com:9000/
  access-key: pskj
  secret-key: pskj@2021
  bucket-name: ztzh
#第三方登陆配置
social:
@@ -229,6 +236,7 @@
    #接口放行
    skip-url:
      - /blade-test/**
#      - /leave/leaveWords/**
    #授权认证配置
    auth:
      - method: ALL