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 { /** * 服务对象 @@ -32,13 +35,14 @@ /** * 分页查询所有数据 * * @param page 分页对象 * @param page 分页对象 * @param commonQuestion 查询实体 * @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 { /** * 服务对象 */ @@ -32,13 +35,14 @@ /** * 分页查询所有数据 * * @param page 分页对象 * @param page 分页对象 * @param publicity 查询实体 * @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){ 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; 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() { } }