mcbaiyun 5 месяцев назад
Родитель
Сommit
9f0d6da707

+ 89 - 0
src/main/java/com/smart/reader/controller/BookInfoController.java

@@ -0,0 +1,89 @@
+package com.smart.reader.controller;
+
+import com.smart.reader.common.Page;
+import com.smart.reader.common.R;
+import com.smart.reader.enums.SuccessResultCode;
+import com.smart.reader.exception.CustomException;
+import com.smart.reader.model.bo.BookInfoAddBo;
+import com.smart.reader.model.bo.BookInfoUpdateBo;
+import com.smart.reader.model.vo.BookInfoVo;
+import com.smart.reader.service.BookInfoService;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiImplicitParam;
+import io.swagger.annotations.ApiImplicitParams;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.*;
+
+import javax.annotation.Resource;
+import javax.validation.Valid;
+import javax.validation.constraints.NotNull;
+import java.util.List;
+
+@RequestMapping("/api/v1/bookborrowing/bookInfo")
+@RestController
+@Validated
+@Api(tags = "书籍管理", description = "书籍管理相关接口")
+public class BookInfoController {
+    @Resource
+    private BookInfoService bookInfoService;
+
+    /**
+     * 新增书籍数据
+     *
+     * @param bookInfo 实例对象
+     * @return 实例对象
+     */
+    @ApiOperation("新增书籍数据")
+    @PostMapping("/add")
+    public R add(@RequestBody @Valid BookInfoAddBo bookInfo) throws CustomException {
+        bookInfoService.add(bookInfo);
+        return R.success(SuccessResultCode.SUCCESS.getCode(), SuccessResultCode.SUCCESS.getMsg());
+    }
+
+    @ApiOperation("删除书籍数据")
+    @ApiImplicitParams({
+            @ApiImplicitParam(name = "id", value = "书籍ID", required = true)
+    })
+    @DeleteMapping("/delete/{id}")
+    public R delete(@NotNull(message = "书籍ID不能为空") @PathVariable("id") Long id) throws CustomException {
+        bookInfoService.delete(id);
+        return R.fail(SuccessResultCode.SUCCESS.getCode(), SuccessResultCode.SUCCESS.getMsg());
+    }
+
+    @ApiOperation("批量删除书籍数据")
+    @DeleteMapping("/batchDelete")
+    public R batchDelete(@RequestBody List<Long> ids) throws CustomException {
+        bookInfoService.batchDelete(ids);
+        return R.success(SuccessResultCode.SUCCESS.getCode(), "批量删除成功");
+    }
+
+    @ApiOperation("修改书籍数据")
+    @PutMapping("/edit")
+    public R edit(@RequestBody @Valid BookInfoUpdateBo bookInfo) throws CustomException {
+        System.out.println(bookInfo);
+        bookInfoService.edit(bookInfo);
+        return R.fail(SuccessResultCode.SUCCESS.getCode(), SuccessResultCode.SUCCESS.getMsg());
+    }
+
+    @GetMapping("queryInfo")
+    @ApiOperation("获取书籍列表")
+    @ApiImplicitParams({
+            @ApiImplicitParam(name = "pageNum", value = "当前页", required = true, dataType = "int", defaultValue = "1"),
+            @ApiImplicitParam(name = "pageSize", value = "页大小", required = true, dataType = "int", defaultValue = "10"),
+    })
+    public R<Page<BookInfoVo>> queryInfo(int pageNum, int pageSize) {
+        Page<BookInfoVo> result = bookInfoService.queryInfo(pageNum, pageSize);
+        return R.success(SuccessResultCode.SUCCESS.getCode(), SuccessResultCode.SUCCESS.getMsg(), result);
+    }
+
+    @ApiOperation("根据书籍ID查询书籍详情")
+    @ApiImplicitParams({
+            @ApiImplicitParam(name = "id", value = "书籍ID", required = true)
+    })
+    @GetMapping("/detail/{id}")
+    public R detail(@NotNull(message = "书籍ID不能为空") @PathVariable("id") Long id) {
+        BookInfoVo bookInfoVo = bookInfoService.detail(id);
+        return R.success(SuccessResultCode.SUCCESS.getCode(), SuccessResultCode.SUCCESS.getMsg(), bookInfoVo);
+    }
+}

+ 14 - 0
src/main/java/com/smart/reader/dao/BookInfoMapper.java

@@ -0,0 +1,14 @@
+package com.smart.reader.dao;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.smart.reader.model.po.BookInfo;
+import com.smart.reader.model.vo.BookInfoVo;
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+import java.util.List;
+
+@Mapper
+public interface BookInfoMapper extends BaseMapper<BookInfo> {
+    List<BookInfoVo> queryInfo();
+    BookInfoVo detail(@Param("id") Long id);
+}

+ 43 - 0
src/main/java/com/smart/reader/model/bo/BookInfoAddBo.java

