青羊经侦大队-数据平台
安瑾然
2022-07-12 77e4741346fb02d5a1f845b89f681a56d06dad0e
minio接口修正,宣传、常见问题接口开发
20个文件已修改
6个文件已添加
1 文件已重命名
885 ■■■■ 已修改文件
pom.xml 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/example/jz/config/DefaultExceptionHandlerConfig.java 5 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/example/jz/config/MybatisPlusConfig.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/example/jz/config/SwaggerConfig.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/example/jz/controller/AnnouncementController.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/example/jz/controller/CommonQuestionController.java 32 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/example/jz/controller/MinIOController.java 28 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/example/jz/controller/PublicityController.java 73 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/example/jz/dao/CommonQuestionDao.java 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/example/jz/dao/PublicityDao.java 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/example/jz/modle/PageParam.java 106 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/example/jz/modle/R.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/example/jz/modle/dto/CommonQuestionDto.java 61 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/example/jz/modle/dto/PublicityDto.java 61 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/example/jz/modle/entity/CommonQuestion.java 95 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/example/jz/modle/entity/Message.java 55 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/example/jz/modle/entity/Publicity.java 92 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/example/jz/service/CommonQuestionService.java 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/example/jz/service/MinIOService.java 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/example/jz/service/PublicityService.java 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/example/jz/service/impl/CommonQuestionServiceImpl.java 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/example/jz/service/impl/MinIOServiceImpl.java 64 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/example/jz/service/impl/PublicityServiceImpl.java 36 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/application.properties 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/mapper/CommonQuestionDao.xml 38 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/mapper/PublicityDao.xml 34 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/test/java/com/example/jz/MinIOTest.java 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pom.xml
@@ -49,6 +49,26 @@
            <groupId>io.springfox</groupId>
            <artifactId>springfox-swagger2</artifactId>
            <version>3.0.0</version>
            <exclusions>
                <exclusion>
                    <groupId>io.swagger</groupId>
                    <artifactId>swagger-annotations</artifactId>
                </exclusion>
                <exclusion>
                    <groupId>io.swagger</groupId>
                    <artifactId>swagger-models</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
        <dependency>
            <groupId>io.swagger</groupId>
            <artifactId>swagger-annotations</artifactId>
            <version>1.5.21</version>
        </dependency>
        <dependency>
            <groupId>io.swagger</groupId>
            <artifactId>swagger-models</artifactId>
            <version>1.5.21</version>
        </dependency>
        <dependency>
            <groupId>com.github.xiaoymin</groupId>
src/main/java/com/example/jz/config/DefaultExceptionHandlerConfig.java
@@ -1,10 +1,7 @@
package com.example.jz.config;
import com.example.jz.enums.BusinessHttpStatus;
import com.example.jz.exception.BusinessException;
import com.example.jz.modle.entity.R;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import com.example.jz.modle.R;
import org.springframework.stereotype.Controller;
import org.springframework.validation.BindException;
import org.springframework.web.bind.MethodArgumentNotValidException;
src/main/java/com/example/jz/config/MybatisPlusConfig.java
@@ -13,6 +13,7 @@
public class MybatisPlusConfig {
    /**
     * 分页插件
     *
     * @return PaginationInterceptor
     */
    @Bean
src/main/java/com/example/jz/config/SwaggerConfig.java
@@ -20,7 +20,7 @@
        return new Docket(DocumentationType.SWAGGER_2)
                .apiInfo(apiInfo())
                .select()
                .apis(RequestHandlerSelectors.basePackage("com.school"))
                .apis(RequestHandlerSelectors.basePackage("com.example.jz"))
                .paths(PathSelectors.any())
                .build();
    }
@@ -31,7 +31,7 @@
                .title("青羊经侦接口文档")
                .description("青羊经侦接口文档Swagger版")
                .termsOfServiceUrl("https://www.baidu.com/")
                .contact(new Contact("安瑾然","https://www.baidu.com/", "1070107765@qq.com"))
                .contact(new Contact("优创立", "https://www.baidu.com/", "1070107765@qq.com"))
                .version("1.0")
                .build();
    }
src/main/java/com/example/jz/controller/AnnouncementController.java
@@ -4,7 +4,7 @@
import com.baomidou.mybatisplus.extension.api.ApiController;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.example.jz.modle.entity.Announcement;
import com.example.jz.modle.entity.R;
import com.example.jz.modle.R;
import com.example.jz.service.AnnouncementService;
import org.springframework.web.bind.annotation.*;
src/main/java/com/example/jz/controller/CommonQuestionController.java
@@ -1,13 +1,15 @@
package com.example.jz.controller;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.api.ApiController;
import com.baomidou.mybatisplus.extension.api.R;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.example.jz.modle.PageParam;
import com.example.jz.modle.entity.CommonQuestion;
import com.example.jz.service.CommonQuestionService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
@@ -22,6 +24,7 @@
 */