@@ -0,0 +1,43 @@
+package com.smart.reader.model.bo;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import javax.validation.constraints.NotBlank;
+import java.time.LocalDateTime;
+
+@Data
+public class BookInfoAddBo {
+    /** 描述;描述 */
+    @ApiModelProperty(name = "描述", notes = "描述")
+    private String description;
+
+    /** 序列号;序列号 */
+    @ApiModelProperty(name = "序列号", notes = "序列号")
+    private String serialNumber;
+
+    /** 书名;书名 */
+    @ApiModelProperty(name = "书名", notes = "书名")
+    @NotBlank(message = "书名不能为空")
+    private String bookName;
+
+    /** 出版社;出版社 */
+    @ApiModelProperty(name = "出版社", notes = "出版社")
+    private String publisher;
+
+    /** 作者;作者 */
+    @ApiModelProperty(name = "作者", notes = "作者")
+    private String author;
+
+    /** 发行日期;发行日期 */
+    @ApiModelProperty(name = "发行日期", notes = "发行日期")
+    private LocalDateTime releaseDate;
+
+    /** 封面图片;封面图片 */
+    @ApiModelProperty(name = "封面图片", notes = "封面图片")
+    private String coverImages;
+
+    /** 英文名;英文名 */
+    @ApiModelProperty(name = "英文名", notes = "英文名")
+    private String bookEnglishName;
+}

+ 47 - 0
src/main/java/com/smart/reader/model/bo/BookInfoUpdateBo.java

@@ -0,0 +1,47 @@
+package com.smart.reader.model.bo;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import javax.validation.constraints.NotNull;
+import java.time.LocalDateTime;
+
+@Data
+public class BookInfoUpdateBo {
+    /** 书籍ID;书籍ID */
+    @ApiModelProperty(name = "书籍ID", notes = "书籍ID")
+    @NotNull(message = "书籍ID不能为空")
+    private Long id;
+
+    /** 描述;描述 */
+    @ApiModelProperty(name = "描述", notes = "描述")
+    private String description;
+
+    /** 序列号;序列号 */
+    @ApiModelProperty(name = "序列号", notes = "序列号")
+    private String serialNumber;
+
+    /** 书名;书名 */
+    @ApiModelProperty(name = "书名", notes = "书名")
+    private String bookName;
+
+    /** 出版社;出版社 */
+    @ApiModelProperty(name = "出版社", notes = "出版社")
+    private String publisher;
+
+    /** 作者;作者 */
+    @ApiModelProperty(name = "作者", notes = "作者")
+    private String author;
+
+    /** 发行日期;发行日期 */
+    @ApiModelProperty(name = "发行日期", notes = "发行日期")
+    private LocalDateTime releaseDate;
+
+    /** 封面图片;封面图片 */
+    @ApiModelProperty(name = "封面图片", notes = "封面图片")
+    private String coverImages;
+
+    /** 英文名;英文名 */
+    @ApiModelProperty(name = "英文名", notes = "英文名")
+    private String bookEnglishName;
+}

+ 37 - 0
src/main/java/com/smart/reader/model/po/BookInfo.java

@@ -0,0 +1,37 @@
+package com.smart.reader.model.po;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.time.LocalDateTime;
+
+@ApiModel(value = "书籍信息表")
+@TableName("book_info")
+@Data
+public class BookInfo extends BaseEntity {
+    @ApiModelProperty(name = "描述", notes = "描述")
+    private String description;
+
+    @ApiModelProperty(name = "序列号", notes = "序列号")
+    private String serialNumber;
+
+    @ApiModelProperty(name = "书名", notes = "书名")
+    private String bookName;
+
+    @ApiModelProperty(name = "出版社", notes = "出版社")
+    private String publisher;
+
+    @ApiModelProperty(name = "作者", notes = "作者")
+    private String author;
+
+    @ApiModelProperty(name = "发行日期", notes = "发行日期")
+    private LocalDateTime releaseDate;
+
+    @ApiModelProperty(name = "封面图片", notes = "封面图片")
+    private String coverImages;
+
+    @ApiModelProperty(name = "英文名", notes = "英文名")
+    private String bookEnglishName;
+}

+ 38 - 0
src/main/java/com/smart/reader/model/vo/BookInfoVo.java

@@ -0,0 +1,38 @@
+package com.smart.reader.model.vo;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.smart.reader.model.po.BaseEntity;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.time.LocalDateTime;
+
+@ApiModel(value = "书籍信息表")
+@TableName("book_info")
+@Data
+public class BookInfoVo extends BaseEntity {
+    @ApiModelProperty(name = "描述", notes = "描述")
+    private String description;
+
+    @ApiModelProperty(name = "序列号", notes = "序列号")
+    private String serialNumber;
+
+    @ApiModelProperty(name = "书名", notes = "书名")
+    private String bookName;
+
+    @ApiModelProperty(name = "出版社", notes = "出版社")
+    private String publisher;
+
+    @ApiModelProperty(name = "作者", notes = "作者")
+    private String author;
+
+    @ApiModelProperty(name = "发行日期", notes = "发行日期")
+    private LocalDateTime releaseDate;
+
+    @ApiModelProperty(name = "封面图片", notes = "封面图片")
+    private String coverImages;
+
+    @ApiModelProperty(name = "英文名", notes = "英文名")
+    private String bookEnglishName;
+}

+ 65 - 0
src/main/java/com/smart/reader/service/BookInfoService.java

@@ -0,0 +1,65 @@
+package com.smart.reader.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.smart.reader.common.Page;
+import com.smart.reader.exception.CustomException;
+import com.smart.reader.model.bo.BookInfoAddBo;
+import com.smart.reader.model.bo.BookInfoUpdateBo;
+import com.smart.reader.model.po.BookInfo;
+import com.smart.reader.model.vo.BookInfoVo;
+import java.util.List;
+
+public interface BookInfoService extends IService<BookInfo> {
+    /**
+     * 新增书籍信息
+     *
+     * @param bookInfo
+     * @return
+     * @throws CustomException
+     */
+    Boolean add(BookInfoAddBo bookInfo) throws CustomException;
+
+    /**
+     * 查询书籍信息并分页
+     *
+     * @param pageNum
+     * @param pageSize
+     * @return
+     */
+    Page<BookInfoVo> queryInfo(int pageNum, int pageSize);
+
+    /**
+     * 根据ID删除书籍信息
+     *
+     * @param id
+     * @return
+     * @throws CustomException
+     */
+    Boolean delete(Long id) throws CustomException;
+
+    /**
+     * 批量删除书籍信息
+     *
+     * @param ids 书籍ID列表
+     * @return 操作结果
+     * @throws CustomException 删除失败时抛出异常
+     */
+    Boolean batchDelete(List<Long> ids) throws CustomException;
+
+    /**
+     * 修改书籍数据
+     *
+     * @param bookInfo
+     * @return
+     * @throws CustomException
+     */
+    Boolean edit(BookInfoUpdateBo bookInfo) throws CustomException;
+
+    /**
+     * 根据书籍ID查询书籍详情
+     *
+     * @param id
+     * @return
+     */
+    BookInfoVo detail(Long id);
+}

+ 79 - 0
src/main/java/com/smart/reader/service/impl/BookInfoServiceImpl.java

@@ -0,0 +1,79 @@
+package com.smart.reader.service.impl;
+
+import cn.hutool.core.bean.BeanUtil;
+import cn.hutool.core.util.ObjectUtil;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.github.pagehelper.PageHelper;
+import com.smart.reader.common.Page;
+import com.smart.reader.dao.BookInfoMapper;
+import com.smart.reader.exception.CustomException;
+import com.smart.reader.model.bo.BookInfoAddBo;
+import com.smart.reader.model.bo.BookInfoUpdateBo;
+import com.smart.reader.model.po.BookInfo;
+import com.smart.reader.model.vo.BookInfoVo;
+import com.smart.reader.service.BookInfoService;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+import java.util.List;
+
+@Service
+public class BookInfoServiceImpl extends ServiceImpl<BookInfoMapper, BookInfo> implements BookInfoService {
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public Boolean add(BookInfoAddBo bookInfo) throws CustomException {
+        BookInfo info = BeanUtil.copyProperties(bookInfo, BookInfo.class);
+        Boolean save = this.save(info);
+        if (!save){
+            throw new CustomException("书籍数据添加失败");
+        }
+        return Boolean.TRUE;
+    }
+
+    @Override
+    public Page<BookInfoVo> queryInfo(int pageNum, int pageSize) {
+        PageHelper.startPage(pageNum, pageSize);
+        List<BookInfoVo> tableInfoVos = this.baseMapper.queryInfo();
+        return new Page<>(pageNum, pageSize, tableInfoVos);
+    }
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public Boolean delete(Long id) throws CustomException {
+        boolean remove = this.removeById(id);
+        if (!remove){
+            throw new CustomException("书籍数据删除失败");
+        }
+        return Boolean.TRUE;
+    }
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public Boolean edit(BookInfoUpdateBo bookInfo) throws CustomException {
+        BookInfo info = this.getById(bookInfo.getId());
+        if (ObjectUtil.isEmpty(info)) {
+            throw new CustomException("书籍数据不存在");
+        }
+        BeanUtil.copyProperties(bookInfo, info);
+        boolean update = this.updateById(info);
+        if (!update){
+            throw new CustomException("书籍数据修改失败");
+        }
+        return Boolean.TRUE;
+    }
+
+    @Override
+    public BookInfoVo detail(Long id) {
+        return this.baseMapper.detail(id);
+    }
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public Boolean batchDelete(List<Long> ids) throws CustomException {
+        boolean result = this.removeByIds(ids);
+        if (!result) {
+            throw new CustomException("批量删除失败");
+        }
+        return true;
+    }
+}

+ 10 - 0
src/main/resources/mapper/BookInfoMapper.xml

@@ -0,0 +1,10 @@
+<?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.smart.reader.dao.BookInfoMapper">
+    <select id="queryInfo" resultType="com.smart.reader.model.vo.BookInfoVo">
+        select bi.* from `book_info` bi
+    </select>
+    <select id="detail" resultType="com.smart.reader.model.vo.BookInfoVo">
+        select bi.* from `book_info` bi where bi.id=#{id}
+    </select>
+</mapper>