@RestController
@RequestMapping("commonQuestion")
@Api(tags = "常见问题表(CommonQuestion)表接口")
public class CommonQuestionController extends ApiController {
    /**
     * 服务对象
@@ -37,8 +40,9 @@
     * @return 所有数据
     */
    @GetMapping
    public R selectAll(Page<CommonQuestion> page, CommonQuestion commonQuestion) {
        return success(this.commonQuestionService.page(page, new QueryWrapper<>(commonQuestion)));
    @ApiOperation("分页查询所有数据")
    public R<IPage<CommonQuestion>> selectAll(PageParam<CommonQuestion> page, CommonQuestion commonQuestion) {
        return R.ok(commonQuestionService.page(page, new QueryWrapper<>(commonQuestion)));
    }
    /**
@@ -48,8 +52,9 @@
     * @return 单条数据
     */
    @GetMapping("{id}")
    public R selectOne(@PathVariable Serializable id) {
        return success(this.commonQuestionService.getById(id));
    @ApiOperation(value = "通过主键查询单条数据", notes = "通过主键查询单条数据")
    public R<CommonQuestion> selectOne(@PathVariable Serializable id) {
        return R.ok(commonQuestionService.getById(id));
    }
    /**
@@ -59,8 +64,9 @@
     * @return 新增结果
     */
    @PostMapping
    public R insert(@RequestBody CommonQuestion commonQuestion) {
        return success(this.commonQuestionService.save(commonQuestion));
    @ApiOperation(value = "新增数据", notes = "新增数据")
    public R<Boolean> insert(@RequestBody CommonQuestion commonQuestion) {
        return R.ok(commonQuestionService.save(commonQuestion));
    }
    /**
@@ -70,8 +76,9 @@
     * @return 修改结果
     */
    @PutMapping
    public R update(@RequestBody CommonQuestion commonQuestion) {
        return success(this.commonQuestionService.updateById(commonQuestion));
    @ApiOperation(value = "修改数据", notes = "修改数据")
    public R<Boolean> update(@RequestBody CommonQuestion commonQuestion) {
        return R.ok(commonQuestionService.updateById(commonQuestion));
    }
    /**
@@ -81,8 +88,9 @@
     * @return 删除结果
     */
    @DeleteMapping
    public R delete(@RequestParam("idList") List<Long> idList) {
        return success(this.commonQuestionService.removeByIds(idList));
    @ApiOperation(value = "删除数据", notes = "删除数据")
    public R<Boolean> delete(@RequestParam("idList") List<Long> idList) {
        return R.ok(commonQuestionService.removeByIds(idList));
    }
}
src/main/java/com/example/jz/controller/MinIOController.java
@@ -1,21 +1,35 @@
package com.example.jz.controller;
import com.example.jz.modle.R;
import com.example.jz.service.MinIOService;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
import javax.annotation.Resource;
import java.io.IOException;
@RestController
@RequestMapping("/minio")
@Api(tags = "MinIO接口")
public class MinIOController {
    @Resource
    private MinIOService minIOService;
    @RequestMapping(method = RequestMethod.GET,value = "/{fileName}")
    public String getUrl(@PathVariable String fileName){
        return "";
    @RequestMapping(method = RequestMethod.GET, value = "/getUrl")
    @ApiOperation("获取文件预览地址")
    public R<String> getUrl(@RequestParam String fileName) {
        return R.ok(minIOService.getPreviewFileUrl(fileName));
    }
    @PostMapping("/upload")
    @ApiOperation("上传文件")
    public R<String> uploadFile(@RequestParam("file") MultipartFile file) throws IOException {
        if (file.isEmpty()) {
            return R.failed("文件为空");
        }
        String fileName = minIOService.upload(file);
        return R.ok(fileName);
    }
}
src/main/java/com/example/jz/controller/PublicityController.java
@@ -1,18 +1,20 @@
package com.example.jz.controller;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.api.ApiController;
import com.baomidou.mybatisplus.extension.api.R;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.example.jz.modle.PageParam;
import com.example.jz.modle.entity.Publicity;
import com.example.jz.modle.R;
import com.example.jz.service.PublicityService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
import java.io.Serializable;
import java.util.List;
import java.util.Date;
/**
 * 公共宣传表(Publicity)表控制层
@@ -22,7 +24,8 @@
 */
@RestController
@RequestMapping("publicity")
public class PublicityController extends ApiController {
@Api(tags = "公共宣传表(Publicity)表接口")
public class PublicityController {
    /**
     * 服务对象
     */
@@ -37,8 +40,9 @@
     * @return 所有数据
     */
    @GetMapping
    public R selectAll(Page<Publicity> page, Publicity publicity) {
        return success(this.publicityService.page(page, new QueryWrapper<>(publicity)));
    @ApiOperation("分页查询所有数据")
    public R<IPage<Publicity>> selectAll(PageParam<Publicity> page, Publicity publicity) {
        return R.ok(publicityService.page(page, new QueryWrapper<>(publicity)));
    }
    /**
@@ -48,8 +52,9 @@
     * @return 单条数据
     */
    @GetMapping("{id}")
    public R selectOne(@PathVariable Serializable id) {
        return success(this.publicityService.getById(id));
    @ApiOperation("通过主键查询单条数据")
    public R<Publicity> selectOne(@PathVariable Serializable id) {
        return R.ok(publicityService.getById(id));
    }
    /**
@@ -59,8 +64,10 @@
     * @return 新增结果
     */
    @PostMapping
    public R insert(@RequestBody Publicity publicity) {
        return success(this.publicityService.save(publicity));
    @ApiOperation("添加公共宣传")
    public R<Boolean> insert(@RequestBody Publicity publicity) {
        publicity.setCtime(new Date());
        return R.ok(publicityService.save(publicity));
    }
    /**
@@ -70,19 +77,45 @@
     * @return 修改结果
     */
    @PutMapping
    public R update(@RequestBody Publicity publicity) {
        return success(this.publicityService.updateById(publicity));
    @ApiOperation("修改公共宣传内容")
    public R<Boolean> update(@RequestBody Publicity publicity) {
        return R.ok(publicityService.updateById(publicity));
    }
    /**
     * 删除数据
     * 下架公共宣传
     *
     * @param idList 主键结合
     * @return 删除结果
     * @param id 主键结合
     * @return 执行结果
     */
    @DeleteMapping
    public R delete(@RequestParam("idList") List<Long> idList) {
        return success(this.publicityService.removeByIds(idList));
    @GetMapping("status/down/{id}")
    @ApiOperation("下架公共宣传")
    public R<Boolean> undercarriage(@PathVariable Serializable id) {
        return R.ok(publicityService.undercarriage(id));
    }
    /**
     * 上架公共宣传
     *
     * @param id 主键结合
     * @return 执行结果
     */
    @GetMapping("status/up/{id}")
    @ApiOperation("上架公共宣传")
    public R<Boolean> grounding(@PathVariable Serializable id) {
        return R.ok(publicityService.grounding(id));
    }
    /**
     * 删除公共宣传
     *
     * @param id 主键结合
     * @return 执行结果
     */
    @DeleteMapping("{id}")
    @ApiOperation("删除公共宣传")
    public R<Boolean> delete(@PathVariable Serializable id) {
        return R.ok(publicityService.removeById(id));
    }
}
src/main/java/com/example/jz/dao/CommonQuestionDao.java
@@ -1,7 +1,12 @@
package com.example.jz.dao;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.example.jz.modle.dto.CommonQuestionDto;
import com.example.jz.modle.entity.CommonQuestion;
import org.apache.ibatis.annotations.Param;
/**
 * 常见问题表(CommonQuestion)表数据库访问层
@@ -11,5 +16,6 @@
 */
public interface CommonQuestionDao extends BaseMapper<CommonQuestion> {
    IPage<CommonQuestionDto> findByPage(Page<CommonQuestionDto> page,@Param("qw") QueryWrapper<Object> objectQueryWrapper);
}
src/main/java/com/example/jz/dao/PublicityDao.java
@@ -1,7 +1,12 @@
package com.example.jz.dao;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.example.jz.modle.PageParam;
import com.example.jz.modle.dto.PublicityDto;
import com.example.jz.modle.entity.Publicity;
import org.apache.ibatis.annotations.Param;
/**
 * 公共宣传表(Publicity)表数据库访问层
@@ -11,5 +16,6 @@
 */
public interface PublicityDao extends BaseMapper<Publicity> {
    IPage<PublicityDto> findByPage(PageParam<PublicityDto> page,@Param("qw") QueryWrapper<PublicityDto> publicityDtoQueryWrapper);
}
src/main/java/com/example/jz/modle/PageParam.java
New file
@@ -0,0 +1,106 @@
package com.example.jz.modle;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import io.swagger.annotations.ApiParam;
import java.util.List;
public class PageParam<T> extends Page<T> {
    /**
     * 查询数据列表
     */
    @ApiParam(hidden = true)
    private List<T> records;
    /**
     * 总数
     */
    @ApiParam(hidden = true)
    private long total = 0;
    /**
     * 每页显示条数,默认 10
     */
    @ApiParam(value = "每页大小,默认10", required = false, defaultValue = "10")
    private long size = 10;
    /**
     * 当前页
     */
    @ApiParam(value = "当前页,默认1",required = false,defaultValue = "1")
    private long current = 1;
    /**
     * 是否进行 count 查询
     */
    @ApiParam(hidden = true)
    private boolean isSearchCount = true;
    @Override
    @ApiParam(hidden = true)
    public List<T> getRecords() {
        return this.records;
    }
    @Override
    public Page<T> setRecords(List<T> records) {
        this.records = records;
        return this;
    }
    @Override
    public long getTotal() {
        return this.total;
    }
    @Override
    public Page<T> setTotal(long total) {
        this.total = total;
        return this;
    }
    @ApiParam(hidden = true)
    public boolean getSearchCount() {
        if (total < 0) {
            return false;
        }
        return isSearchCount;
    }
    @Override
    @ApiParam(hidden = true)
    public boolean isSearchCount() {
        if (total < 0) {
            return false;
        }
        return isSearchCount;
    }
    @Override
    public Page<T> setSearchCount(boolean isSearchCount) {
        this.isSearchCount = isSearchCount;
        return this;
    }
    @Override
    public long getSize() {
        return this.size;
    }
    @Override
    public Page<T> setSize(long size) {
        this.size = size;
        return this;
    }
    @Override
    public long getCurrent() {
        return this.current;
    }
    @Override
    public Page<T> setCurrent(long current) {
        this.current = current;
        return this;
    }
}
src/main/java/com/example/jz/modle/R.java
File was renamed from src/main/java/com/example/jz/modle/entity/R.java
@@ -1,4 +1,4 @@
package com.example.jz.modle.entity;
package com.example.jz.modle;
import com.example.jz.enums.BusinessHttpStatus;
import lombok.*;
@@ -37,7 +37,7 @@
    }
    public static <T> R<T> ok(T data) {
        return restResult(data, BusinessHttpStatus.SUCCESS.value(), null);
        return restResult(data, BusinessHttpStatus.SUCCESS.value(), "执行成功");
    }
    public static <T> R<T> ok(T data, String msg) {
src/main/java/com/example/jz/modle/dto/CommonQuestionDto.java
New file
@@ -0,0 +1,61 @@
package com.example.jz.modle.dto;
import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.extension.activerecord.Model;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;
import lombok.experimental.Accessors;
import java.io.Serializable;
import java.util.Date;
/**
 * 常见问题表(CommonQuestion)表实体类
 *
 * @author makejava
 * @since 2022-07-11 16:35:57
 */
@Data
@NoArgsConstructor
@AllArgsConstructor
@Accessors(chain = true)
@EqualsAndHashCode(callSuper = true)
@TableName("common_question")
public class CommonQuestionDto extends Model<CommonQuestionDto> {
    //常见问题id
    @ApiModelProperty(value = "常见问题id")
    private Integer id;
    //常见问题关键字
    @ApiModelProperty(value = "常见问题关键字")
    private String questionTitle;
    //状态,0为未发布,1为发布,2为下架
    @ApiModelProperty(value = "状态,0为未发布,1为发布,2为下架")
    private Integer status;
    //匹配问题
    @ApiModelProperty(value = "匹配问题")
    private String matchQuestion;
    //问题解答
    @ApiModelProperty(value = "问题解答")
    private String answer;
    //创建人
    @ApiModelProperty(value = "创建人")
    private String creator;
    //创建时间
    private Date ctime;
    //发布时间
    private Date releaseTime;
    /**
     * 获取主键值
     *
     * @return 主键值
     */
    @Override
    protected Serializable pkVal() {
        return this.id;
    }
}
src/main/java/com/example/jz/modle/dto/PublicityDto.java
New file
@@ -0,0 +1,61 @@
package com.example.jz.modle.dto;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.extension.activerecord.Model;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;
import lombok.experimental.Accessors;
import java.io.Serializable;
import java.util.Date;
/**
 * 公共宣传表(Publicity)表实体类
 *
 * @author makejava
 * @since 2022-07-11 16:35:57
 */
@Data
@NoArgsConstructor
@AllArgsConstructor
@Accessors(chain = true)
@EqualsAndHashCode(callSuper = true)
public class PublicityDto extends Model<PublicityDto> {
    //公共宣传id
    @TableId
    @ApiModelProperty(value = "公共宣传id")
    private Integer id;
    //公共宣传标题
    @ApiModelProperty(value = "公共宣传标题")
    private String publicityTitle;
    //状态,0为未发布,1为发布,2为下架
    @ApiModelProperty(value = "状态,0为未发布,1为发布,2为下架")
    private Integer status;
    //内容
    @ApiModelProperty(value = "内容")
    private String text;
    //创建人姓名
    @ApiModelProperty(value = "创建人姓名")
    private String creator;
    //创建时间
    @ApiModelProperty(value = "创建时间")
    private Date ctime;
    //发布时间
    @ApiModelProperty(value = "发布时间")
    private Date releaseTime;
    /**
     * 获取主键值
     *
     * @return 主键值
     */
    @Override
    protected Serializable pkVal() {
        return this.id;
    }
}
src/main/java/com/example/jz/modle/entity/CommonQuestion.java
@@ -1,7 +1,16 @@
package com.example.jz.modle.entity;
import java.util.Date;
import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.extension.activerecord.Model;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;
import lombok.experimental.Accessors;
import java.io.Serializable;
/**
@@ -10,89 +19,35 @@
 * @author makejava
 * @since 2022-07-11 16:35:57
 */
@SuppressWarnings("serial")
@Data
@NoArgsConstructor
@AllArgsConstructor
@Accessors(chain = true)
@EqualsAndHashCode(callSuper = true)
@TableName("common_question")
public class CommonQuestion extends Model<CommonQuestion> {
    //常见问题id
    private Integer questionId;
    @ApiModelProperty(value = "常见问题id")
    private Integer id;
    //常见问题关键字
    @ApiModelProperty(value = "常见问题关键字")
    private String questionTitle;
    //状态,0为未发布,1为发布,2为下架
    @ApiModelProperty(value = "状态,0为未发布,1为发布,2为下架")
    private Integer status;
    //匹配问题
    @ApiModelProperty(value = "匹配问题")
    private String matchQuestion;
    //问题解答
    @ApiModelProperty(value = "问题解答")
    private String answer;
    //创建人
    private String creator;
    @ApiModelProperty(value = "创建人")
    private Integer creator;
    //创建时间
    private Date createTime;
    private Date ctime;
    //发布时间
    private Date releaseTime;
    public Integer getQuestionId() {
        return questionId;
    }
    public void setQuestionId(Integer questionId) {
        this.questionId = questionId;
    }
    public String getQuestionTitle() {
        return questionTitle;
    }
    public void setQuestionTitle(String questionTitle) {
        this.questionTitle = questionTitle;
    }
    public Integer getStatus() {
        return status;
    }
    public void setStatus(Integer status) {
        this.status = status;
    }
    public String getMatchQuestion() {
        return matchQuestion;
    }
    public void setMatchQuestion(String matchQuestion) {
        this.matchQuestion = matchQuestion;
    }
    public String getAnswer() {
        return answer;
    }
    public void setAnswer(String answer) {
        this.answer = answer;
    }
    public String getCreator() {
        return creator;
    }
    public void setCreator(String creator) {
        this.creator = creator;
    }
    public Date getCreateTime() {
        return createTime;
    }
    public void setCreateTime(Date createTime) {
        this.createTime = createTime;
    }
    public Date getReleaseTime() {
        return releaseTime;
    }
    public void setReleaseTime(Date releaseTime) {
        this.releaseTime = releaseTime;
    }
    /**
     * 获取主键值
@@ -101,7 +56,7 @@
     */
    @Override
    protected Serializable pkVal() {
        return this.questionId;
        return this.id;
    }
    }
src/main/java/com/example/jz/modle/entity/Message.java
@@ -1,7 +1,11 @@
package com.example.jz.modle.entity;
import java.util.Date;
import com.baomidou.mybatisplus.extension.activerecord.Model;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.io.Serializable;
/**
@@ -11,58 +15,19 @@
 * @since 2022-07-11 16:35:57
 */
@SuppressWarnings("serial")
@Data
@NoArgsConstructor
public class Message extends Model<Message> {
    //消息id
    private Integer messageId;
    private Integer id;
    //消息内容
    private String text;
    //用户id
    private Integer userId;
    //群id
    private Integer groupId;
    private Date createTime;
    public Integer getMessageId() {
        return messageId;
    }
    public void setMessageId(Integer messageId) {
        this.messageId = messageId;
    }
    public String getText() {
        return text;
    }
    public void setText(String text) {
        this.text = text;
    }
    public Integer getUserId() {
        return userId;
    }
    public void setUserId(Integer userId) {
        this.userId = userId;
    }
    public Integer getGroupId() {
        return groupId;
    }
    public void setGroupId(Integer groupId) {
        this.groupId = groupId;
    }
    public Date getCreateTime() {
        return createTime;
    }
    public void setCreateTime(Date createTime) {
        this.createTime = createTime;
    }
    //创建时间
    private Date cTime;
    /**
     * 获取主键值
@@ -71,7 +36,7 @@
     */
    @Override
    protected Serializable pkVal() {
        return this.messageId;
        return this.id;
    }
    }
src/main/java/com/example/jz/modle/entity/Publicity.java
@@ -1,7 +1,17 @@
package com.example.jz.modle.entity;
import java.util.Date;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.extension.activerecord.Model;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;
import lombok.experimental.Accessors;
import java.io.Serializable;
/**
@@ -10,79 +20,35 @@
 * @author makejava
 * @since 2022-07-11 16:35:57
 */
@SuppressWarnings("serial")
@Data
@NoArgsConstructor
@AllArgsConstructor
@Accessors(chain = true)
@EqualsAndHashCode(callSuper = true)
@TableName("publicity")
public class Publicity extends Model<Publicity> {
    //公共宣传id
    private Integer publicityId;
    @TableId
    @ApiModelProperty(value = "公共宣传id")
    private Integer id;
    //公共宣传标题
    @ApiModelProperty(value = "公共宣传标题")
    private String publicityTitle;
    //状态,0为未发布,1为发布,2为下架
    @ApiModelProperty(value = "状态,0为未发布,1为发布,2为下架")
    private Integer status;
    //内容
    @ApiModelProperty(value = "内容")
    private String text;
    //创建人
    private String creator;
    //创建人id
    @ApiModelProperty(value = "创建人id")
    private Integer creator;
    //创建时间
    private Date createTime;
    @ApiModelProperty(value = "创建时间")
    private Date ctime;
    //发布时间
    @ApiModelProperty(value = "发布时间")
    private Date releaseTime;
    public Integer getPublicityId() {
        return publicityId;
    }
    public void setPublicityId(Integer publicityId) {
        this.publicityId = publicityId;
    }
    public String getPublicityTitle() {
        return publicityTitle;
    }
    public void setPublicityTitle(String publicityTitle) {
        this.publicityTitle = publicityTitle;
    }
    public Integer getStatus() {
        return status;
    }
    public void setStatus(Integer status) {
        this.status = status;
    }
    public String getText() {
        return text;
    }
    public void setText(String text) {
        this.text = text;
    }
    public String getCreator() {
        return creator;
    }
    public void setCreator(String creator) {
        this.creator = creator;
    }
    public Date getCreateTime() {
        return createTime;
    }
    public void setCreateTime(Date createTime) {
        this.createTime = createTime;
    }
    public Date getReleaseTime() {
        return releaseTime;
    }
    public void setReleaseTime(Date releaseTime) {
        this.releaseTime = releaseTime;
    }
    /**
     * 获取主键值
@@ -91,7 +57,7 @@
     */
    @Override
    protected Serializable pkVal() {
        return this.publicityId;
        return this.id;
    }
    }
src/main/java/com/example/jz/service/CommonQuestionService.java
@@ -1,6 +1,10 @@
package com.example.jz.service;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.example.jz.modle.dto.CommonQuestionDto;
import com.example.jz.modle.entity.CommonQuestion;
/**
@@ -11,5 +15,6 @@
 */
public interface CommonQuestionService extends IService<CommonQuestion> {
    IPage<CommonQuestionDto> findByPage(Page<CommonQuestionDto> page, QueryWrapper<Object> objectQueryWrapper);
}
src/main/java/com/example/jz/service/MinIOService.java
@@ -1,5 +1,11 @@
package com.example.jz.service;
import org.springframework.web.multipart.MultipartFile;
public interface MinIOService {
    public String getPreviewFileUrl(String fileName);
    String upload(MultipartFile file);
    Boolean delete(String fileName);
}
src/main/java/com/example/jz/service/PublicityService.java
@@ -1,7 +1,13 @@
package com.example.jz.service;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.IService;
import com.example.jz.modle.PageParam;
import com.example.jz.modle.dto.PublicityDto;
import com.example.jz.modle.entity.Publicity;
import java.io.Serializable;
/**
 * 公共宣传表(Publicity)表服务接口
@@ -11,5 +17,10 @@
 */
public interface PublicityService extends IService<Publicity> {
    Boolean undercarriage(Serializable id);
    Boolean grounding(Serializable id);
    IPage<PublicityDto> findByPage(PageParam<PublicityDto> page, QueryWrapper<PublicityDto> publicityDtoQueryWrapper);
}
src/main/java/com/example/jz/service/impl/CommonQuestionServiceImpl.java
@@ -1,10 +1,16 @@
package com.example.jz.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.example.jz.dao.CommonQuestionDao;
import com.example.jz.modle.dto.CommonQuestionDto;
import com.example.jz.modle.entity.CommonQuestion;
import com.example.jz.service.CommonQuestionService;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
/**
 * 常见问题表(CommonQuestion)表服务实现类
@@ -14,6 +20,12 @@
 */
@Service("commonQuestionService")
public class CommonQuestionServiceImpl extends ServiceImpl<CommonQuestionDao, CommonQuestion> implements CommonQuestionService {
    @Resource
    private CommonQuestionDao commonQuestionDao;
    @Override
    public IPage<CommonQuestionDto> findByPage(Page<CommonQuestionDto> page, QueryWrapper<Object> objectQueryWrapper) {
        return commonQuestionDao.findByPage(page, objectQueryWrapper);
    }
}
src/main/java/com/example/jz/service/impl/MinIOServiceImpl.java
@@ -1,17 +1,24 @@
package com.example.jz.service.impl;
import cn.hutool.core.util.IdUtil;
import com.example.jz.config.MinIOConfig;
import com.example.jz.exception.BusinessException;
import com.example.jz.service.MinIOService;
import io.minio.GetPresignedObjectUrlArgs;
import io.minio.MinioClient;
import io.minio.PutObjectOptions;
import io.minio.UploadObjectArgs;
import io.minio.errors.*;
import io.minio.http.Method;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.web.multipart.MultipartFile;
import java.io.IOException;
import java.security.InvalidKeyException;
import java.security.NoSuchAlgorithmException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.concurrent.TimeUnit;
@Service
@@ -20,34 +27,45 @@
    MinioClient minioClient;
    @Autowired
    MinIOConfig minIOConfig;
    @Override
    public String getPreviewFileUrl(String fileName){
        String res = null;
        try {
            res = minioClient.presignedGetObject(minIOConfig.getBucketName(), fileName);
        } catch (ErrorResponseException e) {
            throw new RuntimeException(e);
        } catch (InsufficientDataException e) {
            throw new RuntimeException(e);
        } catch (InternalException e) {
            throw new RuntimeException(e);
        } catch (InvalidBucketNameException e) {
            throw new RuntimeException(e);
        } catch (InvalidExpiresRangeException e) {
            throw new RuntimeException(e);
        } catch (InvalidKeyException e) {
            throw new RuntimeException(e);
        } catch (InvalidResponseException e) {
            throw new RuntimeException(e);
        } catch (IOException e) {
            throw new RuntimeException(e);
        } catch (NoSuchAlgorithmException e) {
            throw new RuntimeException(e);
        } catch (ServerException e) {
            throw new RuntimeException(e);
        } catch (XmlParserException e) {
            throw new RuntimeException(e);
            res = minioClient.getPresignedObjectUrl(
                    GetPresignedObjectUrlArgs.builder()
                            .method(Method.GET)
                            .bucket(minIOConfig.getBucketName())
                            .object(fileName)
                            .build());
        } catch (Exception e) {
            throw new BusinessException("获取文件预览地址失败");
        }
        return  res;
    }
    @Override
    public String upload(MultipartFile file) {
        String objectName = null;
        try {
            SimpleDateFormat sdf = new SimpleDateFormat("yyyy/MM/dd");
            objectName = sdf.format(new Date()) + "/" + IdUtil.simpleUUID() + "." + file.getContentType().split("/")[1];
            PutObjectOptions putObjectOptions = new PutObjectOptions(file.getInputStream().available(), -1);
            putObjectOptions.setContentType(file.getContentType());
            minioClient.putObject(minIOConfig.getBucketName(), objectName, file.getInputStream(), putObjectOptions);
        } catch (Exception e) {
            throw new BusinessException("上传文件失败");
        }
        return objectName;
    }
    @Override
    public Boolean delete(String fileName) {
        try {
            minioClient.removeObject(minIOConfig.getBucketName(), fileName);
        } catch (Exception e) {
            throw new BusinessException("删除文件失败");
        }
        return true;
    }
}
src/main/java/com/example/jz/service/impl/PublicityServiceImpl.java
@@ -1,10 +1,18 @@
package com.example.jz.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.example.jz.dao.PublicityDao;
import com.example.jz.modle.PageParam;
import com.example.jz.modle.dto.PublicityDto;
import com.example.jz.modle.entity.Publicity;
import com.example.jz.service.PublicityService;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.io.Serializable;
import java.util.Date;
/**
 * 公共宣传表(Publicity)表服务实现类
@@ -15,5 +23,33 @@
@Service("publicityService")
public class PublicityServiceImpl extends ServiceImpl<PublicityDao, Publicity> implements PublicityService {
    @Resource
    private PublicityDao publicityDao;
    @Override
    public Boolean undercarriage(Serializable id) {
        Publicity publicity = publicityDao.selectById(id);
        publicity.setStatus(2);
        if (publicityDao.updateById(publicity) == 1) {
            return true;
        }
        return false;
    }
    @Override
    public Boolean grounding(Serializable id) {
        Publicity publicity = publicityDao.selectById(id);
        publicity.setStatus(1);
        publicity.setReleaseTime(new Date());
        if (publicityDao.updateById(publicity) == 1) {
            return true;
        }
        return false;
    }
    @Override
    public IPage<PublicityDto> findByPage(PageParam<PublicityDto> page, QueryWrapper<PublicityDto> publicityDtoQueryWrapper) {
        return publicityDao.findByPage(page, publicityDtoQueryWrapper);
    }
}
src/main/resources/application.properties
@@ -1,13 +1,11 @@
### web
server.port=8080
###  datasource
#test
spring.datasource.url=jdbc:mysql://42.193.1.25:3306/qyjz?useUnicode=true&characterEncoding=UTF-8&autoReconnect=true&serverTimezone=Asia/Shanghai
spring.datasource.username=root
spring.datasource.password=321$YcYl@1970!
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
### datasource-pool
spring.datasource.type=com.zaxxer.hikari.HikariDataSource
spring.datasource.hikari.minimum-idle=10
@@ -19,11 +17,15 @@
spring.datasource.hikari.connection-timeout=10000
spring.datasource.hikari.connection-test-query=SELECT 1
spring.datasource.hikari.validation-timeout=1000
# ???????????
# ????????
spring.servlet.multipart.max-file-size=50MB
# minio??
minio.address=http://119.28.5.249:9000
minio.accessKey=minioadmin
minio.secretKey=minioadmin
minio.bucketName=img
# mybatis??
mybatis-plus.global-config.banner=false
mybatis-plus.global-config.db-config.id-type=auto
mybatis-plus.global-config.db-config.field-strategy=NOT_NULL
mybatis-plus.configuration.log-impl=org.apache.ibatis.logging.stdout.StdOutImpl
src/main/resources/mapper/CommonQuestionDao.xml
New file
@@ -0,0 +1,38 @@
<?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="com.example.jz.dao.CommonQuestionDao">
    <resultMap type="com.example.jz.modle.entity.CommonQuestion" id="CommonQuestionMap">
        <result property="questionTitle" column="question_title" jdbcType="VARCHAR"/>
        <result property="status" column="status" jdbcType="INTEGER"/>
        <result property="matchQuestion" column="match_question" jdbcType="VARCHAR"/>
        <result property="answer" column="answer" jdbcType="VARCHAR"/>
        <result property="creator" column="creator" jdbcType="INTEGER"/>
        <result property="releaseTime" column="release_time" jdbcType="TIMESTAMP"/>
        <result property="id" column="id" jdbcType="INTEGER"/>
        <result property="ctime" column="ctime" jdbcType="TIMESTAMP"/>
    </resultMap>
    <resultMap type="com.example.jz.modle.dto.CommonQuestionDto" id="CommonQuestionDtoMap">
        <result property="questionTitle" column="question_title" jdbcType="VARCHAR"/>
        <result property="status" column="status" jdbcType="INTEGER"/>
        <result property="matchQuestion" column="match_question" jdbcType="VARCHAR"/>
        <result property="answer" column="answer" jdbcType="VARCHAR"/>
        <result property="creator" column="creator" jdbcType="INTEGER"/>
        <result property="releaseTime" column="release_time" jdbcType="TIMESTAMP"/>
        <result property="id" column="id" jdbcType="INTEGER"/>
        <result property="ctime" column="ctime" jdbcType="TIMESTAMP"/>
    </resultMap>
    <select id="findByPage" resultType="com.example.jz.modle.dto.CommonQuestionDto">
        select c.question_title,c.status,c.match_question,c.answer,u.real_name creator,c.release_time,c.id,c.ctime
        from common_question c
        join user u on c.creator = u.id
        ${qw.customSqlSegment}
    </select>
</mapper>
src/main/resources/mapper/PublicityDao.xml
New file
@@ -0,0 +1,34 @@
<?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="com.example.jz.dao.PublicityDao">
    <resultMap type="com.example.jz.modle.entity.Publicity" id="PublicityMap">
        <result property="publicityTitle" column="publicity_title" jdbcType="VARCHAR"/>
        <result property="status" column="status" jdbcType="INTEGER"/>
        <result property="text" column="text" jdbcType="VARCHAR"/>
        <result property="creator" column="creator" jdbcType="VARCHAR"/>
        <result property="releaseTime" column="release_time" jdbcType="TIMESTAMP"/>
        <result property="id" column="id" jdbcType="INTEGER"/>
        <result property="ctime" column="ctime" jdbcType="TIMESTAMP"/>
    </resultMap>
    <resultMap type="com.example.jz.modle.dto.PublicityDto" id="PublicityDtoMap">
        <result property="publicityTitle" column="publicity_title" jdbcType="VARCHAR"/>
        <result property="status" column="status" jdbcType="INTEGER"/>
        <result property="text" column="text" jdbcType="VARCHAR"/>
        <result property="creator" column="creator" jdbcType="VARCHAR"/>
        <result property="releaseTime" column="release_time" jdbcType="TIMESTAMP"/>
        <result property="id" column="id" jdbcType="INTEGER"/>
        <result property="ctime" column="ctime" jdbcType="TIMESTAMP"/>
    </resultMap>
    <select id="findByPage" resultType="com.example.jz.modle.dto.PublicityDto">
        select p.publicity_title,p.status,p.text,u.real_name creator,p.release_time,p.id,p.ctime
        from publicity p
        join user u on p.creator = u.id
        ${qw.customSqlSegment}
    </select>
</mapper>
src/test/java/com/example/jz/MinIOTest.java
New file
@@ -0,0 +1,18 @@
package com.example.jz;
import com.example.jz.service.MinIOService;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
@SpringBootTest
class MinIOTest {
    @Autowired
    MinIOService minIOService;
    @Test
    void testFileDelete() {
    }
}